Académique Documents
Professionnel Documents
Culture Documents
CODIGO GENERADO PARA ENCENDER Y APAGAR UN LED CONECTADO AL PIN 0 DEL DEL PUERTO B DEL
PIC 16F877A
#include <16f877a.h>
#fuses xt,nowdt
#use delay(clock=4000000)
//Declaracion de variables globales
#define Led pin_b0//Nombra a pin_b0 como Led
#define Retardo delay_ms(500)//Nombra a delay_ms() como Retardo
//Programa principal
void main(){
//Configuracion de puertos E/S
SET_TRIS_B(0x00);//Configura el puerto B: 0=Salida; 1=Entrada
output_b(0x00); //Limpia el registro del puerto
//Estructura Programa principal
inicio://Etiqueta de retorno
output_high(led);//Pone en alto a led
retardo;//Demora
output_low(led);//Pone en bajo a led
retardo;//Demora
goto inicio;//Regresa a la etiqueta inicio
}
Programas
sencillos
PIC16F877A.
para
el
microcontrolador
En
esta
ocasin
te
presentaremos dos sencillos programas escritos en ensamblador para el PIC16F877A. El
primero de ellos enciende y apaga un LED conectado al pin RA0 del microcontrolador;
mientras que el segundo, prende secuencialmente los LEDsque han sido conectados al
puerto
B
del
mismo.
Adems,
aprenderemos
a simular
nuestro
microcontrolador
Proteus eimplementaremos fsicamente nuestro PIC en el protoboard.
en
Isis
Configuracin
LIST p=16F877A
INCLUDE <P16F877A.INC>
ORG 0x00 ;Inicio de programa
N EQU 0x00
cont1 EQU 0x20
cont2 EQU 0x21
BCF STATUS,RP0 ; Accede a banco 0
BCF STATUS,RP1
CLRF PORTA ; Limpia PORTA
BSF STATUS,RP0 ; Accede a banco 1
CLRF TRISA ; Configura todos las patitas de PORTA como salidas
BCF STATUS,RP0 ; Regresa a banco 0
Encled
BSF PORTA,0 ; La lnea RA0 de PORTA toma el valor de 1, se enciende el
LED
CALL Retardo ; Llamada a la rutina de retardo
BCF PORTA,0 ; La lnea RA0 de PORTA toma el valor de 0, se apaga el
LED
CALL Retardo ; Llamada a la rutina de retardo
GOTO Encled ; Va a la etiqueta Encled
Retardo ; Rutina de retardo
MOVLW N
MOVWF cont1
Rep1
MOVLW N
MOVWF cont2
Rep2
DECFSZ cont2,1
GOTO Rep2
DECFSZ cont1,1
GOTO Rep1
RETURN ; Retorno a la llamada de rutina de retardo.
END ; Fin de programa
Y
aqu, nuestro
circuito
implementado
en
el
protoboard simplificado.
Configuracin
LIST p=16F877A
INCLUDE <P16F877A.INC>
ORG 0x00 ; Inicio de programa
N EQU 0x00
cont1 EQU 0x20
cont2 EQU 0x21
BCF STATUS,RP0 ; Accede a banco 0
BCF STATUS,RP1
CLRF PORTB ; Limpia PORTB
BSF STATUS,RP0 ; Accede a banco 1
CLRF TRISB ; Configura todas las patitas de PORTB como salidas
BCF STATUS,RP0 ; Regresa a banco 0
aqu, su
correspondiente
implementacin
en
el
protoboard.
EN
PROTEUS.
simular
nuestros
micros
en
ISIS:
En
ella,
simplemente
hacemos click sobre la imagen de la carpetita (ubicada en la opcin Program File) para buscar
y
cargar
el
archivo
.HEX.
3.- Y listo, finalmente simularemos el microcontrolador para comprobar que nuestro circuito
funcione
perfectamente
bien.
PARA
QUE
NUESTRO
PIC
FUNCIONE
FSICAMENTE.
Nuestro cdigo parece estar bien, nuestra simulacin funciona perfectamente, pero Oh
Sorpresa!, a la hora de implementarlo en el protoboard nuestro proyecto no
funciona. Aqu una serie de medidas a tomar en cuenta si nuestro microcontrolador
PIC16F877A
no
hace
nada.
1.
Alimentar
correctamente
nuestro
PIC.
Debemos asegurarnos de que nuestro micro este bien alimentado. Para ello veamos el
diagrama
de
pines
del
microcontrolador,
utilizado
estos
capacitores,
ya
que
3.
Configurar
correctamente
los
bits
o
fusibles
de
configuracin.
Es decir, debemos asegurarnos de activar los bits correctos de acuerdo a las necesidades del
proyecto. En muchas de las prcticas solo debemos escoger el tipo de cristal, as que
deshabilitaremos todas las dems opciones de configuracin. Para estas prcticas hemos
utilizado
el
oscilador
de
cristal
tipo
XT.
Ms
Ms
informacin
informacin
sobre
sobre
fusibles
de
osciladores.
configuracin.
IDE.