我正在尝试使用 6502 微控制器指令集在汇编中生成两个输出:20Hz 方波和 30Hz 方波。到目前为止,我可以输出 20Hz 波:
%uasm65,title="SQUARES"
org 0200h
lda #1d
sta 0a200h
Main:
;jump to the subroutine Delay and do it
jsr Delay
lda 0a200h
inc Count1
lda Count1
cmp #3d
beq Reset1
jmp Main
Reset1:
lda #0d
sta Count1
lda 0a200h
eor #00000001b
sta 0a200h
jmp Main
Reset2:
jmp Main
Delay:
;Save registers on the stack.
pha
txa
pha
tya
pha
;Change the number that is being loaded into the
; 'A' register in order to change the delay time.
lda #01h
OutLoop:
ldx #04h
InLoop1:
ldy #0ffh
InLoop2:
dey
bne InLoop2
dex
bne InLoop1
sec
sbc #1d
bne OutLoop
;Restore registers from the stack.
pla
tay
pla
tax
pla
rts
Count1:
dbt 0d
Count2:
dbt 0d
end
%/uasm65
根据我的理解,我可以做的是采用 60Hz 方波并用它来获得 30Hz 和 20Hz。如何将 20Hz 方波输出到 PortA 的第 5 位,将 30Hz 方波输出到 PortA 的第 6 位,而不影响端口中其他位的状态?换句话说,我如何从这里的 60 中得到 20 和 30?我是否让计数检查 7 并增加计数 2?任何帮助将不胜感激。