;二、 工作模式:
;1、間隙工作,即:每5秒電路工作一次,發(fā)16mS紅外線脈沖,同時(shí)對(duì)接收電路供電,
; 延時(shí)5mS等待接收電路工作穩(wěn)定,詢問(wèn)接收到反射信號(hào),如沒(méi)有,返回延時(shí)5秒繼續(xù)。
; 如有反射信號(hào)便改為1秒詢問(wèn)1次,連續(xù)5次收到反射信號(hào)便認(rèn)為是有人在,
; 反之,認(rèn)為是有人走過(guò),有人在時(shí),就開(kāi)始詢問(wèn)反射信號(hào)沒(méi)有了嗎?
; 連續(xù)2次沒(méi)有接收到反射信號(hào),便認(rèn)為此沒(méi)人在用,開(kāi)始沖水。
;2、感應(yīng)后立即沖水,直到檢測(cè)到人離去時(shí),停止沖水,如果感應(yīng)時(shí)間超過(guò)15秒,
; 啟動(dòng)長(zhǎng)流水模式,長(zhǎng)流水在啟動(dòng)3分鐘后自動(dòng)結(jié)束。
;3、 2秒鐘預(yù)沖水,即每隔15分鐘預(yù)沖水一次,15分鐘內(nèi)無(wú)人使用過(guò),不沖水,
; 使能在使用人多時(shí),不再每人使用前都預(yù)沖水,達(dá)到節(jié)水目地。
;4、感應(yīng)距離5~80CM可調(diào)
;5、 以上工作模式可通過(guò)電路板跳線手動(dòng)選擇。
;pb,0接收;pb,1發(fā)射;pb,2輸出
;
;
;
LIST P=12C508 ,F=INHX8M
INCLUDE "P16C5X.INC"
;***********************
PSW EQU 03H ;狀態(tài)寄存器
;PA EQU 05H ;PA口
PB EQU 06H ;PB口
FSR EQU 04H
RTCC EQU 01H ;定時(shí)計(jì)數(shù)器
TEMP EQU 09H
COUNT1 EQU 0AH
COUNT2 EQU 0BH
COUNT3 EQU 0CH
COUNT4 EQU 0DH
COUNT5 EQU 0EH
KEY_DEL EQU 0FH
DJ_DEL EQU 10H
R0 EQU 11H
R1 EQU 12H ;1S的發(fā)射間隔定時(shí)
R2 EQU 13H ;發(fā)射次數(shù)計(jì)數(shù)器
R3 EQU 14H
FLAG EQU 1FH
;**********
ORG 0
GOTO START ;開(kāi)始
;***********************
; ORG 000H
DISP CLRWDT
INCF COUNT1,1
MOVLW 0FH ;15X16.32MS
SUBWF COUNT1,0
BTFSS PSW,0
GOTO DISP_OUT
CLRF COUNT1
;****定時(shí)3S
MOVFW R1
SKPZ
DECF R1,1
;***
DISP_1
INCF COUNT2,1 ;1秒到
MOVLW 3CH ;3C
SUBWF COUNT2,0
BTFSS PSW,0
GOTO DISP_OUT
CLRF COUNT2
INCF COUNT3,1 ;1分到
MOVLW 3CH ;3C
SUBWF COUNT3,0
BTFSS PSW,0
GOTO DISP_OUT
CLRF COUNT3 ;60分鐘到
NOP
INCF COUNT4,1
NOP
DISP_OUT
RETLW 0
;****************************
START
CLRWDT
MOVLW 08H ;清F8-F1F的內(nèi)容為0
MOVWF 4 ;F8送F4=@R
QL CLRF 0
INCF 4,1
CLRWDT ;清WDT
MOVFW 4 ;
ANDLW 1FH
SKPZ
GOTO QL
CLRF 4
;*********************
MOVLW B'11101001' ;PB口為輸出口
TRIS PB
MOVLW B'11111001'
MOVWF PB
; MOVLW 0FFH
; TRIS PA ;定義PA口方向,為輸鍵盤口
; MOVLW 0
; MOVWF PA
;**************************
MAIN
CLRWDT
MOVLW 01H
MOVWF 1
MOVLW 0C5H
OPTION ;64分頻
DSK
CLRWDT
BTFSS 1,0
GOTO DSK
NOP
WAIT CLRWDT
BTFSC 1,0 ;
GOTO WAIT ;1/128秒檢查
MOVFW 1
SKPZ ;結(jié)果全0跳下
GOTO DZJC
GOTO HSZCL ;整分處理16.32MS
;******************
DZJC CLRWDT
CALL KEYREM
GOTO DSK
;*******************
HSZCL CLRWDT
CALL DISP
; CALL CL_OUT
GOTO MAIN
;********************
;*******************發(fā)射接收子程序
KEYREM
MOVFW R1 ;一秒定時(shí)是否到
SKPZ
GOTO KEYREM_OUT
KEYREM_1
MOVLW D'100'
MOVWF R1 ;定時(shí)5MS,可以借R1用
;***開(kāi)始發(fā)射40khz
KEYREM_2
BSF PB,1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
; NOP
; NOP
; NOP
NOP
NOP
NOP
NOP
BCF PB,1
NOP
; NOP
; NOP
; NOP
NOP
NOP
NOP
NOP
MOVFW R1
SKPNZ
GOTO KEYREM_3
DECF R1,1
GOTO KEYREM_2
KEYREM_3
MOVLW 1
MOVWF R1 ;重裝1S定時(shí)時(shí)間
BSF PB,1 ;繼續(xù)40KHZ的發(fā)射
;****發(fā)射標(biāo)志是否開(kāi)
BTFSS FLAG,2 ;是進(jìn)入還是離開(kāi)狀態(tài)
GOTO KCL_1 ;進(jìn)入測(cè)試有沒(méi)有進(jìn)入狀態(tài)
;***** 測(cè)試有沒(méi)有人離開(kāi)狀態(tài)
NOP
BTFSS PB,0
GOTO KEYREM_OUT ;有反射,繼續(xù)保持
NOP
INCF R2,1 ;發(fā)射次數(shù)記數(shù)
MOVLW 3
SUBWF R2,0
BTFSS PSW,0
GOTO KEYREM_OUT ;次數(shù)未到,還得繼續(xù)測(cè)
CLRF R2
BCF PB,2 ;是沒(méi)人,關(guān)輸出
BCF FLAG,2 ;置無(wú)人標(biāo)志
GOTO KEYREM_OUT
;***
KCL_1
NOP ;測(cè)試有沒(méi)有人進(jìn)入狀態(tài)
BTFSC PB,0
GOTO KEYREM_OUT ;無(wú)反射,繼續(xù)保持
NOP
INCF R2,1 ;發(fā)射次數(shù)記數(shù)
MOVLW 3
SUBWF R2,0
BTFSS PSW,0
GOTO KEYREM_OUT ;次數(shù)未到,還得繼續(xù)測(cè)
CLRF R2
BSF PB,2 ;是有人,開(kāi)輸出
BSF FLAG,2 ;置有人標(biāo)志
GOTO KEYREM_OUT
;**************
KEYREM_OUT
NOP
BCF PB,1
NOP
RETLW 0
;**********
END