📄 复件 7.lst
字号:
C51 COMPILER V8.02 复件_7 03/12/2007 13:13:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 复件_7
OBJECT MODULE PLACED IN 复件 7.OBJ
COMPILER INVOKED BY: d:\Keil 8\C51\BIN\C51.EXE 复件 7.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X51.H>
2
3 unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f, //定义段码
4 0x66,0x6d,0x7d,0x07,
5 0x7f,0x6f,0x77,0x7c,
6 0x39,0x5e,0x79,0x71,
7 0x40,0x00,0xbf,0x86,
8 0xdb,0xcf,0xe6,0xed,
9 0xfd,0x87,0xff,0xef};
10 unsigned char weima[]={0xfe,0xfd,0xfb,0xf7, //定义扫描位码
11 0xef,0xdf,0xbf,0x7f};
12 unsigned char shijian[8]={0,0,16,0,0,16,0,0}; //时间存储单元
13 unsigned char lucheng[8]={0,0,18,0,16,0,18,0}; //路程存储单元
14 char jiage[8]={2,19,17,0,19,17,5,20} ; //价格存储单元
15 unsigned char zongjia[8]={0,18,17,17,17,0,18,0} ; //总价存储单元
16 char mima[8]={16,16,16,16,16,16,16,16} ; //输密码存储单元
17 unsigned char mima1[8]={1,2,3,4,5,6,7,8}; //原始密码存储单元
18 unsigned char lu,x,y,cuo=0,hour1,w=0,m=0,n; //定义相关变量
19 int i;
20 unsigned char dis;
21 char second;
22 char minite,minite2;
23 char hour;
24 unsigned int tcnt,tcnt2;
25 unsigned char ms,a,c;
26 sbit k0=P1^0;
27 sbit k1=P1^1;
28 sbit k2=P1^2;
29 sbit k3=P1^3;
30 bit k=0;
31
32 delay(int t) //延时子程序
33 {
34 1 int s,e;
35 1 for(s=0;s<t;s++)
36 1 for(e=0;e<100;e++);
37 1 }
38
39 yijian() //一键是否按下子程序
40 {
41 1 char q=0;
42 1 if(k0==0)
43 1 {
44 2 delay(2);
45 2 if(k0==0)
46 2 {
47 3 q=1;
48 3 while(1) if(k0==1) break;
49 3 }
50 2 }
51 1 return q;
52 1 }
53
54 erjian() //二键是否按下子程序
55 {
C51 COMPILER V8.02 复件_7 03/12/2007 13:13:46 PAGE 2
56 1 char q=0;
57 1 if(k1==0)
58 1 {
59 2 delay(2);
60 2 if(k1==0)
61 2 {
62 3 q=1;
63 3 while(1) if(k1==1) break;
64 3 }
65 2 }
66 1 return q;
67 1 }
68
69 shangjian() //三键是否按下子程序
70 {
71 1 char q=0;
72 1 if(k2==0)
73 1 {
74 2 delay(2);
75 2 if(k2==0)
76 2 {
77 3 q=1;
78 3 while(1) if(k2==1) break;
79 3 }
80 2 }
81 1 return q;
82 1 }
83
84 kaiguan() //白天晚上转换开关
85 {
86 1 char q=0;
87 1 if(k3==0)
88 1 {
89 2 delay(2);
90 2 if(k3==0)
91 2 {
92 3 q=1;
93 3 }
94 2 }
95 1 return q;
96 1 }
97
98 mi() //输入密码子程序
99 {
100 1 char h; //定义局部变量
101 1 if(w==1) //检测是否已经输错三次
102 1 {goto loop;} //错三次跳到程序最后
103 1 a=5; //显示模块开关
104 1 for(i=7;i>=0;i--) //循环八次
105 1 {
106 2 while(1)
107 2 {
108 3 if(shangjian()==1) //三键按下,数据减1
109 3 {
110 4 mima[i]--;
111 4 if(mima[i]<0|mima[i]>9) mima[i]=9;
112 4 }
113 3 if(erjian()==1) //二键按下,数据加1
114 3 {
115 4 mima[i]++;
116 4 if(mima[i]>9) mima[i]=0;
117 4 }
C51 COMPILER V8.02 复件_7 03/12/2007 13:13:46 PAGE 3
118 3 if(yijian()==1) //一键按下,移到下一位
119 3 break;
120 3 }
121 2 }
122 1 for(i=0;i<=7;i++) //循环核对密码
123 1 if(mima[i]!=mima1[i]) break;
124 1 if(i<=7) //检查是否对8次
125 1 {
126 2 cuo++; //错误次数加1
127 2 if(cuo>=3) //错误次数到3清0并不允许再输入
128 2 {
129 3 cuo=0;
130 3 w=1;
131 3 }
132 2 h=0;
133 2 }
134 1 else h=1;
135 1 for(i=7;i>=0;i--) //输完后数据清除
136 1 {
137 2 mima[i]=16;
138 2 }
139 1 loop:if(w==1) return 0; //错三次,返回0
140 1 return h;
141 1 }
142
143 gaimi() //改密码子程序
144 {
145 1 if(w==1) //判断是否已错三次
146 1 {goto loop;}
147 1 if(mi()==1) //进入输密码子程序
148 1 {
149 2 a=6; //改密码显示开关
150 2 for(i=7;i>=0;i--) //循环8次改变密码数据
151 2 {
152 3 while(1)
153 3 {
154 4 if(shangjian()==1) //三键按下,数据减1
155 4 {
156 5 mima1[i]--;
157 5 if(mima1[i]<0|mima1[i]>9) mima1[i]=9;
158 5 }
159 4 if(erjian()==1)
160 4 {
161 5 mima1[i]++;
162 5 if(mima1[i]>9) mima1[i]=0;
163 5 }
164 4 if(yijian()==1)
165 4 break;
166 4 }
167 3 }
168 2 }
169 1 loop:if(w==1) return 0; //错三次,返回0
170 1 }
171
172 tiaoshi() //调时间子程序
173 {
174 1 if(w==1)
175 1 goto loop;
176 1 k=1; //停止计时
177 1 for(i=7;i>0;i=i-3) //对时、分、秒进行循环
178 1 {
179 2 while(1)
C51 COMPILER V8.02 复件_7 03/12/2007 13:13:46 PAGE 4
180 2 {
181 3 if(erjian()==1) //二键按下,加1
182 3 {
183 4 if(i==7) //调整时间部分
184 4 {
185 5 hour++; //小时加1
186 5 if(hour==24)
187 5 hour=0;
188 5 }
189 4 if(i==4) //调整分钟部分
190 4 {
191 5 minite++; //分钟加1
192 5 if(minite==60)
193 5 minite=0;
194 5 }
195 4 if(i==1) //调整秒钟部分
196 4 {
197 5 second++; //秒加1
198 5 if(second==60)
199 5 second=0;
200 5 }
201 4 }
202 3 if(shangjian()==1) //三键按下,减1
203 3 {
204 4 if(i==7)
205 4 {
206 5 hour--;
207 5 if(hour<0)
208 5 hour=23;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -