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.
END ;Fin de programa
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.
END ;Fin de programa
Última edición: