标题: 帮我看看这段C8051F020串口程序代码,想设置115200波特率 [打印本页]

作者: myhxihuanni    时间: 2016-4-12 12:16
标题: 帮我看看这段C8051F020串口程序代码,想设置115200波特率
高手帮我看看下面的“??????”应该怎么填,希望的波特率是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);
}


作者: 樊建鑫    时间: 2020-12-20 23:25
我也是C8051F020,也想设置115200的波特率。你最后解决了吗




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