永发信息网

一个汇编语言定时器0控制数码管显示数字加1的程序,6个数码管左三个和右三个分别显示一个数从0开始加。

答案:2  悬赏:0  手机版
解决时间 2021-02-15 21:16
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP PKT0
ORG 0100H
MAIN:
SETB EA
SETB ET0
MOV TL0,#00H
MOV TH0,#00H
MOV TMOD,#01H
MOV 30H,#00 ;要显示的两个数字存在30H和31H
MOV 31H,#00
MOV DPTR,#0100H ;8155初始化
MOV A,#03H
MOVX @DPTR,A
SETB TR0
LOOP:
LCALL TRAN
LCALL DISP
LJMP LOOP
DISP:
PUSH ACC
MOV R0,#06H
MOV R1,#40H ;拆字程序的结果放在40H
MOV R2,#01H
MOV A,R2
FF1:
MOV DPTR,#0102H ; 送位码
MOVX @DPTR,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0101H ;送段码
MOVX @DPTR,A
MOV A,R2
RL A
MOV R2,A
LCALL TIME
INC R1
DJNZ R0,FF1
POP ACC
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

TRAN: ;把30H,31H中数字拆字并转换成BCD码放在40H..45H中
PUSH ACC
MOV R3,#00H
MOV A,31H
ANL A,#0F0H
SWAP A
MOV R3,A
MOV A,31H
ANL A,#0FH
DA A
CJNE R3,#00H,EE1
LJMP EE2
EE1:
ADD A,#16H
DA A
DJNZ R3,EE1
EE2:
MOV R3,A
MOV 40H,#00H
ANL A,#0F0H
SWAP A
MOV 41H,A
MOV A,R3
ANL A,#0FH
MOV 42H,A
MOV A,30H
ANL A,#0F0H
SWAP A
MOV R3,A
MOV A,30H
ANL A,#0FH
DA A
CJNE R3,#00H,EE3
LJMP EE4
EE3:
ADD A,#16H
DA A
DJNZ R3,EE3
EE4:
MOV R3,A
MOV 43H,#00H
ANL A,#0F0H
SWAP A
MOV 44H,A
MOV A,R3
ANL A,#0FH
MOV 45H,A
POP ACC
RET

TIME: ;动态显示用延时程序
PUSH 04H
MOV R4,#20H
TE1:
NOP
NOP
NOP
DJNZ R4,TE1
POP 04H
RET

PKT0: ;定时器0中断程序控制30H,31H加1
INC R5
MOV A,R5
CJNE A,#10,PK1
MOV R5,#00H
INC 30H
INC 31H
PK1:
RETI

END
用proteus仿真,程序显示012345678都可以,但是后面就开始显示乱七八糟的东西。
单独调试显示程序,和单独调试中断程序,都能得到正确结果,实在分析不出问题在哪,请大神帮忙。
最佳答案
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP PKT0
ORG 0100H
MAIN:
SETB EA
SETB ET0
MOV TL0,#00H
MOV TH0,#00H
MOV TMOD,#01H
MOV 30H,#00 ;要显示的两个数字存在30H和31H
MOV 31H,#00
MOV DPTR,#0100H ;8155初始化
MOV A,#03H
MOVX @DPTR,A
SETB TR0
LOOP:
LCALL TRAN
LCALL DISP
LJMP LOOP
DISP:
PUSH ACC
MOV R0,#06H
MOV R1,#40H ;拆字程序的结果放在40H
MOV R2,#01H
MOV A,R2
FF1:
MOV DPTR,#0102H ; 送位码
MOVX @DPTR,A
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0101H ;送段码
MOVX @DPTR,A
MOV A,R2
RL A
MOV R2,A
LCALL TIME
INC R1
DJNZ R0,FF1
POP ACC
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
TRAN: ;把30H,31H中数字拆字并转换成BCD码放在40H..45H中
PUSH ACC
MOV A,31H
MOV B,#100
DIV AB
MOV 42H,A
XCH A,B
MOV B,#10
DIV AB
MOV 41H,A
MOV 40H,B
MOV A,30H
MOV B,#100
DIV AB
MOV 45H,A
XCH A,B
MOV B,#10
DIV AB
MOV 44H,A
MOV 43H,B
POP ACC
RET

TIME: ;动态显示用延时程序
PUSH 04H
MOV R4,#20H
TE1:
NOP
NOP
NOP
DJNZ R4,TE1
POP 04H
RET

PKT0: ;定时器0中断程序控制30H,31H加1
INC R5
MOV A,R5
CJNE A,#10,PK1
MOV R5,#00H
INC 30H
INC 31H
PK1:
RETI
END
全部回答
#include #define uchar unsigned char sbit wela=p2^7; sbit dula=p2^6; uchar num; void main() {  tmod=0x01;  th0=(65536-50000)/256;  tl0=(65536-50000)%256;  ea=1;  et0=1;  tr0=1;  while(1)  {  if(num==10)  //亮   {   wela=1;   p0=0xfe;   wela=0;   dula=1;   p0=0x4f;   dula=0;   p0=0xff;   }     if(num==20)//灭   {   num=0;   dula=1;   p0=0xff;   dula=0;   p0=0xff;   }   } } void t0_time()interrupt 1 {  th0=(65536-50000)/256;  tl0=(65536-50000)%256;  num++; }试试看这个
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
平面上有n个点,其中任意三个点都不在同一条直
苹果平板电脑关机充电怎么不显示
掌控力很强,憧憬未来是什么意思
遵化办理准生证都需要带什么 本人不去可以么
东西湖区武汉皇甫地产(碧海花园店)在哪里啊,
金祥花园我想知道这个在什么地方
我收到一张p50w开头的假钱'怎么办
【姑苏城外寒山寺全诗】""姑苏城外寒山寺""全
邓州市南阳皇家一品豆捞这个地址在什么地方,
余素萍窗帘店地址在什么地方,想过去办事,
吕子乔的菲尔普斯山寨防水机谁送的
宇晨水果连锁超市虞塘店我想知道这个在什么地
闽ak968y这号怎么样
冤罪游戏乱码怎么解决....
买房实际房款的意思
推荐资讯
唐英驾校(报名处)这个地址在什么地方,我要处
菏泽东明离济南商河多远
枝江市宜昌中通速递怎么去啊,谁知道地址啊
吉首市湘西一期一笑(吉首店)这个地址在什么地
苏州大学新型平板显示器件研究所在什么地方啊
d406.4mm是多少
festvals and celebrations怎么读
海康is-th100-a有网口的吗
雨花区长沙飞跃五金水电电器维修地址在哪里啊
如图表示有氧呼吸过程,下列有关说法正确的是
南京95谁抽过。
都江堰市人民检察院反贪局我想知道这个在什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?