1. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
Palabra de configuración
Cuando programamos un microcontrolador debemos indicarle si vamos a utilizar las siguientes
condiciones.
1. Tipo de reloj:
Cristal de baja, media o alta frecuencia conocidos como: LP, XT y HS respectivamente.
Red RC.
Ninguno de los anteriores, valido en el 628A.
2. El uso del WDTE (Watch Dog Timer Enable), me indica si una rutina se cicla de manera infinita y
por la habilitación de este, el microcontrolador se activa el reset.
3. El uso de PWRTE (Power up Timer Enable) para que se obligue al reset activarse al alimentarse
el microcontrolador.
4. El CP (Code Protection), que sirve para proteger la memoria de programa y no pueda leerse su
contenido.
En ambos microcontroladores existe una dirección de memoria en la que se almacena esta
configuración y es conocida como Configuration Word. A continuación se describe el uso de las
hojas de datos de ambos micros para entender su código resultante.
Abrimos la hoja de datos del 84A y en buscar colocamos PIC16F84A CONFIGURATION WORD
Universidad La Salle Cuernavaca 25/07/2011 Página 1
2. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
A continuación aparece lo siguiente:
Es el registro de configuración y la posición de los bits para encontrar la palabra que permita al
micro funcionar de una manera adecuada a nuestras necesidades. La ubicación en la memoria de
programa es la dirección 2007H.
Esto se resume de la siguiente manera, si coloco la palabra 0x3FF1 como configuración del micro,
significa que…
Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1 1 1 1 1 1 1 1 1 1 0 0 0 1
3 F F 1
Bit’s 4-13 para protección de código, en este caso deshabilitado con 1
Bit 3 para PWRTE, en este caso habilitado con 0
Bit 2 para el WDTE, en este caso deshabilitado con 0
Bit’s 1 y 0 contienen 0 y 1 respectivamente, indicando el uso de un XT de mediana velocidad
100KHz-4MHz (ver hoja de datos)
Universidad La Salle Cuernavaca 25/07/2011 Página 2
3. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
Así, el micro utilizará un cristal de 4MHz de velocidad, no está protegido su programa, no está
habilitado el perro guardián y cada vez que se energice se resetea el micro.
Pero ¿Cómo coloco esa palabra de configuración en el micro?
Existen dos formas, una es por medio del programa fuente y la otra en el programador.
Programa fuente
Después de radix coloque __config 0x3FF9
Ejemplo:
List p=16f84a ; indica librería del micro utilizado
radix hex ; indica que se utilizará sistema hexadecimal
__config 0x3FF1
Palabra de configuración del micro utilizando cristal de 4 MHz, Watchdog y protección de código
deshabilitados y Power up Timer habilitado
Programador
El programa fuente al no contener palabra de configuración puede marcar error o warning al leer su
código.hex. No pasa nada, lo único que hay que hacer es lo siguiente:
Abrir el cargador de programa y ver la siguiente interfaz (Win Pic800)
Dar click en config
Universidad La Salle Cuernavaca 25/07/2011 Página 3
4. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
A continuación aparecerá la siguiente ventana.
Seleccionamos para habilitar XT y PWRT, la palabra config es 0x3FF1.
Ahora lo haremos para el 628A.
Repetimos el procedimiento de la hoja de datos y el registro de configuración.( en buscar colocar
CONFIGURATION WORD REGISTER)
Universidad La Salle Cuernavaca 25/07/2011 Página 4
5. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
A detalle el registro indica.
La palabra de configuración es diferente, indicando además de los del 84A : CP, LVP,BOREN y
MCLREN
Universidad La Salle Cuernavaca 25/07/2011 Página 5
6. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
Esto se resume de la siguiente manera, si coloco la palabra 0x3F18 como configuración del micro,
significa que…
Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1 1 1 1 1 1 0 0 0 1 1 0 0 0
3 F 1 8
Bit 13 para protección de código, en este caso deshabilitado con 1
Bit 12-9 se leen como 0, no importa escribir 1’s o 0’s no están implementados
Bit 8 Data Code Protection bitDTE, en este caso deshabilitado con 1
Bit 7 Low Voltage Programming Enable bit tiene 0, indica que RB4 funciona como entrada y salida
digital y un voltaje de programación alto voltaje es aplicado a la entrada MCLR.
Bit 6 Brown out Reset Enable es un nivel de referencia de voltaje sobre el que se compara con el
Vdd, si Vdd cae debajo de BOR el micro se resetea y se mantendrá así hasta 72 ms después que el
Vdd suba el BOR. En este caso BOREN esta deshabilitado con 0.
Bit 5 MCLRE en 0 permite que RA5 sea una entrada digital e internamente el MCLR esta conectado a
Vdd.
Bit 3 PWRT esta deshabilitado con 1
Bit 2 WDTE esta deshabilitado con 0
Bit’s 4,1 y 0 tienen 100 indicando que utilizaremos el reloj interno del micro a 4MHz permite además
que RA6 Y RA7 funcionen como entrada y salida digital.
Programa fuente
Agregar __config 0x3F18
Programador
Universidad La Salle Cuernavaca 25/07/2011 Página 6
7. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
Anexo 1
Con el PICKit 2 programmer
Universidad La Salle Cuernavaca 25/07/2011 Página 7
8. Cibernética y Mecatrónica Microcontroladores
Escuela de Ingeniería Ing. Rafael Durán Campoamor
Anexo 2
Ejemplo de programa
list P=16f628a
radix hex
__config 0x3F18 ;palabra de configuracion del micro para trabajar sin xtal
cmcon equ 0x1f ;registro que configura pines del ptoa como I/O
estado equ 0x03 ;estado=STATUS=03h
porta equ 0x05 ;porta=PORTA=05h
trisa equ 0x05 ;trisa=TRISA=05h
reg1 equ 0x20 ;reg1=0Ch
reg2 equ 0x21 ;reg2=0Dh
reg3 equ 0x22 ;reg3=0Eh
;-------condicion del vector de reset----------------------
reset org 0x00 ;indicamos vector de reset en dirección 0000h
goto inicio ;indicamos salto a inicio de programa
org 0x05 ;inicio de programa en 0x05
;-------inicio del programa--------------------------------
inicio movlw 0x07 ;dato a cargar en w
movwf cmcon ;mueve el dato de w a registro cmcon
bsf estado,5 ;cambia al banco 1 de la memoria de datos
bcf trisa,1 ;configura puerto RA0 como salida
bcf estado,5 ;regresa al banco 0 de la memoria de datos
clrf porta ;inicializa el pto A en 0
ciclo bsf porta,1 ;pone el bit 1 del pto A a 1 RA1=1
call retardo ;llama a retardo
bcf porta,1 ;pone el bit 1 del pto A a 0 RA1=0
call retardo ;llama a retardo
goto ciclo ;regresa a ciclo
;-----retardo de 500 ms para completar revolución
retardo movlw 0x05 ; mueve el 5 al w
movwf reg1 ; mueve el contenido de w a reg1
del3 movlw 0x79 ; mueve 79h a w
movwf reg2 ; mueve w a reg2
del2 movlw 0xff ; mueve ffh a w
movwf reg3 ; mueve w a reg3
del1 decfsz reg3,1 ;decrementa en 1 a reg3 y lo almacena ahí verificando si es 0
goto del1 ;si reg3 no es 0 ejecuta esta línea
decfsz reg2,1 ; si reg3 es 0 ejecuta esta línea y hace lo mismo que a reg3
goto del2 ;si reg2 no es 0 ejecuta esta línea
decfsz reg1,1 ; si reg2 es 0 ejecuta esta línea y hace lo mismo que a reg3
goto del3 ; si reg1 no es 0 ejecuta esta línea
return ; si reg1 es 0 ejecuta esta línea y sale de la subrutina retardo
end
Universidad La Salle Cuernavaca 25/07/2011 Página 8