编写程序,按键a,启动秒表,从0开始显示时间秒,每秒+1,循环显示范围0-59
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP KEY1
ORG 0013H
AJMP KEY2
ORG 001BH
AJMP TIMER1
ORG 0100H
MAIN:
LCALL INIT
MAIN1:
LCALL BCD
LCALL DISPLAY
AJMP MAIN1
INIT: MOV TMOD,#10H
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
SETB TR1
SETB IT0
SETB IT1
MOV IE,#8DH
MOV R7, #0
MOV 40H,#59
MOV 41H,#50
RET
KEY1: CLR TR1
INC 40H
MOV A,40H
CJNE A,#60,KEND1
MOV 40H,#0
KEND1:
LCALL DELAY1
SETB TR1
RETI
KEY2: CLR TR1
INC 41H
MOV A,41H
CJNE A,#60,KEND2
MOV 41H,#0
KEND2:
LCALL DELAY1
SETB TR1
RETI
TIMER1:
INC R7
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
CJNE R7,#100,CLEND
MOV R7,#0
INC 41H
MOV A,41H
CJNE A,#60,CLEND
MOV 41H,#0
INC 40H
MOV A,40H
CJNE A,#60,CLEND
MOV 40H,#0
CLEND: RETI
BCD: MOV A,40H
MOV B,#10
DIV AB
MOV 30H,A
MOV 31H,B
MOV A,41H ;S
MOV B,#10
DIV AB
MOV 32H,A
MOV 33H,B
RET
DISPLAY:
MOV DPTR,#TAB
MOV R0,#30H
MOV R1,#0EFH
MOV R2,#4
DLOOP:
MOV A,@ R0
MOVC A,@ A+DPTR
CJNE R0,#31H,NEXT
ORL A,#80H
NEXT:
MOV P0,A
MOV P1,R1
LCALL DELAY
MOV P1,#0FFH
INC R0
MOV A,R1
RL A
MOV R1,A
DJNZ R2,DLOOP
RET
DELAY:
MOV R6,#50
DJNZ R6,$
RET
DELAY1:
MOV R6,#250
DE1:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DE1
RET
TAB:
DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,40H
END
-