怎么使用汇编语言实现,利用定时器使一个数码管的计数一次显示不同的数字。这是我编写的程序。
ORG 0000H
MOV TMOD,#05H
MOV TH0,#0
MOV TL0,#0
MOV R7,#15
SETB TR0
S0:MOV DPTR,#TABLE
S1:MOV A,TL0
MOVC A,@A+DPTR
MOV P0,A
DJNZ R7,S1
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0F9H,0A4H,0B0H,99H,92H
END
问题就是我按了十六次,就没有变化啦,我的本意是按一次就能起到变化。求解。。谢谢。
追问:是用计数器,每按一次按键就计数一次,是这样的。
答案:可以简化一下:
;--------------------------
ORG 0000H
MOV DPTR, #TABLE
MOV TMOD, #05H
SETB TR0
S0: MOV TL0, #0
S1: MOV A, TL0
CJNE A, #16, S2
SJMP S0
S2: MOVC A, @A + DPTR
MOV P1, A
SJMP S1
;--------------------------
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0F9H,0A4H,0B0H,99H,92H
;--------------------------
END
================================
下面的更简单:
;--------------------------
ORG 0000H
MOV DPTR, #TABLE
MOV TMOD, #05H
MOV TL0, #0
SETB TR0
S1: MOV A, TL0
ANL A, #15
MOVC A, @A + DPTR
MOV P1, A
SJMP S1
;--------------------------
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0F9H,0A4H,0B0H,99H,92H
;--------------------------
END
其他:题目写清楚些,到底是用定时计数器来实现数值变化,还是用按键来实现。 这是全部的程序?
你是用什么键盘?
键盘的功能,程序貌似没操作啊!这程序跟键盘貌似没关系! 没有调用子程序 ,你用了一个RET
ORG 0000H
MOV TMOD,#06H
MOV TH0,#0
MOV TL0,#0
MOV R7,#15
SETB TR0
MOV DPTR,#TABLE
S1:MOV A,TL0
MOVC A,@A+DPTR
MOV P1,A
mov a,tl0
cjne a,#16,s1
mov tl0,#0
ajmp s1
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0F9H,0A4H,0B0H,99H,92H
END 什么意思? 前十五次都好使??? 你有显示程序没? 把程序都发出来。
早说启动定时器还有EA, ET0呢? 我看这个程序是不行~~~
上一个:带符号位一位数加法运算汇编语言程序,比如(-8)+(-9),-5+7,-7+3等的运算~~
下一个:8088和8086汇编语言程序设计PPT