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

📄 pinyin.lst

📁 程序是基于STC89C58的点阵屏显示程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 145   2                      return;
 146   2              }       
 147   1              for(i=0;i<7;i++)
 148   1                if(tmppy[i]!='\0')
 149   1                      pylong++;
 150   1                pylong++;
 151   1              i=tmppy[0]-'a'; //声母索引
 152   1      
 153   1              pyseek=pyidx[i]; //第一次索引
 154   1              if(i=='v'-'a')  return;
 155   1              else if(i==25) //最后一个字母
 156   1                      next_pyseek=firsthz;
 157   1              else if(i=='h'-'a')     next_pyseek=pyidx[i+2]; //h后面的i,没有以i的声母
 158   1              else if(i=='t'-'a')     next_pyseek=pyidx[i+3]; //t后面的u,v,没有以u,v开头的声母
 159   1              else 
 160   1                      next_pyseek=pyidx[i+1];
 161   1                                                                                                                       
 162   1      //根据拼音串的第一个字母确定查找的拼音串 //第二次索引
 163   1                      for(;pyseek<=next_pyseek;pyseek=pyseek+8)
 164   1                      {       
 165   2                              addr=pyseek+baseaddr;
 166   2                              for(j=0;j<6;j++)
 167   2                                      py.py[j]=readbyte(addr++);
 168   2                              for(k=0;k<pylong;k++)
 169   2                              {       
 170   3                                      if(py.py[k]!=tmppy[k])//||py.py[k]=='\0')
 171   3                                              break;
 172   3                              } 
 173   2                              if(k==pylong)
 174   2                              { 
 175   3                                      break;
C51 COMPILER V8.02   PINYIN                                                                04/10/2008 10:43:47 PAGE 4   

 176   3                              }       
 177   2                                              
 178   2                      }  
 179   1                      if(pyseek<next_pyseek) //找到了相应的拼音串,确定汉字位置及发此音的汉字个数
 180   1                 {
 181   2                      
 182   2                              bytmp=readbyte(addr++);
 183   2                              py.begin=bytmp;
 184   2                              py.begin=py.begin<<8;
 185   2                              bytmp=readbyte(addr++);
 186   2                              py.begin=py.begin+bytmp;
 187   2                              hzseek=py.begin;                                  
 188   2                              if(pyseek<firsthz-8) //非最后一个拼音,可通过索引确定汉字个数
 189   2                              {
 190   3                                      addr=addr+6;
 191   3                                      bytmp=readbyte(addr++);
 192   3                                      py.begin=bytmp;
 193   3                                      py.begin=py.begin<<8;
 194   3                                      bytmp=readbyte(addr);
 195   3                                      py.begin=py.begin+bytmp;
 196   3                                      maxcurhz=(py.begin-hzseek)>>1; 
 197   3                               }      
 198   2                      else //最后一个拼音的汉字个数
 199   2                              maxcurhz=hzsum-((hzseek-firsthz)>>1);
 200   2                }               
 201   1              else
 202   1                {
 203   2                      //无此拼音组合
 204   2                      maxcurhz=0;             
 205   2                      return;
 206   2                }
 207   1      }
 208          
 209          
 210          /////////////////////////////////////////////////////////////////////
 211          // 取汉字后更新当前页内容hzstring[] //
 212          ////////////////////////////////////////////////////////////////////
 213          
 214          void locate_hz()
 215          {
 216   1              short i=0,m=0;
 217   1              unsigned char  *wrstring=0;                                                                                              
 218   1              unsigned long xdata addr;
 219   1              wrstring=hzstring;
 220   1              for(i=0;i<8;i++)
 221   1                      *(hzstring+i)=0xa1;
 222   1              for(i=curhz,m=0;i<maxcurhz && m<4;i++,m++)//约束在显示范围内的处理m<hzdispwin   
 223   1              {
 224   2                      addr=hzseek+i*2+baseaddr; 
 225   2                      *wrstring=readbyte(addr++);
 226   2                      wrstring++;
 227   2                      *wrstring=readbyte(addr++);
 228   2                      wrstring++;
 229   2              }        
 230   1                                                
 231   1      }
 232          
 233          //查找拼音串pyasc[7]对应的汉字
 234          void pinyinchazi(unsigned char *py)
 235          {
 236   1      
 237   1         Input_py(py);
C51 COMPILER V8.02   PINYIN                                                                04/10/2008 10:43:47 PAGE 5   

 238   1         locate_hz();
 239   1         Readtodisp_hanzi(hzstring);
 240   1      
 241   1      } 
 242          
 243          /////////////////////////////////////////////////////////////////////////
 244          // 取汉字向回翻屏后更新页内容hzstring[] //
 245          /////////////////////////////////////////////////////////////////////////
 246          void Pre_hz()
 247          {
 248   1      
 249   1              if(curhz<4) //已翻到头
 250   1                      return;
 251   1       
 252   1      
 253   1                      curhz-=4;
 254   1                      locate_hz();
 255   1                      Readtodisp_hanzi(hzstring);
 256   1      
 257   1      }
 258          
 259          /////////////////////////////////////////////////////////////////////////
 260          // 取汉字向后翻屏后更新页内容hzstring[] //
 261          ////////////////////////////////////////////////////////////////////////
 262          void Next_hz()
 263          {
 264   1              if(curhz+4>=maxcurhz) //已是最后一屏
 265   1                      return;
 266   1              curhz+=4;
 267   1              locate_hz();
 268   1              Readtodisp_hanzi(hzstring);
 269   1      }
 270          
 271          void Choose_hz(unsigned char no)
 272          {
 273   1              if(hz_dis_geshu[page]<4)
 274   1              {                                                       
 275   2                      hz_dis[page][hz_dis_geshu[page]*2]=hzstring[no*2];
 276   2                      hz_dis[page][hz_dis_geshu[page]*2+1]=hzstring[no*2+1];
 277   2                      hz_dis_geshu[page]++;
 278   2                  
 279   2              } 
 280   1              Readtodisp_hanzi(hz_dis[page]);
 281   1              write_eight_byte(hz_dis[page],(0xee+page*2));   
 282   1      }
 283          
 284          
 285          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1594    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     78      13
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28      40
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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