pp.522-524
; スタックポインタの初期化マクロ .MACRO INITSTACK LDI R20, HIGH(RAMEND) OUT SPH, R20 LDI R20, LOW(RAMEND) OUT SPL, R20 .ENDMACRO INITSTACK ; PD6 (OC0A), PD5 (OC0B)からPWM波を出力する。 LDI R20, (1 << PD6) | (1 << PD5) OUT DDRD, R20 ; Waveform Generator Aはnon-invertingモードにする(コンペアマッチでクリア、BOTTOMでセット)。 ; Waveform Generator Bはinvertingモードにする(コンペアマッチでセット、BOTTOMでクリア)。 ; Waveform Generationモード3 (0xFFがTOP)。 LDI R20, (1 << COM0A1) | (1 << COM0B1) | (1 << COM0B0) | (1 << WGM01) | (1 << WGM00) OUT TCCR0A, R20 ; コンペア値Aをセットする。 ; デューティ = (127+1)/256 = 50%。 LDI R20, 127 OUT OCR0A, R20 ; コンペア値Bをセットする。 ; invertingモードにしているので負側のデューティ = (63+1)/256 = 25%。 LDI R20, 63 OUT OCR0B, R20 ; 8 MHzを8分周してカウントする。だから1カウントが1 us。 LDI R20, (1 << CS01) OUT TCCR0B, R20