?? text1.lst
字號(hào):
C51 COMPILER V8.05a TEXT1 05/10/2008 22:44:00 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5 sfr ldata=0x90; //P1 = LCD input
6 sbit rs=P2^6;
7 sbit rw=P2^5;
8 sbit en=P2^4;
9 sbit busy=P1^7;
10 void lcdready();
11 void lcddata(uchar value);
12 void lcdcmd(uchar value);
13 void Delay(uint value);
14 uchar code keypad[10]={'0','1','2','3','4','5','6','7','8','9'};
15 uchar Speed=25,MinSpd=25,MaxSpd=100,i=0;
16 uchar g=0,s=0,b=0,K;
17 uint code LData[4]={0,236,86,73};
18 uint code HData[4]={76,82,89,95};
19 uchar code Forward[4]={0xef,0xdf,0xbf,0x7f};
20 //uchar code Back[4]={0xef,0x7f,0xbf,0xdf};
21
22 //sbit K1 = P0^0; //加速
23 //sbit K2 = P0^1; //減速
24 //sbit K3 = P0^2; //停止
25 //sbit K4 = P0^3; //啟動(dòng)
26 sbit K1 = P2^0;
27 sbit K2 = P2^1;
28 sbit K3 = P2^2;
29 sbit K4 = P2^3;
30
31 void Key( void);
32 void lcddata(unsigned char value);
33 void lcdcmd(unsigned char value);
34 void lcdready();
35 void SpdLcd(uchar value);
36 void CounterLcd(void);
37 void Delay(unsigned int value);
38
39 void time0(void) interrupt 1
40 {
41 1 //if(P0==0xef)
42 1 //return;
43 1 if(P0==0xee)
44 1 {
45 2 K=1;
46 2 TR1=0;
47 2 }
48 1 else if(P0==0xed)
49 1 {
50 2 K=2;
51 2 TR1=0;
52 2 }
53 1 else if(P0==0xeb)
54 1 {
55 2 K=3;
C51 COMPILER V8.05a TEXT1 05/10/2008 22:44:00 PAGE 2
56 2 TR1=0;
57 2 }
58 1 else if(P0==0xe7)
59 1 {
60 2 K=4;
61 2 TR1=0;
62 2 }
63 1
64 1 }
65 void time1(void) interrupt 3
66 {
67 1 K1=1;
68 1 K2=1;
69 1 K2=1;
70 1 K2=1;
71 1 P2=(P2&Forward[i++]);
72 1 if(i==4)
73 1 i=0;
74 1 TH1=HData[Speed-25];
75 1 TL1=LData[Speed-25];
76 1 TR1=1;
77 1 CounterLcd();
78 1
79 1 /* P3=Forward[i++];
80 1 if(i==4)
81 1 i=0;
82 1 TH1=HData[Speed-25];
83 1 TL1=LData[Speed-25];
84 1 TR1=1;
85 1 CounterLcd(); */
86 1 }
87
88 void main()
89 {
90 1 //P3=0xff;
91 1 TMOD=0x11;
92 1 IE=0x8A;
93 1 //TR0=1;
94 1
95 1 //IE=0x8A;
96 1 while(1)
97 1 {
98 2 ///P0=oxef;
99 2 Key(); //read keyboard
100 2 if(K==1)
101 2 {
102 3 //TR0=0;
103 3 Speed++;
104 3 if(Speed>MaxSpd)
105 3 {
106 4 Speed=100;
107 4 }
108 3 }
109 2 else if(K==2)
110 2 {
111 3 //TR0=0;
112 3 Speed--;
113 3 if(Speed<MinSpd)
114 3 {
115 4 Speed=25;
116 4 }
117 3 }
C51 COMPILER V8.05a TEXT1 05/10/2008 22:44:00 PAGE 3
118 2 else if(K==3)
119 2 {
120 3 //TR0=0;
121 3 EA=0;
122 3 Speed=25;
123 3 //break;
124 3 }
125 2 else if(K==4)
126 2 {
127 3 Speed=MinSpd;
128 3 }
129 2 g=0;
130 2 s=0;
131 2 b=0;
132 2 SpdLcd(Speed);
133 2 TH1=HData[Speed-25];
134 2 TL1=LData[Speed-25];
135 2 TH0=-255;
136 2 //TR0=1;
137 2 TR1=1;
138 2 //IE=0x8A;
139 2 }
140 1 }
141
142 void Key( void)
143 {
144 1 //uchar temp;
145 1 P0=0xEF;
146 1 do
147 1 {
148 2 if(P0!=0xEF)
149 2 {
150 3 TH0=255;
151 3 TL0=0;
152 3 TR0=1;
153 3 }
154 2 }while(P0==0xef);
155 1
156 1
157 1
158 1 /*do
159 1 {
160 1 do
161 1 {
162 1 Delay(2);
163 1 temp=P0;
164 1 }while(temp ==0xEF);
165 1
166 1 Delay(2);
167 1 temp=P0;
168 1 }while(temp==0xEF);
169 1
170 1 TR0=0;
171 1 if(P0==0xEE)
172 1 K1=1;
173 1 else if(P0==0xDE)
174 1 K2=1;
175 1 else if(P0==0xBE)
176 1 K3=1;
177 1 else
178 1 K4=1; */
179 1 }
C51 COMPILER V8.05a TEXT1 05/10/2008 22:44:00 PAGE 4
180
181 void lcddata(unsigned char value)
182 {
183 1 lcdready();
184 1 ldata=value;
185 1 rs=1;
186 1 rw=0;
187 1 en=1;
188 1 Delay(1);
189 1 en=0;
190 1 return;
191 1 }
192
193 void lcdcmd(unsigned char value)
194 {
195 1 lcdready();
196 1 ldata=value;
197 1 rs=0;
198 1 rw=0;
199 1 en=1;
200 1 Delay(1);
201 1 en=0;
202 1 return;
203 1 }
204
205 void lcdready()
206 {
207 1 busy=1;
208 1 rs=0;
209 1 rw=1;
210 1 while(busy==1)
211 1 {
212 2 en=0;
213 2 Delay(1);
214 2 en=1;
215 2 }
216 1 return;
217 1 }
218
219 void SpdLcd(uchar value) //LCD 速度顯示
220 {
221 1 uchar ge,shi,bai,temp;
222 1 ge=value%10;
223 1 temp=value/10;
224 1 shi=temp%10;
225 1 bai=temp/10;
226 1
227 1 lcdcmd(0x01);
228 1 lcdcmd(0x80);
229 1 lcddata(keypad[bai]);
230 1 //lcdcmd(0x14);
231 1 lcddata(keypad[shi]);
232 1 //lcdcmd(0x14);
233 1 lcddata(keypad[ge]);
234 1
235 1 }
236
237 void CounterLcd(void) //LCD記數(shù)顯示
238 {
239 1 g++;
240 1 if(g==10)
241 1 {
C51 COMPILER V8.05a TEXT1 05/10/2008 22:44:00 PAGE 5
242 2 s++;
243 2 g=0;
244 2 if(s==10)
245 2 {
246 3 b++;
247 3 s=0;
248 3 }
249 2 }
250 1 //lcdcmd(0x01);
251 1 lcdcmd(0xC0);
252 1 lcddata(keypad[b]);
253 1 lcddata(keypad[s]);
254 1 lcddata(keypad[g]);
255 1
256 1 }
257
258 void Delay(unsigned int value)
259 {
260 1 uint x,y;
261 1 for(x=0; x < value; x++)
262 1 for(y=0; y<1275;y++);
263 1 }
264
265
266
267
268
269
270
271
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 524 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -