⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实用的源码.c

📁 一组实用的C51源代码,不是我作的,在网站上载下来的,也许对大家有用,感谢作者
💻 C
📖 第 1 页 / 共 5 页
字号:
                        } //清完一个后,且换行,有空位,清掉该标志
                     } //当需要换行时   
                 lcdx=x;lcdy=y;
                 xszfhz('_',0);     //显示光标    
                 } //删除的是字母      
                goto bzpyinputyw;  //返回重新输入              
            case 20:            
                return inputlen;   //当按确认键返回时,返回输入数量    
            default:
              qdcx();
              goto bzpyinputyw;
        }  //键值处理
bzpyinputyw1:                      //正确显示字母后,通过提供信息选择         
        if((keyi==1)||(keyi==7)||(keyi==9)){
            lcdx=24;lcdy=96;        
            xsstr(pystry[keyi],0,5);      //显示5个可选字母
            lcdx=24+fxi;lcdy=96;        
            xsstr(pystry[keyi]+fxi,1,1);  //将所选字母返显 
            lcdy=96;                    
            lcdx=16;                      //和显示特殊字符首址一样
            xsnkb(8);                     //若提示信息前有其它,清掉 
        } //有5个字母可选,                      
        else if(keyi==0){ //特殊符号提示
            lcdx=16;lcdy=96;        
            xsstr(pyfhy,0,13);            //显示特殊符号 
            lcdx=16+fxi;lcdy=96;        
            xsstr(pyfhy+fxi,1,1);         //将所选的特殊符号反显
        } //特殊符号提示    
        else { //四个字符的显示
            lcdx=25;lcdy=96;        
            xsstr(pystry[keyi],0,4);      //显示四个字母的提示       
            lcdx=25+fxi;lcdy=96;        
            xsstr(pystry[keyi]+fxi,1,1);      //反显所选字母 
            lcdy=96;                    
            lcdx=16;                      //和显示特殊字符首址一样
            xsnkb(9);                     //若前面有信息,将之清掉
         }  //四个字符的显示 
bzpyinputyw2:                             //选择字母无效,反回来重新选择
        key=rbkey();
        switch(key){//选择提示的字母 
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
                if((keyi==1)||(keyi==7)||(keyi==9)){            
                    if((key>0)&&(key<6)) break;   //当选择12345时,正常   
                }    //如果为5个显示字母                                                  
                else if(keyi>0) {  //不是第一种情况,且大于0,即是正常四个字母显示
                    if((key>0)&&(key<5)) break;
                }    //正常的四个字母显示                                 
                else { //当为0时,即为特殊字符
                    if(key>0) break;        //特殊字符是,1到9都有效,
                }//当为0时,即为特殊字符
                qdcx();
                goto bzpyinputyw2;      //不满足以上条件时,即为无效数字,长响,返回
            case 16:
                if(bzpy<2) bzpy++;
                else bzpy=0;   //如果小于2,则加1,否则为0,返回到数字输入                
                lcdx=2;lcdy=96;
                xsnkb(0);     //将后面的部分全部显示空格
                goto bzpyinput1;        //重新显示中文或英文
            case 17:                //取消键,清掉当前字母提示,返回秤新输入
                lcdx=2;lcdy=96;
                xsnkb(0);
                goto bzpyinputyw;       //返回去重新开始英文输入                                  

             
            case 18:                    //左方向键
                if(fxi>0) fxi--;
                else qdcx();            //如果到头,则不动
                goto bzpyinputyw1;       //回去重新选择
            case 19:                     //右方向键
                if((keyi==1)||(keyi==7)||(keyi==9)){            
                    if(fxi<4) fxi++;            //5字母提示,01234  
                    else fxi=0;
                }    //如果为5个显示字母                                                  
                else if(keyi>0) {  //不是第一种情况,且大于0,即是正常四个字母显示
                    if(fxi<3) fxi++;   //当为四个字母显示时,0 123      
                    else fxi=0;
                }    //正常的四个字母显示                                 
                else { //当为0时,即为特殊字符
                    if(fxi<12) fxi++;    //0123456789 10 11 12
                    else fxi=0;
                }//当为0时,即为特殊字符                                                 
                goto bzpyinputyw1;      //回去重新显,并显法标标位置
            case 20:                    //确认键,直接进入下一列模拟数字选择,修改KEY
                key=fxi+1;              //和数字键选择相当 
                break;    
            default:
                qdcx();
                goto bzpyinputyw1;      //重新选择字母
        } //选择提示的字母 
bzpyinputywz:          //正确选择字母后,作上屏显示结果结果在KEYI和key中        
        if(inputlen>len-1){ //如果已经输入够数,再按数字键,不予处理
            qdcx();                    
            lcdx=2;lcdy=96;
            xsnkb(0);      //将原来显示的提供信息清掉,进入下一个字母的显示             
            goto bzpyinputyw;
        } //如果已经输入够数,再按数字键,不予处理 
        lcdx=x;lcdy=y;
        key--; 
        if(keyi>0){//正常的数字键,不是特殊符号
            pbuf[inputlen]=*(pystry[keyi]+key);
            xsstr(pystry[keyi]+key,0,1);     //在指定位置显示         
        } //正常的数字键,不是特殊符号
        else { //特殊的数字符号
            pbuf[inputlen]=*(pyfhy+key);
            xsstr(pyfhy+key,0,1);               //显示特殊符号 
        } //特殊的数字符号                                   
bzpyinputywz1:                    //用在+-*/.号的直接处理        
        x=lcdx;y=lcdy;        //重新取回输入的汉字            
        xszfhz('_',0);        //显示光标        
        inputlen++;           //记数自动加1       
        lcdx=2;lcdy=96;
        xsnkb(0);      //将原来显示的提供信息清掉,进入下一个字母的显示 
        goto bzpyinputyw;   //进入下一个字母的选择
    }//为英输入法
    else {//当为2时,为拼音输入,如果以后增加,则改成else if
bzpyinputpy:                       //拼音输入跳转位    
        key=rbkey();
bzpyinputpyd:                      //动态显示汉字时,再输入字母         
        switch(key){               //拼音输入键处理
            case 0:                //特殊符号,直接进入汉字选择状态,和汉字一样处理
              pch=pyfh;            //显示符号将首指针找到,相相于拼音输入找到              
              pyi=1;               //保证按取消键时,清掉
              fxi=0;             //方向键初始化为0              
              fyi=0;             //分页键初始化为0              
              goto bzpyhz2;        //直接进入汉字选择状态             
            case 2:
            case 3:    
            case 4:
            case 5:    
            case 6:
            case 7:    
            case 8:
            case 9:              
              keyi=key;               //保存字母序列 
              fxi=0;                  //初始化方向标志为0
              break;    
            case 16:
              if(bzpy<2) bzpy++;
              else bzpy=0;   //如果小于2,则加1,否则为0,返回到数字输入                
              goto bzpyinput1;     //重新显示中英文方式                          
            case 17:               //取消键,每按一次,当前位置的输入将删除
                lcdx=x;lcdy=y;
                xszfhz(' ',0);              //显示一个空格,将原来的光标清掉            
                if(inputlen<1) return 0;    //如果一个字母也没有输入,取消键退出
                inputlen--;                 //总长度自动减1
                if(pbuf[inputlen]>0xa0){
                    pbuf[inputlen]=0x20;        //给一个空格                               
                    inputlen--;
                    pbuf[inputlen]=0x20;        //给一个空格                               
                    if(x>1) x-=2;
                    else {
                        y-=16;
                        x=28;
                        key=1;
                        key=key<<(y/16);        //借用KEY暂存位比较值  因后面没有用KEY值
                        if(linestate&key){
                            x--;  //当有空格时,X值再减1
                            linestate=linestate^key;   //异或,清掉该位
                        } //清完一个后,且换行,有空位,清掉该标志
                    } //当换行时
                 lcdx=x;lcdy=y;
                 xszfhz('_',0);     //显示光标    
                 xszfhz(' ',0);
                 } //即要删除的是汉字
                 else {
                     pbuf[inputlen]=0x20;        //给一个空格                                     
                     if(x>0) x--;
                     else {
                         y-=16;
                         x=29;   
                         key=1;
                         key=key<<(y/16);        //借用KEY暂存位比较值  因后面没有用KEY值
                        if(linestate&key){
                            x--;  //当有空格时,X值再减1
                            linestate=linestate^key;   //异或,清掉该位
                        } //清完一个后,且换行,有空位,清掉该标志
                     } //当需要换行时   
                 lcdx=x;lcdy=y;
                 xszfhz('_',0);     //显示光标    
                 } //删除的是字母      
                goto bzpyinputpy;  //返回重新输入              
            case 20:                  //确认键处理,当输入拼音时,完成,当没有时,作编辑完成
              if(pyi>0) goto bzpyhz1; //字母输入完毕,开始查找汉字
              else{
                  return inputlen;    //返回输入长度  
               } //完成汉字输入,对输入汉字进行处理
            default:
            qdcx();
            goto bzpyinputpy;      //当不是有效键时,长响,重新输入           
        }                          //拼音输入键处理  
                                   //输入字母键,下面为选择字母
bzpyinputpy1:                      //拼音输入字母选择                                   
            lcdx=9;lcdy=96;
            xsnkb(16);             //字母选择前清掉
            lcdx=25;lcdy=96;
            xsstr(pystrp[keyi],0,4); //显示字母提供              
            lcdy=96;
            if((keyi==7)||(keyi==9)){
                lcdx=fxi+25;    
                xsstr(pystrp[keyi]+fxi,1,1);
            } //当为四个字母地,
            else {
                lcdx=fxi+26;    //三个字母,向后一个位置    
                xsstr(pystrp[keyi]+fxi+1,1,1);
            }//当为三个字母显示时                        
        key=rbkey();                 //有字母提供,按键选择                                   
        switch(key){//选择字母
            case 1:
            case 2:
            case 3:
            case 4:              
bzpyinputpy2:                    //通过确认键选择的,转到此处处理            
              if((keyi==7)||(keyi==9)) key--;    //当显示四个字母时,从0开始取地址,
              else if(key==4) {
                  qdcx();
                  goto bzpyinputpy1;             //重新选择数字键
                 } //当显示三个字母时,输入4无效,应长响               
              pybuf[pyi]=pystrp[keyi][key];  //取出输入的字母                            
              pyi++;  //下一次取字,就放在下一个位置
              lcdx=2;lcdy=96;
              xsstr(pybuf,0,6);        //显示输入字母
              lcdx=14;lcdy=96;
              xsnkb(0);                //将后面显示的清掉
              goto bzpyhz1;            //每输入一个字母,均进行一次比较,显示
            case 16:
              if(bzpy<2) bzpy++;
              else bzpy=0;   //如果小于2,则加1,否则为0,返回到数字输入                
              lcdx=2;lcdy=96;xsnkb(0);  //跳回之前将显示的提示清掉
              goto bzpyinput1;     //重新显示中英文方式                                      
            case 17:                   //当按取消键时,取消本次输入
              if(pyi<1){
                  lcdx=14;lcdy=96;xsnkb(0);  //清掉显示的字母提示
                  goto bzpyinputpy;          //清掉显示的字母,返回重新输入,            
               } //当按取消键时,一个字母也没有输入,则清掉,返回去重新显示
              else goto bzpyhz1;             //重新进入汉字提示状态   
            case 18:                     //向左方向键
                if(fxi>0) fxi--;
                else qdcx();
                goto bzpyinputpy1;        //回去重新选择字母                               
            case 19:                      //向右方向键                
                if((keyi==7)||(keyi==9)){
                    if(fxi<3) fxi++;      //实际显示的位置还是0123
                    else fxi=0;           //如果转一圈,则为1
                }//如果为四个字母显示
                else {                    
                    if(fxi<2) fxi++;      //实际显示的位置还是012
                    else fxi=0;                              
                } //三个字母显示                
              goto bzpyinputpy1;        //回去重新选择字母            
            case 20:                    //确认键,
            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -