📄 lock.lst
字号:
C51 COMPILER V8.02 LOCK 04/28/2009 09:34:47 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LOCK
OBJECT MODULE PLACED IN lock.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE lock.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //实验任务
2 /*用4*4键盘组成0-9数字键及确认键。
3 用8位数码管显示电路提示信息,当输入密码
4 时,只显示“8.”,当密码位数输入完毕按确
5 认键时,对应的密码与设定的密码进行比较,
6 若密码正确,则门开,此处继电器发出“叮咚”声;若
7 密码不正确,禁止按键输入3秒,同时发出“滴答”
8 报警声;若在3秒内仍有按键按下,则禁止按键
9 输入3秒被重新禁止*/
10 #include<reg51.h>
11 #define uchar unsigned char
12 #define uint unsigned int
13 uchar pslenth=6; // length of secret code
14 uchar getps[6]; // input secret code buffer area
15 uchar ps[]={0,1,2,3,4,5}; //secret code
16 uchar temp,num,count;
17 uchar aa,bb,cc;
18 uchar keycount;
19 uint key;
20 uint second3;
21 bit errorflag;
22 bit rightflag;
23 bit keyoverflag;
24 bit alarmflag;
25 sbit SPK=P3^4; //蜂鸣器
26 sbit LIGHT=P2^0; //指示灯
27 sbit JDQ=P3^5; //继电器
28 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
-1,0x00};
29 void Display(uchar count);
30 void IO_int()
31 {
32 1 errorflag=0;
33 1 rightflag=0;
34 1 keyoverflag=0;
35 1 keycount=0;
36 1 }
37 void Delay(unsigned int i)
38 {
39 1 unsigned char j;
40 1 for(;i>0;i--)
41 1 {
42 2 for(j=0;j<110;j++);
43 2 }
44 1 }
45 uint Scankey()
46 {
47 1 num=16;
48 1 P0=0xfe;
49 1 temp=P0;
50 1 Delay(20);
51 1 temp=P0;
52 1 temp=temp&0xf0;
53 1 if(temp!=0xf0)
54 1 {
C51 COMPILER V8.02 LOCK 04/28/2009 09:34:47 PAGE 2
55 2 Delay(50);
56 2 temp=P0;
57 2 temp=temp&0xf0;
58 2 if(temp!=0xf0)
59 2 {
60 3 switch(temp)
61 3 {
62 4 case 0xe0:num=0;
63 4 break;
64 4 case 0xd0:num=1;
65 4 break;
66 4 case 0xb0:num=2;
67 4 break;
68 4 case 0x70:num=3;
69 4 break;
70 4 }
71 3 temp=P0;
72 3 temp=temp&0xf0;
73 3 while(temp!=0xf0) //松手检测
74 3 {
75 4 temp=P0;
76 4 temp=temp&0xf0;
77 4 }
78 3 }
79 2 }
80 1 P0=0xfd;
81 1 temp=P0;
82 1 Delay(20);
83 1 temp=P0;
84 1 temp=temp&0xf0;
85 1 if(temp!=0xf0)
86 1 {
87 2 Delay(50);
88 2 temp=P0;
89 2 temp=temp&0xf0;
90 2 if(temp!=0xf0)
91 2 {
92 3 switch(temp)
93 3 {
94 4 case 0xe0:num=4;
95 4 break;
96 4 case 0xd0:num=5;
97 4 break;
98 4 case 0xb0:num=6;
99 4 break;
100 4 case 0x70:num=7;
101 4 break;
102 4 }
103 3 temp=P0;
104 3 temp=temp&0xf0;
105 3 while(temp!=0xf0) //松手检测
106 3 {
107 4 temp=P0;
108 4 temp=temp&0xf0;
109 4 }
110 3 }
111 2 }
112 1 P0=0xfb;
113 1 temp=P0;
114 1 Delay(20);
115 1 temp=P0;
116 1 temp=temp&0xf0;
C51 COMPILER V8.02 LOCK 04/28/2009 09:34:47 PAGE 3
117 1 if(temp!=0xf0)
118 1 {
119 2 Delay(50);
120 2 temp=P0;
121 2 temp=temp&0xf0;
122 2 if(temp!=0xf0)
123 2 {
124 3 switch(temp)
125 3 {
126 4 case 0xe0:num=8;
127 4 break;
128 4 case 0xd0:num=9;
129 4 break;
130 4 // case 0xb0:num=10; //no usage
131 4 // break;
132 4 // case 0x70:num=11; //no usage
133 4 // break;
134 4 }
135 3 temp=P0;
136 3 temp=temp&0xf0;
137 3 while(temp!=0xf0) //松手检测
138 3 {
139 4 temp=P0;
140 4 temp=temp&0xf0;
141 4 }
142 3 }
143 2 }
144 1 P0=0xf7;
145 1 temp=P0;
146 1 Delay(20);
147 1 temp=P0;
148 1 temp=temp&0xf0;
149 1 if(temp!=0xf0)
150 1 {
151 2 Delay(50);
152 2 temp=P0;
153 2 temp=temp&0xf0;
154 2 if(temp!=0xf0)
155 2 {
156 3 switch(temp)
157 3 {
158 4 // case 0xe0:num=12; //no usage
159 4 // break;
160 4 // case 0xd0:num=13; //no usage
161 4 // break;
162 4 case 0xb0:num=14; //Del key
163 4 break;
164 4 case 0x70:num=15; //Enter key
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -