标题: 晶振是11.0592,我想设置波特率为9600,为什么总是输出乱码呢? [打印本页]

作者: cloudbank    时间: 2018-5-29 23:07
标题: 晶振是11.0592,我想设置波特率为9600,为什么总是输出乱码呢?


#include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;      //对数据类型进行声明定义
typedef unsigned char u8;


void UsartInit()
{
    SCON=0x50;            
    TMOD=0x20;            
    PCON=0x00;
    TH1=0xFd;               
    TL1=0xFd;
    ES=1;                        //打开接收中断
    EA=1;                        //打开总中断
    TR1=1;                    //打开计数器
}


void main()
{   
    UsartInit();  //    串口初始化
    while(1);        
}

void Usart() interrupt 4
{
    u8 receiveData;
    receiveData=SBUF;//接收到的数据
    RI = 0;          //清除接收中断标志位
    SBUF=receiveData;//将接收到的数据放入到发送寄存器
    while(!TI);         //等待发送数据完成
    TI=0;             //清除发送完成标志位
}

作者: devcang    时间: 2018-5-30 00:54
单片机的各类,是否对应 。。。。。



STC89C52级别
void UartInit(void)                //9600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xFB;                //独立波特率发生器时钟为Fosc/12,即12T
        BRT = 0xFD;                //设定独立波特率发生器重装值
        AUXR |= 0x01;                //串口1选择独立波特率发生器为波特率发生器
        AUXR |= 0x10;                //启动独立波特率发生器
}


作者: 134849694164151    时间: 2018-5-30 01:57
哥们学习的普中的开发板?
作者: 快乐P球    时间: 2018-5-30 04:27
是不是有可能编译器 晶振选项设置错误了呢
作者: silentfire    时间: 2018-5-30 05:29
一般不是硬件问题。初始化看看
作者: wklhwkl    时间: 2018-5-30 08:33
快乐P球 发表于 2018-5-30 04:27
是不是有可能编译器 晶振选项设置错误了呢

晶振选项设置是仿真的时候用到,跟这个没多大关系。
作者: cloudbank    时间: 2018-5-30 10:10
devcang 发表于 2018-5-30 00:54
单片机的各类,是否对应 。。。。。

谢谢(*^_^*)
作者: cloudbank    时间: 2018-5-30 10:10
134849694164151 发表于 2018-5-30 01:57
哥们学习的普中的开发板?

是的,普中的stc89c52

作者: zhaobolove    时间: 2022-1-13 14:22
晶振用 11.0592, 电容用22P

作者: 13205495918    时间: 2022-1-13 20:52
估计是程序配置有毛病
作者: youngsea    时间: 2022-1-13 23:36
用STC-ISP算吧,或者先烧录一下例程试试
作者: TEC    时间: 2022-1-14 10:34
试了你的程序,不是乱码。估计是你的上位机(串口助手)波特率不是9600,那样也会是乱码,建议检查一下。




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