SECOND EQU 40H;
MINUTE EQU 41H;
HOUR EQU 42H;
SECONDGEWEI EQU 43H;
SECONDSHIWEI EQU 44H;
MINUTEGEWEI EQU 45H;
MINUTESHIWEI EQU 46H;
HOURGEWEI EQU 47H;
HOURSHIWEI EQU 48H;
ORG 000H;
SJMP START;
ORG 000BH;
AJMP TIMER0;
ORG 0030H;
;-----初始化START------
START:MOV SP,#60H;
MOV SECOND,#0;
MOV MINUTE,#0;
MOV HOUR,#12;
MOV DPTR,#TAB;
MOV 30H,#0;
MOV TH0,#3CH;
MOV TL0,#0B0H;
MOV TMOD,#00000001B;
MOV TCON,#00010000B;
SETB ET0;
SETB EA;
;-----主程序MAIN------
MAIN: CALL KEY;
CALL PROCESS;
CALL DISPLAY;
SJMP MAIN;
;-----按键子程序KEY-----
KEY: JNB P1.4,HOURJIA;
JNB P1.5,HOURJIAN;
JNB P1.6,MINUTEJIA;
JNB P1.7,MINUTEJIAN;
FANHUI:RET;
HOURJIA: CALL DELAY;
JB P1.4,FANHUI;
JNB P1.4,$;
INC HOUR;
RET;
HOURJIAN: CALL DELAY;
JB P1.5,FANHUI;
JNB P1.5,$;
DEC HOUR;
RET;
MINUTEJIA: CALL DELAY;
JB P1.6,FANHUI;
JNB P1.6,$;
INC MINUTE;
RET;
MINUTEJIAN: CALL DELAY;
JB P1.7,FANHUI;
JNB P1.7,$;
DEC MINUTE;
RET;
;-----处理子程序PROCESS-----
PROCESS: MOV A,SECOND;
MOV B,#10;
DIV AB;
MOV SECONDSHIWEI ,A;
MOV SECONDGEWEI ,B;
MOV A,MINUTE;
MOV B,#10;
DIV AB;
MOV MINUTESHIWEI ,A;
MOV MINUTEGEWEI,B;
MOV A,HOUR;
MOV B,#10;
DIV AB;
MOV HOURSHIWEI ,A;
MOV HOURGEWEI,B;
RET;
;-----显示子程序DISPLAY-----
DISPLAY:MOV A, HOURSHIWEI;
MOVC A,@A+DPTR;
MOV P0,A;
CLR P2.7;
CALL DELAY;
SETB P2.7;
MOV A,HOURGEWEI;
MOVC A,@A+DPTR;
MOV P0,A;
CLR P2.6;
CALL DELAY;
SETB P2.6;
MOV P0,#0BFH;
CLR P2.5;
CALL DELAY;
SETB P2.5;
MOV A, MINUTESHIWEI;
MOVC A,@A+DPTR;
MOV P0,A;
CLR P2.4;
CALL DELAY;
SETB P2.4;
MOV A, MINUTEGEWEI;
MOVC A,@A+DPTR;
MOV P0,A;
CLR P2.3;
CALL DELAY;
SETB P2.3;
MOV P0,#0BFH;
CLR P2.2;
CALL DELAY;
SETB P2.2;
MOV A, SECONDSHIWEI;
MOVC A,@A+DPTR;
MOV P0,A;
CLR P2.1;
CALL DELAY;
SETB P2.1;
MOV A,SECONDGEWEI;
MOVC A,@A+DPTR;
MOV P0,A;
CLR P2.0;
CALL DELAY;
SETB P2.2;
RET;
;-----中断子程序-----
TIMER0:PUSH A;
INC 30H;
MOV A, 30H;
CJNE A,#20,JIXU;
MOV 30H,#0;
INC SECOND;
MOV A,SECOND;
CJNE A,#60,JIXU;
MOV SECOND,#0;
INC MINUTE;
MOV A,MINUTE;
MOV A,#60,JIXU;
MOV MINUTE,#0;
INC HOUR;
MOV A,HOUR;
CJNE A,#24,JIXU;
MOV HOUR,#0;
JIXU: POP A;
MOV TH0,#3CH;
MOV TL0,#0B0H;
RETI;
;-----延时子程序-----
DELAY:MOV R0,#50;
D2: MOV R1,#10;
D1: DJNZ R1, D1;
DJNZ R0, D2;
RET;
;-----显示的段码0-9-----
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;
DB 92H,82H,0F8H,80H,90H,0BFH;
END;
|