?? 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 + -