Hola
Tengo una placa que tiene un 16F628A el que program=E9 para que realice una secuencia de acciones que derivan en una llamada telef=F3nica en respuesta a un flanco descendente por RB0
Esto es as=ED:
Al energizar la placa enviar un estado alto durante 10 segundos al puerto RB3 ( encendido del celular )
Al entrar un evento
RB0 (entrada de evento) se encuentra en estado alto, cuando se produce un evento de disparo, este cambia de estado pasa a un estado bajo verificar el bajo durante un tiempo 4 segundos y si este continua entonces
Enviar un alto durante 2 segundos al puerto RA2 (clear de celular )
Enviar un alto durante 6 segundos al puerto RA3 (redial celular) para que este disque
Esperar 15 segundos y enviar un tren de pulsos al puerto RB4 (buzzer) durante 30 segundos
Verificar si el puerto RB0 continua en estado bajo, si es as=ED, volver a llamar dos veces m=E1s
Grabo el pic con ID-Prog: Oscilador IntRC I/O WDT desactivado PWRT desactivado MCLR activado (tambi=E9n prob=E9 desactivado) BODEN activado LVP activadoCPD y CP activados el resto,todo por defecto.
Con este programa, el p=ECc pone un estado alto en RB3 y no hace mas nada, ni responde al evento
No uso temporizadores por que me resultaron muy engorrosos a la hora de escribir el c=F3digo para contar varios segundos, demasiadas interrupciones para atender.
Este es el c=F3digo:
;---------------------------------- CABECERA
----------------------------------
list P=3D16F628A #include
;--------------------------------- VARIABLES
----------------------------------
; variables internas del temporizador cnta equ 0x22 cntb equ 0x23 cntc equ 0x24 ;------------------------------------ varTmprzSeg equ 0x25 ; segundos que cuenta del temporizador EstTmprz equ 0x26 ; temporizador =3D 0 : inactivo / 1 : activo ; variables del buzzer cntBuzzer equ 0x27
;-------------------------------- DIRECCIONES
---------------------------------
org 0x00 goto Inicio org 0x04 goto SDI org 0x05
;--------------------------------------------------------------------------=