📄 timer06.lst
字号:
C51 COMPILER V8.05a TIMER06 02/09/2009 08:18:26 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE TIMER06
OBJECT MODULE PLACED IN timer06.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE timer06.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 *本程序能使数码管显示时钟 flag
3 *不能用键盘进行调节
4 *程序的写法是根据硬件电路的连接方式,数码管接在P0口上,前四位是位选,由74LS138驱动;后四位是段选,由74LS47
-驱动;
5 *程序的精华:74LS138一次只能选择一个数码管,故应ScanSeg7()循环扫描数码管使六个数码管全部亮起来;
6 **************通过定时中断和write_sfm()将sec、min、hour写入DisplayArray[6]中,再通过ScanSeg7()是数码管显示
-出时钟
7 */
8 #include <reg52.h>
9 #define uchar unsigned char
10 #define uint unsigned int
11 uchar hour=23;min=58;sec=12;
12 uchar DisplayArray[6]={2,1,8,5,3,2};
13 uchar count,s1num;
14 sbit speaker=P3^3;
15 void ScanSeg7() /*数码管扫描显示*/
16 {
17 1 static uchar s_scanCounter;
18 1 s_scanCounter++;
19 1 if(s_scanCounter>5) s_scanCounter=0; /*ptr1>5表示6个数码管都已经扫描过*/
20 1 P0=s_scanCounter|(DisplayArray[s_scanCounter]<<4);
21 1 }
22
23 void write_sfm(uchar add,uchar date)
24 {
25 1 uchar hour,ge;
26 1 hour=date/10;
27 1 ge=date%10;
28 1 DisplayArray[add]=ge;
29 1 DisplayArray[add+1]=hour;
30 1 }
31 void main()
32 {
33 1 TMOD=0x01;
34 1 TR0=1;
35 1 EA=1;
36 1 ET0=1;
37 1
38 1 while(1)
39 1 {
40 2
41 2 ScanSeg7() ;
42 2 if(sec&min&hour==0)
43 2 {
44 3 speaker=0;
45 3 }
46 2
47 2 }
48 1 }
49 void Timer0Int() interrupt 1
50 {
51 1 TH0=(65536-50000)/256; /*设定Timer0每隔SCAN_CYCLEu中断一次*/
52 1 TL0=(65536-50000)%256;
53 1 count++;
C51 COMPILER V8.05a TIMER06 02/09/2009 08:18:26 PAGE 2
54 1 if(count==20)
55 1 {
56 2 count=0;
57 2 sec++;
58 2 if(sec==60)
59 2 {
60 3 sec=0;
61 3 min++;
62 3 if(min==60)
63 3 {
64 4 min=0;
65 4 hour++;
66 4 if(hour==24)
67 4 {
68 5 hour=0;
69 5 }
70 4 write_sfm(4,hour);
71 4 }
72 3 write_sfm(2,min);
73 3 }
74 2 write_sfm(0,sec);
75 2 }
76 1
77 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 212 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 ----
IDATA SIZE = ---- ----
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 + -