void DISPPassword void System Disable void Login Failed
程式說明 void DISP_Password(); //顯示*號代表密碼之函式 void System. Disable(); //系統解除模式 void Login. Failed(); //密碼錯誤模式 sbit SNG=P 1^4; void main() { Init_LCD(); SNG=0; DISP_Str(0 x 80, show. Msg); DISP_Str(0 x. C 0, input. Msg); #include <string. h> #include "kb 44. h" #include "lcd. h" //定義功能按鍵鍵盤碼 #define PS_CLEAN 10 #define PS_BACK 11 while(1){ unsigned char #define PS_ENTER 12 Input=0 xff; #define PS_LOCK 13 Input=kbscan(); //掃描鍵盤輸入 //LCM訊息顯示 if (Input==0 xff) continue; char code show. Msg[]="Password System V 1. 0"; if (Input<10){ char code input. Msg[]="Login: "; char code err. Msg[]="Login Failed. . . if "; char code login. Msg[]="System Disable. . . char Password[15]; char Password. Ptr=0; (Password. Ptr<10){ //目前輸入的密碼 //目前輸入之長度 "; Password[Password. Ptr]=Input | 0 x 30; //將輸入數字轉成ASCII儲存 Password. Ptr++; } }
程式說明 else{ case switch(Input){ PS_ENTER: case PS_CLEAN: //用strcmp在二字串一樣時傳回 0, 注意千萬不可寫成 Password=="24601" if (strcmp(Password, "97021")==0){ memset((void*)Password, 0, 10); //將密 碼全部消除(將字串陣列內容設為 0) memset((void*)Password, 0, 10); //清除密 碼輸入 Password. Ptr=0; System. Disable(); //進入系統解除 模式 break; } case PS_BACK: //如果沒有輸入就不動作 else Login. Failed(); if (Password. Ptr==0) DISP_Str(0 x 80, show. Msg); break; DISP_Str(0 x. C 0, input. Msg); case //系統未解鎖時, LOCK鈕無作用 PS_LOCK: SNG=0; Password[Password. Ptr]='