📄 2.28.lst
字号:
C51 COMPILER V7.06 2_28 03/01/2007 18:07:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 2_28
OBJECT MODULE PLACED IN 2.28.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE 2.28.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #include<math.h>
3 #include<intrins.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define data_IO P2
7
8 sbit rs=P3^0; //指令和数据寄存器 “1是数据,” “0是指令”
9 sbit rw=P3^1;//读写控制,“1读” “0写”
10 sbit e=P3^2; //片选信号
11 sbit p=P2^7;
12 sbit deng=P0^0;///响音乐的端口
13 sbit md=P0^1;///修改密码时的灯
14
15
16 uchar pwflag;//密码是否正确的标志位
17 uchar count;//
18 uchar gg=0 ;//只有输入正确的密码才能修改密码
19 uchar cs=3 ;//输入密码的错误次数
20
21
22 uchar m[]={1,2,3,4,5,6}; ///初始密码
23 static uchar mbuf[6];///输入的密码
24
25
26 char d[32]={' ','I','M','P','O','R','T',' ','C','I','P','H','E','R',':',' ',
27 ' ',' ','_',' ',' ','_','_','_','_','_','_',' ',' ',' ',' ',' '};//输入密码
28
29 code char ks[32]={'C','O','N','G','R','A','T','U','L','A','T','E',' ','Y','O','U',
30 ' ','O','P','E','N','I','N','G',' ',' ','L','O','C','K','!',' '};////开锁
31
32 code char cw[32]={' ','C','I','P','H','E','R',' ',' ','E','R','R','O','R',' ',' ',
33 '~','~','~','~','~','~','~','~','~','~','~','~','~','~','~','~' };////错误
34
35 code char xc[32]={' ',' ','A','M','E','N','D',' ','S','U','C','C','E','E','D',' ',
36 ' ',' ',' ',' ',' ','!','!','!','!','!','!',' ',' ',' ',' ',' '};//修改成功
37
38 code char xg[32]={' ','A','M','E','N','D',' ',' ','C','I','P','H','E','R',':',' ',
39 ' ',' ',' ',' ',' ','_','_','_','_','_','_',' ',' ',' ',' ',' '};///修改密码*/
40
41
42 void yanshi(uint n)///////////////延时函数///////////////////////////////////
43 {
44 1 uint i;
45 1 for(i=0;i<n;i++){};
46 1 }
47
48 void delay(uint n)///////////////延时函数///////////////////////////////////
49 {
50 1 uint i,j;
51 1 for(i=0;i<1000;i++)
52 1 {for(j=0;j<n;j++){}}
53 1
54 1 }
55
C51 COMPILER V7.06 2_28 03/01/2007 18:07:27 PAGE 2
56 void busy() ////////////////////判断是否忙////////////////////////////////////////
57 {data_IO=0xff;
58 1 rs=0; //写指令 ////////////////////
59 1 rw=1; //表示读状态 // 三个的状态表示 //
60 1 e=1; //下降延// // 判忙状态 //
61 1 while(!p); ////////////////////
62 1 // e=0;
63 1 }
64 void xiezl(uchar shuju) /////////////////////*写指令*/////////////////////////////
65 {
66 1 busy();/*yanshi(6500);*/
67 1 data_IO=shuju;
68 1 rs=0; //写指令 ////////////////////
69 1 rw=0; //表示写状态 // 三个的状态表示 //
70 1 e=1; //下降延// // 写指令 //
71 1 e=0; ///////// ////////////////////
72 1
73 1 }
74
75 void w_dat(uint n)//////////////////写数据//////////////////////////
76 {
77 1 busy(); /*yanshi(6500) ;*/
78 1 data_IO=n;
79 1 rs=1; //写数据 ////////////////////
80 1 rw=0; //表示写状态 // 三个的状态表示 //
81 1 e=1; //下降延// //写数据 //
82 1 e=0; ///////// ////////////////////
83 1 // return;
84 1 }
85
86 void xianshi(uchar js[]) //////////////////显示函数///////////////////////////////
87 {
88 1 uchar h,v;
89 1 xiezl(0x01); //清屏显示
90 1 yanshi(2000) ;
91 1 xiezl(0x80); // DDRAM地址的设置
92 1 for(h=0;h<16;h++)
93 1 {w_dat(js[h]); ///n表示有写几位数据
94 2 yanshi(100) ;
95 2 }
96 1 xiezl(0xc0);//换行
97 1 for(v=(16);v<32;v++)
98 1 {w_dat(js[v]); ///n表示有写几位数据
99 2 yanshi(100) ;
100 2 }
101 1 }
102
103 void chushihua(void)///////////////////*液晶模块初始化*/
104 { uchar i;
105 1 rs=0; //写指令
106 1 rw=0; //表示写状态
107 1 e=0; //使能
108 1 for(i=0;i<3;i++)
109 1 {
110 2 xiezl(0x38); //功能设置,8位,一行显示,5*7点阵
111 2 yanshi(1000);
112 2 }
113 1 xiezl(0x38); //两行显示
114 1 xiezl(0x0f); //显示开关控制位
115 1 xiezl(0x18); //移位控制,光标和显示一起左移
116 1 xiezl(0x06); //设置输入模式
117 1 xiezl(0x01); //清屏显示
C51 COMPILER V7.06 2_28 03/01/2007 18:07:27 PAGE 3
118 1 xiezl(0x80); // DDRAM地址的设置
119 1 }
120
121 bit pwcmp(void)
122 {
123 1 bit flag;
124 1 uchar i;
125 1 for (i=0;i<6;i++)
126 1 {
127 2 if (m[i]==mbuf[i]) flag = 1; //*密码正确*/
128 2 else { flag = 0; i=6; } //*密码错误*/
129 2 }
130 1 return(flag);
131 1 }
132
133 void gb(void)/////////转移光标
134 { uchar c;
135 1 xiezl(0xc0);//换行
136 1 yanshi(3000) ;
137 1 for(c=0;c<5;c++)
138 1 {w_dat(' ');///n表示有写几位数据
139 2 yanshi(2000) ;
140 2 }
141 1 }
142 uchar getkey(void)///得到键值
143 { uchar h,l,k;
144 1 while(P1!=0x0f)
145 1 {
146 2 h=P1&0x0f;
147 2 P1=0xf0;
148 2 l=P1&0xf0;
149 2 k=h|l;
150 2 return(k);
151 2 }
152 1 }
153
154
155 void diaoyong(uchar i)///////////调用各键的函数//////输入密码
156 { uchar lq;
157 1 switch(i)
158 1 {
159 2 case 0x7e: if (count<6) { mbuf[count]=1; count++; w_dat('*');} break; // 01111110 1
160 2 case 0xbe: if (count<6) { mbuf[count]=2; count++; w_dat('*');}break; // 10111110 2
161 2 case 0xde: if (count<6) { mbuf[count]=3; count++; w_dat('*');} break; // 11011110 3
162 2 case 0xee: if (count<6) { mbuf[count]=4; count++; w_dat('*');} break; // 11101110 4
163 2
164 2 case 0x7d: if (count<6) { mbuf[count]=5; count++; w_dat('*');} break; // 01111101 5
165 2 case 0xbd: if (count<6) { mbuf[count]=6; count++; w_dat('*');} break; // 10111101 6
166 2 case 0xdd: if (count<6) { mbuf[count]=7; count++; w_dat('*');} break; // 11011101 7
167 2 case 0xed: if (count<6) { mbuf[count]=8; count++; w_dat('*');} break; // 11101101 8
168 2
169 2 case 0x7b: if (count<6) { mbuf[count]=9; count++; w_dat('*');} break; // 01111011 9
170 2 case 0xbb: if (count<6) { mbuf[count]=0; count++; w_dat('*');}break; // 10111011 0
171 2 case 0xdb: if (count==6) { pwflag = pwcmp();} else pwflag = 0;// 只有输入6个密码后按确认键
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -