📄 clock.lst
字号:
C51 COMPILER V6.23a CLOCK 08/11/2008 02:09:22 PAGE 1
C51 COMPILER V6.23a, 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 #include<reg51.h>
2 #define uchar unsigned char
3 int j,k,i,a,h,m,A1,A2,A3,A4,A5,A6,second,min,hour;
4 sbit key0=P1^0;
5 sbit key1=P1^1;
6 sbit key2=P1^2;
7 sbit key3=P1^3;
8 sbit key4=P1^4;
9 sbit P2_7=P2^7;
10 bit L=0;//长溢出标志位
11 uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
12 0x80,0x90,0X88,0XC6,0XC7,0XFF};//编码0~9,A,C,L,全黑
13 int code select[]={0x01,0x02,0x04,0x08,0x10,0x20};//位选通
14 int time[3];
15 int alarm1,alarm2;
16 int con=0;con1=0;
17
18
19
20 void delay(int i)//延时
21 { for(j=i;j>0;j--)
22 1 for(k=125;k>0;k--);
23 1 }
24
25
26 void t0(void) interrupt 1//1S延时
27 { static int t;
28 1 TF0=0;
29 1 t++;
30 1 if(t==15)
31 1 {t=0;L=1;
32 2 }
33 1 }
34
35
36 void display(uchar sh_c,uchar g_c,uchar sh_b,uchar g_b,uchar sh_a,uchar g_a)//显示部分
37 { P0=table[sh_c];
38 1 P3=select[0];
39 1 delay(5);
40 1 P3=0;
41 1
42 1 P0=table[g_c];
43 1 P3=select[1];
44 1 delay(5);
45 1 P3=0;
46 1
47 1 P0=table[sh_b];
48 1 P3=select[2];
49 1 delay(5);
50 1 P3=0;
51 1
52 1 P0=table[g_b];
53 1 P3=select[3];
54 1 delay(5);
55 1 P3=0;
C51 COMPILER V6.23a CLOCK 08/11/2008 02:09:22 PAGE 2
56 1
57 1 P0=table[sh_a];
58 1 P3=select[4];
59 1 delay(5);
60 1 P3=0;
61 1
62 1 P0=table[g_a];
63 1 P3=select[5];
64 1 delay(5);
65 1 P3=0;
66 1 }
67
68
69 void timing (void)//数字调整
70 { EA=0;
71 1 if(!key1)
72 1 {delay(10);
73 2 while(!key1);
74 2 con1++;TR0=0;ET0=0;
75 2 }
76 1 if(con1>=2)
77 1 con1=0;TR0=1;ET0=1;
78 1 if(con1==0) //分钟调整
79 1 { if(!key2)
80 2 {delay(10);
81 3 while(!key2);
82 3 { m++;
83 4 if(m>=60) m=0;
84 4 }
85 3 }
86 2 if(!key3)
87 2 {delay(10);
88 3 while(!key3);
89 3 { m--;
90 4 if(m<0) m=59;
91 4 }
92 3 }
93 2 A3=m/10;A4=m%10; //闪动
94 2 delay(10);
95 2 A3=13;A4=13;
96 2 display(A1,A2,A3,A4,A5,A6);
97 2 delay(10);
98 2 A3=m/10;A4=m%10;
99 2 }
100 1 if(con1==1) //小时调整
101 1 { if(!key2)
102 2 {delay(10);
103 3 while(!key2);
104 3 { h++;
105 4 if(h>=24) h=0;
106 4 }
107 3 }
108 2 if(!key3)
109 2 {delay(10);
110 3 while(!key3);
111 3 { h--;
112 4 if(h<0) h=23;
113 4 }
114 3 }
115 2 A5=h/10;A6=h%10; //闪动
116 2 delay(10);
117 2 A5=13;A6=13;
C51 COMPILER V6.23a CLOCK 08/11/2008 02:09:22 PAGE 3
118 2 display(A1,A2,A3,A4,A5,A6);
119 2 delay(10);
120 2 A5=h/10;A6=h%10;
121 2 }
122 1 EA=1;
123 1 }
124
125
126 void function(void)//功能设置
127 { if(!key0)
128 1 { delay(10);
129 2 while(!key0);
130 2 con++;
131 2 if(con>=3) con=0;
132 2 }
133 1 if(con==0)
134 1 { A1=time[0]/10;
135 2 A2=time[0]%10;
136 2 A3=time[1]/10;
137 2 A4=time[1]%10;
138 2 A5=time[2]/10;
139 2 A6=time[2]%10;
140 2 }
141 1 if(con==1)//设置时间
142 1 { m=time[1];h=time[2];
143 2 timing ();
144 2 time[1]=m;time[2]=h;
145 2 A1=11;
146 2 A2=12;
147 2 A3=time[1]/10;
148 2 A4=time[1]%10;
149 2 A5=time[2]/10;
150 2 A6=time[2]%10;
151 2 }
152 1 if(con==2)//设置闹钟
153 1 { m=alarm1;h=alarm2;
154 2 timing ();
155 2 alarm1=m;alarm2=h;
156 2 A1=10;
157 2 A2=12;
158 2 A3=alarm1/10;
159 2 A4=alarm1%10;
160 2 A5=alarm2/10;
161 2 A6=alarm2%10;
162 2 }
163 1 }
164
165 void alarm(void)//闹钟开关
166 { if(key4==0)
167 1 {if(time[1]==alarm1 && time[2]==alarm2)
168 2 { P2_7=0;
169 3 delay(10);
170 3 display(A1,A2,A3,A4,A5,A6);
171 3 P2_7=1;
172 3 delay(10);
173 3 display(A1,A2,A3,A4,A5,A6);
174 3 }
175 2 else P2_7=1;
176 2 }
177 1 else P2_7=1;
178 1 }
179
C51 COMPILER V6.23a CLOCK 08/11/2008 02:09:22 PAGE 4
180 void main()
181 { TMOD=0x01;TH0=0x01;TL0=0x6b;
182 1 TR0=1;ET0=1;EA=1;
183 1 while(1)
184 1 { if(L)
185 2 { L=0;time[0]++;
186 3 if(time[0]==60)
187 3 { time[0]=0;time[1]++;}
188 3 if(time[1]==60)
189 3 { time[1]=0;time[2]++;}
190 3 if(time[2]==24) time[2]=0;
191 3 }
192 2 function();
193 2 alarm();
194 2 display(A1,A2,A3,A4,A5,A6);
195 2 }
196 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1097 ----
CONSTANT SIZE = 26 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 46 6
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 + -