当前位置:首页 » 服务存储 » 24c存储芯片默认密码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

24c存储芯片默认密码

发布时间: 2022-08-13 01:56:15

㈠ 西门子PLC 四级密码 怎样解除

拆机解密。把PLC储存芯片24C256拆下来,读卡器读程序可以解密。
1, 烙下需破解的plc24c芯片读出4级加密的bin文件保存。
2 ,安装运行"Hex Workshop"软件,打开4级的BIN文件,把密码等级(226cn为a5f7,224cn为5ebf)04级改为03级保存,然后用"S7-200拆机解密软件"读出bin文件密码。
你就可以直接运行此套软件包里的"S7-200拆机解密软件"直接就可以显示密码了。

㈡ C语言 单片机 密码锁 求指教 24C04.bin是什么东西“初始密码由24C04.bin设定为 123456”是什么意思啊

24C04是I2C总线的EEPROM芯片,掉电后数据不会丢失,所以将密码保存在这里面。

㈢ 单片机密码锁如何设置初始密码

源程序有吧?看源程序能分析出来密码存储的地址及密码结构,然后按照这个地址和结构往24C02中写个密码就可以了,如果只有HEX文件,也没有密码在24C02中的存储地址以及密码的结构,那就没有办法了。

㈣ 一般笔记本的bios里有几个密码开机即需要密码的选项是哪一个

这不是开机密码,对开机没有任何影响,superior超级用户密码只是进入BIOS的密码,而且这种密码起不到保护作用,把主板上的电池拿下,密码就会自动清除。

㈤ 西门子PLC密码如何破解

是4级密码!禁止读取和写入,无论你是否已知密码,都无法上传PLC中的程序。破解这种加密的PLC确实有一定的难度。可以尝试下
1 烙下需破解的plc24c芯片读出4级加密的bin文件保存。

2 安装运行“Hex Workshop”软件,打开4级的BIN文件,把密码等级(226cn为a5f7,224cn为5ebf)04级改为03级保存,然后用“S7-200拆机解密软件”读出bin文件密码。

㈥ 52单片机不使用24C08如何将数据储存到芯片里。例如密码锁的密码储存到

//代码很长,希望你有耐心读下去 #include #define uint unsigned int #define uchar unsigned char void key_scan(); uchar count0,count一,count三,num,n=0,temp,a,j,count四; uchar mima[吧]; //初始密码存储区 uchar tab_key[50]; //输入密码存储区 uchar code table[]={ 0x三f,0x0陆,0x5b,0x四f, 0x陆陆,0x陆d,0x漆d,0x0漆, 0x漆f,0x陆f,0x漆漆,0x漆c, 0x三9,0x5e,0x漆9,0x漆一}; bit enterflag; //确认键按下与否的标志 bit mimaflag; //密码正确与否的标志 bit xiugaiflag; //修改密码标志 bit enter一flag; //修改密码确认键标志 sbit red=P三^漆; sbit bell=P三^陆; sbit rs=P二^0; sbit rw=P二^一; sbit lcden=P二^二; sbit scl=P三^四; sbit sda=P三^5; uchar code table一[]="input the passco"; uchar code table二[]="de: --------"; uchar code table三[]="*"; uchar code table四[]="right (^_^) "; uchar code table5[]="first error!!!!"; uchar code table陆[]="second error!!!!"; uchar code table漆[]="third error see "; uchar code table吧[]="u tomorrow (^_^)"; uchar code table9[]="define the passc"; uchar code table一0[]="ode: --------"; uchar code table一一[]="code is new"; //******************************键盘消抖函数******************************* void delay一() { ;; } void delay二(uchar x) { uchar a,b; for(a=x;a>0;a--) for(b=一00;b>0;b--); } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=一一0;y>0;y--); } //****************************e^二room的初始化******************************* void start() //开始信号 { sda=一; delay一(); scl=一; delay一(); sda=0; delay一(); } void stop() //停止 { sda=0; delay一(); scl=一; delay一(); sda=一; delay一(); } //****************************应答信号************************************* void respond() { uchar i; scl=一; delay一(); while((sda==一)&&(i<二50))i++; scl=0; delay一(); } //*****************************写字节操作函数********************************** void write_byte(uchar date) { uchar i,temp; temp=date; for(i=0;i<吧;i++) { temp=temp<<一; //保持最高位,左移到进位CY scl=0; delay一(); sda=CY; delay一(); scl=一; delay一(); } scl=0; delay一(); sda=一;//总线释放 delay一(); } //*******************************读字节操作函数***************************** uchar read_byte() { uchar i,k; scl=0; delay一(); sda=一; delay一(); for(i=0;i<吧;i++) { scl=一; delay一(); k=(k<<一)|sda; //或运算,放到最低位 scl=0; delay一(); } return k; } //**********************************写地址函数****************************** void write_add(uchar address,uchar date) { start(); write_byte(0xa0); respond(); write_byte(address); respond(); write_byte(date); respond(); stop(); } //*******************************读地址函数************************************* uchar read_add(uchar address) { uchar date; start(); write_byte(0xa0); respond(); write_byte(address); respond(); start(); write_byte(0xa一); respond(); date=read_byte(); stop(); return date; } //****************************LCD一陆0二的初始化******************************* void write_com(uchar com) { rs=0; lcden=0; P0=com; delay(5); lcden=一; delay(5); lcden=0; } void write_date(uchar date) { rs=一; lcden=0; P0=date; delay(5); lcden=一; delay(5); lcden=0; } //***************************************密码比较函数******************************** bit mimacmp() { bit flag; uchar i; for(i=0;i<吧;i++) { if(mima[i]==tab_key[i]) flag=一; else { flag=0; i=吧; } } return(flag); //返回flag } ////**********************************LCD显示函数开始************************************** void lcd_display() { uchar i=0; write_com(0x吧0+0x四0+吧); for(i=0;i<n;i++) { write_date(table三[0]); } } //****************************************键盘功能分配函数群开始**************************** //** 0 ** 一 **二 ** 三** //** 四** 5** 陆 **漆 ** //**吧** 9** 确认(A) **无效(B) //**取消(C)**修改密码键(D)**确认修改键(E)**无效(F) void key_manage一() { tab_key[n]=0; n++; if(xiugaiflag==一) { mima[count四]=0; count四++; } } void key_manage二() { tab_key[n]=一; n++; if(xiugaiflag==一) { mima[count四]=一; count四++; } } void key_manage三() { tab_key[n]=二; n++; if(xiugaiflag==一) { mima[count四]=二; count四++; } } void key_manage四() { tab_key[n]=三; n++; if(xiugaiflag==一) { mima[count四]=三; count四++; } } void key_manage5() { tab_key[n]=四; n++; if(xiugaiflag==一) { mima[count四]=四; count四++; } } void key_manage陆() { tab_key[n]=5; n++; if(xiugaiflag==一) { mima[count四]=5; count四++; } } void key_manage漆() { tab_key[n]=陆; n++; if(xiugaiflag==一) { mima[count四]=陆; count四++; } } void key_manage吧() { tab_key[n]=漆; n++; if(xiugaiflag==一) { mima[count四]=漆; count四++; } } void key_manage9() { tab_key[n]=吧; n++; if(xiugaiflag==一) { mima[count四]=吧; count四++; } } void key_manage一0() { tab_key[n]=9; n++; if(xiugaiflag==一) { mima[count四]=9; count四++; } } //**********************************确认键************************************************************** void key_manage一一() { enterflag=一; //确认键按下 if(n==吧) //只有输入吧个密码后按确认才做比较 mimaflag=mimacmp(); else mimaflag=0; if(enterflag==一) { enterflag=0; n=0; //用FFFFFFFF清除已经输入的密码 for(count三=0;count三<吧;count三++) { delay(5); tab_key[count三]=0x0f; } TR一=一; //打开计数器一 count一=0; //定时器一由50MS累计到一S所用的计数器 if(mimaflag==一) { a=0; write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table四[count三]); //密码正确,显示RIGHT,绿灯亮 delay(5); } } else { n=0; red=0; bell=0; a++; if(a==一) { for(count三=0;count三<吧;count三++) //ffffffff清除密码 { delay(5); tab_key[count三]=0x0f; } write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table5[count三]); //密码错误,显示 first error,红灯亮 delay(5); } TR一=一; } if(a==二) { for(count三=0;count三<吧;count三++) //ffffffff清除密码 { delay(5); tab_key[count三]=0x0f; } write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table陆[count三]); //密码错误,显示SECOND ERROR,红灯亮 delay(5); } TR一=一; } if(a==三) { for(count三=0;count三<吧;count三++) //ffffffff清除密码 { delay(5); tab_key[count三]=0x0f; } write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table漆[count三]); //密码错误,显示third error see,红灯亮 delay(5); } write_com(0x吧0+0x四0); for(count三=0;count三<一陆;count三++) { write_date(table吧[count三]);//密码错误,显示 U TOMORROW ,红灯亮 delay(5); } TR一=0; } } } } void key_manage一二() { tab_key[n]=一一; n++; //密码计数清零 } //****************************************************取消键******************************************** void key_manage一三() { n=0; //密码计数清零 write_com(0x吧0); //指针所指位置 for(count三=0;count三<一陆;count三++) { write_date(table一[count三]); //第一行显示INPUT THE PASSPORD: delay(5); } write_com(0x吧0+0x四0); for(count三=0;count三<一陆;count三++) { write_date(table二[count三]); //开机显示-------- delay(5); tab_key[count三]=0x0f; //用FFFFFFFF清楚已经输入的密码 } } //*******************************************修改密码键********************************** void key_manage一四() { uchar aa=0; n=0; xiugaiflag=一; write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table9[count三]); //显示define the password delay(5); tab_key[count三]=0x0f; //用FFFFFFFF清楚已经输入的密码 } write_com(0x吧0+0x四0); for(count三=0;count三<一陆;count三++) { write_date(table一0[count三]); //显示-------- delay(5); } TR0=一; } //******************************************修改密码键的确认键******************************** void key_manage一5() { n=0; enter一flag=一; if(enter一flag==一) { enter一flag=0; count四=0; for(count三=0;count三<一陆;count三++) { tab_key[count三]=0x0f; //用FFFFFFFF清楚已经输入的密码 } write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table一一[count三]); delay(一00); } TR一=一; count一=0; } } void key_manage一陆() { tab_key[n]=一5; n++; } //****************************************定时器一的50MS,共延时一秒***************************** void time_一() interrupt 三 { TH一=(陆55三陆-50000)/二5陆; TL一=(陆55三陆-50000)%二5陆; if(count一<二0) { count一++; } else //计时到一S { TR一=0; count一=0; mimaflag=0; red=一; bell=一; //显示FFFFFFFF write_com(0x0一); write_com(0x吧0); for(count三=0;count三<一陆;count三++) { write_date(table一[count三]); //显示INPUT THE PASSCODE delay(5); } write_com(0x吧0+0x四0); for(count三=0;count三<一陆;count三++) { write_date(table二[count三]); //开机显示FFFFFFFF delay(5); } } } //***********************************************定时0********************************************** void time_0() interrupt 一 { TH0=(陆55三陆-50000)/二5陆; TL0=(陆55三陆-50000)%二5陆; if(count四<吧) { key_scan(); } else { TR0=0; count四=0; } } //初始化函数 void init() { uchar i; lcden=0; write_com(0x三吧); //打开显示模式设置 write_com(0x0c); //打开显示,光标等等设置未零 write_com(0x0陆); //当读或写一个字符后地址指针加一,且光标加一,当写一个字符后整频显示左移, write_com(0x0一); //清零指令 write_com(0x吧0); //指针所指位置 //定时器初始化 TMOD=0x一一; //T0,T一工作方式一 TH0=(陆55三陆-二000)/二5陆; TL0=(陆55三陆-二000)%二5陆; //T0初始化二MS TH一=(陆55三陆-50000)/二5陆; TL一=(陆55三陆-50000)%二5陆; //T一初始化50MS TR一=0; ET一=一; EA=一; TR0=0; ET0=一; count0=0; //初始没有密码输入,故为零 enterflag=0; //没有确认键按下 mimaflag=0; //密码正确与否键先置零 red=一; //红灯不亮 //************密码存入EPROM中********************************** sda=一; delay(5); scl=一; delay(5); for(i=0;i<吧;i++) { write_add(i,吧); delay二(一00); } for(i=0;i<吧;i++) { mima[i]=read_add(i); delay(5); } } void main() { rw=0; init(); write_com(0x吧0); //指针所指位置 for(count三=0;count三<一陆;count三++) { write_date(table一[count三]); //第一行显示INPUT THE PASSPORD: delay(5); } write_com(0x吧0+0x四0); for(count三=0;count三<一陆;count三++) { write_date(table二[count三]); //开机显示FFFFFFFF delay(5); } while(一) { key_scan(); //调用键盘扫描函数 lcd_display(); } } //**************************************************键盘扫描函数开始******************************** void key_scan() { //**********扫描第一行********* P一=0xfe; temp=P一; temp=temp&0xf0; if(temp!=0xf0) { delay(一00); if(temp!=0xf0) { temp=P一; switch(temp) { case 0xee: key_manage一(); break; case 0xde: key_manage二(); break; case 0xbe: key_manage三(); break; case 0x漆e: key_manage四(); break; } while(temp!=0xf0) { temp=P一; temp=temp&0xf0; } } } //**************************************************扫描第二行*********************************** P一=0xfd; temp=P一; temp=temp&0xf0; if(temp!=0xf0) { delay(一00); if(temp!=0xf0) { temp=P一; switch(temp) { case 0xed: key_manage5(); break; case 0xdd: key_manage陆(); break; case 0xbd: key_manage漆(); break; case 0x漆d: key_manage吧(); break; } while(temp!=0xf0) { temp=P一; temp=temp&0xf0; } } } //*********************************************扫描第三行*********************************** P一=0xfb; temp=P一; temp=temp&0xf0; if(temp!=0xf0) { delay(一00); if(temp!=0xf0) { temp=P一; switch(temp) { case 0xeb: key_manage9(); break; case 0xdb: key_manage一0(); break; case 0xbb: key_manage一一(); break; case 0x漆b: key_manage一二(); break; } while(temp!=0xf0) { temp=P一; temp=temp&0xf0; } } } //***************************************************扫描第四行**************************************** P一=0xf漆; temp=P一; temp=temp&0xf0; if(temp!=0xf0) { delay(一00); if(temp!=0xf0) { temp=P一; switch(temp) { case 0xe漆: key_manage一三(); break; case 0xd漆: key_manage一四(); break; case 0xb漆: key_manage一5(); break; case 0x漆漆: key_manage一陆(); break; } while(temp!=0xf0) { temp=P一; temp=temp&0xf0; } } }

㈦ 关于51单片机C语言 数码管 4*4按键 简单的密码锁 请您帮助一下

密码锁(掉电保护功能)
功能键
S6---S15 数字键0-9
S16---更改密码 S17---更改密码完毕后确认
S18---重试密码、重新设定 S19---关闭密码锁
初始密码:000000 密码位数:6位
注意:掉电后,所设密码会丢失,重新上点时,密码恢复为原始的000000
与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上

程序功能: 本程序结合了24C02存储器的存储功能,可以掉电保存密码。
第一次运行时,若输入000000原始密码后无反应,可以试验着将主程序中前面的
一小段被注释线屏蔽的程序前的注释线删掉,然后重新编译下载(可以将密码还原为000000)。
此后,再将这小段程序屏蔽掉,再编译下载。方可正常使用。
1、开锁:
下载程序后,直接按六次S7(即代表数字1),8位LED亮,锁被打开,输入密码时,
六位数码管依次显示小横杠。
2、更改密码:
只有当开锁(LED亮)后,该功能方可使用。
首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应
的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。
3、重试密码:
当输入密码时,密码输错后按下键S18,可重新输入六位密码。
当设置密码时,设置中途想更改密码,也可按下此键重新设置。
4、关闭密码锁:
按下S19即可将打开的密码锁关闭。
推荐初级演示步骤:输入原始密码000000---按下更改密码按键S16---按0到9设置密码---按S17
确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁
*******************************************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar old1,old2,old3,old4,old5,old6; //原始密码000000
uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密码输入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp;

bit allow,genggai,ok,wanbi,retry,close; //各个状态位

sbit la=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit sda=P2^0; //IO口定义
sbit scl=P2^1;

unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};

/*****************IIC芯片24C02存储器驱动程序************************************/

void nop()
{
_nop_();
_nop_();
}
/////////24C02读写驱动程序////////////////////
void delay1(unsigned int m)
{ unsigned int n;
for(n=0;n<m;n++);
}

void init() //24c02初始化子程序
{
scl=1;
nop();
sda=1;
nop();
}

void start() //启动I2C总线
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}

void stop() //停止I2C总线
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}

void writebyte(unsigned char j) //写一个字节
{
unsigned char i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
nop();
sda=CY; //temp左移时,移出的值放入了CY中
nop();
scl=1; //待sda线上的数据稳定后,将scl拉高
nop();
}
scl=0;
nop();
sda=1;
nop();
}

unsigned char readbyte() //读一个字节
{
unsigned char i,j,k=0;
scl=0; nop(); sda=1;
for (i=0;i<8;i++)
{
nop(); scl=1; nop();
if(sda==1)
j=1;
else
j=0;
k=(k<<1)|j;
scl=0;
}
nop();
return(k);
}

void clock() //I2C总线时钟
{
unsigned char i=0;
scl=1;
nop();
while((sda==1)&&(i<255))
i++;
scl=0;
nop();
}

////////从24c02的地址address中读取一个字节数据/////
unsigned char read24c02(unsigned char address)
{
unsigned char i;
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
start();
writebyte(0xa1);
clock();
i=readbyte();
stop();
delay1(100);
return(i);
}

//////向24c02的address地址中写入一字节数据info/////
void write24c02(unsigned char address,unsigned char info)
{
start();
writebyte(0xa0);
clock();
writebyte(address);
clock();
writebyte(info);
clock();
stop();
delay1(5000); //这个延时一定要足够长,否则会出错。因为24c02在从sda上取得数据后,还需要一定时间的烧录过程。
}
/****************************密码锁程序模块********************************************************/

void delay(unsigned char i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}

void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
la=0;
P0=table[a];
la=1;
la=0;

wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);

P0=table[b];
la=1;
la=0;

P0=0xfd;
wela=1;
wela=0;
delay(5);

P0=table[c];
la=1;
la=0;

P0=0xfb;
wela=1;
wela=0;
delay(5);

P0=table[d];
la=1;
la=0;

P0=0xf7;
wela=1;
wela=0;
delay(5);

P0=table[e];
la=1;
la=0;

P0=0xef;
wela=1;
wela=0;
delay(5);

P0=table[f];
la=1;
la=0;

P0=0xdf;
wela=1;
wela=0;
delay(5);
}

void keyscan()
{
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
wei++;
break;

case 0xde:
key=1;
wei++;
break;

case 0xbe:
key=2;
wei++;
break;

case 0x7e:
key=3;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
wei++;
break;

case 0xdd:
key=5;
wei++;
break;

case 0xbd:
key=6;
wei++;
break;

case 0x7d:
key=7;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
wei++;
break;

case 0xdb:
key=9;
wei++;
break;

case 0xbb:
genggai=1;
wei=0;
break;

case 0x7b:
if(allow)
ok=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
retry=1;
break;

case 0xd7:
close=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
}
}

void shumima() //对按键采集来的数据进行分配
{
if(!wanbi)
{
switch(wei)
{
case 1:new1=key;
if(!allow) a=17;
else a=key; break;
case 2:new2=key;
if(a==17) b=17;
else b=key; break;
case 3:new3=key;
if(a==17) c=17;
else c=key; break;
case 4:new4=key;
if(a==17) d=17;
else d=key; break;
case 5:new5=key;
if(a==17) e=17;
else e=key; break;
case 6:new6=key;
if(a==17) f=17;
else f=key;
wanbi=1; break;
}
}
}

void yanzheng() //验证密码是否正确
{
if(wanbi) //只有当六位密码均输入完毕后方进行验证
{
if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6))
allow=1; //当输入的密码正确,会得到allowe置一
}
}

void main()
{

init(); //初始化24C02
/*********下面的一小段程序的功能为格式化密码存储区。************
******当24c02中这些存储区由于其他程序的运行而导致***************
*******所存数据发生了变化,或者密码遗忘时, ********************
******可以删掉其前面的注释线,然后重新编译下载。****************
******而将密码还原为000000后,请将下面的程序用******************
******注释屏蔽掉,重新编译、下载,方可正常使用****************/
// write24c02(110,0x00);
// write24c02(111,0x00);//24c02的第110到115地址单元作为密码存储区
// write24c02(112,0x00);
// write24c02(113,0x00);
// write24c02(114,0x00);
// write24c02(115,0x00);
/*******************************************************************/

old1=read24c02(110);
old2=read24c02(111);
old3=read24c02(112);
old4=read24c02(113);
old5=read24c02(114);
old6=read24c02(115);

while(1)
{
keyscan();
shumima();
yanzheng();
if(allow) //验证完后,若allow为1,则开锁
{
P1=0x00;
if(!genggai)
wanbi=0;
}
if(genggai) //当S16更改密码键被按下,genggai会被置一
{
if(allow) //若已经把锁打开,才有更改密码的权限
{
while(!wanbi) //当新的六位密码没有设定完,则一直在这里循环
{
keyscan();
shumima();
if(retry|close) //而当探测到重试键S18或者关闭密码锁键S19被按下时,则跳出
{ wanbi=1;
break;
}
display(a,b,c,d,e,f);
}
}
}
if(ok) //更改密码时,当所有六位新密码均被按下时,可以按下此键,结束密码更改
{ //其他时间按下此键无效
ok=0; wei=0;
genggai=0;
old1=new1;old2=new2;old3=new3; //此时,旧的密码将被代替
old4=new4;old5=new5;old6=new6;
//新密码写入存储区。
write24c02(110,old1);
write24c02(111,old2);
write24c02(112,old3);
write24c02(113,old4);
write24c02(114,old5);
write24c02(115,old6);
a=16;b=16;c=16;d=16;e=16;f=16;
}
if(retry) //当重试按键S18被按下,retry会被置位
{
retry=0; wei=0;wanbi=0;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
if(close) //当关闭密码锁按键被按下,close会被置位
{
close=0;genggai=0;//所有变量均被清零。
wei=0; wanbi=0;
allow=0;
P1=0xff;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
display(a,b,c,d,e,f); //实时显示
}
}