- 积分
- 260
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2008-1-16
- 精华
|
2#
发表于 2008-3-24 17:53:52
|
只看该作者
来自: 内蒙古兴安盟 来自 内蒙古兴安盟
基于MCS-51,程序如下:
6位密码开机程序:(电脑)
主程序:
MAIN: MOV R0,#00H ; 初始化
MOV R1,#00H
MOV R2,#06H ;(密码正确)计数6次
MOV R5,#06H ;(密码错误)计数6次
CLR P3.0 ; 关锁
CLR P3.1 ; 关喇叭
START: ORL P1,#0FFH ; P1口置1准备信号输入
ORL P2,#0FFH ; P2口置1准备信号输入
JNB P1.0,ZY0 ; 0号键有没有按下?
JNB P1.1,ZY1 ; 1号键有没有接下?
JNB P1.2,ZY2 ;
JNB P1.3,ZY3 ; .
JNB P1.4 ZY4 ; .
JNB P1.5 ZY5 ; .
JNB P1.6 ZY6 ;
JB P1.7 ZY7 ;
JNB P2.0 ZY8 ;
JNB P2.1 ZY9 ; 9号键有没有按下?
AJMP START ; 等待有键按下
开锁程序:
KS: MOV R7,#50 ;
YS5: MOV R6,#10 ; 延时
YS6: DJNZ R6,YS6 ;
DJNZ R7,YS5 ;
MOV A,R0 ; 地址指针清零
MOV DPTR,#TABLE ; 取表格首地址
MOVC A,@A+DPTR ; 取密码第一位数值
INC R0 ; 地址指针加1,待取下一位密码值
CJNE A,30H,CU ; 所按键值和密码比较
CLR P2.4 ; 与密码比较成功送LED显示
MOV R3,#200 ; LED显示延时一段时间
YS8: DJNZ R3,YS8 ;
DEC R5 ; 输入键值与密码无论是否一致R5都减1
DJNZ R2,START ; 密码输入正确有无6次
SETB P3.0 ; 密码输入已达6次,校验正确,开锁
MOV R7,#1EH ; 开锁延时30MS
YS1: MOV R6,#0F9H ;
YS2: DJNZ R6,YS2
DJNZ R7,YS1 ;
AJMP MAIN ; 返回主程序
CU: CLR P2.4 ; 输入键值与密码比较成功送LED显示
MOV R3,#200 ; 延时
YS7: DJNZ R3,YS7
DJNZ R5,START ; 密码输入错误有无6次
SETB P3.1 ; 密码输入已达6次,校验错误,蜂鸣器发声
MOV R7,#1EH ; 蜂鸣器发声30MS
YS3: MOV R6,#0F9H
YS4: DJNZ R6,YS2
DJNZ R7,YS1
AJMP MAIN ; 返回主程序
对应键值程序:
ZY0: MOV 30H,#00H ; 对应0号键码
AJMP KS ; 转移至开锁程序
ZY1: MOV 30H,#01H ; 对应1号键码
AJMP KS ; 转移至开锁程序
ZY2: MOV 30H,#02H ;
AJMP KS ;
ZY3: MOV 30H,#03H ; .
AJMP KS ; .
ZY4: MOV 30H #04H ; .
AJMP KS ;
ZY5: MOV 30H,#05H ;
AJMP KS ;
ZY6: MOV 30H #06H ; .
AJMP KS ; .
ZY7: MOV 30H #07H ; .
AJMP KS ;
ZY8: MOV 30H,#08H ;
AJMP KS ;
ZY9: MOV 30H #09H ; 对应9号键码
AJMP KS 转移至开锁程序
TABLE: DB 00H,01H,02H,03H,04H,05H,06H 密码表
END |
评分
-
查看全部评分
|