___interrupt void uarrx_irq_handler()
{
static unsigned char temp = 0;
// puts("uarrx_irq_handler>>>>>\n\n\n");
if(UT1_CON & BIT(15)) //tpend
{
//发送数据完成
UT1_CON |= BIT(13);//TI清0
}
else if(UT1_CON & BIT(14)) //rpend
{
temp = UT1_BUF;
UT1_CON |= BIT(12);
//printf("%x", temp);
if(temp == 0xa1)
{//结束存储
uart_index = 0;
//printf("temp = %s\r\n", buff);
strtodex();
dextostr();
}
if(uart_index && uart_index < 10)
{
buff[uart_index - 1] = temp;//存储温度的数据
uart_index ++;
if(uart_index > 16)
uart_index = 0;
//printf("--------------uarrx_irq_handler0 =%x---------------\n",buff[uart_index - 1]);
}
if(temp == 0x2D)
{//开始存储
uart_index = 1;
memset(0x00, buff, 16);
//printf("------------------uarrx_irq_handler1---------------\n");
}
//接受数据完成
UT1_CON |= BIT(7) ; //清UT0_HRXCNT
}
else if(UT1_CON & BIT(11)) //otpend
{
//接受数据超时
UT1_CON |= BIT(10);
UT1_CON |= BIT(7) ; //清UT0_HRXCNT
}
}
串口接受数据,用buff数组存储需要的数据,2D开始存储,A1存储结束
最新推荐文章于 2024-09-03 10:45:49 发布