?? 51測(cè)頻測(cè)相c.lst
字號(hào):
C51 COMPILER V8.08 51瞋頻瞋相C 03/20/2009 21:54:12 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 51瞋頻瞋相C
OBJECT MODULE PLACED IN 51測(cè)頻測(cè)相C.OBJ
COMPILER INVOKED BY: D:\program files\Keil 3.2\C51\BIN\C51.EXE 51測(cè)頻測(cè)相C.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include <absacc.h>
3 #include <INTRINS.H>
4
5 #define DPTR XBYTE[0X6000]
6 unsigned char DISPBUF1,DISPBUF2,DISPBUF3,DISPBUF4,keynum,BUFTH0,BUFTL0=100,BUFTH1,BUFTL1=100;
7 unsigned int TIME1S_count;
8
9 unsigned long TMPA;
10
11 void mDelay(unsigned int Delay);
12 void display(void);
13 unsigned char keyscan(void);
14 void readkey(unsigned char date);
15 void BCD_CHANGE(void);
16 void display1(void);
17
18 #include<stdio.h>
19
20 sbit P3_2=P3^2;
21 sbit P3_3=P3^3;
22 sbit P3_0=P3^0;
23 sbit P3_1=P3^1;
24 sbit P3_7=P3^7;
25 bit flag1s,flag_countT0;
26 bit flag_KHz,flag_cexiang,flag_cezhou,flag_openT0,flag_openT1,flag_display1;
27 unsigned long int period0,period1;
28 unsigned char n0=0,n1=0,countn0;
29
30 void int0() interrupt 0 using 0
31 {if(!flag_cezhou)//如果flag_cezhou標(biāo)志被清零了,代表數(shù)據(jù)已被取走,要重新開TR0
32 1 {if(!flag_openT0)
33 2 {TH0=0;TL0=0;n0=0;TR0=1;flag_openT0=1;P3_7=~P3_7;}//如果第一次中斷則開TR0
34 2 else//如果第二次中斷
35 2 {flag_openT0=0;
36 3 TR0=0;//則關(guān)TR0,
37 3 BUFTH0=TH0;BUFTL0=TL0;//并存儲(chǔ)TH0,TL0,
38 3 if(!flag_cexiang)
39 3 {TH1=0;TL1=0;n1=0;TR1=1;EX1=1;flag_openT1=1;}//并同時(shí)開TR1,
40 3 flag_cezhou=1; //最后設(shè)立flag_cezhou標(biāo)志
41 3 }
42 2 }
43 1 }
44 void time0() interrupt 1 using 1
45 {n0++;countn0++;}
46
47 void int1() interrupt 2 using 2
48 {if(flag_openT1)//如果已經(jīng)開了TR1
49 1 {TR1=0;BUFTH1=TH1;BUFTL1=TL1;flag_cexiang=1;
50 2 flag_openT1=0;
51 2 }
52 1 }
53 void time1() interrupt 3 using 3
54 {n1++;}
55 void time2() interrupt 5 using 3
C51 COMPILER V8.08 51瞋頻瞋相C 03/20/2009 21:54:12 PAGE 2
56 {
57 1 TF2=0;
58 1 if(flag_countT0)
59 1 { TIME1S_count++;
60 2 if(TIME1S_count==170)
61 2 {TR0=0;TIME1S_count=0;P3_1=~P3_1;flag1s=1;}
62 2 }
63 1 display();
64 1 }
65
66 main()
67 {
68 1 float f=0,p=0;
69 1 // unsigned char tmp0=0;
70 1 TMOD=0X11;
71 1 TH0=0;
72 1 TL0=0;
73 1 TH1=0;
74 1 TL1=0;
75 1
76 1 RCAP2H=0xe8;
77 1 RCAP2L=0xef;//T2的定時(shí)初值,用于數(shù)碼管掃描與1s時(shí)間的產(chǎn)生
78 1
79 1 EA=1;
80 1 ET0=1;
81 1 ET1=1;
82 1 ET2=1;
83 1 TR2=1;
84 1
85 1 IT1=1;
86 1 IT0=1;
87 1 EX0=1;
88 1 EX1=1;
89 1
90 1 P3_3=1;
91 1 P3_2=1;
92 1 keynum=1;
93 1 //flag_KHz=1;
94 1 while(1)
95 1 {
96 2 while(keynum==1)//((keynum==1)&&flag_KHz)
97 2 { EX0=0;
98 3 EX1=0;
99 3 TMOD=0X15;
100 3 flag_countT0=1;
101 3 readkey(keyscan());
102 3 if(flag1s==1)
103 3 {
104 4 flag1s=0;
105 4 f=TH0*256+TL0+65536*countn0;
106 4 if(f>100000)
107 4 {f=f/1000;flag_KHz=1;}
108 4 else if(f>10000)
109 4 {f=f/100;flag_KHz=1;}
110 4 else if(f>1000)
111 4 {f=f/10;flag_KHz=1;}
112 4 else {P3_0=1;flag_KHz=0;}
113 4 TMPA=(int)(f*10);
114 4 BCD_CHANGE();
115 4
116 4 TIME1S_count=0;
117 4 countn0=0;
C51 COMPILER V8.08 51瞋頻瞋相C 03/20/2009 21:54:12 PAGE 3
118 4 n0=0;
119 4 TH0=0;
120 4 TL0=0;
121 4 TR0=1;
122 4 display();
123 4 }
124 3 }
125 2 while((keynum==2)|(keynum==3))
126 2 { EX0=1;
127 3 EX1=1;
128 3 readkey(keyscan());
129 3 flag_countT0=0;
130 3 TMOD=0X11;
131 3
132 3 if(flag_cezhou)
133 3 {period0=(BUFTH0<<8)+BUFTL0+65536*n0;//計(jì)算半周期
134 4 //tmp0++;
135 4 // if(tmp0==5)
136 4 //{
137 4 flag_cezhou=0;
138 4 //tmp0=0;BUFTH0=0;BUFTL0=0;n0=0;
139 4 // }
140 4 } //并清標(biāo)志
141 3 if(flag_cexiang)
142 3 {period1=(BUFTH1<<8)+BUFTL1+65536*n1;
143 4 flag_cexiang=0;}
144 3
145 3 if(keynum==2)
146 3 { //TMPA=0;
147 4 // period0=500;
148 4 //if(period0!=0)
149 4 f=(10000000./(period0));//計(jì)算頻率與實(shí)際仿真測(cè)試做的校準(zhǔn)修正
150 4 if(f<10000)
151 4 {flag_KHz=0;}
152 4 else if(f<15000)
153 4 {f=f/10;flag_KHz=0;}
154 4 else if(f<100000)
155 4 {f=f/10;flag_KHz=1;}
156 4 else if(f<1000000)
157 4 {f=f/100;flag_KHz=1;}
158 4 else
159 4 {f=f/1000;flag_KHz=1;}
160 4
161 4 TMPA=(unsigned long)f;
162 4 BCD_CHANGE();
163 4 display();
164 4 }
165 3 /* else if(keynum==3)
166 3 { if(period0!=0)
167 3 {
168 3 p=period1*1800./period0;
169 3 //p=2663;
170 3 // TMPA=(unsigned long)p;
171 3 // BCD_CHANGE();
172 3 display();
173 3 }
174 3 }
175 3 display();*/
176 3 }
177 2 }
178 1 }
179 void mDelay(unsigned int Delay)
C51 COMPILER V8.08 51瞋頻瞋相C 03/20/2009 21:54:12 PAGE 4
180 { unsigned int i;
181 1 for(;Delay>0;Delay--)
182 1 { for(i=0;i<124;i++)
183 2 {;}
184 2 }
185 1 }
186 void BCD_CHANGE(void)
187 {
188 1 DISPBUF1=TMPA/1000;
189 1 DISPBUF2=TMPA%1000/100;
190 1 DISPBUF3=TMPA%100/10;
191 1 DISPBUF4=TMPA%10;
192 1 }
193 ///////////////////////////////////
194 //數(shù)碼管顯示程序
195 void display(void)
196 {
197 1 DPTR=(DISPBUF1|0X70);
198 1 mDelay(1);
199 1 DPTR=(DISPBUF2|0Xb0);
200 1 mDelay(1);
201 1 DPTR=(DISPBUF3|0Xd0);
202 1 mDelay(1);
203 1 DPTR=(DISPBUF4|0Xe0);
204 1 mDelay(1);
205 1 DPTR=0Xf0;
206 1 mDelay(1);
207 1 }
208 void display1(void)
209 {
210 1 DPTR=(DISPBUF1|0X70);
211 1 DPTR=(DISPBUF2|0Xb0);
212 1 DPTR=(DISPBUF3|0Xd0);
213 1 DPTR=(DISPBUF4|0Xe0);
214 1 DPTR=0Xf0;
215 1 }
216 unsigned char keyscan(void)
217 { unsigned char test,tmp;
218 1 P1=0xf0;
219 1 if((P1&0xf0)!=0xf0)
220 1 { mDelay(1);
221 2 if((P1&0xf0)!=0xf0)
222 2 { test=0xfe;
223 3 while((test&0x10)!=0)
224 3 { P1=test;
225 4 if((P1&0xf0)!=0xf0)
226 4 { tmp=(P1&0xf0)|0x0f;
227 5 return(~(test)+~(tmp));
228 5 }
229 4 else test=(test<<1)|0x01;
230 4 }
231 3 }
232 2 }
233 1 return(0);
234 1 }
235 void readkey(unsigned char date)
236 { switch(date)
237 1 { case 0X11: keynum=1;break;
238 2 case 0X21: keynum=2;break;
239 2 case 0X41: keynum=3;break;
240 2 case 0X81: keynum=4;break;
241 2 case 0X12: keynum=5;break;
C51 COMPILER V8.08 51瞋頻瞋相C 03/20/2009 21:54:12 PAGE 5
242 2 case 0X22: keynum=6;break;
243 2 case 0X42: keynum=7;break;
244 2 case 0x82: keynum=8;break;
245 2 case 0x14: keynum=9;break;
246 2 case 0x24: keynum=10;break;
247 2 case 0x44: keynum=11;break;
248 2 case 0x84: keynum=12;break;
249 2 case 0x18: keynum=13;break;
250 2 case 0x28: keynum=14;break;
251 2 case 0x48: keynum=15;break;
252 2 case 0x88: keynum=16;break;
253 2 // case 0x00: keynum=0;break;
254 2 }
255 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1285 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 8
IDATA SIZE = ---- ----
BIT SIZE = 8 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -