.include "tn26def.inc" .def A=r16 .def B=r17 .def C=r18 .def D=r19 .def pos=r20 rjmp RESET ; reti ;INT0 reti ;PIN_CHG reti ;TMCOMPA reti ;TMCOMPB reti ;TMOVF1 rjmp TMOVF0 ;TMOVF0 reti ;USI_STRT reti ;USI_OVF reti ;EE_RDY reti ;ANA_COMP reti ;ADC ;₯₯₯₯₯‰Šϊ‰» RESET: ;₯ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‰Šϊ‰» LDI A,LOW(RAMEND) out sp,A ;₯IOέ’θ ldi A,0x00 out PORTA,A ldi A,0xFF out DDRA,A ldi A,0b11110000 out PORTB,A ldi A,0b11110000 out DDRB,A ;₯ƒ^ƒCƒ}0έ’θi20msƒCƒ“ƒ^[ƒoƒ‹ƒ^ƒCƒ}j ldi A,0b00001100 out TCCR0,A ldi A,0b00000010 out TIMSK,A sei ;₯‰Šϊ’l ldi pos,0 rcall wait1s rcall wait1s main: rcall wait1s ldi pos,1 rcall wait1s ldi pos,100 rcall wait1s ldi pos,200 dec pos rjmp main ;₯₯₯₯₯ƒ^ƒCƒ}0overŠ„‚θž‚έ TMOVF0: push A ;ƒŒƒWƒXƒ^‘ή”π in A,SREG push A push B push C ldi A,177 ;256-(1M/256/50Hz) out TCNT0,A sbi PORTB,6 ;PWMγ‚° ; rcall w1ms ldi A,150 ;1‘offset‘ T0: nop ; 1 dec A ; 1 brne T0 ; 2 mov A,pos ;128=center T1: nop ;1‘gain‘ nop ;1 nop ;1 nop ;1 nop ;1 nop ;1 dec A ;1 brne T1 ;2 cbi PORTB,6 ;PWM‰Ί‚° out PORTA,pos pop C ;ƒŒƒWƒXƒ^•œ‹A pop B pop A out SREG,A pop A reti ;₯1ms 1ms@1MHz wait1ms: ;3 ldi A,250 ;1 w1ms: nop ; 1 dec A ; 1 brne w1ms ; 2 ret ;4 ;₯1s wait1s: ldi B,250 wa1s: rcall wait1ms rcall wait1ms rcall wait1ms rcall wait1ms dec B brne wa1s ret