|
写了一个简单的uart程序 在接收端显示发送端发送的数据 但后来发现发送的是6但接收端总是显示0 后来调试发现:
1.接收端给*P_UART_Data赋值6 但*P_UART_Data仍为0 即赋值不成功 而且即使没有发送接收端也会显示0
2.在发送端*P_UART_Command2有时正常等于0x0040 但有时等于0x00f1
3.在发送端*P_UART_Command2有时正常等于0x0080 但有时等于0x00b1
程序如下 大家帮忙给看一下 指点一下 不胜感激
发送端:
#include"SPCE061A.h"
void main()
{
unsigned int key,i;
*P_SystemClock=0x10; //Fosc=24.576MHz
*P_UART_Command1=0x20;//内部复位
*P_IOB_Dir=0x0400; //初始化IOB口
*P_IOB_Attrib=0x0480;
*P_IOB_Data=0x0400;
*P_UART_BaudScalarLow=0x00;//波特率设置为9600bps
*P_UART_BaudScalarHigh=0x05;
*P_UART_Command1=0x0C;
*P_UART_Command2=0x0040;
while(1)
{
key=*P_IOA_Data;
key=key*0x0001;
if(key==1)
{
i=*P_UART_Command2;
i=i&0x0040;
while(i==0)
{
i=*P_UART_Command2;
i=i&0x0040;
*P_Watchdog_Clear=1;
}
*P_UART_Data=0x06;
}
*P_Watchdog_Clear=1;
}
}
接受端:
#include"spce061a.h"
#include"1602LCD.h"
void main()
{ unsigned int i,data;
*P_SystemClock=0x10; //Fosc=24.576MHz
*P_UART_Command1=0x20;//内部复位
*P_IOB_Dir=0x0400; //初始化IOB口
*P_IOB_Attrib=0x0480;
*P_IOB_Data=0x0400;
*P_UART_BaudScalarLow=0x00;//波特率设置为9600bps
*P_UART_BaudScalarHigh=0x05;
*P_UART_Command1=0x00;
*P_UART_Command2=0x0080;
i=*P_UART_Data;
init_LCD();
clear_LCD();
while(1)
{
i=*P_UART_Command2;
i=i&0x0080;
while(i==0)
{
i=*P_UART_Command2;
i=i&0x0080;
*P_Watchdog_Clear=0x0001;
}
data=*P_UART_Data;
gotoxy(0,0);
display_LCD_number(data);
*P_Watchdog_Clear=0x0001;
}
}
|
|