要求:
(1)4位数码动态显示,最低位按1/10秒计数,最高计数单位为9.59.9。
(2)用开关K0控制秒表的启动、停止、清零功能,按一次启动计时,按一次停止,再按一次清零,在三个状态中循环。
(3)要求K0使用外部中断,优先级高于T0的优先级。
悬赏分:5 | 解决时间:2011-6-19 15:59
;====================================================
最佳答案:
所使用的电路可见:
http://xiangce.baidu.com/picture/detail/e0e3dcca6a23826c17c97c512f075f13e02d51f6
下列程序已经调试通过,
ORG 0000H
JMP MAIN
ORG 0003H
JMP X0_INT
ORG 000BH
JMP T0_INT
;---------------------------------------
X0_INT:
INC R0
CJNE R0, #1, STOP
SETB TR0
RETI
;---------------------
STOP:
CJNE R0, #2, R0_0
CLR TR0
RETI
;---------------------
R0_0:
CLR A
MOV R0, A
MOV R1, A
MOV R2, A
MOV R3, A
MOV R4, A
MOV R5, A
MOV R6, A
RETI
;---------------------------------------
T0_INT:
MOV TL0, #(55536 MOD 256)
MOV TH0, #(55536 / 256)
INC R2 ;百分之一秒.
CJNE R2, #10, T0_E
MOV R2, #0
INC R3 ;十分之一秒.
CJNE R3, #10, T0_E
MOV R3, #0
INC R4 ;秒个位.
CJNE R4, #10, T0_E
MOV R4, #0
INC R5 ;秒十位.
CJNE R5, #6, T0_E
MOV R5, #0
INC R6 ;分.
CJNE R6, #10, T0_E
MOV R6, #0
T0_E:
RETI
;---------------------------------------
MAIN:
MOV TMOD, #01H
MOV TH0, #(55536 / 256) ;10ms@12MHz
MOV TL0, #(55536 MOD 256)
SETB TR0
SETB ET0
SETB IT0
SETB PX0
SETB EX0
SETB EA
CLR A
MOV R1, A
MOV R2, A
MOV R3, A
MOV R4, A
MOV R5, A
MOV R6, A
MOV R0, #1
LP1: LCALL XIANSHI
JMP LP1
;---------------------------------------
XIANSHI:
MOV DPTR, #D_TAB
MOV R1, #03H
MOV R7, #255 - 8
LOOP:
MOV A, @R1
MOVC A, @A + DPTR
MOV P2, #255 ;消隐.
MOV P0, A ;输出段码.
MOV P2, R7 ;输出位码.
CALL DL
MOV A, R7
RR A
MOV R7, A
INC R1
CJNE R1, #07H, LOOP
RET
D_TAB:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H
DB 80H, 90H, 88H, 83H, 86H, 0A1H, 86H, 8EH
;---------------------------------------
DL:
DJNZ ACC, $
DJNZ ACC, $
RET
;---------------------------------------
END
;====================================================
回答时间:2011-6-18 17:00
回答者: 做而论道 | 十五级 采纳率:43%
原题网址:http://zhidao.baidu.com/question/281050349.html
;====================================================