You are on page 1of 21

GAMA ALTA DE MICROCONTROLADORES

COMPILADOR C CCS
SISTEMAS EMBEBIDOS
DIGITALES III: 1
GAMA ALTA DE MICROCONTROLADORES
PIC18F4550
Contadores de 8 y 16 bits
DIGITALES III: 2
GAMA ALTA DE MICROCONTROLADORES
3
Contadores

Los microcontroladores cuentan con modulos para
realizar cuentas, los cuales estan implementados para
trabajar a 4 y 16 bits.

Si se recuerda en ensamblador para trabajar con ellos es
necesario configurar los registros OPTION_REG e
INTCON.

CCS cuenta con una serie de subrutinas que permiten
trabajar con estas estructuras.

Entre las subrutinas a utilizar se tiene:

Set_timer0(valor):
Permite establecer el valor inicial en el timer 0, por
ejemplo:
Set_timer0(0);

GAMA ALTA DE MICROCONTROLADORES
4
Set_timer1(valor):
Permite establecer el valor inicial en el timer 1, por
ejemplo:
Set_timer1(0);
La diferencia con set_timer0 radica en que valor puede
ser una variable de 16 bits.

Valor=get_timer0()
Permite leer el valor de cuenta en timer 0, como es un
contador de 8 bits la variable se debe definir con esta
extensin.
Ejemplo:
Int8 contador
Contador=get_timer0();
Valor=get_timer1()
Permite leer el valor de cuenta en timer 1 como es un
contador de 16 bits la variable se debe definir con esta
extensin.
GAMA ALTA DE MICROCONTROLADORES
5
setup_timer_0(parametros):
Permite establecer el valor de configuracin de timer 0.
Parmetros cuenta con diferentes opciones, entre ellas
cabe destacar:
RTCC_INTERNAL : Se establece para indicar que el
timer0 funciona como temporizador

RTCC_EXT_L_TO_H : Se establece para indicar
que el timer 0 se configura como contador por la linea
RA4, en este caso se incrementa la cuenta por cada
flanco ascendente.

RTCC_EXT_H_TO_L : Establece que el timer 0 se
configura como contador por la linea RA4, en este caso
se incrementa la cuenta por cada flanco descendente.

En la subrutina setup_timer_0 se pueden agregar ms
parmetros, para ello se coloca el smbolo |
GAMA ALTA DE MICROCONTROLADORES
6
SETUP_TIMER0(), requiere asignarle la forma de
incremento de cuenta por la los flancos detectados o el
preescaler de trabajo si se configura como temporizador.
Entre las opciones que se cuentan se tiene:
RTCC_DIV_2
RTCC_DIV_4
RTCC_DIV_8
RTCC_DIV_16
RTCC_DIV_32
RTCC_DIV_64
RTCC_DIV_128
RTCC_DIV_256
Si no se desea utilizar un timerx se puede colocar como
parametro TX_DISABLED, ejemplo:
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 7
Ejercicio de aplicacin: Construya un circuito que lleve la
cuenta de cero hasta 65535, la informacion se despliega en
una LCD.
Solucin:
El diagrama de conexiones del circuito se encuentra en
la siguiente imagen:
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 8
GAMA ALTA DE MICROCONTROLADORES
PIC18F4550
TECLADOS 4 *3
DIGITALES III: 9
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 10
TECLADOS
Los teclados se conectan al puerto B del microcontrolador,
para detectar la presin de una tecla es necesario utilizar
las interrupciones por RB, para ello se debe habilitar la
interrupcin RBIE del registro INTCON y evaluar el flag de
interrupcin RBIF.

Para utilizar una interrupcin de seden habilitar las
resistencias de PULLUP del puerto B, para ello se asigna
cero a bit 7 del registro INTCON. Recuerde sus clases de
ensamblador.

Existen diferentes tipos de teclados matriciales, el ms
comn es el de 4 filas por 4 columnas. En CCS se cuenta
con una librera diseada para un teclado de 3 X 4.

Entre las subrutinas que se utilizan se tiene:
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 11
KBD_INIT():
Llama a ejecutar las subrutinas para inicializar el teclado, en
ellas se configuran las lneas del puerto B, el registro
INTCON y OPTION_REG.

KBD_GETC():
Lee el valor de la tecla pulsada, este se asigna a una
variable de 8 bits.
Como los teclados pueden contener diferentes caracteres
este se puede cambiar, parra ello debe ingresar a la librera
y cambiar los datos en una tabla, tal como se indica en la
figura siguiente:


GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 12
La librera le permite conectar el teclado al puerto B como al
puerto D, para seleccionar el puerto B es necesario quitar un
comentario en la librera. Observe la lnea des comentada:

El diagrama de
conexiones tambin
se encuentra en la
librera para ello es
necesario ubicarse
en ella y observar la
descripcin.

GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 13
El conexionado es el siguiente:

FILA1
FILA2
FILA3
FILA4

COL0
COL1
COL2




COL
0
COL
1
COL
2
FILA
1
FILA
2
FILA
3
FILA
4
RB1
RB2
RB3
RB4

RB5
RB5
RB7
El diagrama de conexiones, el cual cuenta con
una pantalla LCD para visualizar un carcter es
el siguiente:
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 14
GAMA ALTA DE MICROCONTROLADORES
PIC18F4550
TECLADOS 4 *4
DIGITALES III: 15
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 16
TECLADOS 4 X 4
Para trabajar con estos teclados es necesario construir una
librera que permita conectar un teclado con estas
caractersticas. Recuerde que las columnas del teclado
entran a las lneas RB4 a RB7 y las filas a las lneas RB0 a
RB3.

Las interrupciones en CCS se establecen y habilitan por
medio de tres estructuras:
clear_interrupt(INT_RB);
Permite asignar cero al bit de interrupcion por RB.

enable_interrupts(INT_RB);
Habilita la interrupcin por RB.

enable_interrupts(GLOBAL);
Habilita la interrupcion Global(GIE).



GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 17
Finalmente las interrupciones se define por fura del
segmento principal y se rotula de la siguiente forma:

#INT_RB
VOID RB_isr()
{
LCD_PUTC('I');
delay_ms(1000);
clear_interrupt(INT_RB);
}

Pero se requiere una serie de validaciones adicionales para
construirla. El siguiente es un diagrama de conexiones para
un teclado de este tipo
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 18
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 19
El cdigo de la interrupcin es:
INT8 NUMERO_TECLA,BIT7,BIT6,BIT5,BIT4;
#INT_RB
VOID RB_isr()
{ int8 tecla;

LCD_PUTC('I');

DELAY_MS(500);
OUTPUT_LOW(PIN_B0);
OUTPUT_LOW(PIN_B1);
OUTPUT_LOW(PIN_B2);
OUTPUT_LOW(PIN_B3);
BIT7=0;
BIT6=0;
BIT5=0;
BIT4=0;
GAMA ALTA DE MICROCONTROLADORES
DIGITALES III: 20
WHILE (BIT7==0 & BIT6==0 & BIT5==0 & BIT4==0)
{
OUTPUT_LOW(PIN_B0);
OUTPUT_LOW(PIN_B1);
OUTPUT_LOW(PIN_B2);
OUTPUT_LOW(PIN_B3);
BIT7=input_STATE(PIN_B7);
BIT6=input_STATE(PIN_B6);
BIT5=input_STATE(PIN_B5);
BIT4=input_STATE(PIN_B4);
}

}

Construya en clase una librera para el teclado.
21

You might also like