状态有四级:
状态0处理:检测有否按键,有有效键值,状态进1。
状态1处理:检测获得相同键值获得,状态进2,并查表输出有效按键码;否则状态回0。
状简棚态2处理:检查键值是否有效释放为空,释放为空设置状态进3;否则状态不变。
状态3处理:检查键值再次为空,状态进0,初始化相应变量再次进入新捕获状态。
这个睁贺可答早模以模拟那种拨码形式的清缓密码锁方式来设计,比如OFO共享单车的拨码方式。#include<reg51.h>
#define uchar unsigned char
uchar mima[4]={1,2,3,4}
uchar keymm[4]={0,0,0,0}
sbit key1=P1^0
sbit key2=P1^1
sbit key3=P1^2
sbit key4=P1^3
sbit led=P1^4
bit flag=0
void delay(uchar a)
{
uchar i
while(a--)for(i=0i<120i++)
}
main()
{
uchar i
led=1
while(1)
{
if(key1==0)
{
while(key1==0)
keymm[0]++
keymm[0]%=10
}
if(key2==0)
{
while(key2==0)
keymm[1]++
keymm[1]%=10
}
if(key3==0)
{
while(key3==0)
keymm[2]++
keymm[2]%=10
}
if(key4==0)
{
while(key4==0)
keymm[3]++
keymm[3]%=10
}
for(i=0i<4i++)
{
if(keymm[i]!=mima[i])break
if(i==3)flag=1
}
if(flag)
{
i=10
while(i--)
{
led=~led
delay(100)
}
flag=0
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)