找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4817|回复: 1
打印 上一主题 下一主题
收起左侧

帮我看看这段C8051F020串口程序代码,想设置115200波特率

[复制链接]
跳转到指定楼层
楼主
ID:113387 发表于 2016-4-12 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手帮我看看下面的“??????”应该怎么填,希望的波特率是115200,感谢~

#include "ZLG7289.h"

unsigned char data1;
void SYSCLK_Init();
void PORT_Init();
void UART0_Init();

void  DelayMs(unsigned int i)
{
        unsigned int j;
        for(;i>0;i--)
                for(j=1000;j>0;j--)        ;                               
}
void SYSCLK_Init()
{      
        unsigned int i;   
        OSCXCN=0X67;         //0X67=0110,0111
        for(i=0;i<256;i++);         //等待>1ms
        while(!(OSCXCN&0X80));      //等待XTLVLD变为1
        OSCICN=0X88;         //时钟失效检测器,选择外部时钟源作为系统时钟
}
void PORT_Init()
{   
        XBR0 = 0x27;          /*交叉开关配置,URAT总线TX0置到P0.0口,
                                                                                                RX0置到P0.1口, SPI总线SCK配置到P0.2口,
                                                                                                MOSI为P0.4口, NSS为P0.5,MISO配置到P0.3口,
                                                                                                IIC总线SDA置到P0.6口,SCK置到P0.7,
                                                                                                TX1,RX1配置到P1.0,P1.1,
                                                                                                CEX0,CEX1配置到P1.2,P1.3,
                                                                                                外部中断int0配置到P1.4 */   
        XBR1 = 0x04;  
        XBR2 = 0x44;          /*允许功能选择开关有效*/   
        P0MDOUT = 0x1A;      
        P74OUT   =0xff;
}
void UART0_Init()
{   
        SCON0=0x50;         //串口方式1   
        TMOD=0X20;          //选用定时器1作为波特率发生器
        TH1=?????;           //波特率为????????
        TL1=?????;
        ES0=1;             //开启串口中断0
        TF1=0;
        TR1=1;               //定时器开启   
        PCON=0X80;           //波特率加倍 波特率为?????   
        TI0=1;
}
void UART0_ISR() interrupt 4 using 1
{
        if(RI0)
        {   
                RI0=0;           //中断接受标志清零      
                data1=SBUF0;      //接受数据
                ZLG7289_Download(1,0,0,0x03);
                DelayMs(1000);
                SBUF0=data1;       //发送数据  
                while(TI0==0);      
                TI0=0;           //发送标志清零
        }
}
void main()
{      
        WDTCN=0XDE;
        WDTCN=0XAD;
        SYSCLK_Init();
        ZLG7289_Init();
        PORT_Init();
        UART0_Init();   
        EA=1;
        while(1);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:848699 发表于 2020-12-20 23:25 来自手机 | 只看该作者
我也是C8051F020,也想设置115200的波特率。你最后解决了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表