demo.LST
上传用户:nbddcb
上传日期:2022-05-19
资源大小:48k
文件大小:11k
- C51 COMPILER V7.50 DEMO 04/08/2010 15:43:34 PAGE 1
- C51 COMPILER V7.50, COMPILATION OF MODULE DEMO
- OBJECT MODULE PLACED IN demo.OBJ
- COMPILER INVOKED BY: C:KeilC51BINC51.EXE demo.C BROWSE DEBUG OBJECTEXTEND
- line level source
- 1 #include <REGX51.H>
- 2 #include "demo.h"
- 3
- 4 UCHAR synchronization=SYN_INTERNAL; //demo_choice=0;
- 5 /*********************************************************************************************************
- 6 ** 函数名称: Delay_ms
- 7 ** 功能描述: 延时ms毫秒 (不精确)
- 8 ********************************************************************************************************/
- 9 void Delay_ms (UINT ms)
- 10 {
- 11 1 UINT i,j,k;
- 12 1 for(k=0; k<ms; k++)
- 13 1 for(i=48; i>0; i--)
- 14 1 for(j=10; j>0; j--);
- 15 1 }
- 16
- 17 /*********************************************************************************************************
- 18 ** 函数名称: MB90092_WriteByte
- 19 ** 功能描述: 向MB90092 写一个字节数据
- 20 ********************************************************************************************************/
- 21 void MB90092_WriteByte (UCHAR _data)
- 22 {
- 23 1 UCHAR i;
- 24 1
- 25 1 ACC=_data;
- 26 1 CS=0;
- 27 1 for (i=8;i>0;i--)
- 28 1 {
- 29 2 CLK=0;
- 30 2 SIN = ACC_0;
- 31 2 CLK=1;
- 32 2 ACC>>=1;
- 33 2 }
- 34 1 CS=1;
- 35 1 }
- 36
- 37 /*********************************************************************************************************
- 38 ** 函数名称: MB90092_ClearXY
- 39 ** 功能描述: 清掉屏幕上面坐标(x,y)处的字符,y=0x00~0x0B and x=0x00~0x17 for main screen
- 40 ********************************************************************************************************/
- 41 void MB90092_ClearXY (UCHAR x,UCHAR y)
- 42 {
- 43 1 UCHAR byte1,byte2;
- 44 1
- 45 1 if (x>0x17||y>0x0B)
- 46 1 return; //invalid col number or row number
- 47 1
- 48 1 byte1=((y>>2)&0x3)+0x80;
- 49 1 byte2=((y<<5)&0x60)+x;
- 50 1
- 51 1 MB90092_WriteByte(byte1); //command 0,设置写入地址,行和列
- 52 1 MB90092_WriteByte(byte2);
- 53 1
- 54 1 MB90092_WriteByte(0x88); //command1-1,定义字符颜色,背景颜色
- 55 1 MB90092_WriteByte(0x00);
- C51 COMPILER V7.50 DEMO 04/08/2010 15:43:34 PAGE 2
- 56 1
- 57 1 MB90092_WriteByte(0x90+62/128); //command2-1,写入一个空格字符,地址62为空格符点阵
- 58 1 MB90092_WriteByte(62%128);
- 59 1 }
- 60
- 61 /*********************************************************************************************************
- 62 ** 函数名称: MB90092_ClearRow
- 63 ** 功能描述: 清掉屏幕上面的第y行字符,y=0x00~0x0B for main screen
- 64 ********************************************************************************************************/
- 65 void MB90092_ClearRow (UCHAR y)
- 66 {
- 67 1 UCHAR x;
- 68 1
- 69 1 if (y>0x0B)
- 70 1 return; //invlid row number
- 71 1
- 72 1 for (x=0;x<0x18;x++)
- 73 1 MB90092_ClearXY (x,y);
- 74 1 }
- 75
- 76 /*********************************************************************************************************
- 77 ** 函数名称: MB90092_ClearScreen
- 78 ** 功能描述: 清屏
- 79 ********************************************************************************************************/
- 80 void MB90092_ClearScreen ()
- 81 {
- 82 1 UCHAR i;
- 83 1 for (i=0;i<0x0C;i++)
- 84 1 MB90092_ClearRow (i);
- 85 1 }
- 86
- 87 /*********************************************************************************************************
- 88 ** 函数名称: MB90092_DisColor
- 89 ** 功能描述: MB90092颜色初始化
- 90 ********************************************************************************************************/
- 91 void MB90092_DisColor (UCHAR y)
- 92 {
- 93 1 UCHAR temp1,temp2;
- 94 1
- 95 1 temp1=((y>>2)&0x3)+0x84;
- 96 1 temp2=((y<<5)&0x60)+1;
- 97 1
- 98 1 MB90092_WriteByte(temp1); //command 0,设置写入地址,行和列
- 99 1 MB90092_WriteByte(temp2);
- 100 1
- 101 1 MB90092_WriteByte(0x88); //ff控制是否特显
- 102 1 MB90092_WriteByte(0x00); //command1-1,设置字符颜色,背景颜色
- 103 1
- 104 1 MB90092_WriteByte(0x90); //command2-1,设置字符点阵在外rom的地址
- 105 1 MB90092_WriteByte(0x00);
- 106 1 }
- 107
- 108 /*********************************************************************************************************
- 109 ** 函数名称: MB90092_DisChar
- 110 ** 功能描述: 在屏幕坐标(x,y)处显示一个字符,该字符的点阵存储地址为addr,为一24x32的矩形区域
- 111 ** 参 数: x,y为屏幕坐标,addr为字符点阵在外rom的存储地址,mul为字符尺寸,bc为字符背景颜色,
- 112 cc为字符颜色,ff控制是否特显.
- 113 ********************************************************************************************************/
- 114 void MB90092_DisChar (UCHAR x,UCHAR y,int addr,UCHAR mul,UCHAR bc,UCHAR cc,UCHAR ff)
- 115 {
- 116 1 UCHAR temp1,temp2,color;
- 117 1
- C51 COMPILER V7.50 DEMO 04/08/2010 15:43:34 PAGE 3
- 118 1 if (x>0x17||y>0x0B)
- 119 1 return; //invalid col number or row number
- 120 1
- 121 1 temp1=((y>>2)&0x3)+0x80;
- 122 1 temp2=((y<<5)&0x60)+x;
- 123 1
- 124 1 MB90092_WriteByte(temp1); //command 0,设置写入地址,行和列
- 125 1 MB90092_WriteByte(temp2);
- 126 1
- 127 1 MB90092_WriteByte(0xB0|mul); //command 6,mul->字符尺寸控制(datasheel82),设置一整行
- 128 1 MB90092_WriteByte(0x20|y);
- 129 1
- 130 1 if (synchronization==SYN_EXTERNAL)
- 131 1 {
- 132 2 cc=7;
- 133 2 bc=0;
- 134 2 }
- 135 1 color=((cc<<4)&0x70)|bc;
- 136 1
- 137 1 MB90092_WriteByte(0x88|ff); //ff控制是否特显
- 138 1 MB90092_WriteByte(color); //command1-1,设置字符颜色,背景颜色
- 139 1
- 140 1 MB90092_WriteByte(0x90+addr/128); //command2-1,设置字符点阵在外rom的地址
- 141 1 MB90092_WriteByte(addr%128);
- 142 1 }
- 143
- 144
- 145
- 146 /*********************************************************************************************************
- 147 ** 函数名称: MainScreen_Init
- 148 ** 功能描述: MB90092主屏初始化
- 149 ********************************************************************************************************/
- 150 void MainScreen_Init (UCHAR bc)
- 151 {
- 152 1 UCHAR i;
- 153 1 CS=0;
- 154 1 Delay_ms(10); //程序开始时,要输入CS四次去清除上电复位,然后所作的设置才是有效
- -的。
- 155 1 CS=1;
- 156 1 Delay_ms(10);
- 157 1 CS=0;
- 158 1 Delay_ms(10);
- 159 1 CS=1;
- 160 1 Delay_ms(10);
- 161 1 CS=0;
- 162 1 Delay_ms(10);
- 163 1 CS=1;
- 164 1 Delay_ms(10);
- 165 1 CS=0;
- 166 1 Delay_ms(10);
- 167 1 CS=1;
- 168 1 Delay_ms(10);
- 169 1
- 170 1 MB90092_WriteByte(0xA0); //command 4,首先选择内同步
- 171 1 MB90092_WriteByte(0x00);
- 172 1
- 173 1 MB90092_WriteByte(0xAD); //command 5
- 174 1 MB90092_WriteByte(0x10); //KID=0;APC与颜色有关;GYZ=0;W3--W0为行间距;10101 KID APC GYZ0 BH2
- -BH1 BH0 W3 W2 W1 W0
- 175 1
- 176 1 MB90092_WriteByte(0xBC); //command 7
- 177 1 // MB90092_WriteByte(0x2A); //垂直开始位置设定
- C51 COMPILER V7.50 DEMO 04/08/2010 15:43:34 PAGE 4
- 178 1 MB90092_WriteByte(0x20);
- 179 1
- 180 1 MB90092_WriteByte(0xC0); //command 8
- 181 1 // MB90092_WriteByte(0x18); //水平开始位置设定
- 182 1 MB90092_WriteByte(0x0A);
- 183 1
- 184 1 MB90092_WriteByte(0xC8); //command 9,GRM位设置普通模式或者扩展图形模式
- 185 1 MB90092_WriteByte(0x20);
- 186 1
- 187 1 MB90092_WriteByte(0xD1); //command 10,设置普通模式/扩展图形模式,闪烁,字符背景,字符单色/彩色,
- -背景单色/彩色
- 188 1 MB90092_WriteByte(0x38|bc);
- 189 1
- 190 1
- 191 1 MB90092_WriteByte(0xA2|synchronization);//command 4,内/外同步选择
- 192 1 MB90092_WriteByte(0x2B);
- 193 1
- 194 1 for (i=0;i<0x0B;i++)
- 195 1 MB90092_DisColor (i);
- 196 1
- 197 1 MB90092_ClearScreen ();
- 198 1 }
- 199
- MODULE INFORMATION: STATIC OVERLAYABLE
- CODE SIZE = 415 ----
- CONSTANT SIZE = ---- ----
- XDATA SIZE = ---- ----
- PDATA SIZE = ---- ----
- DATA SIZE = 1 8
- IDATA SIZE = ---- ----
- BIT SIZE = ---- ----
- END OF MODULE INFORMATION.
- C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)