1、ISDINT_INT1 MOSI BIT P0.4SS BIT P0.5SCLK BIT P0.6HD7279:DAT BIT P2.4CS BIT P3.5CLK BIT P3.624C02:SCL BIT P1.6SDA BIT P1.7继电器(摘机电路):JDQK BIT P1.4 ;低电平有效继电器1(控制高压)JDQ0_DFB BIT P0.0 ;电饭煲JDQ1_DNF BIT P0.1 ;电暖风JDQ2_KT BIT P0.2 ;空调JDQ3_RSH BIT P0.3 ;电热水器延时指示灯:(低电平有效)LED0 BIT P2.0LED1 BIT P2.1LED2 BIT P2.2
2、LED3 BIT P2.3振铃检测ZHENLJC BIT P1.5HUIFU BIT P0.7 ;恢复出厂设置按键,默认密码123456,默认开关状态为: ;0=恢复出厂设置 1=不恢复使用时按住此按键按复位键即可 变量定义工作状态寄存(00-07)GZZHT EQU 20HYSH0_KG BIT 00H ;延时状态, 1=开启 0=关闭YSH1_KG BIT 01HYSH2_KG BIT 02HYSH3_KG BIT 03HMIMA BIT 04H ;GZZHT.1 密码状态,是否已经输入错误一次 1=是 0=否STD BIT 05H ;有新数据输入 1=有 0=无XINMIMA BIT 0
3、6H ;新密码校验位,校验两次输入密码是否一致 1=不一致 0=一致ZHL6C BIT 07H ;振铃次数已够,可以摘机 1=可以 0=不可以工作状态寄存2(08-0F)GZZHT2 EQU 21H ;位寻址寄存 21H;NOINPUT BIT 08H ;10秒没有新数据输入,自动挂机。 1=可以挂机 0=不可以IS15S BIT 09H ;DEC_ON BIT 0AH ;是否显示小数点:1=显示 0=不显示ISDINT BIT 0BH ;4002中断置位标志OUT_PLAY BIT 0CH ;从播放进程中终止标志 1=跳过后面的语音提示JDQ0_YSH BIT 0AH ; 继电器延时状态 1
4、=开 0=关JDQ1_YSH BIT 0BHJDQ2_YSH BIT 0CHJDQ3_YSH BIT 0DHYANSHI BIT 05H ;GZZHT.2 延时 1=开启 0=关闭YANSHIKG BIT 06H ;GZZHT.3 延时状态 1=延时开 0=延时关YSH_OK BIT 0BH ;延时数据已准备好,可以写入 1=可以 0=不可以M1 EQU 22H ;密码寄存(1-6)M2 EQU 23HM3 EQU 24HM4 EQU 25HM5 EQU 26HM6 EQU 27HDINGSHI EQU 28H ;定时时间临时存储DATA_IN EQU 29H ;HD7279输入输出缓存DAT
5、A_OUT EQU 2AHPLAY_ADD EQU 2BHBAK_A_T1 EQU 2CHYSH0_TM EQU 30H ;延时时间寄存YSH1_TM EQU 31HYSH2_TM EQU 32HYSH3_TM EQU 33HOUT_BW EQU 34H ;延时数据输出临时存储(用于显示)OUT_SHW EQU 35HOUT_GW EQU 36HMIMAJSH EQU 37H ;【密码计数】对输入的密码个数进行计数 ZHENLING EQU 31H ;【振铃计数】对振铃次数进行计数TIMEMOOD EQU 29H;定时器模式:03=关,80=4096Hz,81=64Hz,82=1Hz,83=1
6、/60HzMTEMP EQU 38H ;记录密码输入错误次数TEMP EQU 39H第一次输入新密码临时存储(3AH3FH)MT1 EQU 3FHT0_TMP EQU 40H ;T0临时存储,每隔0.0005秒加1T0_TMP_S EQU 41H ;T0临时存储,每隔0.1S减1T0_TMP_M EQU 42H ;T0临时存储,每隔0.5S减1BAK_A EQU 43H ;中断期间A的备份BAK_R1 EQU 44H;BAK_RS1 EQU 45HBAK_RS0 EQU 46HBAK_A_SOUND EQU 47HBAK_DPH EQU 48HBAK_DPL EQU 49H延时数据临时存储YS
7、H_BW EQU 4AHYSH_SHW EQU 4BHYSH_GW EQU 4CHADDRESSL EQU 4DH ;ISD4002放音地址 低位PANDAH EQU 4EH ;ISD4002放音地址 高位TEMP2 EQU 4FH ;密码临时存储TEMP3 EQU 50H ;T1中断检测临时存储TIME EQU 51H ;倒计时定时时间临时存储,长度1字节DISP_CHT EQU 52H ;更换显示继电器倒计时时间计数DISP_CH EQU 53H ;显示开关指示(1-4)YSH0_KG_1 EQU 54H ;YSH1_KG_1 EQU 55HYSH2_KG_1 EQU 56HYSH3_KG
8、_1 EQU 57HSOUND_OUT_BW EQU 58H ;延时数据输出临时存储(用于剩余时间提示)SOUND_OUT_SHW EQU 59HSOUND_OUT_GW EQU 5AHZHL_CSH EQU 5BH ; 主程序* ORG 0000H LJMP MAIN ORG 0003H LJMP STD_IN ORG 00BH LJMP T0STOP ORG 0013H LJMP INT1_STOP ORG 001BH LJMP T1STOP ORG 0030H全局初始化MAIN: MOV SP,#60H ;堆栈 MOV IE,#00H ;禁止所有中断 LCALL LOAD ;载入状态 M
9、OV MIMAJSH,#00H MOV DINGSHI,#00H MOV GZZHT,#00H MOV GZZHT2,#00H MOV T0_TMP,#200 ; MOV T0_TMP_S,#5 ;T0临时存储,每隔0.1S加1 MOV T0_TMP_M,#120;T0临时存储,每隔1S加1 MOV DISP_CHT,#4 ; MOV DISP_CH,#1 ; MOV TMOD,#02H ;定时器0,方式2(8位自装载) MOV TH0,#06H MOV TL0,#06H ; MOV IP,#00000100B;设置外部中断1为高优先级中断 SETB IT1 ;脉冲触发方式 SETB ET0
10、;允许T0中断 SETB EA ;允许中断 SETB TR0 ;启动T0定时器 SETB IT0 ; ; SETB EX0 CLR OUT_PLAY 使用寄存器组00 CLR RS1 CLR RS0 LCALL DELAY_30ms JNB HUIFU,HUIFU1 ;是否恢复出厂设置MAINLOOP: JB HUIFU,LP1 LCALL DELAY_30MS JNB HUIFU,LP2LP1: CLR ZHL6C ;清振铃6次标志位 LCALL ZHENLING1 ;检测振铃 JNB ZHL6C,MAINLOOP ;振铃到6次,可以摘机LP2: LCALL ZHAIJI ;振铃达到6次,摘
11、机 SJMP MAINLOOP-恢复出厂设置HUIFU1: JNB HUIFU,$ MOV M6,#01H MOV M5,#02H MOV M4,#03H MOV M3,#04H MOV M2,#05H MOV M1,#06H LCALL SAVE LJMP MAINLOOP* 摘机子程序ZHAIJI: LCALL POWEROFF ;屏蔽ISD4002,以免影响DTMF信号识别 CLR JDQK ;继电器摘机 LCALL DELAY_BS CLR MIMA CLR EX0 ;不允许语音提示中途退出 MOV A,#13 LCALL SOUND ;语音提示:欢迎您使用智能家居远程控制系统,请输入
12、密码 SETB EX0ZHJ_MM: LCALL STDJC ;检测输入数据,结果由A带回 JB NOINPUT,EXIT_1ZHJ_MM_JC1: MOV MIMAJSH,#00H INC MIMAJSH CJNE A,M6,ZHJ_MMC ;校验密码第一位是否正确 JB JDQK,EXIT LCALL STDJC CJNE A,M5,ZHJ_MMC ;校验密码第二位是否正确 CJNE A,M4,ZHJ_MMC ;校验密码第三位是否正确 JB JDQK,EXITT3 CJNE A,M3,ZHJ_MMC ;校验密码第四位是否正确 JB JDQK,EXIT INC MIMAJSH CJNE A,
13、M2,ZHJ_MMC ;校验密码第五位是否正确 CJNE A,M1,ZHJ_MMC ;校验密码第六位是否正确 LJMP ZHJ_2- 密码错ZHJ_MMC:按键检测 MOV A,MIMAJSH;密码输入次数存A CLR C SUBB A,#6 ;是否已输入6位 JC ZHJ_MMC;未输入六位,继续检测按键 JB MIMA,ZHJ_MMC1 MOV A,#33 ;输入错误,请重新输入 LCALL SOUND SETB MIMA LJMP ZHJ_MMZHJ_MMC1: LJMP EXIT$EXIT_1: LJMP EXIT$ ;密码正确ZHJ_2: SETB EX0 ;允许语音提示中途退出 M
14、OV A,#14 ;开关状态查询与修改请按1,修改密码请按2 JB OUT_PLAY,ZHJ_JC1 MOV A,#15 ;挂机请按*号键 JB OUT_PLAY,ZHJ_JC1 ;语音播放中有按键输入,直接跳转到按键识别部分检测按键ZHJ_JC1: CJNE A,#01H,ZHJ_GMM_1 ;若按键为:1% 状态查询 ;%ZHJ_ZHT: LCALL DELAY_30MS MOV A,#23 ;请根据语音提示选择设备 JB OUT_PLAY,ZHJ_DFB_N ; MOV A,#1 ; JB OUT_PLAY,ZHJ_DFB_N MOV A,#16 ; MOV A,#2 ;2 JB OUT
15、_PLAY,ZHJ_DFB_N MOV A,#17 ; MOV A,#3 ;3 MOV A,#18 ; MOV A,#4 ;4 MOV A,#19 ; AJMP ZHJ_DFB_NZHJ_GMM_1: LJMP ZHJ_GMMZHJ_DNF_1: LJMP ZHJ_DNFZHJ_DNF_N_1: LJMP ZHJ_DNF_N$% % 电饭煲 状态查询 %ZHJ_DFB_N: CJNE A,#01H,ZHJ_DNF_N_1 ;ZHJ_DFB: CLR EX0 ;禁止语音提示中途退出 MOV A,#36 ;的状态为 JNB YSH0_KG,ZHJ_DFB2 ;无延时则跳转 JNB JDQ0_DFB
16、,ZHJ_DFB1 ;延时关则跳转 MOV A,#26 ;延时开 MOV A,#0 ;继电器0剩余时间提示 LCALL SOUND_YSH ;延时剩余时间提示子程序 AJMP ZHJ_DFBXGZHJ_DFB1: MOV A,#27 ;延时关ZHJ_DFB2: JNB JDQ0_DFB,ZHJ_0_K MOV A,#20 ;关 AJMP ZHJ_DFBXG ZHJ_0_K: MOV A,#21 ;开% 电饭煲 状态修改 %ZHJ_DFBXG: MOV A,#24 ;开启 JB OUT_PLAY,ZHJ_DFB_SHB MOV A,#28 ;请按 LCALL SOUND MOV A,#25 ;关闭延时开 MOV A,#27 ; LCALL SOUND 语音提示:返回上级请按9,挂机请按 JB NOINPUT,EXIT_2-开启电饭煲ZHJ_DFB_SHB: CJNE A,#01H,ZHJ_DFBG ; CLR JDQ0_DFB SETB LED0 CLR YSH0_KGZHJ_DFBK4: MOV A,#16 ; JB OUT_PLAY,ZHJ_DFB_N_T2 MOV A,#30 ;已开启 LJMP ZHJ_ZHT$
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1