智能实用可编程光控器源程序
SCK BIT P1.5 ;时钟控制
SI BIT P1.4 ;数据输入
SO BIT P1.6 ;数据输出
CS BIT P1.7 ;片选
RcvD DATA 6FH ;接收数据缓冲器
XmtD DATA 6EH ;发送数据缓冲器
ORG 0000H
AJMP INIT_0
ORG 000BH
AJMP T0ZD
ORG 001BH
AJMP T1ZD
ORG 0050H
INIT_0: CLR 59H
MOV 55H,#35
MOV 56H,#35
MOV P1,#0C3H
MOV P3,#0FFH
MOV TCON,#10H
MOV TMOD,#11H
MOV TL0,#0AFH
MOV TH0,#3CH
MOV IE,#8AH
ACALL WD_SET ;看门狗定时时间设置
LOOP0: LCALL WD_RST ;喂狗
MOV 50H,#85H
LOOP1: MOV 51H,#35H
LOOP2: DJNZ 51H, LOOP2
DJNZ 50H, LOOP1
JNB 59H, LOOP0 ;光控开灯标志
;若光控启动,则进入延时处理
MOV A,P3 ;读取数字拨盘开关编程设定值
CPL A
ANL A,#0FH ;处理读取数字拨盘开关的设定值
JZ LOOP0 ;编程设定值是否为"0",若不为"0"
;则作关灯延时处理
CJNE A,48H, LOOP0 ;取时钟计时,与编程设定值比较是否相等
CLR P1.3 ;若相等,清"0"P1.3,关掉相应的路灯
AJMP LOOP0
T0ZD: PUSH Acc ;时钟程序
MOV TL0,#0AFH
MOV TH0,#3CH
INC 45H
MOV A,45H
CJNE A,#0AH, FW0
INC 46H ;秒计数
MOV 45H,#00H
JNB P3.6, SZ1 ;单片机内部比较器输出的判断
MOV 56H,#35 ;抗干扰延时设置处理
DJNZ 55H, SZ2
CLR 59H ;关灯处理
CLR P1.2
CLR P1.3
AJMP SZ2
SZ1: MOV 55H,#35 ;抗干扰延时设置处理
DJNZ 56H, SZ2
JB 59H, SZ2
SETB 59H ;开灯处理
SETB P1.2
SETB P1.3
MOV 45H,#00H
MOV 46H,#00H
MOV 47H,#00H
MOV 48H,#00H
SZ2: MOV A,46H
CJNE A,#3CH, FW0
INC 47H ;分计数
MOV 46H,#00H
MOV A,47H
CJNE A,#3CH, FW0
INC 48H ;时计数
MOV 47H,#00H
MOV A,48H
CJNE A,#02H FW0
FW0: POP ACC
RETI
RDX5045: NOP ;看门狗程序
WD_RST: CLR CS
SETB CS
RET
WD_SET: MOV R4,#10H
LCALL WR_SR