Napisać program który wykorzystuje licznik 0 do pracy:
-
W trybie normalnym bez i z preskalerem /8 Monitoruje zawartość rejestru pokazującego bieżący stan licznika na linijce diodowej Po przepełnieniu licznika na linijce diodowej wyświetla numer przepełnienia
-
W trybie CTC (Clear Timer on Compare Match) Monitoruje zawartość rejestru pokazującego bieżący stan licznika na linijce diodowej Po przepełnieniu licznika na linijce diodowej wyświetla numer przepełnienia
Muszę przerobić następujący kod a mam małe doświadczenie z asemblerem, kod działa prawidłowo
.include "m32def.inc"
.def temp = r16
.def temp2 = r18
.def zm = r25
.def leds = r17
.def con = r20
.org 0x0000
rjmp main
.org 0x0016
rjmp timer0_overflow
main:
ldi temp, HIGH(RAMEND)
out SPH, temp
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp,0b11111111
ldi con,0b00000000
ldi zm ,0b00001000
out DDRA,temp
out DDRB, temp
ldi leds, 0xFF
//Preskaler /8 tryb normalny
//ldi temp, (1<<CS01)
//out TCCR0, temp
//CTC
out OCR0, zm
ldi temp2,0b00001010
out TCCR0, temp2
//ldi temp, (1<<TOIE0)
out TIMSK, temp
sei
loop:
in leds, TCNT0
out PORTA, leds
rjmp loop
timer0_overflow:
inc con
out PORTA, con
reti