📄 ds12887.lst
字号:
C51 COMPILER V7.06 DS12887 03/17/2021 18:15:37 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS12887
OBJECT MODULE PLACED IN ds12887.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ds12887.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <REG51.H>
2 #include <ABSACC.H>
3 #define uchar unsigned char
4 #define uint unsigned int
5 //============================
6 #define C8155 XBYTE[0x7000]
7 #define PA XBYTE[0x7001]
8 #define PB XBYTE[0x7002]
9 #define PC XBYTE[0x7003]
10 //============================
11 #define sec XBYTE[0x8000]
12 #define min XBYTE[0x8002]
13 #define hou XBYTE[0x8004]
14 #define week XBYTE[0x8006]
15 #define day XBYTE[0x8007]
16 #define mon XBYTE[0x8008]
17 #define year XBYTE[0x8009]
18 #define cent XBYTE[0x8032]
19 #define DS12887A XBYTE[0x800a]
20 #define DS12887B XBYTE[0x800b]
21 #define DS12887C XBYTE[0x800c]
22 //===============================
23 sbit set_inc=P1^0;
24 sbit set_dec=P1^1;
25 sbit inc=P1^2;
26 sbit dec=P1^3;
27 uchar disbit;
28 bit flag;
29 uchar SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,
30 0x6d,0x7d,0x07,0x7f,0x6f};
31 uchar code act_PB[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
32 uchar code act_PC[5]={0xfe,0xfd,0xfb,0xf7,0xef};
33 char ms=0;
34 char data ram_year,ram_mon,ram_day,ram_week,ram_hou,ram_min,ram_sec;
35 void scan_key(void);
36 void delay(uint k);
37 void wr_time(void);
38 void rd_time(void);
39 /******************************/
40 void init_timer0(void)
41 {
42 1 TH0=-(2000/256);
43 1 TL0=-(2000%256);
44 1 TR0=1;
45 1 }
46
47 //***********************
48 void init(void)
49 { init_timer0();
50 1 EA=1;ET0=1;
51 1 C8155=0x0f;
52 1 DS12887A=0x20;
53 1 }
54
55
C51 COMPILER V7.06 DS12887 03/17/2021 18:15:37 PAGE 2
56 /**********************************/
57 void time_dis(uchar disbit)
58 {uchar y_week;
59 1 switch(disbit)
60 1 {
61 2 case 0:{PA=SEG7[ram_sec%10];}break;
62 2 case 1:{PA=SEG7[ram_sec/10];}break;
63 2 case 2:{PA=SEG7[ram_min%10];}break;
64 2 case 3:{PA=SEG7[ram_min/10];}break;
65 2 case 4:{PA=SEG7[ram_hou%10];}break;
66 2 case 5:{PA=SEG7[ram_hou/10];}break;
67 2 case 6:{if(ram_week==1)y_week=9;
68 3 else y_week=ram_week;PA=SEG7[y_week-1];}break;
69 2 case 7:{PA=SEG7[ram_day%10];}break;
70 2 case 8:{PA=SEG7[ram_day/10];}break;
71 2 case 9:{PA=SEG7[ram_mon%10];}break;
72 2 case 10:{PA=SEG7[ram_mon/10];}break;
73 2 case 11:{PA=SEG7[ram_year%10];}break;
74 2 case 12:{PA=SEG7[ram_year/10];}break;
75 2 default:break;
76 2 }
77 1 }
78 /****************************************/
79 void min_dis(uchar disbit)
80 {uchar y_week;
81 1 switch(disbit)
82 1 {
83 2 case 0:{PA=SEG7[ram_sec%10];}break;
84 2 case 1:{PA=SEG7[ram_sec/10];}break;
85 2 case 2:{PA=SEG7[ram_min%10]&0x7f;}break;
86 2 case 3:{PA=SEG7[ram_min/10]&0x7f;}break;
87 2 case 4:{PA=SEG7[ram_hou%10];}break;
88 2 case 5:{PA=SEG7[ram_hou/10];}break;
89 2 case 6:{if(ram_week==1)y_week=9;
90 3 else y_week=ram_week;PA=SEG7[y_week-1];}break;
91 2 case 7:{PA=SEG7[ram_day%10];}break;
92 2 case 8:{PA=SEG7[ram_day/10];}break;
93 2 case 9:{PA=SEG7[ram_mon%10];}break;
94 2 case 10:{PA=SEG7[ram_mon/10];}break;
95 2 case 11:{PA=SEG7[ram_year%10];}break;
96 2 case 12:{PA=SEG7[ram_year/10];}break;
97 2 default:break;
98 2 }
99 1 }
100 /***************************************/
101 void hou_dis(uchar disbit)
102 {uchar y_week;
103 1 switch(disbit)
104 1 {
105 2 case 0:{PA=SEG7[ram_sec%10];}break;
106 2 case 1:{PA=SEG7[ram_sec/10];}break;
107 2 case 2:{PA=SEG7[ram_min%10];}break;
108 2 case 3:{PA=SEG7[ram_min/10];}break;
109 2 case 4:{PA=SEG7[ram_hou%10]&0x7f;}break;
110 2 case 5:{PA=SEG7[ram_hou/10]&0x7f;}break;
111 2 case 6:{if(ram_week==1)y_week=9;
112 3 else y_week=ram_week;PA=SEG7[y_week-1];}break;
113 2 case 7:{PA=SEG7[ram_day%10];}break;
114 2 case 8:{PA=SEG7[ram_day/10];}break;
115 2 case 9:{PA=SEG7[ram_mon%10];}break;
116 2 case 10:{PA=SEG7[ram_mon/10];}break;
117 2 case 11:{PA=SEG7[ram_year%10];}break;
C51 COMPILER V7.06 DS12887 03/17/2021 18:15:37 PAGE 3
118 2 case 12:{PA=SEG7[ram_year/10];}break;
119 2 default:break;
120 2 }
121 1 }
122 /***************************************/
123 void week_dis(uchar disbit)
124 {uchar y_week;
125 1 switch(disbit)
126 1 {
127 2 case 0:{PA=SEG7[ram_sec%10];}break;
128 2 case 1:{PA=SEG7[ram_sec/10];}break;
129 2 case 2:{PA=SEG7[ram_min%10];}break;
130 2 case 3:{PA=SEG7[ram_min/10];}break;
131 2 case 4:{PA=SEG7[ram_hou%10];}break;
132 2 case 5:{PA=SEG7[ram_hou/10];}break;
133 2 case 6:{if(ram_week==1)y_week=9;
134 3 else y_week=ram_week;PA=SEG7[y_week-1]&0x7f;}break;
135 2 case 7:{PA=SEG7[ram_day%10];}break;
136 2 case 8:{PA=SEG7[ram_day/10];}break;
137 2 case 9:{PA=SEG7[ram_mon%10];}break;
138 2 case 10:{PA=SEG7[ram_mon/10];}break;
139 2 case 11:{PA=SEG7[ram_year%10];}break;
140 2 case 12:{PA=SEG7[ram_year/10];}break;
141 2 default:break;
142 2 }
143 1 }
144 /**************************************/
145 void day_dis(uchar disbit)
146 {uchar y_week;
147 1 switch(disbit)
148 1 {
149 2 case 0:{PA=SEG7[ram_sec%10];}break;
150 2 case 1:{PA=SEG7[ram_sec/10];}break;
151 2 case 2:{PA=SEG7[ram_min%10];}break;
152 2 case 3:{PA=SEG7[ram_min/10];}break;
153 2 case 4:{PA=SEG7[ram_hou%10];}break;
154 2 case 5:{PA=SEG7[ram_hou/10];}break;
155 2 case 6:{if(ram_week==1)y_week=9;
156 3 else y_week=ram_week;PA=SEG7[y_week-1];}break;
157 2 case 7:{PA=SEG7[ram_day%10]&0x7f;}break;
158 2 case 8:{PA=SEG7[ram_day/10]&0x7f;}break;
159 2 case 9:{PA=SEG7[ram_mon%10];}break;
160 2 case 10:{PA=SEG7[ram_mon/10];}break;
161 2 case 11:{PA=SEG7[ram_year%10];}break;
162 2 case 12:{PA=SEG7[ram_year/10];}break;
163 2 default:break;
164 2 }
165 1 }
166 /********************************************/
167 void mon_dis(uchar disbit)
168 {uchar y_week;
169 1 switch(disbit)
170 1 {
171 2 case 0:{PA=SEG7[ram_sec%10];}break;
172 2 case 1:{PA=SEG7[ram_sec/10];}break;
173 2 case 2:{PA=SEG7[ram_min%10];}break;
174 2 case 3:{PA=SEG7[ram_min/10];}break;
175 2 case 4:{PA=SEG7[ram_hou%10];}break;
176 2 case 5:{PA=SEG7[ram_hou/10];}break;
177 2 case 6:{if(ram_week==1)y_week=9;
178 3 else y_week=ram_week;PA=SEG7[y_week-1];}break;
179 2 case 7:{PA=SEG7[ram_day%10];}break;
C51 COMPILER V7.06 DS12887 03/17/2021 18:15:37 PAGE 4
180 2 case 8:{PA=SEG7[ram_day/10];}break;
181 2 case 9:{PA=SEG7[ram_mon%10]&0x7f;}break;
182 2 case 10:{PA=SEG7[ram_mon/10]&0x7f;}break;
183 2 case 11:{PA=SEG7[ram_year%10];}break;
184 2 case 12:{PA=SEG7[ram_year/10];}break;
185 2 default:break;
186 2 }
187 1 }
188 /****************************************/
189 void year_dis(uchar disbit)
190 {uchar y_week;
191 1 switch(disbit)
192 1 {
193 2 case 0:{PA=SEG7[ram_sec%10];}break;
194 2 case 1:{PA=SEG7[ram_sec/10];}break;
195 2 case 2:{PA=SEG7[ram_min%10];}break;
196 2 case 3:{PA=SEG7[ram_min/10];}break;
197 2 case 4:{PA=SEG7[ram_hou%10];}break;
198 2 case 5:{PA=SEG7[ram_hou/10];}break;
199 2 case 6:{if(ram_week==1)y_week=9;
200 3 else y_week=ram_week;PA=SEG7[y_week-1];}break;
201 2 case 7:{PA=SEG7[ram_day%10];}break;
202 2 case 8:{PA=SEG7[ram_day/10];}break;
203 2 case 9:{PA=SEG7[ram_mon%10];}break;
204 2 case 10:{PA=SEG7[ram_mon/10];}break;
205 2 case 11:{PA=SEG7[ram_year%10]&0x7f;}break;
206 2 case 12:{PA=SEG7[ram_year/10]&0x7f;}break;
207 2 default:break;
208 2 }
209 1 }
210 /****************************************/
211 void time0(void) interrupt 1 using 1
212 {static uchar disbit;
213 1 TH0=-(2000/256);
214 1 TL0=-(2000%256);
215 1 PB=0xff;PC=0xff;
216 1 switch(ms)
217 1 {
218 2 case 0:{time_dis(disbit);}break;
219 2 case 1:{min_dis(disbit);}break;
220 2 case 2:{hou_dis(disbit);}break;
221 2 case 3:{week_dis(disbit);}break;
222 2 case 4:{day_dis(disbit);}break;
223 2 case 5:{mon_dis(disbit);}break;
224 2 case 6:{year_dis(disbit);}break;
225 2 default:break;
226 2 }
227 1 disbit++;
228 1 if(disbit>12)disbit=0;
229 1 if(disbit<8){PB=act_PB[disbit];PC=0xff;}
230 1 else {PB=0xff;PC=act_PC[disbit-8];}
231 1 }
232 /***********************************/
233 void main(void)
234 {
235 1 init();
236 1 rd_time();
237 1 while(1)
238 1 {
239 2 scan_key();
240 2 if(ms==0){
241 3 if(flag){wr_time();flag=0;}
C51 COMPILER V7.06 DS12887 03/17/2021 18:15:37 PAGE 5
242 3 else rd_time();
243 3 }
244 2 }
245 1 }
246 /*****************************************/
247 void wr_time(void)
248 {
249 1 DS12887B=0x86;
250 1 year=ram_year;mon=ram_mon;day=ram_day;
251 1 week=ram_week;hou=ram_hou;min=ram_min;
252 1 DS12887B=0x06;
253 1 }
254 /*******************************************/
255 void rd_time(void)
256 {
257 1 uchar data temp,x;
258 1 do{temp=DS12887A;x=temp|0x7f;}while(x==0xff);
259 1 ram_year=year;ram_mon=mon;ram_day=day;
260 1 ram_week=week;ram_hou=hou;ram_min=min;ram_sec=sec;
261 1 }
262 /*****************************************/
263 void scan_key(void)
264 {
265 1 if(!set_inc){ms++;delay(200);if(ms>6)ms=0;}
266 1 if(!set_dec){ms--;delay(200);if(ms<0)ms=6;}
267 1 if(ms==1){flag=1;if(!inc){ram_min++;if(ram_min>59)ram_min=59;delay(200);}
268 2 if(!dec){ram_min--;if(ram_min<1)ram_min=1;delay(200);} }
269 1 if(ms==2){ if(!inc){ram_hou++;if(ram_hou>23)ram_hou=23;delay(200);}
270 2 if(!dec){ram_hou--;if(ram_hou<0)ram_hou=0;delay(200);} }
271 1 if(ms==3){ if(!inc){ram_week++;if(ram_week>7)ram_week=7;delay(200);}
272 2 if(!dec){ram_week--;if(ram_week<1)ram_week=1;delay(200);} }
273 1 if(ms==4){ if(!inc){ram_day++;if(ram_day>31)ram_day=31;delay(200);}
274 2 if(!dec){ram_day--;if(ram_day<1)ram_day=1;delay(200);} }
275 1 if(ms==5){ if(!inc){ram_mon++;if(ram_mon>12)ram_mon=12;delay(200);}
276 2 if(!dec){ram_mon--;if(ram_mon<1)ram_mon=1;delay(200);} }
277 1 if(ms==6){flag=1;if(!inc){ram_year++;if(ram_year>99)ram_year=99;delay(200);}
278 2 if(!dec){ram_year--;if(ram_year<0)ram_day=0;delay(200);} }
279 1 }
280 /********************************************************/
281 void delay(uint k)
282 {
283 1 uint i,j;
284 1 for(i=0;i<k;i++){
285 2 for(j=0;j<60;j++)
286 2 {;}}
287 1 }
288 /*****************end********************/
289
290
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2087 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 ----
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 + -