智能车制作

标题: 初学STC89C52RC单片机,串口都发不出去,我太菜了!求高手帮忙! [打印本页]

作者: 嵌入式咨询师    时间: 2013-1-16 16:38
标题: 初学STC89C52RC单片机,串口都发不出去,我太菜了!求高手帮忙!
问题是这样的,小弟刚刚接触STC89C52RC单片机,买了一个核心板,然后看着网上的视频跟P89V51的用户手册,写了一个串口发送数据的小程序,通过串口线跟PC机上的串口调试助手通信,结果发不了,小弟查了好久了都没能发现是哪里的问题,程序很短的,麻烦有耐心又有耐心的前辈帮小弟看一下,小弟感激不尽!再次感谢!小弟在线等啊!
代码如下:
  1. void UART_Open(void)
  2. {
  3. /*先关闭串口中断*/
  4. ES = 0;

  5. /*使用串口的模式1(8位数据位,波特率可变),打开串口接收使能*/
  6. SCON = 0x50;

  7. /*用定时器0的自动装载(模式2)来实现串口波特率*/
  8. TMOD |= 0x02;
  9. TH0 = 0xFD;
  10. //TL0 = 0xFD;
  11. TL0 = 0xFD;
  12. TR0 = 1;

  13. /*使能串口中断*/
  14. ES = 1;
  15. EA = 1;
  16. }
  17. u8 UART_Write(u8 acWriteBuff[])
  18. {
  19. u8 cWriteCount = 0;

  20. /*如果缓冲区内无数据*/
  21. if(0 == acWriteBuff[0]) return 0;

  22. while(acWriteBuff[cWriteCount] !=0 )
  23. {
  24. SBUF = acWriteBuff[cWriteCount++];

  25. while(!TI);
  26. TI = 0;
  27. }
  28. }
  29. int main(int argc, char *argv)
  30. {
  31. UART_Open();

  32. UART_Write("hello,world!\n");

  33. while(1);

  34. return 0;
  35. }
复制代码



作者: wangyao19920204    时间: 2013-1-16 16:59
波特率可变是通过定时器1的溢出率来控制的,不是定时器0。你把定时器0换成定时器1试试
作者: 我爱小kb    时间: 2013-1-16 18:36
帮顶
作者: lx1122334    时间: 2013-1-17 17:04
慢慢来




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2