;功能:0~9,数码管显示计时;共阳接法
;P1口接数码管
ORG 0000H
LJMP MAIN
ORG 001BH ;定时器T1,中断入口
LJMP T1_ISR
ORG 0030H
;主程序
MAIN: MOV TMOD,#10H ;定时器初始化
MOV TH1,#3CH ;设定时时间50ms
MOV TL1,#0B0H
SETB EA ;开中断
SETB ET1
SETB TR1 ;启动T1
MOV R0,#20 ;中断计数器(循环次数)
MOV A,#00 ;显示计时初值
LCALL DISP ;调显示程序
SJMP $
;定时中断子程序
T1_ISR: DJNZ R0,ISR_OUT ;一秒不到退出
MOV R0,#20 ;到了,重赋计数器初值
INC A ;计时值加1
LCALL DISP ;调转换显示程序
CJNE A,#9,ISR_OUT ;判断计时值是否大于9,不是退出
MOV A,#00 ;大于9,重新赋0
ISR_OUT:MOV TH1,#3CH ;重新给计数器赋初值
MOV TL1,#0B0H
RETI
;显示子程序
DISP: MOV DPTR,#TAB ;查表
MOVC A,@A+DPTR
MOV P1,A
RET
;字符表,共阳接法0~9
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
曾经回答过一个类似题目,这个是在那个基础上修改的,你用Proteus仿真一下有问题Hi我
http://zhidao.baidu.com/question/158422617.html本回答被提问者和网友采纳