You are on page 1of 3

Pasar del 16f84A al 16F628A

No tiene ningun sentido continuar utilizando el pic 16F84 cuando el 16F628 es ba


stante mas economico y tiene mayores prestaciones:
Como disponer de oscilador interno
El puerto A es de 8 bit en lugar de 5
2048 bit de memnoria - el doble que el 16f84
128 bit de eeprom - el doble que el 16f84
Memoria RAM de 224 3n lugar de 68
2 Comparadores analogicos
Incorporar 2 timer, uo de 8 bit y otro de 16 bit, frente a solo uno de 8 bit del
16f84
Dispone de USART
Un modulo de PWM
Por el precio de un 16f84A podemos comprar dos 16f628A

Cualquier programa realizado para el 16f84 podemos pasarlo muy facilmente al 16f
628, con tan solo cambiar unas pocas directivas, ya que todos los pines son comp
atibles.
La memoria ran del 16F84 comienza en la posicion 0Ch mientras que en el 16f628 c
omienza en la posicion 20h
El pic 16f628 trae los comparadores abilitados, por lo que si esos pines los vam
os a utilizar como entradas digitales, tendremos iniciar el puerto CMCON con 0x0
7
El registro FSR de escritura y lectura de la eeprom se encuentra en el banco 0 d
el 16f84 mientras que en 16f628 se encuentran en el banco 1.
El 16f628A dispone de 4 bancos de trabajo en lugar de los 2 del 16f84, aunque po
deis utilizar solamente el Banco 0 y 1 del mismo modo que el 16f84, exceptando e
l control de la eeprom.
El 16f628 dispone de bastantes mas fuses de configuracion
LP - Low Power oscillator, ex. 32768 Hz crystal
XT - Crystal upto 4.096 MHz
HS - Crystal upto 20 MHz
ExtClk. - External clock from a crystal oscillator, etc.
IntRC I/O - Internal 4 MHz & the oscillator lines become I/O
IntRC ClkOut - Internal 4 MHz & the oscillator output line becomes clock out
RC IO - External resistor & capacitor and the oscillator output line become I/O
RC ClkOut. - External resistor & capacitor and the oscillator output line become
s clock out
WDTE - Watch dog enable
PWTE - Power up timer enable
MCLRE - Internal master clear enable

BOREN - Brown out detection enable


LVP - Low voltage program enable
CPD - Code protect EEPROM data memory
CP - Code protect program memory

EJEMPLO DE USO PARA UTILIZAR EL 16f628A


;************************ BITS DE CONFIGURACION *************************
;CP_OFF - Codigo de proteccion programa desactivado
;CPD_OFF - Codigo de proteccion eeprom desactivado
;WDT_OFF - Perro guardian desconectado
;BODEN_OFF - No actua el reset por bajada de tension
;PWRTE_OFF - Reset de inicio desconectado
;MCLRE_OFF - Reset externo desconectado, sino pierdo una entrada A5
;XT_OSC - oscilador exterior
;INTOSC_OSC_NOCLKOUT - funcionamiento con reloj interno
;LVP_OFF - programacion de bajo voltage desconectado,
; para poder utilizar el pin 4 de RA
;****************************** ZONA DE DATOS ****************************
__CONFIG _LVP_OFF & _MCLRE_OFF & _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_ON & _I
NTOSC_OSC_NOCLKOUT
LIST P=PIC16F628A ;Procesador utilizado.
INCLUDE <P16F628A.INC>
;***************************** MAPA DE MEMORIA ****************************
CBLOCK 0x20 ;Inicio de la memoria de datos
PDel0 ; para las demoras
PDel1
PDel2
ENDC ;fin de la memoria de datos
;****************************** ZONA DE DATOS *********************************
#define pulsador_1 PORTA,0
#define pulsador_1 PORTA,1
#define pulsador_1 PORTA,2
#define pulsador_1 PORTA,3
#define
#define
#define
#define

led_1 PORTB,0
led_1r PORTB,1
led_1 PORTB,2
led_1 PORTB,3

;******************************************************************************
;************************************* INICIO **********************************
*
;******************************************************************************
reset org 0x00 ;El programa comienza en la direccin 0.
goto INICIO
org 0x04 ;aqui se atienden las interupciones
DT " Rutina de ejemplo" ;me gusta poner aqui el nombre del programa, ya que se v
era al grabar el micro, pero no afecta al programa.
INICIO

BSF
bsf
bsf
bsf
bsf

STATUS,RP0 ; banco 1
pulsador_1 ;configuro las entradas
pulsador_2
pulsador_3
pulsador_4

bcf
bcf
bcf
bcf

led_1 ; configuro las salidas


led_2
led_3
led_4

BCF STATUS,RP0 ;banco 0.


movlw b'00000111' ; desactiva el comparador analogico
movwf CMCON
;podeis continuar con la programacion