📄 main.lst
字号:
C51 COMPILER V7.10 MAIN 05/07/2006 17:33:51 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include <reg2051.h>
2 #include "1621_driver.h"
3 #include "tel_equipment.h"
4 #include "AT24C08PAGE_Ok.H"
5
6 bit scankey_bit;
7 bit KeyACT;
8 bit set_sign;
9
10 bit status3;
11 bit lift_bit; //提机标志
12 bit time1s;
13 bit polarity_bit;
14 bit scankey_bit;
15 bit Showbit;
16 bit LineType;
17
18 uchar KeyTemp;
19 uchar p[10];
20 uchar key[20];
21 uchar nkey;
22 uchar timetype;
23 ulong times;
24 ulong times2;
25 uchar times3;
26
27
28 uchar code keycode[] = {
29 //0 1 2 3 4 5 6 7 8 9 a b c d e f
30 0x00,0x08,0x04,0x0c,0x02,0x00,0x06,0x0e,0x01,0x09,0x05,0x0d,0x03,0x0b,0x07,0x00
31 };
32 main(){
33 1 Led1 = 0;
34 1 Led2 = 0;
35 1 init();
36 1 SETUP_LCD();
37 1 Led1 = 1;
38 1 Led2 = 1;
39 1
40 1 while(1){
41 2 if(lift_bit){
42 3 status3 = status1;
43 3 ClrLCD();
44 3 times3 = 0;
45 3 }
46 2
47 2 while (lift_bit){
48 3 scankey_bit = 1;
49 3 getkey();
50 3 set_menu();
51 3 if (polarity_bit & !set_sign)
52 3 showmoney(ShowCountTime(times));
53 3
54 3 }
55 2 showtime();
C51 COMPILER V7.10 MAIN 05/07/2006 17:33:51 PAGE 2
56 2 clrbuf();
57 2 }
58 1
59 1 }
60 void getkey(void) {
61 1 STD = 1;
62 1 if (STD){
63 2 KeyTemp = keybord /0x10;
64 2 KeyTemp = keycode[KeyTemp];
65 2
66 2 key[nkey] = KeyTemp;
67 2
68 2 if ((KeyTemp == 0x0b) && (nkey == 0) )
69 2 set_sign = 1;
70 2
71 2 while (STD);
72 2 times3 = 0;
73 2 KeyACT = 1;
74 2 if((KeyTemp == 0x0c)&& !LineType)
75 2 polarity_bit = 1;
76 2 if(nkey < 20)nkey++; //防止ram数据存储溢出
77 2 ShowLCD(0,0,&key[nkey-1],nkey);
78 2 }
79 1 }
80
81 //#pragma OPTIMIZE(6,speed) //the funcion以9极优化,空间压缩为主
82 void clrbuf(){
83 1 uchar i;
84 1 polarity_bit = 0;
85 1 scankey_bit = 0;
86 1 set_sign = 0;
87 1 nkey = 0;
88 1 Led2 = 1;
89 1 Led1 = 1;
90 1 for (i=0;i<20;i++)
91 1 key[i] = 0x00;
92 1 for (i=0;i<10;i++)
93 1 p[i] = 0x00;
94 1
95 1 }
96 /*
97 设定长途计费单位 00 (<60 ,>0;)
98 设定长途计费方式:(N+1) 01
99 设定长途N费率 02
100 设定长途N后费率 03
101
102 设定短途计费单位 04
103 设定短途计费方式 05
104 设定短途N费率 06
105 设定短途N后费率 07
106
107 设定国际计费单位 08
108 设定国际单位计费费率 09
109 *#0000#-01#-
110
111 设定长途N费率 0x10
112 设定短途N费率 0x11
113 设定国际单位计费费率 0x12
114
115 #define changtu_unit 0
116 #define changtu_N 1
117 #define changtu_feilu_N 2
C51 COMPILER V7.10 MAIN 05/07/2006 17:33:51 PAGE 3
118 #define changtu_feilu 3
119 #define duantu_unit 4
120 #define duantu_N 5
121 #define duantu_feilu_N 6
122 #define duantu_feilu 7
123 #define guojiunit 8
124 #define guoji_feilu 9
125 #define password 0x10
126 */
127 void set_menu(void){
128 1 static uchar count;
129 1 if (!KeyACT)return;
130 1 if (!set_sign) return;
131 1 if (nkey == 1) count = 0;
132 1 KeyACT = 0;
133 1 switch (count){
134 2 case 0x00:
135 2 if (KeyTemp==0x0b)
136 2 count++;
137 2 else {
138 3 count = 0xff;
139 3 showerror();
140 3 }
141 2 break;
142 2 case 0x01:
143 2 if (KeyTemp == 0x0c)
144 2 count++;
145 2 else {
146 3 count = 0xff;
147 3 showerror();
148 3 }
149 2 break;
150 2 case 0x02:case 0x03:case 0x04:case 0x05:
151 2 key[count-2] = KeyTemp;
152 2 count ++;
153 2 break;
154 2 case 0x06:
155 2 if(KeyTemp != 0x0c){count =0xff;showerror();break;};
156 2 EEReadPage (&p[0], 0, password, 4);
157 2 if (key[0] != p[0]){count =0xff;showerror();break;}
158 2 if (key[1] != p[1]){count =0xff;showerror();break;}
159 2 if (key[2] != p[2]){count =0xff;showerror();break;}
160 2 if (key[3] != p[3]){count =0xff;showerror();break;}
161 2 showsucceed();
162 2 count++;
163 2 break;
164 2
165 2 case 0x07:
166 2 count ++;
167 2 key[0] = KeyTemp;
168 2 break;
169 2
170 2 case 0x08:
171 2 if (KeyTemp != 0x0c){count =0xff;showerror();break;}
172 2 switch(key[0]){
173 3
174 3 case 0x01:
175 3 count = changtu_N;
176 3 showsucceed();
177 3 break;
178 3 case 0x02:
179 3 count = duantu_N;
C51 COMPILER V7.10 MAIN 05/07/2006 17:33:51 PAGE 4
180 3 showsucceed();
181 3 break;
182 3 case 0x03:
183 3 count = guoji_N;
184 3 showsucceed();
185 3 break;
186 3 case 0x04:
187 3 count = password;
188 3 showsucceed();
189 3 break;
190 3 case 0x05:
191 3 count = modifytime;
192 3 showsucceed();
193 3 break;
194 3 case 0x06:
195 3 count = linetype;
196 3 showsucceed();
197 3 break;
198 3 }
199 2 break;
200 2 /*
201 2 设定长途费率
202 2 */
203 2 case changtu_N:
204 2 key[0] = KeyTemp;
205 2 count++;
206 2 break;
207 2 case changtu_N+1:
208 2 key[1] = KeyTemp;
209 2 count++;
210 2 break;
211 2 case changtu_N+2:
212 2 key[2] = KeyTemp;
213 2 count++;
214 2 break;
215 2 case changtu_N+3:
216 2 key[3] = KeyTemp;
217 2 count++;
218 2 break;
219 2 case changtu_N+4:
220 2 if(KeyTemp != 0x0c){count =0xff;showerror();break;};
221 2 EEWritePage(&key[0],0,changtu_N,4);
222 2 DELAY(0xff);
223 2 EEReadPage(&p[0],0,changtu_N,4);
224 2 if(key[0] != p[0]){count =0xff;showerror();break;};
225 2 if(key[3] != p[3]){count =0xff;showerror();break;};
226 2 showsucceed();
227 2 break;
228 2
229 2 /*
230 2 设定短途费率
231 2 */
232 2 case duantu_N:
233 2 key[0] = KeyTemp;
234 2 count++;
235 2 break;
236 2 case duantu_N+1:
237 2 key[1] = KeyTemp;
238 2 count++;
239 2 break;
240 2 case duantu_N+2:
241 2 key[2] = KeyTemp;
C51 COMPILER V7.10 MAIN 05/07/2006 17:33:51 PAGE 5
242 2 count++;
243 2 break;
244 2 case duantu_N+3:
245 2 key[3] = KeyTemp;
246 2 count++;
247 2 break;
248 2 case duantu_N+4:
249 2 if(KeyTemp != 0x0c){count =0xff;showerror();break;};
250 2 EEWritePage(&key[0],0,duantu_N,4);
251 2 DELAY(0xff);
252 2 EEReadPage(&p[0],0,duantu_N,4);
253 2 if(key[0] != p[0]){count =0xff;showerror();break;};
254 2 if(key[4] != p[4]){count =0xff;showerror();break;};
255 2 showsucceed();
256 2 break;
257 2
258 2 /*
259 2 设定国际费率
260 2 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -