Você está na página 1de 6

Gua de trabajo microcontroladores

PIC 16F84A
Proyecto N1 : Switch enciende led .

Circuito esquematico realizado en Proteus

Gua de trabajo microcontroladores


PIC 16F84A
Programa en assembler que controla el encendido del led mientras se presiona el
switch

Programa descrito paso a paso


; **** Encabezado ****
list p=16F84A
list p= define el procesador a utilizar
#include P16F84A.inc
En el archivo P16F84A.inc se encuentran las definiciones de las direcciones de los
registros especficos, los bits utilizados en cada registro y los fusibles del micro.

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


Configuracin de fusibles. Hay ciertos aspectos del PIC que han de ser activados o
desactivados mediante hardware a la hora de programarlo. Esto quiere decir que no
se pueden volver a cambiar hasta que el chip no se reprograme de nuevo. El
PIC16F84A dispone de 4 fusibles (los modelos superiores tienen ms). Cada fusible
activa o desactiva una opcin de funcionamiento.
Los bit's de configuracion o mas comunmente llamados "fusibles" permiten
confugurar ciertas funciones en los microcontroladores PIC, como el tipo de cristal
para el oscilador, permiten proteger el cdigo en el micro, entre muchas funciones.
La cantidad de funciones que se pueden configurar con los fusibles dependen del
microcontrolador.
CP: Activando este fusible tendremos la garanta de que el cdigo que escribamos en
el PIC no pueda ser ledo por otra persona, para que no nos lo copien, modifiquen,
etc. (Code Protection). Esto no impide que el PIC funcione como siempre, ni que no
se pueda sobrescribir su contenido.
WDT: El famoso "perro guardin" del PIC se configura aqu. Esta es una capacidad
del microcontrolador de autorresetearse.
PWRT: Si activamos este fusible, lo que conseguimos es que se genere un retardo
en la inicializacin del microcontrolador.
OSC: Este fusible controla el modo de oscilacin que usar el PIC para funcionar.
Como ya sabemos, el oscilador se puede configurar de 4 maneras distintas,
dependiendo de la velocidad y del tipo de circuito oscilador empleado.
Si no se especifica otra cosa mediante esta directiva la configuracin adoptada por
defecto es:

Oscilador RC
Watchdog habilitado
Temporizador Power-Up deshabilitado
<proteccin de cdigo deshabilitado

Gua de trabajo microcontroladores


PIC 16F84A

;**** Definicion de variables ****

Led
equ
caso PORTB.-

; Definimos Led como el bit cero de un registro, en este

Pulsador
PORTA

; Definimos Pulsador como el bit 0, en este caso sera para

equ

Definicin de variables que utilizaremos en nuestro proyecto. En este caso solo


definiremos bits, por ejemplo Led y Pulsador.
La directiva equ significa igual a.
Para organizar nuestro programa lo estructuraremos de la siguiente manera:
Etiqueta
Directiva
Operandos ; Comentarios

;**** Configuracion de puertos ***


Reset
org

0x00

; Aqui comienza el micro.-

goto

Inicio

; Salto a inicio de mi programa.-

org

0x05

; Origen del codigo de programa.-

Inicio
bsf

STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-

movlw

b'11111'

; Muevo 11111 a W.-

movwf

TRISA

; Cargo en TRISA.-

movlw

b'11111110'

movwf

TRISB

bcf

STATUS,RP0 ; Paso del Banco 1 al Banco 0

bcf

PORTB,Led

; Comienza apagado.-

Configuracin de puertos.
Para la configuracin necesitamos los siguientes registros:
STATUS > 0x03; PORTA > 0x05; PORTB > 0x06; TRISA > 0x86 y TRISB >
0x86.
Por defecto los puertos quedan configurados como entradas de datos y si se quiere

Gua de trabajo microcontroladores


PIC 16F84A
cambiar hay que configurarlos. Esto se realiza con los registros TRISA y TRISB,
teniendo en cuenta que si se asigna un cero (0) a un pin, quedara como salida y si
se asigna un uno (1), quedara como entrada.
En nuestro caso se necesita colocar TRISA igual a 11111 (o se puede dejar por
default) y TRISB 11111110. Ahora bien, cuando el PIC arranca se encuentra en el
Banco 0, TRISA y TRISB se encuentran en el Banco 1, entonces debemos cambiar de
Banco. Esto se realiza con el bit RP0 del registro STATUS. Si este se pone un cero a
RP0, estaremos en el Banco 0. Si se coloca un uno, estaremos en el Banco 1.
Registro W: es el registro ms importante que tiene el microcontrolador y es
denominado ACUMULADOR.

;**** Control de Led ****

Bucle
btfsc

PORTA,

Pulsador

; Preguntamos si esta en 0 logico.-

btfsc registro,bit -> comprueba un determinado bit de un registro (f) y salta si el bit
vale cero. Mirar el valor del bit Pulsador de PORTA, y si vale uno ejecuta la siguiente
instruccin, y si vale cero salta la instruccin.
btfss es lo mismo pero al contrario: comprueba el bit de f y salta si vale uno(set).
goto

Apagar

; Esta a 1 logico, Apagamos Led.-

bsf

PORTB,Led

; Esta a 0 logico, Encendemos Led.-

goto
Pulsador.-

Bucle

; Testeamos nuevamente la condicion del

bcf

PORTB,Led

;Apagamos Led.-

goto
Pulsador.-

Bucle

;Testeamos nuevamente la condicion del

Apagar

end

Gua de trabajo microcontroladores


PIC 16F84A

Cdigo fuente
; **** Encabezado ****
list p=16F84A
#include P16F84A.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;**** Definicion de variables ****

Led
equ
caso PORTB.-

; Definimos Led como el bit cero de un registro, en este

Pulsador
PORTA

; Definimos Pulsador como el bit 0, en este caso sera para

equ

;**** Configuracion de puertos ***

Reset
org

0x00

; Aqui comienza el micro.-

goto

Inicio

; Salto a inicio de mi programa.-

org

0x05

; Origen del codigo de programa.-

Inicio
bsf

STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-

movlw

b'11111'

; Muevo 11111 a W.-

movwf

TRISA

; Cargo en TRISA.-

movlw

b'11111110'

movwf

TRISB

bcf

STATUS,RP0 ; Paso del Banco 1 al Banco 0

bcf

PORTB,Led

; Comienza apagado.-

Gua de trabajo microcontroladores


PIC 16F84A
;**** Control de Led ****

Bucle
btfsc

PORTA,

Pulsador

; Preguntamos si esta en 0 logico.-

goto

Apagar

bsf

PORTB,Led

; Esta a 0 logico, Encendemos Led.-

goto
Pulsador.-

Bucle

; Testeamos nuevamente la condicion del

bcf

PORTB,Led

;Apagamos Led.-

goto
Pulsador.-

Bucle

;Testeamos nuevamente la condicion del

; Esta a 1 logico, Apagamos Led.-

Apagar

end

Para el ensamblado del programa seguir instrucciones en gua adjunta sobre


programa Mplab de Microchip.

Você também pode gostar