當前位置:首頁 » 服務存儲 » 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); //實時顯示
}
}