📄 lock.lst
字号:
C51 COMPILER V9.01 LOCK 06/09/2012 21:36:37 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE LOCK
OBJECT MODULE PLACED IN lock.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lock.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2
3 #include "lcd1602.c"
4
5 #include "keydriver.c"
6 sbit P3_0=P3^0;
7 sbit P3_3=P3^3;
8 //sbit P3_0=P3^0;
9 unsigned char count,i;
10 unsigned char a[10];
11
12
13 unsigned char password[4][10]={1,2,3,4,5,6,7,8,9,0,
14 2,4,5,6,7,8,2,3,4,7,
15 4,5,6,3,2,1,1,7,8,9,
16 0,9,8,7,6,5,4,3,2,1};
17
18 //报告结果
19 void report(unsigned char flag)
20 {
21 1 a[10]=0;
22 1 if(flag==0)
23 1 {
24 2 printf_char(1,10,"right%d") ;
25 2 P3_0=0;
26 2 delay(60000);delay(60000);
27 2
28 2 P3_0=1;
29 2 LCD_CLR();
30 2 }
31 1 else
32 1 {
33 2 printf_char(1,10,"error%d") ;
34 2 if(count>=3)
35 2 P3_3=1;
36 2
37 2 delay(60000);delay(60000);
38 2 P3_3=0;
39 2 LCD_CLR();
40 2 }
41 1 }
42 //回删键
43 void del(void)
44 {
45 1 if(i==0)
46 1 return;
47 1 else
48 1 {
49 2 a[i]='\0';
50 2 printf_char(2,i," %d");
51 2 i--;
52 2 }
53 1 }
54 //改密码
55 void ch_word(void)
C51 COMPILER V9.01 LOCK 06/09/2012 21:36:37 PAGE 2
56 {
57 1 unsigned char recieve=0xff,b[10],j=0;
58 1 LCD_CLR();
59 1 printf_char(1,1,"new_password%d");
60 1 while(recieve!=11)
61 1 {
62 2 recieve=keypad();
63 2 delay(10000);
64 2 if(recieve<=9&&recieve>=0)
65 2 {
66 3 b[j]=recieve;
67 3 printf_data(2,j+1,1,recieve);
68 3 j++;
69 3 }
70 2 else if(recieve==12)
71 2 {
72 3 if(j!=0)
73 3 {
74 4 a[j]='\0';
75 4 printf_char(2,j," %d");
76 4 j--;
77 4 }
78 3 }
79 2 }
80 1 LCD_CLR();
81 1 if(j==6)
82 1 {
83 2 for(j=0;j<6;j++)
84 2 password[0][j]=b[j];
85 2 printf_char(1,1,"success%d");
86 2 }
87 1 else
88 1 printf_char(1,1,"fail%d");
89 1
90 1 delay(60000); delay(60000);
91 1 LCD_CLR();
92 1 }
93 //功能
94 void menu(void)
95 {
96 1 //unsigned char recieve;
97 1 unsigned char number=0;
98 1 unsigned char key_value=100;
99 1 unsigned char ERROR=3;
100 1 unsigned char j=0;
101 1 for(;;)
102 1 {
103 2
104 2 number=keypad();
105 2 key_value=number;
106 2 while(number!=0XFF)
107 2 number=keypad();
108 2
109 2 printf_char(1,1,"welcome%d");
110 2
111 2 if(key_value<=9&&key_value>=0&&i<6)
112 2 {
113 3 a[i]=key_value;
114 3 printf_char(2,i+1,"*%d");
115 3 i++;
116 3 }
117 2 else if(key_value==11)
C51 COMPILER V9.01 LOCK 06/09/2012 21:36:37 PAGE 3
118 2 {
119 3 for(i=0;i<6;i++)
120 3 {
121 4 if(a[i]!=password[0][i]&&a[i]!=password[1][i]&&a[i]!=password[2][i]&&a[i]!=password[3][i])
122 4 {
123 5 ERROR=1;
124 5 count++;
125 5 break;
126 5 }
127 4 else
128 4 {
129 5 ERROR=0;
130 5 count=0;
131 5 }
132 4 }
133 3 i=0;
134 3 report(ERROR);
135 3 }
136 2 else if(key_value==13)
137 2 {
138 3 LCD_CLR();
139 3 a[10]=0;
140 3 }
141 2 else if(key_value==12)
142 2 del();
143 2 else if(key_value==14)
144 2 {
145 3 ch_word();
146 3 }
147 2
148 2
149 2 }
150 1 }
151
152 void main(void)
153 {
154 1 LCD_CLR();
155 1 LCD_init();
156 1 while(1)
157 1 menu();
158 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1079 ----
CONSTANT SIZE = 82 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 52 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -