Este documento describe programas para comprobar el funcionamiento del Timer/Contador 0 mediante la simulación en AVR Studio. El programa inicializa los registros comparadores y de control del timer, y luego ejecuta 3 bucles: 1) espera a que el contador alcance OCR0A, 2) espera a que alcance OCR0B, y 3) espera al desbordamiento. Capturas de pantalla muestran los cambios en los registros del timer a medida que avanza el programa.
1. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de
los Timers
Página 1
PROGRAMAS PARA VISUALIZAR COMO
CONTADOR NORMAL ASCENDENTE AL
TEMPORIZADOR/CONTADOR 0
Los siguientes programas, contenidos en un solo archivo .ASM, permiten comprobar la
operación del Timer/Contador 0 mediante la simulación en el AVR Studio.
.NOLIST
.INCLUDE
"m164pdef.inc"
.LIST
;
.DEF
AUX1 = R16
.DEF
AUX2 = R17
.DEF
AUX3 = R18
;
.CSEG
JMP
PROGP
;
PROGP:
; MODO: CONTADOR NORMAL
; EJEMPLO: TIMER HASTA DETECTAR EL EMPAREJAMIENTO CON OCR0A
; LUEGO HASTA DETECTAR EL EMPAREJAMIENTO CON OCR0B
; Y FINALMENTE HASTA DETECTAR EL DESBORDAMIENTO
; INICIALIZACIÓN DE LOS REGISTROS COMPARADORES DEL T/C0
LDI
AUX1,0x15
OUT
OCR0A,AUX1
LDI
AUX1,0x3A
OUT
OCR0B,AUX1
; PROGRAMACIÓN DE LOS REGISTROS DE CONTROL DEL T/C0
; COM0A1:0 = 00 OC0A DESCONECTADA
; COM0B1:0 = 00 OC0B DESCONECTADA
; DOS BITS RESERVADOS = 00
Figura Nº1
; WGM01:0 = 00 MODO CONTADOR NORMAL
LDI
AUX1,0B00000000
OUT
TCCR0A,AUX1
; FOC0A = 0 NO OBLIGA A UNA COMPARACIÓN CON OCR0A
; FOC0B = 0 NO OBLIGA A UNA COMPARACIÓN CON OCR0B
; DOS BITS RESERVADOS = 00
; WGM02 = 0 MODO CONTADOR NORMAL
; CS02:0 = 001 RELOJ IGUAL A Fosc
LDI
AUX1,0B00000001
OUT
TCCR0B,AUX1
; LAZO DONDE ESPERA EL EMPAREJAMIENTO CON OCR0A
LOOP1: IN
AUX1,TIFR0
Figura Nº2
SBRS
AUX1,OCF0A
RJMP
LOOP1
; CONTINÚA AL ENCENDER LA BANDERA DE COMPARACIÓN OCF0A
; REGISTRO DE CONTROL DEL T/C0 PARA DETENER
; CS02:0 = 000
LDI
AUX1,0B00000000
Figura Nº3
OUT
TCCR0B,AUX1
; BORRAR LA BANDERA DE COMPARACIÓN OCF0A DEL T/C0
LDI
AUX1,0B00000010
OUT
TIFR0,AUX1
; EL T/C0 DETENIDO
No cambia
LDI
AUX1,10
STOP1: DEC
AUX1
el Timer
BRNE
STOP1
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
2. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de
los Timers
Página 2
; REGISTRO DE CONTROL DEL T/C0 PARA ARRANCAR
; CON EL RELOJ IGUAL A Fosc
; CS02:0 = 001
LDI
AUX1,0B00000001
OUT
TCCR0B,AUX1
; LAZO DONDE ESPERA EL EMPAREJAMIENTO CON OCR0B
LOOP2: IN
AUX1,TIFR0
SBRS
AUX1,OCF0B
RJMP
LOOP2
; CONTINÚA AL ENCENDER LA BANDERA DE COMPARACIÓN OCF0B
; REGISTRO DE CONTROL DEL T/C0 PARA DETENER
; CS02:0 = 000
LDI
AUX1,0B00000000
OUT
TCCR0B,AUX1
; BORRAR LA BANDERA DE COMPARACIÓN OCF0B DEL T/C0
LDI
AUX1,0B00000100
OUT
TIFR0,AUX1
; EL T/C0 DETENIDO
LDI
AUX1,10
STOP2: DEC
AUX1
BRNE
STOP2
; REINICIALIZACIÓN DE LOS REGISTROS COMPARADORES DEL T/C0
LDI
AUX1,0xF0
OUT
OCR0A,AUX1
LDI
AUX1,0xF8
OUT
OCR0B,AUX1
; VALOR INICIAL DEL REGISTRO CONTADOR T/C0
LDI
AUX1,0xEC
OUT
TCNT0,AUX1
; REGISTRO DE CONTROL DEL T/C0 PARA ARRANCAR
; CON EL RELOJ IGUAL A Fosc/8
; CS02:0 = 010
LDI
AUX1,0B00000010
OUT
TCCR0B,AUX1
; LAZO DONDE ESPERA EL DESBORDAMIENTO
LOOP3: IN
AUX1,TIFR0
SBRS
AUX1,TOV0
RJMP
LOOP3
; CONTINÚA CUANDO SE DESBORDA
; REGISTRO DE CONTROL DEL T/C0 PARA DETENER
; CS02:0 = 000
LDI
AUX1,0B00000000
OUT
TCCR0B,AUX1
; BORRAR LAS TRES BANDERAS DEL T/C0
LDI
AUX1,0B00000111
OUT
TIFR0,AUX1
; EL T/C0 DETENIDO
LDI
AUX1,10
STOP3: DEC
AUX1
BRNE
STOP3
;
FINAL: RJMP
FINAL
.EXIT
; FIN DEL MODULO FUENTE
Figura Nº4
Figura Nº5
No cambia
el Timer
Figura Nº6
Figura Nº7
Figura Nº8
No cambia
el Timer
A continuación se muestran capturas de pantalla del AVR Studio, detallando los
contenidos de los Registros del Timer0, donde se puede apreciar los cambios que se
producen en el Registro Contador (TCNT0) y en las Banderas (OCF0A, OCF0B y
TOV0) a medida que avanza el programa.
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
3. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de
los Timers
Página 3
Figura Nº1 Inicialización de los Registros del Timer 0
TCNT0=0x01
1 ciclo de
máquina
TCNT0=0x02
1 ciclo de
máquina
TCNT0=0x04
2 ciclo de
máquina
TCNT0=0x06
1 ciclo de
máquina
TCNT0=0x08
2 ciclo de
máquina
TCNT0=0x09
1 ciclo de
máquina
TCNT0=0x05
1 ciclo de
máquina
TCNT0=0x0A
1 ciclo de
máquina
Figura Nº2 Lazo de espera hasta que se encienda OCF0A
TCNT0=0x15
Emparejando a
OCR0A
TCNT0=0x16
Bandera OCF0A
encendida
TCNT0=0x18
Siguen dentro
del lazo
TCNT0=0x19
Siguen dentro
del lazo
TCNT0=0x1B
Salta fuera del
lazo
TCNT0=0x1C
Se prepara para
detener
TCNT0=0x1D
Timer0
detenido
TCNT0=0x1D
Bandera OC0A
apagada
Figura Nº3 Encendido OCF0A, detención del contador y borrado de OCF0A
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
4. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de
los Timers
Página 4
TCNT0=0x1D
Timer0
detenido
TCNT0=0x1D
Activar ingreso
del reloj
TCNT0=0x1E
1 ciclo de
máquina
TCNT0=0x21
2 ciclo de
máquina
TCNT0=0x22
1 ciclo de
máquina
TCNT0=0x23
1 ciclo de
máquina
TCNT0=0x1F
1 ciclo de
máquina
TCNT0=0x25
2 ciclo de
máquina
Figura Nº4 Arranque del contador y lazo de espera hasta que se encienda OCF0B
TCNT0=0x3A
Emparejando a
OCR0B
TCNT0=0x3B
Bandera OCF0B
encendida
TCNT0=0x3D
Siguen dentro
del lazo
TCNT0=0x40
Salta fuera del
lazo
TCNT0=0x41
Se prepara para
detener
TCNT0=0x42
Timer0
detenido
TCNT0=0x3E
Siguen dentro
del lazo
TCNT0=0x42
Bandera OC0B
apagada
Figura Nº5 Encendido OCF0B, detención del contador y borrado de OCF0B
Figura Nº6 Re inicialización de los Registros del Timer 0
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
5. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de
los Timers
Página 5
TCNT0=0xEC
Arranca Timer0
con reloj/8
TCNT0=0xED
8 ciclos de
máquina
TCNT0=0xF8
Emparejando a
OCR0B
TCNT0=0xF9
Bandera OCF0B
encendida
TCNT0=0xF0
Emparejando a
OCR0A
TCNT0=0xFF
Valor final del
contador
TCNT0=0xF1
Bandera OCF0A
encendida
TCNT0=0x00
Bandera TOV0
encendida
Figura Nº7 Arranque del contador y lazo de espera hasta que se encienda TOV0
TCNT0=0x01
Timer0
detenido
TCNT0=0x01
Banderas
apagadas
Figura Nº8 Detención del contador y borrado de las tres banderas OCF0A, OCF0B y
TOV0
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información