タイマー0 / Fast PWMモード / Waveform Generationモード7

pp.522-524
今度はWaveform Generationモード7を試してみる。TOP値をOCR0Aで指定する。したがってWaveform Generator Aは使えなくなる。
f:id:ti-nspire:20200721141158p:plain:w500

; スタックポインタの初期化マクロ
.MACRO INITSTACK
    LDI R20, HIGH(RAMEND)
    OUT SPH, R20
    LDI R20, LOW(RAMEND)
    OUT SPL, R20
.ENDMACRO

INITSTACK

    ; PD5 (OC0B)からPWM波を出力する。
    LDI R20, (1 << PD5)
    OUT DDRD, R20

    ; Waveform Generator Bをnon invertingモードにする(コンペアマッチでクリア、BOTTOMでセット)。
    LDI R20, (1 << COM0B1) | (1 << WGM01) | (1 << WGM00)
    OUT TCCR0A, R20
    
    ; TOP値をセットする。
    LDI R20, 99
    OUT OCR0A, R20

    ; コンペア値Bをセットする。
    LDI R20, 24
    OUT OCR0B, R20

    ; 8 MHzを8分周してカウントする。だから1カウントが1 us。
    ; Waveform Generationモードを7にする。
    LDI R20, (1 << CS01) | (1 << WGM02)
    OUT TCCR0B, R20