📄 counter.lst
字号:
C51 COMPILER V8.02 COUNTER 08/21/2007 14:59:13 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE COUNTER
OBJECT MODULE PLACED IN counter.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE counter.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X51.H>
2
3 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
4 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
5 unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
6 unsigned char dispbuf[8]={0,16,16,16,16,16,16,16};
7 unsigned char dispbitcount;
8 unsigned char temp;
9 unsigned char i,j;
10 unsigned char key;
11 unsigned char keypos;
12 bit alarmflag;
13
14 void change(unsigned char *p,unsigned char count)
15 {
16 1 while(count>0)
17 1 {
18 2 *(p+count)=*(p+count-1);
19 2 count--;
20 2 }
21 1 }
22
23 void main(void)
24 {
25 1 TMOD=0x01;
26 1 TH0=(65536-500) / 256;
27 1 TL0=(65536-500) % 256;
28 1 TR0=1;
29 1 ET0=1;
30 1 EA=1;
31 1
32 1 while(1)
33 1 {
34 2 P3=0xff;
35 2 P3_4=0;
36 2 temp=P3;
37 2 temp=temp & 0x0f;
38 2 if (temp!=0x0f)
39 2 {
40 3 for(i=50;i>0;i--)
41 3 for(j=200;j>0;j--);
42 3 temp=P3;
43 3 temp=temp & 0x0f;
44 3 if (temp!=0x0f)
45 3 {
46 4 temp=P3;
47 4 temp=temp & 0x0f;
48 4 switch(temp)
49 4 {
50 5 case 0x0e:
51 5 key=3;
52 5 break;
53 5 case 0x0d:
54 5 key=2;
55 5 break;
C51 COMPILER V8.02 COUNTER 08/21/2007 14:59:13 PAGE 2
56 5 case 0x0b:
57 5 key=1;
58 5 break;
59 5 case 0x07:
60 5 key=0;
61 5 break;
62 5 }
63 4 if ((key>=0) && (key<10))
64 4 {
65 5
66 5 if(keypos<8)
67 5 {
68 6 change(dispbuf,keypos);
69 6 dispbuf[0]=key;
70 6 }
71 5 else
72 5 {
73 6 keypos=8;
74 6 alarmflag=1;
75 6 }
76 5 keypos++;
77 5 }
78 4 temp=P3;
79 4 P1_0=~P1_0;
80 4 temp=temp & 0x0f;
81 4 while(temp!=0x0f)
82 4 {
83 5 temp=P3;
84 5 temp=temp & 0x0f;
85 5 }
86 4 alarmflag=0;
87 4 }
88 3 }
89 2
90 2 P3=0xff;
91 2 P3_5=0;
92 2 temp=P3;
93 2 temp=temp & 0x0f;
94 2 if (temp!=0x0f)
95 2 {
96 3 for(i=50;i>0;i--)
97 3 for(j=200;j>0;j--);
98 3 temp=P3;
99 3 temp=temp & 0x0f;
100 3 if (temp!=0x0f)
101 3 {
102 4 temp=P3;
103 4 temp=temp & 0x0f;
104 4 switch(temp)
105 4 {
106 5 case 0x0e:
107 5 key=7;
108 5 break;
109 5 case 0x0d:
110 5 key=6;
111 5 break;
112 5 case 0x0b:
113 5 key=5;
114 5 break;
115 5 case 0x07:
116 5 key=4;
117 5 break;
C51 COMPILER V8.02 COUNTER 08/21/2007 14:59:13 PAGE 3
118 5 }
119 4 if ((key>=0) && (key<10))
120 4 {
121 5
122 5 if(keypos<8)
123 5 {
124 6 change(dispbuf,keypos);
125 6 dispbuf[0]=key;
126 6 }
127 5 else
128 5 {
129 6 keypos=8;
130 6 alarmflag=1;
131 6 }
132 5 keypos++;
133 5 }
134 4 temp=P3;
135 4 P1_0=~P1_0;
136 4 temp=temp & 0x0f;
137 4 while(temp!=0x0f)
138 4 {
139 5 temp=P3;
140 5 temp=temp & 0x0f;
141 5 }
142 4 alarmflag=0;
143 4 }
144 3 }
145 2
146 2 P3=0xff;
147 2 P3_6=0;
148 2 temp=P3;
149 2 temp=temp & 0x0f;
150 2 if (temp!=0x0f)
151 2 {
152 3 for(i=50;i>0;i--)
153 3 for(j=200;j>0;j--);
154 3 temp=P3;
155 3 temp=temp & 0x0f;
156 3 if (temp!=0x0f)
157 3 {
158 4 temp=P3;
159 4 temp=temp & 0x0f;
160 4 switch(temp)
161 4 {
162 5 case 0x0e:
163 5 key=11;
164 5 break;
165 5 case 0x0d:
166 5 key=10;
167 5 break;
168 5 case 0x0b:
169 5 key=9;
170 5 break;
171 5 case 0x07:
172 5 key=8;
173 5 break;
174 5 }
175 4 if ((key>=0) && (key<10))
176 4 {
177 5
178 5 if(keypos<8)
179 5 {
C51 COMPILER V8.02 COUNTER 08/21/2007 14:59:13 PAGE 4
180 6 change(dispbuf,keypos);
181 6 dispbuf[0]=key;
182 6 }
183 5 else
184 5 {
185 6 keypos=8;
186 6 alarmflag=1;
187 6 }
188 5 keypos++;
189 5 }
190 4 temp=P3;
191 4 P1_0=~P1_0;
192 4 temp=temp & 0x0f;
193 4 while(temp!=0x0f)
194 4 {
195 5 temp=P3;
196 5 temp=temp & 0x0f;
197 5 }
198 4 alarmflag=0;
199 4 }
200 3 }
201 2
202 2 P3=0xff;
203 2 P3_7=0;
204 2 temp=P3;
205 2 temp=temp & 0x0f;
206 2 if (temp!=0x0f)
207 2 {
208 3 for(i=50;i>0;i--)
209 3 for(j=200;j>0;j--);
210 3 temp=P3;
211 3 temp=temp & 0x0f;
212 3 if (temp!=0x0f)
213 3 {
214 4 temp=P3;
215 4 temp=temp & 0x0f;
216 4 switch(temp)
217 4 {
218 5 case 0x0e:
219 5 key=15;
220 5 break;
221 5 case 0x0d:
222 5 key=14;
223 5 break;
224 5 case 0x0b:
225 5 key=13;
226 5 break;
227 5 case 0x07:
228 5 key=12;
229 5 break;
230 5 }
231 4 if ((key>=0) && (key<10))
232 4 {
233 5
234 5 if(keypos<8)
235 5 {
236 6 change(dispbuf,keypos);
237 6 dispbuf[0]=key;
238 6 }
239 5 else
240 5 {
241 6 keypos=8;
C51 COMPILER V8.02 COUNTER 08/21/2007 14:59:13 PAGE 5
242 6 alarmflag=1;
243 6 }
244 5 keypos++;
245 5 }
246 4 temp=P3;
247 4 P1_0=~P1_0;
248 4 temp=temp & 0x0f;
249 4 while(temp!=0x0f)
250 4 {
251 5 temp=P3;
252 5 temp=temp & 0x0f;
253 5 }
254 4 alarmflag=0;
255 4 }
256 3 }
257 2
258 2 }
259 1 }
260
261 void t0(void) interrupt 1 using 0
262 {
263 1 TH0=(65536-1000) / 256;
264 1 TL0=(65536-1000) % 256;
265 1 P0=0xff;
266 1 P2=dispcode[dispbuf[dispbitcount]];
267 1 P0=dispbitcode[dispbitcount];
268 1 dispbitcount++;
269 1 if (dispbitcount==8)
270 1 {
271 2 dispbitcount=0;
272 2 }
273 1 if (alarmflag==1)
274 1 {
275 2 P1_0=~P1_0;
276 2 }
277 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 702 ----
CONSTANT SIZE = 25 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -