我想编写一个程序来从按钮读取值并在LED上显示该值。程序应该连续运行,当按钮改变时,显示会改变。我尝试了很多方法,但它没有显示任何东西 任何人都可以帮助我知道问题出在哪里。
LEDS EQU $E00010 ;LEDS adress
BUTTON EQU $E00014 ;BUTTON address
ORG $400 ;start of program area
START
Loop MOVE.B #2,D0
MOVE.B BUTTON,D1 ;move the value of button to D1
MOVE.B D2,LEDS
NOT.B D1 ;take NOT to flip the value in order to present it in LEDS
MOVE.B D1,D2 ;move the value to LEDS
SUB.B #2,D0 ; if D0 =0 then loop again
BEQ Loop
SIMHALT
END START
答案 0 :(得分:0)
此方面缺少一些东西。
按钮通常是单个位,而不是整个字节,因此应在按钮输入上应用某种形式的掩码。同样,设置LED通常涉及设置一位而不是字节,除非它是某种形式的多色LED。我假设您有8个按钮和8个相应的LED
您说明的代码将连续运行,因为在LOOP标签后将D0加载2,然后在循环结束时从D0中减去2(其值为2),然后循环运行等于零,即总是。如果您真的想要连续循环,则根本没有必要使用D0。
LEDS EQU $E00010 ;LEDS address
BUTTON EQU $E00014 ;BUTTON address
ORG $400 ;start of program area
START
LOOP
MOVE.B BUTTON,D1 ; Read buttons
NOT.B D1 ; LEDs are inverse of button
MOVE.B D1,LEDS ; write to LEDs
BRA.S LOOP ; do continously
SIMHALT ; doesn't get here but still
END START