分享一个防盗门的控制程序

描述

一个防盗门的控制程序,采用无线遥控方式开门,步进马达执行动作。


采用AT89C2051单片机控制,liweiqiang
;P3.3接峰鸣器
;P3.5接门状态开关信号输入,低电位表示门已关上,高电位表示门已打开
;P3.7摇控开门信号输入,低电位表示有开门信号。
org 0000h
ljmp start
org 000bh
ljmp int_0

start:
 mov sp,#60h
 mov tmod,#01h
 mov th0,#0b0h
 mov tl0,#0b8h
 mov r1,#00h
 mov r0,#00h
 setb  ea
 setb et0
 setb tr0
;============================================            
 main:;主循环开始
  jb p3.5,kss;P35=0,表示门已关门.向下执行
  jnb 20H.0,kss;20H.0=0表示已锁门.转手工开锁信号检测处
  lcall gs;关锁
  clr 20H.0;置20H.0=0,表示已锁一次门.
kss:;;手工开锁信号检测
  jnb p3.5,kst;如果门被手动从里面打开过就向下执行清锁门标志位。
  ajmp ddjm
kst:;摇控开锁信号检测
  jb p3.7,kmjs;有低电平开锁信号?是向下执行
  lcall delay;延时消抖动
  jnb p3.7,kmjs;确认开锁按键是否已放开。是向下执行
  lcall ks;开锁
  setb tr0;开锁后计时
kmjs:;开门计时
  cjne r0,#30,main;开门计时15秒后检测门的状态
  mov r0,#00h
  clr tr0
  
ddjm: 
  jb p3.5,$;等待门被关上
  setb 20h.0;门关上后清已锁门标志位,
  clr tr0;  停止计数  
  jmp main;反回主程式
;===========================================

int_0:
 push psw
 push aCC
 inc r1
 cjne r1,#14,ext
 inc r0
 mov r1,#00h
ext:
 mov th0,#0b0h
 mov tl0,#0b8h
 pop acc
 pop psw
 reti
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开锁子程序

ks:
mov r0,#3
loop1:
mov p1,#10101111b
acall delay
mov p1,#11001111b
acall delay
mov p1,#11010111b
acall delay
mov p1,#10110111b
acall delay
djnz r0,loop1
mov p1,#0ffh
lcall delay1
lcall bz
mov r1,#00h
setb tr0
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;关锁子程序
gs:
lcall delay1
lcall delay1
lcall delay1
lcall delay1
mov r0,#3
loop2:
mov p1,#10110111b
acall delay
mov p1,#11010111b
acall delay
mov p1,#11001111b
acall delay
mov p1,#10101111b
acall delay
djnz r0,loop2
mov p1,#0ffh
lcall delay1
lcall bz
lcall delay
lcall bz

ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bz:
clr p3.3
lcall delay1
setb p3.3
ret
delay:
mov r6,#30
d1:mov r7,#0
d2:djnz r7,d2
djnz r6,d1
ret


delay1:
mov r5,#200
dd1: mov r4,#100
dd2: mov r3,#10
dd3: djnz r3,dd3
    djnz r4,dd2
    djnz r5,dd1
    ret
end

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分