关于UART的问题

穆特兰舍   2008-10-24 19:07 楼主
写了一个简单的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;
               
        }
               
}

回复评论 (12)

那么多指针变量都指到哪里了?
点赞  2008-10-24 19:11
那么多指针变量都指到哪里了?
点赞  2008-10-24 19:12
SPCE061A.h 中包含了
点赞  2008-10-24 19:17
又是让大伙做算命的。。。

呵呵
点赞  2008-10-24 19:50
大家帮帮忙 给看看啊
点赞  2008-10-27 21:19
四楼的看来很牛 帮帮给看看
点赞  2008-10-27 22:29
不牛

看着你那有点像凌阳的16位机

偶没有用过

不过凌阳的这么封装库是很猥琐的

呵呵

还郁闷的是:你程序里没有注释,我也不了解凌阳的工作方式

所以哈。。。

很头痛,要是我会算命就好了

点赞  2008-10-28 11:55
貌似凌阳什么都搞好了。没有用过。
点赞  2008-10-30 16:20
你的P_UART_Data指到哪里了?
没看到赋值,使用一个野指针?
点赞  2008-10-30 19:45
好像没有什么人用凌阳的,我现在也是要用凌阳的开发了,我也刚接触,郁闷ing,找个问问高手的地方都没有
点赞  2008-11-14 17:23
恩,是凌阳的。看看他那个什么教学的PDF就可以了,代码懒得看。串口通讯凌阳已经给打包的很够意思了。
点赞  2008-11-15 09:57
值不对,经常是波特率的问题
点赞  2008-11-15 09:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复