完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,芯片是PIC18F46K22。我在16位计数器模式中使用time1。下面的函数在代码中定期调用。每次调用上述函数后,Timer1应该重置为零。有时它不是这样发生的,但有时它像预期的那样工作。我必须将“T1Value”声明为易失性变量还是其他可能出现的问题?任何帮助都是值得赞赏的。
|
|
相关推荐
18个回答
|
|
|
它是从中断代码还是非中断代码调用的?如果您在中断代码中写入变量,并且以非中断代码从变量中读取,那么只需要将变量声明为“volatile”。非常清楚“16位读/写模式”在定时器寄存器上的含义。您没有显示定时器初始化,所以我不知道如何设置RD16位。当RD16时设置了,定时器的高字节是通过缓冲区访问的,所以重要的是:读低字节然后读高字节,写高字节然后写低字节。您需要检查编译器的程序集输出以查看代码在做什么。按正确的顺序排列。
|
|
|
|
|
|
是的,RD16是在定时器初始化中设置的。我仍然必须逐一读取TMR1的高字节和低字节吗?上面的代码不足以读取高低位字节到T1Valk整数变量吗?用下面的行重置TMR1还不够吗?
|
|
|
|
|
|
正如我已经说过的:你不能仅仅假设它会工作。在PIC18F汇编语言中没有16位的写操作,所以C编译器必须把零分别写到定时器寄存器的低字节和高字节。除非你检查程序集输出,否则你不会知道它写什么顺序。
|
|
|
|
|
|
T1Value是函数本地的;我看不出有什么必要让它不稳定。在调试TMR1的其他问题之前,您应该先解决这个问题。
|
|
|
|
|
|
如果我明确地读和写TrM1低和高字节分开,即使当TMR1被设置为16位定时器,这会起作用吗?
|
|
|
|
|
|
你继续使用不正确的术语让我怀疑你不理解这些问题。Timer1总是16位定时器,你对此没有任何控制。你所能控制的只是值如何被你访问。如果RD1位是清晰的,你可以直接访问高位和低位b。定时器计数的字节。这意味着在读取低字节和高字节之间有可能改变值。(例如,当值是0x00FF时,可以读取低字节,接收0xFF)。如果在读取高字节之前它增加到0x0100,那么将读取0x01,因此认为值是0x01FF。)这就是RD16位存在的原因,以便在您和高字节之间插入一个锁存器。这些都在数据表的第12.6节中进行了说明。
|
|
|
|
|
|
我正在努力学习。由于我的RD16位已经设置好,所以我现在有tp检查程序集代码,看高字节和低字节的操作顺序是否正确。由于到目前为止我还没有进行程序集工作,您能告诉我在哪个文件和位置找到相应的程序集代码吗?
|
|
|
|
|
|
然后再看一下数据表。是的。但是,顺序可能会随着下一个编译器版本或别的什么版本而改变。程序集代码应该出现在反汇编列表窗口、程序内存窗口和列表文件中。
|
|
|
|
|
|
过去有一些函数和/或宏,名为WrreTimeRe1(),应该对它们进行处理。
|
|
|
|
|
|
这看起来是个不错的选择。你能告诉我它的原型文件是哪一个头文件吗?
|
|
|
|
|
|
Plib不再得到支持。为什么不直接以正确的顺序对访问代码进行编码呢?
|
|
|
|
|
|
这个数据结构将分别用于访问高字节和低字节吗?“T1HI”和“T1LO”的顺序是正确的还是其他的?我是否应该为TMR1重置RD16位?
|
|
|
|
|
|
不,你需要设置RD16!这些宏存在于PIC18.h中,应该由xc.hpic18.h吸收这些行:因此这意味着读操作无论如何都会正常工作,但是如果要在计时器运行时写入宏,则需要使用该宏。
|
|
|
|
|
|
很奇怪…你的回复的最后一部分没有出现在帖子里。在写这个回复的时候,我在“引用”中看到了。无论如何,谢谢这个发现。BTW如果你直接阅读,那么你认为我的原始问题会被解决吗?
|
|
|
|
|
|
别忘了,你也在写(当你清除计时器时),正如我刚才所说的,你需要宏做正确的事情。
|
|
|
|
|
|
这是否也意味着在访问16位SFR时,XC8编译器“保证”在高位字节之前访问低字节?
|
|
|
|
|
|
它必须(当阅读)如果这是他们提供的所有宏。我想在写作的时候也是这样,这就是为什么他们需要手动地把它做得那么低。
|
|
|
|
|
|
是的,它必须使这些宏正确工作。在XC8用户指南中是否有这种有序性?
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
508 浏览 0 评论
5813 浏览 9 评论
2351 浏览 8 评论
2238 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3545 浏览 3 评论
1163浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1122浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
890浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
508浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-15 12:13 , Processed in 1.426938 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
648