你好我想用汇编语言做一个循环,让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亮起。无法弄清楚这一点。
答案 0 :(得分:0)
是的。相信迈克尔。 bgt循环是错误的方式。 它也可能不是你想要的。 现在它显示(如果bgt循环被更正),二进制,数字从0到99和 每个号码暂停64毫秒。那是0.06秒。
答案 1 :(得分:0)
教授在网上找到了什么。
jsr Delay_ms调用一个库函数,它将HCS12 uController延迟了累加器A中的值的倍数。是的,A确实在Delay_ms中被销毁。
除非blt用于检查-1,否则应该使用无符号分支,这不是这种情况。