📄 text1.lst
字号:
287 void qian(void); //列表前选
288
289 void hou(void); //列表后选
290
291 void qing(void); //清空底层
292
293 uchar keyscan(void); //键盘扫描
294
295 void qiehuan(void); //切换输入法
296
297 /**********清除显屏(清除显示内存)***********/
298 void clear_screen_12864()
299 {
300 1 unsigned char i,j;
301 1 cs1_12864 =0;cs2_12864=1; /**清除左屏**/
302 1 for(i=0;i<8;i++)
303 1 {
C51 COMPILER V7.20 TEXT1 07/15/2007 16:48:55 PAGE 6
304 2 write_command_12864 (row_12864 +i);
305 2 write_command_12864 (col_12864 +0); //列地址0
306 2 for(j=0;j<64;j++)
307 2 write_data_12864 (0x00); //每做一次写操作,列地址加1
308 2 }
309 1 cs1_12864 =1;cs2_12864 =0; /**清除右屏**/
310 1 for(i=0;i<8;i++)
311 1 {
312 2 write_command_12864(row_12864 +i);
313 2 write_command_12864(col_12864+0); //列地址0
314 2 for(j=0;j<64;j++)
315 2 write_data_12864(0x00); //每做一次写操作,列地址加1
316 2 }
317 1 }
318
319 /***********延时1ms**************/
320 void delay_12864()
321 { unsigned int dy=500;
322 1 while(--dy);
323 1 }
324
325 /*************初始化LCD屏***************/
326 void init_lcd_12864()
327 {
328 1 clear_screen_12864();
329 1 cs1_12864=1;cs2_12864=0; //右屏
330 1 delay_12864();
331 1 write_command_12864(disp_off_12864);
332 1 write_command_12864(start_line_12864);
333 1 write_command_12864(disp_on_12864);
334 1 cs1_12864=0;cs2_12864=1; //左屏
335 1 delay_12864();
336 1 write_command_12864(disp_off_12864);
337 1 write_command_12864(start_line_12864);
338 1 write_command_12864(disp_on_12864);
339 1 }
340
341 /*******写指令到LCD*********/
342 void write_command_12864 (unsigned char cmdcode)
343 {
344 1 //lcd_busy();
345 1 di_12864 =0;
346 1 rw_12864 =0;
347 1 lcd_bus_12864 =cmdcode; //输入控制命令(display on/off,display startline,row,col)
348 1 enable_12864 =1;
349 1 _nop_();
350 1 enable_12864 =0;
351 1 }
352
353 /***********写显示的数据到LCD***********/
354 void write_data_12864 (unsigned char dispdata)
355 {
356 1 //lcd_busy();
357 1 di_12864 =1;
358 1 rw_12864 =0;
359 1 lcd_bus_12864 =dispdata;
360 1 enable_12864 =1;
361 1 _nop_();
362 1 enable_12864 =0;
363 1 }
364
365
C51 COMPILER V7.20 TEXT1 07/15/2007 16:48:55 PAGE 7
366 /**************键盘扫描************/
367 uchar keyscan(void)
368 {
369 1 uchar scancode,tmpcode;
370 1 P2 = 0xf0;
371 1 if ((P2&0xf0)!=0xf0)
372 1 {
373 2 delay_12864();
374 2 if ((P2&0xf0)!=0xf0)
375 2 {
376 3 scancode = 0xfe;
377 3 while((scancode&0x10)!=0)
378 3 {
379 4 P2 = scancode;
380 4 if ((P2&0xf0)!=0xf0)
381 4 {
382 5 tmpcode = (P2&0xf0)|0x0f;
383 5 return((~scancode)+(~tmpcode));
384 5 }
385 4 else scancode = (scancode<<1)|0x01;
386 4 }
387 3 }
388 2 }
389 1 return(0);
390 1 }
391
392
393 uchar change(uchar k)
394 {
395 1 switch(k)
396 1 {
397 2 case 0x22:return('2');
398 2 case 0x24:return('3');
399 2 case 0x41:return('4');
400 2 case 0x42:return('5');
401 2 case 0x44:return('6');
402 2 case 0x81:return('7');
403 2 case 0x82:return('8');
404 2 case 0x84:return('9');
405 2 }
406 1 }
407
408 void attempt(uchar *in,uchar n)
409 {
410 1 struct index *ha,*hb;
411 1 uchar i,re;
412 1 re=cx;
413 1 cx=0;
414 1 if(n==1)
415 1 {
416 2 ha=find1;
417 2 hb=ha+sizeof(find1)/sizeof(find1[0]);
418 2 }
419 1 else if(n==2)
420 1 {
421 2 ha=find2;
422 2 hb=ha+sizeof(find2)/sizeof(find2[0]);
423 2 }
424 1 else if(n==3)
425 1 {
426 2 ha=find3;
427 2 hb=ha+sizeof(find3)/sizeof(find3[0]);
C51 COMPILER V7.20 TEXT1 07/15/2007 16:48:55 PAGE 8
428 2 }
429 1 else if(n==4)
430 1 {
431 2 ha=find4;
432 2 hb=ha+sizeof(find4)/sizeof(find4[0]);
433 2 }
434 1 else if(n==5)
435 1 {
436 2 ha=find5;
437 2 hb=ha+sizeof(find5)/sizeof(find5[0]);
438 2 }
439 1 else if(n==6)
440 1 {
441 2 ha=find6;
442 2 hb=ha+sizeof(find6)/sizeof(find6[0]);
443 2 }
444 1 while(ha<hb)
445 1 {
446 2 for(i=0;i<n;i++)
447 2 {
448 3 if(*(in+i)!=*((*ha).num+i))
449 3 {
450 4 break;
451 4 }
452 3 }
453 2 if(i==n&&cx<6)
454 2 {
455 3 p[cx]=ha;
456 3 cx++;
457 3 }
458 2 ha++;
459 2 }
460 1 if(cx==0)
461 1 {
462 2 cx=re;
463 2 length--;
464 2 }
465 1 }
466
467
468
469 void out()
470 {
471 1 uchar i,locx,locy,j,k,l,aa,bb,max,min;
472 1 aa=cs1_12864;
473 1 bb=cs2_12864;
474 1 if((cx*length)>16)
475 1 {
476 2 if(((staren+1)*length)<=16)
477 2 {
478 3 min=0;
479 3 max=cx;
480 3 while((max*length)>16)
481 3 max--;
482 3 }
483 2 else
484 2 {
485 3 max=cx;
486 3 min=cx;
487 3 while((min*length)>16)
488 3 min--;
489 3 }
C51 COMPILER V7.20 TEXT1 07/15/2007 16:48:55 PAGE 9
490 2 }
491 1 else
492 1 {
493 2 max=cx;
494 2 min=0;
495 2 }
496 1 cs1_12864=0;
497 1 cs2_12864=1;
498 1 locx=col_12864;
499 1 locy=row_12864+6;
500 1 for(l=min;l<max;l++)
501 1 {
502 2 for(i=0;i<length;i++)
503 2 {
504 3 k=0;
505 3 write_command_12864(locx);
506 3 write_command_12864(locy);
507 3 for(j=0;j<8;j++)
508 3 {
509 4 if(l==staren)
510 4 write_data_12864(~asc[(*(p[l]->zimu+i)-'a')*16+(k++)]);
511 4 else
512 4 write_data_12864(asc[(*(p[l]->zimu+i)-'a')*16+(k++)]);
513 4 }
514 3 locy++;
515 3 write_command_12864(locx);
516 3 write_command_12864(locy);
517 3 for(j=0;j<8;j++)
518 3 {
519 4 if(l==staren)
520 4 write_data_12864(~asc[(*(p[l]->zimu+i)-'a')*16+(k++)]);
521 4 else
522 4 write_data_12864(asc[(*(p[l]->zimu+i)-'a')*16+(k++)]);
523 4 }
524 3 if(locx>(col_12864+54))
525 3 {
526 4 cs1_12864=1;
527 4 cs2_12864=0;
528 4 locx=col_12864;
529 4 }
530 3 else
531 3 locx+=8;
532 3 locy--;
533 3 }
534 2 }
535 1 cs1_12864=aa;
536 1 cs2_12864=bb;
537 1 }
538
539
540 void outen(struct index *pz,uchar n)
541 {
542 1 uchar i,locx,locy,j,k,aa,bb;
543 1 aa=cs1_12864;
544 1 bb=cs2_12864;
545 1 cs1_12864=0;
546 1 cs2_12864=1;
547 1 locx=col_12864;
548 1 locy=row_12864+6;
549 1 for(i=0;i<n;i++)
550 1 {
551 2 k=0;
C51 COMPILER V7.20 TEXT1 07/15/2007 16:48:55 PAGE 10
552 2 write_command_12864(locx);
553 2 write_command_12864(locy);
554 2 for(j=0;j<8;j++)
555 2 {
556 3 write_data_12864(asc[(*(pz->zimu+i)-'a')*16+(k++)]);
557 3 }
558 2 locy++;
559 2 write_command_12864(locx);
560 2 write_command_12864(locy);
561 2 for(j=0;j<8;j++)
562 2 {
563 3 write_data_12864(asc[(*(pz->zimu+i)-'a')*16+(k++)]);
564 3 }
565 2 locx+=8;
566 2 locy--;
567 2 }
568 1 cs1_12864=aa;
569 1 cs2_12864=bb;
570 1 }
571
572
573 void qing()
574 {
575 1 uchar i,aa,bb;
576 1 aa=cs1_12864;
577 1 bb=cs2_12864;
578 1 cs1_12864=0;
579 1 cs2_12864=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -