?? ziku.c
字號:
/*************************************
文件名:ziku.c
功 能:處理編碼轉換和與字庫相關的操作
*************************************/
#include <W77C32.h>
#include <absacc.h>
#include "hal.h"
#include "ziku.h"
#include "unicode.h"
//把unicode碼轉換為其在GB2312字庫中的地址
ulong UNI2CBSP(uint hanzi)
{ulong abspad;
uchar x,y;
for(y=0;y<72;y++)
{for(x=0;x<96;x++)
{if(hanzi==Unicode[y][x])
{break;}
}
if(hanzi==Unicode[y][x])
break;
}
abspad=((ulong)(((y+0x0f)*94)+(x-1)))*32;
return(abspad);
}
//兩個ASCII碼轉為單字節
uchar DoubleAscii2Byte(uchar ValH,uchar ValL)
{
uchar cHigh,cLow;
if(ValH >= '0' && ValH <= '9')
{
cHigh = (ValH-'0')<<4;
}
else if(ValH >= 'A' && ValH <= 'F')
{
cHigh = (ValH-'A'+10)<<4;
}
else if(ValH >= 'a' && ValH <= 'f')
{
cHigh = (ValH-'a'+10)<<4;
}
else
cHigh = 0;
if(ValL >= '0' && ValL <= '9')
{
cLow = (ValL-'0');
}
else if(ValL >= 'A' && ValL <= 'F')
{
cLow = (ValL-'A'+10);
}
else if(ValL >= 'a' && ValL <= 'f')
{
cLow = (ValL-'a'+10);
}
else
cLow = 0;
return ((cHigh & 0xf0)+(cLow & 0x0f));
}
//設置分頁,獲取總線地址
uint DEAL_BANK(ulong zkad)
{PAGE0 = zkad&0x008000;
PAGE1 = zkad&0x010000;
PAGE2 = zkad&0x020000;
return((uint)zkad&0x7f);
}
//計算出最終的顯示數據
void GET_DISDATA(void)
{uint i;
uchar j;
for(i=0;i<datalen;i+=2)
{databuff[i/2]=DoubleAscii2Byte(databuff[i],databuff[i+1]);}
for(i=0;i<datalen/2;i+=2)
{for(j=0;j<32;j++)
disdata[i*16+j]=XBYTE[DEAL_BANK(UNI2CBSP((uint *)(&databuff)[i]))+j];
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -