📄 pinyin.lst
字号:
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 + -