📄 void putstr.txt
字号:
void Putstr(Uint x,Uchar y, char code *ptr, bit DispMode)
{
Uchar c1,c2, i,j,uCol,temp,tempD=0;
Uint k,uRow;
uRow = x;
uCol = y;
Write_Instruction( CsrDirD ); // 自动下移
Locatexy((Uchar)(uRow/8),uCol,0); //光标定位
for(i=0;(Uchar)ptr[i] >='\n';i++)
{
c1 = ptr[i];
c2 = ptr[i+1];
if(c1<0x80&&c1 >=' ') // ASCII
{
Write_Instruction( mWrite );
for(j=0;j<16;j++)
{
if(DispMode) //若反显
Write_Data(~ASC_MSK[(c1-0x20)*16 +j ]);
else //若正显
{
if(i)
Write_Data(ASC_MSK[(c2-0x20)*16 +j ]>>(Uchar)(uRow%8)|ASC_MSK[(c1-0x20)*16 +j ]<<(8-(Uchar)(uRow%8)));//
else
Write_Data(ASC_MSK[(c1-0x20)*16 +j ]>>(Uchar)(uRow%8));
}
}
uRow+=8; // 行加8
}
else if (c1>=0x80) // 中文
{
for(j=0;j<sizeof(Cdotlib)/sizeof(Cdotlib[0]);j++)// 查找定位
{
if((c1 == Cdotlib[j].Index[0]) && (c2 == Cdotlib[j].Index[1]))
break;
}
for(k=0;k<2;k++) // 分16行输出
{
Locatexy(uRow+k,uCol,0);
Write_Instruction( mWrite ); // 写数据(命令)
for(temp=0;temp<16;temp++)
{
if(DispMode)
Write_Data( ~Cdotlib[j].Msk[temp*2 + k]);
else
Write_Data( Cdotlib[j].Msk[temp*2 + k]);
}
}
uRow +=2; // 光标右移一大格
i++;
}
//判断是否换行
if(uRow >= 320||c1=='\n') // 光标后移
{
uCol += 16; // Y坐标
uRow = 0; // X坐标
if( uCol >= 240 )
uCol = 0;
}
Locatexy((Uchar)(uRow/8),uCol,0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -