能用protues仿真但上不了板子
代码如下:
ORG 0000H
AJMP TOU
ORG 000BH
;外部中断0入口地址
LJMP MIAO
ORG 0030H;定时器中0断入口地址
TOU: MOV P3,#00H
MOV P2,#00H
SETB P2.5
MOV R3, #00H
MOV R4, #00H
MOV R5, #00H
MOV R6, #00H
START: JNB P3.3,START
MOV TMOD, #01H;定时器0工作在方式1
MOV TL0, #0B0H;初始值为3CB0H, 即计数50000次
MOV TH0, #3CH
SETB IT0
SETB EA;总中断EA=1
SETB ET0;定时器TO的溢出中断允许控制位
SETB TR0;定时器0开始计数
SETB EX0;外部中断0中断请求允许控制位
S1: LCALL XS
SJMP S1;短跳转
MIAO: MOV TL0, #0B0H
MOV TH0, #3CH
INC R3
CJNE R3, #0AH, NEXT;判断毫秒值是否为10
MOV R3, #00H
INC R4
CJNE R4, #0AH, NEXT;判断个位秒值是否为10
MOV R4, #00H
INC R5
CJNE R5, #06H, NEXT;判断十位秒值是否为6
MOV R5, #00H
INC R6
CJNE R6, #0AH, NEXT;判断分值是否为10
MOV R3, #00H
MOV R4, #00H
MOV R5, #00H
MOV R6, #00H
NEXT: LCALL XS;调用显示子程序
RETI;中断返回
XS: MOV DPTR , #TAB
SETB P2.1
MOV P0,#07H
CLR P2.1
MOV A, R3
MOVC A, @A+DPTR;查得 字形码
SETB P2.0
MOV P0, A
CLR P2.0
LCALL DEL;调用延时子程序
SETB P2.1
MOV P0,#0BH
CLR P2.1
SETB P2.0
MOV A, R4
MOVC A, @A+DPTR;查得字形码
MOV P0,A
CLR P2.0
LCALL DEL;调用延时子程序
SETB P2.1
MOV P0,#0DH
CLR P2.1
SETB P2.0
MOV A, R5
MOVC A, @A+DPTR;查得字形码
MOV P0,A
CLR P2.0
LCALL DEL;调用延时子程序
SETB P2.1
MOV P0,#0EH
CLR P2.1
SETB P2.0
MOV A, R6
MOVC A, @A+DPTR;查得字形码
MOV P0,A
CLR P2.0
LCALL DEL;调用延时子程序
RET
S2: LCALL XS
JNB P3.3, S2;P3. 3为跳转到S2
SETB TR0;开定时器 0
SETB ET0
RETI
DEL:
MOV R1,#10
DE: MOV R2, #50
DJNZ R2,$
DJNZ R1, DE
RET
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
END