00101101B ;开中断,不允许外部中断和定时器中断MOV TMOD,00100000B ;定时器/计数器0工作方式2,定时器1工作方式MOV TH1,#0FEH ;定时器1初值MOV TL1,#0FEHMOV TH0,#0FEHMOV TL0,#0FEHMOV TCON,#80HMOV P3,#0FFH ;P3端口输出高电平MOV P1,#0FFH ;P1端口输出高电平AGAIN: MOV R6,P1 ;读P1端口的状态CJNE R6,#0FFH,TOOG ;P1的状态不为FFH,则转TOOGTOOG: MOV P3,#00H ;在P3对应位置输出低电平SJMP AGAIN ;跳回到AGAIN处 ;SS:等3秒 PINT0: MOV TMOD,#01000001B ;工作方式1,定时器0停用 DAA CJNE TH0,#0A0H,NOC ;TH0为0A0H,然后转NOCDEC TL0 ;TL0减1NOC: MOV TH0,#0FEHMOV TL0,#0FETR0: MOV TL0,#0FEMOV TH0,#0FEH ;再次装初值CPL P3.0 ;P3.0口互补,即取反MOV P0,#80HMOV DPL,#100MOV DPH,#000CLR TCON.4CLR TCON.5SETB TCON.4SETB TCON.5RETIINTERRUPT:CLKDIV:P6 EQU 6P7 EQU 7ORG 0H SJMP MAININT0: JNB P7.0,INT0JNB P6.7,INT0SJMP CLKDIVEND 2. 中断程序清单如下: ORG 0003H LJMP PINT0 ORG 002BH LJMP INTERRUPTEND
该报警器主要基于AT89S52单片机进行控制,通过红外线感应器实现对周围环境的监测,一旦监测到异常情况,比如有人或物体进入指定范围,则触发报警功能。具体的控制程序使用汇编语言编写,主要包括了主程序和中断程序两部分。
主程序部分首先设置了中断的相关配置,包括开启中断和定时器/计数器的工作方式设置。然后进行了一系列的端口和寄存器的初始化工作。接着进行了一个循环,不断检测P1端口的状态,如果检测到有变化,则改变P3端口的输出状态,以达到报警的目的。同时在PINT0中使用定时器0进行了计数和比较操作,以实现定时中断功能,当达到一定时间后触发报警。整个程序通过不断的循环和中断触发,实现了对红外线感应器的监测和报警功能。
中断程序部分主要用于设置外部中断,当有触发条件满足时,比如P6.7和P7.0的状态发生变化,则触发中断程序,执行相应的处理逻辑。通过中断程序的设置,实现了对外部条件变化的监测和响应。
整个基于AT89S52单片机控制的红外线防盗报警器主要通过对相关端口和定时器的设置和监测,实现了对周围环境状态的感应和报警功能。同时通过中断程序的设置,增强了系统的灵活性和实时性,使得系统能够更加准确地响应外部条件的变化。该设计方案在实际应用中具有一定的可行性和可靠性,可以满足一定范围内的安防需求。