- 打卡等级:常住居民III
- 打卡总天数:121
- 最近打卡:2025-05-01 19:17:52
已绑定手机
中级会员
- 积分
- 492
|
发表于 2024-7-13 23:58:35
|
显示全部楼层
STC8051U 0712 PDF文档 今天阅读的疑问:
1. 15.7.14 #define BRT (65536 - FOSC / 115200 / 4) 里面没有 +2, 笔误??
2. 15.7.20 void Uart2Init() 函数中, "S1BRT = 1;" 是否多余的 ???
会让人产生误解,因为S1BRT 控制 T1/T2 当中串口1 的波特率发生器;
3. 关于 T0 定时器的模式3, "不可屏蔽中断" 的特性:
T0为模式3,设置TH0,TL0 之后,只要TR0=1,ET0=1 ,那么 定时器0就开始运行,并且是不可屏蔽中断,都不要设置 EA=1 就可以进入中断;
并且,后续程序中, 即使 ET0=0, EA =0, 都不能关闭T0的中断!
我另外进行了程序测试, 后续程序 更改T0 的模式都不行,牢牢固定在模式3上了!!
想关闭 T0 中断,唯一的办法是 TR0=0, 关闭T0;
补充一点, T0 中模式3中断运行中, (TH0,TL0)还是可以更改的;
4. 向版主请教一个问题: 就是 串口1 的波特率发生器 可以选择 T1 或者 T2 可以通过设置 AUXR.S1BRT =0/1 来完成;
那串口2,串口3,串口4, 这3个串口,如何选择 哪个定时器 作为 各自的波特率发生器 呢? 看了这个文档,还是不完全理解.
只看见文档描述 “定时器2 可以同时用于 串口1~4 的波特率发生器”,但是没有写条件是啥?
看了文档中的例程, 都是单个串口配单个定时器的场合,那如果单个定时器配多个串口,甚至多个串口配多个定时器(因为各个串口波特率可能都不同),程序又该如何写呢??
所以,还请版主抽空详细解答一下! 最好给出一个表格,列出4个串口选择哪个定时器为波特率发生器的 配置条件,就更直观了,谢谢!
|
|