直接在Keil下仿真的T9拼音输入法完整版

上传人:鲁** 文档编号:484468994 上传时间:2023-09-19 格式:DOCX 页数:14 大小:70.84KB
返回 下载 相关 举报
直接在Keil下仿真的T9拼音输入法完整版_第1页
第1页 / 共14页
直接在Keil下仿真的T9拼音输入法完整版_第2页
第2页 / 共14页
直接在Keil下仿真的T9拼音输入法完整版_第3页
第3页 / 共14页
直接在Keil下仿真的T9拼音输入法完整版_第4页
第4页 / 共14页
直接在Keil下仿真的T9拼音输入法完整版_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《直接在Keil下仿真的T9拼音输入法完整版》由会员分享,可在线阅读,更多相关《直接在Keil下仿真的T9拼音输入法完整版(14页珍藏版)》请在金锄头文库上搜索。

1、直接在Keil下仿真的T9拼音输入法(完整版)来源:21IC侃单片机作者:xwj/*看到论坛上有人发 T9 拼音输入法,好多人感兴趣啊! 呵呵,也把我很久以前的程序找出来重新编译了一下,特点是直接在Keil下仿真,切换到串口窗口就可以直接看到结果。 希望大家喜欢哦 仿真步骤如下:1、把3个帖子的内容分别保存为51t9py.c,51t9py_indexa.h,5py_mb.h,放在同一目录下,将51t 9py.c加入工程编译2、由于Keil的模拟串口是单字节显示,汉字显示为乱码,所以要加挂RICHWIN或RichView 这种会重新刷新显示的中文平台,或手工刷新屏幕,所以请先到,安装运行3、在K

2、eil环境下可以直接按“Ctrl+F5”键仿真,按“F5”全速运行,切换到在串口依次输入:/64*.6 426*.5 98*.7 936.3 586.1 4826*.1 9464*.7 64*.6试试:-)4、 按键对应(根据我自己的手机设置的,全部在PC的小键盘操作):/Num/:上一拼音?*:下一拼音/7:pqrs 8:tuv 9:wxyz 前翻页/4:ghi 5:jkl 6:mno +:后翻页/1:? 2:abc 3:def 回车键:输入状态和选字状态切换/0:?.和空格及回车键:输入状态和选字状态切换/*/请把这个帖子的内容保存为51t9py.c/源程序大公开/(c) Copyrigh

3、t 20012003 xuwenjun/All Rights Reserved/V1.00/标题:T9拼音输入法模块/文件名: 51t9py.c/版 本: V1.00/修改人: 徐文军E-mail:/日 期: 05-4-8/描述:T9拼音输入法模块/声 明: /以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处. /如用于商业用途请与作者联系. E-mail: / 有问题请 mailto 欢迎与我交流!/老版本: 无老版本文件名: /创建人: 徐文军E-mail: /日期: 02-11-05 /描述:/1、很久以前的程序,根据网友张凯、李强的51py输入法子程序改编,/增加索引、

4、完善主程序、测试程序,使之在Keil下直接仿真 /2、在Keil环境下可以直接按“Ctrl+F5”键仿真,切换到在串口依次输入:/64*.6 426*.5 98*.7 936.3 586.1 4826*.1 9464*.7 64*.6试试:-) /3、由于Keil的模拟串口是单字节显示,汉字显示为乱码,所以要加挂/ RICHWIN或RichView这种会重新刷新显示的中文平台,或手工刷新屏幕/ (RichView 可以到)/4、按键对应(根据我自己的手机设置的,全部在PC的小键盘操作):/ Num/:上一拼音?*:下一拼音/ 7:pqrs 8:tuv 9:wxyz -:前翻页/ 4:ghi 5

5、:jkl 6:mno +:后翻页/1:? 2:abc 3:def 回车键:输入状态和选字状态切换/0:?.和空格及回车键:输入状态和选字状态切换/#include#include#includePY_mb.h/#include51t9_MB.h#include51t9py_indexa.h#define CNTLQ0x11#define CNTLS0x13#define DEL0x7F#define BACKSPACE 0x08#define CR0x0D#define LF0x0Aunsigned char cpt9PY_Mblen;struct t9PY_index code * cpt9

6、PY_Mb16;unsigned char t9PY_ime(char *strInput_t9PY_str)struct t9PY_index *cpHZ,*cpHZedge,*cpHZTemp;unsigned char i,j,cInputStrLength;cpt9PY_Mblen=0;/完全匹配组数j=0;/j 为匹配最大值cInputStrLength=strlen(strInput_t9PY_str); /输入拼音串长度/ if(*strInput_t9PY_str=0)return(0);/如果输入空字符返回 0/cpHZ=&(t9PY_index20); /查首字母索引/ c

7、pHZedge=t9PY_index2+sizeof(t9PY_index2)/sizeof(t9PY_index20);/ strInput_t9PY_str+;/指向拼音串第二个字母/while(cpHZ cpHZedge)/待查询记录条数for(i=0;i j)j=i+1; /j 为匹配最大值cpHZTemp=cpHZ;break;/发现字母串不配, 退出 /if(i=cInputStrLength) & (cpt9PY_Mblen 0) return (*(cpt9PY_Mb0).PY_mb);elsereturn (PY_mb_space);void t9PY_Test(void)b

8、it PYEnter=0;bit HZok=0;unsigned char temp;/ unsigned char temp2;unsigned char t9PYn=0;char idata inline16=0x00; idata char chinese_word3= ;char tempchar,Add=0,i=0; struct t9PY_index *cpTemp;/ cpTemp=t9PY_index2;/ printf (n按键/:上一拼音*:下一拼音.和空格及回车键:输入状态和选字状态切换n);/printf (请按键:2-abc 3-def 4-ghi 5-jkl 6-m

9、no 7-pqrs 8-tuv 9-wxyz n);/while(!HZok)tempchar=getchar();switch (tempchar)/case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:if (PYEnter) inlinei=tempchar; i+;Add=0; t9PY_ime(inline); break;case /:if (t9PYn 0) t9PYn -;break;case *:t9PYn +;if (t9PYn =cpt9PY_Mblen) t9PYn -; break;

10、case -:if (Add = 12) Add -= 12;break;case =:case +:if (Add 0) i-; inlinei=0x00;Add=0; t9PY_ime(inline);/ cpTemp=cpt9PY_Mbt9PYn; break;/输入状态和选字状态切换/ case n:case .:casecase n:PYEnter 人=1;break;default :/ HZok=1;break;printf (r);if (PYEnter)printf (选);cpTemp=cpt9PY_Mbt9PYn;if(cpTemp != PY_mb_space) & (

11、tempchar=1) & (tempchar=9) HZok=1;t9PYn=0;printf (r);/printf (%sn,inline);chinese_word0=*(*cpTemp).PY_mb+Add+(tempchar-1)*2); chinese_word1=*(*cpTemp).PY_mb+Add+(tempchar-1)*2+1);printf (chinese_word);printf (n);else/printf (*(cpTemp).PY);printf (:);printf (*cpTemp).PY_mb+Add);/printf (n 拼音 1 2 3 4

12、5 6 7 8 9r);elseprintf (拼);for (temp=t9PYn;tempcpt9PY_Mblen;temp+)cpTemp=cpt9PY_Mbtemp;/temp2=(strlen(*(cpTemp).PY_mb)-Add)/2);/printf (%2bd:%02bd:,temp,temp2);printf (:);printf (*(cpTemp).PY);/ printf (*(cpTemp).PY_mb+Add);/printf (n);/printf (n);/以下为测试程序/#include #include #ifdef MONITOR51/* Debugging with Monitor-51 needs */char code reserve 3 _at_ 0x23;/* space for serial interrupt if */#endif/* Stop E

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号