專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

防盜門(mén)控制程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2009年12月06日   【字體:

一個(gè)防盜門(mén)的控制程序,采用無(wú)線遙控方式開(kāi)門(mén),步進(jìn)馬達(dá)執(zhí)行動(dòng)作。
;2009.11.22修正,采用AT89C2051單片機(jī)控制,liweiqiang
;P3.3接峰鳴器
;P3.5接門(mén)狀態(tài)開(kāi)關(guān)信號(hào)輸入,低電位表示門(mén)已關(guān)上,高電位表示門(mén)已打開(kāi)
;P3.7搖控開(kāi)門(mén)信號(hào)輸入,低電位表示有開(kāi)門(mén)信號(hào)。
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:;主循環(huán)開(kāi)始
  jb p3.5,kss;P35=0,表示門(mén)已關(guān)門(mén).向下執(zhí)行
  jnb 20H.0,kss;20H.0=0表示已鎖門(mén).轉(zhuǎn)手工開(kāi)鎖信號(hào)檢測(cè)處
  lcall gs;關(guān)鎖
  clr 20H.0;置20H.0=0,表示已鎖一次門(mén).
kss:;;手工開(kāi)鎖信號(hào)檢測(cè)
  jnb p3.5,kst;如果門(mén)被手動(dòng)從里面打開(kāi)過(guò)就向下執(zhí)行清鎖門(mén)標(biāo)志位。
  ajmp ddjm
kst:;搖控開(kāi)鎖信號(hào)檢測(cè)
  jb p3.7,kmjs;有低電平開(kāi)鎖信號(hào)?是向下執(zhí)行
  lcall delay;延時(shí)消抖動(dòng)
  jnb p3.7,kmjs;確認(rèn)開(kāi)鎖按鍵是否已放開(kāi)。是向下執(zhí)行
  lcall ks;開(kāi)鎖
  setb tr0;開(kāi)鎖後計(jì)時(shí)
kmjs:;開(kāi)門(mén)計(jì)時(shí)
  cjne r0,#30,main;開(kāi)門(mén)計(jì)時(shí)15秒後檢測(cè)門(mén)的狀態(tài)
   mov r0,#00h
   clr tr0
 
ddjm:
  jb p3.5,$;等待門(mén)被關(guān)上
  setb 20h.0;門(mén)關(guān)上后清已鎖門(mén)標(biāo)志位,
  clr tr0;  停止計(jì)數(shù) 
  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
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;開(kāi)鎖子程序

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;關(guān)鎖子程序
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

關(guān)閉窗口

相關(guān)文章