📄 ds12c887.lst
字号:
247 4 di();
248 4 switch(s1num)
249 4 {
250 5 case 1: miao++;
251 5 if(miao==60)
252 5 miao=0;
253 5 write_sfm(8,miao);
254 5 write_com(0x80+0x40+8);
255 5 break;
256 5 case 2: fen++;
257 5 if(fen==60)
258 5 fen=0;
259 5 write_sfm(5,fen);
260 5 write_com(0x80+0x40+5);
261 5 break;
262 5 case 3: shi++;
263 5 if(shi==24)
264 5 shi=0;
265 5 write_sfm(2,shi);
266 5 write_com(0x80+0x40+2);
267 5 break;
268 5 case 4: week++;
269 5 if(week==8)
270 5 week=1;
271 5 write_week(13,week);
272 5 write_com(0x80+13);
273 5 break;
274 5 case 5: day++;
275 5 if(day==32)
276 5 day=1;
277 5 write_nyr(10,day);
278 5 write_com(0x80+10);
279 5 break;
280 5 case 6: month++;
281 5 if(month==13)
282 5 month=1;
283 5 write_nyr(7,month);
284 5 write_com(0x80+7);
285 5 break;
286 5 case 7: year++;
287 5 if(year==100)
288 5 year=0;
289 5 write_nyr(4,year);
290 5 write_com(0x80+4);
291 5 break;
292 5 }
293 4 }
294 3 }
295 2 if(s3==0)
296 2 {
297 3 delay(5);
298 3 if(s3==0)
299 3 {
300 4 while(!s3);
301 4 di();
302 4 switch(s1num)
303 4 {
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 6
304 5 case 1: miao--;
305 5 if(miao==-1)
306 5 miao=59;
307 5 write_sfm(8,miao);
308 5 write_com(0x80+0x40+8);
309 5 break;
310 5 case 2: fen--;
311 5 if(fen==-1)
312 5 fen=59;
313 5 write_sfm(5,fen);
314 5 write_com(0x80+0x40+5);
315 5 break;
316 5 case 3: shi--;
317 5 if(shi==-1)
318 5 shi=23;
319 5 write_sfm(2,shi);
320 5 write_com(0x80+0x40+2);
321 5 break;
322 5 case 4: week--;
323 5 if(week==0)
324 5 week=7;
325 5 write_week(13,week);
326 5 write_com(0x80+13);
327 5 break;
328 5 case 5: day--;
329 5 if(day==0)
330 5 day=31;
331 5 write_nyr(10,day);
332 5 write_com(0x80+10);
333 5 break;
334 5 case 6: month--;
335 5 if(month==0)
336 5 month=12;
337 5 write_nyr(7,month);
338 5 write_com(0x80+7);
339 5 break;
340 5 case 7: year--;
341 5 if(year==-1)
342 5 year=99;
343 5 write_nyr(4,year);
344 5 write_com(0x80+4);
345 5 break;
346 5 }
347 4 }
348 3 }
349 2 }
350 1 if(s4==0)
351 1 {
352 2 delay(5);
353 2 if(s4==0)
354 2 {
355 3 flag1=~flag1;
356 3 while(!s4);
357 3 di();
358 3 if(flag1==0)
359 3 {
360 4 flag=0;//当按键第二次按下时取消查看闹钟,此时flag为1,应置0
361 4 write_com(0x80+0x40);
362 4 write_date(' ');
363 4 write_date(' ');
364 4 write_com(0x0c);
365 4 write_ds(1,miao);
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 7
366 4 write_ds(3,fen);
367 4 write_ds(5,shi);
368 4 }
369 3 else
370 3 {
371 4 read_alarm();
372 4 write_com(0x80+0x40);
373 4 write_date('R');
374 4 write_date('i');
375 4 write_com(0x80+0x40+4);
376 4 write_sfm(2,ashi);
377 4 write_sfm(5,afen);
378 4 write_sfm(8,amiao);
379 4 miao=amiao;
380 4 fen=afen;
381 4 shi=ashi;
382 4 }
383 3 }
384 2 }
385 1 }
386 void write_ds(uchar add,uchar date)
387 {
388 1 dscs=0;
389 1 dsas=1;
390 1 dsds=1;
391 1 dsrw=1;
392 1 P0=add;
393 1 dsas=0;
394 1 dsrw=0;
395 1 P0=date;
396 1 dsrw=1;
397 1 dsas=1;
398 1 dscs=1;
399 1 }
400 uchar read_ds(uchar add)
401 {
402 1 uchar ds_date;
403 1 dscs=0;
404 1 dsas=1;
405 1 dsds=1;
406 1 dsrw=1;
407 1 P0=add;
408 1 dsas=0;
409 1 dsds=0;
410 1 P0=0xff;
411 1 ds_date=P0;
412 1 dsds=1;
413 1 dsas=1;
414 1 dscs=1;
415 1 return ds_date;
416 1 }
417 /*void set_time()
418 {
419 write_ds(0,0);
420 write_ds(1,0);
421 write_ds(2,0);
422 write_ds(3,0);
423 write_ds(4,0);
424 write_ds(5,0);
425 write_ds(6,0);
426 write_ds(7,0);
427 write_ds(8,0);
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 8
428 write_ds(9,0);
429 }*/
430 void set_alarm(uchar amiao,uchar afen,uchar ashi)
431 {
432 1 write_ds(1,amiao);
433 1 write_ds(3,afen);
434 1 write_ds(5,ashi);
435 1 }
436 void read_alarm()
437 {
438 1 amiao=read_ds(1);
439 1 afen=read_ds(3);
440 1 ashi=read_ds(5);
441 1 }
442 void main()
443 {
444 1 uchar i;
445 1 init();
446 1 while(1)
447 1 {
448 2 keyscan();
449 2 if(flag_ri==1)
450 2 {
451 3 di();
452 3 delay(100);
453 3 di();
454 3 delay(500);
455 3 }
456 2 if(flag==0&&flag1==0)
457 2 {
458 3 keyscan();
459 3 year=read_ds(9);
460 3 month=read_ds(8);
461 3 day=read_ds(7);
462 3 week=read_ds(6);
463 3 shi=read_ds(4);
464 3 fen=read_ds(2);
465 3 miao=read_ds(0);
466 3 write_sfm(8,miao);
467 3 write_sfm(5,fen);
468 3 write_sfm(2,shi);
469 3 write_week(13,week);
470 3 write_nyr(10,day);
471 3 write_nyr(7,month);
472 3 write_nyr(4,year);
473 3 tempchange();
474 3 for(i=0;i<5;i++)
475 3 {
476 4 wendu(get_temp());
477 4 }
478 3 }
479 2 }
480 1 }
481 void exter() interrupt 2
482 {
483 1 uchar c;
484 1 flag_ri=1;
485 1 c=read_ds(0x0c);
486 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 9
CODE SIZE = 1546 ----
CONSTANT SIZE = 34 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 11
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -