co 1
TUTORIAL
OBJETIVOS
INTRODUCCIÓN
CONCEPTOS:
OPTION_REG:
Bit 7: RBPU: Cuando está en cero activa las pullups del puerto B,
no se usa para controlar el TMR0 pero se usará mas adelante.
Curso de Microcontroladores 1
Curso de Microcontroladores ndmunoz@elpoli.edu.co 2
Tiempo =
4
(256 − TMR0) Pr eescaler
Fosc
Donde Fosc es la frecuencia de oscilador usada, TMR0 es el valor cargado
inicialmente en dicho registro y preescaler es el valor escogido en el
OPTION_REG.
Ejemplo:
Curso de Microcontroladores 2
Curso de Microcontroladores ndmunoz@elpoli.edu.co 3
10ms =
4
(256 − TMR0)128
4Mhz
4 Mhz (10ms )
TMR 0 = 256 − = 177.8
4(128)
Obviamente, solo podemos escribir valores enteros, por lo tanto escogemos el
valor de TMR0 igual 178 y obtenemos un pequeño error por la aproximación.
El retardo más grande que puede obtenerse por medio de este método, a un
cristal de 4Mhz sería:
Tiempo =
4
(256 − 0)256 = 65.53ms
4 Mhz
El cual es relativamente pequeño, en especial si se buscan retardos como en
nuestro caso del orden de 200 o 300ms necesitamos llamar varias veces el
retardo. En ocasiones se utilizan variables para contar varias veces el retardo.
Curso de Microcontroladores 3
Curso de Microcontroladores ndmunoz@elpoli.edu.co 4
#include <pic.h>
ADCON1=6;
ANSEL=0x00;
ANSELH=0x00;
//Opcional
OPTION=0b00000111; //Configuro TMR0.
while(1)
{
PORTD=0b00001000;
retardo();
PORTD=0b00000100;
retardo();
PORTD=0b00000010;
retardo();
PORTD=0b00000001;
retardo();
}
Curso de Microcontroladores 4
Curso de Microcontroladores ndmunoz@elpoli.edu.co 5
En el código anterior se ha hecho uso de subrutinas para evitar copiar varias veces el
código del retardo.
ESQUEMA DE CONEXIONES:
Curso de Microcontroladores 5