📄 ex1.lst
字号:
C51 COMPILER V7.50 EX1 06/26/2005 20:16:34 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE EX1
OBJECT MODULE PLACED IN .\ex1.obj
COMPILER INVOKED BY: E:\Keil3\C51\BIN\C51.EXE E:\C语言\Design\ex1.c BROWSE DEBUG OBJECTEXTEND PRINT(.\ex1.lst) OBJECT(.\
-ex1.obj)
line level source
1 #include <reg51.h>
2 #define uchar unsigned char
3 sbit dout=P3^7;
4 uchar code tabel[]={0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f,0x00,0x5e,0x71};
5 //0 1 2 3 4 5 6 7 8 9
6 uchar code en[]={0xf1,0xf2,0xf4,0xf8};
7 uchar d[4];
8 uchar status=0;
9 bit set;
10 uchar f[4];
11 uchar fh,fl;
12
13
14 //////////////////////////子函数声明////////////////////////////
15 delay(uchar d);
16 display();
17 uchar key();
18 freq();
19 disp_freq();
20 uchar convert();
21
22
23 //////////////////////////主函数////////////////////////////////
24 main()
25 {
26 1 while(1)
27 1 {
28 2 display();
29 2 if(status==0) freq(); //设置频率
30 2 else if(status==1) disp_freq(); //测量频率
31 2
32 2
33 2
34 2
35 2 }
36 1 }
37
38
39 //////////////////////////////设置频率//////////////////////////
40 freq()
41 {
42 1 uchar temp,t,n,i;
43 1 unsigned int tc;
44 1 d[3]=12; //F
45 1 if(set==1) //闪烁
46 1 {
47 2 t=d[n];
48 2 d[n]=10;
49 2 for(i=0;i<60;i++) display();
50 2 d[n]=t;
51 2 for(i=0;i<60;i++) display();
52 2 }
53 1 else if(set==0)
54 1 {
C51 COMPILER V7.50 EX1 06/26/2005 20:16:34 PAGE 2
55 2 display();
56 2 }
57 1
58 1 temp=key();
59 1 if(temp==4)
60 1 {
61 2 status=1;
62 2 for(i=0;i<4;i++) f[i]=d[i];
63 2 }
64 1 else if(temp==3)
65 1 {
66 2 set=1;
67 2 n++;if(n==3) n=0;
68 2 EA=0;
69 2 }
70 1 else if(temp==1)
71 1 {
72 2 set=0;
73 2 tc=convert();
74 2 fh=tc/256;
75 2 fl=tc%256;
76 2 TMOD=1;
77 2 EA=1;
78 2 ET0=1;
79 2 TH0=fh;
80 2 TL0=fl;
81 2 TR0=1;
82 2
83 2 }
84 1 else if((temp==2)&&(set==1)) //处于设置状态
85 1 {
86 2 if(n==0) {d[0]++;if(d[0]==10) d[0]=0;}
87 2 else if(n==1){d[1]++;if(d[1]==10) d[1]=0;}
88 2 else if(n==2){d[2]++;if(d[2]==2) d[2]=0;}
89 2 }
90 1
91 1
92 1 }
93
94
95 ////////////////////////////测频率///////////////////////////
96 disp_freq()
97 {
98 1 uchar i;
99 1 d[3]=11; //d
100 1 d[2]=0;
101 1 d[1]=0;
102 1 d[0]=0;
103 1 if(key()==4)
104 1 {
105 2 status=0;
106 2 for(i=0;i<4;i++) d[i]=f[i];
107 2 }
108 1
109 1 }
110
111
112
113 delay(uchar d)
114 {
115 1 while(--d);
116 1 }
C51 COMPILER V7.50 EX1 06/26/2005 20:16:34 PAGE 3
117
118 uchar key()
119 {
120 1 uchar temp,keycode=0; //keycode=0不要忘了!
121 1 temp=P2&0xf0;
122 1 if(temp!=0xf0)
123 1 {
124 2 display();
125 2 if((P2&0xf0)!=0xf0)
126 2 {
127 3 if(temp==0xe0) keycode=1;
128 3 else if(temp==0xd0) keycode=2;
129 3 else if(temp==0xb0) keycode=3;
130 3 else if(temp==0x70) keycode=4;
131 3 }
132 2
133 2 }
134 1 while((P2&0xf0)!=0xf0)
135 1 {
136 2 display();
137 2 }
138 1 return keycode;
139 1 }
140
141 //////////////////////////显示子程序///////////////////////////////
142 display()
143 {
144 1 uchar i;
145 1 for(i=0;i<4;i++)
146 1 {
147 2 P2=en[i];
148 2 P0=tabel[d[i]];
149 2 delay(250);
150 2 P0=0;
151 2 }
152 1 }
153
154 uchar convert()
155 {
156 1 unsigned int tc=0;
157 1 uchar a;
158 1 a=d[2]*100+d[1]*10+d[0];
159 1 a=4608/(1+a);
160 1 tc=65536-a;
161 1 return tc;
162 1 }
163
164
165
166 time0() interrupt 1 using 1
167 {
168 1
169 1 TH0=fh;
170 1 TL0=fl;
171 1 dout=!dout;
172 1 }
173
174
175
176
C51 COMPILER V7.50 EX1 06/26/2005 20:16:34 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 425 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 6
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 + -