mida 21 ;------------------------------------------------------------- ;Aplicación -> ;Fecha -> ;ver1 cambio para las 3 fases envio de mensaje por conexion directa com ;ver 2 cambio para envio de mensaje por gsm, mida en conexion por gsm ;ver 3 para usar con conexion directa a com1, mida en conexion directa ;------------------------------------------------------------- ;programa principal--------------------------------------- &ini ld scan jz &lea jmp ini10 &lea call &leavar ini10 ;call gsm call tie inif end ;-------------------------------------------------------------- ;------------------------------------------------------------- ;gsm. inicio subrutina para mensajeria gsm -------------------------------------- ; llamar a modem remoto y establecer conexion-------------------------- gsm ink llamar jz gsm1 clear disl numero at 0 clear disl llamard com 0 ;colgar una llamada y pasar a modos comandos---------------------------- gsm1 ink cuelga jz gsm2 at 2 clear disl colgar com 0 ;responder llamada entrante-------------------------------------------- gsm2 movri cmod movci 2 cpei desc jmp gsm3 desc at 1 clear disl lineas com 0 setri cmod -2 ;leer mensaje sms nuevo------------------------------------------------- gsm3 ld r_sms jz gsm4 reset t_mod movri n_sms at 4 verif ld 76 jz verif clear com 9 loc 0 com 0 set t_mod ;borrar mensaje sms del modem gsm--------------------------------------------- gsm4 ink borrar jz gsm5 movri reg_int at 5 clear disl borrando com 0 ;enviar mensaje sms--------------------------------------------- gsm5 ink enviar jz gsm6 gsm51 clear call mensa at 3 clear disl enviar_m com 0 gsm6 ret ;gsm. fin subrutina para mensajeria gsm -------------------------------------- ;------------------------------------------- ;-------------------------------------------- ;--------------------------------------- ; tie. lee registros cada vez que cambio el horario tie movri horario movri horariot cpei tief tie10 call cam movri horario stoi horariot tief ret ;---------------------------- ;cam. cambia registros cam cam00 ld 0 ;es cero? jnz cam01 inc ent0of 1 ;..si es cero, sume 1 minuto cam01 ld 0 ;..pero cambio? xor ent0t out ent0tc ld ent0tc ;...no cambio asi que pase al siguiente jz cam10 set escr ;..si cambio habilite escribir el estado cam10 ld 1 jnz cam11 inc ent1of 1 cam11 ld 1 xor ent1t out ent1tc ld ent1tc jz cam20 set escr cam20 ld 2 jnz cam21 inc ent2of 1 cam21 ld 2 xor ent2t out ent2tc ld ent2tc jz cam30 set escr cam30 ld escr ;se detecto escribir? jz cam40 call entra write 0 1 ;...si...escriba call mensa reset escr cam40 camf ret ;-------------------------------- ;entra. entradas a enteros para bases de datos entra ld 0 ;copia entrada en registro para db out ent0t ld 0 jnz entra1 setri ent0i 0 ;copia enregistros enteros el valor de la entrada=0 jmp entra10 entra1 setri ent0i 1 ; ... o =1 entra10 ld 1 out ent1t ld 1 jnz entra11 setri ent1i 0 jmp entra20 entra11 setri ent1i 1 entra20 ld 2 out ent2t ld 2 jnz entra21 setri ent2i 0 jmp entraf entra21 setri ent2i 1 entraf ret ;------------------------------- ;mensa. arma el mensaje mensa CLEAR ;Borra el buffer intermedio. disch 91 ;[ DISRI 44 0 ;Copia al buffer el contenido del reg. 400;(día) DISCH 47 ;Copia al buffer el carácter ASCII 47 (/). DISRI 45 0 ;Copia al buffer el contenido del reg. 402;(mes) DISCH 47 ;Copia al buffer el carácter ASCII 47 (/). DISRI 46 0 ;Copia al buffer el contenido del reg. 403;(año). disch 93 ;] DISCH 32 ;Copia al buffer el carácter ASCII 32;(espacio en blanco). disch 91 DISRI 42 0 ;Copia al buffer el contenido del reg. 452;(hora). DISCH 58 ;Copia al buffer el carácter ASCII 58 (:) DISRI 41 0 ;Copia al buffer el contenido del reg. 451;(minutos) disch 93 DISCH 32 ;Copia al buffer el carácter ASCII 32;(espacio en blanco). disch 91 ;fase R disch 82 disch 61 disri ent0i 0 disch 58 disri ent0of 5 disch 93 DISCH 32 ;Copia al buffer el carácter ASCII 32;(espacio en blanco). disch 91 ;fase S disch 83 disch 61 disri ent1i 0 disch 58 disri ent1of 5 disch 93 DISCH 32 ;Copia al buffer el carácter ASCII 32;(espacio en blanco). disch 91 ;fase T disch 84 disch 61 disri ent2i 0 disch 58 disri ent2of 5 disch 93 DISCH 32 ;Copia al buffer el carácter ASCII 32;(espacio en blanco). com 1 ensaf ret ;tempo temporizador generico para tiempos cortos=============== ;parametros: temgeni=registro valor de tiempo tempo setri 157 4 reset auxgen1 reset auxgen2 tempo1 ld auxgen1 timr timgen temgeni out auxgen2 set auxgen1 ld auxgen2 jz tempo1 tempof ret ;----------------------------------------------- ;------------------------------------------------ ;------------------------------------------------- &leavar ; inicio reg. para subrutina gsm----------------- ;[REG_RELAYS] llamar equ 60 cuelga equ 62 enviar equ 61 borrar equ 63 r_sms equ 132 t_mod equ 134 scan equ 99 ;[REG_INTEGERS] cmod equ 23 n_sms equ 24 reg_int equ 250 ;[TIM] ;[CNT] ;[NOP] llamard lite "LLAMADA" enviar_m lite "envia SMS" numero lite "3103150030" numero_m lite "3102036819" mensaje lite "ALARMA 1" borrando lite "borrar SMS" colgar lite "Colgar" lineas lite "descolgar" ;numero lite "3102036819" ;numero_m lite "+5713103150030" ;VARIABLES PARA INICIAR setri 20 55 ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OJO ; clear ; disl numero_m ; at 6 ; fin reg. subrutina gsm----------------------- ; inicio variables para coden1------------------ ;[REG_RELAYS] ent0t equ 250 ;temporal que se usa para guardar el estado anterior de la fase ent0tc equ 251 ;y poder ejecutar el xor nuevamente ent1t equ 252 ent1tc equ 253 ;donde se deja el resultado de las xor temporalmente ent2t equ 254 ent2tc equ 255 escr equ 256 ;aux para que escriba en la base auxgen1 equ 260 ;aux de tempo auxgen2 equ 261 ;[REG_INTEGERS] horario equ 40 ;base de tiempo de toma de datos horariot equ 260 ent0of equ 261 ;registros donde se guarda tiempos de fases apagadas ent1of equ 262 ent2of equ 263 ent0i equ 264 ;estado de la fase en i para guardar en bd ent1i equ 265 ent2i equ 266 temgeni equ 265 ;tiempo de call tempo ;[TIM] timgen equ 200 ;de call tempo ;[CNT] ;[NOP] r lite "R" s lite "S" t lite "T" file 0,400r,500d,520t,len=200,type=l ;fin variable para coden1----------------------------- &leavarf ret ;-----------------------------------------------