Assembly 在HCS12微控制器上循环显示LED

Assembly 在HCS12微控制器上循环显示LED,assembly,microcontroller,68hc12,Assembly,Microcontroller,68hc12,你好,我正在尝试用汇编语言做一个循环,使HCS12微控制器(Dragon12p)上的LED亮起。该值作为其二进制等效值显示在LED上(例如,$01将点亮第一个LED,$99将点亮类似于1 0 1 0 0 1,$23将点亮类似于0 1 0 0 1 1 1) 无论如何,我的循环不工作,印加只增加1次a,所以当我测试这个代码时,只有第一个LED亮起。我想不出来 是的。相信迈克尔。bgt循环是错误的方式。 而且它可能不是你想要的。 现在,它以二进制形式显示(如果bgt循环已纠正)0到99之间的数字,以及

你好,我正在尝试用汇编语言做一个循环,使HCS12微控制器(Dragon12p)上的LED亮起。该值作为其二进制等效值显示在LED上(例如,$01将点亮第一个LED,$99将点亮类似于1 0 1 0 0 1,$23将点亮类似于0 1 0 0 1 1 1)


无论如何,我的循环不工作,印加只增加1次a,所以当我测试这个代码时,只有第一个LED亮起。我想不出来

是的。相信迈克尔。bgt循环是错误的方式。 而且它可能不是你想要的。 现在,它以二进制形式显示(如果bgt循环已纠正)0到99之间的数字,以及
每个数字暂停64毫秒。这是0.06秒。

教授们在网上的发现令人惊讶

jsr Delay_ms调用一个库函数,该函数将HCS12 uController延迟累加器a中值的倍数。是的,a确实在Delay_ms中被销毁


除非blt要检查-1,否则应该使用未签名的分支,这里不是这种情况。

什么是
Delay\ms
做的?它会覆盖累加器吗?您的条件跳转不应该是
BLO
?(只要累加器<$99,您就要循环)
             org     $2000
STACK        equ     $2000
DELAY_VALUE  equ     64
ENDCOUNT     equ     $99
Start        lds     #STACK
             jsr     Config_SWs_and_LEDs 

Startover    ldaa    $00       ; load accumulator a with $00
Loop         staa    PORTB     ; send data to PORTB to display LED
             jsr     Delay_ms  ; delay by 64 ms
             inca              ; increment accumulator a by one value
             cmpa    #ENDCOUNT ; compare accumulator a to ENDCOUNT ($99)
             bgt     Loop      ; branch if accumulator a is less than $99
             bra     Startover ; start over at $00 if accumulator a reaches $99

             end