下面我写了一本关于汇编语言的程序代码,正如我所拥有的书所引用的那样。 它说在终端PTD4上我们连接了一个LED。该计划关注领导者" on"持续1秒钟和#34;关闭"持续1秒情况一直持续下去。如果你知道我应该在下面改变什么,以便让LED处于两个不同的阶段。特别是我希望它在5秒内开启,关闭6秒。 提前致谢。这是代码。
PORTD.DATA EQU $0003
PORTD.DIRECTION EQU $0007
COUNTER1 EQU $0040
COUNTER2 EQU $0041
COUNTER3 EQU $0042
ROM.START EQU $8000
RESET.VECTOR EQU $FFFE
ORG ROM.START
BSET 0,$001F
MOV #$1F,$003C
BSET 4,PORTD.DIRECTION
LOOP BSET 4,PORTD.DATA
JSR DELAY.1SEC
BCLR 4,PORTD.DATA
JSR DELAY.1SEC
JMP LOOP
DELAY.1SEC MOV #!55,COUNTER3
LOAD.COUNTER2 MOV #!100,COUNTER2
LOAD.COUNTER1 MOV #!180,COUNTER1
DELAY.LOOP DBNZ COUNTER1,DELAY.LOOP
DBNZ COUNTER2,LOAD.COUNTER1
DBNZ COUNTER3,LOAD.COUNTER2
RTS
ORG RESET.VECTOR
FDB ROM.START
答案 0 :(得分:0)
在您的代码中,开启和关闭的持续时间为1秒,编码为
JSR DELAY.1SEC
要将代码修改为“开启5秒钟并关闭6秒钟”,您需要两个子程序,分别等待5秒和6秒。
“等待5秒”子程序的一个例子可能是(我假设处理器上有一个名为'COUNTER4'的计数器)
DELAY.5SEC MOV #!5,COUNTER4
DELAY5.LOOP JSR DELAY.1SEC
DBNZ COUNTER4,DELAY5.LOOP
RTS
“等待6秒”子程序与DELAY.5SEC类似,但在开始时将6设置为COUNTER4。
然后将代码的循环部分修改为
LOOP BSET 4,PORTD.DATA
JSR DELAY.5SEC
BCLR 4,PORTD.DATA
JSR DELAY.6SEC
JMP LOOP