📄 text1.lst
字号:
C51 COMPILER V7.50 TEXT1 12/26/2008 15:15:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg938.h>
2 #include <intrins.h>
3
4 #define uint unsigned int
5 #define uchar unsigned char
6 #define ulong unsigned long
7 #define _Nop() _nop_()
8 //定义变量
9
10 sbit LCDC=P1^0;
11 sbit LCDD=P1^1;
12
13
14 uchar code byte1[20]="2008";
15 uchar code byte2[]="ST";
16 uchar dat11[]="888888888888888";
17 uchar temp=0;
18
19
20 void dally_timer1(uint data ms);
21 void dally_timer2(uint data us);
22 void LCD_WRITE1(uchar data TMP1);
23 void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP);
24 void LCDInit(void);
25 void lcd12232_zfc(uchar row,uchar tier,uchar *puts);
26 void clear_lcd(void);
27 void uart_init(void);
28
29 uchar code AC_TABLE[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
30 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
31 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
32 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f}; //第四行汉字位置
33
34 uchar code lcd_tab[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
35 0x41,0x42,0x43,0x44,0x45,0x46};
36
37
38 void dally_timer1(uint data ms)
39 {
40 1 uint i;
41 1 TR1=1;//启动定时器T1
42 1 for(i=ms*25;i>0;i--)
43 1 {
44 2 while(TF1==0)
45 2 {
46 3 _Nop();
47 3 };
48 2 TF1=0;//清除T1溢出标志TF1
49 2 }
50 1 TR1=0;//关闭定时器T1
51 1 }
52
53 void dally_timer2(uint data us)
54 {
55 1 do
C51 COMPILER V7.50 TEXT1 12/26/2008 15:15:50 PAGE 2
56 1 {
57 2 us--;
58 2 }
59 1 while (us > 0);
60 1 }
61
62
63 void LCD_WRITE1(uchar data TMP1)
64 {
65 1 uchar data m,TMP;
66 1 for(m=8;m>0;m--)
67 1 {
68 2 LCDC=0;
69 2 TMP=(TMP1&(0x01<<(m-1)))>>(m-1);//取数据的第7-0位
70 2 if(TMP==0)
71 2 {
72 3 LCDD=0; //?i??0,lcd???0
73 3 }
74 2 if(TMP==1)
75 2 {
76 3 LCDD=1; //?i??1,lcd???1
77 3 }
78 2 //lcd?????????
79 2 dally_timer2(1);
80 2 LCDC=1;
81 2 }
82 1 }
83
84 void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP)
85 {
86 1 uchar data TMP1;
87 1 TMP1=LCD_COMMAND; //??lcd??
88 1 LCD_WRITE1(TMP1);
89 1 TMP1=LCD_TMP&0xF0; //??lcd??????4?
90 1 LCD_WRITE1(TMP1);
91 1 TMP1=(LCD_TMP&0x0F)<<4; //??lcd??????4?
92 1 LCD_WRITE1(TMP1);
93 1 }
94
95 void LCDInit(void)
96 {
97 1 LCD_WRITE(0xf8,0x01);
98 1 dally_timer1(40);
99 1 LCD_WRITE(0xf8,0x30);
100 1 dally_timer1(40);
101 1 LCD_WRITE(0xf8,0x02);
102 1 dally_timer1(40);
103 1 LCD_WRITE(0xf8,0x04);
104 1 dally_timer1(40);
105 1 LCD_WRITE(0xf8,0x0c);
106 1 dally_timer1(40);
107 1 LCD_WRITE(0xf8,0x01);
108 1 dally_timer1(40);
109 1 LCD_WRITE(0xf8,0x80);
110 1 dally_timer1(40);
111 1 }
112
113 void lcd12232_zfc(uchar row,uchar tier,uchar *puts)
114 {
115 1 uchar data tmp;
116 1 tmp = AC_TABLE[8*row+tier];
117 1 LCD_WRITE(0xf8,tmp);
C51 COMPILER V7.50 TEXT1 12/26/2008 15:15:50 PAGE 3
118 1 while(*puts != '\0') //???????????
119 1 {
120 2 LCD_WRITE(0xfa,*puts); //
121 2 puts++;
122 2 }
123 1 }
124
125
126
127 void clear_lcd(void)
128 {
129 1 LCD_WRITE(0xf8,0x01);
130 1 dally_timer1(40);
131 1 }
132
133 void uart_init(void)
134 {
135 1 SCON=0x50;//模式1,使能串行接受
136 1 SSTAT=0x60;//双缓冲禁止,组合中断使能,采用查询方式发送和接收
137 1 BRGCON=0;
138 1 BRGR0=0xF0;//
139 1 BRGR1=0x02;//
140 1 BRGCON=0x03;//使能波特率发生器
141 1 }
142
143 void uart_send(uchar *dat)
144 {
145 1 uint j=0;
146 1
147 1 while(dat[j] !='\0') // send string
148 1 {
149 2 SBUF=dat[j]; // start sending one byte
150 2 while (!TI); // wait until sent
151 2 TI=0;
152 2 j++;
153 2
154 2 }
155 1
156 1 }
157
158
159
160 void intermit ()interrupt 4
161 {
162 1 if(temp>15)
163 1 {
164 2 temp=0;
165 2 }
166 1 dat11[temp]=SBUF;
167 1 temp++;
168 1 RI=0;
169 1 }
170
171
172 void main()
173 {
174 1 uchar byte[27]="";
175 1 P0M1=0x00;
176 1 P0M2=0x00;
177 1 P1M1=0x00;
178 1 P1M2=0xC0;
179 1 P2M1=0x00;
C51 COMPILER V7.50 TEXT1 12/26/2008 15:15:50 PAGE 4
180 1 P2M2=0x00;
181 1
182 1 P0=0xf8;
183 1 P1=0x3f;
184 1 P2=0xff;
185 1
186 1 SP=0x7F;
187 1
188 1 TMOD=0x20;//T1工作方式2
189 1 TAMOD=0x00;
190 1 TL1=0x6C;//装入T1初值
191 1 TH1=0x6C;
192 1 //uart_init();
193 1 LCDInit();
194 1
195 1 //IEN0=0x90;
196 1 while(1)
197 1 {
198 2
199 2 lcd12232_zfc(0,0,dat11);
200 2 //uart_send(byte);
201 2 dally_timer1(500);
202 2 dally_timer1(500);
203 2 dally_timer1(500);
204 2 dally_timer1(500);
205 2 }
206 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 471 ----
CONSTANT SIZE = 98 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 33
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -