📄 index.lst
字号:
191 1 }
192
193 void Tcs(void) //将时间信号进行BCD译码
194 {
195 1 uchar j,k,H,L;
196 1 if(k=0,k<7,k++)
197 1 {
198 2 switch(k)
199 2 {
200 3 case 0:
201 3 {
202 4 in[0]=in[0]&0x7f; //秒的最高位需要屏蔽
203 4 j=in[0];
204 4 L=j&0x0f;
205 4 S1=TAB[L];
206 4 H=j>>4;
207 4 S2=TAB[H];
208 4 }
209 3 case 1:
210 3 {
211 4 in[1]=in[1]&0x7f; //分的最高为屏蔽
212 4 j=in[1];
213 4 L=j&0x0f;
214 4 MU1=TAB[L];
215 4 H=j>>4;
216 4 MU2=TAB[H];
217 4 }
218 3
219 3 case 2:
220 3 {
221 4 in[2]=in[2]&0x3f; //时的最高为屏蔽
222 4 j=in[1];
223 4 L=j&0x0f;
224 4 H1=TAB[L];
225 4 H=j>>4;
226 4 H2=TAB[H];
227 4 }
228 3 case 3:
229 3 {
230 4 in[3]=in[3]&0x3f; //日的最高为屏蔽
231 4 j=in[1];
232 4 L=j&0x0f;
233 4 D1=TAB[L];
234 4 H=j>>4;
235 4 D2=TAB[H];
236 4 }
237 3 case 4:
238 3 {
C51 COMPILER V7.06 INDEX 11/16/2007 20:10:34 PAGE 5
239 4 in[4]=in[4]&0x07; //星期的最高为屏蔽
240 4 L=in[4];
241 4 D1=TAB[L];
242 4 }
243 3 case 5:
244 3 {
245 4 in[5]=in[5]&0x1f; //月的最高为屏蔽
246 4 j=in[1];
247 4 L=j&0x0f;
248 4 M1=TAB[L];
249 4 H=j>>4;
250 4 M2=TAB[H];
251 4 }
252 3 case 6: //年
253 3 {
254 4 j=in[1];
255 4 L=j&0x0f;
256 4 Y1=TAB[L];
257 4 H=j>>4;
258 4 Y2=TAB[H];
259 4 }
260 3
261 3 }
262 2 }
263 1
264 1 }
265
266 void Init_Device(void) //初始化单片机和时钟芯片函数
267 {
268 1 IE=0x87; //开启定时器0和外中断0和外中断1
269 1 IP=0x03; //设置外中断0和定时器0为高优先级
270 1 TMOD=0x01; //设置定时器0为16位定时器模式
271 1 TH0=0xEC; //定时5ms
272 1 TL0=0x77;
273 1 LED=0; //LED灯灭
274 1 write_N_byte(0,0,9,set); //发送N个字节 CS_I2C为24C02 IC地址
275 1 TR0=1; //启动定时器0
276 1 }
277
278 void Start_ADC0809(void) //启动0809对温度传感器测量
279 {
280 1 ADC_EN=0; //输出使能关闭
281 1 ADC_S=1;
282 1 _nop_();
283 1 _nop_();
284 1 ADC_S=0;
285 1 }
286
287 void delay10ms(void) //延时10ms
288 {
289 1 uchar i=100,j=100;
290 1 while(i--)
291 1 {
292 2 while(j--);
293 2 }
294 1 }
295
296 void KEY(void) //按键,调时间和设定闹钟
297 {
298 1 if(key1==1) //设定时间,未完成
299 1 {
300 2 delay10ms(); //延时10ms
C51 COMPILER V7.06 INDEX 11/16/2007 20:10:34 PAGE 6
301 2 if(key1==1)
302 2 {
303 3 while(key1==0);
304 3 }
305 2 }
306 1 if(key3==1) //设定闹钟,未完成
307 1 {
308 2 delay10ms();
309 2 if(key3==1)
310 2 {
311 3 while(key3==0);
312 3 }
313 2
314 2 }
315 1 }
316
317 uchar transform(uchar i) //对温度的工程量转换程序
318 {
319 1 //比如说当数码为0FFH时的温度是50摄氏度,00H时为负5摄氏度.请按实际情况修改
320 1 uchar j;
321 1 //添加实际代码
322 1 j=i;
323 1 return j;
324 1 }
325
326 void show(void) //显示
327 {
328 1 P2=Year4; //最高位显示2
329 1 P0=TAB[0];
330 1 _nop_();
331 1 P2=Year3; //第二位显示0
332 1 P0=TAB[0];
333 1 _nop_();
334 1 P2=Year2; //一下是根据变量显示
335 1 P0=TAB[Y2];
336 1 _nop_();
337 1 P2=Year1;
338 1 P0=TAB[Y1];
339 1 _nop_();
340 1 P2=Month2; //显示月份
341 1 P0=TAB[M2];
342 1 _nop_();
343 1 P2=Month1;
344 1 P0=TAB[M1];
345 1 _nop_();
346 1 P2=Day2; //显示日
347 1 P0=TAB[D2];
348 1 _nop_();
349 1 P2=Day1;
350 1 P0=TAB[D1];
351 1 _nop_();
352 1 P2=Hour2; //显示时间
353 1 P0=TAB[H2];
354 1 _nop_();
355 1 P2=Hour1;
356 1 P0=TAB[H1];
357 1 _nop_();
358 1 P2=Minute2; //显示分钟
359 1 P0=TAB[MU2];
360 1 _nop_();
361 1 P2=Minute1;
362 1 P0=TAB[MU1];
C51 COMPILER V7.06 INDEX 11/16/2007 20:10:34 PAGE 7
363 1 _nop_();
364 1 P2=Second2; //显示秒
365 1 P0=TAB[S2];
366 1 _nop_();
367 1 P2=Second1;
368 1 P0=TAB[S1];
369 1 _nop_();
370 1 P2=Temperature2; //显示温度
371 1 P0=TAB[T2];
372 1 _nop_();
373 1 P2=Temperature1;
374 1 P0=TAB[T1];
375 1 _nop_();
376 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1326 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 21
IDATA SIZE = ---- 3
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -