[开发工具] 确认过XC8读写16bit定时器值顺序吗

[复制链接]
1115|2
 楼主| Light_David 发表于 2019-11-21 11:19 | 显示全部楼层 |阅读模式
18F芯片的16bit定时器(T1,3,5等)都有一个协助原子操作读写TMRxH:TMRxL的设定TXCON.bit1(TxRD16),
实现方法是通过读写TMRxL触发TMRxH缓冲
那么读时序就要求先读TMRxL,再读TMRxH,写时序即要求先写TMRxH,再写TMRxL
新的XC8 在h文件中对很多大于8bit且遵循小端地址顺序的模块寄存器都定义成16bit模式,如定时器,捕捉,AD结果和E2地址和部分的USART的波特率设定等, 这方便了程序书写,
不知道在使能了定时器的16B读写模式时使用TMRx (unsigned short)这种方式,XC8能不能完美兼容呢
当年使用C51操作C8051F020的DAC时,被这个坑害的很惨,现在都铭记于心
 楼主| Light_David 发表于 2019-11-21 11:40 | 显示全部楼层
结案了,已经确认了,通过汇编代码可以看出XC8读写打开16B模式下的定时器不用有顾虑
不过也看得出免费版本的编译器真是没谁了,到处加NOP,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
私藏人间 发表于 2025-9-8 16:18 | 显示全部楼层
XC8 读写 16bit 定时器值需注意顺序。读时先读高 8 位,再读低 8 位,因读取高 8 位会锁存低 8 位,确保数据一致性;写时先写高 8 位,再写低 8 位,避免中间值触发异常。遵循此顺序可防止 16 位数据读写时因寄存器更新导致的错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:二姨提醒你:此人回答问题基本都是扯D.

15

主题

273

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部