?? test_int0.lst
字號:
C51 COMPILER V8.01 TEST_INT0 04/20/2009 19:41:22 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE TEST_INT0
OBJECT MODULE PLACED IN Test_int0.OBJ
COMPILER INVOKED BY: F:\PROGRAM\C51\BIN\C51.EXE Test_int0.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include <absacc.h>
3 #define DPTR XBYTE[0X6000]
4
5 unsigned char DISPBUF1,DISPBUF2,DISPBUF3,DISPBUF4,TIME1S_count,countn0,TIME0_5S_count;
6 unsigned char bufth0,buftl0,bufn0,n0,BUFTH1,BUFTL1,BUFn1,n1;
7 unsigned char keynum;
8 bit flag_KHz,flag1s,flag_countT0,flag_over0,flag_over1,flag0_5s,flag_open0;
9
10 void mDelay(unsigned int Delay);
11 void display(void);
12 unsigned char keyscan(void);
13 void readkey(unsigned char date);
14
15 sbit P3_2=P3^2;
16 sbit P3_3=P3^3;
17 sbit P3_0=P3^0;
18 sbit P3_1=P3^1;
19 sbit P3_7=P3^7;
20
21 ////////////////////////////
22 void int00() interrupt 0 using 0
23 {
24 1 // P3_7=~P3_7;
25 1 TR1=1;
26 1 bufth0=TH0;buftl0=TL0;bufn0=n0;
27 1 TH0=0;TL0=0;n0=0;
28 1 flag_over0=1;
29 1 }
30
31 void int11() interrupt 2 using 2
32 { TR1=0;
33 1 BUFTH1=TH1;BUFTL1=TL1;BUFn1=n1;
34 1 TH1=0;TL1=0;n1=0;
35 1 flag_over1=1;
36 1 }
37
38 void time0() interrupt 1 using 1
39 {n0++;countn0++;}
40
41 void time1() interrupt 3 using 3
42 {n1++;}
43
44 void time2() interrupt 5 using 3
45 {
46 1 TF2=0;
47 1 if(flag_countT0)
48 1 { TIME1S_count++;
49 2 if(TIME1S_count==170)
50 2 {TR0=0;TIME1S_count=0;flag1s=1;}
51 2 display();
52 2 }
53 1 else
54 1 { TIME0_5S_count++;
55 2 if(TIME0_5S_count==80)
C51 COMPILER V8.01 TEST_INT0 04/20/2009 19:41:22 PAGE 2
56 2 {TIME0_5S_count=0;flag0_5s=1;}
57 2 }
58 1 }
59
60 main()
61 { unsigned long TMPA,P0,P1=0;
62 1 float f,p;
63 1
64 1 TMOD=0X19;//T0設置為門控定時方式1,T1為定時方式1
65 1 ET0=1;
66 1 EX0=1;
67 1 IT0=1;
68 1 TR0=1;
69 1 TH0=0;
70 1 TL0=0;
71 1
72 1 RCAP2H=0xe8;
73 1 RCAP2L=0xef;//T2的定時初值,用于數碼管掃描與1s時間的產生
74 1 ET2=1;
75 1 TR2=1;
76 1
77 1 ET1=1;
78 1 EX1=1;
79 1 IT1=1;
80 1 TH1=0;
81 1 TL1=0;
82 1
83 1 EA=1;
84 1
85 1 flag_KHz=0;
86 1 P3_3=1;
87 1 P3_2=1;
88 1 keynum=1;
89 1 while(1)
90 1 {
91 2 while((keynum==1)&&flag_KHz)
92 2 { readkey(keyscan());
93 3 flag_countT0=1;
94 3 if(flag1s==1)
95 3 {
96 4 flag1s=0;
97 4 f=TH0*256+TL0+65536*countn0;
98 4 if(f>=100000)
99 4 {f=f/1000;flag_KHz=1;}
100 4 else if(f>=10000)
101 4 {f=f/100;flag_KHz=1;}
102 4 else if(f>=1000)
103 4 {f=f/10;flag_KHz=1;}
104 4 else {flag_KHz=0;}
105 4
106 4 TMPA=(unsigned long)(f*10);
107 4 DISPBUF1=TMPA/1000;
108 4 DISPBUF2=TMPA%1000/100;
109 4 DISPBUF3=TMPA%100/10;
110 4 DISPBUF4=TMPA%10;
111 4
112 4 TIME1S_count=0;
113 4 countn0=0;
114 4 TH0=0;
115 4 TL0=0;
116 4 TR0=1;
117 4 display();
C51 COMPILER V8.01 TEST_INT0 04/20/2009 19:41:22 PAGE 3
118 4 }
119 3 if(!flag_KHz|(keynum>1))
120 3 {EX0=1;TMOD=0X09;}
121 3 }
122 2 while(!flag_KHz)
123 2 { readkey(keyscan());
124 3 flag_countT0=0;
125 3 if(flag0_5s==1)
126 3 {
127 4 /*if(!flag_open0)
128 4 {EX0=1;flag_over0=0;EX1=1;flag_over1=0;flag_open0=1;}
129 4 if(flag_over1)
130 4 {EX0=0;EX1=0;flag_open0=0;} */
131 4 /* if(flag_open0&flag_over1)
132 4 {EX0=0;EX1=0;flag_open0=0;}
133 4 else
134 4 {EX0=1;EX1=1;flag_open0=1;} */
135 4 if(flag_over0)
136 4 { P0=bufth0*256+buftl0+65536*bufn0+5;
137 5 if(keynum==1)
138 5 { display();
139 6 f=5000000./P0;
140 6 if(f<10000)
141 6 {flag_KHz=0;}
142 6 else if(f<15000)
143 6 {f=f/10;flag_KHz=0;}
144 6 else if(f<100000)
145 6 {f=f/10;flag_KHz=1;}
146 6 else if(f<1000000)
147 6 {f=f/100;flag_KHz=1;}
148 6 else
149 6 {f=f/1000;flag_KHz=1;}
150 6 TMPA=(unsigned long)f;
151 6 DISPBUF1=TMPA/1000;
152 6 DISPBUF2=TMPA%1000/100;
153 6 DISPBUF3=TMPA%100/10;
154 6 DISPBUF4=TMPA%10;
155 6 }
156 5 flag_over0=0;
157 5
158 5 }
159 4 else
160 4 {TH0=0;TL0=0;n0=0;TR0=1;EX0=1;}
161 4 if(keynum>1)
162 4 if(flag_over1)
163 4 {
164 5 flag_over1=0;
165 5 P1=BUFTH1*256+BUFTL1+BUFn1*65536;
166 5 p=P1*1800/P0;
167 5
168 5 TMPA=(unsigned long)p;
169 5 DISPBUF1=TMPA/1000;
170 5 DISPBUF2=TMPA%1000/100;
171 5 DISPBUF3=TMPA%100/10;
172 5 DISPBUF4=TMPA%10;
173 5 }
174 4 TIME0_5S_count=0;
175 4 flag0_5s=0;
176 4 }
177 3 display();
178 3 if(keynum==1)
179 3 if(flag_KHz)
C51 COMPILER V8.01 TEST_INT0 04/20/2009 19:41:22 PAGE 4
180 3 {flag1s=0;EX0=0;TMOD=0X15;}
181 3 }
182 2 }
183 1 }
184 //////////////////////////////////////
185 void mDelay(unsigned int Delay)
186 { unsigned int i;
187 1 for(;Delay>0;Delay--)
188 1 { for(i=0;i<124;i++)
189 2 {;}
190 2 }
191 1 }
192 /////////////////////////////////////
193 void display(void)
194 {
195 1 DPTR=(DISPBUF1|0X70);
196 1 mDelay(1);
197 1 DPTR=(DISPBUF2|0Xb0);
198 1 mDelay(1);
199 1 DPTR=(DISPBUF3|0Xd0);
200 1 mDelay(1);
201 1 DPTR=(DISPBUF4|0Xe0);
202 1 mDelay(1);
203 1 DPTR=0Xf0;
204 1 mDelay(1);
205 1 }
206 unsigned char keyscan(void)
207 { unsigned char test,tmp;
208 1 P1=0xf0;
209 1 if((P1&0xf0)!=0xf0)
210 1 { mDelay(1);
211 2 if((P1&0xf0)!=0xf0)
212 2 { test=0xfe;
213 3 while((test&0x10)!=0)
214 3 { P1=test;
215 4 if((P1&0xf0)!=0xf0)
216 4 { tmp=(P1&0xf0)|0x0f;
217 5 return(~(test)+~(tmp));
218 5 }
219 4 else test=(test<<1)|0x01;
220 4 }
221 3 }
222 2 }
223 1 return(0);
224 1 }
225 void readkey(unsigned char date)
226 { switch(date)
227 1 { case 0X11: keynum=1;break;
228 2 case 0X21: keynum=2;break;
229 2 case 0X41: keynum=3;break;
230 2 case 0X81: keynum=4;break;
231 2 case 0X12: keynum=5;break;
232 2 case 0X22: keynum=6;break;
233 2 case 0X42: keynum=7;break;
234 2 case 0x82: keynum=8;break;
235 2 case 0x14: keynum=9;break;
236 2 case 0x24: keynum=10;break;
237 2 case 0x44: keynum=11;break;
238 2 case 0x84: keynum=12;break;
239 2 case 0x18: keynum=13;break;
240 2 case 0x28: keynum=14;break;
241 2 case 0x48: keynum=15;break;
C51 COMPILER V8.01 TEST_INT0 04/20/2009 19:41:22 PAGE 5
242 2 case 0x88: keynum=16;break;
243 2 // case 0x00: keynum=0;break;
244 2 }
245 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1544 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 16
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -