📄 1602c.lst
字号:
C51 COMPILER V7.07 1602C 10/06/2006 22:47:33 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE 1602C
OBJECT MODULE PLACED IN 1602c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602c.c BROWSE INCDIR(C:\Attached Softwares\Keil\C51\INC\Atmel\;C:\ATTACHED
- SOFTWARES\KEIL\C51\INC\) DEBUG OBJECTEXTEND
stmt level source
1 #include "at89x52.h"
2 #include "intrins.h"
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define nop _nop_()
6 #define SCAN_CYCLE 10000
7 #define CYCLE 20
8 sbit RS=P2^7;
9 sbit RW=P2^6;
10 sbit E=P2^5;
11 #define DB0_DB7 P0
12 uchar cycle,TEMP;
13 uchar Dataflag,Cmdflag;
14 uint counti;
15 uint i=0;
16 static const uchar code wenzi[]={0x4f,0x77,0x65,0x6e,0x20,0x53,0x74,0x75,
17 0x64,0x69,0x6f,0x20,0x69,0x73,0x20,0x61,
18 0x69,0x6d,0x69,0x6e,0x67,0x20,0x61,0x74,
19 0x20,0x6f,0x66,0x66,0x65,0x72,0x69,0x6e,
20 0x67,0x20,0x73,0x74,0x61,0x74,0x65,0x2d,
21 0x6f,0x66,0x2d,0x61,0x72,0x74,0x20,0x64,
22 0x65,0x73,0x69,0x67,0x6e,0x20,0x66,0x6f,
23 0x72,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,
24 0x65,0x72,0x73,0x21};
25 void init();
26 void ScreenInitString(void);
27 void Write(uchar tempdata);
28 void WriteDDR(uchar tempdata);
29 void CheckBusy();
30 void Write1(uchar tempdata);
31 void WriteDDR1(uchar tempdata);
32 void CheckBusy1();
33 void Delay(uint N);
34
35 main()
36 {
37 1 T2CON=0x38; /*令定时器2作为串口波特率发生器
38 1 /*|TF2|EXF2|RCLK|TCLK|EXEN2|TR2|C/T2|CP/RL2|*/
39 1 TL2=0xd9; /*设定串口波特率为9600,晶振为12MHz*/
40 1 TH2=0xff;
41 1 RCAP2L=0xd9; /*根据串口波特率9600设定自动重载寄存器*/
42 1 RCAP2H=0xff;
43 1 TR2=1;
44 1
45 1 TMOD=0x11; /*Timer0工作在案MODE1,16位定时器,Timer1工作在MODE2,自动重新装载模式*/
46 1 /*| 定时器1 | 定时器1 |*/
47 1 /*| GATE|C/T| M1 | M0 | GATE|C/T| M1 | M0 |*/
48 1 TH0=(65536-SCAN_CYCLE)/256; /*设定Timer0每隔SCAN_CYCLEu中断一次*/
49 1 TL0=(65536-SCAN_CYCLE)%256; /*启动TEMER0*/
50 1 SCON=0x50; /*设定UART工作在MODE3模式,可传送和接收数据,REN=1*/
51 1 /*| SM0| SM1| SM2| REN| TB8| RB8| TI | RI |*/
52 1 IE=0x92; /*使能总中断、Timer0,1中断、外部中断1,2*/
53 1 /*| EA| - | ET2| ES | ET1| EX1| ET0| EX0|*/
54 1 cycle=50;
C51 COMPILER V7.07 1602C 10/06/2006 22:47:33 PAGE 2
55 1 SP=60;
56 1 P2=0x00;
57 1 init();
58 1 counti=0;
59 1 ScreenInitString();
60 1 while(1)
61 1 nop;
62 1 }
63 void Delay(uint N)
64 {
65 1 for(i=0;i<N;i++)
66 1 i=i;
67 1 }
68 void init()
69 {
70 1 RS=0;
71 1 RW=0;
72 1 E=1;
73 1 Write(0x38);
74 1 Delay(1000);
75 1 Write(0x38);
76 1 Delay(1000);
77 1 Write(0x38);
78 1 Write(0x0F);
79 1 Write(0x06);
80 1 Write(0x01);
81 1 }
82
83 void ScreenInitString(void)
84 {
85 1 Write(0x80);
86 1 WriteDDR(0x3E);
87 1 WriteDDR(0x3E);
88 1 WriteDDR(0x4F);
89 1 WriteDDR(0x77);
90 1 WriteDDR(0x65);
91 1 WriteDDR(0x6E);
92 1 WriteDDR(0x20);
93 1 WriteDDR(0x20);
94 1 WriteDDR(0x53);
95 1 WriteDDR(0x74);
96 1 WriteDDR(0x75);
97 1 WriteDDR(0x64);
98 1 WriteDDR(0x69);
99 1 WriteDDR(0x6F);
100 1 WriteDDR(0x3C);
101 1 WriteDDR(0x3C);
102 1
103 1 Write(0xC0);
104 1 WriteDDR(0x44);
105 1 WriteDDR(0x65);
106 1 WriteDDR(0x73);
107 1 WriteDDR(0x69);
108 1 WriteDDR(0x67);
109 1 WriteDDR(0x6E);
110 1 WriteDDR(0x20);
111 1 WriteDDR(0x66);
112 1 WriteDDR(0x6F);
113 1 WriteDDR(0x72);
114 1 WriteDDR(0x20);
115 1 WriteDDR(0x79);
116 1 WriteDDR(0x6F);
C51 COMPILER V7.07 1602C 10/06/2006 22:47:33 PAGE 3
117 1 WriteDDR(0x75);
118 1 WriteDDR(0x21);
119 1 WriteDDR(0x21);
120 1 }
121 void Write(uchar tempdata)
122 {
123 1 DB0_DB7=tempdata;
124 1 RS=0;
125 1 RW=0;
126 1 E=0;
127 1 nop;
128 1 E=1;
129 1 nop;
130 1 CheckBusy();
131 1 }
132 void WriteDDR(uchar tempdata)
133 {
134 1 DB0_DB7=tempdata;
135 1 RS=1;
136 1 nop;
137 1 RW=0;
138 1 E=0;
139 1 nop;
140 1 E=1;
141 1 nop;
142 1 CheckBusy();
143 1 }
144 void CheckBusy()
145 {
146 1 DB0_DB7=0xff;
147 1 RW=1;
148 1 RS=0;
149 1 E=0;
150 1 nop;
151 1 E=1;
152 1 do
153 1 {
154 2 nop;
155 2 TEMP=DB0_DB7;
156 2 }while((TEMP&0x80)==0x80);
157 1 RW=0;
158 1 }
159 void Write1(uchar tempdata)
160 {
161 1 DB0_DB7=tempdata;
162 1 RS=0;
163 1 RW=0;
164 1 E=0;
165 1 nop;
166 1 E=1;
167 1 nop;
168 1 CheckBusy1();
169 1 }
170 void WriteDDR1(uchar tempdata)
171 {
172 1 DB0_DB7=tempdata;
173 1 RS=1;
174 1 nop;
175 1 RW=0;
176 1 E=0;
177 1 nop;
178 1 E=1;
C51 COMPILER V7.07 1602C 10/06/2006 22:47:33 PAGE 4
179 1 nop;
180 1 CheckBusy1();
181 1 }
182 void CheckBusy1()
183 {
184 1 DB0_DB7=0xff;
185 1 RW=1;
186 1 RS=0;
187 1 E=0;
188 1 nop;
189 1 E=1;
190 1 do
191 1 {
192 2 nop;
193 2 TEMP=DB0_DB7;
194 2 }while((TEMP&0x80)==0x80);
195 1 RW=0;
196 1 }
197
198 void service_int0 () interrupt 1 using 2
199 {
200 1 cycle--;
201 1 if(cycle==0)
202 1 {
203 2 cycle=CYCLE;
204 2 if(counti<=14)
205 2 {
206 3 WriteDDR1(wenzi[counti]);
207 3 counti++;
208 3 }
209 2 else if(counti>14 && counti<sizeof(wenzi))
210 2 {
211 3 Write1(0x07);
212 3 WriteDDR1(wenzi[counti]);
213 3 counti++;
214 3 }
215 2 else
216 2 {
217 3 counti=0;
218 3 Write1(0x01);
219 3 Write1(0x06);
220 3 }
221 2 }
222 1 TH0=(65536-SCAN_CYCLE)/256;
223 1 TL0=(65536-SCAN_CYCLE)%256;
224 1 }
225
226 void service_int1 () interrupt 4 using 1
227 {
228 1 if(TI==1)
229 1 {
230 2 TI=0;
231 2 return;
232 2 }
233 1 else
234 1 {
235 2 uchar v;
236 2 while(RI!=1);
237 2 {
238 3 RI=0;
239 3 v=SBUF;
240 3 if(v==65)//A
C51 COMPILER V7.07 1602C 10/06/2006 22:47:33 PAGE 5
241 3 {
242 4 TR0=1; //Start timer
243 4 Write1(0x01);
244 4 counti=0;
245 4 }
246 3 else if(v==66)//B
247 3 {
248 4 TR0=0; //Stop timer
249 4 }
250 3 else if(v==67)//C
251 3 {
252 4 Write1(0x01); //CLR Screen
253 4 }
254 3 else if(v==68)//D
255 3 {
256 4 Write1(0x18); //Set string left moving
257 4 }
258 3 else if(v==69)//E
259 3 {
260 4 Write1(0x1C); //Set label right moving
261 4 }
262 3 else
263 3 {
264 4 WriteDDR1(v);
265 4 SBUF=v;
266 4 while(TI!=1);
267 4 TI=0;
268 4 }
269 3 }
270 2 }
271 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 643 ----
CONSTANT SIZE = 68 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 1
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 + -