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

📄 新建 文本文档.txt

📁 在数据格式给定的前提下
💻 TXT
字号:
#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
#define  baudrate  0x0033 
unsigned char flag1=0x00;    //主模式标志
unsigned char flag2=0x00;    //从模式标志
unsigned char flag3=0x00;    //从模式标志
unsigned char temp;
unsigned char temp1;
unsigned char temp2;
unsigned char temp3;
unsigned char temp4;
unsigned char temp5;
unsigned char temp6;
unsigned char temp7;
unsigned char temp8;
unsigned char temp9;
unsigned char temp10;
//unsigned char temp;
//unsigned char temp;
//unsigned char temp;
//unsigned char temp;
#pragma  ctask delay_us
void delay_us(unsigned char d)
{
   while(d)
     {
	    asm("nop");
	    asm("nop");
	    d--;
	    asm("nop");
	    asm("nop");
	  }
	  return;
	  }        //延时时间=0.125*((d*8-1)+9)=(d+1)us

/*#pragma  ctask delay_1ms
void delay_1ms(void)
{
   unsigned  char i;
   for(i=1;i<=10;i++)
    {
	delay_us(99);
	}
}
#pragma  ctask delay_ms
void delay_ms(unsigned char b)
{
  unsigned char i;
   for(i=1;i<=b;i++)
    {
	delay_1ms();
	}
}*/
void delay_1ms(void)
{
 unsigned  char i=10;
 while(i)
   {
   delay_us(99);
   i--;
   }
   return;
}
void delay_ms(unsigned char b)
{
  while(b)
    {
	delay_1ms();
	b--;
	}
	return;
}
void delay_s(void)
{ unsigned char c=10;
  while(c)
    {
	delay_ms(100);
	c--;
	}
}
/*void delay_ms(unsigned char b)
{char h;
h=b;
}*/
void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0xFF;
 PORTB = 0x00;
 DDRB  = 0xFF;
 PORTC = 0x00;      //m103 output only
 DDRC  = 0xFF;
 PORTD = 0x00;
 DDRD  = 0x00;
 PORTE = 0x00;
 DDRE  = 0x00;
 PORTF = 0x00;
 DDRF  = 0x00;
 //PORTG = 0x00;
// DDRG  = 0x00;
}
void uart_init(void)  //baud率设置。。。
{
  SREG=0x80;
  UCSR0A=0x00;
  UCSR0B=0x90;
  UCSR0C=0x06;
  UBRR0H=(baudrate>>8);
  UBRR0L=baudrate;
}
#pragma interrupt_handler uart0_rx:19
void uart0_rx(void)    //串口0中断接收
{
 unsigned int i;
 unsigned char tmpRecv;
 
 EIMSK=0x00; 
 tmpRecv=UDR0;
 if(!(flag1&0x01))
   {
   if(!(flag2&0x01))
     {
	 if(tmpRecv==0x00)
	   {
	   temp1=tmpRecv;               ///////////jilu
	   PORTA|=BIT(0);
	   //delay_ms(100);
	   delay_s();
	   PORTA&=~BIT(0);
	   flag2|=BIT(0);
	   }
	 else
	   {
	   PORTC|=BIT(4);
	   //delay_ms(100);
	   delay_s();
	   PORTC&=~BIT(4);
	   }
	 }
   else if(!(flag2&0x02))
     {
	  if(tmpRecv==0x00)
	   {
	   temp2=tmpRecv;               ///////////jilu
	   PORTA|=BIT(0);
	   //delay_ms(100);
	   delay_s();
	   PORTA&=~BIT(0);
	   flag2|=BIT(1);
	   }
	  else 
	   {
	   PORTC|=BIT(4);
	   //delay_ms(100);
	   delay_s();
	   PORTC&=~BIT(4);
	   flag2&=~BIT(0);
	   }
	 }
   else if(!(flag2&0x04))
     {
	 if(tmpRecv==0x00)
	   {
	   temp3=tmpRecv;               ///////////jilu
	   PORTA|=BIT(0);
	   //delay_ms(100);
	   delay_s();
	   PORTA&=~BIT(0);
	   flag2|=BIT(2);
	   }
	 else
	   {
	   PORTC|=BIT(4);
	   //delay_ms(100);
	   delay_s();
	   PORTC&=~BIT(4);
	   flag2&=~BIT(0);
	   flag2&=~BIT(1);
	   }
	 }
   else if(!(flag2&0x08))
     {
	 PORTA&=~BIT(0);
	 if(tmpRecv==0x00)
	   {
	   temp4=tmpRecv;               ///////////jilu
	   PORTA|=BIT(0);   
	   //delay_ms(100);
	   delay_s();
	   PORTA&=~BIT(0);
	   flag2|=BIT(3);
	   }
	 else
	   {
	   PORTC|=BIT(4);
	   delay_ms(80);
	   PORTC&=~BIT(4);
	   flag2&=~BIT(0);
	   flag2&=~BIT(1);
	   flag2&=~BIT(2);
	   }
	   flag1|=BIT(0);
       flag2&=~BIT(0);
	   flag2&=~BIT(1);
	   flag2&=~BIT(2);
	   flag2&=~BIT(3); 
       PORTC|=BIT(0);
       //////delay_ms(300);
	   delay_s();
       PORTC&=~BIT(0);
	 }
   }
 else if(!(flag1&0x02))
   {
   temp=tmpRecv;
   //PORTC&=~BIT(1);
   if(!(flag2&0x10))
	   {
	   temp5=tmpRecv;               ///////////jilu
	    if(tmpRecv==0x00)
		  {
		   PORTA|=BIT(0);
		   flag2|=BIT(4);
		  }
		else if(tmpRecv==0x01)
		  {
		  PORTA|=BIT(1);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x02)
		  {
		  PORTA|=BIT(2);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x03)
		  {
		  PORTA|=BIT(3);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x04)
		  {
		  PORTA|=BIT(4);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x05)
		  {
		  PORTA|=BIT(5);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x06)
		  {
		  PORTA|=BIT(6);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x07)
		  {
		  PORTA|=BIT(7);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x08)
		  {
		  PORTB|=BIT(0);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x09)
		  {
		  PORTB|=BIT(1);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x0a)
		  {
		  PORTB|=BIT(2);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x0b)
		  {
		  PORTB|=BIT(3);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x0c)
		  {
		  PORTB|=BIT(4);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x0d)
		  {
		  PORTB|=BIT(5);
		  flag2|=BIT(4);
		  }
	    else if(tmpRecv==0x0e)
		  {
		  PORTB|=BIT(6);
		  flag2|=BIT(4);
		  }
		else if(tmpRecv==0x0f)
		  {
		  PORTB|=BIT(7);
		  flag2|=BIT(4);
		  }                              //判断
		 //delay_ms(100);
		 delay_s();
		 if(temp<=0x07)                  //######  //清除前一位,使之只有一位为零
		  {
		  PORTA&=~BIT(temp);
		  }
		else 
		  {
		  PORTB&=~BIT(temp-8); 
		  }
	  }
	else if(!(flag2&0x20))
	  {
		temp6=tmpRecv;               ///////////jilu
	    if(tmpRecv==0x00)
		  {
		   PORTA|=BIT(0);
		   flag2|=BIT(5);
		  }
		else if(tmpRecv==0x01)
		  {
		  PORTA|=BIT(1);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x02)
		  {
		  PORTA|=BIT(2);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x03)
		  {
		  PORTA|=BIT(3);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x04)
		  {
		  PORTA|=BIT(4);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x05)
		  {
		  PORTA|=BIT(5);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x06)
		  {
		  PORTA|=BIT(6);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x07)
		  {
		  PORTA|=BIT(7);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x08)
		  {
		  PORTB|=BIT(0);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x09)
		  {
		  PORTB|=BIT(1);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x0a)
		  {
		  PORTB|=BIT(2);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x0b)
		  {
		  PORTB|=BIT(3);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x0c)
		  {
		  PORTB|=BIT(4);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x0d)
		  {
		  PORTB|=BIT(5);
		  flag2|=BIT(5);
		  }
	    else if(tmpRecv==0x0e)
		  {
		  PORTB|=BIT(6);
		  flag2|=BIT(5);
		  }
		else if(tmpRecv==0x0f)
		  {
		  PORTB|=BIT(7);
		  flag2|=BIT(5);
		  }  
		//delay_ms(100);
		delay_s();
		if(temp<=0x07)                    ////#####//清除前一位,使之只有一位为零
		  {
		  PORTA&=~BIT(temp);
		  }
		else 
		  {
		  PORTB&=~BIT(temp-8);
		  }
		  flag1|=BIT(1);
		  flag2&=~BIT(4);
		  flag2&=~BIT(5); 
	      PORTC|=BIT(1);
		  ///////delay_ms(300);
		  delay_s();
		  PORTC&=~BIT(1);
		  PORTC|=BIT(2);                            
		  /////delay_ms(300);                       //发送两个信号
		  delay_s();
		  PORTC&=~BIT(2);
	  }  
   }
 else if(!(flag1&0x04))
   {
    //PORTC&=~BIT(2);
    temp=tmpRecv;
	 if(!(flag2&0x40))
	 {
	    temp7=tmpRecv;               ///////////jilu
	    if(tmpRecv==0x00)
		  {
		   PORTA|=BIT(0);
		   flag2|=BIT(6);
		  }
		else if(tmpRecv==0x01)
		  {
		  PORTA|=BIT(1);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x02)
		  {
		  PORTA|=BIT(2);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x03)
		  {
		  PORTA|=BIT(3);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x04)
		  {
		  PORTA|=BIT(4);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x05)
		  {
		  PORTA|=BIT(5);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x06)
		  {
		  PORTA|=BIT(6);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x07)
		  {
		  PORTA|=BIT(7);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x08)
		  {
		  PORTB|=BIT(0);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x09)
		  {
		  PORTB|=BIT(1);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x0a)
		  {
		  PORTB|=BIT(2);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x0b)
		  {
		  PORTB|=BIT(3);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x0c)
		  {
		  PORTB|=BIT(4);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x0d)
		  {
		  PORTB|=BIT(5);
		  flag2|=BIT(6);
		  }
	    else if(tmpRecv==0x0e)
		  {
		  PORTB|=BIT(6);
		  flag2|=BIT(6);
		  }
		else if(tmpRecv==0x0f)
		  {
		  PORTB|=BIT(7);
		  flag2|=BIT(6);
		  } 
		  //delay_ms(100);
		  delay_s();
		  if(temp<=0x07)                   //##### //清除前一位,使之只有一位为零
		  {
		  PORTA&=~BIT(temp);
		  }
		else 
		  {
		  PORTB&=~BIT(temp-8);
		  }
	   }
	else if(!(flag2&0x80))
	   {
	    temp8=tmpRecv;               ///////////jilu
	    if(tmpRecv==0x00)
		  {
		   PORTA|=BIT(0);
		   flag2|=BIT(7);
		  }
		else if(tmpRecv==0x01)
		  {
		  PORTA|=BIT(1);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x02)
		  {
		  PORTA|=BIT(2);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x03)
		  {
		  PORTA|=BIT(3);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x04)
		  {
		  PORTA|=BIT(4);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x05)
		  {
		  PORTA|=BIT(5);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x06)
		  {
		  PORTA|=BIT(6);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x07)
		  {
		  PORTA|=BIT(7);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x08)
		  {
		  PORTB|=BIT(0);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x09)
		  {
		  PORTB|=BIT(1);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x0a)
		  {
		  PORTB|=BIT(2);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x0b)
		  {
		  PORTB|=BIT(3);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x0c)
		  {
		  PORTB|=BIT(4);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x0d)
		  {
		  PORTB|=BIT(5);
		  flag2|=BIT(7);
		  }
	    else if(tmpRecv==0x0e)
		  {
		  PORTB|=BIT(6);
		  flag2|=BIT(7);
		  }
		else if(tmpRecv==0x0f)
		  {
		  PORTB|=BIT(7);
		  flag2|=BIT(7);
		  } 
	    //delay_ms(100);
		delay_s();
		if(temp<=0x07)                  //########  //清除前一位,使之只有一位为零
		  {
		  PORTA&=~BIT(temp);
		  }
		else 
		  {
		  PORTB&=~BIT(temp-8);
		  }
		  flag1|=BIT(2);
		  flag2&=~BIT(6);
		  flag2&=~BIT(7); 
	      PORTC|=BIT(1);
		  ///////////delay_ms(300);
		  delay_s();
		  PORTC&=~BIT(1);
		  PORTC|=BIT(2);  
		  ////////delay_ms(300);
		  delay_s();
		  PORTC&=~BIT(2); 
	   }  
     }
 else if(!(flag1&0x08))
   {
     temp=tmpRecv;
	 if(!(flag3&0x01))
	 {
	    temp9=tmpRecv;               ///////////jilu
	    if(tmpRecv==0x00)
		  {
		   PORTA|=BIT(0);
		   flag3|=BIT(0);
		  }
		else if(tmpRecv==0x01)
		  {
		  PORTA|=BIT(1);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x02)
		  {
		  PORTA|=BIT(2);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x03)
		  {
		  PORTA|=BIT(3);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x04)
		  {
		  PORTA|=BIT(4);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x05)
		  {
		  PORTA|=BIT(5);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x06)
		  {
		  PORTA|=BIT(6);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x07)
		  {
		  PORTA|=BIT(7);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x08)
		  {
		  PORTB|=BIT(0);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x09)
		  {
		  PORTB|=BIT(1);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x0a)
		  {
		  PORTB|=BIT(2);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x0b)
		  {
		  PORTB|=BIT(3);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x0c)
		  {
		  PORTB|=BIT(4);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x0d)
		  {
		  PORTB|=BIT(5);
		  flag3|=BIT(0);
		  }
	    else if(tmpRecv==0x0e)
		  {
		  PORTB|=BIT(6);
		  flag3|=BIT(0);
		  }
		else if(tmpRecv==0x0f)
		  {
		  PORTB|=BIT(7);
		  flag3|=BIT(0);
		  } 
		  //delay_ms(100);
		  delay_s();
		  if(temp<=0x07)                  ///######  //清除前一位,使之只有一位为零
		  {
		  PORTA&=~BIT(temp);
		  }
		else 
		  {
		  PORTB&=~BIT(temp-8);
		  }
	   }
	else if(!(flag3&0x02))
	   {
	    temp10=tmpRecv;               ///////////jilu
		if(tmpRecv==0x00)
		  {
		   PORTA|=BIT(0);
		   flag3|=BIT(1);
		  }
		else if(tmpRecv==0x01)
		  {
		  PORTA|=BIT(1);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x02)
		  {
		  PORTA|=BIT(2);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x03)
		  {
		  PORTA|=BIT(3);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x04)
		  {
		  PORTA|=BIT(4);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x05)
		  {
		  PORTA|=BIT(5);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x06)
		  {
		  PORTA|=BIT(6);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x07)
		  {
		  PORTA|=BIT(7);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x08)
		  {
		  PORTB|=BIT(0);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x09)
		  {
		  PORTB|=BIT(1);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x0a)
		  {
		  PORTB|=BIT(2);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x0b)
		  {
		  PORTB|=BIT(3);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x0c)
		  {
		  PORTB|=BIT(4);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x0d)
		  {
		  PORTB|=BIT(5);
		  flag3|=BIT(1);
		  }
	    else if(tmpRecv==0x0e)
		  {
		  PORTB|=BIT(6);
		  flag3|=BIT(1);
		  }
		else if(tmpRecv==0x0f)
		  {
		  PORTB|=BIT(7);
		  flag3|=BIT(1);
		  } 
	    //delay_ms(100);
		delay_s();
		if(temp<=0x07)                    //清除前一位,使之只有一位为零
		  {
		  PORTA&=~BIT(temp);
		  flag1=0x00;
		  flag2=0x00;
		  flag3=0x00;
		  }
		else 
		  {
		  PORTB&=~BIT(temp-8);
		  flag1=0x00;
		  flag2=0x00;
		  flag3=0x00;
		  }
	      PORTC|=BIT(1);
		  //////delay_ms(300);
		  delay_s();
		  PORTC&=~BIT(1);
		  PORTC|=BIT(2);  
		  //////delay_ms(300);
		  delay_s();
		  PORTC&=~BIT(2); 		  
	   }  
     }
}
void main(void)
{
 port_init();
 uart_init();
 //SEI();
 for(;;)
  ;
}

⌨️ 快捷键说明

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