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

📄 text2.c

📁 漏气测试12864显示 MCU STC89C51芯片
💻 C
📖 第 1 页 / 共 2 页
字号:
            else goto end0;
    }

   }
   clr_12864();
   Cs1_12864=0;  Cs2_12864=1;
     show_cha_12864(0,0,ok[2]);  
	 show_cha_12864(0,16,ok[3]);  
     show_let_12864(2,24,time_let[x1]);
	 show_let_12864(2,32,ok1[1]);    
	 show_let_12864(2,40,time_let[x2]);
 	 show_let_12864(2,48,ok1[0]); 
      
   Cs1_12864=1;  Cs2_12864=0;


    show_cha_12864(0,32,ok[0]);  
	show_cha_12864(0,48,ok[1]); 
	show_cha_12864(2,0,ok[4]);  
    show_cha_12864(2,16,ok[5]);
	show_cha_12864(4,0,ok[6]);  
	show_cha_12864(4,16,ok[7]);
	show_cha_12864(6,0,ok[8]);  
	show_cha_12864(6,16,ok[9]);
	   

	  show_let_12864(2,32,time_let[3]);   
	  show_let_12864(2,40,time_let[1]);  
	  show_let_12864(2,48,time_let[5]);
	  show_let_12864(2,56,ok1[0]); 
	  
	          
	  for (i=4; i<6; i++) 
      {
		date1 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
		date2 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit0;
	   show_let_12864(4,i*8,time_let[date]);
	 }
	 	  for (i=6; i<8; i++) 
      
	  {
		date1 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
		date2 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit0;
	   show_let_12864(4,i*8,time_let[date]);  
	 }
	  Cs1_12864=0;  Cs2_12864=1;
		  for (i=0; i<2; i++) 
      
	  {
		date1 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
		date2 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit0;
	   show_let_12864(4,i*8,time_let[date]);   
	 }
	
	 for (i=2; i<4; i++) 
      
	  {
		date1 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
		date2 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit0;
	   show_let_12864(4,i*8,time_let[date]);   
	 }
	 Cs1_12864=1;  Cs2_12864=0;
	 for (i=4; i<6; i++) 

		  {
		date1 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
		date2 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
	   	if(date1==0&&date2==0)
	    date=1;
	    else  if(date1==1&&date2==1)
	    date=0;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit0;
	   show_let_12864(6,i*8,time_let[date]);  
	 }
	 for (i=6; i<8; i++) 
      
	  {
		date1 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
		date2 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
	   	if(date1==0&&date2==0)
	    date=1;
	    else  if(date1==1&&date2==1)
	    date=0;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit0;
	  show_let_12864(6,i*8,time_let[date]);    
	 }

	goto end0;

    RemExit0:
    {
	   Cs1_12864=1;  Cs2_12864=0;
show_cha_12864(0,32,ok[0]);  
	show_cha_12864(0,48,ok[1]); 
	 Cs1_12864=0;  Cs2_12864=1;
     show_cha_12864(0,0,ok[10]);  
	 show_cha_12864(0,16,ok[11]); 
		PX1=1;
		  
       	  EX0=1;  //打开INT0中断请求
		
        TF0=0;
        return; 
    } 
   end0:
  {
		PX1=1;
		  
       	  EX0=1;  //打开INT0中断请求
		
        TF0=0;
        return;  
    }


}


void RemIn(void) interrupt 2    using 0
{
    unsigned char i,j,date	,x1,x2;
	bit date1,date2;
    unsigned int temp;
	 EX0=0;
	  EX1=0;  //打开INT0中断请求

 TH0=0;
   TL0=0; 
   
      while (!RemPin); //等待高电平
    TR0=1;
    while (RemPin)  //等待低电平
        if (TF0==1)  goto end; //超时就退出;
    TR0=0;
    temp=TH0;
    temp=(temp<<8)+TL0;

    if (temp>18000 || temp<4000)   //判断同步码的宽度
    {
      
  goto end; 
    }
//同步码检测成功
  
   if (temp<18000 && temp>13000) 

   {
   x1=4;
   x2=7;
    for (i=0; i<3; i++) //解 3*8=24 位码 
    for (j=0; j<8; j++)
    {
        while (!RemPin);  //等待高电平
        TH0=0;
    TL0=0; 
  TR0=1;
        while (RemPin)  //等待低电平
            if (TF0==1) goto end; //超时就退出
  TR0=0;
        temp=TH0;
        temp=((temp<<8)+TL0);
       if (temp>1200 && temp<1800)
        { 
            receive[i]=receive[i]<<1;
            receive[i]=receive[i]+1; //保存 1
        }
        else if (temp>300 && temp<702)
            {
                receive[i]=receive[i]<<1;   //保存0
            }
            else goto end; 
    }

   }



	   if (temp<13000 && temp>8000) 
	  
   {x1=3;
   x2=3;
    for (i=0; i<3; i++) //解 3*8=24 位码 
    for (j=0; j<8; j++)
    {
        while (!RemPin);  //等待高电平
        TH0=0;
    TL0=0; 
  TR0=1;
        while (RemPin)  //等待低电平
            if (TF0==1) goto end; //超时就退出
  TR0=0;
        temp=TH0;
        temp=((temp<<8)+TL0);


  //      /*
        if (temp>800 && temp<1200)
        { 
            receive[i]=receive[i]<<1;
            receive[i]=receive[i]+1; //保存 1
        }
        else if (temp>200 && temp<600)
            {
                receive[i]=receive[i]<<1;   //保存0
            }
            else goto end; 
    }

   }


      if (temp<8000 && temp>4000) 

   {  x1=1;
      x2=5;
    for (i=0; i<3; i++) //解 3*8=24 位码 
    for (j=0; j<8; j++)
    {
        while (!RemPin);  //等待高电平
        TH0=0;
    TL0=0; 
  TR0=1;
        while (RemPin)  //等待低电平
            if (TF0==1) goto end; //超时就退出
  TR0=0;
        temp=TH0;
        temp=((temp<<8)+TL0);


  //      /*
        if (temp>300 && temp<900)
        { 
            receive[i]=receive[i]<<1;
            receive[i]=receive[i]+1; //保存 1
        }
        else if (temp>20&& temp<300)
            {
                receive[i]=receive[i]<<1;   //保存0
            }
            else goto end; 
    }

   }
   clr_12864();
   Cs1_12864=0;  Cs2_12864=1;
     show_cha_12864(0,0,ok[2]);  
	 show_cha_12864(0,16,ok[3]);  
     show_let_12864(2,24,time_let[x1]);
	 show_let_12864(2,32,ok1[1]);    
	 show_let_12864(2,40,time_let[x2]);
 	 show_let_12864(2,48,ok1[0]); 
      
   Cs1_12864=1;  Cs2_12864=0;


    show_cha_12864(0,32,ok[0]);  
	show_cha_12864(0,48,ok[1]); 
	show_cha_12864(2,0,ok[4]);  
    show_cha_12864(2,16,ok[5]);
	show_cha_12864(4,0,ok[6]);  
	show_cha_12864(4,16,ok[7]);
	show_cha_12864(6,0,ok[8]);  
	show_cha_12864(6,16,ok[9]);
	   

	  show_let_12864(2,32,time_let[4]);   
	  show_let_12864(2,40,time_let[3]);  
	  show_let_12864(2,48,time_let[3]);
	  show_let_12864(2,56,ok1[0]); 
	  
	          
	  for (i=4; i<6; i++) 
      {
		date1 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
		date2 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit;
	   show_let_12864(4,i*8,time_let[date]);
	 }
	 	  for (i=6; i<8; i++) 
      
	  {
		date1 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
		date2 = (bit)(receive[0] & 0x80);
		receive[0]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit;
	   show_let_12864(4,i*8,time_let[date]);  
	 }
	  Cs1_12864=0;  Cs2_12864=1;
		  for (i=0; i<2; i++) 
      
	  {
		date1 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
		date2 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit;
	   show_let_12864(4,i*8,time_let[date]);   
	 }
	
	 for (i=2; i<4; i++) 
      
	  {
		date1 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
		date2 = (bit)(receive[1] & 0x80);
		receive[1]<<= 1;
	   	if(date1==0&&date2==0)
	    date=0;
	    else  if(date1==1&&date2==1)
	    date=1;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit;
	   show_let_12864(4,i*8,time_let[date]);   
	 }
	 Cs1_12864=1;  Cs2_12864=0;
	 for (i=4; i<6; i++) 

		  {
		date1 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
		date2 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
	   	if(date1==0&&date2==0)
	    date=1;
	    else  if(date1==1&&date2==1)
	    date=0;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit;
	   show_let_12864(6,i*8,time_let[date]);  
	 }
	 for (i=6; i<8; i++) 
      
	  {
		date1 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
		date2 = (bit)(receive[2] & 0x80);
		receive[2]<<= 1;
	   	if(date1==0&&date2==0)
	    date=1;
	    else  if(date1==1&&date2==1)
	    date=0;
		else  if(date1==1&&date2==0)
	    date=10;
		else goto RemExit;
	  show_let_12864(6,i*8,time_let[date]);    
	 }

	goto end;
						 
    RemExit:
    {
	 Cs1_12864=1;  Cs2_12864=0;
     show_cha_12864(0,32,ok[0]);  
	show_cha_12864(0,48,ok[1]); 
	 Cs1_12864=0;  Cs2_12864=1;
     show_cha_12864(0,0,ok[10]);  
	 show_cha_12864(0,16,ok[11]); 
	  PX1=0;
	  EX0=1;
	  EX1=1;  //打开INT0中断请求

        TF0=0;
        return; 
    }

   end:
  {
	 PX1=0;
	 EX0=1;
	 EX1=1;  //打开INT0中断请求

     TF0=0;
     return; 
    }

  }



 
 void main(void)
{
   unsigned char i;
   unsigned char clk_time[3]={0x00,0x00,0x12};  //秒,分,时寄存器初始
   unsigned char  temp=0x80;       // 地址80:秒写入寄存器  
   write_1302(0x8e,0x00);             //WP=0 写操作
   for(i=0;i<3;i++)
   {
   write_1302(temp,clk_time[i]);
   temp+=2;
   }
   write_1302(0x8e,0x80);             //WP=1 写保护  
   
   ini_12864();       //初始化12864
   clr_12864();

    



    EA=1;

    IT0=1;  //设定INT1的触发方式为脉冲负边沿触发
    IT1=1;  //设定INT0的触发方式为脉冲负边沿触发
	EX0=1;  //打开INT1中断请求
    EX1=1;  //打开INT0中断请求
    TMOD=0x01;

   while(1)
   { 
	
  
;

   }  
}					

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -