From dbf6176481b6421517c612a9042f0c6d6e773046 Mon Sep 17 00:00:00 2001 From: justanothercatgirl Date: Fri, 9 May 2025 16:29:17 +0300 Subject: initial commit --- timer.s | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 timer.s (limited to 'timer.s') diff --git a/timer.s b/timer.s new file mode 100644 index 0000000..94e97ae --- /dev/null +++ b/timer.s @@ -0,0 +1,110 @@ +.equ PINB, 0x03 +.equ DDRB, 0x04 +.equ PORTB, 0x05 +.equ PIND, 0x09 +.equ DDRD, 0x0A +.equ PORTD, 0x0B +.equ TIFR0, 0x15 +.equ ADDR, 0x256 +.equ SPL, 0x3D +.equ SPH, 0x3E +.equ SREG, 0x3F +.equ TCCR0A, 0x0024 +.equ TCCR0B, 0x0025 +.equ TCNT0, 0x0026 +.equ OCR0A, 0x0027 +.equ TIMSK0, 0x006E +.equ STOFL, 0xFF +.equ STOFH, 0x08 +.equ TOIE0, 1 + +.equ LOC, 0x128 +.equ FREQ, 0x80 + +.org 0x0000 ; reset interrupt +jmp init +.org 0x0040 ; timer 0 overflow interrupt +jmp tmrint + + +.org 0x0068 +init: + ; IO + sbi DDRB, 5 + sbi DDRD, 2 + cbi PORTB, 5 + cbi PORTD, 2 + ; stack + ldi r16, STOFL + ldi r17, STOFH + out SPL, r16 + out SPH, r17 + ; initial + ldi r16, 69 + sts ADDR, r16 + ; timer + ldi r18, 0b00000001 + out TCCR0B, r18 + ldi r18, TOIE0 + sts TIMSK0, r18 + sei + rcall main + +tmrint: + push r18 + in r18, SREG + push r18 + push r19 + push r20 + push r21 + + lds r20, LOC + ldi r21, FREQ + inc r20 + cpse r20, r21 + rjmp .stt + + in r18, PORTD + ldi r19, (1 << 2) + eor r18, r19 + out PORTD, r18 + eor r20, r20 +.stt: + sts LOC, r20 +.exit: + pop r21 + pop r20 + pop r19 + pop r18 + out SREG, r18 + pop r18 + sei + reti + + +main: + sei + ldi r17, 128 +.loop: + lds r1, ADDR + in r6,TCNT0 + cp r1, r17 + breq .finloop + inc r1 + sts ADDR, r1 + rjmp .loop +.finloop: + + in r13, PINB + in r14, PORTB + + lds r16, ADDR + cpse r16, r17 + cbi PORTB, 5 + + in r13, PINB + in r14, PORTB + + rjmp main + + -- cgit v1.2.3-70-g09d2