📄 shumaguan2.lst
字号:
172 1 return 0;
173 1 }
174 /**********************************************************************
175 **函数功能:把数字的ASCII转换成整型 **
176 **参数:整型数 **
177 **返回:整型 **
178 **********************************************************************/
179 unsigned char transition(unsigned char kvalue)
C51 COMPILER V8.02 SHUMAGUAN2 10/26/2006 22:08:52 PAGE 4
180 {
181 1 if(kvalue>='0'&&kvalue<='9')
182 1 return (kvalue-'0');
183 1 else
184 1 return 0;
185 1 }
186 /**********************************************************************
187 **函数功能:键盘扫描功能 **
188 **参数:无 **
189 **返回:返回键值 **
190 **********************************************************************/
191 unsigned char key_scan(void)
192 {
193 1 unsigned char line,row,temp,a,b,kvalue;
194 1 temp=0xfe;
195 1 flag=0;
196 1 P1=0x0f;
197 1 P3=0xf0;
198 1 if((P1&0x0f)!=0x0f)
199 1 {
200 2 delay(10);
201 2 P1=0x0f;
202 2 if((P1&0x0f)!=0x0f)
203 2 {
204 3
205 3 delay(10);
206 3 for(line=0;line<5;line++) //进行行扫描
207 3 {
208 4 a=temp<<line;
209 4 b=temp>>(8-line);
210 4 P3=a|b;
211 4 P1=0x0f;
212 4 kvalue=P1&0x0f;
213 4 if(kvalue!=0x0f)
214 4 break;
215 4 }
216 3
217 3 P1=0x0f;
218 3 while((P1&0x0f)!=0x0f) //判断键弹起
219 3 {
220 4 }
221 3
222 3 if(kvalue==0x0e) //确定是第几列
223 3 row=0;
224 3 else if(kvalue==0x0d)
225 3 row=1;
226 3 else if(kvalue==0x0b)
227 3 row=2;
228 3 else if(kvalue==0x07)
229 3 row=3;
230 3 else
231 3 return 0;
232 3 return keyvalue[line][row];
233 3 }
234 2
235 2
236 2 }
237 1 return 0;
238 1 }
239
240 /**********************************************************************
241 **函数功能:在数码管上显示数据 **
C51 COMPILER V8.02 SHUMAGUAN2 10/26/2006 22:08:52 PAGE 5
242 **参数:整型数 **
243 **返回:无 **
244 **********************************************************************/
245 void display(int disnum)
246 {
247 1 int ge,shi,bai,qian,i,j;
248 1 int num[5]={0,0,0,0,10};
249 1 if(disnum<=9999)
250 1 {
251 2 ge=disnum%10;
252 2 shi=(disnum%100)/10;
253 2 bai=(disnum/100)%10;
254 2 qian=disnum/1000;
255 2 num[0]=ge;
256 2 num[1]=shi;
257 2 num[2]=bai;
258 2 num[3]=qian;
259 2 if(qian!=0)
260 2 {
261 3 for(i=0;i<4;i++)
262 3 {
263 4
264 4 P2=num_tab1[i]; //先送位码
265 4 P0=num_tab2[num[i]]; //再送段码
266 4 delay(1);
267 4 }
268 3 }
269 2 else
270 2 {
271 3 if(bai!=0)
272 3 {
273 4 for(i=0;i<3;i++)
274 4 {
275 5
276 5 P2=num_tab1[i];
277 5 P0=num_tab2[num[i]];
278 5 delay(1);
279 5 }
280 4 }
281 3 else
282 3 {
283 4 if(shi!=0)
284 4 {
285 5 for(i=0;i<2;i++)
286 5 {
287 6
288 6 P2=num_tab1[i];
289 6 P0=num_tab2[num[i]];
290 6 delay(1);
291 6 }
292 5 }
293 4 else
294 4 {
295 5 for(i=0;i<1;i++)
296 5 {
297 6 for(j=0;j<4;j++)
298 6 {
299 7 if(j==0)
300 7 {
301 8
302 8 P2=num_tab1[j];
303 8 P0=num_tab2[num[i]];
C51 COMPILER V8.02 SHUMAGUAN2 10/26/2006 22:08:52 PAGE 6
304 8 delay(1);
305 8 }
306 7 else
307 7 {
308 8
309 8 P2=num_tab1[j];
310 8 P0=num_tab2[num[4]];
311 8 delay(1);
312 8 }
313 7 }
314 6 }
315 5 }
316 4 }
317 3 }
318 2 }
319 1 else
320 1 ;
321 1 }
322 /**********************************************************************
323 **函数功能:延时时间 **
324 **参数:整型数 **
325 **返回:无 **
326 **********************************************************************/
327 void delay(unsigned int time)
328 {
329 1 int i;
330 1 int k;
331 1 for(i=0;i<time;i++)
332 1 for(k=0;k<100;k++);
333 1 }
334
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1392 ----
CONSTANT SIZE = 56 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 49 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -