[其它应用]

SH88F54波特率设置问题

[复制链接]
4399|2
手机看帖
扫描二维码
随时随地手机跟帖
因火生烟|  楼主 | 2021-9-6 10:52 | 显示全部楼层 |阅读模式
void init0()
{
        CLKCON = 0x00;                //时钟设置
        RCAP2H=0xFF;                //9600
        RCAP2L=0xCC;
        TH2=0xFF;
        TL2=0xCC;
        T2CON=0x34;                        //定时器2产生接收和发送波特率,开启定时器,工作在定时器方式,自动重装载
        SCON=0x50;                        //SM0 SM1 SM2 REN TB8 RB8 TI RI
                                                //工作在方式1(8位异步方式,可变波特率),允许接收,清0发送接收标志位
        ES0 = 1;                        //打开串口中断 有时为 ES=1;
        EA = 1;                                //开启总中断
}
这个是官方串口0例程的设置,用16M时钟算是对的,实际用电脑测试是不对的,但用逻辑分析仪测数据又是对的。后面用16.6M时钟算,RCAP2L=0xCa;TL2=0xCa;后,电脑测试是才对。

同样的串口1用例程的设置,用16M时钟算是对的,加了232IC转换,电脑测试数据是对的。
void init()
{
        CLKCON = 0x00;                        //时钟设置 系统时钟=晶振频率   Fsys=16MHz

        SADDR1 = 0x55;          //多机通讯时的从机地址设置=0x55
        SADEN1 = 0xFF;                  //从机地址屏蔽设置

        SCON1 = 0x50;                     //工作在方式3 0xF0 ,多机通讯模式
        SBRT1 = 0xFF;                    //工作在方式1,3时,BAUDRATE=(1/16)*Fsys/(32768-SBRT[1:0])          Fsys=16MHz
        SBRT0 = 0x98;                    //BAUDRATE=9600时, SBRT[1:0]=0x7F98,   SBRT1.7=1        -->        SBRT1=0xFF,         SBRT0 = 0x98;
       
        IEN1 = 0x04;                    //ES1=1,不可位寻址
        EA = 1;                                    //开启总中断
}

目前两个串口用官方例程时,串口0用16.6M时钟去算才对,而串口1是用16M去算的。有点郁闷。

使用特权

评论回复
caigang13| | 2021-9-7 08:37 | 显示全部楼层
内部时钟可能有差异

使用特权

评论回复
chenqianqian| | 2021-9-10 08:09 | 显示全部楼层
看下数据手册,两个串口的时钟源是否一样。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

167

帖子

8

粉丝