Está en la página 1de 5

Curso microcontroladoresPAGS 27/12/02 10:01 Página 54

CURSO DE
MICROCONTROLADORES
MICROCONTROLADORES
PIC16F87X (...y III)
Fernando Remiro Domínguez
Profesor de Sistemas Electrónicos
IES. Juan de la Cierva
www.terra.es/personal/fremiro

54
RESISTOR

Programador para PIC16F87X con bootloader.

S
i habéis utilizado un hexadecimal del programa que DESCRIPCIÓN DEL CIRCUITO
programador por el queremos que se ejecute. Esto El circuito consta de un
puerto serie del ordena- reduce considerablemente el microcontrolador PIC16F876 al
dor para programar los tiempo de programación ya que que se le han conectado un cristal
PIC16F87X, utilizando solo carga los códigos del pro- de cuarzo de 4MHz y los
el maravilloso software libre IC- grama que queremos cargar. condensadores de desacoplo de 27
Prog, habréis comprobado que el La placa que hemos diseñado pF y un pulsador que cuando se
tiempo de carga del PIC16F876, además de utilizarla como pro- activa pone un nivel bajo en la
por ejemplo, que tiene 8K es de gramadora, se puede utilizar entrada MCLR para provocar un
varios minutos que se hacen como placa de desarrollo, ya que RESET del sistema. Además para
interminables, sobretodo cuando se dispone de acceso a todos y poder conectar la USART del
estamos programando y depu- cada uno de los pines del micro- microcontrolador al ordenador, se
rando programas. controlador a través de la tira de ha utilizado un circuito adaptador
Lo que presentamos en este postes para circuito impreso de niveles MAX232, tal y como
curso es un circuito que a través macho acodados y dispone de un indica el fabricante en sus notas
de la USAR de los PIC 16F87X circuito oscilador a cristal en de aplicación, y por último se le
es capaz de ponerse en comuni- nuestro caso a 4 MHz, tal y como ha dotado de un conector
cación con ellos y cargar en la se puede ver en el circuito de la acodado DB-9 macho para poder
memoria de programa el código Figura 1. conectar el circuito al puerto serie
Curso microcontroladoresPAGS 27/12/02 10:01 Página 55

VCC

P1
DB9 C1 C2
1uF U1
1uF
1 9
C1+ 9

6
5
9
4
8
3
7
2

1
2 10
E1 V+ 10
3 11 RC6
C1- T1IN
RXPC 4 12 RC7
C2+ R10UT
ESP 5 13 RXPC
C2- R1IN
TXPC C3 6 14 TXPC
1uF V- T1OUT
7 15
7 GND
8 16
8 VCC
C4
VCC C5 MAX232
1uF
1uF

R1
SW1 10K
U2 VCC
R2
MCLR 1 28 RB7
MCLR/VPP RB7
RESET RA0 2 27 RB6
100 RA0/AN0 RB6
RA1 3 26 RB5
RA1/AN1 RB5
RA2 4 25 RB4 VSS VCC
RA2/AN2 RB4
RA3 5 24 RB3
RA3/AN3/VREF RB3
RA4 6 23 RB2
RA4/TOCKI RB2
C6 27pF RA5 7 22 RB1 VCC
RA5/SS/AN4 RB1
8 21 RB0
VSS VSS RB0/INT
9 20
X1 OSC1/CLKIN VDD
10 19
OSC2/CLKOUT VSS
4MHz 18 RC7
RC7/RX/DT
C7 27pF 17 RC6
RC6/TX/CK
RC0 11 VDD
RC0/T1OS0/T1CKI
RC1 12
RC1/T1OS1/CCP2
RC2 13 16 RC5 VCC
RC2/CCP1 RC5/SDO
RC3 14
RC3/SCK/SCL
15 RC4
RC4/SDI/SDA
J1
PIC16F873
MCLR
6
C8
5
4
RB7 0.1u
3
VCC RB6
2
RB3
1

CONECTOR RJ11
CON6 DEBUGE
MCLR
RA2
RA3
RA4

RA0
RA1

RA5
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7

J2
1
2
3
4
5
6
7
8
9

12
13
14
15
16
17
18
19
20
21
22
23
24
25
10
11

CON25

Figura 1.- circuito de la placa de desarrollo y de programación con el bootloadaer


que conectada al PC y en el
mismo entorno del MPLAB,
permite la visualización de los
registros del microcontrolador
en los puntos de ruptura que se
establezcan. Pudiéndose ejecutar
los programas en tiempo real o
en modo paso a paso.
Figura 2.- Conexión del ICD a
la placa de desarrollo.

del ordenador. El cable de


conexión debe ser un modem
nulo, es decir, un cable que solo
necesita la línea de masa
conectada al terminal 5 de los dos
conectores y se cruzan las líneas 2
de un extremo (RxD) con la 3 del
otro (TxD) y viceversa. Ver el
diagrama de conexión de la
Figura 3.
Además la placa dispone de
un conector ARJ11, conectado a
las líneas MCLR, RB3, RB6 y
RB7 del microcontrolador, lo
que permite realizar la conexión
a un módulo ICD (Depurador en
circuito), que como veremos es Figura 3 .- Cable de conexión MODEM nulo para la conexión de la placa de desarrollo
una herramienta de bajo costo con el PC.
Curso microcontroladoresPAGS 27/12/02 10:01 Página 56

;============================ Sección fijada por el usuario ==========================

list p=16f876 ; <<< fijar el tipo de microcontrolador

;Poner el mismo microcontrolador en el proyecto


MICROCONTROLADORES
#include <p16f876.inc> ; <<< poner el archivo *.inc del microcontrolador seleccionado

#define FOSC D'4000000' ;<<< Poner la frecuencia del cuarzo (Hz), max. 20 MHz
#define BAUD D'9600' ;<<< poner la velocidad de transmisión (Bd)
#define BAUD_ERROR D'4' ;<<< Poner la tasa de error (%)
#define TIME ;<<< Poner el método inicio del bootloader PIN/TIME/AUTO

;Disparo por puesta a nivel bajo de la señal de disparo


;TIME Inicia la recepción del byte de IDENT después el RESET
#define POR PORTB ;<<< solo para el PIN – del puerto en juego
PORTB/PORTC/PORTD/PORTE
#define PORT_BIT 7 ; <<< solo para el pin PIN – poner el bit de la línea
seleccionada 0/1/2/3/4/5/6/7
#define TIMEOUT D'3' ; <<< solo para el TIME – fijar el tiempo(0.1 s), max. 25.5 s

;============ Fin de la sección fijada por el usuario ====================================

Tabla 1.- Sección del programa bootloader que debe fijar el usuario.
COMO UTILIZAR
aclaratorio es ver un ejemplo
56
RESISTOR
EL PROGRAMA
BOOTLOADER
1. En primer lugar debemos
3. Si se modifica alguno de los
parámetros anteriores, debe-
mos de volver a compilar el
con un programa que utiliza
este método de carga del pro-
grama de usuario en el micro-
obtener el programa en la programa bootldr.asm. controlador.
siguiente web http://www.ehl.cz/ 4. Programar el microcontrola- El programa TMR0_1.asm es
pic/pic_e.htm , donde también se dor con el archivo bootldr.hex un programa ejemplo que uti-
puede obtener el PIC donwloa- utilizando cualquier progra- liza una temporización utili-
der V1.8. mador de los que ya se han zando TMR0 sin utilizar las
visto en esta Revista, por interrupciones. Realiza una
2. Abrir el proyecto bootldr.pjt ejemplo el que el que aparece temporización de 32,77 ms
utilizando el programa en el módulo de aprendizaje que se emplea para hacer par-
Microchip MPLAB y cambiar de microcontroladores PIC padear los diodos LED pares
los parámetros de la sección que apareció en el número o impares respectivamente
de usuario marcados dentro 189. Poniendo los bits de con- conectados al PORTB. En el
del ensamblador con las mar- figuración para que el micro- código de este programa con
cas <<<, tal y como se muestra controlador trabaje en la apli- separados por un ";" (es decir,
en la Tabla 1, en la que hemos cación. como un comentario) se
fijado el microcontrolador 5. Recompilar el programa de la encuentran las instrucciones
PIC16F876, con un oscilador aplicación para que no borre el de salto a INICIO que utiliza-
de 4MHz, una velocidad de bootloader. El bootloader usa ríamos con un programador
transmisión de 9600 baudios y los 256 bytes de la parte alta de convencional. Y al final del
utiliza el pin 7 del PORTB memoria de programa programa, en la posición
como señal de disparo para (0x1F04-0x1FFF). de memoria 0x1F00 hemos
ejecutar el bootloader cuando Llegado a este punto lo más escrito:
está a nivel bajo y correr el
programa de usuario cuando
está a nivel alto. Por tiempo
entra en el programa de usua- ORG 0x1F00
rio después de haber pasado bcf PCLATH,4 ;Selecciona el banco 0 de memoria
0,3 segundos sin recibir la bcf PCLATH,3
palabra de IDENTIFICA- goto INICIO
CIÓN.
Curso microcontroladoresPAGS 27/12/02 10:01 Página 57

;****************************************************************************
; Programa TMR0_1.ASM Fecha : 7- Mayo-2002
; Este programa utiliza una temporización utilizando TMR0 sin utilizar las interrupciones.
;Se realiza una temporización de 32,77 ms que se emplea para hacer parpadear los diodos LED
; pares o impares respectivamente conectados al PORTB
; Programa preparado para cargar con el PIC downlader

MICROCONTROLADORES
; Revisión : 0.1 Programa para PIC16F87X
; Velocidad del Reloj: 4 MHz Reloj Instrucción: 1 MHz = 1 uS
; Perro Guardián: Deshabilitado Tipo de Reloj : XT
; Protección del código: OFF
;*****************************************************************************
List p=16F876 ;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos

;ORG 0x00 ; Inicio del programa en


;goto INICIO

ORG 0x05 ;salva el vector de Interrupciones


INICIO bcf STATUS,RP1
bsf STATUS,RP0 ; Banco 1
movlw b'11010111' ; Valor a cargar en OPTION_REG
movwf OPTION_REG ; predivisor 256 asignado a TMR0
clrf TRISB ; PORTB como salida
bcf STATUS,RP0 ; Banco 0
clrf PORTB ; Apaga los LEDS del PORTB

BUCLE
movwf
call
movlw
PORTB
RETARDO
b'01010101'
; Enciende los LED impares del PORTB
; Llamada a subrutina de RETARDO
57
RESISTOR
movlw b'10101010'
movwf PORTB ; Enciende los LED pares del PORTB
call RETARDO
goto BUCLE

RETARDO
clrf TMR0 ; TMR0 = 0 y empieza su incremento
EXPLORA
btfss TMR0,7 ; Es el bit 7 de TMR0=1?
goto EXPLORA ; No ha llegado TMR0 a 128 Decial
return ; Ha llegado TMR0 al valor 128D y retorna
; al programa principal
ORG 0x1F00
bcf PCLATH,4 ;Selecciona el banco 0 de memoria
bcf PCLATH,3
goto INICIO ;Salta a INICIO
END

Tabla 2.- Programa TMR0-1.asm para cargar con el bootloader.

Es decir, en las posiciones de 6. Recompilar el programa de la nulo, tal y como se comento


memoria 0x1F00-0x1F03, escri- aplica anteriormete.
bimos un salto largo de 14 bits a 2. Para realizar la carga del pro-
la posición de memoria INICIO, COMO REALIZAR LA CARGA grama de usuario, vamos a
que está en el banco cero de EN EL MICROCONTROLADOR utilizar un programa de
memoria de programa. Esto últi- 1. En primer lugar se conecta la "carga" freware, se trata del
mo debe verificarse si se utiliza placa de desarrollo al PC PIC downloader de Petr
un compilador en C. mediante un cable de modem Kolomaznik y que hemos con-
Curso microcontroladoresPAGS 27/12/02 10:01 Página 58

0x0000
El Bootloader utiliza las
Salto al Bootloader 4 primeras posiciones
0x0004 (0x0000-0x0003)
MICROCONTROLADORES
Espacio disponible
Espacio de memoria, para el programa
para cargar los del usuario
programas transmitidos (0x0004-0x1EFF)

Figura 5.- Apariencia de la


pantalla que aparece al ejecutar el
programa PIC dowloader.

seguido en la web
0x1F00
Salto al programa Primeras 4 posiciones http://www.microchipc.com/ .
de usuario para el usuario Una vez instalado, al ejecutar-
0x1F04 (0x1F00-0x1F03)
lo, aparece una pantalla
como la que se muestra en la
Código del Bootloader Código del programa
Figura 5.

58
RESISTOR 0x1FFF
Bootloader
(0x1F04-0x1FFF) 3. Seleccionamos la velocidad de
transmisión en baudios, en
nuestro caso 9600, el puerto
serie de comunicación, en el
Figura 4.- Mapa de memoria del Bootloader para un microcontrola- ejemplo hemos seleccionado
dor de 8KBytes. el COM2 y buscamos el nom-
bre del programa en código
Características del programa PIC dowloader 1.8 : hexadecimal que queremos
cargar en el microcontrolador,
● Compatible con el bootloader de HI-TECH's o de Shane Tolmie TMR0-1.hex.
para los microcontroladores PIC16F87x Este programa tiene las
● Funcionamientos bajo Windows 9x/ME/NT/2000 siguientes teclas de función
● Selección de la velocidad a partir del 2400 a 56000 Bd
rápida:
F2 - Búsqueda
● Selección del puerto serie entre el COM1-6
F4 - Escribir
● Trabaja con datos de EEPROM en el archivo hexadecimal
ESC - Cancelación
● No envía la palabra de los configuración a la posición 0x2007 o F10 - Salida
palabra de la identificación desde el bootloader 4. Seguidamente se pulsa el
● Mantiene las últimas configuraciones botón de RESET y el progra-
● Se incluye el código de fuente ma se carga en el microcon-
● El downloader del PIC se controla al realizar una señal de dispa- trolador PIC. Según se va rea-
lizando la carga, aparece un
ro del RESET en el microcontrolador
indicador de carga (línea
● Se trabaja en ensamblador para todos aquellos programadores
azul) y al finalizar la carga
que no utilizan el lenguaje C. El bootloader es muy fácil de recom- suena una señal acústica.
pilar para otros microcontroladores actualizando el pin/tieme y la 5. Si volvemos a actuar manual-
frecuencias del cristal de cuarzo. Solo se necesita el programa mente sobre el pulsador de
MPLAB de Microchip que también es gratuito. RESET, se ejecutará el pro-
● Se puede obtener en las siguientes webs: (http://www.ehl.cz/pic/) grama de usuario.
(http://www.microchipc.com/)

También podría gustarte