请问,用四个独立按键来制作简易密码锁C语言程序该怎么编写

Python033

请问,用四个独立按键来制作简易密码锁C语言程序该怎么编写,第1张

这个可以模拟那种拨码形式的密码锁方式来设计,比如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

}

}

}

如果你将mutex_c换成mutex_p,则不会死锁,因为,你第一个线程锁上后,切换到第二个线程,因为mutex_p未释放,第二个线程无法获取mutex_p,进入等待状态,此时OS将再次调度第一个线程,直到第一个线程释放mutex_p之后,第二个线程才会被激活,然后调试第二线程,获取mutex_p.

使用OS提供的互斥量来保护公共资源还是比较安全的,但如果用二值信号量的话,就可能会有优先级反转的情况.