说明的时序设计不合理。 事件的处理不要放在中断服务处理程序中,放中主程序中。 中断服务程序要尽量短,做个事件的标记即可! 在主程序中,根据标记处理事件。 |
这种通过定时器产生高频率波形输出对于很多51单片机是搞不定的,很多51的单片机定时器中断时间设置少于50us以下就开始没法胜任,你自己可以算一下最多能输出多高的方波,像你这种最好不要用定时器而是拉到有pwm功能输出的脚上。 |
xuyaqi 发表于 2022-12-7 09:51 主要是要求用的51单片机 |
npn 发表于 2022-12-7 08:29 加了溢出检测后确实溢出了 |
中断服务程序尽量短小! |
你先测出来中断耗时多少,然后保证中断间隔大于这个时间。 |
程序结构问题,1khz频率不算高,按键或许会反应迟钝,但不会没有反应,而且需要确定1khz和定时器中断时间的对应关系 |
有直接输出波形不要cpu参与的单片机,为什么会有越来越多高级单片机,就是老单片机功能不够用。 |
有直接输出波形不要cpu |
100hz =100次/秒 ,T = 10ms 51假如用12M晶振,12000000次/S,T =1/12, Tcy = 12* 1/12 = 1us 一个周期64个采样点,就是要花10ms, 那每个采样时间段156.25us, 似乎要加滤波电路吧 |
定时器0中断程序处理时间,超过初值时间导致溢出。 溢出后TF0硬件置1,包含 intrins.h 头文件后,中断底部加一句判断有无溢出: if(_testbit_(TF0)) { } 溢出后if条件会成立,更换1T单片机或使用更高频率晶振。 |