Buscando un programa de bloqueo de contraseña simple escrito en lenguaje C para 51 microcontroladores
# include & ltreg52.h & gt
typedef carácter sin signo uchar
unidad entera typedef sin signo;
sbit key1= p0^ 0;
clave de bits2=p0^1;
clave de bits3=p0^2;
clave de bits4=p0^3;
sbit wela=p2^0; //Bit final del pestillo
#Define SMG P1
sbit led=p3^0; //Luz de bajo brillo
tabla de códigos uchar[]={0x8d, 0x 86}; //* * *Tubo digital Yang P, E
uchar _Mima[]={2, 1, 3 }; >uchar shuru _ mima[3];
uchar index; //Controla el número de dígitos para ingresar la contraseña.
uchar flag _ 3s = 0; //bit de bandera 3s
uchar keydown//determinar variables clave
#definir tiempo 15//tiempo de rebote 15 milisegundos
uchar key1_count, key2_count, key3_count, key4_count
void inicialization()
{
wela = 0;
wela = 0; p>
SMG = 0xff
TMOD = 0x 01;
TH0 =(65536-1000)/256;
TL0 =(65536-1000 )% 256;
ET0 = 1;
EA = 1;
TR0 = 1;
LED = 1;
p>
}
void main()
{
init();
mientras(1)
{
Cambiar (tecla)
{
if(índice & gt; 2) index = 0;
Caso 1:
shuru _ mima[index]= 0;
index++;
Rotura; p>
Caso dos:
shuru _ mima[index]= 1;
index++;
Rotura;
Caso 3:
shuru_mima[index]= 2;
index++;
Rotura;
Caso 4:
shuru _ mima[index]= 3 ;
index++;
Romper;
}
bandera _ 3s = 0 ;
for(I = 0;i<3;i++)
{
if(shuru _mima[i]= = virgin_mima[I])
{ p>
LED = 0;
wela = 1;
SMG = tabla[0]
if( bandera_3s)
{
bandera_3s = 0;
wela = 0;
}
}
Otros
{
LED = 1;
wela = 1
SMG = tabla[1; ];
if(flag_3s)
{
bandera _ 3s = 0
wela = 0; p>}
}
}
}
}
Temporizador no válido 0() interrupción 1
{
Contar Uchar;
TH0 =(65536-1000)/256;
TL0 =(65536-1000)% 256 ;
si (++ recuento >=600)
{
recuento = 0;
bandera _ 3s = 1;
}
/* * * * * * * * Botón de escaneo de interrupción de 1 ms (incluido el programa antirrebote) * * * * * */
Si (! clave 1&&key1_count! =0)
{
clave 1 _ cuenta-;
if(key1_count==0)
{
pulsación de tecla = 1;
p>
}
}
else if(!clave 1)clave 1 _ cuenta = veces;
//clave 2, clave 3, La clave 4 la escribe usted mismo.
}