在下面的内容中,我编写了一本我引用的关于汇编语言的程序代码。它说在端子PTD4上我们连接了一个LED。程序使LED指示灯“接通” 1秒钟,“熄灭” 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
在您的代码中,打开和关闭的持续时间为1秒,编码为
JSR DELAY.1SEC
要将代码修改为“ ON 5秒钟,OFF 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句