打印

如何将这两个初始化函数合并

[复制链接]
1656|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanglli|  楼主 | 2022-11-11 21:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个串口的初始化函数,单独都能使用,现在一个程序里需要两个串口,公用串口1波特率。不知道如何将这两个初始化函数合并

使用特权

评论回复
沙发
zhanglli|  楼主 | 2022-11-11 22:00 | 只看该作者
是 MA805-64 两个串口初始化

使用特权

评论回复
板凳
dingy| | 2022-11-11 22:06 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
地板
zhanglli|  楼主 | 2022-11-11 22:08 | 只看该作者

//串口0初始化
void uart0_init() //
{   
     SCON0 = 0x50;    /*串口模式为方式一,无奇偶校验位,允许串口接受数据*/
     PCON = 0x00;     /*波特率不加倍*/
     SFRPI = 0x01;  /*换1页*/
     S1BRT = 0xFA;  /*波特率为9600*/
     SFRPI = 0x00;  /*换0页*/

    SCFG = 0x90;  /*使用UART1的波特率发生器*/
     RCLK = 0;
     TCLK = 0;

    ES0 = 1;   /*开串口0中断*/
     EA = 1;    /*开总中断*/
}

//串口1初始化
void uart1_init() //
{   
     SFRPI = 0x01;      /*换1页*/
     SCON1 = 0x50;    /*串口模式为方式一,无奇偶校验位,允许串口接受数据*/
     S1BRT = 0xFA;    /*波特率为9600*/
     SFRPI = 0x00;     /*换0页*/

    SCFG = 0x10;  
     RCLK = 0;
     TCLK = 0;

    EIE1 = 0X10;      /*开串口1中断*/
     EA = 1;              /*开总中断*/
}

使用特权

评论回复
5
stly| | 2022-11-11 22:11 | 只看该作者

SCON=0x50;                                         
                                 //第一串口在模式1,3下 使用第二串口波特率
                                 //使能第二串口波特率,时钟来源为SYSCLK
         SCFG=0x90;        //        (URTS SMOD2 URM0X6 S1TR S1MOD S1TX12 - -        )
         //                 1    0       0    1    0     0   
        //S1TR 开启
         SFRPI=0x01;                          //set SFR Page 1
                                                   //第二串口模式为3: 11位可变波特率
         SCON1=0xD0;
         S1BRT=0xE8;                          //波特率为2400Bps         时钟来源为SYSCLK/12
         SFRPI=0x00;                          //set SFR Page 0
     EIE1=0x10;                    //使能第二串口中断
     EA=1;                           //使能全局中断

使用特权

评论回复
6
xxrs| | 2022-11-11 22:18 | 只看该作者
两个串口的配置寄存器都不一样吧,直接配置就是了啊。

使用特权

评论回复
7
yszong| | 2022-11-11 22:20 | 只看该作者
合并共同的部门。

使用特权

评论回复
8
supernan| | 2022-11-11 22:24 | 只看该作者
不同的部分用位或,或者并列执行。

使用特权

评论回复
9
zhanglli|  楼主 | 2022-11-11 22:32 | 只看该作者
还能这么搞?我看看

使用特权

评论回复
10
dengdc| | 2022-11-11 22:34 | 只看该作者
合并共同的部门。

使用特权

评论回复
11
yszong| | 2022-11-11 22:36 | 只看该作者
不同的部分用位或

使用特权

评论回复
12
stly| | 2022-11-11 22:40 | 只看该作者
或者并列执行

使用特权

评论回复
13
LOVEEVER| | 2022-11-26 19:26 | 只看该作者
两个串口的配置寄存器都不一样吧,直接配置就是了,可以放在外部合并一样的初始化应该就可以

使用特权

评论回复
14
木木guainv| | 2022-12-9 11:49 | 只看该作者
楼主的意思是希望在一个函数中对两个串口进行初始化吗

使用特权

评论回复
15
tpgf| | 2022-12-9 13:08 | 只看该作者
为什么要合并初始化呢 完全没有这必要啊

使用特权

评论回复
16
paotangsan| | 2022-12-9 13:19 | 只看该作者
全完没有必要 按照顺序挨条写就行了

使用特权

评论回复
17
keaibukelian| | 2022-12-9 13:36 | 只看该作者
把共同使用的部分写在一起 其他部分就无所谓了

使用特权

评论回复
18
heimaojingzhang| | 2022-12-9 14:02 | 只看该作者
zhanglli 发表于 2022-11-11 22:32
还能这么搞?我看看

这是常规做法啊 初始化都是这样子的

使用特权

评论回复
19
guanjiaer| | 2022-12-9 14:11 | 只看该作者
分开或者一起都可以  只要是在初始化完成后再使能都没有问题

使用特权

评论回复
20
Henryko| | 2022-12-26 10:29 | 只看该作者
把相同的寄存器合并一下就行了

使用特权

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

本版积分规则

1016

主题

9386

帖子

1

粉丝