Escolar Documentos
Profissional Documentos
Cultura Documentos
CURSO DE MICROCONTROLADORES
EL MPLAB (I)
MICROCONTROLADORES
Francisco Javier Tortosa Martínez Fernando Remiro Domínguez
Ingeniero de Sistemas Profesor de Sistemas Electrónicos
Indytel Sistemas S.L. IES. Juan de la Cierva
www.microladder.com www.terra.es/personal/fremiro
En el número 178 , ya
publicamos un manual de
usuario del MPLAB en su
versión de 16 bits, pero la
verdad que en podo o mejor
dicho en casi nada se parece
a esta versión de 32 bits con
la que estamos trabajando
ahora. Por lo tanto antes de
seguir analizando otros
microcontroladores de
36
RESISTOR
Microchip, nos hemos
propuesto publicar este
manual de usuario del
MPLAB IDE, tanto para los
nuevos usuarios de los estos
microcontroladores, como
para algunos que son más
expertos, y no le sacan todo
su posible potencial de uso.
Foto 1.- Logotipo del MPLAB
COMO OBTENER EL que hemos descargado está compri- • Cronometra el tiempo de ejecu-
PROGRAMA mido en formato Zip, lo extraemos ción en el simulador o en el emu-
Lo primero que debemos hacer en un subdirectorio y se ejecuta el lador
es obtener el programa que es de archivo MP802_Install. • Visualiza las variables en la ven-
libre disposición y que nos lo ofrece El MPLAB IDE está desarrolla- tana del reloj
la empresa Microbio en su web do bajo el sistema operativo Win- • Permite programar el firmware
www.microchip.com y ya en la dows. Es un entrono para el diseño utilizando diversos programado-
página principal en el apartado de de los microcontroladores PIC y res.
design encontramos un enlace al dsPIC. Con el MPLAB se puede:
MPLAB IDE, pulsamos sobre él y • Crear y revisar código fuente a COMENZANDO CON EL
al final de esta nueva página encon- través de su editor. MPLAB IDE
tramos un enlace de descarga en el • Ensambla, compila y linkar el Una vez instalado el programa,
que pone MPLAB IDE v8.02 Inte- código fuente. se recomienda seguir los siguientes
rim Release Zipped Installation, pul- • Depuración siguiendo el flujo del pasos.
sando con el botón auxiliar del ratón programa en el simulador o 1. Como el path o camino absoluto
lo guardamos en un subdirectorio de emulando en el circuito en tiempo de los ficheros de trabajo del
nuestro disco duro. Como el archivo real. MPLAB no deben exceder de 62
36 Microcontrolador 11/3/08 09:48 Página 37
MICROCONTROLADORES
Figura 1.- Programas que aparecen al abrir el archivo zip de la carpeta MP802. 37
RESISTOR
caracteres, se recomienda crear denomino Trabajo y dentro de PIC, por ejemplo C:Trabajo/
una carpeta en el directorio raiz ella, una carpeta con cada micro- Pic16F876A.
de nuestro disco duro, en mi caso controlador o gran proyecto reali- 2. Para empezar a trabajar con el
yo tengo creada una carpeta que zado con los microcontroladores MPLAB IDE, hacer doble clic
Figura 2.- Pantalla que aparece al ejecutar por primera vez el MPLAB IDE
36 Microcontrolador 11/3/08 09:48 Página 38
;********************************************************************************************
;Ejem_1.asm
MICROCONTROLADORES
;Ejemplo para simulación Entradas/Salidas en el entrenador
;Sencillo ejemplo de E/S con los PIC 16F87XA
;Leer el estado de los 5 interruptores conectados en las líneas(RA4-RA0) y reflejar el nivel
;lógico de los mismos sobre los leds RB4-RB0 conectados a la puerta B
;ESTE PROGRAMA UTILIZA EL BOOTLOADER COMO PROGRAMA DE CARGA A TRAVÉS DEL PUERETO
SERIE DEL PC
;********************************************************************************************
List p=16F876A ;Tipo de procesador
include "P16F876A.INC" ;Definiciones de registros internos
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF &
_LVP_OFF & _DEBUG_OFF & _CPD_OFF
org 0x00 ;Vector de Reset
goto Inicio
Bucle movf
movwf
goto
PORTA,W
PORTB
Bucle
;Leer las entradas RA0-RA4
;Reflejar en las salidas
;Bucle sin fin
39
RESISTOR
end
solicita el nombre del archivo, Al salvar el programa, el usuario se ven en verde, las instrucciones en
que nosotros hemos llamado verá como cambia el color del texto azul las etiquetas y nombres de
Ejemp1.asm. del fichero fuente, los comentarios registro en rojo tejo.
36 Microcontrolador 11/3/08 09:48 Página 40
MICROCONTROLADORES
40
RESISTOR
CURSO DE MICROCONTROLADORES
EL MPLAB (II)
MICROCONTROLADORES
Francisco Javier Tortosa Martínez Fernando Remiro Domínguez
Ingeniero de Sistemas Profesor de Sistemas Electrónicos
Indytel Sistemas S.L. IES. Juan de la Cierva
www.microladder.com www.terra.es/personal/fremiro
42
RESISTOR
Foto 1.- Placas de desarrollo realizadas en el laboratorio de Desarrollo de Productos Electrónicos del IES Juan
de la Cierva de Madrid.
Esta es la segunda entrega del manual del entorno de desarrollo MPLAB IDE, que como
se puede ir comprobando, además de permitirnos escribir el programa en lenguaje
ensamblador o con un compilador de alto nivel, permite realizar la depuración del
programa ya sea utilizando el simulador que lleva incorporado o herramientas como
son el MPLAB ICD2 o los emuladores MPLAB 2000 y MPLAB 4000.
una aplicación (el código fuente, el abrir ventanas para ver y configurar
linkador, etc.) así como varias herra- otros escenarios del IDE.
CREANDO UN NUEVO
Dos de las características del mientas de construcción (build). La manera mejor manera de pre-
PROYECTO
MPLAB IDE son los proyectos y los El workspace contiene la informa- parar un proyecto y su escenario
escenarios (workspaces). ción sobre el dispositivo selecciona- (workspace) asociado es usando el
Un proyecto contiene los archivos do, herramientas de puesta a punto Project Wizard. No obstante cuando
necesitaron para diseñar o construir del programador, además se pueden se trabaja con una aplicación de un
42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 43
único archivo en ensamblador, se • Cuando pulsamos Siguiente, apare- la de la figura 4, pulsando sobre
puede usar Quickbuild (Project> ce la ventana de selección de la Browse… elegimos el nombre y
Quickbuild), es decir, ensamblar el herramienta de trabajo. Se puede camino de nuestro proyecto.
MICROCONTROLADORES
código con el ensamblador MPSM y seleccionar una herramienta de Una vez seleccionado el camino
no crear un proyecto. Sin embargo Microchip o de terceras partes. En de nuestro proyecto que tiene la
utilizando un workspace se pueden la ventana de Active Tollsuite solo extensión *.mcp pulsamos sobre
guardar todos los escenarios y salvar aparece la suite de herramientas de siguiente y aparece una ventana
las configuraciones. los lenguajes que trabajan con el como la de la figura 5, en la que nos
dispositivo previamente selecciona- solicitan que seleccionemos los
do. Para ver el resto de herramien- ficheros que integran nuestro proyec-
tas instaladas pulsar sobre la flecha to, en nuestro caso ejem_1.asm , pul-
CREAR UN PROYECTO CON
Para crear un nuevo proyecto con de Active Toolsuite, apareciendo la samos sobre Add>> para añadir el
EL WIZARD
el Wizard una vez que tenemos escri- pantalla de la figura 3. archivo y volvemos a pulsar sobres
to nuestro programa en ensamblador, siguiente, apareciendo la pantalla de
debemos de seguir los siguientes la figura 6.
pasos:
• Seleccionamos Project/Project
Wizard, lo que hará aparecer la pan-
talla de la bienvenida de la
Figura 1.
MONTAR O CONSTRUIR
MICROCONTROLADORES
fichero de errores que describen
cada uno de ellos. Si hacemos un
doble clic sobre la línea que mues-
tra el error, el cursor saltará directa-
mente a la línea de código donde se
encuentra éste. Una vez subsanados
los errores, volveremos a repetir el
proceso de ensamblado del fichero
fuente para obtener el fichero con
extensión .hex que en nuestro caso
será ejem_1.hex. Este fichero con
extensión *.hex, es el que cargare-
mos en nuestro microprocesador
utilizando la herramienta de graba-
ción de la que dispongamos.
Para ver el fichero ejem_1.hex,
bastará con seleccionar el meni
File>Open y dentro de los tipos de
archivos seleccionar All Files [*.*] y
seleccionamos el archivo ejem_1. hex.
Figura 11.- Pantalla de selección de archivo. Cuando abrimos el archivo se
puede ver que únicamente contine
códigos hexadecimales y que serán
los que se graven posteriormente en
45
el microcontrolador
RESISTOR
SELECCIÓN DE LA
HERRAMIENTA
Rum: Comienza la ejecución del programa a toda velocidad. En este caso, simulador ejecuta el programa
a toda velocidad hasta que se detenga haciendo clic en el icono de abajo.
Halt: Detiene la ejecución del programa. El programa de ejecución puede seguir paso a paso, a velocidad
opcional o a toda velocidad de nuevo.
Animate: Comienza la ejecución del programa a velocidad opcional. La velocidad de ejecución se fija en
el cuadro de diálogo Debugger/Stettings../Amimations/ Realtime Update.
Step Into: Comienza paso a paso la ejecución del programa. Las instrucciones son ejecutadas una tras otra.
Por otra parte, haciendo clic en este icono permite ejecutar las subrutinas y macros paso a paso.
Step Over: Este icono al igual que el anterior permite realizar la ejecución de las instrucciones de una en
una, pero las subrutinas las ejecuta de golpe, como si fuera un única instrucción.
Step Out: Cuando estamos dentro de una subrutina al pulsar este icono, el programa corre de golpe hasta
que sale de ella y se para poder seguir con la ejecución paso a paso.
Reset: Restablece microcontrolador. Al hacer clic en este icono, el contador de programa se posiciona al
principio del programa y la simulación puede comenzar.
42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 47
texto indicado en el cuadro dialo- • Fill Memory: Abre el cuadro de va View>File Registers. Muestra el
go de esta opción. diálogo que nos permite llenar contenido de todas las posiciones de
• Find Next: Encontrar en esta desde una posición a otra de la memoria RAM del dispositivo
ventana la próxima coincidencia memoria E2PROM con un valor seleccionado, cuando el simulador
del texto indicado en el cuadro de constante, datos que vayan incre- ejecuta una instrucción, comprueba
diálogo anterior. Con <F3> busca mentado o datos aleatorios. el valor del registro correspondien-
hacia delante en la ventana y con • Output to File: abre un cuadro de te y si lo modifica, la ventana se
<Shift>+ <F3> busca hacia atrás diálogo para guardar el contenido actualiza.
en la ventana. del bloque de posiciones de En el formato hexadecimal, que
• Go To: Va a la dirección de memoria que se indique. corresponde con la mostrada en la
memoria indicada en el cuadro de • Print: Para imprimir el contenido figura 18, se pueden ver las siguien-
diálogo. de la ventana. tes columnas de información:
• Import Table: abre el cuadro de • Refresh: Refresca los datos de • Parte alta de la dirección Hexade-
diálogo para importar una tabla de esta ventana. cimal de la memoria, la parte baja
42-49 Microcontroladores:Maqueta Resistor 13/6/08 09:13 Página 49
MICROCONTROLADORES
simulación del programa.
En la venta se muestra:
• TOS: la parte alta de la pila
(TOS)
• Stack Level: Es el número total de
niveles de pila del dispositivo.
• Stack Return Address. Indica la
dirección a la que retorna el pro-
grama cuando el Contador de Pro-
grama cargue le valor de vuelta de
subrutina o de interrupción. En
Figura 19 Ventan que muestra el contenido de la memora RAM en
esta ventan los valores usados per-
formato simbólico.
manecen sin variar cuando se
se indica en la cabecera de cada de la las posiciones de memoria mueve el puntero de la Pila hacia
una de as columnas. RAM a un archivo de extensión arriba.
• La representación ASCCII de la *.MCH. • Location: Informa sobre la posi-
línea de datos correspondiente. • Fill Memory: Abre el cuadro de ción relativa de una función
En el formato simbólico que diálogo que nos permite llenar Estando en esta venta si se pulsa
corresponde a la figura 19, presenta desde una posición a otra de sobre el botón contractual del ratón,
los registros representados con su memoria RAM con un valor cons- se despliega una ventana que nos
nombre simbólicos y el contenido de tante, datos que vayan incrementa- permite:
los mismos en formato hexadecimal, do o datos aleatorios. • Close: Cerrar la ventana
decimal, binario y ASCII.
Pulsando sobre el botón contrac-
• Output to File: abre un cuadro de
diálogo para guardar el contenido
• Pop Snack: Carga la parte alta de
la Pila en el Contador de Progra-
49
tual del ratón aparece un menú que del bloque de posiciones de ma
RESISTOR
nos permite: memoria que se indique. • Set Top-of-Stack: Pone en la par-
• Close: Cerrar esta ventana • Print: Para imprimir el contenido te alta de la Pila la dirección en la
• Full Memory Update: La actualiza- de la ventana. que se encuentra el cursor.
ción de los registros de esta ventan • Refresh: Refresca los datos de • Output to File: abre un cuadro de
se actualizan después de una parada esta ventana. diálogo para guardar el contenido
solo si se habilitó. Por defecto esta • Properties: Despliega un cuadro del bloque de posiciones de
opción esta habilitada. Si la ventana de diálogo de cómo queremos que memoria que se indique.
está abierta, solo los datos visibles se aparezcan escritos los datos de • Print: Para imprimir el contenido
actualizan, si la ventana está cerrada esta ventana. de la ventana.
no se actualiza ningún dato. • Refresh: Refresca los datos de
• Find: Buscar en esta ventana el tex- esta ventana.
to indicado en el cuadro dialogo de • Properties: Despliega un cuadro
VENTANA HARDWARE
esta opción. Para visualizar esta ventana se acti- de diálogo de cómo queremos que
STACK:
• Find Next: Encontrar en esta venta- va View>Hardware Stack . Nos aparezcan escritos los datos de
na la próxima coincidencia del texto muestra el contenido de la Pila esta ventana.
indicado en el cuadro de diálogo
anterior. Con <F3> busca hacia
delante en la ventana y con <Shift>+
<F3> busca hacia atrás en la venta-
na.
• Go To: Va a la dirección de memo-
ria indicada en el cuadro de diálogo.
• Import Table: abre el cuadro de
diálogo para importar una tabla de
valores a la memoria RAM desde
la posición que se indique.
• Export Table: Abre el cuadro de
diálogo para exportar el contenido Figura 20.- venta de la Pila Hardware.
50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 50
CURSO DE MICROCONTROLADORES
EL MPLAB (III)
MICROCONTROLADORES
Francisco Javier Tortosa Martínez Fernando Remiro Domínguez
Ingeniero de Sistemas Profesor de Sistemas Electrónicos
Indytel Sistemas S.L. IES. Juan de la Cierva
www.microladder.com www.terra.es/personal/fremiro
50
RESISTOR
Foto 1.- Placas de desarrollo realizadas en el laboratorio de Desarrollo de Productos Electrónicos del IES Juan
de la Cierva de Madrid.
Esta es la tercera entrega de este manual sobre el funcionamiento del MPLAB IDE. En
estos momentos Microchip ha sacado la versión 8.14 de este programa, por lo que ya
anticipamos que todas las referencias que hagamos para el próximo número de
Resistor, se harán sobre esta nueva versión, que puede obtenerse de forma totalmente
gratuita de la web www.microchip.com
asignado a cada etiqueta. Se visualiza ne/Symbolic Only): Poner o quitar
activando View>Program Memory. un punto de ruptura a la línea
VENTANA PROGRAM
En esta ventana se pueden ver las Pulsando sobre el botón contrac- actualmente seleccionada.
MEMORY
posiciones de memoria que ocupa cada tual del ratón, aparece una ventan con • Enable/Disable Break (Machi-
una de las instrucciones, el código de las siguientes opciones: ne/Symbolic Only): Habilita o des-
operación de cada instrucción y la direc- • Close: Cerrar esta ventana habilita un punto de ruptura en la
ción de memoria de programa que se ha • Set/Remove Breakpoint (Machi- línea seleccionada actualmente.
50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 51
MICROCONTROLADORES
Figura 1.- Ventana de la Memoria de Programa
• Breakpoints: Habilita o deshabilita
todos los puntos de ruptura
• Run To Cursor: Ejecuta el progra-
ma a la situación actual del cursor.
• Set PC at Cursor: Pone el Conta-
dor de Programa (PC) en la posi-
ción actual del cursor.
• Center Debug Location: Indica
posición actual del PC actual en la
ventana
• Cursor Tracks Debug Location:
51
Rastrea el flujo del cursor para
RESISTOR
depurar la dirección.
• Find: Busca en esta ventana el tex-
to indicado en el cuadro dialogo de
esta opción.
• Find Next: Encuentra en esta ven-
tana la próxima coincidencia del
texto indicado en el cuadro de diá-
logo anterior. Con <F3> busca
hacia delante en la ventana y con
<Shift>+ <F3> busca hacia atrás en
la ventana.
• Go To: Va a la dirección de memoria
indicada en el cuadro de diálogo.
• Import Table: abre el cuadro de diá-
logo para importar una tabla de valo-
res a partir de la posición de memo-
ria de programa que se indique.
• Export Table: Abre el cuadro de Figura 2.- Venta de los Registros Especiales.
diálogo para exportar el contenido
de la las posiciones de memoria de • Output to File: abre un cuadro de diálogo de cómo queremos que
programa a un archivo de exten- diálogo para guardar el contenido aparezcan escritos los datos de esta
sión *.MCH. del bloque de posiciones de memo- ventana.
• Fill Memory: Abre el cuadro de ria que se indique.
diálogo que nos permite llenar des- • Print: Para imprimir el contenido
de una posición a otra de memoria de la ventana.
VENTANA DE SPECIAL
de programa con un valor constan- • Refresh: Refresca los datos de esta Esta ventana presenta todos los
REGISTERS
te, datos que vayan incrementado o ventana. registros Especiales SRF indicándonos
datos aleatorios. • Properties: Despliega un cuadro de la posición que ocupa el registro dentro
50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:15 Página 52
MICROCONTROLADORES
mos el botón Hide, la columna desa-
parece de la ventana.
• Import Table: Abre el cuadro de diá- Esta ventana nos ayuda a la simula-
TRACE
para añadir nuevos símbolos al Esta ventana indica la cantidad de ventana tiene las columnas de informa-
GAUGE
MICROCONTROLADORES
54
RESISTOR
• Line: Número de líneas ejecutadas indicado en el cuadro dialogo de esta • Reload: Recarga la memoria de traza
desde que se pulsó Rum por última opción. con los valores que contiene el buffer.
vez. • Find Next: Encontrar en esta ventana • Reset Tie Stamp: Inicializa la imagen
• Addr: Dirección de la memoria de la próxima coincidencia del texto indi- de tiempo condicional del prosecesa-
programa donde se encuentra la ins- cado en el cuadro de diálogo anterior. dor.
trucción Con <F3> busca hacia delante en la • Display Time: En el ventana aparece
• Op: Código de operación numérico de ventana y con <Shift>+ <F3> busca la información del número de ciclos
la instrucción. hacia atrás en la ventana. en segundos o en formato científico.
• Label: Etiqueta de la instrucción si la • Go To: Salte al la opción especificada: • Symboloc Disassembly: En lugar de la
tuviera. • Trigger. Salte a la situación del dirección numérica para SFRs y sím-
• Instruction: Instrucción ejecutada. Trigger. bolos, despliega los nombres de los
• SA: Dirección numérica del registro • Top. Salta a la parte alta de la venta- mismos.
fuente na. • Output to File: abre un cuadro de diá-
• SD: Dato del registro fuente • Bottom. Salte al final de la ventana. logo para guardar el contenido del blo-
• DA: Dirección numerica del registro • Go To Trace Line. Vaya a la línea que de posiciones de memoria que se
destino de la traza especificada en el cuadro indique.
• DD: Dato del registro Destino de diálogo. • Print: Para imprimir el contenido de la
• Cycles: Ciclos máquinas transcurridos. • Go To Source Line. Abra la ventana ventana.
del Archivo y va a la línea de códi- • Refresh: Refresca los datos de esta
Pulsando sobre el botón contractual go de fuente que corresponde a la ventana.
del ratón, aparece una ventan con las línea del rastro seleccionada. • Properties: Despliega un cuadro de
siguientes opciones: • Show Source: Habilita o deshabilita la diálogo de cómo queremos que apa-
• Close: Cerrar esta ventana ventan con el código fuente que apare- rezcan escritos los datos de esta venta-
• Find: Buscar en esta ventana el texto ce debajo de la memoria de traza. na.
50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:16 Página 55
La ventana de la figura 8 corresponde a guardados junto con la memoria de tra- bar el funcionamiento del analizador
ANALIZER
un analizador lógico, sobre el que se za y están sincronizados. Para visualizar ejecutaremos en el simulador el siguien-
pueden visualizar todos los pines del la ventana del analizado lógico hay que te código:
;********************************************************************************************
;Contador_binario.asm
;Cuenta en binario, incrementado el PORTB cada 5 us
;********************************************************************************************
List p=16F876A ;Tipo de procesador
include "P16F876A.INC" ;Definiciones de registros internos
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF &
_LVP_OFF & _DEBUG_OFF & _CPD_OFF
CBLOCK 0x20
ENDC
ORG 0x00 ;Vector de Reset
Inicio bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
bcf STATUS,RP0 ;Selecciona banco 0
clrf PORTB
Bucle incf PORTB,F
nop
nop
goto Bucle
end
50-57 Microcontroladores:Maqueta Resistor 22/7/08 09:16 Página 56
CURSO DE MICROCONTROLADORES
EL MPLAB (IV)
MICROCONTROLADORES
Francisco Javier Tortosa Martínez Fernando Remiro Domínguez
Ingeniero de Sistemas Profesor de Sistemas Electrónicos
Indytel Sistemas S.L. IES. Juan de la Cierva
www.microladder.com www.terra.es/personal/fremiro
50
RESISTOR
en la figura 1.
1 interno
Preescaler 0 PSout
Programable (Retardo de 2 ciclos)
T0SE
El bit T0IF se
3 pone a 1 si hay
overflow
T0CS PS2,PS1,PS0 PSA
es http://www.ieeproteus.com/ .
1 = Los pulsos se introducen a través del, pin RA4/TOCK1
0 = Los Pulsos de reloj internos- Fosc/4
Ejemplo de aplicación: Se trata de
bit 4: T0SE: Tipo de flanco para TMR0
comprobar como funciona el TMR0
del PIC16F877A como contador de
1 = Incremento de TMR0 en cada flanco, descendente por el pin RA4/TOCKI
;***********************************************************************************
;Programa...........:Timer0_02
;Plataforma Hardware :Monibot PIC16F877A
;Fecha..............:Septiembre 2008
MICROCONTROLADORES
;Descripción........:Este programa comprueba el funcionamiento del Timer 0 como
;contador de los impulsos aplicados a la línea RA4/T0CKI, donde se ha conectado
;un pulsador. Cada vez que se pulse se incrementa un contador que se visualiza
;los 8 diodos LEDS conectados en las líneas RB0:RB7.
; Como es un incremento por cada impulso aplicado al pin TOCKI no es necesario asignarle
; divisor de frecuencia al TMR0. Por tanto el Prescaler se asigna al Watchdog.
;
; ZONA DE DATOS **********************************************************************
List p=16F877A ;Tipo de procesador
include "P16F877A.INC" ;Definiciones de registros internos
CBLOCK 0x20
ENDC
__config _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _XT_OSC &_WDT_OFF
; ZONA DE CÓDIGOS ********************************************************************
org 0x00 ;Vector de Reset
goto Inicio
org 0x05
Inicio
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00000110'
movwf ADCON1 ;Puerta A E/S digitales
bsf TRISA,4 ;Configura RA4 como entrada
52 clrf
movlw
TRISB
b'00111000'
;Configura el PORTB como Salida
; TMR0 como contador por flanco descendente de
movwf OPTION_REG ; RA4/T0CKI. Prescaler asignado al Watchdog.
bcf STATUS,RP0
RESISTOR
clrf TMR0 ; Inicializa contador.
; La sección "Principal" es de mantenimiento. Solo se dedica a visualizar el Timer 0.
Principal
movf TMR0,W ; Lee el Timer 0.
movwf PORTB
goto Principal
end
MICROCONTROLADORES
puede apreciar el microcontrolador no
hace falta ni conectarle el circuito de
reloj, es decir cristal de cuarzo de la fre-
cuencia de oscilación y condensadores
o una red R-C, ni conectar la señal de
reset a nivel alto para evitar un reset del
microcontrolador, no obstante al editar
las propiedades del PIC16F877A debe-
mos de indicar la frecuencia a la que
deseamos trabaje el microcontrolador y
no le vamos a asignar ningún archivo
de simulación, ya que luego en la inte-
gración con el MPLAB lo tomará. Por
lo tanto, la ventan de propiedades del
microcontrolador queda como se mues-
Figura 4.- Edición de la señal de reloj que inyectamos por la línea RA4. tra en la figura 5.
Por último en la barra de herra-
mientas seleccionamos Debug y activa-
mos la opción Use Remote Debug
Monitor, tal y como se muestra en la
figura 6. Por ultimo salvamos el archi-
vo con el nombre “Entrenador Basico
PIC16F877A“ y cerramos el programa
ISIS de Proteus.
53
Seguidamente abrimos el entorno
RESISTOR
del MPLAB y creamos un proyecto
con el nombre Timer0_02 siguiendo los
pasos que hemos indicado a lo largo de
los artículos anteriores. Y para compro-
bar el funcionamiento del mismo,
seleccionamos la opción Debug-
Figura 5.- Ventan de edición del microcontrolador PIC16F877A. ger>Proteus VSM, esto provoca la
MICROCONTROLADORES
Figura 8.- nueva barra de herramientas después de abrir el esquema de nuestro circuito denominado
“Entrenador Basico para PIC16F877A”.
Figura 9.- Aspecto de la barra de herramientas durante la simulación del funcionamiento del circuito.
54
RESISTOR
Figura 10.- Visualización de los registros internos del microcontrolador, al mismo tiempo que corre el programa
y le llegan señales externas.
apertura de una ventana como la que se ahora en vide inverso aparece el botón tintos o con un fichero el momento de
muestra en la figura 7. que antes era verde y aparece un botón cambio de las señales externas del cir-
Seguidamente, se abre el diseño que rojo que al activarlo genera la parada de cuito.
previamente habíamos guardado para la simulación ( stop simularon). Además Si ahora activamos el botón rojo de
probar el funcionamiento de nuestro aparecen activos los iconos de Rum y Stop Simulation y volvemos al progra-
software. Esto provoca dos cosas, la pri- Animate. Pues bien, si pulsamos sobre ma Proteus y volvemos a abrir nuestro
mera es que se abra el esquema del cir- el botón de Rum, podemos observar circuito, podemos modificar este, por
cuito que habíamos diseñado y la como al correr el programa sobre el cir- ejemplo se sugiere modificar la frecuen-
segunda es que aparezca en la barra de cuito, se modifican el estado de los dio- cia de la señal de reloj a una frecuencia
herramientas un botón como verde cuya dos LEDS conectados al PORTB de de 100 KHz., salvamos el archivo con
función es la de inicio de simulación acuerdo a un contador de 8 bits binarios el mismo nombre y al volver al MPLAB
(start simulations) y otro en video inver- a la frecuencia de 1 Hz. Lo que estamos veremos que el archivo se ha modifica-
so, tal y como puede verse en la viendo es como reacciona nuestro cir- do, si ahora abrimos una venta en
figura 8. cuito y nuestro programa cuando le lle- View>Watch y añadimos los registro
Al pulsar sobre el punto verde, la ga una señal externa, sin necesidad de WREG, PORTA y PORTB, podemos ir
barra de herramientas toma el aspecto habilitar la opción de Debug- ejecutando el programa en modo anima-
que se muestra en la figura 9, donde ger>Estimulus y generar a mano los dis- te o en modo paso a paso (step) y anali-
50-57 Microcontroladores:Maqueta Resistor 17/10/08 11:36 Página 55
Ejemplo de aplicación: En el
CVREN CVEOE CVRR -- CVR3 CVR2 CVR1 CVR0
registro.
1 = Rango bajo de 0 a 0,75CVRSRC con pasos de CVRSRC/24
En la figura 11 se muestra el diagra-
ma de bloques del módulo generador de
0 = Rango alto de 0 a 0,75CVRSRC con pasos de CVRSRC/32
V
DD
16 Es tados
CVR EN
8R R R R R
8R C VR R
RA2/ AN 2/ VR EF- /C VR EF
C VR OE
C VR 3
Entr ada Mu ltipl exor Anal ogi co 16:1 C VR 2
C om par ador C VR 1
C VR EF C VR 0
;***********************************************************************************************
;Programa: Diente_Sierra_02.asm
;Plataforma Hardware :Monibot PIC16F877A
;Fecha..............:Octubre 2008
;Descripción:Utilizando el módulo generador CVREF, obtenemos una tensión analógica en diente de sierra
;de 16 escalones.La tensión de salida se obtiene por la patilla RA2/CVREF
;***********************************************************************************************
List p=16F877A ;Tipo de procesador
MICROCONTROLADORES
include "P16F877A.INC" ;Incluir definiciones de los registros internos
CBLOCK 0X20
Valor ;Valor para el D/A de salida
ENDC
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF &
_LVP_OFF & _DEBUG_OFF & _CPD_OFF
org 0x00
Inicio
bsf STATUS,RP0
movlw b'00001000' ;Configuta el TMR0 como temporizador y preescaler 1:1
movwf OPTION_REG
bcf STATUS,RP0
Bucle movlw b'00001111'
andwf Valor,W ;Lee el valor para salida
iorlw b'11100000' ;CVREF en ON, CVREF --> RA2,rango bajo,
bsf STATUS,RP0
movwf CVRCON ;Tensión fuente (CVRSRC)=Vdd-Vss, Valor --> CVR3:CVR0
bcf STATUS,RP0
incf Valor,F ;Siguiente valor o etapa de la rampa del diente de sierra
call Retardo_200micros ;Retardo_1ms
goto Bucle
;**********************************************************************************
;Subrrutina de temporización de 200uS utilizando el TMR0
Retardo_200micros
56 bcf INTCON,INTF ;Flag de desbordamoento de TMR0 = 0
movlw .66 ;Valor experimental que hay que cargar en TMR0
movwf TMR0 ;para que la subrruina dure 200 uS
Espera btfss INTCON,T0IF ;Se ha desbordado el TMR0?
RESISTOR
goto Espera ;si no se ha desbordado espera
return ;Si se ha desbordado retorno subrruitna
end ;Fin del programa fuente