SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
MICROCONTROLADOR 16F628
DESCRIPCION DE PINES
N o m b r e Pin # Tipo E/S/P Tipo Buffer
RA0 / AN0 17 E/S ST
RA1 / AN1 18 E/S ST
RA2 / AN2 / VREF 1 E/S ST
RA3 / AN3 / CMP1 2 E/S ST
RA4 / TOCKI / CMP2 3 E/S ST
RA5 / MCLR / THV 4 E/P ST
RA6 / OSC2 / CLKOUT 15 E/S ST
RA7 / OSC1 / CLKIN 16 E/S ST
RB0 / INT 6 E/S TTL
RB1 / RX / DT 7 E/S TTL
RB2 / TX / CK 8 E/S TTL
RB3 / CCP1 9 E/S TTL
RB4 / PGM 10 E/S TTL
RB5 11 E/S TTL
RB6 / T1OSO / T1CKI 12 E/S/P TTL
RB7 / T1OSI 13 E/S/P TTL
VSS 5 P ----
VDD 14 P ----
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 1
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
BANCOS DE REGISTROS DEL PIC 16F628
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 2
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
CONJUNTO DE INSTRUCCIONES
El conjunto de instrucciones de los microprocesadores PIC 16FXXX consiste en un
pequeño repertorio de solo 35 instrucciones. En este curso se ha optado por clasificarlas,
desde el punto de vista del programador, en cinco categorías bien definidas de acuerdo con
la función y el tipo de operandos involucrados.
Instrucciones de Byte que operan con Registros
Estas instrucciones pueden ser de simple o doble operando de origen. El primer operando
de origen será siempre el registro seleccionado en la instrucción, el segundo, en caso de
existir, será el registro W.
El destino, es decir donde se guardara el resultado, será el registro seleccionado o el W,
según se seleccione con un bit de la instrucción.
El formato genérico de estas instrucciones es el siguiente :
11 10 9 8 7 6 5 4 3 2 1 0
d f f f f f
Los bits 0 a 4 (5 bits), denominados “f” permiten seleccionar uno de 35 registros de la
memoria interna. El bit 5, denominado “d”, permite especificar el destino del resultado.
Si d = 1 el resultado se guardara en el registro seleccionado. Si d = 0 el resultado se
guardara en W. Los bits 6 a 11 identifican la instrucción especifica a realizar.
Instrucciones de operaciones lógicas de doble operando :
ANDWF f,d ;operación AND lógica, destino = W Ù f
IORWF f,d ;operación OR lógica, destino = W Ú f
XORWF f,d ;operación XOR lógica, destino = W Å f
Los nombres mnemónicos de estas instrucciones provienen de :
AND W con F, Inclusive OR W Con F y XOR W con F.
Instrucciones de operaciones aritméticas y lógicas sencillas de simple operando :
MOVF f,d ;movimiento de datos, destino = f
COMF f,d ;complemento lógico, destino = NOT f
INCF f,d ;incremento aritmético, destino = f + 1
DECF f,d ;decremento aritmético, destino = f - 1
Los mnemónicos de estas instrucciones provienen de :
MOVe File, COMplement File, NCrement File y DECrement File.
En las siete instrucciones anteriores el único bit afectado de la palabra de estado del
procesador es el Z, que se pone en 1 si el resultado de la operación es 00000000, y se
pone en 0 si el resultado tiene cualquier otro valor.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 3
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
Instrucciones de rotación de bits a través del CARRY :
RLF f,d ;rotación a la izquierda, destino = f ROT
RRF f,d ;rotación a la derecha, destino = f ROT
En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de cada
posición a la siguiente, en sentido derecho o izquierdo. El desplazamiento es cerrado,
formando un anillo, con el bit C (CARRY) de la palabra de estado.
En estas dos instrucciones, el único bit afectado de la palabra de estado del procesador es
el bit C, que tomará el valor que tenia el bit 7 o el bit 0, según sea el sentido del
desplazamiento.
Estas instrucciones son muy útiles para la manipulación de bits, y además para realizar
operaciones aritméticas, ya que en numeración binaria, desplazar un número a la izquierda
es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2.
Instrucción que realiza el intercambio de posiciones entre los cuatro bits menos
significativos y los cuatro más significativos (nibble bajo y nibble alto).
SWAPF f,d ;intercambia nibbles, destino = SWAP f
Esta instrucción (SWAP File) no afecta ninguno de los bits de la palabra de estado del
procesador. Esta instrucción es muy útil para el manipuleo de números BCD
empaquetados, en los que en un solo byte se guardan dos dígitos BCD (uno en cada
nibble).
Instrucciones de operaciones de la suma y la resta aritméticas :
ADDWF f,d ;suma aritmética, destino = f + W
SUBWF f,d ;resta aritmética, destino = f - W
Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C, DC
y Z.
El bit Z se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el
resultado tiene cualquier otro valor.
La suma se realiza en aritmética binaria pura sin signo. Si hay un acarreo del bit 7, es decir
que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario resulta 0.
Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles) menos
significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit carry), en caso
contrario se pone en 0.
Ejemplos :
1010 0010 1101 0000
+ 0100 1111 C DC Z + 0110 1111 C DC Z
1111 0001 0 1 0 0011 1111 1 0 0
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 4
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
La resta se realiza sumando, en binario puro sin signo, el registro f más el complemento a
dos de W (el complemento a 1, o complemento lógico, más 1)
Ejemplos :
f  0100 0100 0010 1000
W  - 0010 1000 C DC Z - 0100 0100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0
equivalente a :
f  0100 0100 0010 1000
cmp.2 W  + 1101 1000 C DC Z + 1011 1100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0
Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el
complemento a 2 de W. De esta manera el significado para la operación de resta resulta
invertido, es decir que C (carry) es 1 si no hubo desborde en la resta, o dicho de otra
manera, si el contenido de W es menor que el de f.
El bit DC se comporta de manera similar, es decir que DC es 1 si no hubo desborde en la
mitad menos significativa, lo que equivale a decir que el nibble bajo del contenido de W es
menor que el del registrof.
Instrucciones de simple operando y el destino es siempre el registro seleccionado :
CLRF f ;borrado de contenido, f = 0
MOVWF f ;copia contenido W a f, f = W
La instrucción CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0.
La instrucción MOVWF (MOVe W a F) no afecta ningún bit de la palabra de estado.
- Instrucciones de Byte que operan sobre W y Literales
Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de
origen y el operando de destino son siempre el registro W. En las instrucciones de este
grupo que tienen un segundo operando de origen, este es siempre una constante de
programa literalmente incluida en la instrucción, llamada constante literal o simplemente
literal.
El formato genérico de estas instrucciones es el siguiente :
11 10 9 8 7 6 5 4 3 2 1 0
k k k k k k k k
Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operación.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 5
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
Las tres instrucciones que siguen son las operaciones lógicas tradicionales, similares a las
que ya vimos anteriormente, pero realizadas entre una constante de programa y el registro
W :
IORLW k ; operación OR lógica, W = W Ú k
ANDLW k ; operación AND lógica, W = W Ù k
XORLW k ; operación XOR lógica, W = W Å k
En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W) el único
bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el resultado
de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor.
Instrucción que cargar una constante de programa en el registro W :
MOVLW k ;carga constante en W, W = K
Esta (MOVe Literal W) instrucción no afecta ninguno de los bits de estado del procesador.
La instrucción que sigue (CLeaR W) no correspondería incluirla en este grupo, y pertenece
en realidad al primero, el de las instrucciones que operan sobre registros, ya que se trata de
un caso especial de la instrucción CLRF, con destino W, y f = 0.
La incluimos aquí porque como se le ha asignado un mnemónico particular referido
específicamente al registro W, creemos que, desde el punto de vista del programador, es
más útil verla dentro del grupo de instrucciones referidas a W.
CLRW ;borra el contenido de W, W = 0
Al igual que en la instrucción CLRF, el único bit de estado afectado es el Z que resulta1
- Instrucciones de Bit
El formato genérico de estas instrucciones es el siguiente :
11 10 9 8 7 6 5 4 3 2 1 0
b b b F f f f f
Los bits 0 a 4 (5 bits), denominados “f”, permiten seleccionar uno de 35 registros de la memoria
interna. Los bits 5 a 7, denominados “b”, permiten especificar el numero de bit (0 a 7) sobre el que se
operara. Estas instrucciones operan solamente sobre el bit especificado, el resto de los bits del registro
no son alterados.
Estas instrucciones no tienen especificación de destino, ya que el mismo es siempre el registro
seleccionado.
BCF f,b ; borra el bit b de f ;bit f(b) = 0
BSF f,b ; coloca en uno el bit b de f ;bit f(b) = 1
Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de
estado del procesador.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 6
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
- Instrucciones de Control
GOTO k ;salto a la posición k (9 bits) del programa
Esta es la típica instrucción de salto incondicional a cualquier posición de la memoria de
programa .
La constante literal k es la dirección de destino del salto, es decir la nueva dirección de
memoria de programa a partir de la cual comenzarán a leerse las instrucciones después de
ejecutar la instrucción GOTO.
Esta instrucción simplemente carga la constante k en el registro PC (contador de
programa). La única complicación de esta instrucción es que la constante k es de solo 9
bits, mientras que el registro PC es de 11 bits, ya que en el 16F628 debe permitir
direccionar una memoria de programa de 2 K.
Los dos bits faltantes, bit 9 y 10 del PC, son tomados respectivamente de los bits de
selección de página PA0 y PA1 de la palabra de estado.
Este comportamiento particular hace que la memoria de programa aparezca como dividida
en paginas de 512 posiciones como se vera más adelante.
El programador debe tener en cuenta que antes de ejecutar una instrucción GOTO es
posible que haya que programar los bits PA0 y PA1.
CALL k ;salto a la subrutina en la posición k (8 bits)
Su comportamiento es muy similar al de la instrucción GOTO, salvo que además de saltar
guarda en el stack la dirección de retorno de la subrutina (para la instrucción RETLW).
Esto lo hace simplemente guardando en el stack una copia del PC incrementado, antes de
que el mismo sea cargado con la nueva dirección k.
La única diferencia con la instrucción GOTO respecto de la forma en la que se realiza el
salto, es que en la instrucción CALL la constante k tiene solo 8 bits en vez de 9.
En este caso también se utilizan PA0 y PA1 para cargar los bits 9 y 10 del PC, pero
además el bit 8 del PC es cargado siempre con 0.
Esto hace que los saltos a subrutina solo puedan realizarse a posiciones que estén en las
primeras mitades de las paginas mencionadas.
El programador debe tener en cuenta este comportamiento y asegurarse de ubicar las
posiciones de inicio de las subrutinas en las primeras mitades de las paginas.
La instrucción que aparece a continuación es la de retorno de subrutina:
RETLW k ;retorno de subrutina con constante k, W = k
Esta (RETurn con Literal in W) instrucción produce el retorno de subrutina con una constante literal
k en el registro W. La operación que realiza consiste simplemente en sacar del stack un valor y
cargarlo en el PC.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 7
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
Ese valor es el PC incrementado antes de realizar el salto, de la ultima instrucción CALL
ejecutada, por lo tanto es la dirección de la instrucción siguiente a dicho CALL.
Dado que el stack es de 11 bits, el valor cargado en el PC es una dirección completa, y por
lo tanto se puede retornar a cualquier posición de la memoria de programa, sin importar
como estén los bits de selección de pagina.
Esta instrucción además carga siempre una constante literal en el registro W. Ya que esta
es la única instrucción de retorno de subrutina de los PIC16FXXX, no hay en estos
microprocesadores forma de retornar de una subrutina sin alterar el registro W.
Por otro lado, y con una metodología especial de programación, un conjunto de sucesivas
instrucciones RETLW puede ser usado como una tabla de valores constantes incluida en el
programa (Ej. : tablas BCD/7 seg.).
Instrucciones de “salto” (skip) condicional.
Estas instrucciones son los únicos medios para implementar bifurcaciones condicionales en
un programa.
Son muy generales y muy poderosas ya que permiten al programa tomar decisiones en
función de cualquier bit de cualquier posición de la memoria interna de datos, y eso incluye
a los registros de periféricos, los puertos de entrada/salida e incluso la palabra de estado
del procesador.
Estas dos instrucciones reemplazan y superan a todo el conjunto de instrucciones de salto
condicional que poseen los microprocesadores sencillos convencionales
(salto por cero, por no cero, por carry, etc.).
BTFSC f,b ;salta si bit = 0
BTFSS f,b ;salta si bit = 1
BTFSC (Bit Test File and Skip if Clear) saltea la próxima instrucción si el bit b del registro f
es cero.
BTFSS (Bit Test File and Skip if Set) saltea si el bit es 1.
Estas instrucciones pueden usarse para realizar o no una acción según sea el estado de un
bit, o, en combinación con GOTO, para realizar una bifurcación condicional.
Ejemplo 1 : Ejemplo 2:
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 8
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
Las instrucciones que siguen son casos especiales de las de incremento y decremento
Estas instrucciones podrían categorizarse dentro del grupo de instrucciones orientadas a
byte sobre registros (primer grupo), ya que efectivamente operan sobre los mismos, y el
formato del código de la instrucción responde al de ese grupo, pero, a diferencia de las
otras, pueden además alterar el flujo lineal del programa y por eso se les incluyó en este
grupo.
DECFSZ f,d ;decrementa y salta sí 0, destino= f - 1
INCFSZ f,d ;incrementa y salta sí 0, destino= f + 1
Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if
Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a ningún bit de
la palabra de estado.
Una vez realizado el incremento o decremento, si el resultado es 00000000, el
microprocesador salta la próxima instrucción del programa. Estas instrucciones se utilizan
generalmente en combinación con una instrucción de salto (GOTO), para el diseño de ciclos
o lazos (loops) de instrucciones que deben repetirse una cantidad determinada de veces.
- Instrucciones Especiales
Instrucciones que controlan funciones específicas del microprocesador o que actúan sobre
registros especiales no direccionados como memoria interna normal.
La instrucción que sigue es la típica NO OPERATION.
NOP ;no hace nada, consume tiempo
Esta instrucción solo sirve para introducir una demora en el programa, equivalente al tiempo
de ejecución de una instrucción. No afecta ningún bit de la palabra de estado.
La instrucción que sigue borra el contador del watch dog timer.
Este registro tampoco esta accesible como memoria, y esta es la única instrucción que lo
modifica.
CLRWDT ;borra el watch dog timer, WDT = 0
Esta instrucción, además, coloca en uno los bits PD (power down) y TO (time-out) de la
palabra de estado.
La siguiente es una instrucción especial de control del microcontrolador que lo pone en el
modo power down. En este modo el microprocesador se detiene, el oscilador se apaga, los
registros y puertos conservan su estado, y el consumo se reduce al mínimo. La única forma
de salir de este estado es por medio de un reset o por time-out del watch dog timer.
SLEEP ;coloca el µC en modo sleep, WDT = 0
Esta instrucción, además, borra el bit PD (power down) y setea el bit TO (time-out) de la
palabra de estado.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 9
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 10
INSTRUCCIONES DEL PIC 16FXXX
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
ENCENDER UN LED A TRAVES DEL PUERTOB DEL PIC
Puertos de Entrada y Salida
La principal utilidad de las patitas que contiene un microcontrolador es soportar las líneas
de E/S que comunican al computador interno con los periféricos exteriores.
Según los controladores de periféricos de los microcontroladores, las líneas de E/S se
destinan a proporcionar el soporte a las señales de entrada, salida y control.
Reloj principal
El oscilador genera una onda cuadrada de alta frecuencia, que configura los impulsos de
reloj usados en la sincronización de las operaciones del sistema.
Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se
necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia
de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos
pasivos o bien un resonador cerámico o una red R-C.
Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las
instrucciones pero lleva aparejado un incremento del consumo de energía
Para las personas que no están de todo familiarizados con el tema es bueno recordar que
es el led. LED según sus siglas en ingles (Light Emitting Diode) se traduce como diodo
emisor de luz, que es un dispositivo semiconductor (vea el dibujo de abajo) de dos
terminales nominados como cátodo (terminal negativa) y ánodo (terminal positiva).
Si polarizamos nuestro led directamente este va a producir un haz de luz y con la
polarización inversa va a permanecer apagado. A veces el funcionamiento de los diodos es
comparado con los switches que se prenden y se apagan.
Polarización directa Polarización inversa
Una vez familiarizados con el hardware podemos proseguir con el software.
Antes de ponerse a escribir el programa es aconsejable analizar primero los registros que
se van a emplear en el dicho programa.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 11
Ánodo
+
Cátodo
Ánodo
--
+
Cátodo
luz
PRACTICA
1
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
Registro STATUS
Nosotros respetaremos la nomenclatura inglesa, pero escribiremos las variables que nos
interesan. El motivo es muy simple: en ese PIC16F628 no se ha considerado el problema
de los bancos de memoria, que se deben intercambiar a través del registro de estado.
De este modo para nosotros PORTB representará al puerto B, TRISB será el mismo y W
será el registro de trabajo.
El programa, por lo demás, es bastante evidente. Necesitamos sólo introducir el sentido de
los TRIS. Este registro está asociado a los distintos puertos y en él cada bit representa un
pin del puerto al que se refiera. Un 0 en uno de sus bits representará que el pin es de
salida, y un 1 que es de entrada.
De este modo cada pin será independiente, dándonos mayor flexibilidad para la
implementación física de los diseños. Es posible incluso, aunque no habitual, cambiar la
dirección del pin durante la ejecución del programa.
Esta opción puede llegar a darnos la posibilidad de manejar varios dispositivos con un solo
puerto.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 12
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
SET DE INSTRUCCIONES UTILIZADAS EN LA PROGRAMACION
1. BCF f, b : Con esta instrucción se pone en 0 el bit b del registro f
Ejemplo: Si se tiene en el puerto A ( PORTA ) = 1010 y se quiere colocar en cero el tercer bit, la
instrucción es la siguiente: BCF PORTA , 3.
2. BSF f, b : Con esta instrucción se pone en 1 el bit b del registro f
Ejemplo: Si se tiene en el puerto A ( PORTA ) = 1010 y se quiere colocar en UNO el tercer bit, la
instrucción es la siguiente: BSF PORTA , 3.
3. GOTO K : realiza un salto incondicional a la dirección llamada k del programa
Ejemplo: GOTO CONFIG quiere decir salte a la parte de configuración del programa.
4.CLRF F : Borra el contenido del registro, cuyo valor quedaría en 00000000
DESCRIPCIÓN DE NUESTRA PRACTICA
ENCENDER UN LED
Como inicio antes de empezar el programa en si, se deberá configurar el PIC, de forma que
funciones a nuestras necesidades, esto quiere decir que debemos decirle como vamos a
usar sus puertos, si van a ser de entrada o de salida, en nuestro caso solo requerimos de
un solo puerto (puerto b7), y conectado a él, el respectivo led a encender con su
resistencia para evitar un flujo de corriente muy grande, tal que pueda dañar nuestro pic.
Después de la configuración inicial, y haber pasado por los respectivos bancos como se
ilustrará en el programa, aseguraremos de que el puertob este en ceros y para ello
borraremos el contenido con la instrucción de borra registro (CLRF), en este caso dirigido
al registro PORTB, que es el puerto b que
vamos a manipular. Luego sencillamente daremos la orden de encender el led, y esto se
logra con enviar un uno o positivo por el puertob,7, y con ello se encenderá el led.
Se explica en cuadro los registros TRISB,PORTB Y el bit RP0 del registro STATUS
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 13
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
DIAGRAMA ESQUEMATICO DEL CIRCUITO
.
DIAGRAMA DE FLUJO DEL PROGRAMA DE ENCENDER EL LED
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 14
INICIO
BANCO1
TRIS,7 => 0
BANCO0
Borrar puertoB
Portb,7=> 1
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
PROGRAMA PARA ENCENDER UN LED CON EL PIC 16F628
LIST P=16F628
INCLUDE <P16F628.INC>
ORG 00
GOTO INI
ORG 05
INI BSF STATUS,RP0 ;IREMOS AL BANCO1
BCF TRISB,7 ;EL PUERTO RB7 ESTARA COMO SALIDA
BCF STATUS,RP0 ;DEVUELTA AL BANCO0
CLRF PORTB ;PARA BORRAR EL PUERTO Y QUEDE EN CEROS
BSF PORTB,7 ;ENVIA UN 1(5V) A RB7 PARA ENCENDER LED
GOTO $ ;EL CONTADOR DEL PROGRAMA SE QUEDARÁ AQUI
END
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 15
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
El ENCENDIDO DE UN LED EN FORMA INTERMITENTE
Acordémonos que el objetivo esta vez no es solamente prender el led sino también
apagarlo y volver a prender en una forma periódica o cíclica La pregunta es: ¿Cómo se
logra la semejante operación?
La respuesta a esa pregunta es SUBRUTINA. La pregunta de inmediata que surge es:
¿y que es una subrutina? Una subrutina es una parte del programa principal que se
dedica a una tarea especifica.
Ejemplos de subrutinas:
- una subrutina que periódicamente me observa el estado lógico de un puerto
- una subrutina que se encargue de realizar cálculos de determinadas variables
en fin es la libertad del programador de asignar una determinada tarea a la subrutina.
El uso de subrutinas, siendo sencillo y no requiriendo un apartado específico, es esencial,
puesto que simplifica los programas, haciéndolos, además, más modulares. Llamaremos a
una subrutina con la instrucción CALL, seguida de la etiqueta que la encabeza o su
dirección en memoria.
Para regresar a la siguiente instrucción tras el CALL bastará con situar, en la última línea
de la subrutina, el comando RETURN; también será posible emplear RETLW k, el cuál se
diferencia del anterior por situar en el registro W el valor k.
En el caso de nuestra practica vamos a desarrollar una subrutina que se conoce con el
nombre de retardo.
El retardo o subrutina se encarga de que el programa principal en un determinado
momento se queda parada por un tiempo que nosotros queremos que se detenga.
Para ser mas concreto, al prender el led necesitamos que se quede prendido por un
tiempo, después tenemos que apagarlo y mantenerlo apagado por otro rato y volver a hacer
todo el procedimiento de nuevo.
Ahora, como se arma una subrutina en el lenguaje de programación que nosotros estamos
usando o sea MPLAB? La forma mas clásica de armar una subrutina es usando las
instrucciones CALL y RETURN.
Donde la instrucción CALL es usado por el programa principal para llamar la subrutina ,
donde esa a su vez realiza su tarea asignada ( en nuestro caso es un retardo en el
tiempo) y retorna al programa principal de donde la llamaron usando la instrucción
RETURN.
Ya sabiendo como se arma una subrutina necesitamos saber como se hace el dicho retardo
del tiempo que es la tarea de la subrutina, para eso observamos la siguiente subrutina:
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 16
PRACTICA
2
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
RETARDO MOVLW .255 ;Se carga un registro CONTADOR
MOVWF CONTADOR ;con un valor máximo decimal de 255
OTRAVEZ DECFSZ CONTADOR ;Se decrementa el dicho registro en uno
GOTO OTRAVEZ ;Si CONTADOR no es cero se decrementa
;otra vez
RETURN ;Al llegar a cero la subrutina RETARDO
;retorna al programa principal
Usando un diagrama de flujos la rutina anterior se puede representar de la siguiente forma.
Del ejemplo anterior lo que vemos es que la subrutina RETARDO se toma 255 veces
haciendo la misma instrucción DECFSZ antes de retornar al programa principal.
Sí nos acordamos que estamos trabajando con un cristal de 4 MHz, donde esa frecuencia
es dividida internamente por el µC por cuatro, 4MHz/4 = 1MHz, eso quiere decir que el
micro se demora 1 microsegundo para realizar una instrucción
T = 1/f = 1/1MHz = 1µseg.
Por lo tanto la subrutina RETARDO lo que hace es hacer un retardo aproximadamente de
255 microsegundos. Desafortunadamente en la vida real un retardo de 255 microsegundos
es demasiado rápido para el ojo humano y no es percibido.
Para solucionar este problema se recurre a una técnica llamada anidamiento, lo que hace
es en si es manipular varias variables, y decrementarlas de forma que cuando termine una
continúe con la otra, mejor que cuando una variable termine, decremente la otra en una
unidad, y vuelva y se cargue de nuevo con un valor, lo que quiere decir que sus cantidades
se multiplicarían.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 17
CONTADOR ←255
CONTADOR - 1
¿CONTADO
R
= 0 ?
RETORNAR
SI
NO
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
Veamos un ejemplo:
Cuando reg3 se va decrementando, ,lo sigue haciendo hasta que su valor establecido
llegue a cero, y cuando esto pasa, decrementa a la siguiente variable (reg2), una unidad, y
de nuevo se carga reg3 con el valor establecido, lo que quire decir que este anidamiento
consumira aproximadamente 90.000 ciclos de instrucion aproximadamente, o quizas
mucho mas si es implementado en un pic, pues las instrucciones aplicadas para estos
decrementos según el caso en un pic, suelen consumir 2 ciclos de instruccion, por lo que
quiere decir que si tenemos en cuenta estos retornos (el volver a un punto del
anidamiento), podrian consumir con estos valores no 90.000 sino hasta casi 270.000
ciclos de instruccion aproximadamente, aunque los anidamientos se pueden hacer de
muchas formas según el programador, por lo que no existe un solo metodo, sino muchos y
cada cual se acomoda a varias
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 18
retardo
reg1=100
reg2=30
reg3=30
reg3 - 1=reg3
reg3=
0
reg2 - 1=reg2
reg2=
0
reg1 - 1=reg1
reg1=
0
retorne
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
necesidades, pero en nuestra practica se implementará una de las mas sencillas formas, e
incluso de las mas usadas.
El anidamiento tiene como funcion mas comun la de crear retardos en el programa, esto es
porque algunas actividades que hace el pic son muy rapidas, y para que los humanos las
podamos percibir, debemos dilatar el tiempo para percibir lo que pasa.
Precisamente , el percibir o retener tiempo,será la aplicación en nuestra practica, pues el
objetivo es el de encender y apagar el led, y entre el encendido y apagado, debemos dejar
que dure un tiempo encendido y un tiempo apagado.
SET DE INSTRUCCIONES NUEVAS UTILIZADAS EN LA PROGRAMACION
DECFSZ f,d: decrementa el registro f en uno y salta si el resultado es cero, el
valor lo almacena en el registro w o en el registro f.
Ejemplo: Se carga la variable numero con 5 y se desea decrementar la
variable numero en 1 hasta que el resultado sea cero, si es así salte a la
dirección fin , si no continué decrementando hasta que sea cero
MOVLW D`05
MOVWF NUMERO
SIGUE DECFSZ NUMERO,1
GOTO SIGUE
GOTO FIN
DESCRIPCION DEL CIRCUITO
Como se había dicho anteriormente, el objetivo era el de encender un led de forma
intermitente, para que se observara este efecto, de debe recurrir a los retardos por
anidamiento.
Iniciamos primero configurando el pic, en el caso para que el pin RB7 nos funcione como
salida.
Después para asegurar de que empiece apagado, borraremos el puerto con la instrucción
CLRF PORTB, luego si damos la orden que se encienda el led, y para que podamos ver si
se enciende y se apaga, daremos un retardo de encendido, que durara mas o menos un
segundo, si se usa un cristal de 4MHz, luego de que termine el retardo, apagaremos el led,
y de nuevo llamaremos el retardo, y se repetirá este ciclo indefinidamente, por lo que no
tiene final, a menos que quitemos la alimentación.
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 19
NIVEL 1 PIC 16F628 TEORIA Y PRACTICA
DIAGRAMA DE FLUJO PARA EL LED INTERMITENTE
DIAGRAMA ESQUEMATICO DEL CIRCUITO
DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 20
CONFIGURACIÓN
DEL PUERTO
ENCENDER LED
LLAMAR RETARDO
LLAMAR RETARDO
APAGAR EL LED
INICIO
LIMPIAR PORTB

Más contenido relacionado

La actualidad más candente

Redes para el grupo (2)
Redes para el grupo (2)Redes para el grupo (2)
Redes para el grupo (2)jcardenas0107
 
Códigos de línea
Códigos de líneaCódigos de línea
Códigos de líneaOscar Llanos
 
Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...
Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...
Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...RFIC-IUMA
 
Moduladores Y Demoduladores Am
Moduladores Y Demoduladores AmModuladores Y Demoduladores Am
Moduladores Y Demoduladores AmAlberto Jimenez
 
Sistemas de Numeracion
Sistemas de NumeracionSistemas de Numeracion
Sistemas de Numeracionwarrionet
 
9.1 Red telefonica publica conmutada
9.1  Red telefonica publica conmutada9.1  Red telefonica publica conmutada
9.1 Red telefonica publica conmutadaEdison Coimbra G.
 
Electrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdf
Electrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdfElectrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdf
Electrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdfSANTIAGO PABLO ALBERTO
 
Canales de comunicación y dispositivos de red de información tics
Canales de comunicación y dispositivos de red de información ticsCanales de comunicación y dispositivos de red de información tics
Canales de comunicación y dispositivos de red de información ticsEvelyn Soria
 
Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler Anllel Cardenas Yllanes
 
Presentación Red Telefónica Conmutada
Presentación Red Telefónica ConmutadaPresentación Red Telefónica Conmutada
Presentación Red Telefónica ConmutadaMontañeros Burgaleses
 
Señalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / Sigtran
Señalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / SigtranSeñalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / Sigtran
Señalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / SigtranEng. Fernando Mendioroz, MSc.
 
Red telefónica de conmutación pública pstn
Red telefónica de conmutación pública pstnRed telefónica de conmutación pública pstn
Red telefónica de conmutación pública pstnChristopher Rodriguez
 
Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...
Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...
Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...Kevin Jessid
 
Ejercicios compuertas logicas
Ejercicios compuertas logicasEjercicios compuertas logicas
Ejercicios compuertas logicasjose canas
 

La actualidad más candente (20)

Tipos de amplificadores
Tipos de amplificadoresTipos de amplificadores
Tipos de amplificadores
 
Redes para el grupo (2)
Redes para el grupo (2)Redes para el grupo (2)
Redes para el grupo (2)
 
Códigos de línea
Códigos de líneaCódigos de línea
Códigos de línea
 
Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...
Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...
Diseño de un Amplificador de Bajo Ruido (LNA) para un Receptor Basado en el ...
 
Moduladores Y Demoduladores Am
Moduladores Y Demoduladores AmModuladores Y Demoduladores Am
Moduladores Y Demoduladores Am
 
Televisión Digital terrestre (TDT)
Televisión Digital terrestre (TDT)Televisión Digital terrestre (TDT)
Televisión Digital terrestre (TDT)
 
Sistemas de Numeracion
Sistemas de NumeracionSistemas de Numeracion
Sistemas de Numeracion
 
9.1 Red telefonica publica conmutada
9.1  Red telefonica publica conmutada9.1  Red telefonica publica conmutada
9.1 Red telefonica publica conmutada
 
cable estructurado
cable estructuradocable estructurado
cable estructurado
 
Electrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdf
Electrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdfElectrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdf
Electrónica: Sistemas de comunicaciones electrónicas Tomasi 4ta Edicion.pdf
 
Señales
SeñalesSeñales
Señales
 
Canales de comunicación y dispositivos de red de información tics
Canales de comunicación y dispositivos de red de información ticsCanales de comunicación y dispositivos de red de información tics
Canales de comunicación y dispositivos de red de información tics
 
Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler Set de 35 instrucciones para pic16f877A programación en assembler
Set de 35 instrucciones para pic16f877A programación en assembler
 
Presentación Red Telefónica Conmutada
Presentación Red Telefónica ConmutadaPresentación Red Telefónica Conmutada
Presentación Red Telefónica Conmutada
 
Practica1m
Practica1mPractica1m
Practica1m
 
Señalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / Sigtran
Señalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / SigtranSeñalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / Sigtran
Señalización en Redes Telefónicas Públicas Conmutadas SS7 / DSS1 / Sigtran
 
Red telefónica de conmutación pública pstn
Red telefónica de conmutación pública pstnRed telefónica de conmutación pública pstn
Red telefónica de conmutación pública pstn
 
Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...
Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...
Generadores de Señal y Conformadores de Ondas Con Circuitos Monoestable y Ast...
 
Ejercicios compuertas logicas
Ejercicios compuertas logicasEjercicios compuertas logicas
Ejercicios compuertas logicas
 
Amplitud modulada 12
Amplitud modulada 12Amplitud modulada 12
Amplitud modulada 12
 

Similar a pic-16F628 generalidades y prog 1y2.pdf

Instrucciones para programar el PIC16F877 (1).pdf
Instrucciones para programar el PIC16F877 (1).pdfInstrucciones para programar el PIC16F877 (1).pdf
Instrucciones para programar el PIC16F877 (1).pdfssusere7e6cd
 
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Anllel Cardenas Yllanes
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2Luis Zurita
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xConstructora Kaizen
 
Organizacion-de-la-unidad-central-de-procesamiento
Organizacion-de-la-unidad-central-de-procesamientoOrganizacion-de-la-unidad-central-de-procesamiento
Organizacion-de-la-unidad-central-de-procesamientoJosé Luis Olivares
 
Intrucciones 16 bits.pdf
Intrucciones 16 bits.pdfIntrucciones 16 bits.pdf
Intrucciones 16 bits.pdfDaginni78
 
Organizacion de la unidad central de procesamiento
Organizacion de la unidad central de procesamientoOrganizacion de la unidad central de procesamiento
Organizacion de la unidad central de procesamientoHarold Torres
 
Lab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84aLab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84almendi
 
Lab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84aLab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84almendi
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03Cristian Ortiz Gómez
 

Similar a pic-16F628 generalidades y prog 1y2.pdf (20)

Instrucciones para programar el PIC16F877 (1).pdf
Instrucciones para programar el PIC16F877 (1).pdfInstrucciones para programar el PIC16F877 (1).pdf
Instrucciones para programar el PIC16F877 (1).pdf
 
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87x
 
Instrucciones pic
Instrucciones picInstrucciones pic
Instrucciones pic
 
Clase instrucciones PIC16F877A
Clase instrucciones PIC16F877AClase instrucciones PIC16F877A
Clase instrucciones PIC16F877A
 
Tarea final
Tarea finalTarea final
Tarea final
 
Organizacion-de-la-unidad-central-de-procesamiento
Organizacion-de-la-unidad-central-de-procesamientoOrganizacion-de-la-unidad-central-de-procesamiento
Organizacion-de-la-unidad-central-de-procesamiento
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Intrucciones 16 bits.pdf
Intrucciones 16 bits.pdfIntrucciones 16 bits.pdf
Intrucciones 16 bits.pdf
 
Organizacion de la unidad central de procesamiento
Organizacion de la unidad central de procesamientoOrganizacion de la unidad central de procesamiento
Organizacion de la unidad central de procesamiento
 
Lab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84aLab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84a
 
Lab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84aLab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84a
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Guia 5 3 2015 c2
Guia 5 3 2015 c2Guia 5 3 2015 c2
Guia 5 3 2015 c2
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 

Último

Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOLUISDAVIDVIZARRETARA
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLdanilojaviersantiago
 
Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024CESARHERNANPATRICIOP2
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxvalenciaespinozadavi1
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 

Último (20)

Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
 
Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 

pic-16F628 generalidades y prog 1y2.pdf

  • 1. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA MICROCONTROLADOR 16F628 DESCRIPCION DE PINES N o m b r e Pin # Tipo E/S/P Tipo Buffer RA0 / AN0 17 E/S ST RA1 / AN1 18 E/S ST RA2 / AN2 / VREF 1 E/S ST RA3 / AN3 / CMP1 2 E/S ST RA4 / TOCKI / CMP2 3 E/S ST RA5 / MCLR / THV 4 E/P ST RA6 / OSC2 / CLKOUT 15 E/S ST RA7 / OSC1 / CLKIN 16 E/S ST RB0 / INT 6 E/S TTL RB1 / RX / DT 7 E/S TTL RB2 / TX / CK 8 E/S TTL RB3 / CCP1 9 E/S TTL RB4 / PGM 10 E/S TTL RB5 11 E/S TTL RB6 / T1OSO / T1CKI 12 E/S/P TTL RB7 / T1OSI 13 E/S/P TTL VSS 5 P ---- VDD 14 P ---- DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 1
  • 2. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA BANCOS DE REGISTROS DEL PIC 16F628 DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 2
  • 3. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA CONJUNTO DE INSTRUCCIONES El conjunto de instrucciones de los microprocesadores PIC 16FXXX consiste en un pequeño repertorio de solo 35 instrucciones. En este curso se ha optado por clasificarlas, desde el punto de vista del programador, en cinco categorías bien definidas de acuerdo con la función y el tipo de operandos involucrados. Instrucciones de Byte que operan con Registros Estas instrucciones pueden ser de simple o doble operando de origen. El primer operando de origen será siempre el registro seleccionado en la instrucción, el segundo, en caso de existir, será el registro W. El destino, es decir donde se guardara el resultado, será el registro seleccionado o el W, según se seleccione con un bit de la instrucción. El formato genérico de estas instrucciones es el siguiente : 11 10 9 8 7 6 5 4 3 2 1 0 d f f f f f Los bits 0 a 4 (5 bits), denominados “f” permiten seleccionar uno de 35 registros de la memoria interna. El bit 5, denominado “d”, permite especificar el destino del resultado. Si d = 1 el resultado se guardara en el registro seleccionado. Si d = 0 el resultado se guardara en W. Los bits 6 a 11 identifican la instrucción especifica a realizar. Instrucciones de operaciones lógicas de doble operando : ANDWF f,d ;operación AND lógica, destino = W Ù f IORWF f,d ;operación OR lógica, destino = W Ú f XORWF f,d ;operación XOR lógica, destino = W Å f Los nombres mnemónicos de estas instrucciones provienen de : AND W con F, Inclusive OR W Con F y XOR W con F. Instrucciones de operaciones aritméticas y lógicas sencillas de simple operando : MOVF f,d ;movimiento de datos, destino = f COMF f,d ;complemento lógico, destino = NOT f INCF f,d ;incremento aritmético, destino = f + 1 DECF f,d ;decremento aritmético, destino = f - 1 Los mnemónicos de estas instrucciones provienen de : MOVe File, COMplement File, NCrement File y DECrement File. En las siete instrucciones anteriores el único bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 3
  • 4. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA Instrucciones de rotación de bits a través del CARRY : RLF f,d ;rotación a la izquierda, destino = f ROT RRF f,d ;rotación a la derecha, destino = f ROT En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de cada posición a la siguiente, en sentido derecho o izquierdo. El desplazamiento es cerrado, formando un anillo, con el bit C (CARRY) de la palabra de estado. En estas dos instrucciones, el único bit afectado de la palabra de estado del procesador es el bit C, que tomará el valor que tenia el bit 7 o el bit 0, según sea el sentido del desplazamiento. Estas instrucciones son muy útiles para la manipulación de bits, y además para realizar operaciones aritméticas, ya que en numeración binaria, desplazar un número a la izquierda es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2. Instrucción que realiza el intercambio de posiciones entre los cuatro bits menos significativos y los cuatro más significativos (nibble bajo y nibble alto). SWAPF f,d ;intercambia nibbles, destino = SWAP f Esta instrucción (SWAP File) no afecta ninguno de los bits de la palabra de estado del procesador. Esta instrucción es muy útil para el manipuleo de números BCD empaquetados, en los que en un solo byte se guardan dos dígitos BCD (uno en cada nibble). Instrucciones de operaciones de la suma y la resta aritméticas : ADDWF f,d ;suma aritmética, destino = f + W SUBWF f,d ;resta aritmética, destino = f - W Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C, DC y Z. El bit Z se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. La suma se realiza en aritmética binaria pura sin signo. Si hay un acarreo del bit 7, es decir que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario resulta 0. Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles) menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit carry), en caso contrario se pone en 0. Ejemplos : 1010 0010 1101 0000 + 0100 1111 C DC Z + 0110 1111 C DC Z 1111 0001 0 1 0 0011 1111 1 0 0 DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 4
  • 5. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA La resta se realiza sumando, en binario puro sin signo, el registro f más el complemento a dos de W (el complemento a 1, o complemento lógico, más 1) Ejemplos : f  0100 0100 0010 1000 W  - 0010 1000 C DC Z - 0100 0100 C DC Z 0001 1100 1 0 0 1110 0100 0 1 0 equivalente a : f  0100 0100 0010 1000 cmp.2 W  + 1101 1000 C DC Z + 1011 1100 C DC Z 0001 1100 1 0 0 1110 0100 0 1 0 Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el complemento a 2 de W. De esta manera el significado para la operación de resta resulta invertido, es decir que C (carry) es 1 si no hubo desborde en la resta, o dicho de otra manera, si el contenido de W es menor que el de f. El bit DC se comporta de manera similar, es decir que DC es 1 si no hubo desborde en la mitad menos significativa, lo que equivale a decir que el nibble bajo del contenido de W es menor que el del registrof. Instrucciones de simple operando y el destino es siempre el registro seleccionado : CLRF f ;borrado de contenido, f = 0 MOVWF f ;copia contenido W a f, f = W La instrucción CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0. La instrucción MOVWF (MOVe W a F) no afecta ningún bit de la palabra de estado. - Instrucciones de Byte que operan sobre W y Literales Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de origen y el operando de destino son siempre el registro W. En las instrucciones de este grupo que tienen un segundo operando de origen, este es siempre una constante de programa literalmente incluida en la instrucción, llamada constante literal o simplemente literal. El formato genérico de estas instrucciones es el siguiente : 11 10 9 8 7 6 5 4 3 2 1 0 k k k k k k k k Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operación. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 5
  • 6. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA Las tres instrucciones que siguen son las operaciones lógicas tradicionales, similares a las que ya vimos anteriormente, pero realizadas entre una constante de programa y el registro W : IORLW k ; operación OR lógica, W = W Ú k ANDLW k ; operación AND lógica, W = W Ù k XORLW k ; operación XOR lógica, W = W Å k En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W) el único bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. Instrucción que cargar una constante de programa en el registro W : MOVLW k ;carga constante en W, W = K Esta (MOVe Literal W) instrucción no afecta ninguno de los bits de estado del procesador. La instrucción que sigue (CLeaR W) no correspondería incluirla en este grupo, y pertenece en realidad al primero, el de las instrucciones que operan sobre registros, ya que se trata de un caso especial de la instrucción CLRF, con destino W, y f = 0. La incluimos aquí porque como se le ha asignado un mnemónico particular referido específicamente al registro W, creemos que, desde el punto de vista del programador, es más útil verla dentro del grupo de instrucciones referidas a W. CLRW ;borra el contenido de W, W = 0 Al igual que en la instrucción CLRF, el único bit de estado afectado es el Z que resulta1 - Instrucciones de Bit El formato genérico de estas instrucciones es el siguiente : 11 10 9 8 7 6 5 4 3 2 1 0 b b b F f f f f Los bits 0 a 4 (5 bits), denominados “f”, permiten seleccionar uno de 35 registros de la memoria interna. Los bits 5 a 7, denominados “b”, permiten especificar el numero de bit (0 a 7) sobre el que se operara. Estas instrucciones operan solamente sobre el bit especificado, el resto de los bits del registro no son alterados. Estas instrucciones no tienen especificación de destino, ya que el mismo es siempre el registro seleccionado. BCF f,b ; borra el bit b de f ;bit f(b) = 0 BSF f,b ; coloca en uno el bit b de f ;bit f(b) = 1 Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de estado del procesador. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 6
  • 7. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA - Instrucciones de Control GOTO k ;salto a la posición k (9 bits) del programa Esta es la típica instrucción de salto incondicional a cualquier posición de la memoria de programa . La constante literal k es la dirección de destino del salto, es decir la nueva dirección de memoria de programa a partir de la cual comenzarán a leerse las instrucciones después de ejecutar la instrucción GOTO. Esta instrucción simplemente carga la constante k en el registro PC (contador de programa). La única complicación de esta instrucción es que la constante k es de solo 9 bits, mientras que el registro PC es de 11 bits, ya que en el 16F628 debe permitir direccionar una memoria de programa de 2 K. Los dos bits faltantes, bit 9 y 10 del PC, son tomados respectivamente de los bits de selección de página PA0 y PA1 de la palabra de estado. Este comportamiento particular hace que la memoria de programa aparezca como dividida en paginas de 512 posiciones como se vera más adelante. El programador debe tener en cuenta que antes de ejecutar una instrucción GOTO es posible que haya que programar los bits PA0 y PA1. CALL k ;salto a la subrutina en la posición k (8 bits) Su comportamiento es muy similar al de la instrucción GOTO, salvo que además de saltar guarda en el stack la dirección de retorno de la subrutina (para la instrucción RETLW). Esto lo hace simplemente guardando en el stack una copia del PC incrementado, antes de que el mismo sea cargado con la nueva dirección k. La única diferencia con la instrucción GOTO respecto de la forma en la que se realiza el salto, es que en la instrucción CALL la constante k tiene solo 8 bits en vez de 9. En este caso también se utilizan PA0 y PA1 para cargar los bits 9 y 10 del PC, pero además el bit 8 del PC es cargado siempre con 0. Esto hace que los saltos a subrutina solo puedan realizarse a posiciones que estén en las primeras mitades de las paginas mencionadas. El programador debe tener en cuenta este comportamiento y asegurarse de ubicar las posiciones de inicio de las subrutinas en las primeras mitades de las paginas. La instrucción que aparece a continuación es la de retorno de subrutina: RETLW k ;retorno de subrutina con constante k, W = k Esta (RETurn con Literal in W) instrucción produce el retorno de subrutina con una constante literal k en el registro W. La operación que realiza consiste simplemente en sacar del stack un valor y cargarlo en el PC. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 7
  • 8. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA Ese valor es el PC incrementado antes de realizar el salto, de la ultima instrucción CALL ejecutada, por lo tanto es la dirección de la instrucción siguiente a dicho CALL. Dado que el stack es de 11 bits, el valor cargado en el PC es una dirección completa, y por lo tanto se puede retornar a cualquier posición de la memoria de programa, sin importar como estén los bits de selección de pagina. Esta instrucción además carga siempre una constante literal en el registro W. Ya que esta es la única instrucción de retorno de subrutina de los PIC16FXXX, no hay en estos microprocesadores forma de retornar de una subrutina sin alterar el registro W. Por otro lado, y con una metodología especial de programación, un conjunto de sucesivas instrucciones RETLW puede ser usado como una tabla de valores constantes incluida en el programa (Ej. : tablas BCD/7 seg.). Instrucciones de “salto” (skip) condicional. Estas instrucciones son los únicos medios para implementar bifurcaciones condicionales en un programa. Son muy generales y muy poderosas ya que permiten al programa tomar decisiones en función de cualquier bit de cualquier posición de la memoria interna de datos, y eso incluye a los registros de periféricos, los puertos de entrada/salida e incluso la palabra de estado del procesador. Estas dos instrucciones reemplazan y superan a todo el conjunto de instrucciones de salto condicional que poseen los microprocesadores sencillos convencionales (salto por cero, por no cero, por carry, etc.). BTFSC f,b ;salta si bit = 0 BTFSS f,b ;salta si bit = 1 BTFSC (Bit Test File and Skip if Clear) saltea la próxima instrucción si el bit b del registro f es cero. BTFSS (Bit Test File and Skip if Set) saltea si el bit es 1. Estas instrucciones pueden usarse para realizar o no una acción según sea el estado de un bit, o, en combinación con GOTO, para realizar una bifurcación condicional. Ejemplo 1 : Ejemplo 2: DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 8
  • 9. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA Las instrucciones que siguen son casos especiales de las de incremento y decremento Estas instrucciones podrían categorizarse dentro del grupo de instrucciones orientadas a byte sobre registros (primer grupo), ya que efectivamente operan sobre los mismos, y el formato del código de la instrucción responde al de ese grupo, pero, a diferencia de las otras, pueden además alterar el flujo lineal del programa y por eso se les incluyó en este grupo. DECFSZ f,d ;decrementa y salta sí 0, destino= f - 1 INCFSZ f,d ;incrementa y salta sí 0, destino= f + 1 Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a ningún bit de la palabra de estado. Una vez realizado el incremento o decremento, si el resultado es 00000000, el microprocesador salta la próxima instrucción del programa. Estas instrucciones se utilizan generalmente en combinación con una instrucción de salto (GOTO), para el diseño de ciclos o lazos (loops) de instrucciones que deben repetirse una cantidad determinada de veces. - Instrucciones Especiales Instrucciones que controlan funciones específicas del microprocesador o que actúan sobre registros especiales no direccionados como memoria interna normal. La instrucción que sigue es la típica NO OPERATION. NOP ;no hace nada, consume tiempo Esta instrucción solo sirve para introducir una demora en el programa, equivalente al tiempo de ejecución de una instrucción. No afecta ningún bit de la palabra de estado. La instrucción que sigue borra el contador del watch dog timer. Este registro tampoco esta accesible como memoria, y esta es la única instrucción que lo modifica. CLRWDT ;borra el watch dog timer, WDT = 0 Esta instrucción, además, coloca en uno los bits PD (power down) y TO (time-out) de la palabra de estado. La siguiente es una instrucción especial de control del microcontrolador que lo pone en el modo power down. En este modo el microprocesador se detiene, el oscilador se apaga, los registros y puertos conservan su estado, y el consumo se reduce al mínimo. La única forma de salir de este estado es por medio de un reset o por time-out del watch dog timer. SLEEP ;coloca el µC en modo sleep, WDT = 0 Esta instrucción, además, borra el bit PD (power down) y setea el bit TO (time-out) de la palabra de estado. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 9
  • 10. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 10 INSTRUCCIONES DEL PIC 16FXXX
  • 11. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA ENCENDER UN LED A TRAVES DEL PUERTOB DEL PIC Puertos de Entrada y Salida La principal utilidad de las patitas que contiene un microcontrolador es soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores. Según los controladores de periféricos de los microcontroladores, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control. Reloj principal El oscilador genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de energía Para las personas que no están de todo familiarizados con el tema es bueno recordar que es el led. LED según sus siglas en ingles (Light Emitting Diode) se traduce como diodo emisor de luz, que es un dispositivo semiconductor (vea el dibujo de abajo) de dos terminales nominados como cátodo (terminal negativa) y ánodo (terminal positiva). Si polarizamos nuestro led directamente este va a producir un haz de luz y con la polarización inversa va a permanecer apagado. A veces el funcionamiento de los diodos es comparado con los switches que se prenden y se apagan. Polarización directa Polarización inversa Una vez familiarizados con el hardware podemos proseguir con el software. Antes de ponerse a escribir el programa es aconsejable analizar primero los registros que se van a emplear en el dicho programa. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 11 Ánodo + Cátodo Ánodo -- + Cátodo luz PRACTICA 1
  • 12. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA Registro STATUS Nosotros respetaremos la nomenclatura inglesa, pero escribiremos las variables que nos interesan. El motivo es muy simple: en ese PIC16F628 no se ha considerado el problema de los bancos de memoria, que se deben intercambiar a través del registro de estado. De este modo para nosotros PORTB representará al puerto B, TRISB será el mismo y W será el registro de trabajo. El programa, por lo demás, es bastante evidente. Necesitamos sólo introducir el sentido de los TRIS. Este registro está asociado a los distintos puertos y en él cada bit representa un pin del puerto al que se refiera. Un 0 en uno de sus bits representará que el pin es de salida, y un 1 que es de entrada. De este modo cada pin será independiente, dándonos mayor flexibilidad para la implementación física de los diseños. Es posible incluso, aunque no habitual, cambiar la dirección del pin durante la ejecución del programa. Esta opción puede llegar a darnos la posibilidad de manejar varios dispositivos con un solo puerto. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 12
  • 13. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA SET DE INSTRUCCIONES UTILIZADAS EN LA PROGRAMACION 1. BCF f, b : Con esta instrucción se pone en 0 el bit b del registro f Ejemplo: Si se tiene en el puerto A ( PORTA ) = 1010 y se quiere colocar en cero el tercer bit, la instrucción es la siguiente: BCF PORTA , 3. 2. BSF f, b : Con esta instrucción se pone en 1 el bit b del registro f Ejemplo: Si se tiene en el puerto A ( PORTA ) = 1010 y se quiere colocar en UNO el tercer bit, la instrucción es la siguiente: BSF PORTA , 3. 3. GOTO K : realiza un salto incondicional a la dirección llamada k del programa Ejemplo: GOTO CONFIG quiere decir salte a la parte de configuración del programa. 4.CLRF F : Borra el contenido del registro, cuyo valor quedaría en 00000000 DESCRIPCIÓN DE NUESTRA PRACTICA ENCENDER UN LED Como inicio antes de empezar el programa en si, se deberá configurar el PIC, de forma que funciones a nuestras necesidades, esto quiere decir que debemos decirle como vamos a usar sus puertos, si van a ser de entrada o de salida, en nuestro caso solo requerimos de un solo puerto (puerto b7), y conectado a él, el respectivo led a encender con su resistencia para evitar un flujo de corriente muy grande, tal que pueda dañar nuestro pic. Después de la configuración inicial, y haber pasado por los respectivos bancos como se ilustrará en el programa, aseguraremos de que el puertob este en ceros y para ello borraremos el contenido con la instrucción de borra registro (CLRF), en este caso dirigido al registro PORTB, que es el puerto b que vamos a manipular. Luego sencillamente daremos la orden de encender el led, y esto se logra con enviar un uno o positivo por el puertob,7, y con ello se encenderá el led. Se explica en cuadro los registros TRISB,PORTB Y el bit RP0 del registro STATUS DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 13
  • 14. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA DIAGRAMA ESQUEMATICO DEL CIRCUITO . DIAGRAMA DE FLUJO DEL PROGRAMA DE ENCENDER EL LED DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 14 INICIO BANCO1 TRIS,7 => 0 BANCO0 Borrar puertoB Portb,7=> 1
  • 15. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA PROGRAMA PARA ENCENDER UN LED CON EL PIC 16F628 LIST P=16F628 INCLUDE <P16F628.INC> ORG 00 GOTO INI ORG 05 INI BSF STATUS,RP0 ;IREMOS AL BANCO1 BCF TRISB,7 ;EL PUERTO RB7 ESTARA COMO SALIDA BCF STATUS,RP0 ;DEVUELTA AL BANCO0 CLRF PORTB ;PARA BORRAR EL PUERTO Y QUEDE EN CEROS BSF PORTB,7 ;ENVIA UN 1(5V) A RB7 PARA ENCENDER LED GOTO $ ;EL CONTADOR DEL PROGRAMA SE QUEDARÁ AQUI END DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 15
  • 16. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA El ENCENDIDO DE UN LED EN FORMA INTERMITENTE Acordémonos que el objetivo esta vez no es solamente prender el led sino también apagarlo y volver a prender en una forma periódica o cíclica La pregunta es: ¿Cómo se logra la semejante operación? La respuesta a esa pregunta es SUBRUTINA. La pregunta de inmediata que surge es: ¿y que es una subrutina? Una subrutina es una parte del programa principal que se dedica a una tarea especifica. Ejemplos de subrutinas: - una subrutina que periódicamente me observa el estado lógico de un puerto - una subrutina que se encargue de realizar cálculos de determinadas variables en fin es la libertad del programador de asignar una determinada tarea a la subrutina. El uso de subrutinas, siendo sencillo y no requiriendo un apartado específico, es esencial, puesto que simplifica los programas, haciéndolos, además, más modulares. Llamaremos a una subrutina con la instrucción CALL, seguida de la etiqueta que la encabeza o su dirección en memoria. Para regresar a la siguiente instrucción tras el CALL bastará con situar, en la última línea de la subrutina, el comando RETURN; también será posible emplear RETLW k, el cuál se diferencia del anterior por situar en el registro W el valor k. En el caso de nuestra practica vamos a desarrollar una subrutina que se conoce con el nombre de retardo. El retardo o subrutina se encarga de que el programa principal en un determinado momento se queda parada por un tiempo que nosotros queremos que se detenga. Para ser mas concreto, al prender el led necesitamos que se quede prendido por un tiempo, después tenemos que apagarlo y mantenerlo apagado por otro rato y volver a hacer todo el procedimiento de nuevo. Ahora, como se arma una subrutina en el lenguaje de programación que nosotros estamos usando o sea MPLAB? La forma mas clásica de armar una subrutina es usando las instrucciones CALL y RETURN. Donde la instrucción CALL es usado por el programa principal para llamar la subrutina , donde esa a su vez realiza su tarea asignada ( en nuestro caso es un retardo en el tiempo) y retorna al programa principal de donde la llamaron usando la instrucción RETURN. Ya sabiendo como se arma una subrutina necesitamos saber como se hace el dicho retardo del tiempo que es la tarea de la subrutina, para eso observamos la siguiente subrutina: DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 16 PRACTICA 2
  • 17. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA RETARDO MOVLW .255 ;Se carga un registro CONTADOR MOVWF CONTADOR ;con un valor máximo decimal de 255 OTRAVEZ DECFSZ CONTADOR ;Se decrementa el dicho registro en uno GOTO OTRAVEZ ;Si CONTADOR no es cero se decrementa ;otra vez RETURN ;Al llegar a cero la subrutina RETARDO ;retorna al programa principal Usando un diagrama de flujos la rutina anterior se puede representar de la siguiente forma. Del ejemplo anterior lo que vemos es que la subrutina RETARDO se toma 255 veces haciendo la misma instrucción DECFSZ antes de retornar al programa principal. Sí nos acordamos que estamos trabajando con un cristal de 4 MHz, donde esa frecuencia es dividida internamente por el µC por cuatro, 4MHz/4 = 1MHz, eso quiere decir que el micro se demora 1 microsegundo para realizar una instrucción T = 1/f = 1/1MHz = 1µseg. Por lo tanto la subrutina RETARDO lo que hace es hacer un retardo aproximadamente de 255 microsegundos. Desafortunadamente en la vida real un retardo de 255 microsegundos es demasiado rápido para el ojo humano y no es percibido. Para solucionar este problema se recurre a una técnica llamada anidamiento, lo que hace es en si es manipular varias variables, y decrementarlas de forma que cuando termine una continúe con la otra, mejor que cuando una variable termine, decremente la otra en una unidad, y vuelva y se cargue de nuevo con un valor, lo que quiere decir que sus cantidades se multiplicarían. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 17 CONTADOR ←255 CONTADOR - 1 ¿CONTADO R = 0 ? RETORNAR SI NO
  • 18. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA Veamos un ejemplo: Cuando reg3 se va decrementando, ,lo sigue haciendo hasta que su valor establecido llegue a cero, y cuando esto pasa, decrementa a la siguiente variable (reg2), una unidad, y de nuevo se carga reg3 con el valor establecido, lo que quire decir que este anidamiento consumira aproximadamente 90.000 ciclos de instrucion aproximadamente, o quizas mucho mas si es implementado en un pic, pues las instrucciones aplicadas para estos decrementos según el caso en un pic, suelen consumir 2 ciclos de instruccion, por lo que quiere decir que si tenemos en cuenta estos retornos (el volver a un punto del anidamiento), podrian consumir con estos valores no 90.000 sino hasta casi 270.000 ciclos de instruccion aproximadamente, aunque los anidamientos se pueden hacer de muchas formas según el programador, por lo que no existe un solo metodo, sino muchos y cada cual se acomoda a varias DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 18 retardo reg1=100 reg2=30 reg3=30 reg3 - 1=reg3 reg3= 0 reg2 - 1=reg2 reg2= 0 reg1 - 1=reg1 reg1= 0 retorne
  • 19. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA necesidades, pero en nuestra practica se implementará una de las mas sencillas formas, e incluso de las mas usadas. El anidamiento tiene como funcion mas comun la de crear retardos en el programa, esto es porque algunas actividades que hace el pic son muy rapidas, y para que los humanos las podamos percibir, debemos dilatar el tiempo para percibir lo que pasa. Precisamente , el percibir o retener tiempo,será la aplicación en nuestra practica, pues el objetivo es el de encender y apagar el led, y entre el encendido y apagado, debemos dejar que dure un tiempo encendido y un tiempo apagado. SET DE INSTRUCCIONES NUEVAS UTILIZADAS EN LA PROGRAMACION DECFSZ f,d: decrementa el registro f en uno y salta si el resultado es cero, el valor lo almacena en el registro w o en el registro f. Ejemplo: Se carga la variable numero con 5 y se desea decrementar la variable numero en 1 hasta que el resultado sea cero, si es así salte a la dirección fin , si no continué decrementando hasta que sea cero MOVLW D`05 MOVWF NUMERO SIGUE DECFSZ NUMERO,1 GOTO SIGUE GOTO FIN DESCRIPCION DEL CIRCUITO Como se había dicho anteriormente, el objetivo era el de encender un led de forma intermitente, para que se observara este efecto, de debe recurrir a los retardos por anidamiento. Iniciamos primero configurando el pic, en el caso para que el pin RB7 nos funcione como salida. Después para asegurar de que empiece apagado, borraremos el puerto con la instrucción CLRF PORTB, luego si damos la orden que se encienda el led, y para que podamos ver si se enciende y se apaga, daremos un retardo de encendido, que durara mas o menos un segundo, si se usa un cristal de 4MHz, luego de que termine el retardo, apagaremos el led, y de nuevo llamaremos el retardo, y se repetirá este ciclo indefinidamente, por lo que no tiene final, a menos que quitemos la alimentación. DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 19
  • 20. NIVEL 1 PIC 16F628 TEORIA Y PRACTICA DIAGRAMA DE FLUJO PARA EL LED INTERMITENTE DIAGRAMA ESQUEMATICO DEL CIRCUITO DIGIT ELECTRONIC CRA 9 23 – 49 LOCAL 207 TEL 2 86 36 72 20 CONFIGURACIÓN DEL PUERTO ENCENDER LED LLAMAR RETARDO LLAMAR RETARDO APAGAR EL LED INICIO LIMPIAR PORTB