📄 f_detecter.lst
字号:
C51 COMPILER V7.01 F_DETECTER 06/15/2007 16:40:51 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE F_DETECTER
OBJECT MODULE PLACED IN F_Detecter.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE F_Detecter.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /************************************************************
2 *频率计
3 *12M晶振,rs=P0^5,rw=P0^6,en=P0^7,Dx=P2
4 *Author:熊伟华
5 *2007
6 *************************************************************/
7 #include <reg51.h>
8 #include <intrins.h>
9 #define uchar unsigned char
10 #define uint unsigned int
11
12 uchar Dis0[]={" Welcome to the "},Dis1[]={"Frequency Detect"},Dis2[]={"The Frequency is"},Dis3[]={"0123456
-789Hz"},u;
13
14 sbit rs=P0^5;
15 sbit rw=P0^6;
16 sbit en=P0^7;
17
18 uchar temp[8];
19 uchar T0count=0;
20 uchar timecount=0;
21 bit flag;
22 unsigned long x;
23
24 void delay(uchar t);
25 void LCD_init();
26 uchar LCD_read_state();
27 void LCD_write_order(uchar temp0);
28 void LCD_read_date();
29 void LCD_write_date(uchar temp1);
30 void LCD_pos(uchar pos);
31
32 /************************************************************
33 *Function:延时处理
34 *parameter:
35 *Return:
36 *Modify:
37 *************************************************************/
38 void delay(uchar t)
39 { uchar tb;
40 1 while(t--)
41 1 { for (tb=0;tb<127;tb++)
42 2 {_nop_();
43 3 _nop_();
44 3 _nop_();
-
45 3 _nop_();}
46 2 }
47 1 }
48
49 /************************************************************
50 *Function:1602初始化
51 *parameter:
52 *Return:
53 *Modify:
C51 COMPILER V7.01 F_DETECTER 06/15/2007 16:40:51 PAGE 2
54 *************************************************************/
55 void LCD_init()
56 {rs=0;
57 1 _nop_();
58 1 rw=0;
59 1 _nop_();
60 1 en=1;
61 1 _nop_();
62 1 LCD_write_order(0x38);
63 1 delay(15);
64 1 LCD_write_order(0x0c);
65 1 delay(5);
66 1 LCD_write_order(0x06);
67 1 _nop_();
68 1 en=0;
69 1 }
70 /************************************************************
71 *Function:读1602的状态
72 *parameter:
73 *Return:0为空闲,1为忙
74 *Modify:
75 *************************************************************/
76 uchar LCD_read_state(void)
77 { uchar u;
78 1 rs=0;
79 1 _nop_();
80 1 rw=1;
81 1 _nop_();
82 1 en=1;
83 1 _nop_();
84 1 u=P2;
85 1 return(u);
86 1 _nop_();
87 1 en=0;
88 1 }
89 /************************************************************
90 *Function:向1602写命令字
91 *parameter:
92 *Return:
93 *Modify:
94 *************************************************************/
95 void LCD_write_order(uchar temp)
96 { LCD_read_state();
97 1 _nop_();
98 1 if ((u&&0x80)==0)
99 1 { rs=0;
100 2 _nop_();
101 2 rw=0;
102 2 _nop_();
103 2 en=1;
104 2 _nop_();
105 2 P2=temp;
106 2 }
107 1 _nop_();
108 1 en=0;
109 1 }
110 /************************************************************
111 *Function:从1602读数据
112 *parameter:
113 *Return:
114 *Modify:
115 *************************************************************/
C51 COMPILER V7.01 F_DETECTER 06/15/2007 16:40:51 PAGE 3
116 void LCD_read_date()
117 { LCD_read_state();
118 1 _nop_();
119 1 if ((u&&0x80)==0)
120 1 { rs=1;
121 2 _nop_();
122 2 rw=1;
123 2 _nop_();
124 2 en=1;
125 2 _nop_();
126 2 }
127 1 _nop_();
128 1 en=0;
129 1 }
130 /************************************************************
131 *Function:向1602写显示数据
132 *parameter:
133 *Return:
134 *Modify:
135 *************************************************************/
136 void LCD_write_date(uchar temp1)
137 { LCD_read_state();
138 1 _nop_();
139 1 if ((u&&0x80)==0)
140 1 { rs=1;
141 2 _nop_();
142 2 rw=0;
143 2 _nop_();
144 2 en=1;
145 2 _nop_();
146 2 P2=temp1;
147 2 }
148 1 _nop_();
149 1 en=0;
150 1 }
151 /************************************************************
152 *Function:显示位置 00-0f为第一行,40-4f为第二行
153 *parameter:
154 *Return:
155 *Modify:
156 *************************************************************/
157 void LCD_pos(uchar pos)
158 {LCD_write_order(pos|0x80);}
159 /************************************************************
160 *Function:显示欢迎界面
161 *parameter:
162 *Return:
163 *Modify:
164 *************************************************************/
165 void LCD_Dis()
166 { uchar i,temp0=0x00,temp1=0x40;
167 1 LCD_init();
168 1 for (i=0;i<=15;i++)
169 1 { LCD_pos(temp0);
170 2 delay(1);
171 2 LCD_write_date(Dis0[i]);
172 2 delay(1);
173 2 LCD_pos(temp1);
174 2 delay(1);
175 2 LCD_write_date(Dis1[i]);
176 2 temp0++;
177 2 temp1++;
C51 COMPILER V7.01 F_DETECTER 06/15/2007 16:40:51 PAGE 4
178 2 }
179 1 delay(1000);
180 1 delay(1000);
181 1 delay(1000);
182 1 delay(1000);
183 1 temp0=0x00;
184 1 LCD_write_order(0x01);
185 1 for (i=0;i<=15;i++)
186 1 { LCD_pos(temp0);
187 2 delay(1);
188 2 LCD_write_date(Dis2[i]);
189 2 temp0++;
190 2 }
191 1 }
192 /************************************************************
193 *Function:定时器/计数器初始化
194 *parameter:
195 *Return:
196 *Modify:
197 *************************************************************/
198 void timer_init()
199 { TMOD=0x15;
200 1 TH0=0;
201 1 TL0=0;
202 1 TH1=(65536-4000)/256;
203 1 TL1=(65536-4000)%256;
204 1 TR1=1;
205 1 TR0=1;
206 1 ET0=1;
207 1 ET1=1;
208 1 EA=1;
209 1 }
210 /************************************************************
211 *Function:中断服务程序
212 *parameter:
213 *Return:
214 *Modify:
215 *************************************************************/
216 void t0(void) interrupt 1 using 0
217 {
218 1 T0count++;
219 1 }
220 void t1(void) interrupt 3 using 0
221 {
222 1 TH1=0x3c;
223 1 TL1=0xb0;
224 1 timecount++;
225 1 if(timecount==60)
226 1 {
227 2 TR0=0;
228 2 timecount=0;
229 2 flag=1;
230 2 }
231 1 }
232 /************************************************************
233 *Function:中断服务程序
234 *parameter:
235 *Return:
236 *Modify:
237 *************************************************************/
238 void counter ()
239 {
C51 COMPILER V7.01 F_DETECTER 06/15/2007 16:40:51 PAGE 5
240 1 while(1)
241 1 {uchar i=0,pos=0x49;
242 2 if(flag==1)
243 2 {
244 3 flag=0;
245 3 x=T0count*65536+TH0*256+TL0;
246 3 for(i=0;i<8;i++)
247 3 {
248 4 temp[i]=0;
249 4 }
250 3 i=0;
251 3 x=x/3;
252 3 while(x/10)
253 3 {
254 4 temp[i]=x%10;
255 4 x=x/10;
256 4 i++;
257 4 }
258 3 temp[i]=x;
259 3 i=0;
260 3 LCD_pos(0x4a);
261 3 LCD_write_date(Dis3[10]);
262 3 LCD_pos(0x4b);
263 3 LCD_write_date(Dis3[11]);
264 3 for (i=0;i<=5;i++)
265 3 { LCD_pos(pos);
266 4 delay(1);
267 4 LCD_write_date(Dis3[temp[i]]);
268 4 pos--;
269 4 }
270 3 timecount=0;
271 3 T0count=0;
272 3 TH0=0;
273 3 TL0=0;
274 3 TR0=1;
275 3 }
276 2 }
277 1 }
278 /************************************************************
279 *Function:主程序
280 *parameter:
281 *Return:
282 *Modify:
283 *************************************************************/
284 void main()
285 {LCD_Dis();
286 1 timer_init();
287 1 counter();
288 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 619 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 79 4
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 + -