求助大神!汇编语言,中断的问题,下面程序中断怎么响应的,最后的RETI又返回到哪里了?
ORG0000HLJMPMAINORG000BHLJMPTOINTORG0100HMAIN:MOVR0,#0FFHMOVTMOD,#10HMOVA,#7FHMOVTH1,...
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TOINT
ORG 0100H
MAIN: MOV R0,#0FFH
MOV TMOD,#10H
MOV A,#7FH
MOV TH1,#0FFH
MOV TL1,#0FFH
SETB ET1
SETB EA
SETB TR1
SJMP $
TOINT:MOV TH1,#0FFH
MOV TL1,#0FFH
DJNZ R0,OUT
RR A
MOV P1,A
MOV R0,#0FFH
OUT: RETI
END 展开
LJMP MAIN
ORG 000BH
LJMP TOINT
ORG 0100H
MAIN: MOV R0,#0FFH
MOV TMOD,#10H
MOV A,#7FH
MOV TH1,#0FFH
MOV TL1,#0FFH
SETB ET1
SETB EA
SETB TR1
SJMP $
TOINT:MOV TH1,#0FFH
MOV TL1,#0FFH
DJNZ R0,OUT
RR A
MOV P1,A
MOV R0,#0FFH
OUT: RETI
END 展开
1个回答
展开全部
这个程序中断1个机器周期就回响应一次,所以基本无法正常工作,当然如果你将TMOD改变一下,使其工作在计数模式的话,TMOD=0x50,那么检测到P3.5上一个脉冲信号就会响应一次中断。RETI的返回地址是不确定的,取决于中断时候的执行地址,返回到中断响应当前执行语句的下一个语句处。
更多追问追答
追问
那请问这个程序怎么修改一下可以实现跑马灯的功能啊?
追答
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TOINT
ORG 0100H
MAIN:
MOV R0,#10H
MOV TMOD,#10H
MOV A,#7FH
MOV TH1,#0
MOV TL1,#0
SETB ET1
SETB EA
SETB TR1
SJMP $
TOINT:
MOV TH1,#0
MOV TL1,#0
DJNZ R0,OUT
RR A
MOV P1,A
MOV R0,#10
OUT: RETI
END
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询