📄 clock.lst
字号:
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CLOCK
OBJECT MODULE PLACED IN clock.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil C51(V8)\C51\BIN\C51.EXE clock.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"at89x52.h"
2 #include<intrins.h>
3 #include<absacc.h>
4 #define uchar unsigned char
5 #define nop _nop_() /* 定义空操作指令 */
6
7 #define port_led XBYTE[0x7FFF]
8 #define display_disappear 0x00;
9 #define DSA XBYTE[0x800A]
10 #define DSB XBYTE[0x800B]
11 #define DSC XBYTE[0x800C]
12 #define DSD XBYTE[0x800D]
13
14 #define sec XBYTE[0x8000]
15 #define min XBYTE[0x8002]
16 #define hour XBYTE[0x8004]
17 #define sec_alarm XBYTE[0x8001]
18 #define min_alarm XBYTE[0x8003]
19 #define hour_alarm XBYTE[0x8005]
20
21 uchar code tab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; /*共阴极LED数码显示器的段码*/
22 uchar code tab_dp[10]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};
23
24 sbit com0=P1^0;
25 sbit com1=P1^1;
26 sbit com2=P1^2;
27 sbit com3=P1^3;
28 sbit light0=P1^4;
29 sbit light1=P1^6;
30 sbit light_combo=P1^5;
31 sbit alarm=P3^0;
32 sbit bee=P1^7;
33 sbit key0=P3^2;
34 sbit key1=P3^3;
35
36 char sec_buffer=0,min_buffer=0,hour_buffer=0;
37 char min_buffer_alarm,hour_buffer_alarm;
38 char sec_temp,min_temp,hour_temp;
39 char light_count=0,count_timer0=0,flag_set,flag_display;
40 char count_bee=0,count_rect=0;
41 bit bee_flag=0;
42 uchar ptr_key=0,flag_key=0;
43
44 void delay (unsigned int value) /*延时副程式*/
45 {
46 1 while (value!=0) value--; /*10US延时*/
47 1 }
48
49 void initialize_DS(void)
50 {
51 1 DSA=0x0F;
52 1 DSB=0x82;
53 1 ACC=DSC;
54 1 ACC=DSD;
55 1 DSA=0x2F;
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 2
56 1 DSB=0x22;
57 1 }
58
59 void start_DS(void)
60 {
61 1 DSA=0x0F;
62 1 DSB=0x82;
63 1 sec=sec_buffer;
64 1 min=min_buffer;
65 1 hour=hour_buffer;
66 1 sec_alarm=0x00;
67 1 min_alarm=0x00;
68 1 hour_alarm=0x00;
69 1 DSA=0x2F;
70 1 DSB=0x22;
71 1 }
72
73 char disassemble_BCD(char BCD_DS,bit flag_DS)
74 {
75 1 if(flag_DS==0) return BCD_DS&0x0f;
76 1 else return BCD_DS>>4;
77 1 }
78
79 void scan(void)
80 {
81 1 if(flag_display==0)
82 1 {
83 2 com3=0;
84 2 port_led=tab[disassemble_BCD(min_temp,0)];
85 2 delay(300);
86 2 com3=1;
87 2
88 2 com2=0;
89 2 port_led=tab[disassemble_BCD(min_temp,1)];
90 2 delay(300);
91 2 com2=1;
92 2
93 2 com1=0;
94 2 port_led=tab_dp[disassemble_BCD(hour_temp,0)];
95 2 delay(300);
96 2 com1=1;
97 2
98 2 com0=0;
99 2 port_led=tab[disassemble_BCD(hour_temp,1)];
100 2 delay(300);
101 2 com0=1;
102 2 }
103 1 if(flag_display==1)
104 1 {
105 2 com3=0;
106 2 port_led=display_disappear;
107 2 delay(300);
108 2 com3=1;
109 2
110 2 com2=0;
111 2 port_led=display_disappear;
112 2 delay(300);
113 2 com2=1;
114 2
115 2 com1=0;
116 2 port_led=tab_dp[disassemble_BCD(hour_temp,0)];
117 2 delay(300);
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 3
118 2 com1=1;
119 2
120 2 com0=0;
121 2 port_led=tab[disassemble_BCD(hour_temp,1)];
122 2 delay(300);
123 2 com0=1;
124 2 }
125 1 if(flag_display==2)
126 1 {
127 2 com3=0;
128 2 port_led=tab[disassemble_BCD(min_temp,0)];
129 2 delay(300);
130 2 com3=1;
131 2
132 2 com2=0;
133 2 port_led=tab[disassemble_BCD(min_temp,1)];
134 2 delay(300);
135 2 com2=1;
136 2
137 2 com1=0;
138 2 port_led=display_disappear;
139 2 delay(300);
140 2 com1=1;
141 2
142 2 com0=0;
143 2 port_led=display_disappear;
144 2 delay(300);
145 2 com0=1;
146 2 }
147 1
148 1 if(flag_display==3)
149 1 {
150 2 com3=0;
151 2 port_led=tab[disassemble_BCD(min_alarm,0)];
152 2 delay(300);
153 2 com3=1;
154 2
155 2 com2=0;
156 2 port_led=tab[disassemble_BCD(min_alarm,1)];
157 2 delay(300);
158 2 com2=1;
159 2
160 2 com1=0;
161 2 port_led=tab_dp[disassemble_BCD(hour_alarm,0)];
162 2 delay(300);
163 2 com1=1;
164 2
165 2 com0=0;
166 2 port_led=tab[disassemble_BCD(hour_alarm,1)];
167 2 delay(300);
168 2 com0=1;
169 2 }
170 1 if(flag_display==4)
171 1 {
172 2 com3=0;
173 2 port_led=display_disappear;
174 2 delay(300);
175 2 com3=1;
176 2
177 2 com2=0;
178 2 port_led=display_disappear;
179 2 delay(300);
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 4
180 2 com2=1;
181 2
182 2 com1=0;
183 2 port_led=tab_dp[disassemble_BCD(hour_alarm,0)];
184 2 delay(300);
185 2 com1=1;
186 2
187 2 com0=0;
188 2 port_led=tab[disassemble_BCD(hour_alarm,1)];
189 2 delay(300);
190 2 com0=1;
191 2 }
192 1 if(flag_display==5)
193 1 {
194 2 com3=0;
195 2 port_led=tab[disassemble_BCD(min_alarm,0)];
196 2 delay(300);
197 2 com3=1;
198 2
199 2 com2=0;
200 2 port_led=tab[disassemble_BCD(min_alarm,1)];
201 2 delay(300);
202 2 com2=1;
203 2
204 2 com1=0;
205 2 port_led=display_disappear;
206 2 delay(300);
207 2 com1=1;
208 2
209 2 com0=0;
210 2 port_led=display_disappear;
211 2 delay(300);
212 2 com0=1;
213 2 }
214 1
215 1 if(sec_temp!=sec)
216 1 {
217 2 switch(light_count)
218 2 {case 0:light1=0;light0=1;break;
219 3 case 1:light0=0;light1=1;break;
220 3 default:break;
221 3 }
222 2 light_count++;
223 2 light_count=light_count%2;
224 2 sec_temp=sec;
225 2 min_temp=min;
226 2 hour_temp=hour;
227 2 if((hour_temp==hour_alarm)&&(min_temp==min_alarm)&&(sec_temp==sec_alarm))
228 2 {TR1=1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -