DS1302+AT89S51构成的万年历(源程序二);
************************** 字库 ****************************
;字库( 0 1 2 3 4 5 6 7 8 9
TAB_DIS: DB 003H,09FH,025H,00DH,099H,049H,041H,01FH,001H,009H
DB 0FFH,0FDH,07FH,073H,071H,013H,
;************************************************************
; 延时子程序
;入口信息: LIANG_DU
;出口信息: 无
;影响资源: R7.
;占用资源: LIANG_DU
;************************************************************
DELAY_1: NOP;
MOV R2,#2;
DELAY1: MOV R7,LIANG_DU; LIANG_DU的值越大,数码管越亮.
DELAY2: DJNZ R7,DELAY2;
DJNZ R2,DELAY1;
RET;
;***********************************************************
; 十位为0时不显示子程序 (星期为0时用8表示)
;入口信息:MONTH_S,DATE_S,NONG_MONTH_S,NONG_DATE_S,TEMP_S,WEEK.
;出口信息:MONTH_S,DATE_S,NONG_MONTH_S,NONG_DATE_S,TEMP_S,WEEK.
;影响资源:A,PSW,
;占用资源:MONTH_S,DATE_S,NONG_MONTH_S,NONG_DATE_S,TEMP_S,WEEK.
;***********************************************************
IS_0_NO_DIS: MOV A,MONTH_S;
CJNE A,#00H,NO_DIS_1;
MOV MONTH_S,#0AH;
NO_DIS_1: MOV A,DATE_S;
CJNE A,#00H,NO_DIS_2;
MOV DATE_S,#0AH;
NO_DIS_2: MOV A,NONG_MONTH_S;
CJNE A,#00H,NO_DIS_3;
MOV NONG_MONTH_S,#0AH;
NO_DIS_3: MOV A,NONG_DATE_S;
CJNE A,#00H,NO_DIS_4;
MOV NONG_DATE_S,#0AH;
NO_DIS_4: MOV A,TEMP_S;
CJNE A,#00H,WEEK_0_8;
MOV TEMP_S,#0AH;
WEEK_0_8: MOV A,NONG_MONTH_S;
CJNE A,#08H,WEEK_0_9;
MOV NONG_MONTH_S,#0AH;
WEEK_0_9: MOV A,WEEK;
CJNE A,#00H,NO_DIS_END;
MOV WEEK,#08H;
NO_DIS_END: RET;
;*********************************************************
; 没有键按下,二.三十秒之后,回到原来的状态 子程序
;*********************************************************
ADJUST_TIME: NOP;
INC TIME_1;
MOV A,TIME_1;
CJNE A,#10,END_ADJUST_TIME;
MOV KEY_1_TIMES,#00H;
END_ADJUST_TIME: RET;
;**********************************************************
; 闪动子程序 (调整时间的大小时,调整那个那个就要一闪一闪的,
认我知道要调整的是那个。)
;入口信息:
;出口信息:
;影响资源:A,PSW,SP,
;占用资源:
;********************************************************
SHAN_DONG: NOP;
MOV A,KEY_1_TIMES;
KEY_DIS_0: CJNE A,#0,KEY_DIS_1;
ACALL DISPLAY; 正常显示
AJMP END_SHAN_DONG;
KEY_DIS_1: CJNE A,#1,KEY_DIS_2;













