微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stc15w4k系列,,,,串口收发数据的问题

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

时间:10-02 整理:3721RD 点击:
#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是个什么情况?
到底是为什么呢?



不明白你想问什么?

你走断点看一下吧,你的程序应该没有问题。

两张图不是有差别吗?

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


还是详细看手册看说明,刚开始都难免会碰到一些问题,以后就好了。

换个串口软件试一下

换个串口软件试一下

我这个下载直接都是默认的,都没改过。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top