打印

单片机串口程序没反应不知道怎么回事

[复制链接]
826|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
damoyeren|  楼主 | 2014-12-11 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;


uchar *p="shanxi gelanfu ";

void uart_init() //波特率:9600 无校验位
{
SCON = 0X50;//串口工作在方式1,允许接受
TMOD = 0X20;//定时器T1工作在方式2,自动重装模式
TH1 = 0XFD;
TL1 = 0XFD;//9600波特率预装初值
TR1 = 1;
}

void uart_send(uchar *dat)
{
if(!TI)
{
if (*dat!='\0')
SBUF = *dat;
}
else
TI = 0;
}

void main ()
{
uart_init();
while(1)
{
uart_send(p);
}
}


相关帖子

沙发
ningling_21| | 2014-12-11 09:20 | 只看该作者
查询发送用while()  等待发送结束

不能用 if ()

使用特权

评论回复
板凳
ayb_ice| | 2014-12-11 10:07 | 只看该作者
void uart_send(uchar *dat)
{
        // if(!TI)
        // {
                // if (*dat!='\0')
                        // SBUF = *dat;
        // }
        // else
                // TI = 0;
        while(1){
                char t;
                while(!TI){
               
                }
                TI = 0;
               
                t = *dat++;
                if(t != '\0'){
                        SBUF = t;
                }else{
                        break;
                }
        }
}

使用特权

评论回复
地板
damoyeren|  楼主 | 2014-12-11 17:05 | 只看该作者
ningling_21 发表于 2014-12-11 09:20
查询发送用while()  等待发送结束

不能用 if ()

为啥不能用if,while和if还真没搞明白

使用特权

评论回复
5
ningling_21| | 2014-12-11 17:41 | 只看该作者
damoyeren 发表于 2014-12-11 17:05
为啥不能用if,while和if还真没搞明白

也不是不能用,串口发数据,经常不确定需要多长时间,对于这种不确定的状态就要等待,所以IF不太适合

使用特权

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

本版积分规则

126

主题

393

帖子

2

粉丝