[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-gcc-list] emulation problems
From: |
Darkb_ |
Subject: |
[avr-gcc-list] emulation problems |
Date: |
Tue, 10 Aug 2004 19:24:48 +0200 |
Hi, well i wrote a little program that will turn on 8 leds randomly
and will wait until you press the same switchs to generate the next
led number.
The random number is based in a timer counter timer0, that is suposed
to increment the value each cycle of the MCU, but in the emulation,
the TCNT0 never start to count, i think that it's a problem in the
initialization, here is the code
; este programa debe de replicar el juego 'simon' con 6 leds
.include "m16def.inc"
.def ent = R16
.def sal = R17
.def temp = R18
.org 0x0000
rjmp RESET
RESET:
ldi temp,LOW(RAMEND) ;Initiate Stackpointer (Subroutines!)
out SPL,temp
ldi temp,HIGH(RAMEND)
out SPH,temp
ldi temp, 0xff
out DDRB, temp ; PORTB como salida
ldi temp, 0x00
out DDRD, temp ; PORTD como entrada.
; Prescaler of the timer = 1024, 4 MHz/1024 = 3906,25 Hz
; that equals a timer tick every 256 µs.
ldi temp,(1<<TOIE0);enable timer interrupt
out TIMSK, temp
ldi temp, 0x05 ; preescalar de timer0
out TCCR0, temp ;
ldi sal, 0x01 ; inicializa salida= 0x01
loop:
out PORTB, sal
in ent, PIND
com ent ; sal&=(~ent)
and sal, ent
cpi sal,0 ; ya presionaste todos sal=0?
brne loop ; si no son todos ceros, regresate a
loop
in sal, TCNT0 ; ya fueron ceros, ahora
TCNT0->sal
rjmp loop
do you know how do i have to initialize timer0 to have internal counting?
Thanks a lot!
--
Darkb_
"software is like sex, it's better when it's free"
- [avr-gcc-list] emulation problems,
Darkb_ <=