📄 uart.c
字号:
#include "iic.h"
///////////发送部分////////////
void putchar(unsigned char ch)
{
// ES=0;
TI=0;
SBUF=ch;
while(!TI);
TI=0;
// ES=1;
}
void UART_PrintStr(const char Head[])
{
unsigned char *ptr;
TxEN=1;
ptr=Head;
while(*ptr)
{
putchar(*ptr);
ptr+=1;
}
TxEN=0;
}
void UART_PrintNum(unsigned int dat)
{
unsigned char xdata i;
TxEN=1;
while(dat>=1000)
dat-=1000;
i=0;
while(dat>=100)
{
i++;
dat-=100;
}
i+='0';
putchar(i);
i=0;
while(dat>=10)
{
i++;
dat-=10;
}
i+='0';
putchar(i);
dat+='0';
putchar(dat);
putchar('\n');
TxEN=0;
}
////////////协议部分//////////
unsigned char xdata SendBuf[10];
void UART_Ack(unsigned char dat)
{
//对广播地址的不发响应
if(RecBuf[0]==0x00)
return;
TxEN=1;
putchar(0xff);
putchar(0x7f);//head
putchar(0x01);//destination id:主站地址0x01
putchar(MacAddr);//Source id
if(dat==0xff)
putchar(0xff);
putchar(dat);
putchar(0xff);
putchar(0x01);
TxEN=0;
}
unsigned char LastData=0;
unsigned char xdata RecBuf[128];
unsigned char RecCnt=0;
unsigned char RecTemp;//=0;//
void UART_ISR() interrupt INT_SOURCE_SERIAL using 2
{
if(RI)
{
RecTemp=SBUF;
if(LastData!=0xff)
{
RecBuf[RecCnt]=RecTemp;
LastData=RecTemp;
RecCnt++;
}
else if(LastData==0xff)
{
LastData=RecTemp;
if(RecTemp==0x7f)
RecCnt=0;//清空队列
else if(RecTemp==0x01)
NewPackage=1;
else if(RecTemp==0xff)
LastData=0x7f;
else
{
RecBuf[RecCnt]=RecTemp;
RecCnt++;
}
}
RI=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -