📄 uart.c
字号:
//UART0 receive
char RXD_COEFFIENT; // 判断是否在接收修正系数标志位
char urx_data[4];
char RXDcount; // 接收到的数据个数
/**************************************************************************************
函数原型: void UART0RX(void)
函数功能: 通过UART0接受数据
调用函数:无
入口参数: 无
出口参数: 无
***************************************************************************************/
#if VERSION>126
#pragma vector=UART0RX_VECTOR
__interrupt void UART0RX(void)
#else
interrupt[UART0RX_VECTOR]void UART0RX(void)
#endif
{
/*
char rev_data;
char verify;
rev_data = RXBUF0;
_DINT();
//-----------------------------------------不是在接收修正系数------------------------------------------//
if(RXD_COEFFIENT==0)
{
if(rev_data==0xAA) //擦除存放系数的FLASH_B段
{
FLASH_CLR(ptrFCoefficient);
COEFFICIENT = 0; //不存在拟和系数
TXBUF0 = 0xFF;
while (!(IFG1 & UTXIFG0)); //判断是否可以禁止发送
}
else if(rev_data==0xBB) // 接受到修正系数头码,下面开始接收涡街口径和修正系数
{
ptrChCoefficient = (unsigned char *)FLASH_A;//存放流量拟和系数
RXD_COEFFIENT = 1; // 置接收修正系数标志
RXDcount = 0;
TXBUF0 = 0xFF;
while (!(IFG1 & UTXIFG0)); //判断是否可以禁止发送
}
}
//---------------------------------------接收涡街口径和修正系数--------------------------------------//
else
{
RXDcount++;
if((RXDcount%5==0)&&(RXDcount!=0))
{
verify = urx_data[0] ^ urx_data[1] ^ urx_data[2] ^ urx_data[3];
if(verify==rev_data)
{
for(i=0;i<4;i++)
{
Write_unchar_FLASH(ptrChCoefficient,urx_data[i]);
ptrChCoefficient++;
}
TXBUF0 = 0xFF;
while (!(IFG1 & UTXIFG0)); //判断是否可以禁止发送
if(RXDcount==15)
{
Write_unchar_FLASH(ptrChCoefficient,0xAA);
ptrFCoefficient = (float *)FLASH_A; //指向存放流量上限的地址
RXD_COEFFIENT = 0;
COEFFICIENT = 1;
Diameter = *ptrFCoefficient;
Meter_coeffient = *(ptrFCoefficient+1);
Density = *(ptrFCoefficient+2);
}
}
else
{
TXBUF0 = 0xEE;
while (!(IFG1 & UTXIFG0));//判断是否可以禁止发送
RXDcount -= 5;
}
}
else
{
urx_data[RXDcount%5-1] = rev_data;
}
}
_EINT();
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -