Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O ...
-
Upload
rocio-rochel -
Category
Documents
-
view
268 -
download
1
Transcript of Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O ...
![Page 1: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/1.jpg)
Microcontroladores
PIC16F84A
![Page 2: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/2.jpg)
Conociendo al PIC16F84A
Posee 18 pines, de los cuales 13 son de I/O
Memoria para guardar programas Timer/Contador interno 4 fuentes de interrupciones a la CPU Memoria EEPROM
![Page 3: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/3.jpg)
Diagrama del PIC16F84A
![Page 4: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/4.jpg)
Memoria
![Page 5: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/5.jpg)
Registros
Para configurar al PIC, debemos modificar algunos registros especiales: STATUS, OPTION_REG, INTCON, TRISA, TRISB
Para manejar el I/O están los registros PORTA, PORTB
Todo registro es de 8 bits (1 Byte)
![Page 6: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/6.jpg)
Timer
Qué cuenta el Timer? El timer puede ser configurado de
distintas maneras para que vaya más rápido o más lento, pero con ciertos límites.
Un segundo para el timer es mucho tiempo, aún cuando esté configurado para ir lo más lento posible.
![Page 7: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/7.jpg)
Componentes del Timer Prescaler: Acá podemos seleccionar que el tiempo se
vaya incrementando a la misma velocidad que se leen las instrucciones (si tiene el valor 1) o si queremos configurarlo a nuestra medida (si tiene el valor 0).
Prescaler Rate Select (P.R.S.): Si el prescaler queda configurado con valor 0, acá podemos seleccionar la velocidad a la cual queremos que se mueva el timer.
El “prescaler” y el “prescaler rate select” se configuran en el registro OPTION_REG
![Page 8: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/8.jpg)
¿Cómo contar 1 segundo?La frecuencia original que le llega al timer es de 1Mhz.1Mz = 1000000 HzSi elegimos un P.R.S de 64, entonces la frecuencia que le estaría llegando al timer será de:
F = 1000000 / 64 = 15625 HzComo F = 1 / T, entonces T = 0.000064 segundos
Cada 0.000064 segundos se aumenta en uno el timer.Entonces si queremos saber cuántas veces tiene que aumentar para que demore 1 segundo tenemos:
0.000064 * x = 1 segundo
x = 15625
Se necesita que el timer aumente 15625 veces…
![Page 9: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/9.jpg)
¿Cómo contar 1 segundo?
Pero este timer es un registro igual que todos los otros, por lo tanto tiene sólo 8 bits… con lo que solamente puede contar hasta 255.
¿Qué se puede hacer?
![Page 10: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/10.jpg)
¿Cómo contar 1 segundo?
Contar 15625 es lo mismo que contar 125 veces 125, con la diferencia de que el número 125 sí cabe en el registro del timer.
Entonces la idea es contar hasta 125 en el timer y ocupar un registro extra para ir contando las veces que hacemos eso. Cuando lleguemos a 125 en el registro extra, ha pasado exactamente un segundo.
![Page 11: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/11.jpg)
¿Cómo contar 1 segundo?
Para que el timer sólo cuente 125, tenemos que hacer que su valor inicial sea 130 (de 130 a 255 hay 125)
Asimismo, al registro extra lo tenemos que inicializar con 125, para ir restándole 1 cada vez y cuando el registro llegue a 0, sabemos que ya pasó un segundo.
Pero…
¿Cómo sabemos que el timer dio una vuelta?
![Page 12: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/12.jpg)
Interrupciones Para reconocer que algo ha pasado,
se usan las interrupciones, por ejemplo para cuando el timer se da la vuelta.
- Interrupción de Timer- Interrupción de RB0/int- Interrupción de RB4->RB7- Interrupción de EE Write Complete
![Page 13: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/13.jpg)
Un ejemplo… Interrupción de Timer
• Hay que activarla con el bit 5 del registro INTCON (poner un 1)• El bit 2 del registro INTCON nos dice si hay (se lee un 1) o no hay (se lee un 0) interrupción de timer. • Después de que se leyó un 1 (hay interrupción de timer), se debe escribir un cero con el programa
![Page 14: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/14.jpg)
Funcionamiento Un PIC nuevo viene vacío, no hace nada Para decirle al microcontrolador lo que
queremos que haga, necesitamos escribir un programa en el computador y grabárselo en la memoria
Se puede grabar y volver a grabar muchas veces distintos programas en el mismo PIC16F84A
![Page 15: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/15.jpg)
Pasos para grabar un programa
Ir a un PC y escribir el código en ASSEMBLER
Compilar el archivo Conectar el PIC a un programador de
PIC’s que se conecta al PC Grabar el archivo compilado al PIC
![Page 16: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/16.jpg)
Funcionamiento
Ahora que ya tenemos el programa en el PIC, podemos sacarlo y ponerlo en el circuito
Al alimentar con corriente al PIC, veremos cómo ejecuta las acciones que le dijimos que hiciera en el programa
Con esto se ahorra mucho trabajo
![Page 17: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/17.jpg)
Instrucciones en ASSEMBLER
BCF f,bColoca en Cero un determinado Bit.Este comando pone en Cero el Bit "b" del registro "f".
BSF f,bColoca en uno determinado Bit.Este comando Pone en 1 el Bit "b" del registro "f".
![Page 18: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/18.jpg)
Instrucciones en ASSEMBLER
BTFSC f,bPrueba el Bit b del registro f .Este comando prueba el Bit "b" del registro "f" y salta una linea si f,b está en 0.
BTFSS f,bPrueba el Bit b del registro f.Este comando prueba el Bit "b" del registro "f" y salta una linea si está en 1.
![Page 19: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/19.jpg)
Instrucciones en ASSEMBLER
GOTO kEl programa salta a una dirección con el nombre "k". (etiqueta)
CALL kLlamada de una Subrutina con el nombre k. (requiere un RETURN al final de la subrutina)
![Page 20: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/20.jpg)
Instrucciones en ASSEMBLER
RETFIERetorno de llamado a interrupción.
RETURNRetorno desde una subrutina
![Page 21: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/21.jpg)
Instrucciones en ASSEMBLER
MOVLW kSe carga el registro "W" con el contenido del literal "k“
MOVWF fCopia el contenido del registro "W" al registro “f”
![Page 22: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/22.jpg)
Instrucciones en ASSEMBLER
CLRF fBorra el registro f. Esta instrucción borra un registro especifico.
CLRWBorra el registro W.Esta instrucción borra el registro "W" solamente.
![Page 23: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/23.jpg)
Instrucciones en ASSEMBLER
DECFSZ f,dEsta instrucción decrementa en una sola unidad elregistro "f" en la cual si el registro "f" queda igual a ceroentonces salta una línea
INCFSZ f,dEsta instrucción incrementa en una sola unidad el registro"f" en la cual si el registro "f" queda igual a cero entoncessalta a una línea
![Page 24: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/24.jpg)
Registros
STATUSOPTION_REGINTCONTRISATRISBPORTAPORTBTIMER0
B it 7 B it 6 B it 5 B it 4 B it 3 B it 2 B it 1 B it 0
![Page 25: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/25.jpg)
Registros
Por ejemplo, si queremos tener interrupciones de timer debemos configurar el registro INTCON de la siguiente manera:
1 0 1 0 0 0 0 0
B it 7 B it 6 B it 5 B it 4 B it 3 B it 2 B it 1 B it 0
Eso se consigue con el siguiente código:
MOVLW 10100000MOVWF INTCON
![Page 26: Microcontroladores PIC16F84A. Conociendo al PIC16F84A Posee 18 pines, de los cuales 13 son de I/O Memoria para guardar programas Timer/Contador.](https://reader035.fdocuments.mx/reader035/viewer/2022081417/5665b4331a28abb57c8fec1c/html5/thumbnails/26.jpg)
Registros Extra
Se pueden crear registros adicionales que pueden ser usados libremente por el usuario. Éstos son de 8 bits al igual que todos los que hemos visto hasta ahora.Se tienen que definir en la parte inicial del programa de la siguiente forma:
REGA equ h’0C’ ;registro extra AREGB equ h’0D’ ;registro extra BREGC equ h’0E’ ;registro extra CREGD equ h’0F’ ;registro extra DREGE equ h’10’ ;registro extra E... ... ... ...