标题: 关于单片机scanf()函数,printf()及串口的问题 [打印本页]

作者: YOU1988    时间: 2016-4-10 23:19
标题: 关于单片机scanf()函数,printf()及串口的问题
#include<stdio.h>
#include "stc15.h"

void Uart1_Init(void)
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
        TL1 = 0xE0;                //设定定时初值
        TH1 = 0xFE;                //设定定时初值
        TI = 1;
        ET1 = 0;               
        TR1 = 1;                //启动定时器1
        ES = 0;                   //打开串口中断
        EA = 0;               
}
void main(void)
{
        u16 x = 0;
        u16 y = 0;
        Uart1_Init();
        P55 = 0;
        printf("Input x,y:\n");
        scanf("%d%d",&x,&y);
        printf("\n");
        printf("%d+%d=%d\n",x,y,x+y);
        printf("\n");
        printf("%xh+%xh=%xh\n",x,y,x+y);
        while(1);
}

通过串口怎么输入,我输入以后结果为零
好像没什么效果


作者: liuyimao485812    时间: 2016-4-11 05:58
ES = 1; EA = 1; 似乎没见到串口中断程序。
作者: tswdey    时间: 2016-4-11 08:26
怎么会收到一直是0呢?!
应该是没有数据吧?或者是乱码。
那么应该是波特率不匹配的原因!
作者: YOU1988    时间: 2016-4-11 13:47
liuyimao485812 发表于 2016-4-11 05:58
ES = 1; EA = 1; 似乎没见到串口中断程序。

这是书上的例子,改写的,好像不需要用到中断
作者: YOU1988    时间: 2016-4-11 13:49
tswdey 发表于 2016-4-11 08:26
怎么会收到一直是0呢?!
应该是没有数据吧?或者是乱码。
那么应该是波特率不匹配的原因!

波特率没错,也不是乱码,采用文本形式接收
作者: luoluoluo136    时间: 2016-4-11 21:59
liuyimao485812 发表于 2016-4-11 05:58
ES = 1; EA = 1; 似乎没见到串口中断程序。

库里面实现的中断程序




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1