说明:报警子程序的调用要放到按键声的后面,只要检测到21H.3位为1,就执行这条子程序。累计主流程循环次数50次,大概时间为0.5s后,对P3.2进行求反3次,这样的效果就是让蜂鸣器响0.5S后不响0.5S,连续这样三次后关蜂鸣器,并把21H.3位清0,报警结束。 5.5进程码的判断及处理 源程序如下:
NB:JNB 21H.4,NB0 MOV 20H,#1FH CLR 21H.4
NB0:MOV A,65H CJNE A,#10H,NBN MOV A,64H CJNE A,#10H,NB00 NBN:RET
NB00:MOV A,64H CLR C SUBB A,#0AH JNC NBN MOV A,20H
CJNE A,#01H,NB01 MOV 20H,#10H RET
NB01:CJNE A,#15H,NB02 MOV 20H,#15H RET
NB02:CJNE A,#25H,NB03 MOV 20H,#20H RET
NB03:CJNE A,#35H,NB04 MOV 20H,#35H
;判断管理员密码正确标志位21H.4 ;为1进程码赋值1FH反之继续 ;判断是否有按键按下 ;判断是否按下数字键 ;按下数字键判断进程码的
;根据进程码的值对进程码单元进行相应操作 15
RET
NB04:CJNE A,#45H,NB05 MOV 20H,#45H RET
NB05:CJNE A,#55H,NB06 MOV 20H,#55H RET NB06:INC 20H RET
说明:在处理其他进程码之前要先判断管理员密码正确标志位,若为1改进程码为1FH即要修改时钟的准备状态,否则开始判断其他。在判断到有数字键按下后检测当前进程码,若为01H,则改为10H,若为15H、35H、45H、55H进程码不变,若为25H则改为20H,否则进程码自加1。10H-15H为输房号或密码进程,20H-25H为修改时钟进程,30H-35H为修改用户密码进程,40H-45H为修改管理密码输入第一次进程,50H-55H为修改管理员密码第二次输入进程。 5.6对输入进程的处理 源程序如下:
PROCESS:MOV A,20H ;判断进程对相应的房号密码输入及密码修改进行操作 CJNE A,#2FH,PR0 ;若进程为2FH、3FH、4FH,数码管全暗 PR00:MOV 3EH,#00H RET
PR0:CJNE A,#3FH,PR01 SJMP PR00 PR01:CJNE A,#4FH,PR1 SJMP PR00
PR1:CJNE A,#10H,PR10 ;进程为10H、30H、40H、50H显示一位数字 PR1Y:MOV 30H,16H MOV 3EH,#01H RET
PR10:CJNE A,#30H,PR11
16
SJMP PR1Y PR11:CJNE A,#40H,PR12 SJMP PR1Y PR12:CJNE A,#50H,PR2 SJMP PR1Y
PR2:CJNE A,#11H,PR20 ; 进程为11H、31H、41H、51H显示两位数字 PR2Y:MOV 30H,16H MOV 31H,17H MOV 3EH,#02H RET
PR20:CJNE A,#31H,PR21 SJMP PR2Y PR21:CJNE A,#41H,PR22 SJMP PR2Y PR22:CJNE A,#51H,PR3 SJMP PR2Y
PR3:CJNE A,#12H,PR30 PR3Y:MOV 30H,16H MOV 31H,17H MOV 32H,18H MOV 3EH,#04H RET
PR30:CJNE A,#32H,PR31 SJMP PR3Y PR31:CJNE A,#42H,PR32 SJMP PR3Y PR32:CJNE A,#52H,PR4 SJMP PR3Y
PR4:CJNE A,#13H,PR40 PR4Y:MOV 30H,#10H
; 进程为12H、32H、42H、52H显示三位数字; 进程为13H、33H、43H、53H显示四个“-” 17
MOV 31H,#10H MOV 32H,#10H MOV 33H,#10H MOV 3EH,#08H RET
PR40:CJNE A,#33H,PR41 SJMP PR4Y PR41:CJNE A,#43H,PR42 SJMP PR4Y PR42:CJNE A,#53H,PR5 SJMP PR4Y
PR5:CJNE A,#14H,PR50 ;进程为14H、34H、44H、54H显示五个“-” PR5Y:MOV 30H,#10H MOV 31H,#10H MOV 32H,#10H MOV 33H,#10H MOV 34H,#10H MOV 3EH,#10H RET
PR50:CJNE A,#34H,PR51 SJMP PR5Y PR51:CJNE A,#44H,PR52 SJMP PR5Y PR52:CJNE A,#54H,PR6 SJMP PR5Y
PR6:CJNE A,#15H,PR60 ;进程为15H、35H、45H、55H显示六个“-” PR6Y:MOV 30H,#10H MOV 31H,#10H MOV 32H,#10H MOV 33H,#10H
18
MOV 34H,#10H MOV 35H,#10H MOV 3EH,#20H PRN:RET
PR60:CJNE A,#35H,PR61 SJMP PR6Y PR61:CJNE A,#45H,PR62 SJMP PR6Y PR62:CJNE A,#55H,PRN SJMP PR6Y
说明:若进程为2FH、3FH、4FH,数码管全暗,这3个进程是对要修改用户密码和管理员密码的三次输入的输入前对数码管进行全暗处理,为输入做准备。10H-15H、30H-35H、40H-45H、50H-55H进程是从对输入几个数字进行相应的显示处理,因为其原理相同所以放到一起进行处理。 5.7房号正确后的亮灯处理 源程序如下:
FH:MOV A,22H ;对用户对讲标志位进行判断,点亮相应LED灯 CJNE A,#00H,FHK ;判断101-601的标志位 SJMP FH2
FHK:CPL A ;点亮相应LED灯 MOV P1,A DJNZ 24H,FH2 MOV P1,#0FFH MOV 24H,#100 MOV 22H,#00H FHN:RET
FH2:MOV A,23H ;判断102-602的标志位及开门信号标志位 CJNE A,#00H,FH2K RET
19