当前位置:首页 > IT计算机/网络 > 其它相关文档 > 智能家居远程控制系统源程序138
智能家居远程控制系统刘庆宇1;*****************************************************;Filename:BSHB_1_0_2.ASM;MCU:AT89S52OSC:6.0000MHz;IC:MT8870ISD4002LM38674LS04ULN280324C02;Display:LED*4;Buildby:LiuQingYu;Vision:V1.0.2;Date:2008-06-13;********************************************************;功能:利用电话线路,远程控制4组继电器的通断,控制电饭煲、电;暖风等家用电器。可以设定延时通断。恢复出厂设置时按住设;置按键按复位键即可恢复默认密码123456;默认开关状态为:关,延时为:无;;如需改变等待振铃次数,请搜索“振铃检测程序”并进行修改。;;;寄存器组使用:;00:主程序;01:显示子程序;******************************************;输入输出引脚定义;******************************************;MT8870:数据P0.0~P0.3MT_INEQUP1;STD____INT0;ISD4002:;ISDINT____INT1MOSIBITP0.4SSBITP0.5SCLKBITP0.6;HD7279:DATBITP2.4CSBITP3.5CLKBITP3.6;24C02:SCLBITP1.6SDABITP1.7;继电器(摘机电路):JDQKBITP1.4;低电平有效;继电器1(控制高压)JDQ0_DFBBITP0.0;电饭煲JDQ1_DNFBITP0.1;电暖风JDQ2_KTBITP0.2;空调JDQ3_RSHBITP0.3;电热水器;延时指示灯:(低电平有效)LED0BITP2.0LED1BITP2.1LED2BITP2.2LED3BITP2.32;振铃检测ZHENLJCBITP1.5HUIFUBITP0.7;恢复出厂设置按键,默认密码123456,默认开关状态为:关,延时为:无;0=恢复出厂设置1=不恢复;使用时按住此按键按复位键即可;******************************************;变量定义;******************************************;工作状态寄存(00-07)GZZHTEQU20HYSH0_KGBIT00H;延时状态,1=开启0=关闭YSH1_KGBIT01HYSH2_KGBIT02HYSH3_KGBIT03HMIMABIT04H;GZZHT.1密码状态,是否已经输入错误一次1=是0=否STDBIT05H;有新数据输入1=有0=无XINMIMABIT06H;新密码校验位,校验两次输入密码是否一致1=不一致0=一致ZHL6CBIT07H;振铃次数已够,可以摘机1=可以0=不可以;工作状态寄存2(08-0F)GZZHT2EQU21H;位寻址寄存21H;NOINPUTBIT08H;10秒没有新数据输入,自动挂机。1=可以挂机0=不可以IS15SBIT09H;DEC_ONBIT0AH;是否显示小数点:1=显示0=不显示ISDINTBIT0BH;4002中断置位标志OUT_PLAYBIT0CH;从播放进程中终止标志1=跳过后面的语音提示;JDQ0_YSHBIT0AH;继电器延时状态1=开0=关;JDQ1_YSHBIT0BH;JDQ2_YSHBIT0CH;JDQ3_YSHBIT0DH;YANSHIBIT05H;GZZHT.2延时1=开启0=关闭;YANSHIKGBIT06H;GZZHT.3延时状态1=延时开0=延时关;YSH_OKBIT0BH;延时数据已准备好,可以写入1=可以0=不可以M1EQU22H;密码寄存(1---6)M2EQU23HM3EQU24H3M4EQU25HM5EQU26HM6EQU27HDINGSHIEQU28H;定时时间临时存储DATA_INEQU29H;HD7279输入输出缓存DATA_OUTEQU2AHPLAY_ADDEQU2BHBAK_A_T1EQU2CHYSH0_TMEQU30H;延时时间寄存YSH1_TMEQU31HYSH2_TMEQU32HYSH3_TMEQU33HOUT_BWEQU34H;延时数据输出临时存储(用于显示)OUT_SHWEQU35HOUT_GWEQU36HMIMAJSHEQU37H;【密码计数】对输入的密码个数进行计数;ZHENLINGEQU31H;【振铃计数】对振铃次数进行计数;TIMEMOODEQU29H;定时器模式:03=关,80=4096Hz,81=64Hz,82=1Hz,83=1/60HzMTEMPEQU38H;记录密码输入错误次数TEMPEQU39H;第一次输入新密码临时存储(3AH~3FH)MT1EQU3FHT0_TMPEQU40H;T0临时存储,每隔0.0005秒加1T0_TMP_SEQU41H;T0临时存储,每隔0.1S减1T0_TMP_MEQU42H;T0临时存储,每隔0.5S减1BAK_AEQU43H;中断期间A的备份BAK_R1EQU44H;BAK_RS1EQU45HBAK_RS0EQU46HBAK_A_SOUNDEQU47HBAK_DPHEQU48HBAK_DPLEQU49H;延时数据临时存储YSH_BWEQU4AHYSH_SHWEQU4BHYSH_GWEQU4CHADDRESSLEQU4DH;ISD4002放音地址低位PANDAHEQU4EH;ISD4002放音地址高位4TEMP2EQU4FH;密码临时存储TEMP3EQU50H;T1中断检测临时存储TIMEEQU51H;倒计时定时时间临时存储,长度1字节DISP_CHTEQU52H;更换显示继电器倒计时时间计数DISP_CHEQU53H;显示开关指示(1-4)YSH0_KG_1EQU54H;延时状态,1=开启0=关闭YSH1_KG_1EQU55HYSH2_KG_1EQU56HYSH3_KG_1EQU57HSOUND_OUT_BWEQU58H;延时数据输出临时存储(用于剩余时间提示)SOUND_OUT_SHWEQU59HSOUND_OUT_GWEQU5AHZHL_CSHEQU5BH;;******************************************;主程序;******************************************ORG0000HLJMPMAINORG0003HLJMPSTD_INORG00BHLJMPT0STOPORG0013HLJMPINT1_STOPORG001BHLJMPT1STOPORG0030H;全局初始化MAIN:MOVSP,#60H;堆栈MOVIE,#00H;禁止所有中断LCALLLOAD;载入状态MOVMIMAJSH,#00HMOVDINGSHI,#00HMOVGZZHT,#00HMOVGZZHT2,#00HMOVT0_TMP,#200;T0临时存储,每隔0.0005秒加1MOVT0_TMP_S,#5;T0临时存储,每隔0.1S加1MOVT0_TMP_M,#120;T0临时存储,每隔1S加1MOVDISP_CHT,#4;更换显示继电器倒计时时间计数MOVDISP_CH,#1;显示开关指示(1-4)MOVTMOD,#02H;定时器0,方式2(8位自装载)5MOVTH0,#06HMOVTL0,#06H;MOVIP,#00000100B;设置外部中断1为高优先级中断SETBIT1;脉冲触发方式SETBET0;允许T0中断SETBEA;允许中断SETBTR0;启动T0定时器SETBIT0;脉冲触发方式;SETBEX0CLROUT_PLAY;使用寄存器组00CLRRS1CLRRS0LCALLDELAY_30msJNBHUIFU,HUIFU1;是否恢复出厂设置MAINLOOP:JBHUIFU,LP1LCALLDELAY_30MSJNBHUIFU,LP2LP1:CLRZHL6C;清振铃6次标志位LCALLZHENLING1;检测振铃JNBZHL6C,MAINLOOP;振铃到6次,可以摘机LP2:LCALLZHAIJI;振铃达到6次,摘机SJMPMAINLOOP;---------------------------------------------------;恢复出厂设置HUIFU1:JNBHUIFU,$MOVM6,#01HMOVM5,#02HMOVM4,#03HMOVM3,#04HMOVM2,#05HMOVM1,#06HLCALLSAVELJMPMAINLOOP;**********************************************;摘机子程序;**********************************************ZHAIJI:;LCALLPOWEROFF;屏蔽ISD4002,以免影响DTMF信号识别CLRJDQK;继电器摘机LCALLDELAY_BSLCALLDELAY_BSCLRMIMACLREX0;不允许语音提示中途退出MOVA,#13LCALLSOUND;语音提示:欢迎您使用智能家居远程控制系统,请输入密码SETBEX0ZHJ_MM:6LCALLSTDJC;检测输入数据,结果由A带回JBNOINPUT,EXIT_1ZHJ_MM_JC1:MOVMIMAJSH,#00HINCMIMAJSHCJNEA,M6,ZHJ_MMC;校验密码第一位是否正确;JBJDQK,EXITLCALLSTDJCJBNOINPUT,EXIT_1INCMIMAJSHCJNEA,M5,ZHJ_MMC;校验密码第二位是否正确;JBJDQK,EXITLCALLSTDJCJBNOINPUT,EXIT_1INCMIMAJSHCJNEA,M4,ZHJ_MMC;校验密码第三位是否正确;JBJDQK,EXITT3LCALLSTDJCJBNOINPUT,EXIT_1INCMIMAJSHCJNEA,M3,ZHJ_MMC;校验密码第四位是否正确;JBJDQK,EXITLCALLSTDJCJBNOINPUT,EXIT_1INCMIMAJSHCJNEA,M2,ZHJ_MMC;校验密码第五位是否正确;JBJDQK,EXITLCALLSTDJCJBNOINPUT,EXIT_1INCMIMAJSHCJNEA,M1,ZHJ_MMC;校验密码第六位是否正确;JBJDQK,EXITLJMPZHJ_2;----------------------------------------------------------;密码错ZHJ_MMC:LCALLSTDJC;按键检测JBNOINPUT,EXIT_1INCMIMAJSHMOVA,MIMAJSH;密码输入次数存ACLRCSUBBA,#6;是否已输入6位JCZHJ_MMC;未输入六位,继续检测按键JBMIMA,ZHJ_MMC1LCALLDELAY_BSMOVA,#33;语音提示:输入错误,请重新输入LCALLSOUNDSETBMIMALJMPZHJ_MMZHJ_MMC1:7LJMPEXIT;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$EXIT_1:LJMPEXIT;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;密码正确ZHJ_2:SETBEX0;允许语音提示中途退出LCALLDELAY_BSMOVA,#14;语音提示:开关状态查询与修改请按1,修改密码请按2LCALLSOUNDJBOUT_PLAY,ZHJ_JC1MOVA,#15;语音提示:挂机请按*号键LCALLSOUNDJBOUT_PLAY,ZHJ_JC1;语音播放中有按键输入,直接跳转到按键识别部分LCALL
本文标题:智能家居远程控制系统源程序138
链接地址:https://www.777doc.com/doc-39927 .html