智能家居远程控制系统源程序1Word文档格式.docx
《智能家居远程控制系统源程序1Word文档格式.docx》由会员分享,可在线阅读,更多相关《智能家居远程控制系统源程序1Word文档格式.docx(66页珍藏版)》请在冰豆网上搜索。
ISDINT____INT1
MOSIBITP0.4
SSBITP0.5
SCLKBITP0.6
HD7279:
DATBITP2.4
CSBITP3.5
CLKBITP3.6
24C02:
SCLBITP1.6
SDABITP1.7
继电器(摘机电路):
JDQKBITP1.4;
低电平有效
继电器1(控制高压)
JDQ0_DFBBITP0.0;
电饭煲
JDQ1_DNFBITP0.1;
电暖风
JDQ2_KTBITP0.2;
空调
JDQ3_RSHBITP0.3;
电热水器
延时指示灯:
(低电平有效)
LED0BITP2.0
LED1BITP2.1
LED2BITP2.2
LED3BITP2.3
振铃检测
ZHENLJCBITP1.5
HUIFUBITP0.7;
恢复出厂设置按键,默认密码123456,默认开关状态为:
;
0=恢复出厂设置1=不恢复
使用时按住此按键按复位键即可
变量定义
工作状态寄存(00-07)
GZZHTEQU20H
YSH0_KGBIT00H;
延时状态,1=开启0=关闭
YSH1_KGBIT01H
YSH2_KGBIT02H
YSH3_KGBIT03H
MIMABIT04H;
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)
M2EQU23H
M3EQU24H
M4EQU25H
M5EQU26H
M6EQU27H
DINGSHIEQU28H;
定时时间临时存储
DATA_INEQU29H;
HD7279输入输出缓存
DATA_OUTEQU2AH
PLAY_ADDEQU2BH
BAK_A_T1EQU2CH
YSH0_TMEQU30H;
延时时间寄存
YSH1_TMEQU31H
YSH2_TMEQU32H
YSH3_TMEQU33H
OUT_BWEQU34H;
延时数据输出临时存储(用于显示)
OUT_SHWEQU35H
OUT_GWEQU36H
MIMAJSHEQU37H;
【密码计数】对输入的密码个数进行计数
ZHENLINGEQU31H;
【振铃计数】对振铃次数进行计数
TIMEMOODEQU29H;
定时器模式:
03=关,80=4096Hz,81=64Hz,82=1Hz,83=1/60Hz
MTEMPEQU38H;
记录密码输入错误次数
TEMPEQU39H
第一次输入新密码临时存储(3AH~3FH)
MT1EQU3FH
T0_TMPEQU40H;
T0临时存储,每隔0.0005秒加1
T0_TMP_SEQU41H;
T0临时存储,每隔0.1S减1
T0_TMP_MEQU42H;
T0临时存储,每隔0.5S减1
BAK_AEQU43H;
中断期间A的备份
BAK_R1EQU44H;
BAK_RS1EQU45H
BAK_RS0EQU46H
BAK_A_SOUNDEQU47H
BAK_DPHEQU48H
BAK_DPLEQU49H
延时数据临时存储
YSH_BWEQU4AH
YSH_SHWEQU4BH
YSH_GWEQU4CH
ADDRESSLEQU4DH;
ISD4002放音地址低位
PANDAHEQU4EH;
ISD4002放音地址高位
TEMP2EQU4FH;
密码临时存储
TEMP3EQU50H;
T1中断检测临时存储
TIMEEQU51H;
倒计时定时时间临时存储,长度1字节
DISP_CHTEQU52H;
更换显示继电器倒计时时间计数
DISP_CHEQU53H;
显示开关指示(1-4)
YSH0_KG_1EQU54H;
YSH1_KG_1EQU55H
YSH2_KG_1EQU56H
YSH3_KG_1EQU57H
SOUND_OUT_BWEQU58H;
延时数据输出临时存储(用于剩余时间提示)
SOUND_OUT_SHWEQU59H
SOUND_OUT_GWEQU5AH
ZHL_CSHEQU5BH;
主程序
******************************************
ORG0000H
LJMPMAIN
ORG0003H
LJMPSTD_IN
ORG00BH
LJMPT0STOP
ORG0013H
LJMPINT1_STOP
ORG001BH
LJMPT1STOP
ORG0030H
全局初始化
MAIN:
MOVSP,#60H;
堆栈
MOVIE,#00H;
禁止所有中断
LCALLLOAD;
载入状态
MOVMIMAJSH,#00H
MOVDINGSHI,#00H
MOVGZZHT,#00H
MOVGZZHT2,#00H
MOVT0_TMP,#200;
MOVT0_TMP_S,#5;
T0临时存储,每隔0.1S加1
MOVT0_TMP_M,#120;
T0临时存储,每隔1S加1
MOVDISP_CHT,#4;
MOVDISP_CH,#1;
MOVTMOD,#02H;
定时器0,方式2(8位自装载)
MOVTH0,#06H
MOVTL0,#06H;
MOVIP,#00000100B;
设置外部中断1为高优先级中断
SETBIT1;
脉冲触发方式
SETBET0;
允许T0中断
SETBEA;
允许中断
SETBTR0;
启动T0定时器
SETBIT0;
;
SETBEX0
CLROUT_PLAY
使用寄存器组00
CLRRS1
CLRRS0
LCALLDELAY_30ms
JNBHUIFU,HUIFU1;
是否恢复出厂设置
MAINLOOP:
JBHUIFU,LP1
LCALLDELAY_30MS
JNBHUIFU,LP2
LP1:
CLRZHL6C;
清振铃6次标志位
LCALLZHENLING1;
检测振铃
JNBZHL6C,MAINLOOP;
振铃到6次,可以摘机
LP2:
LCALLZHAIJI;
振铃达到6次,摘机
SJMPMAINLOOP
---------------------------------------------------
恢复出厂设置
HUIFU1:
JNBHUIFU,$
MOVM6,#01H
MOVM5,#02H
MOVM4,#03H
MOVM3,#04H
MOVM2,#05H
MOVM1,#06H
LCALLSAVE
LJMPMAINLOOP
**********************************************
摘机子程序
ZHAIJI:
LCALLPOWEROFF;
屏蔽ISD4002,以免影响DTMF信号识别
CLRJDQK;
继电器摘机
LCALLDELAY_BS
CLRMIMA
CLREX0;
不允许语音提示中途退出
MOVA,#13
LCALLSOUND;
语音提示:
欢迎您使用智能家居远程控制系统,请输入密码
SETBEX0
ZHJ_MM:
LCALLSTDJC;
检测输入数据,结果由A带回
JBNOINPUT,EXIT_1
ZHJ_MM_JC1:
MOVMIMAJSH,#00H
INCMIMAJSH
CJNEA,M6,ZHJ_MMC;
校验密码第一位是否正确
JBJDQK,EXIT
LCALLSTDJC
CJNEA,M5,ZHJ_MMC;
校验密码第二位是否正确
CJNEA,M4,ZHJ_MMC;
校验密码第三位是否正确
JBJDQK,EXITT3
CJNEA,M3,ZHJ_MMC;
校验密码第四位是否正确
JBJDQK,EXIT
INCMIMAJSH
CJNEA,M2,ZHJ_MMC;
校验密码第五位是否正确
CJNEA,M1,ZHJ_MMC;
校验密码第六位是否正确
LJMPZHJ_2
----------------------------------------------------------
密码错
ZHJ_MMC:
按键检测
MOVA,MIMAJSH;
密码输入次数存A
CLRC
SUBBA,#6;
是否已输入6位
JCZHJ_MMC;
未输入六位,继续检测按键
JBMIMA,ZHJ_MMC1
MOVA,#33;
输入错误,请重新输入
LCALLSOUND
SETBMIMA
LJMPZHJ_MM
ZHJ_MMC1:
LJMPEXIT
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
EXIT_1:
LJMPEXIT
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
密码正确
ZHJ_2:
SETBEX0;
允许语音提示中途退出
MOVA,#14;
开关状态查询与修改请按"
1"
修改密码请按"
2"
JBOUT_PLAY,ZHJ_JC1
MOVA,#15;
挂机请按"
*"
号键
JBOUT_PLAY,ZHJ_JC1;
语音播放中有按键输入,直接跳转到按键识别部分
检测按键
ZHJ_JC1:
CJNEA,#01H,ZHJ_GMM_1;
若按键为:
1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%状态查询;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ZHJ_ZHT:
LCALLDELAY_30MS
MOVA,#23;
请根据语音提示选择设备
JBOUT_PLAY,ZHJ_DFB_N;
MOVA,#1;
JBOUT_PLAY,ZHJ_DFB_N
MOVA,#16;
MOVA,#2;
2
JBOUT_PLAY,ZHJ_DFB_N
MOVA,#17;
MOVA,#3;
3
MOVA,#18;
MOVA,#4;
4
MOVA,#19;
AJMPZHJ_DFB_N
ZHJ_GMM_1:
LJMPZHJ_GMM
ZHJ_DNF_1:
LJMPZHJ_DNF
ZHJ_DNF_N_1:
LJMPZHJ_DNF_N
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%电饭煲状态查询%%%%%%%%%%%%%%%%%%%%%%%
ZHJ_DFB_N:
CJNEA,#01H,ZHJ_DNF_N_1;
ZHJ_DFB:
CLREX0;
禁止语音提示中途退出
MOVA,#36;
的状态为
JNBYSH0_KG,ZHJ_DFB2;
无延时则跳转
JNBJDQ0_DFB,ZHJ_DFB1;
延时关则跳转
MOVA,#26;
延时开
MOVA,#0;
继电器0剩余时间提示
LCALLSOUND_YSH;
延时剩余时间提示子程序
AJMPZHJ_DFBXG
ZHJ_DFB1:
MOVA,#27;
延时关
ZHJ_DFB2:
JNBJDQ0_DFB,ZHJ_0_K
MOVA,#20;
关
AJMPZHJ_DFBXG
ZHJ_0_K:
MOVA,#21;
开
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%电饭煲状态修改%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ZHJ_DFBXG:
MOVA,#24;
开启
JBOUT_PLAY,ZHJ_DFB_SHB
MOVA,#28;
请按
LCALLSOUND
MOVA,#25;
关闭
延时开
MOVA,#27;
LCALLSOUND
语音提示:
返回上级请按9,挂机请按"
JBNOINPUT,EXIT_2
--------------------------------------------------------------------------
开启电饭煲
ZHJ_DFB_SHB:
CJNEA,#01H,ZHJ_DFBG;
CLRJDQ0_DFB
SETBLED0
CLRYSH0_KG
ZHJ_DFBK4:
MOVA,#16;
JBOUT_PLAY,ZHJ_DFB_N_T2
MOVA,#30;
已开启
LJMPZHJ_ZHT
$$$$$$$$$$