单片机电子锁程序.docx
- 文档编号:7728775
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:30
- 大小:19.55KB
单片机电子锁程序.docx
《单片机电子锁程序.docx》由会员分享,可在线阅读,更多相关《单片机电子锁程序.docx(30页珍藏版)》请在冰豆网上搜索。
单片机电子锁程序
;********************************************
;*********电子密码锁*********
;********************************************
;*********2005/12/24*********
;********************************************
;显示缓冲区
;LED1EQU6FH
BUFFEQU6EH
TIMERS1EQU6DH;输入回车的次数
TIMERS2EQU6CH;报警的次数
TIMERSEQU6BH;输入数字的位数
;LED6EQU6AH
;密码缓冲区
PS1EQU69H
PS2EQU68H
PS3EQU67H
PS4EQU66H
PS5EQU65H
PS6EQU64H
;AT24C02读取缓冲区
AT1EQU63H
AT2EQU62H
AT3EQU61H
AT4EQU60H
AT5EQU5FH
AT6EQU5EH
;按键标志位
F_1BIT20H
F_2BIT21H
F_3BIT22H
F_4BIT23H
BUF_FULLBIT24H;密码已经够六位的标志位,为1表示满
CH_STATEBIT25H;系统更改的状态标志位,为1表示busy
FLAG1BIT26H;功能键标志位,为1表示功能按键。
F_F1BIT27H
F_F2BIT28H
PSW_FBIT29H;密码是否正确的标志位
;口资源定义
SPKBITP2.1
JDQBITP2.3
SDABITP2.4;定义串口数据端
SCLBITP2.5
;发光二极管灯
L1BITP1.0
L2BITP1.1
L3BITP1.2
;
ORG0000H
AJMPMAIN
ORG000BH
;AJMPTIMER0
ORG001BH
;AJMPTIMER1
ORG0030H
MAIN:
MOVSP,#70H
MOVTMOD,#11H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#3CH
MOVTL1,#0B0H
CLRF_1;清除标志位
CLRF_2
CLRF_3
CLRF_4
CLRBUF_FULL
CLRCH_STATE
CLRFLAG1
CLRF_F1
CLRF_F2
CLRPSW_F
MOVBUFF,#00H;调用
LCALLINITPS;初始化环境
LCALLINITAT
LCALLXSA;调用默认显示
MOVTIMERS1,#00H
NOP
MOVPS1,#11H;初始化密码830620
MOVPS2,#0AH
MOVPS3,#02H
MOVPS4,#13H
MOVPS5,#0BH
MOVPS6,#02H
START:
NOP;程序开始
LCALLCH_KEY;检查键盘
AJMPSTART;返回
CH_KEY:
LCALLKS;检查有没有按键按下
JNZLK1
AJMPCH_KEY
LK1:
LCALLT12MS
ACALLKS
JNZLK2
RET
LK2:
NOP
LCALLSBIE;按键识别子程序
MOVBUFF,A;送缓冲区以识别是数字键还是功能键?
LCALLCH_KF;判断按键功能。
JBFLAG1,KEY_FUN;标志为1,则为功能键
;***********数字按键输入并且存放到缓冲区内等待比较***********
KEY_DIG:
NOP;设一标志,辨别输入是否满
;SETBTR0
INCTIMERS;输入数字的位数
MOVA,TIMERS
CLRC
SUBBA,#01H
JNZPS_2
MOVPS1,BUFF;依照顺序存放密码
AJMPNEXT
PS_2:
MOVA,TIMERS
SUBBA,#02H
CLRC
JNZPS_3
MOVPS2,BUFF
AJMPNEXT
PS_3:
MOVA,TIMERS
CLRC
SUBBA,#03H
JNZPS_4
MOVPS3,BUFF
AJMPNEXT
PS_4:
MOVA,TIMERS
CLRC
SUBBA,#04
JNZPS_5
MOVPS4,BUFF
AJMPNEXT
PS_5:
MOVA,TIMERS
CLRC
SUBBA,#05
JNZPS_6
MOVPS5,BUFF
AJMPNEXT
PS_6:
MOVA,TIMERS
CLRC
SUBBA,#06H
JNZCH_KEY
MOVPS6,BUFF
NEXT:
LCALLXSC
MOVR7,TIMERS;比较输入的次数。
CJNER7,#06H,FULL
FULL:
JCNEXT9
SETBBUF_FULL
MOVTIMERS,#06H
CLRL3
NOP
CLRP2.1
LCALLT100MSD
SETBP2.1
NOP
AJMPCH_KEY
NEXT9:
CLRP2.1;密码输入一位,鸣叫一声。
CLRL3
LCALLT100MSD;延时100ms
SETBL3
SETBP2.1
AJMPCH_KEY
;*****************功能按键比较并且跳转*************
KEY_FUN:
CLRFLAG1
CLRC
MOVA,BUFF
SUBBA,#03H;按键CL跳转
JNZEN_C
AJMPCL
EN_C:
CLRC
MOVA,BUFF;按键EN跳转
SUBBA,#00H
JNZF1_C
AJMPEN
F1_C:
CLRC
MOVA,BUFF
SUBBA,#1BH
JNZF2_C
AJMPFU1
F2_C:
CLRC
MOVA,BUFF
SUBBA,#1AH
JNZF3_C
AJMPFU2
F3_C:
CLRC
MOVA,BUFF
SUBBA,#19H
JNZF4_C
AJMPFU3
F4_C:
CLRC
MOVA,BUFF
SUBBA,#18H
JZFU4
EXIT8:
NOP
LJMPCH_KEY
;***************开门子程序********************************
CL:
NOP
SETBL3
MOVBUFF,#00H;消密码缓冲
MOVTIMERS,#00H
LCALLINITPS;消除AT缓冲,加调电存储后一定要加上
LCALLXSC
LCALLBP
LCALLBP
LCALLT100MSD
LCALLBP
CLRFLAG1
AJMPCH_KEY
FU4:
NOP
LCALLBP
LCALLT100MSD
LCALLBP
LCALLT100MSD
LCALLBP
LCALLT100MSD
LCALLBP
LCALLT100MSD
LCALLBP
CLRFLAG1
AJMPCH_KEY
FU3:
NOP
LCALLBP
LCALLT100MSD
LCALLBP
LCALLKILLXS;关闭显示
CLRFLAG1
AJMPCH_KEY
FU1:
NOP
LCALLXSC
JBF_F1,NEXT_F1
CLRL1
LCALLBP
SETBF_F1
AJMPCH_KEY
NEXT_F1:
SETBL1
LCALLBP
CLRF_F1
;LCALLCH_STATE;查看现在的状态以防误按
;SETBTR1;报警限制暂时不开
;INCF_F1
CLRFLAG1
AJMPCH_KEY
FU2:
NOP
JBF_F2,NEXT_F2
CLRL2
LCALLBP
SETBF_F2
AJMPCH_KEY
NEXT_F2:
SETBL2
LCALLBP
CLRF_F2
CLRFLAG1
AJMPCH_KEY
;***************按键的功能描述*************************
EN:
NOP
JBBUF_FULL,GOON
AJMPEXIT
GOON:
CLRBUF_FULL
JBF_F2,AT_WRON;F2按键标志,若为1,则调用修改密码子程序。
LCALLAT_RADE
LCALLC_PSW;比较密码子程序
JBPSW_F,OPEN;密码比较正确,则调用开锁子程序
LCALLXSD
INCTIMERS2
MOVR7,TIMERS2;密码错误,调入输入密码输入次数,准备锁定键盘
CJNER7,#03H,D0
D0:
JCNEXT1;错误次数小3次
LCALLXSE;锁定5分钟
LCALLWARN2S
LCALLLOCK_1M
NEXT1:
LCALLWARN2S;报警2分钟
LCALLXSA
EXIT:
LCALLINITPS
MOVBUFF,#00H
CLRFLAG1
MOVTIMERS,#00H
AJMPCH_KEY;跳出
AT_WRON:
LCALLAT_WR
LCALLXSF
LCALLBP
LCALLT100MSD
LCALLBP
LCALLT500MSD
LCALLKILLXS
LCALLT500MSD
LCALLXSF
LCALLT500MSD
LCALLKILLXS
LCALLT500MSD
LCALLXSF
LCALLT500MSD
NOP
NOP
LCALLXSA
AJMPEXIT
OPEN:
MOVA,TIMERS1
CJNEA,#09H,CLT1
CLT1:
JCGOON1
MOVTIMERS1,#00H
GOON1:
INCTIMERS1;输入回车的次数
MOVTIMERS2,#00H
SETBL3
CLRPSW_F
LCALLXSB
CLRJDQ;开门
LCALLBP
LCALLBP
LCALLBP
LCALLBP
LCALLSEC
LCALLSEC
LCALLSEC
LCALLSEC
LCALLSEC
LCALLSEC
LCALLSEC
LCALLSEC
SETBJDQ
LCALLXSA
NOP
AJMPEXIT
;**************各类子程序********************************
;****注意清楚缓冲区时AT1...AT6不应在初始化中执行,以***
;****防两缓冲区都为0,相同开锁***
;********************************************************
CLR_BUF:
MOVR7,#06H
MOVR0,#6FH
LOOP1:
MOVA,#00H
MOV@R0,A
DECR0
DJNZR7,LOOP1
RET
;*************初始化显示缓冲区以及其他缓冲区**************
INITPS:
PUSHACC
PUSHPSW
MOVR7,#06H
MOVR1,#PS1
MOVA,#00H
INIT_PS:
MOV@R1,A
DECR1
DJNZR7,INIT_PS
POPPSW
POPACC
NOP
RET
INITAT:
PUSHACC
PUSHPSW
MOVR7,#06H
MOVR1,#AT1
MOVA,#00H
INIT_AT:
MOV@R1,A
DECR1
DJNZR7,INIT_AT
MOVTIMERS,#00H;密码输入的次数清零。
POPPSW
POPACC
RET
;*************按键识别子程序***************************
SBIE:
MOVR2,#0EFH;识别按键子程序,数据送A保存,课本P146页。
MOVR4,#00H
LK4:
MOVA,R2
MOVP0,A
NOP
MOVA,P0
JBACC.0,LONE
MOVA,#00H
AJMPLKP
LONE:
JBACC.1,LTWO
MOVA,#08H
AJMPLKP
LTWO:
JBACC.2,LTHR
MOVA,#10H
AJMPLKP
LTHR:
JBACC.3,NEXTT;判断下一列
MOVA,#18H
LKP:
ADDA,R4
PUSHACC
LK3:
ACALLKS
JNZLK3
POPACC
RET
NEXTT:
INCR4
MOVA,R2
JNBACC.7,KND
RLA
MOVR2,A
AJMPLK4
KND:
AJMPCH_KEY
KS:
MOVP0,#0FH
NOP
MOVA,P0
CPLA
ANLA,#0FH
NOP
RET
CH_KF:
CLRC
MOVA,BUFF;判断是数字按键还是功能按键,为1表示功能键
CJNEA,#17H,KY
KY:
JCSET_CH;假若是数字按键则标志置为0
SETBFLAG1;假若是功能按键则标志置为1
AJMPCHKE_END
SET_CH:
CLRC
MOVA,BUFF
SUBBA,#00H
JNZEN_CH
SETBFLAG1
AJMPCH_END
EN_CH:
MOVA,BUFF
SUBBA,#03H
JNZDIG
SETBFLAG1
AJMPCH_END
DIG:
CLRFLAG1
CH_END:
NOP
CHKE_END:
RET
T12MS:
MOVR7,#18H
TM1:
MOVR6,#0FFH
TM66:
DJNZR6,TM66
DJNZR7,TM1
RET
;****************检验密码正误******************************
C_PSW:
PUSHPSW
PUSHACC
MOVR2,#06H
MOVR0,#PS1
MOVR1,#AT1
C_P:
CLRC
MOVA,@R0
SUBBA,@R1
JNZRETURN
DECR0
DECR1
DJNZR2,C_P
NOP
SETBPSW_F
AJMPEXIT7
RETURN:
CLRPSW_F
EXIT7:
NOP
POPACC
POPPSW
RET
;×××××××××××××××××锁定,鸣笛子程序××××××××××××
LOCK_1M:
MOVR4,#3CH;锁定1分钟
M1_LOOP:
LCALLSEC
DJNZR4,M1_LOOP
NOP
RET
WARN2S:
PUSHPSW
PUSHACC
MOVR5,#14H;调用20次BP,报警2s
WARN:
LCALLBP
DJNZR5,WARN
NOP
POPACC
POPPSW
NOP
RET
BP:
CLRSPK;鸣笛子程序
LCALLT100MSD
SETBSPK
NOP
RET
;***************************
;*****显示子程序********
;***************************
;功能:
分五屏幕显示数据,分别是XSA,XSB,XSC,XSD,XSE.代表六种状态。
;锁定状态显示。
XSA:
PUSHACC
PUSHPSW
MOVA,TIMERS1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A;送已经输入密码的次数
JNBTI,$
CLRTI
MOVSBUF,#0FEH;送短线
JNBTI,$
CLRTI
MOVSBUF,#0FEH;送短线
JNBTI,$
CLRTI;送F
MOVSBUF,#78H
JNBTI,$
CLRTI
MOVSBUF,#78H
JNBTI,$
CLRTI
MOVSBUF,#11H
JNBTI,$
CLRTI
POPPSW
POPACC
RET
;成功开锁状态显示
XSB:
PUSHACC
PUSHPSW
MOVA,TIMERS1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVSBUF,A
JNBTI,$
CLRTI
MOVSBUF,#0FEH
JNBTI,$
CLRTI
MOVSBUF,#0FEH
JNBTI,$
CLRTI
MOVSBUF,#10H
JNBTI,$
CLRTI
MOVSBUF,#10H
JNBTI,$
CLRTI
MOVSBUF,#10H
JNBTI,$
CLRTI
POPPSW
POPACC
RET
;密码输入及修改状态
XSC:
PUSHACC
PUSHPSW
LCALLKILLXS
SETBRS1;切换到第三组寄存器。
防止操作数读取错误。
MOVR6,TIMERS
MOVA,R6
SUBBA,#01H
JNCSC0
JZSC1
SC0:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
SC1:
MOVA,R6
SUBBA,#02H
JNCSC11
JNZSC2
SC11:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
SC2:
MOVA,R6
SUBBA,#03H
JNCSC22
JNZSC3
SC22:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
SC3:
MOVA,R6
SUBBA,#04H
JNCSC33
JNZSC4
SC33:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
SC4:
MOVA,R6
SUBBA,#05H
JNCSC44
JNZSC5
SC44:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
SC5:
MOVA,R6
SUBBA,#06H
JNCSC55
JNZSC6
SC55:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
SC6:
MOVA,R6
SUBBA,#07H
JNCSC66
JNZEXIT_C
SC66:
MOVSBUF,#0FEH
JNBTI,$
CLRTI
NOP
NOP
EXIT_C:
NOP
CLRRS1
POPPSW
POPACC
NOP
RET
;密码输入错误的提示
XSD:
PUSHACC
PUSHPSW
MOVSBUF,#98H
JNBTI,$
CLRTI
MOVSBUF,#79H
JNBTI,$
CLRTI
MOVSBUF,#11H
JNBTI,$
CLRTI
MOVSBUF,#79H
JNBTI,$
CLRTI
MOVSBUF,#79H
JNBTI,$
CLRTI
MOVSBUF,#38H
JNBTI,$
CLRTI
POPPSW
POPACC
RET
;锁定状态显示
XSE:
PUSHACC
PUSHPSW
MOVSBUF,#0FEH
JNBTI,$
CLRTI
MOVSBUF,#54H
JNBTI,$
CLRTI
MOVSBUF,#39H
JNBTI,$
CLRTI
MOVSBUF,#11H
JNBTI,$
CLRTI
MOVSBUF,#3DH
JNBTI,$
CLRTI
MOVSBUF,#0FEH
JNBTI,$
CLRTI
POPPSW
POPACC
RET
XSF:
PUSHACC
PUSHPSW
MOVSBUF,#98H
JNBTI,$
CLRTI
MOVSBUF,#38H
JNBTI,$
CLRTI
MOVSBUF,#39H
JNBTI,$
CLRTI
MOVSBUF,#39H
JNBTI,$
CLRTI
MOVSBUF,#3DH;U
JNBTI,$
CLRTI
MOVSBUF,#98H
JNBTI,$
CLRTI
POPPSW
POPACC
RET
KILLXS:
PUSHACC
PUSHPSW
MOVR7,#06H
LOOP_XS:
MOVSBUF,#0FFH
JNBTI,$
CLRTI
DJNZR7,LOOP_XS
NOP
POPPSW
POPACC
RET
TAB:
DB11H,0D7H,32H,92H,0D4H,98H,1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子锁 程序