TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Carlo en 07 de Junio de 2021, 14:26:28
-
Hola a todos estoy quieriendo hacer funcionar un pequeño programa en la protoboard y no lo puedo lograr mi programa es el siguiente estoy trabajando con el pic 12f629
LIST P=12f629, ; usar PIC 16F84A
#include <p12f629.inc>
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &_INTRC_OSC_NOCLKOUT & _MCLRE_OFF & 0x3F18 ; code protec off
; power up timer on
; watchdog off
; osc XT
PDel0 equ 20
PDel1 equ 21
ORG 0
BSF STATUS,5;
BCF TRISIO,2;
BSF TRISIO,0;
BCF STATUS,5 ; volvemos a la pagina 0
INICIO BSF GPIO,2;
CALL DEMORA
BCF GPIO,2;
CALL DEMORA
GOTO INICIO
DEMORA movlw .197 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1
PLoop1 movlw .253 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel1,1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0,1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2
return ; 2+2 Fin.
;---------------------------------------
END ; fin de programa
-
Que tal Carlo,
Tienes al menos dos problemas:
1) Cuando defines los fuses, con el último número que colocas estás "matando" tu configuración. Deberías eliminarlo:
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &_INTRC_OSC_NOCLKOUT & _MCLRE_OFF
2) Tampoco estás cargando el valor de calibración del oscilador interno para este microcontrolador. Si no lo haces, la frecuencia de operación no será la correcta. Revisa la página 56 del datasheet. Y verás que necesitas agregar al inicio de tu código principal lo siguiente:
bsf STATUS,RP0 ; Bank1
call 3FFh ; Get the cal value
movwf OSCCAL ; calibrate
bcf STATUS,RP0 ; Bank 0
elreypic
-
ok.lo hare gracias por la ayuda :-/