Hola a todos!!
Hace tiempo diseñé una aplicación para un 16F84A@20MHz, y ahora quiero ampliarla.Por eso pensé en el 16F73 que tiene más puertos y más memoria.
El problema que tengo es que he hecho un programa de prueba (encender apagar un led cada 500ms), y no hay forma de que funcione para 20MHz, sólo a 4MHz.
He corroborado con el distribuidor que el pic debe funcionar a 20MHz, pero nada de nada.
¿Alguien sabe que puede pasar? Uso el IC-Prog y deshabilito todos los fuses, y el cristal a HS.
Os dejo el código:
LIST P=16F73
#include "p16F73.inc"
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC
#define BANCO0 bcf STATUS,5
#define BANCO1 bsf STATUS,5
cblock
PDel0
PDel1
PDel2
endc
org 0x00
goto Inicio
org 0x05
Inicio: clrf PORTA
BANCO1
movlw b"00000000"
movwf TRISA
BANCO0
clrf PORTB
BANCO1
movlw b"00000000"
movwf TRISB
BANCO0
Bucle: movlw 0x00
movwf PORTA
call Demora1
movlw 0xFF
movwf PORTA
call Demora1
goto Bucle
Demora1: movlw .22 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop0 movlw .134 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop1 movlw .211 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
end
Muchas gracias de antemano!!