📄 uart.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 + -