单片机串口程序,单片机只能发送不能接收?为什么?

2019-07-15 17:45发布

初始化,硬件和连线是没有问题的,因为用其他串口范例程序能够发送和接受。感觉是do...while语句有问题。

//串口试验程序
  /*电脑向单片机发送数据,单片机返回该数据给电脑*/

#include<c8051f310.h>
#define SYSCLK  24500000
#define BUADRATE 9600

void SYSCLK_Init(void);
void UART0_Init(void);
void PORT_Init(void);

void main(void)
{

   unsigned char temp;
   PCA0MD &= ~0x40;               
   PORT_Init();                  
   SYSCLK_Init ();                  
   UART0_Init();

do{
   while(RI0==0);
   temp=SBUF0;
   RI0=0;
   temp=SBUF0;
   while(ti0==0);
   TI0=0;
   }while(1);          
}

void PORT_Init(void)
{
  P0MDOUT = 0x10;//P0.4 digital push-pull uart TX
  XBR0    = 0x01; //Configure the crossbar and GPIO ports       
  XBR1    = 0x40;//P0.5 digital open-drain uart RX
}

//-------------------------------------------------------------------------------------
void SYSCLK_Init(void)
{
  OSCICN = 0x83;//internal oscillater  at it maximum frequncy
  RSTSRC = 0x04;//enable missing clock detecter
}
//--------------------------------------------------------------------------------------

void UART0_Init(void)
{
SCON0 = 0x00;              // SCON0: 8-bit variable bit rate
                            //        level of STOP bit is ignored
                            //        RX enabled
                            //        ninth bits are zeros
                            //        clear RI0 and TI0 bits


   CKCON = 0x00;
   TH1=0x96;
   TL1 = TH1;                          // Init Timer1
   TMOD &= ~0xf0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;                       
   TR1 = 1;                            // START Timer1
}  


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
坏水强
1楼-- · 2019-07-15 22:57
do{
   while(RI0==0);
   temp=SBUF0;
   RI0=0;
   SBUF= temp0;
   while(TI0==0);
   TI0=0;
   }while(1);         
}
还有就是f310单片机Uart端口初始化时要准许接收。
lixqiu
2楼-- · 2019-07-16 03:15
SCON0 = 0x00;              // SCON0: 8-bit variable bit rate
                            //        level of STOP bit is ignored
                            //        RX enabled
                            //        ninth bits are zeros
                            //        clear RI0 and TI0 bits

接收使能没打开
坏水强
3楼-- · 2019-07-16 04:28
lixqiu 发表于 2015-3-16 17:38
SCON0 = 0x00;              // SCON0: 8-bit variable bit rate
                            //        l ...

的确。。。。后来发现了。。。还是谢谢了

一周热门 更多>