原创 无线门铃报警器源程序

2010-10-9 23:30 1390 4 4 分类: MCU/ 嵌入式

   ;遥控信号采用数字判断,0100为撤防,0010为布防
   ;
   ;
   ;数据信号为:
   ;1 0011  ;
   ;2 1000  ;
   ;开 0010
   ;关 0100
   ;门铃 0000
  IN EQU P1.3  ;
  D0 EQU P1.4  ;
  D1 EQU P1.5  ;
  D2 EQU P1.6  ;
  D3 EQU P1.7  ;
  OUT EQU P3.5  ;
  CAL EQU P1.1  ;
  POL EQU P1.2  ;
  LIN EQU P3.7  ;
  
   ORG 0000H  ;
 START:
   MOV P1, #0FFH ;
   MOV P3, #0FFH ;
   MOV 20H, #0 ;
 AGARN:
   JNB IN, $ ;
   ACALL DEL5MS  ;
   JNB IN, AGARN ;
   MOV A, P1 ;读入无线信号值
   ANL A, #0F0H ;1111,0000
   CJNE A, #0H, LOOP1 ;0000,0000 B
   ACALL ML  ;
   AJMP AGARN  ;
 LOOP1:
   CJNE A, #20H, LOOP2 ;0010,0000
   ACALL BF  ;
   AJMP AGARN  ;
 LOOP2:
   CJNE A, #40H, LOOP3 ;0100 B
   ACALL CF  ;
   AJMP AGARN  ;
 LOOP3:
   CJNE A, #30H, LOOP4 ;1 0011,0000
   AJMP LOOP5
 LOOP4:
   CJNE A, #80H, LOOP6 ;2 1000
 LOOP5:  
   JNB 20H.1, LOOP6  ;
   ACALL BJ  ;
 LOOP6:
   AJMP AGARN  ;
 ;*************************************************************  
 BF:  
   CLR OUT  ;启动功放电路
   SETB 20H.1  ;打开布防标志
   
   MOV R2, #2
 BF0:
   MOV R3, #10
   CLR OUT   ;
 BF1:
   MOV R4, #20
 BF2:
   ACALL DEL1MS   ;
   CPL LIN   ;
   DJNZ R4, BF2  ;
   MOV R4, #80
 BF3:
   ACALL DEL200US  ;
   CPL LIN   ;
   DJNZ R4, BF3  ;
   DJNZ R3, BF1  ;
   SETB OUT   ;
   ACALL DEL500MS  ;
   DJNZ R2, BF0  ;
   SETB OUT   ;
   SETB LIN   ;
   JB IN, $  ;
 BFEND:
   RET    ;
 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ;撤防程序
 CF:
   CLR OUT  ;
   CLR 20H.1  ;
   MOV R3, #15
 CF1:
   MOV R4, #20
 CF2:
   ACALL DEL1MS   ;
   CPL LIN   ;
   DJNZ R4, CF2  ;
   MOV R4, #80  ;
 CF3:
   ACALL DEL200US  ;
   CPL LIN   ;
   DJNZ R4, CF3  ;
   DJNZ R3, CF1  ;
   SETB OUT  ;
   SETB LIN  ;
   JB IN, $ ;
   RET   ;
 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 ML:
   MOV R1, #40 ;
   CLR OUT  ;启动门铃信号
   CLR CAL  ;
   JB IN, $ ;
 ML1:
   ACALL DEL250MS  ;
   DJNZ R1, ML1 ;
 MLEND:
   SETB OUT  ;关闭报警信号
   SETB CAL  ;
   RET   ;
 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   
 BJ:
   MOV R1, #60 ;
   
   CLR OUT  ;启动报警信号
   CLR POL  ;
   JB IN, $ ;
 BJ0:
   MOV R2, #100
 BJ1:
   ACALL DEL5MS  ;延时30秒
   JB IN, BJ2 ;
   DJNZ R2, BJ1 ;
   DJNZ R1, BJ0 ;
   AJMP BJEND  ;
 BJ2:
   MOV A, P1 ;
   ANL A, #0F0H ;
   CJNE A, #40H, BJ1 ;
 BJEND:
   SETB OUT  ;关闭报警信号
   SETB POL  ;
   JB IN, $ ;
   RET   ;
 
;*****************************
;延时子程序
;晶振6M
;*****************************
DEL200US:  
  MOV   R7,#50
  DJNZ  R7,$  ;2
         RET
         NOP
         NOP
         NOP
         AJMP   START
DEL1MS:  
  MOV   R7,#12
DEL1MS1: MOV   R6,#19
DEL1MS2: DJNZ  R6,DEL1MS2
         DJNZ  R7,DEL1MS1
         RET
         NOP
         NOP
         NOP
         AJMP  START          
;*****************************
;延时子程序
;*****************************
DEL5MS:  
  MOV   R7,#22
DEL5MS1: MOV   R6,#54
DEL5MS2: DJNZ  R6,DEL5MS2
         DJNZ  R7,DEL5MS1
         RET
         NOP
         NOP
         NOP
         AJMP  START
;*****************************
;延时子程序
;*****************************       
DEL250MS:  
  MOV   R5,#50
DEL250MS1: ACALL DEL5MS
           DJNZ  R5,DEL250MS1
           RET
           NOP
           NOP
           NOP
           AJMP  START
;*****************************
;延时子程序
;*****************************
DEL500MS:  
  MOV   R4,#100
DEL500MS1: ACALL DEL5MS
           DJNZ  R4,DEL500MS1
           RET     ;
           NOP
           NOP
           NOP
           AJMP  START


   END

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条