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

📄 uart.h

📁 这是电池检测仪的程序
💻 H
字号:

#include <string.h>


/*******************************************************************************************************
                                          UART0初始化程序   
设置串口0:9600,8,1,	接受发送允许,接收中断开                                          
*******************************************************************************************************/
void uart0_init(void){

  UBRR0H=0;  					
  UBRR0L=51;
  UCSR0A=0x00;
  UCSR0B=0x98;    
  UCSR0C=0x06;   
  
}  
   
/******************************************************************************************************** 
                                          多字节串口发送程序
发送FLASH数据
若内部发送时间超过500ms自动跳出
*********************************************************************************************************/
void mfputchar_0(unsigned char flash *p){	       	//串口0发送程序,发送多个AISC码,串口发送采用查询方式          
  				
  while (!(*p=='\0')){          	
    while ((UCSR0A&0x20)==0){}      		
    UDR0=*p;  
    p++; 
  } 
     
}     

unsigned char rev_data[12];
unsigned char state;


interrupt[19] uart0_rx(void){  
	static unsigned char i=0; 
	unsigned char temp;
	unsigned char p;
	
	temp=UDR0;   
	
	if(state==0){
		if(temp=='*'){
			state=1;	
			i=0;  
			rev_data[i]=temp;
			i++;
		}
	}
	else if(state==1){
		rev_data[i]=temp; 
		
		i++;
		if(i>10){  
			state=2;		
			p=0;   
			while(p<6){
				if((rev_data[4+p]>0x39)|(rev_data[4+p]<0x30))state=0;
		   		p++;
			}		
		}
	}
	else if(state==2){  
		if((strncmpf(rev_data,"*XG*",4)==0)&(rev_data[10]=='#')){
			//exgmm=(unsigned long int)(rev_data[4]-0x30)*100000+(unsigned long int)(rev_data[5]-0x30)*10000+(unsigned long int)(rev_data[6]-0x30)*1000+\\
//(unsigned long int)(rev_data[7]-0x30)*100+(unsigned long int)(rev_data[8]-0x30)*10+(unsigned long int)(rev_data[9]-0x30); 
			mfputchar_0("OK");
		}
		else if((strncmpf(rev_data,"*YC*",4)==0)&(rev_data[10]=='#')){
			//eycmm=(unsigned long int)(rev_data[4]-0x30)*100000+(unsigned long int)(rev_data[5]-0x30)*10000+(unsigned long int)(rev_data[6]-0x30)*1000+\\
//(unsigned long int)(rev_data[7]-0x30)*100+(unsigned long int)(rev_data[8]-0x30)*10+(unsigned long int)(rev_data[9]-0x30); 	
			mfputchar_0("OK");	
		}
		state=0;
	
	}
	else state=0;
}

⌨️ 快捷键说明

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