Hola a todos, me presento mi nombre es Nestor y soy aficionado principiante a la programacion de Pic.
Esoy queriendo dar mis primeros pasos en programar Pic y he comenzado por lo que creo es el inicio obligatorio del que no conoce nada, "Encender un Led usando un pulsador"
Tan mal no me fue ya que leyendo en el foro otros ejemplos creo haber comprendido las instrucciones minimas necesarias del Pic 16f84 como para logralo y simularlo en Proteus con exito.
Pero quise ir un poco mas alla y es entonces cuando se me presenta el siguiente problema, mi intencion es que el Led encienda recien despues de haber oprimido 10 veces el pulsador
por si no fui claro es algo asi: oprimo 1 ves no enciende, oprimo 2 veces no enciende, pero cuando oprima por decima ves si enciende.
Esto es lo que hice
Declare una variable en uno de los Registros de Propositos Generales
Cont equ 0x0C
Luego coloque un 10 en Cont
movlw .10
movwf Cont
Luego fui restando 1 a Cont en un bucle hasta llegar a cero
decfsz Cont, 1
El codigo quedo asi
list p=16F84A
#include P16F84A.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;**** Definicion de variables ****
Led equ 0
Boton equ 0
Cont equ 0x0C ; Aqui declaro Cont
;**** Configuracion de puertos ***
Reset org 0x00
goto Inicio
org 0x05
Inicio bsf STATUS,RP0
movlw b'11111'
movwf TRISA
movlw b'11111110'
movwf TRISB
bcf STATUS,RP0
movlw .10 ; Aqui cargo W con 10
movwf Cont ; Paso 10 a Cont
bcf PORTB,Led
;**** Control de Led ****
Bucle btfsc PORTA,Boton
goto Bucle
decfsz Cont,1 ; Decremento Cont en 1
goto Bucle ; Cont no es = 0
bsf PORTB,Led ; Cont = 0
end
Se que esta mal porque lo simulo en Proteus y no funciona como quiero, intente colocando una demora en el pulsador pero no funciono y la quite.
Estaria muy agradecido si alguien me puede orientar en cual es el error que cometi, desde ya muchas gracias.
Una pregunta mas "cuando se usa goto y cuando se usa call?"