Buenas tardes he intentado realizar una practica de interrupcion pero no puedo avanzar ya que el tiempo que le pongo en mi codigo no es el mismo que indico
el laboratio o practica que hago es al presionar un botton o pin del puertoB activa el pin0 del puertoA
P1 var PortB.0 L1 var PortA.0
hasta cierto avance del codigo funciona normal cuando le digo que si pulso el P1 entonces me encendera L1 y si vuelvo a pulsar entonces lo apagara eso le indico con un toggle que lo hace perefectamente pero la idea continua de este codigo es que cuando L1 este activado despues de un tiempo se desactive solo por decir esta activado luego de unos 10 seg se desactive solo esto lo hago por interrupcion no se muy bien usarlas pero corrijanme si me equivoco aca les dejo el codigo haber si me pueden aayudar o decir en que puedo mejorar
el punto es que los 10 seg no me los respeta
primero le puse 1 min para que luego de este tiempo de descative y la primera vez lo respeto luego lo hacia antes de los 10 o 15 o 30 y varia infinidades de veces
luego le puse los 10 seg y aveces me lo apaga antes de los 3 seg
este es el codigo y aca subo la carpeta del archivo haber si me pueden orientar el tiempo de los 10 seg es por prueba ya que quisiera darle mas tiempo una 3 o 4 horas en la que se desactive solo.
espero pueda tener respuesta de ustedes gracias a todos
el laboratio o practica que hago es al presionar un botton o pin del puertoB activa el pin0 del puertoA
P1 var PortB.0 L1 var PortA.0
hasta cierto avance del codigo funciona normal cuando le digo que si pulso el P1 entonces me encendera L1 y si vuelvo a pulsar entonces lo apagara eso le indico con un toggle que lo hace perefectamente pero la idea continua de este codigo es que cuando L1 este activado despues de un tiempo se desactive solo por decir esta activado luego de unos 10 seg se desactive solo esto lo hago por interrupcion no se muy bien usarlas pero corrijanme si me equivoco aca les dejo el codigo haber si me pueden aayudar o decir en que puedo mejorar
el punto es que los 10 seg no me los respeta
primero le puse 1 min para que luego de este tiempo de descative y la primera vez lo respeto luego lo hacia antes de los 10 o 15 o 30 y varia infinidades de veces
luego le puse los 10 seg y aveces me lo apaga antes de los 3 seg
Código:
@ Device PIC16F628A
@ Device HS_Osc
@ Device Protect_Off
@ Device WDT_Off
@ Device Pwrt_Off
@ Device MCLR_Off
@ DEvice BOD_Off
@ Device LVP_Off
@ Device CPD_On
cmcon=7
DEFINE OSC 10
P1 VAR PORTB.0
L1 VAR PORTA.0
I var byte
Ticks VAR byte
Minute VAR byte
Second VAR byte
pause 500
Minute =0
Second =0
Ticks =0
OPTION_REG = $05 ; prescaler = 64
ON INTERRUPT GOTO ISR ; ir a rutina ISR
if second => 10 then
l1=0
second=0
elseif
if second <10 then
l1=1
endif
endif
INICIO:
if p1 then
PAUSE 100
IF p1 THEN
while p1:wend
toggle l1
TMR0 = 0 ;inicializa registro TRMO
INTCON = $A0 ; habilita tiempo de interuupcion
endif
endif
GOTO INICIO
DISABLE
ISR:
Ticks = Ticks + 1
IF Ticks < 61 THEN NoUpdate
Ticks = 0
Second = Second + 1
IF Second => 10 THEN
l1=0
second=0
ENDIF
NoUpdate:
INTCON.2 = 0 ;rehabilitainterrupciones del TRMO
Resume
ENABLE ;
END
END ; Fin del programa
este es el codigo y aca subo la carpeta del archivo haber si me pueden orientar el tiempo de los 10 seg es por prueba ya que quisiera darle mas tiempo una 3 o 4 horas en la que se desactive solo.
espero pueda tener respuesta de ustedes gracias a todos
Adjuntos
Última edición por un moderador: