📄 liyi.lst
字号:
C51 COMPILER V8.05a LIYI 05/18/2009 18:04:18 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LIYI
OBJECT MODULE PLACED IN liyi.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE liyi.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG2051.H>
2 #include <stdio.h>
3 #define uchar unsigned char
4
5 sbit DIN=P1^0;
6 sbit LOAD=P1^1;
7 sbit CLK=P1^2;
8 sbit sound=P3^7;
9
10 sbit kaiguan=P1^7;
11 //unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
12
13
14 //unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
15
16
17
18
19 unsigned char disbuf[8]={0,0,0,0,0,0,10,10};
20 unsigned char temp[8];
21 unsigned char dispcount;
22 unsigned char T0count;
23 unsigned char timecount;
24 bit flag;
25 unsigned long chushizhi=1000;
26
27
28 void send(uchar add,uchar dat);
29 void s_seg(uchar X1,uchar X2,uchar X3, uchar X4,uchar X5,uchar X6,uchar X7, uchar X8);
30
31 void initt0andt1(void);
32
33 void frequency_process(void );
34
35
36 void main(void)
37 {
38 1 // unsigned char i;
39 1 sound=0;
40 1 kaiguan=0;
41 1 initt0andt1();
42 1
43 1 while(1)
44 1 {
45 2 if(flag)
46 2 {
47 3 flag=0;
48 3 frequency_process();
49 3 s_seg(disbuf[0],disbuf[1],disbuf[2],disbuf[3],disbuf[4],disbuf[5],disbuf[6],disbuf[7]);
50 3 }
51 2
52 2
53 2 }
54 1
55 1
C51 COMPILER V8.05a LIYI 05/18/2009 18:04:18 PAGE 2
56 1 }
57
58 void frequency_process(void )
59 {
60 1 uchar i;
61 1 // unsigned long freadd;
62 1
63 1
64 1 unsigned long my_result;
65 1
66 1 my_result=T0count*65536+TH0*256+TL0;
67 1 my_result=chushizhi-my_result;
68 1 if(my_result<100) sound=1; else sound=0;
69 1 if(my_result<80) kaiguan=1;else kaiguan=0;
70 1
71 1 for(i=0;i<8;i++)
72 1 {
73 2 temp[i]=0;
74 2 }
75 1 i=0;
76 1 while(my_result/10)
77 1 {
78 2 temp[i]=my_result%10;
79 2 my_result=my_result/10;
80 2 i++;
81 2 }
82 1 temp[i]=my_result;
83 1 for(i=0;i<8;i++)
84 1 {
85 2 disbuf[i]=temp[7-i];
86 2
87 2 }
88 1 timecount=0;
89 1 T0count=0;
90 1 TH0=0;
91 1 TL0=0;
92 1 TR0=1;
93 1 }
94
95
96 void initt0andt1(void)
97 {
98 1 TMOD=0x15;
99 1 TH0=0;
100 1 TL0=0;
101 1 TH1=(65536-4000)/256;
102 1 TL1=(65536-4000)%256;
103 1 TR1=1;
104 1 TR0=1;
105 1 ET0=1;
106 1 ET1=1;
107 1 EA=1;
108 1 }
109
110
111 void t0(void) interrupt 1 using 0 //T0
112
113
114 {
115 1
116 1
117 1 T0count++;
C51 COMPILER V8.05a LIYI 05/18/2009 18:04:18 PAGE 3
118 1
119 1
120 1 }
121
122
123 void t1(void) interrupt 3 using 0 //T1 4ms中断一次
124
125
126 {
127 1
128 1
129 1 TH1=(65536-4000)/256;
130 1
131 1
132 1 TL1=(65536-4000)%256;
133 1
134 1
135 1 timecount++;
136 1
137 1
138 1 if(timecount==250)
139 1
140 1
141 1 {
142 2
143 2
144 2 TR0=0;
145 2
146 2
147 2 timecount=0;
148 2
149 2
150 2 flag=1;
151 2
152 2
153 2 }
154 1
155 1
156 1 //P0=dispcode[dispbuf[dispcount]];
157 1
158 1
159 1 //P2=dispbit[dispcount];
160 1
161 1
162 1 //dispcount++;
163 1
164 1
165 1 //if(dispcount==8)
166 1
167 1
168 1 // {
169 1
170 1
171 1 // dispcount=0;
172 1
173 1
174 1 // }
175 1
176 1
177 1 }
178
179
C51 COMPILER V8.05a LIYI 05/18/2009 18:04:18 PAGE 4
180
181
182
183
184
185
186
187 void send(uchar add,uchar dat)
188 {
189 1 uchar ADS,i,j;
190 1 CLK=0;
191 1 LOAD=0;
192 1 DIN=0;
193 1 i=4;
194 1 while(i<16)
195 1 {
196 2 if(i<8)
197 2 {
198 3 ADS=add;
199 3 }
200 2 else
201 2 {
202 3 ADS=dat;
203 3 }
204 2 for(j=8;j>=1;j--)
205 2 {
206 3
207 3 if((ADS&0x80)==0)
208 3 { DIN=0 ;}
209 3 else
210 3 { DIN=1;}
211 3 ADS=ADS<<1;
212 3
213 3 CLK=1;
214 3 CLK=0;
215 3 }
216 2 i=i+8;
217 2 }
218 1 LOAD=1;
219 1 }
220
221 //void s_seg(uchar X1,uchar X2,uchar X3,uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
222 void s_seg(uchar X1,uchar X2,uchar X3, uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
223 {
224 1 send(0x0c,0x01);//正常状态
225 1 send(0x0b,0x07);//设置扫描范围DIG0-7
226 1 send(0x0a,0x05);//设置亮度11/32
227 1 send(0x09,0xff);//采用译码方式
228 1
229 1 send(0x01,X1);
230 1 send(0x02,X2);
231 1 send(0x03,X3);
232 1 send(0x04,X4);
233 1 send(0x05,X5);
234 1 send(0x06,X6);
235 1 send(0x07,X7);
236 1 send(0x08,X8);
237 1 }
238
239
240
241
C51 COMPILER V8.05a LIYI 05/18/2009 18:04:18 PAGE 5
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 518 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 13
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 + -