Está en la página 1de 2

Problemas para encender un led con el PIC16f877

Hola, estoy tratando de aprender a trabajar con el PIC16f877, realize un programa de prueba que
enciende y apaga un led, pero si utilizo un cristal de 20Mhz el pic actua como si no estuviese
programado al intentarlo con un cristal de 4Mhz (realizando los cambios requeridos al codigo) el
led enciende, pero en vez de apagarse y encenderse, comienza a haber una caida de voltaje hasta
que el led se apaga. No se cual es el error, espero puedan ayudarme.
aqui esta el codigo:

__CONFIG _WDT_OFF&_PWRTE_ON&_XT_OSC&_LVP_OFF&_CP_OFF ; Configuración


para el programador

LIST p=16F877A
INCLUDE <P16F877A.INC>

N EQU 0x00
cont1 EQU 0x20
cont2 EQU 0x21

ORG 0x00 ; Inicio de programa

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 línea RA0 de PORTA toma el valor de 1, se enciende el LED
CALL Retardo ; Llamada a la rutina de retardo
BCF PORTA,0 ; La línea 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.
Object 1

END ;Fin de programa


Error 1. No puedes definir una variable en la localidad 0x00, debe ser a partir de
la 0x20. Si deseas usar N como constante de valor 0 para reiniciar los registros
cont1 y cont2 te sera mas facil usar la instruccion CLRF cont1 o CLRF cont2.

Si el pic no trabaja a 20MHz verifica que el numero de parte realmente coincide


con un pic16f877 cuyo rango de operacion sea hasta los 20MHz (ve el numero de
parte y la hoja de datos)

Bueno ante todo muchas gracias por responder tan pronto, revisare mi código en relacion a
lo que comentaste; con respecto a lo del pic ya revise el datasheet que nos da el
fabricante( Microchip) y no comenta en ninguna parte que al pic16f877 no trabaje a 20Mhz,
dice que su funcionamiento es con cristales entre 4Mhz y 20Mhz como maximo, con respecto
a lo que dijo tiopepe123, en el datasheet me dice que para configuraciones de 20Mhz el
rango de los capacitores esta entre 15pF-30pF, bueno eso es lo que dice el datasheet,
seguiré intentando a ver si funciona

También podría gustarte