stc15w4k系列,,,,串口收发数据的问题

2019-07-15 13:56发布

#include<STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
//uint temp,flag;
uchar temp,flag;     
sbit led=P2^1;

void Delay5ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 54;
        j = 199;
        do
        {
                while (--j);
        } while (--i);
}

void init()
{
        P2M0=1;
        P2M1=0;
        SCON = 0x50;                //8位数据,可变波特率9600
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
        TL1 = 0xE0;                //设定定时初值
        TH1 = 0xFE;                //设定定时初值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1        
        ES=1;
        EA=1;
}

void main()
{                                                         
        init();
        while(1)
        {
                if(flag)
                {
                        flag=0;
                        ES=0;
                        SBUF=temp;
                        while(!ti);
                        TI=0;
                        ES=1;
                }
        }
}
void uart1() interrupt 4
{
        RI=0;
        temp=SBUF;
        flag=1;        
}
程序比较简单,就直接传上来了,初始化和配置那块应该是没有问题,上来两张图
为什么16进制发送和接收时,AA 0A 1A都可以,但是01 02 A0是个什么情况?

到底是为什么呢?



1.png
2.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
浪浪云
2019-07-15 22:22
630***258 发表于 2016-5-18 14:51
你走断点看一下吧,你的程序应该没有问题。

事实证明,程序的确没有问题,问题在这,看图,这是买的系统板人家附带的下载说明,之前用这个板子的时候,包括串口的接受和其他的都OK,只是串口的发送是有问题,也没有太在意这个设置,因为我并没有在程序里面配置系统时钟,并且我用的不管是内部(默认)还是外部都是11.0592,还有那个上点复位延时的,万万没想到问题就出现在这里,只是一个串口打印的程序,花了3天的时间才找到是这个原因,并且我并不知道为什么要这样配置,真的要好好反思自己了
111.png

一周热门 更多>