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

📄 usart3_step_lcd.c

📁 通过微机串行口和ATmega128-100试验系统进行通信
💻 C
📖 第 1 页 / 共 2 页
字号:
   tmptail=(UART_RxTail+1)&UART_RX_BUFFER_MASK;
   UART_RxTail=tmptail;
   return UART_RxBuf[tmptail];
}
void TransmitByte(unsigned char data)
{  unsigned char tmphead;
   tmphead=(UART_TxHead+1)&UART_TX_BUFFER_MASK;
   while(tmphead==UART_TxTail);
   UART_TxBuf[tmphead]=data;
   UART_TxHead=tmphead;
   UCSR1B|=(1<<UDRIE);
}

int main(void)
{
	unsigned char data;
	unsigned int i,j;
	Initialize();
	initialize_text_lcd();
	
	DDRD=0Xf0;
	print_logo();
	while(1)
	{
		data=ReceiveByte();
		switch(data)
		{
			case '\r':TransmitByte('\r');
					   TransmitByte('\n');
					   print_prompt();
					   break;
			case '\n':TransmitByte('\r');
					   TransmitByte('\n');
					   print_prompt();
					   break;
			case 'f':
			case 'F':TransmitByte(data);
			          print_Message((unsigned char *)M_SELECT);
			          data=ReceiveByte();
					  if(data=='1')
					    {   TransmitByte(data);
					        print_Message((unsigned char *)M_Forward_JIASU);
					        data=ReceiveByte();
							if (data=='1')
							         {speed=50;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}
									break;}
						
							else if(data=='2')
							        {speed=40;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}
									break;}
									 
							else if(data=='3')
							       {speed=30;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}
									break;}
							else   {TransmitByte('\r');TransmitByte('\n');break;}
							
					     break; }    
					  
					  else if(data=='2')
					     { TransmitByte(data);
						   print_Message((unsigned char *)M_Forward_JIANSU);
					        data=ReceiveByte();
							if (data=='1')
							        {speed=60;TransmitByte(data);data=ReceiveByte();
                                    while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}
									}
							else if(data=='2')
							         {speed=70;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}
									break;}
							else if(data=='3')
							         {speed=80;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}
									break;}
							else   {TransmitByte('\r');TransmitByte('\n');break;}
							
					      break;   }
					  
					  else if((data=='\r')&&(data=='\n'))
						{
							TransmitByte('\r');
							TransmitByte('\n');
							break;
						}
						
					  else break;
			case 'b':
			case 'B':TransmitByte(data);
			          print_Message((unsigned char *)M_SELECT);
			          data=ReceiveByte();
					  if(data=='1')
					    {   TransmitByte(data); 
					        print_Message((unsigned char *)M_Backward_JIASU);
					        data=ReceiveByte();
							if (data=='1')
							         {speed=50;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}
									break;}
							          
							else if(data=='2')
							        {speed=40;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}
									break;}
									 
							else if(data=='3')
							        {speed=30;TransmitByte(data);data=ReceiveByte();
                                                 
									while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}
									break;}
							else   {TransmitByte('\r');TransmitByte('\n');break;}
							
					    break;}    
					  
					  else if(data=='2')
					     {TransmitByte(data);
						   print_Message((unsigned char *)M_Backward_JIANSU);
					        data=ReceiveByte();
							if (data=='1')
							       {speed=60;TransmitByte(data);data=ReceiveByte();
                                    while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}
									break;}
							else if(data=='2')
							       {speed=70;TransmitByte(data);data=ReceiveByte();
                                    while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}
									break;}
							else if(data=='3')
						        	{speed=80;TransmitByte(data);data=ReceiveByte();
                                    while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}
									break;}
							else   {TransmitByte('\r');TransmitByte('\n');break;}
							
					     break;}
					  
					  else if((data=='\r')&&(data=='\n'))
						{
							TransmitByte('\r');
							TransmitByte('\n');
							break;
						}
						
					  else break;
			
			case 's':
			case 'S':TransmitByte(data);delay(1000,1000);
			          print_Message((unsigned char *)M_SELECT1);
					  data=ReceiveByte();
					  if(data=='1')
					          {TransmitByte(data);			
					             print_Message((unsigned char *)SPEED);
					             i=0;
					             data=ReceiveByte();array[0]=data;
					             TransmitByte(data);data=ReceiveByte();array[1]=data;
					             TransmitByte(data);data=ReceiveByte();array[2]=data;
					             TransmitByte(data);data=ReceiveByte();
					             for(j=0;j<3;j++){array[j]=To_Numeric(array[j]);}
					             speed=array[0]*100+array[1]*10+array[2];
					             while(1){if(dir)go_step_1phase(speed);
									    else {dir=1;break;}}	
                                 }
                      else if(data=='2')
					             {TransmitByte(data);			
					             print_Message((unsigned char *)SPEED);
					             i=0;
					             data=ReceiveByte();array[0]=data;
					             TransmitByte(data);data=ReceiveByte();array[1]=data;
					             TransmitByte(data);data=ReceiveByte();array[2]=data;
					             TransmitByte(data);data=ReceiveByte();
					             for(j=0;j<3;j++){array[j]=To_Numeric(array[j]);}
					             speed=array[0]*100+array[1]*10+array[2];
					             while(1){if(dir)go_step_2phase(speed);
									    else {dir=1;break;}}	
                                 
					  	         }
					TransmitByte('\r');TransmitByte('\n');        
						         print_prompt();	
                      break;
            case  't':
			case  'T':TransmitByte(data);
                      print_Message((unsigned char *)M_SELECT1);
					  data=ReceiveByte();
					  if(data=='1')
					          {TransmitByte(data);
			                     print_Message((unsigned char *)HOUR);
								 data=ReceiveByte();hour1=data;
					             TransmitByte(data);data=ReceiveByte();hour2=data;
								 TransmitByte(data);data=ReceiveByte();
								 
								  print_Message((unsigned char *)MINUTE);
								 data=ReceiveByte();minute1=data;
					             TransmitByte(data);data=ReceiveByte();minute2=data;
								 TransmitByte(data);data=ReceiveByte();
								 
								 print_Message((unsigned char *)SECOND);
								 data=ReceiveByte();second1=data;
					             TransmitByte(data);data=ReceiveByte();second2=To_Numeric(data)+1+'0';
								 TransmitByte(data);data=ReceiveByte();
								 
                                 print_Message((unsigned char *)SPEED);
					             i=0;
					             data=ReceiveByte();array[0]=data;
					             TransmitByte(data);data=ReceiveByte();array[1]=data;
					             TransmitByte(data);data=ReceiveByte();array[2]=data;
					             TransmitByte(data);data=ReceiveByte();
					             for(j=0;j<3;j++){array[j]=To_Numeric(array[j]);}
					             speed=array[0]*100+array[1]*10+array[2];
								 initialize_timer();
								 }
                      else if(data=='2')
					             {TransmitByte(data);
			                     print_Message((unsigned char *)HOUR);
								 data=ReceiveByte();hour1=data;
					             TransmitByte(data);data=ReceiveByte();hour2=data;
								 TransmitByte(data);data=ReceiveByte();
								 
								  print_Message((unsigned char *)MINUTE);
								 data=ReceiveByte();minute1=data;
					             TransmitByte(data);data=ReceiveByte();minute2=data;
								 TransmitByte(data);data=ReceiveByte();
								 
								 print_Message((unsigned char *)SECOND);
								 data=ReceiveByte();second1=data;
					             TransmitByte(data);data=ReceiveByte();second2=To_Numeric(data)+1+'0';
								 TransmitByte(data);data=ReceiveByte();
								 
                                 print_Message((unsigned char *)SPEED);
					             i=0;
					             data=ReceiveByte();array[0]=data;
					             TransmitByte(data);data=ReceiveByte();array[1]=data;
					             TransmitByte(data);data=ReceiveByte();array[2]=data;
					             TransmitByte(data);data=ReceiveByte();
					             for(j=0;j<3;j++){array[j]=To_Numeric(array[j]);}
					             speed=array[0]*100+array[1]*10+array[2];
                                 initialize_timer3();
                                }
					TransmitByte('\r');TransmitByte('\n');        
						         print_prompt();	
                      break;
			case 'h':
			case 'H':TransmitByte(data);
					  print_Message((unsigned char *)M_Help);
					  print_prompt();
					  break;
			case 'q':
			case 'Q':TransmitByte(data);print_Message((unsigned char *)M_thank);
			          TransmitByte('\r');TransmitByte('\n');break;
			default :TransmitByte(data);break;
		}
	}
}

void print_logo(void)
{
	unsigned int i;
	for(i=0;;i++)
	{
		if(PRG_RDB(logo+i)=='\0')
			break;
		TransmitByte(PRG_RDB(logo+i));
	}
	print_prompt();
}

void print_prompt(void)
{
	unsigned int i;
	for(i=0;;i++)
	{
		if(PRG_RDB(prompt+i)=='\0')
			break;
		TransmitByte(PRG_RDB(prompt+i));
	}
}


void print_Message(unsigned char *message)
{unsigned int i;
for(i=0;;i++)
{if(PRG_RDB(message+i)=='\0')
break;
TransmitByte(PRG_RDB(message+i));
}
}

unsigned int To_Numeric(unsigned char in_data)
  {if(in_data=='0')
  return 0;
  else if((in_data<='9')&&(in_data>='1'))
  return(unsigned int)(in_data-'1'+1);
  else if((in_data<='f')&&(in_data>='a'))
  return(unsigned int)(in_data-'a'+10); 
  else if((in_data<='F')&&(in_data>='A'))
  return(unsigned int)(in_data-'A'+10);
else
return 0; }

⌨️ 快捷键说明

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