凌阳单片机串口通信程序。我程序只写了接受x1,但是用串口调试工具接受数据收到了无数个x1,求高手解答!

[复制链接]
查看11 | 回复1 | 2011-4-25 15:56:17 | 显示全部楼层 |阅读模式
#include"SPCE061a.h"

unsigned int tmp_data;
void UART_Init()
{
asm("INT OFF");//禁止IRQ和FIQ中断


*P_IOB_Dir=0x0400;


*P_IOB_Attrib=0x0480;


*P_IOB_Data=0x0000;


*P_UART_Command1=C_UART_Reset;//UART内部复位
*P_UART_BaudScalarHigh=0x00; //波特率设置115200


*P_UART_BaudScalarLow=0x6b;
*P_UART_Command1=0x80;//1000 0000 允许Rx中断



*P_UART_Command2=0xc0; //1100 0000控制字
asm("INT IRQ");


tmp_data=*P_UART_Data;
//清接收缓冲区(很必要)

}
char GetData()

{

tmp_data=*P_UART_Command2;

tmp_data=tmp_data&0x0080;

while(tmp_data==0)

{


tmp_data=*P_UART_Command2;


tmp_data=tmp_data&0x0080;


*P_Watchdog_Clear=C_WDTCLR;

}

return *P_UART_Data;

}
void SendData(char Data)

{


*P_Watchdog_Clear=0x0001;


tmp_data=*P_UART_Command2;

tmp_data=tmp_data&0x0040;//判断数据发送是否已经准备好

while(tmp_data==0)
//等待发送完毕

{

tmp_data=*P_UART_Command2;

tmp_data=tmp_data&0x0040;

*P_Watchdog_Clear=0x0001;

}

*P_UART_Data=Data;

*P_Watchdog_Clear=0x0001;

}
int main()

{

UART_Init();


while(1)


{


*P_Watchdog_Clear=C_WDTCLR;



}


return 0;

}
void IRQ7(void) __attribute__ ((ISR));

void IRQ7(void)

{
__asm("IRQ OFF");
SendData('x');//发送数据

SendData('1');
__asm("IRQ ON");
}

回复

使用道具 举报

千问 | 2011-4-25 15:56:17 | 显示全部楼层
发送完毕后加一条清发送缓冲寄存器的指令试试在while(tmp_data==0)
//等待发送完毕 {
在这里加;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行