npn 发表于 2021-10-24 18:15
8位单片机向16位变量赋值,是分成两条指令完成的。
先赋值高8位,此时中断触发改变了该变量的值。
中断返 ...
lkc8210 发表于 2021-10-24 19:06
不太可能
我试过停止定时器再赋值再运行定时器都会出现这种情况
TR0 = 0;TMR_XX_OT=270;TR0 = 1;
188610329 发表于 2021-10-24 19:25
你的问题不是 定时器赋值,而是那个TMR_XX_OT 的判断,必须放到定时器里判断是否为0,不能放在外面判断。
188610329 发表于 2021-10-24 21:08
你按我写的改了之后,不就知道了?
lkc8210 发表于 2021-10-24 21:38
改了后可以是可以,但是为什么1T会这样,12T就正常?
lkc8210 发表于 2021-10-24 21:38
改了后可以是可以,但是为什么1T会这样,12T就正常?
188610329 发表于 2021-10-25 00:24
不是 1T 的问题, 12T也会有这个问题,只是相比1T不容易出现(或者说不容易显现出来)。而且你原程序,不 ...
wulin 发表于 2021-10-24 21:16
从逻辑上看程序没有问题,但同一个16位变量在主函数和中断中都可以操作容易出错,有前辈就此问题详细阐述 ...
TTQ001 发表于 2021-10-25 08:50
应该是代码的原因。 请仔细检查程序。
lkc8210 发表于 2021-10-25 11:12
10楼有新发现但审批迟了
我试过停止定时器再赋值再运行定时器
lkc8210 发表于 2021-10-25 11:22
在STC89上可以正常运行
应该不会是代码或逻辑的问题
188610329 发表于 2021-10-25 13:56
说了,不是赋值的问题,是判断的问题,
你要关定时器的话,得在 if 之前关,然后,整个 if 结束之后开才能彻 ...
Jiang_YY 发表于 2021-10-25 16:07
TR0 = 0;TMR_XX_OT=270;TR0 = 1;
你在关闭定时器后清除一下定时器中断标志,然后加2个NOP,看看。
按你 ...
yzwzfyz 发表于 2021-10-25 17:31
都是不认真读手册的结果:
15. TMOD &= 0xF0; //设置定时器模式
npn 发表于 2021-10-25 19:38
你遇到的问题和这个程序一样,很多新人都会遇到:
lkc8210 发表于 2021-10-26 01:14
有点覆杂
借鉴了你, 188610329总和wulin总的回覆
188610329 发表于 2021-10-26 17:59
虽然,你这个修正解决了你目前的问题,但是,这个方案是有缺陷的:如果你程序比较长,定时器定时比较短, ...
sunny118 发表于 2022-1-5 22:23
怎么后面的几个程序中定时器中断响应后没有重复初值了?
sunny118 发表于 2022-1-5 22:23
怎么后面的几个程序中定时器中断响应后没有重复初值了?
老董 发表于 2024-7-7 16:42
引脚设置了 吗?P0M0 P0M1--P7M0 P7M1
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |