6502 マイクロ コントローラー命令セットを使用して、20Hz の方形波と 30Hz の方形波のアセンブリで 2 つの出力を生成しようとしています。これまでのところ、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 を取得することです。ポートの他のビットの状態に影響を与えずに、PortA のビット 5 に 20Hz の方形波を出力し、PortA のビット 6 に 30Hz の方形波を出力するにはどうすればよいでしょうか? つまり、ここで 60 から 20 と 30 を取得するにはどうすればよいでしょうか。カウントに 7 をチェックさせ、カウント 2 をインクリメントしますか? どんな助けでも大歓迎です。