📄 secondtimer.lst
字号:
C51 COMPILER V7.50 SECONDTIMER 04/05/2009 11:15:40 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SECONDTIMER
OBJECT MODULE PLACED IN SecondTimer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SecondTimer.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5
6 uchar code dutable[]={ //段选表
7 0xc0,0xf9,0xa4,0xb0,0x99,
8 0x92,0x82,0xf8,0x80,0x90,
9 0x88,0x83,0xc6,0xa1,0x86,0xbf};
10 /*
11 uchar code dutable[]={ //共阴极段选表
12 0x3f,0x06,0x5b,0x4f,
13 0x66,0x6d,0x7d,0x07,
14 0x7f,0x6f,0x77,0x7c,
15 0x39,0x5e,0x79,0x71};*/
16
17 uchar code wetable[]={0xfe,0xfd,0xfb,0xf7}; //位选表
18
19 uchar Time_num;
20 uint fen,miao;
21 uint Set_key_num; //设置按钮的按下次数
22 sbit Set_key=P1^5; //设置按钮
23 sbit Inc_key=P1^6; //增1按钮
24 sbit Dec_key=P1^7; //减1按钮
25
26 sbit D0 = P3^1;
27
28
29 void delay(uchar z)
30 {
31 1 uchar x,y;
32 1 for(x=110;x>0;x--)
33 1 for(y=z;y>0;y--);
34 1 }
35
36 ////////////////////
37 // 数码管显示函数
38 void display(uint ifen,uint imiao)
39 {
40 1 uint shi_fen,ge_fen,shi_miao,ge_miao;
41 1
42 1 shi_fen = ifen/10;
43 1 ge_fen = ifen%10;
44 1 shi_miao = imiao/10;
45 1 ge_miao = imiao%10;
46 1
47 1 P2=wetable[0];
48 1 P0=dutable[shi_fen];
49 1 delay(1);
50 1
51 1 P2=wetable[1];
52 1 P0=dutable[ge_fen];
53 1 delay(1);
54 1
55 1 P2=wetable[2];
C51 COMPILER V7.50 SECONDTIMER 04/05/2009 11:15:40 PAGE 2
56 1 P0=dutable[shi_miao];
57 1 delay(1);
58 1
59 1 P2=wetable[3];
60 1 P0=dutable[ge_miao];
61 1 delay(1);
62 1 }
63
64
65 void init()
66 {
67 1 P2 = 0xff;
68 1 Time_num=0;
69 1
70 1 fen = 0;
71 1 miao = 5;
72 1
73 1 Set_key_num = 0;
74 1
75 1 TMOD=0X01;
76 1 TH0=(65536-50000)/256;
77 1 TL0=(65536-50000)%256;
78 1 EA=1;
79 1 ET0=1;
80 1 TR0=1;
81 1
82 1
83 1 }
84
85
86 void main()
87 {
88 1 init();
89 1 while(1)
90 1 {
91 2 ////////////////////
92 2 //倒计时处理
93 2 if(Time_num == 20)
94 2 {
95 3 Time_num = 0;
96 3 if(fen==0)
97 3 {
98 4 if(miao==1) //倒计时完毕
99 4 {
100 5 D0=!D0;
101 5 TR0=0; //关闭定时器
102 5 }
103 4
104 4 }
105 3
106 3 if(miao==-1)
107 3 {
108 4 miao=59;
109 4 if(fen != 0)
110 4 fen--;
111 4 }
112 3 miao--;
113 3 if(miao==-1)
114 3 {
115 4 miao=59;
116 4 if(fen != 0)
117 4 fen--;
C51 COMPILER V7.50 SECONDTIMER 04/05/2009 11:15:40 PAGE 3
118 4 }
119 3
120 3 }
121 2
122 2
123 2 ////////////////////
124 2 // "设置"键按下
125 2 if(Set_key!= 1)
126 2 {
127 3 delay(10);
128 3 if(Set_key!= 1)
129 3 {
130 4 while(Set_key!= 1);
131 4 ET0=0;
132 4 TR1=0; //停止走动
133 4
134 4 Set_key_num++; //次数加1
135 4 if(Set_key_num == 3) //按了3次
136 4 {
137 5 Set_key_num = 0;
138 5 ET0=1;
139 5 TR0=1; //开始倒计时
140 5 }
141 4 }
142 3 }
143 2 ////////////////////
144 2 // "增加"键按下
145 2 if(Inc_key!= 1)
146 2 {
147 3 delay(10);
148 3 if(Inc_key!= 1)
149 3 {
150 4 while(Inc_key!= 1);
151 4 if(Set_key_num==1) //按了1次,调分钟
152 4 {
153 5 if(fen==60)
154 5 fen=0;
155 5 else
156 5 fen++;
157 5 }
158 4 if(Set_key_num==2)
159 4 {
160 5 if(miao==60)
161 5 miao=0;
162 5 else
163 5 miao++;
164 5 if(miao==60)
165 5 miao=0;
166 5 }
167 4 }
168 3 }
169 2 ////////////////////
170 2 // "降低"键按下
171 2 if(Dec_key!= 1)
172 2 {
173 3 delay(10);
174 3 if(Dec_key!= 1)
175 3 {
176 4 while(Dec_key!= 1);
177 4 if(Set_key_num==1) //按了1次,调秒钟
178 4 {
179 5 if(fen==-1)
C51 COMPILER V7.50 SECONDTIMER 04/05/2009 11:15:40 PAGE 4
180 5 fen=60;
181 5 else
182 5 fen--;
183 5 if(fen == -1)
184 5 fen=60;
185 5 }
186 4 if(Set_key_num==2)
187 4 {
188 5 if(miao==-1)
189 5 miao=0;
190 5 else
191 5 miao--;
192 5 if(miao == -1)
193 5 miao=59;
194 5 }
195 4 }
196 3 }
197 2 display(fen,miao);
198 2 }
199 1
200 1 }
201
202
203 void timer0() interrupt 1 //时钟中断
204 {
205 1 TH0=(65536-50000)/256;
206 1 TL0=(65536-50000)%256;
207 1 Time_num++;
208 1 }
209
210
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 539 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 6
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 + -