历史上的今天
今天是:2025年03月08日(星期六)
2018年03月08日 | 一个防盗门的控制程序
2018-03-08 来源:eefocus
一个防盗门的控制程序,采用无线遥控方式开门,步进马达执行动作。
;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
史海拾趣
|
dxp sp2 中为什么在禁止布线层画边框范围时总是自己跳层 protel dxp sp2 中为什么在禁止布线层画边框范围时总是自己跳层??只要一开始画边框他就会自己跳到布线层,愁死了,新装的dxp sp2 :\'( 第一次碰到这种情况,郁闷啊,大家帮帮忙!!… 查看全部问答> |
|
RT,我用的是笔记本。无串口,网上的那个什么JFLASH用不起来了。J-LINK的J-FLASH ARM又认不识已编译好的vivi和vivi-elf.哪位大侠有办法通过usb烧写这两个文件?急啊。。。… 查看全部问答> |
|
本人有一些c/c++,以及Java基础, 目前要实现一个windows mobile平台下FTP客户端请求更新的模块, 刚刚开始接触智能移动设备的开发,使用VS2005作为开发环境(之前也没有用过..囧) 所以不知道该如何着手,如何入门, 想请大家指点一下,该从哪 ...… 查看全部问答> |
|
?以前没做过嵌入式开发,现两家公司招聘被录用,一家做手机,一家做电视? 哪家更好些? ?以前没做过嵌入式开发,现两家公司招聘被录用,一家做手机,一家做电视? 哪家更好些? 因为两家公司实力相当,我没有办法比较。 以前做研发只用vc开发过项目,对嵌入式并不了解。 所以,想问问各位: 做软件, 开发手机和开发电视 ,哪个前 ...… 查看全部问答> |
|
OEMStartDoc( SURFOBJ *pso, PWSTR pwszDocName, DWORD dwJobId) { TERSE(UNITEXT(\"OEMStartDoc ...… 查看全部问答> |




