📄 clock.lst
字号:
C51 COMPILER V7.06 CLOCK 03/23/2007 21:46:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CLOCK
OBJECT MODULE PLACED IN clock.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE clock.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* 名称: 时钟
2 作者: 詹松彬
3 创建时间:07-2-19
4 */
5
6 #include "reg51.h"
7 #include "math.h"
8
9 #define uchar unsigned char
10 #define uint unsigned int
11 // 0 1 2 3 4 5 6 7 8 9
12 uchar code Dispnum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
13 // 个位 十位 百位 千位
14 uchar code numwei[]={0xf7,0xfb,0xfd,0xfe};//显示的位数
15 sbit hourbutton=P3^3;//调时按钮
16 sbit minbutton=P3^4;//调分按钮
17 sbit bebutton=P3^5;//开始按钮
18 sbit point=P0^7;
19 bit secmark=0;
20 uchar DispBuf[4];
21 uchar sec=0,min=0,hour=0x0c;
22
23 void mDelay(uint Delay) //毫秒延时
24 {
25 1 uint i;
26 1 for(;Delay>0;Delay--)
27 1 {
28 2 for(i=0;i<124;i++)
29 2 {;}
30 2 }
31 1 }
32
33 void Timer0() interrupt 1 //定时器0中断
34 {
35 1 static uint num=0;
36 1 num++;
37 1 if(num>3600) //1s时间到
38 1 {
39 2 num=0;
40 2 sec++;
41 2 secmark=~secmark;
42 2 if(sec>59)//秒溢出
43 2 {
44 3 min++;
45 3 sec=0;
46 3 if(min>59)//分溢出
47 3 {
48 4 hour++;
49 4 min=0;
50 4 if(hour>23)//时溢出
51 4 hour=0;
52 4 }
53 3 }
54 2 }
55 1 }
C51 COMPILER V7.06 CLOCK 03/23/2007 21:46:16 PAGE 2
56
57 void Init() //初始化定时器0
58 {
59 1 TMOD=0x02;
60 1 TH0=0;
61 1 TL0=0;
62 1 ET0=1;
63 1 EA=1;
64 1 TR0=1;
65 1 }
66
67 void InitBuf()
68 {
69 1 DispBuf[0]=min%10;
70 1 DispBuf[1]=min/10;
71 1 DispBuf[2]=hour%10;
72 1 DispBuf[3]=hour/10;
73 1 }
74
75 void main()
76 {
77 1 static uchar wei;
78 1 while(1)
79 1 {
80 2 InitBuf();
81 2 P2=0xff;
82 2 P0=Dispnum[DispBuf[wei]];
83 2 if(wei==2)
84 2 point=0;
85 2 P2=numwei[wei];
86 2 wei++;
87 2 if(wei>3)
88 2 wei=0;
89 2 if(hourbutton==0)
90 2 {
91 3 mDelay(200);
92 3 hour++;
93 3 if(hour>23)
94 3 hour=0;
95 3 continue;
96 3 }
97 2 if(minbutton==0)
98 2 {
99 3 mDelay(200);
100 3 min++;
101 3 if(min>59)
102 3 min=0;
103 3 continue;
104 3 }
105 2 if(bebutton==0)
106 2 break;
107 2 }
108 1 Init();
109 1 while(1)
110 1 {
111 2 InitBuf();
112 2 P2=0xff;
113 2 P0=Dispnum[DispBuf[wei]];
114 2 if(secmark==1&&wei==2)
115 2 point=0;
116 2 P2=numwei[wei];
117 2 wei++;
C51 COMPILER V7.06 CLOCK 03/23/2007 21:46:16 PAGE 3
118 2 if(wei>3)
119 2 wei=0;
120 2 }
121 1 }
122
123
124
125
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 300 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -