打印

请教我的简单的串口发送程序怎么不成功

[复制链接]
2040|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
worf|  楼主 | 2009-7-4 15:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

波特率为2400
新手,只是向单片机发送一些字符。试了半天都不成功。是不是非要用中断处理才能成功?
#include <reg51.h>
void init_serialcomm(void)
{
    SCON= 0x50;        
    TMOD= 0x20;       
    TH1= 0xF3;       
 TL1=0xF3;
    TI=1;
    
}
void send_char_com(unsigned char ch)  
{
    SBUF=ch;
    while(TI==0);
    TI=0;    
}       
 
main()
{
 unsigned char i;
 init_serialcomm();    //初始化串口
  for(i=0;i<10;i++)
  {
    send_char_com(i); 
  }

相关帖子

沙发
xuyaqi| | 2009-7-4 16:07 | 只看该作者

接线对不对,晶振频率是多少,波特率对不对。

使用特权

评论回复
板凳
worf|  楼主 | 2009-7-4 17:02 | 只看该作者

对啊 晶振是12M的 波特率是2400,我的串口上没反应

使用特权

评论回复
地板
ningling_21| | 2009-7-4 17:34 | 只看该作者

晕,哪里有用12M晶振搞串口 的?

使用特权

评论回复
5
ayb_ice| | 2009-7-4 18:10 | 只看该作者

TR1 = 1?

使用特权

评论回复
6
harrytoo| | 2009-7-4 19:16 | 只看该作者

换晶振,或用更低的波特率试试。

使用特权

评论回复
7
wgww| | 2009-7-5 14:07 | 只看该作者

注释掉 ti=1;

注释掉 ti=1; ti为1时,不能发数据

使用特权

评论回复
8
mackay| | 2009-7-5 22:31 | 只看该作者

TI = 0

初始化时,TI = 0;

使用特权

评论回复
9
naren| | 2009-7-6 22:48 | 只看该作者

更改顺序

如5L所说,要开TR,再者,将发送函数更改如下:

void send_char_com(unsigned char ch)  
{
    while(TI==0);
    TI=0;  
    SBUF=ch;  
}     

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

22

帖子

0

粉丝