Sunteți pe pagina 1din 20

Microcontroladores PICs

16f84A
El PIC16F84A est fabricado en tecnologa CMOS,
posee memoria FLASH, y es de bajo consumo en
potencia. Est compuesto bsicamente de una
memoria ROM (1024 palabras de memoria de
programa), una memoria RAM (de acceso aleatorio,
68 bytes), lneas de entrada y salida en 2 Puertos
(PA PB), y lgica de control que coordina la
interaccin de los dems bloques. Estos micros
pertenecen a la gama media y dispones de un set
de 35 instrucciones, tipo RISC (Computador con Set
de Instrucciones Reducido) pocas pero muy
poderosas.-


Algunas funciones especiales que dispone este PIC:
Temporizador programable (Timer). Si se quiere medir periodos de tiempo
entre eventos, generar temporizaciones o salidas con frecuencia especfica,
etc.
Perro Guardin o Watchdog. Consiste en un temporizador que, cuando se
desborda ya pasa por 0, provoca un reset automtico, utilizado para sistemas
que no tienen control de un supervisor, y al bloquearse el micro se resetea. Si
se utiliza el cdigo debe resetearlo antes de que se desborde.
Memoria EEPROM de 64 bytes, para guardar datos que no se alteran a pesar
de quitar la alimentacin.
Interrupciones, cuando una seal externa, o una condicin interna activa una
lnea de interrupcin, dejando de lado la tarea que est ejecutando, atiende
dicha interrupcin y luego contina con lo que estaba haciendo.
Proteccin ante fallo de alimentacin. Se trata de un circuito que resetea al
micro cuando el voltaje Vdd es inferior al mnimo.
Estado de bajo consumo. Sleep. Si el micro debe esperar mucho tiempo sin
hacer nada, posee una instruccin especial, Sleep, que lo pasa al estado de
reposo. Al activarse una interrupcin se despierta y reanuda su trabajo.
(Reset externo, desbordamiento de Watchdog, interrupcin por RB0,
interrupcin por cambio de nivel en RB4 a RB7, interrupcin por escritura
completada en EEPROM)



Registro de Estado (03h y 83h)
Ocupa la posicin 03h del banco 0 y la 83h del banco 1.



Bit 7, IRP: Seleccin del banco en direccionamiento indirecto. Este
bit junto con el de ms peso del registro FSR sirven para determinar
el banco de la memoria de datos seleccionado. En el PIC16X84 al
disponer de dos bancos no se usa y debe programarse como 0.








Bit 6 y 5, RP0 y RP1: Register Bank Select. Seleccin de pgina o
banco de la memoria con direccionamiento directo. Cada pgina
contiene 128 bytes. Como el PIC16X84 slo tiene dos bancos
nicamente se emplea RP0 de forma que cuando vale 0 se accede al
banco 0 y cuando vale 1 se accede al banco 1. Despus de un reset,
RP0 se pone automticamente a 0. RP1 debe mantenerse a 0. El bit
RP1 deber ser puesto a cero, ya que si no nos saldramos del rango
de memoria.


Bit 4 (flag), TO: Time Out (Tiempo acabado)
Se pone a 1 tras conectar la alimentacin o al ejecutar CLRWDT o SLEEP.
Se pone a 0 por desbordamiento del Perro Guardin WDT.
Bit 3 (flag), PD: Power Down (Apagado).
Se pone automticamente a 1 tras conectar la alimentacin Vdd o ejecutar CLRWDT, que
resetea el contador WatchDog.
Se pone a 0 al ejecutar la instruccin SLEEP.
Bit 2 (flag), Z: Cero
1 = El resultado de una operacin aritmtica o lgica es 0.
0 = El resultado es distinto de 0.
Bit 1 (flag), DC (Digit Carry). Acarreo en el 4 bit de menos peso. Funciona igual que el bit de
Carry descrito a continuacin. De inters en operaciones en BCD
Bit 0 (flag), C (Carry). Acarreo en el 8 bit o bit de mas peso. Es el bit de "acarreo" en
operaciones de suma AADWF y ADDLW as como tambin el bit de "llevada" en las
instrucciones de sustraccin SUBWF y SUBLW. Tambin lo emplean las instrucciones RLF y
RRF de rotacin de bits.
Suma
Se pone a 1 cuando se ha producido acarreo en la suma en el bit de mayor peso con las
operaciones AADWF y ADDLW.
Se pone a 0 si en la suma no se ha producido acarreo.
Resta
Se pone a 1 si en la resta no se ha producido llevada.
Se pone a 0 cuando se ha producido llevada en la resta con las operaciones SUBWF y
SUBLW.




Puertos de E/S
La mxima corriente que puede suministrar una lnea programada
como salida es de 20 mili-amperios, pero si utilizamos toda las lneas
del puerto A programadas como salida, no deber exceder de 50mA
para todo el puerto A. Para el caso del puerto B no deber exceder
de 100 mA.
Como entra esta configurado como nivel TTL








Prac1.asm
;al ingresar un cero en pa.0 se prende pb.0 y si pa.0 es uno
; el puerto pb.1 se prende
list p=16f84A
RADIX HEX
PA EQU 0X05
PB EQU 0X06
ESTADO EQU 0X03
ORG 0X00
BSF ESTADO,5
MOVLW 0XFF
MOVWF 0X05 ;pa como entrada
MOVLW 0X00
MOVWF 0X06 ; pb como salida
BCF ESTADO,5
INICIO BTFSC PA,0
GOTO UNO
GOTO CERO
UNO BSF PB,1
BCF PB,0
GOTO INICIO
CERO BSF PB,0
BCF PB,1
GOTO INICIO
END

Funcin = (A+B)C

S-ar putea să vă placă și