📄 定时闹钟.lst
字号:
204 4 case 0xed: k=4; break;
205 4 case 0xdd: k=5; break;
206 4 case 0xbd: k=6; break;
207 4 case 0x7d: k=7; break;
208 4 case 0xeb: k=8; break;
209 4 case 0xdb: k=9; break;
210 4 case 0xbb: k=10;break;
211 4 case 0x7b: k=11;break;
212 4 case 0xe7: k=12;break;
213 4 case 0xd7: k=13;break;
214 4 case 0xb7: k=14;break;
215 4 case 0x77: k=15;break;
216 4 }
217 3 }
218 2 }
219 1 }
220
221
222 /**************定时时间处理*************/
223 void time_deal(void)
224 { //0
225 1 if(( SET_hour[0]>0)||(SET_minite[0]>0))
226 1 { K0=1;
227 2 if(time1.Second==0)
228 2 {
229 3 if(D_0==1)
230 3 {
231 4 D_0=0;
232 4 if(SET_minite[0]==0)
233 4 { SET_minite[0]=60;
234 5 if(SET_hour[0]==0)SET_hour[0]=0;
235 5 SET_hour[0]--;
C51 COMPILER V8.02 定时闹钟 06/03/2008 22:08:20 PAGE 5
236 5 }
237 4 SET_minite[0]--;
238 4 }
239 3 }
240 2 else if(time1.Second==1)D_0=1;
241 2 }
242 1 else K0=0;
243 1 //1
244 1 if(( SET_hour[1]>0)||(SET_minite[1]>0))
245 1 { K1=1;
246 2 if(time1.Second==0)
247 2 {
248 3 if(D_1==1)
249 3 {
250 4 D_1=0;
251 4 if(SET_minite[1]==0)
252 4 { SET_minite[1]=60;
253 5 if(SET_hour[1]==0)SET_hour[1]=0;
254 5 SET_hour[1]--;
255 5 }
256 4 SET_minite[1]--;
257 4 }
258 3 }
259 2 else if(time1.Second==1)D_1=1;
260 2 }
261 1 else K1=0;
262 1 //2
263 1 if(( SET_hour[2]>0)||(SET_minite[2]>0))
264 1 { K2=1;
265 2 if(time1.Second==0)
266 2 {
267 3 if(D_2==1)
268 3 {
269 4 D_2=0;
270 4 if(SET_minite[2]==0)
271 4 { SET_minite[2]=60;
272 5 if(SET_hour[2]==0)SET_hour[2]=0;
273 5 SET_hour[2]--;
274 5 }
275 4 SET_minite[2]--;
276 4 }
277 3 }
278 2 else if(time1.Second==1)D_2=1;
279 2 }
280 1 else K2=0;
281 1 //3
282 1 if(( SET_hour[3]>0)||(SET_minite[3]>0))
283 1 { K3=1;
284 2 if(time1.Second==0)
285 2 {
286 3 if(D_3==1)
287 3 {
288 4 D_3=0;
289 4 if(SET_minite[3]==0)
290 4 { SET_minite[3]=60;
291 5 if(SET_hour[3]==0)SET_hour[3]=0;
292 5 SET_hour[3]--;
293 5 }
294 4 SET_minite[3]--;
295 4 }
296 3 }
297 2 else if(time1.Second==1)D_3=1;
C51 COMPILER V8.02 定时闹钟 06/03/2008 22:08:20 PAGE 6
298 2 }
299 1 else K3=0;
300 1 //4
301 1 if(( SET_hour[4]>0)||(SET_minite[4]>0))
302 1 { K4=1;
303 2 if(time1.Second==0)
304 2 {
305 3 if(D_4==1)
306 3 {
307 4 D_4=0;
308 4 if(SET_minite[4]==0)
309 4 { SET_minite[4]=60;
310 5 if(SET_hour[4]==0)SET_hour[4]=0;
311 5 SET_hour[4]--;
312 5 }
313 4 SET_minite[4]--;
314 4 }
315 3 }
316 2 else if(time1.Second==1)D_4=1;
317 2 }
318 1 else K4=0;
319 1 //5
320 1 if(( SET_hour[5]>0)||(SET_minite[5]>0))
321 1 { K5=1;
322 2 if(time1.Second==0)
323 2 {
324 3 if(D_5==1)
325 3 {
326 4 D_5=0;
327 4 if(SET_minite[5]==0)
328 4 { SET_minite[5]=60;
329 5 if(SET_hour[5]==0)SET_hour[5]=0;
330 5 SET_hour[5]--;
331 5 }
332 4 SET_minite[5]--;
333 4 }
334 3 }
335 2 else if(time1.Second==1)D_5=1;
336 2 }
337 1 else K5=0;
338 1 }
339 /****************加一函数***************/
340
341 unsigned char add(unsigned char temp,unsigned char max)
342 {
343 1 temp++;
344 1 if(temp>max)
345 1 {
346 2 temp=0;
347 2 }
348 1 return temp;
349 1 }
350 /************主函数*************/
351 void main()
352 {
353 1 unsigned char i;
354 1
355 1 lcd_init();
356 1 Initial_DS1302();
357 1 while(1)
358 1 {
359 2 P2=0xff;
C51 COMPILER V8.02 定时闹钟 06/03/2008 22:08:20 PAGE 7
360 2 DS1302_GetTime(&time1); //读取时间参数
361 2 REA_time[9]=(time1.Second)%10; //把秒的个位数据存入time[5]
362 2 REA_time[8]=(time1.Second)/10; //把秒的十位数据存入time[4]
363 2 REA_time[7]=(time1.Minute)%10; //把分的个位数据存入time[3]
364 2 REA_time[6]=(time1.Minute)/10; //把分的十位数据存入time[2]
365 2 REA_time[5]=(time1.Hour)%10; //把时的个位数据存入time[1]
366 2 REA_time[4]=(time1.Hour)/10; //把时的十位数据存入time[0]
367 2 REA_time[3]=(time1.Day)%10; //同上
368 2 REA_time[2]=(time1.Day)/10;
369 2 REA_time[1]=(time1.Month)%10;
370 2 REA_time[0]=(time1.Month)/10;
371 2
372 2 time_deal();
373 2 Getch();
374 2 switch(k)
375 2 {
376 3 case 0: time1.Month=add(time1.Month,12);DS1302_SetTime(0x88,time1.Month);k=16;break;
377 3 case 1: time1.Day=add(time1.Day,31);DS1302_SetTime(0x86,time1.Day);k=16;break;
378 3 case 2: time1.Hour=add(time1.Hour,24);DS1302_SetTime(0x84,time1.Hour);k=16;break;
379 3 case 3: time1.Minute=add(time1.Minute,59);DS1302_SetTime(0x82,time1.Minute);k=16;break;
380 3 case 4: SET_hour[0]=add(SET_hour[0],99);k=16;break;
381 3 case 5: SET_minite[0]=add(SET_minite[0],59);k=16;break;
382 3 case 6: SET_hour[1]=add(SET_hour[1],99);k=16;break;
383 3 case 7: SET_minite[1]=add(SET_minite[1],59);k=16;break;
384 3 case 8: SET_hour[2]=add(SET_hour[2],99);k=16;break;
385 3 case 9: SET_minite[2]=add(SET_minite[2],59);k=16;break;
386 3 case 10: SET_hour[3]=add(SET_hour[3],99);k=16; break;
387 3 case 11: SET_minite[3]=add(SET_minite[3],59);k=16;break;
388 3 case 12: SET_hour[4]=add(SET_hour[4],99);k=16;break;
389 3 case 13: SET_minite[4]=add(SET_minite[4],59);k=16;break;
390 3 case 14: SET_hour[5]=add(SET_hour[5],99);k=16;break;
391 3 case 15: SET_minite[5]=add(SET_minite[5],59);k=16;break;
392 3 }
393 2 display0();
394 2 for(i=0;i<3;i++)
395 2 {
396 3 display1(0,2+(2*i),i);
397 3 display1(72,2+(2*i),i+3);
398 3 }
399 2
400 2
401 2 }
402 1
403 1 }
404
405
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2340 ----
CONSTANT SIZE = 224 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 81 17
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 + -