
Untitled
By: a guest on
Jun 2nd, 2012 | syntax:
None | size: 1.51 KB | hits: 12 | expires: Never
.include "m64def.inc"
.def secunde = r22
.def minute = r23
.def ore = r24
main:
ldi secunde, 0x0
ldi minute, 0x0
ldi ore, 0x0
ldi r16, (1<<CS02)|(1<<CS01)|(1<<CS00)
out TCCR0,r16 ; Timer clock = system clock / 1024
ldi r16,1<<TOV0
out TIFR,r16 ; Clear TOV0/ clear pending interrupts
ldi r16,1<<TOIE0
out TIMSK,r16 ; Enable Timer/Counter0 Overflow Interrupt
ser r16
out DDRE,r16 ; Set Port E as output
sei
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, 0b00011000 ; activare Rx si Tx
sts UCSR1B,r16
ldi r16, 0b00001110 ; dimensiune frame 8 biti, fara paritate, 2 biti de stop
sts UCSR1C,r16
ldi r16, 0x30 ; Baud rate calculat, incape in primii 8 biti
ldi r17, 0 ; Bitii superiori la UBRR sunt zero
sts UBRR1H, r17
sts UBRR1L, r16
;ISR_TOV0:
timer0_overflow:
push r15
in r15,SREG
push r15
inc r18
cpi r18, $99
breq step
rjmp retia
resetsec:
ldi secunde, 0
inc minute
rjmp step
resetmin:
ldi minute, 0
inc ore
rjmp step
resetore:
ldi ore, 0
rjmp step
step:
CPI secunde, 0x02 ;aici tre sa fie 3B
BREQ resetsec
CPI minute, 0x02 ;si aici
BREQ resetmin
CPI ore, 0x02 ;aici 17
BREQ resetore
inc secunde
clr r18
ldi r16,0x3A
sts UDR1,r16 ; scriere date spre transmisie
txloop3:
lds r20, UCSR1A ; asteptare terminare transmisie
sbrs r20, 5
rjmp txloop3
retia:
pop r15
out SREG,r15
pop r15
reti