下边这个程序发送和接收老是不对,请问哪里有问题呢???
#include <c8051f340.h>
#define uchar unsigned char
#define uint unsigned int
/*****************************************************************
*端口初始化函数
*****************************************************************/
void PORT_Init (void)
{
XBR0 = 0x01;//端口I/O交叉开关寄存器0,UART TX0, RX0 连到端口引脚 P0.4 和 P0.5
XBR1 = 0x40;//端口I/O交叉开关寄存器1,交叉开关使能
P0MDOUT = 0x10;//P0.4为推挽输出,其他的为漏极开路输出
}
/****************************************************************
*UART0初始化函数
*****************************************************************/
void UART0_Init (void)
{
SCON0 |= 0x10;
CKCON = 0x01;
TH1 = 0x64; //波特率为9600
TL1 = TH1;
TMOD = 0x20;
TR1 = 1;//P235,定时器1运行控制,定时器1允许
TI0 = 1;//P235,中断1类型选择,INT1为边沿触发
}
/*****************************************************************
*主函数
*****************************************************************/
void main()
{
char g;
PCA0MD &= ~0x40;//关闭看门狗
OSCICN |= 0x03;//P126
PORT_Init();//端口初始化
UART0_Init();//UART0初始化
while(1)
{
while(RI0==0); //接收
g=SBUF0;
RI0=0;
if(g!='\0')
{ SBUF0=g;
while(TI0==0); //发送
TI0=0;
g='\0';
}
}
}
|