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

时间:2013-11-20 16:00:25

标签: assembly microcontroller 68hc12

你好我想用汇编语言做一个循环,让LED在HCS12微控制器(Dragon12p)上点亮。该值显示在LED上作为其二进制等效值(例如,$ 01将点亮第一个LED,99美元将像1 0 0 1 1 0 0 1,$ 23像0 0 1 0 0 0 1 1)。

             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

但是,我的循环不起作用,inca只增加1次,因此当我测试此代码时,只有第一个LED亮起。无法弄清楚这一点。

2 个答案:

答案 0 :(得分:0)

是的。相信迈克尔。 bgt循环是错误的方式。 它也可能不是你想要的。 现在它显示(如果bgt循环被更正),二进制,数字从0到99和 每个号码暂停64毫秒。那是0.06秒。

答案 1 :(得分:0)

教授在网上找到了什么。

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

除非blt用于检查-1,否则应该使用无符号分支,这不是这种情况。