ZMRGHY 发表于 2019-4-30 20:32 哥们还不明白呀,一共才7个时钟的高电平,用C的话基本上就是什么事都做不了了,就是用汇编也是一样的呀,你要这么高的频率有什么意义呢? |
ZMRGHY 发表于 2019-4-30 20:28 0.36363636363636363636363636363636 * 8 = 2.9090909090909090909090909090909 这个是定时器累加的时间 但是进出中断,用户中断处理语句这些时间呢? |
1xiaosun 发表于 2019-4-30 09:20 自动重装, 如何改变频率, 如何改变点空比呀。 |
cy002 发表于 2019-4-30 09:25 33M 12T 机器周期是 0.36363636636363636363 微秒。。。。。 |
Y_G_G 发表于 2019-4-30 08:40 汇编不会呀。。。。 |
地板说的对! 你把PWM的频率做成166.66 KHz,用它做什么呢? 如果必须使用超过此频率的PWM,也有解决方案,但不一定与你的方案一样! 你用一个不确当的方案,去假设一个不确当的事件了,而后又想求解…… |
现在ARM流行,怎么嫌弃起来89C52了? 没有PWM的时代,自己想办法来实现PWM功能,89C52可是一个宝贝。。。。。。 |
程序中断一次1us 100次是1ms ![]() |
定时器中断可以用自动重装,很准的 |
确实是这样的 我搞了个定时器中断 也是不对的 程序中断一次1us 100次是1ms 出来的周期根本不是1ms 日了 |
你基础不好 1:把仿真的东西当实际来说事 2:89C52不是12T,是6T 3:PWM频率太高,一个定时器的中断时间只有7个机器周期,两三条指令就超过7个指令了,用汇编都得小心,用C占用的时间就更多了 |
你的计算不对,又定时器中断产生PWM,要考虑中断响应时间 其实现在很多51带PWM了 |
51单片机在12M晶振条件下用普通方法极限输出脉冲宽度3us,周期6us。通常小于10us的控制不适合用定时器。因为执行每一条语句都需要时间,这会造成中断响应被迫延时。以下是12M晶振单片机输出167KHz方波的程序和仿真。
![]() |