此帖出自微控制器 MCU论坛
最新回复
引用:
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx(void)
{do
{
temp[j]=RXBUF0;
j++;
}while(j==2);
flag=1;
}
发送0201还是只接收01,temp[1]默认为00了
怎么办啊
是我串口助手的问题吗
点发送数据0201计数显示加只1
用别的倒是加2,不过结果是一样的
你这个接收程序有问题。
首先,每次中断从RXBUF0接收缓冲区读数据,需要判通讯口是否完成接收。
其次,取完RXBUF0的数据后,只需要将下标变量加1后就退出中断程序,回到主程序(被中断处)中等待下一次中断。
所以,while循环等待j等于2后设置flag=1没有必要。改成这样:
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx(void)
{
while ((IFG1 & UTXIFG0) == 0); // USART0 TX buffer ready?
temp[j]=RXBUF0;
j++;
if (j ==2) flag=1;
}
详情
回复
发表于 2006-4-27 18:45
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||
|
||
| |
|
|
此帖出自微控制器 MCU论坛
| ||||
|
||||
| |
|
|
| |
|
|
此帖出自微控制器 MCU论坛
| ||||
|
||||
此帖出自微控制器 MCU论坛
| ||
|
||
此帖出自微控制器 MCU论坛
| ||||
|
||||
EEWorld Datasheet 技术支持