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

📄 mb90092.c

📁 输出视频的字符的软件
💻 C
📖 第 1 页 / 共 2 页
字号:
                          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 + -