Está en la página 1de 3

Pasar del 16f84A al 16F628A

No tiene ningun sentido continuar utilizando el pic 16F84 cuando el 16F628 es bastante 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 16f628, con tan solo
cambiar unas pocas directivas, ya que todos los pines son compatibles.
La memoria ran del 16F84 comienza en la posicion 0Ch mientras que en el 16f628 comienza en la
posicion 20h

El pic 16f628 trae los comparadores abilitados, por lo que si esos pines los vamos a utilizar como
entradas digitales, tendremos iniciar el puerto CMCON con 0x07
El registro FSR de escritura y lectura de la eeprom se encuentra en el banco 0 del 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 podeis utilizar
solamente el Banco 0 y 1 del mismo modo que el 16f84, exceptando el 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 becomes 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 & _INTOSC_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 led_1 PORTB,0
#define led_1r PORTB,1
#define led_1 PORTB,2
#define 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 vera al grabar el
micro, pero no afecta al programa.
INICIO
BSF STATUS,RP0 ; banco 1
bsf pulsador_1 ;configuro las entradas
bsf pulsador_2
bsf pulsador_3
bsf pulsador_4
bcf led_1 ; configuro las salidas
bcf led_2
bcf led_3
bcf led_4
BCF STATUS,RP0 ;banco 0.
movlw b'00000111' ; desactiva el comparador analogico
movwf CMCON
;podeis continuar con la programacion