智能實用可編程光控器源程序
SCK BIT P1.5 ;時鐘控制
SI BIT P1.4 ;數(shù)據(jù)輸入
SO BIT P1.6 ;數(shù)據(jù)輸出
CS BIT P1.7 ;片選
RcvD DATA 6FH ;接收數(shù)據(jù)緩沖器
XmtD DATA 6EH ;發(fā)送數(shù)據(jù)緩沖器
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 ;看門狗定時時間設(shè)置
LOOP0: LCALL WD_RST ;喂狗
MOV 50H,#85H
LOOP1: MOV 51H,#35H
LOOP2: DJNZ 51H, LOOP2
DJNZ 50H, LOOP1
JNB 59H, LOOP0 ;光控開燈標(biāo)志
;若光控啟動,則進入延時處理
MOV A,P3 ;讀取數(shù)字撥盤開關(guān)編程設(shè)定值
CPL A
ANL A,#0FH ;處理讀取數(shù)字撥盤開關(guān)的設(shè)定值
JZ LOOP0 ;編程設(shè)定值是否為"0",若不為"0"
;則作關(guān)燈延時處理
CJNE A,48H, LOOP0 ;取時鐘計時,與編程設(shè)定值比較是否相等
CLR P1.3 ;若相等,清"0"P1.3,關(guān)掉相應(yīng)的路燈
AJMP LOOP0
T0ZD: PUSH Acc ;時鐘程序
MOV TL0,#0AFH
MOV TH0,#3CH
INC 45H
MOV A,45H
CJNE A,#0AH, FW0
INC 46H ;秒計數(shù)
MOV 45H,#00H
JNB P3.6, SZ1 ;單片機內(nèi)部比較器輸出的判斷
MOV 56H,#35 ;抗干擾延時設(shè)置處理
DJNZ 55H, SZ2
CLR 59H ;關(guān)燈處理
CLR P1.2
CLR P1.3
AJMP SZ2
SZ1: MOV 55H,#35 ;抗干擾延時設(shè)置處理
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 ;分計數(shù)
MOV 46H,#00H
MOV A,47H
CJNE A,#3CH, FW0
INC 48H ;時計數(shù)
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
RET
RD_SR: MOV A,#05H
CLR CS
LCALL WR0
LCALL RD0
SETB CS
RET
WR0: MOV R4,#08H
WR1: RLC A
MOV SI,C
CLR SCK
SETB SCK
DJNZ R4, WR1
RET
RD0: MOV R4,#08H
RD1: SETB SCK
CLR SCK
MOV C,SO
RLC A
DJNZ R4, RD1
RET
WR_SR: LCALL RD_SR
CLR F0
JNB 0E0H, WR_SR1
SETB F0
RET
WR_SR1: CLR CS
MOV A,#06H
LCALL WR0
SETB CS
CLR CS
MOV A,#01H
LCALL WR0
MOV A,#10H ;;;;
LCALL WR0
CLR CS
SETB CS
RET
RD_B: LCALL RD_SR
JB 0E0H, RD_B
CLR CS
MOV A,#03H
LCALL WR0
MOV A,XmtD
LCALL WR0
LCALL RD0
MOV RcvD,A
SETB CS
RET
WR_B: LCALL RD_SR
JB 0E0H, WR_B
CLR CS
MOV A,#06H
LCALL WR0
SETB CS
CLR CS
MOV A,#02H
LCALL WR0
MOV A,XmtD
LCALL WR0
MOV A,RcvD
LCALL WR0
CLR CS
SETB CS
RET
END