<bdo id="o26oq"><center id="o26oq"></center></bdo>
  • <xmp id="o26oq"><noscript id="o26oq"></noscript>
  • <table id="o26oq"><center id="o26oq"></center></table><table id="o26oq"><center id="o26oq"></center></table>
    專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    防盜門控制程序

    作者:佚名   來源:本站原創   點擊數:  更新時間:2009年12月06日   【字體:

    一個防盜門的控制程序,采用無線遙控方式開門,步進馬達執行動作。
    ;2009.11.22修正,采用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

    關閉窗口

    相關文章

    性交浓厚在线观看
    <bdo id="o26oq"><center id="o26oq"></center></bdo>
  • <xmp id="o26oq"><noscript id="o26oq"></noscript>
  • <table id="o26oq"><center id="o26oq"></center></table><table id="o26oq"><center id="o26oq"></center></table>