写了一个简单的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;
}
}
不牛
看着你那有点像凌阳的16位机
偶没有用过
不过凌阳的这么封装库是很猥琐的
呵呵
还郁闷的是:你程序里没有注释,我也不了解凌阳的工作方式
所以哈。。。
很头痛,要是我会算命就好了
你的P_UART_Data指到哪里了?
没看到赋值,使用一个野指针?
好像没有什么人用凌阳的,我现在也是要用凌阳的开发了,我也刚接触,郁闷ing,找个问问高手的地方都没有
恩,是凌阳的。看看他那个什么教学的PDF就可以了,代码懒得看。串口通讯凌阳已经给打包的很够意思了。