El MPLAB II - IES Antonio Machado

Anuncio
PIC 16F876
EL TIMER 1
Manejo como contador asíncrono
PROBLEMA P02
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
El Timer 1 como contador asíncrono
Se desea realizar un contador de eventos externos ,
para ello por el pin RC0/T1CK1 introduciremos
pulsos, deseándose ver en un lcd conectado al puerto B
el número de impulsos recibidos.
El programa se realizará en C.
Para el control del LCD utilizaremos el fichero LCD.C
que se encuentra en la carpeta drivers.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Creación del proyecto
„
1 fijamos el tipo de micro, frecuencia de funcionamiento etc.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Fijamos: modo contador asíncrono; prescaler del Timer_1 (1:1);
timer_2 desactivado; etc.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Picamos en la pestaña analog y seleccionamos deshabilitado.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Picamos en la pestaña other y seleccionamos off.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Picamos en la pestaña de interrupciones, y en el cuadro de
selección NO habilitamos la interrupción del timer1.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Picamos en la pestaña Drivers y seleccionamos LCD Driver.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
El fichero.c que genera el propio compilador es:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
El fichero.h que genera el compilador es:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Abrimos el fichero LCD.C que se encuentra en la carpeta
DRIVERS y habilitamos la línea marcada quitando //:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Editamos el programa:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación:
Circuito antirrobotes
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación: sacamos primera línea en el LCD
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación: primera lectura del TMR1
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación: primera lectura del TMR1
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación: Generamos el primer flanco de subida soltando el
pulsador y vemos como se actualizan las variables y se presenta
e el LCD
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Simulación: hemos sustituido el circuito generador de pulsos
por un generador TTL
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
La función PRINTF( )
En este ejercicio hemos utilizado la funciónes lcd_putc ( ) y
PRINTF () para enviar datos al LCD
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
La función lcd_putc( ) está dentro del driver para el manejo
del LCD y ya ha sido explicada, recordemos que admite los
siguientes formatos:
lcd_putc(“chart”); //saca por el LCD el texto entrecomillado
lcd_putc(“\f”); //limpia el LCD
lcd_putc(“\n”); //salta a la 1ª posición de la 2ª línea
lcd_putc(“\b”); //limpia el LCD
además en dicho driver tenemos la función:
lcd_gotoxy(x,y);//posiciona el cursor en la línea x posición y
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Por su parte el compilador CCS nos facilita una función más
versátil que es PRINTF(); si la seleccionamos en el help del
compilador obtenemos:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Haciendo doble click sobre PRINTF ( )
obtenemos la correspondiente ayuda:
13/01/2009
Ó FPRINTF( )
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Donde:
String es una cadena o array de caracteres, values es una lista de
variables separadas pr comas, y fname es una función.
En nuestro caso utilizaremos la forma:
printf( fname, cstring,values);
El formato es %nt; donde n es opcional y puede ser:
1 a 9: para indicar cuantos caracteres se deben sacar; si se
precede del carácter 0, indicará que se debe completar el número
con ceros a la izquierda.
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Ejemplo:
printf(Lcd_putc,"%05Lu",numero_eventos);
aquí se indica que debe presentarse el valor de la variable
numero_eventos con 5 dígitos y rellenado a la izquierda con
ceros.
Así si la variable numero_eventos es 3 se presentaría en el lcd
como sigue:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Si ahora su valor fuese 27, la representación sería:
Por su parte t indicará el tipo de variable que tenemos y de
acuerdo con la siguiente tabla:
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
S
Carácter
S
Cadena o carácter
u
Entero sin signo
d
Entero con signo
Lu
Entero largo sin signo
Ld
Entero largo con signo
x
Entero hexadecimal en minúsculas
X
Enetero hexadecimal en mayúsculas
Lx
Entero largo hexadecimal en minúsculas
LX
Entero largo hexadecimal en mayúsculas
f
Flotante con truncado
G
Flotante con redondeo
e
Flotante en forma exponencial
w
Entero sin signo con decimales insertados, la primera cifra indica el total, la 2ª
El número de decimales
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
EJEMPLOS
FORMATO
VALOR = 0X12
VALOR 0XFE
Comentarios
%03u
018
254
Entero sin signo 3 digitos y complementa con 0
%u
18
254
Entero sin signo
%2u
18
*
* Error este número necesita 3 dígitos
%5
18
254
%d
18
-2
Entero con signo
%x
12
fe
Hexadecimal en minúsculas
%X
12
FE
Hexadecimal en mayúsculas
%4X
0012
00FE
Hexadecimal 4 dígitos en mayuúsculas
%3.1w
1.8
24.5
Número de dígitos 3, número de decimales 1
13/01/2009
CCFF D.P.E. MÓDULO DE PROYECTOS TIMER_1 PROBLEMA 02
Descargar