Departament de Microelectrònica i Sistemes Electrònics
AVR i FONAMENTS DE COMPUTADORS
Enginyeria en Informàtica (ETSE)
comptadors - exemple 1: generació d'un pols
El rellotge intern del microcontrolador ATmega8 funciona a una freqüència d' 1MHz. Emprant el comptador 0 es generarà un pols de període 2 ms amb amplada de pols d' 1 ms en el PORTB.0
.INCLUDE "m8def.inc"
.DEF srri = R10
.DEF temp = R16
.ORG 0x0
rjmp inici
.ORG 0x09
rjmp int_cnt0OVF
reti
inici: ldi temp,LOW(RAMEND)
out SPL,temp
ldi temp,HIGH(RAMEND)
out SPH,temp
sbi DDRB,0
sbi PORTB,0
ldi temp, (0<<CS02)|(1<<CS01)|(0<<CS00)
out TCCR0, temp
ldi temp, (1<<TOIE0)
out TIMSK, temp
sei
main: nop
rjmp main
int_cnt0OVF: in srri, SREG
ldi temp, 0x84
out TCNT0, r16
in temp, PINB
com temp
out PORTB, temp
out SREG, srri
reti
; registre guarda de registre status en interrupció
; registre temporal per inicialització i enviament dades
; rutina d'inici del programa
; rutina servei int'cnt0
; -------INICI PROGRAMA ---------------------------
; setup del stack
; posar PORTB0 com a sortida
; inicialitzar PORTB.0
; prescaler Timer0 a 8
; habilitació int'cnt0.Ovf
; activació general d'interrupcions
; -------PROGRAMA PRINCIPAL-------------------
; -------RUTINA DE SERVEI INT TIMER0-----------
: guarda registre de status
; el timer0, en iOVF, inicia una nova conversió ADC
; posar comptador a 256-125+1=132: 1MHz/8/125 -> 1KHz
; actualitzar sortida