📄 mb90092.c
字号:
if(i==0)
{
k=3;
}
else
{
k=1;
}
*/
disp_num(i,(2*y+1), n, 1, 1);
}
else
{
n=(uint)(message_group[2*y]);
n=n<<8;
n=n&0xff00;
j=message_group[2*y+1];
n=n+j;
/*
if(i==0)
{
k=3;
}
else
{
k=1;
}
*/
disp_num(i,(5+y), n, 1, 1);
}
}
}
/*---------------------------------------------*/
/*
目录显示
描述 :显示信息的前面部分字节作为目录
用户目前选中的条目反白显示,由计算得出
供用户选择使用的变量:read_block
wink_offset, self_newscount, pub_newscount
self_newscount
self_smalloffset-----个人最老信息的地址偏移位置
pub_newscount-----公用最老信息的地址偏移位置
pub_smallest记录的是最小的位置
*/
/*--------------------------------------------*/
void disp_detail()
{
char data i;
uchar data j;
send_byte(0xa2); //command 4
send_byte(0x2b);
i=self_newscount+pub_newscount-wink_offset;
if((i/8)<(self_newscount/8))
{
if(self_bigoffset>7) //在下面开始
{
j=self_bigoffset-i/8*8;
if(j>8)
{
for(i=j;i>(j-8);i--)
{
read_block=address_pointer+i*0x100;
Config_Word(j-i);
}
}
else
{
for(i=j;i>=0;i--)
{
read_block=address_pointer+i*0x100;
Config_Word(j-i);
}
for(i=15;i>(7-j);i--)
{
read_block=address_pointer+i*0x100;
Config_Word(j+15-i);
}
}
}
else //j<7,some messages offset in high zone
{
for(i=j;i>-1;i--)
{
read_block=address_pointer+i*0x100;
Config_Word(j-i);
}
//私人信息第一区域显示完成,显示第二区域;
for(i=15;i>(j-6);i--)
{
read_block=address_pointer+i*0x100;
Config_Word(j+16-i);
}
}
}
else if((i/8)==(self_newscount/8)) //有部分信息在私人区
{
j=self_bigoffset-i; //j = first begin offset
for(i=j;i>-1;i--)
{
read_block=address_pointer+i*0x100;
Config_Word(j-i);
}
//私人信息第一区域显示完成,显示公用信息
i=self_newscount-wink_offset; //代表已经显示的私人信息条数
if( pub_newscount>(8-i))
{
if(offset_biggest>(8-i))
{
for(j=offset_biggest;j>(offset_biggest-(8-i));j--)
{
read_block=0x000000+j*0x100;
Config_Word(i+offset_biggest-j);
}
}
else
{
for(j=offset_biggest;j>-1;j--)
{
read_block=j*0x100;
Config_Word(i+offset_biggest-j);
}
//公用信息第一区域显示完成,显示第二区域;
for(j=15;j>(7+i+offset_biggest);i--)
{
read_block=address_pointer+i*0x100;
Config_Word(16+i+offset_biggest-j);
}
}
}
}
else //no personal message
{
if(wink_offset>7)
{
if(offset_biggest>=(wink_offset-1)) //full of display in lineable
{
for(j=offset_biggest;j<(offset_biggest-(8-i));j--)
{
read_block=0x000000+j*0x100;
Config_Word(offset_biggest-j);
}
}
else
{
for(j=offset_biggest;j>-1;j--)
{
read_block=j*0x100;
Config_Word(offset_biggest-j);
}
//公用信息第一区域显示完成,显示第二区域;
for(j=15;j>(7+offset_biggest);i--)
{
read_block=address_pointer+j*0x100;
Config_Word(16+offset_biggest-j);
}
}
}
//not full of pub_message
else
{
for(j=offset_biggest;j>-1;j--)
{
read_block=(ulong)(j*0x100);
Config_Word(offset_biggest-j);
}
//公用信息第一区域显示完成,显示第二区域;
if(wink_offset>(offset_biggest+1))
{
for(j=15;j>(7+offset_biggest);i--)
{
read_block=address_pointer+j*0x100;
Config_Word(16+offset_biggest-j);
}
}
}
}
}
/*-----------------------------------------*/
/* 构置一幅完整的信息画面
描述:在已知read_block的情况下,需要显示完整画面
必须要带来的read_block,infonumber
*/
/*---------------------------------------*/
void Config_Screen()
{
bit Double_bit,puntuation_bit;
uchar data i,j,k,Line,Collum;
uint data temp,High_Char;
uchar xdata *mm;
j=(uchar)(read_block>>16);
P1=j;
AUXR=0x03;
Line=0;
Collum=2;
Double_bit=FALSE;
puntuation_bit=FALSE;
High_Char=0x0000;
mm=read_block+1;
k=*mm;
for(i=2;i<(k+2);i++)
{
AUXR=0x03;
mm=read_block+i;
j=*mm;
AUXR=0x00;
if(Double_bit) //双字节才是一个字
{
if(puntuation_bit)
{
j=j-0xa0;
puntuation_bit=FALSE;
}
temp=High_Char+j;
Double_bit=FALSE;
if(Collum>15)
{
Line++;
Collum=2;
disp_num(Line,Collum,temp,1,1);
}
else
{
Collum++;
disp_num(Line,Collum,temp,1,1);
}
}
else
{
if(j<0x9f)
{
temp=(uint)(j);
if(Collum>15)
{
Line++;
Collum=2;
disp_num(Line,Collum,temp,1,1);
}
else
{
Collum++;
disp_num(Line,Collum,temp,1,1);
}
}
else
{
if(j==0xa3)
{
j=0x00;
puntuation_bit=TRUE;
}
High_Char=(uint)(j);
High_Char=High_Char<<8;
Double_bit=TRUE;
}
}
}
}
/*------------------------------------------------*/
/* 主屏显示
描述:根据self_newscount, pub_newscount, wink_offset, address_pointer
的变量指示,计算出相应读取地址,根据
读取得字数,显示信息具体内容
*/
/*------------------------------------------------*/
void disp_main()
{
uchar data i;
send_byte(0xab);/*--------command 5----------*/
send_byte(0x00);
i=self_newscount+pub_newscount- wink_offset;
if(i<self_newscount) //in self messages zone
{
if(self_bigoffset>=i)//在下方
{
read_block=address_pointer+(self_bigoffset-i)*0x100;
Config_Screen();
}
else //在上方
{
read_block=address_pointer+(16+self_bigoffset-i)*0x100;
Config_Screen();
}
}
else //in pub messages zone
{
if(pub_bigoffset>=(i-self_newscount))
{
read_block=(uint)((pub_bigoffset-(i-self_newscount))*0x100);
Config_Screen();
}
else //
{
read_block=(16+pub_bigoffset-(i-self_newscount))*0x100;
Config_Screen();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -