组装的第一步-更换LED

在下面的内容中,我编写了一本我引用的关于汇编语言的程序代码。它说在端子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
Fumu 7

在您的代码中,打开和关闭的持续时间为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章