KEY_CNT EQU 46H ;对应的P2口0-5的数字
LINE EQU 47H ;行
ROW EQU 48H ;列
VAL EQU 49H ;存放键盘扫描的数
HC1 EQU 4AH ;缓冲1
HC2 EQU 4BH ;2
HC3 EQU 4CH ;3
HC4 EQU 4DH ;4
HC5 EQU 4EH ;5
HC6 EQU 4FH ;6 HC6定义为4FH
MINUTE EQU 50H
SECOND EQU 51H
SHU EQU 52H
SHU2 EQU 53H
BIAOZHI EQU 54H
SHU3 EQU 55H
KSCS EQU 56H
KSCS2 EQU 57H
DKSJS EQU 58H
JSQ EQU 5AH
ORG 0000H;主程序入口地址
LJMP MAIN
ORG 0003H
LJMP WBZD
ORG 000BH
LJMP ITOP;中断入口地址
ORG 00C0H
MAIN: MOV SP,#90H ;设置中断指针SP
MOV TMOD,#01H;T0方式1
MOV 20H,#02H;中断次数
MOV MINUTE,#3BH;MINURE=59
MOV SECOND,#00H;SECOND=0
CLR A;A清零
MOV 40H,A;40H=00
MOV 41H,A;41H=00
MOV 42H,A;秒
CLR IT0;外部中断请求0为电平触发方式
SETB ET0;允许T0中断
SETB EA;开中断
SETB TR0;启动T0
MOV P1,#00H;P1口置0
MOV P2,#00H
MOV DKSJS,#60H;
MOV SHU3,#30H
MOV TH0,#3CH;设置T0高八位值
MOV TL0,#0B0H;T0低八位值
MOV A,#80H;10000000B
MOV DPTR,#00003H;数据指针DPTR=00003H
MOVX @DPTR,A;80H送至地址为0003H
MOV KEY_CNT,#00H
MOV SHU,#0FH;00001111B
MOV SHU2,#0FH;00001111B
MOV 59H,#01H;00000001B
HERE2: LCALL SHOW;调用子程序SHOW
LCALL JISHI
;P2.0为显示10分钟没按输出键P2.1为显示1小时次数P2.2显示小时对应时间
MOV A,P2
CJNE A,#01H,A1
LJMP J5;转移至J5
A1: CJNE A,#02H,A2;A不为02H,则转移至A2
LJMP J7
A2: CJNE A,#04H,A3;A不为02H,则转移至A3
LJMP J18
A3: LJMP HERE2
J3: CJNE A,#0AH,J4
J5: MOV A, R4
MOV B,#0AH
DIV AB ;AB相除,商送入A
MOV KSCS,A;A中的数据送入KSCS
MOV A,B
MOV KSCS2,A
MOV A,#0EFH;1
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,KSCS
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0DFH;2
MOV DPTR,#00000H
MOVX @DPTR,A;将DFH送入片外以0000H为地址的单元
MOV A,KSCS2
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
DJNZ SHU3,J5;SHU3减1,不为0则转J5
MOV SHU3,#30H
LJMP HERE2
J4: CJNE A,#0DH,J6
J7: MOV A, R5
MOV B,#0AH
DIV AB ;AB相除,商送入A
MOV KSCS,A
MOV A,B
MOV KSCS2,A
MOV A,#0EFH;1
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,KSCS
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0DFH;2
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,KSCS2
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
DJNZ SHU3,J7
MOV SHU3,#30H
AAAA: LJMP HERE2
J6: CJNE A,#0EH,J8
J18: MOV JSQ,R5
J9: MOV A,JSQ
MOV B,#03H
MUL AB;AB相乘,送A
MOV R1,A
MOV A,R0
SUBB A,R1;A与R1相减,差送入A
MOV R1,A
MOV A,@R1
MOV B,#0AH
DIV AB
MOV HC1,A
MOV A,B
MOV HC2,A
INC R1;R1加1
MOV A,@R1
MOV B,#0AH
DIV AB
MOV HC3,A
MOV A,B
MOV HC4,A
INC R1
MOV A,@R1
MOV B,#0AH
DIV AB
MOV HC5,A
MOV A,B
MOV HC6,A
LCALL SHOW1
DJNZ SHU3,J9
MOV SHU3,#30H
DJNZ JSQ,J10
LJMP HERE2
J10: INC DKSJS;加1
INC DKSJS
INC DKSJS
LJMP J9
J8: LCALL SOUNDER
LJMP HERE2
SHOW: MOV A,40H
MOV B,#0AH
DIV AB
MOV HC1,A
MOV A,B
MOV HC2,A
MOV A,41H
MOV B,#0AH
DIV AB
MOV HC3,A
MOV A,B
MOV HC4,A
MOV A,42H
MOV B,#0AH
DIV AB
MOV HC5,A
MOV A,B
MOV HC6,A
SHOW1: MOV A,#0FEH;1数码管功能
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,HC1
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0FDH;2
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,HC2
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0FBH;3
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,HC3
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0F7H;4
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,HC4
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0EFH;5
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,HC5
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
MOV A,#0DFH;6
MOV DPTR,#00000H
MOVX @DPTR,A
MOV A,HC6
LCALL TOLED
MOV DPTR,#00001H
MOVX @DPTR,A
LCALL DLY_S
RET
TOLED: MOV DPTR,#0700H;读表,数据送A
MOVC A, @A+DPTR;2
RET;子程序返回
DLY_S: MOV R6,#10
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
**********************************
SOUNDER:SETB P1.2;蜂鸣器1,柔和的声音
MOV R6,#0FFH
SOUND: MOV R7,#0FFH
DJNZ R7,$
CPL P1.2
DJNZ R6,SOUND
RET
SOUNDER2:SETB P1.2;蜂鸣器2,比较急促声音
SOUND2: MOV R7,#0AFH
DJNZ R7,$
CPL P1.2
DJNZ R6,SOUND2
RET
SOUNDER3:SETB P1.2;蜂鸣器3,尖锐的声音
MOV R6,#0FFH
SOUND3: MOV R7,#05FH
DJNZ R7,$
CPL P1.2
DJNZ R6,SOUND3
RET
************************************
REDLIGHT:SETB P1.0;红灯点亮
MOV R6,#0FFH
RED: MOV R7,#0FFH
DJNZ R7,$
CPL P1.0
DJNZ R6,RED
RET
YELLOWLIGHT:SETB P1.1;黄灯点亮
MOV R6,#0FFH
YELLOW: MOV R7,#0FFH
DJNZ R7,$
CPL P1.1
DJNZ R6,YELLOW;R6减1,不为0则转
RET
***********************************
JISHI: MOV R3,5BH;
CJNE R3,#01H,ZZZZ
LCALL SOUNDER3;开蜂鸣器3
ZZZZ: MOV A,MINUTE
MOV B,#0AH
DIV AB;AB相除,商送A
CJNE A,#00H,KKKK ;判断MINUTE是否>10,否则无任何操作
CLR EX0;禁止外部中断0中断
MOV 59H,#01H;59H=1
RET
KKKK: CJNE A,#06H,MMMM ;不为60则开始计时,满60秒置1分钟
MOV A,B
CJNE A,#01H,SSAA
MOV MINUTE,#01H
SSAA: MOV A,59H
CJNE A,#01H,YYYY
MOV R0,DKSJS
MOV A,40H
MOV @R0,A;A送入以R0中的内容为地址的单元
INC R0
MOV A,41H
MOV @R0,A
INC R0
MOV A,42H
MOV @R0,A
INC R0
MOV DKSJS,R0
INC R5
DEC 59H;59H减1
SETB EX0;开外部中断0
MOV 5BH,#01H
YUYU: MOV A,SHU
CJNE A,#00H,ERER ;判断是否按下了复位键
CLR P1.0;黄灯灭
RET
ERER: LCALL REDLIGHT;红灯亮
DEC SHU ;52H-1
AJMP YUYU
MMMM: MOV A,B
CJNE A,#00H,NNNN ;个�