求单片机串口中断接收程序,急求!~~~
接受上位机通过串口传过来的汉字转化成的点阵数据,然后通过4片74HC595发送显示在一块16x16点阵屏上。“如何将数据全部接受进来,然后再显示”???...
接受上位机通过串口传过来的汉字转化成的点阵数据,然后通过4片74HC595发送显示在一块16x16点阵屏上。
“如何将数据全部接受进来,然后再显示”??? 展开
“如何将数据全部接受进来,然后再显示”??? 展开
1个回答
展开全部
快下班了,给你一个思维吧
声明一个数组来缓存数据,声明一个变量来顺序接收,在声明一个定时器中断变量来判断一帧数据是否接收完成.
unsigned char ucUartRecv_Arr[256];
unsigned char ucUartRecv_Cnt = 0; //顺序接收数据
unsigned char ucTimer0_Cnt = 0; //定时器1MS计数
unsigned char ucUartRecv_Flag = 0; //接收完成标志
void 定时器 1MS中断()
{
if(ucUartRecv_Flag != 0)
{
ucUartRecv_Flag --;
if(ucUartRecv_Flag == 0)
{
ucUartRecv_Flag = 1; //一帧数据接收完成标志
}
}
}
void 接收中断函数()
{
ucUartRecv_Flag = 3; //3MS 就说明接收完成
ucUartRecv_Arr[ucUartRecv_Cnt] = SBUF; //51为例
ucUartRecv++;
}
声明一个数组来缓存数据,声明一个变量来顺序接收,在声明一个定时器中断变量来判断一帧数据是否接收完成.
unsigned char ucUartRecv_Arr[256];
unsigned char ucUartRecv_Cnt = 0; //顺序接收数据
unsigned char ucTimer0_Cnt = 0; //定时器1MS计数
unsigned char ucUartRecv_Flag = 0; //接收完成标志
void 定时器 1MS中断()
{
if(ucUartRecv_Flag != 0)
{
ucUartRecv_Flag --;
if(ucUartRecv_Flag == 0)
{
ucUartRecv_Flag = 1; //一帧数据接收完成标志
}
}
}
void 接收中断函数()
{
ucUartRecv_Flag = 3; //3MS 就说明接收完成
ucUartRecv_Arr[ucUartRecv_Cnt] = SBUF; //51为例
ucUartRecv++;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询