其实,硬件上中断响应时间一直是固定的3个指令周期(8位为例),有些编译器未合理优化也可能导致中断保护恢复现场的效率太低,如果是8位机建议采用XC8 Pro最高级优化一下。该编译器可免费从官网下载并试用45天。
如果优化后还是不够快,可以考虑提高主振荡频率,来提高保护恢复现场的速度。
如果要求极其快速,建议放弃C编译,直接自己写汇编代码,可以绝对控制你的中断响应时间。
#include<system.h>int i=0
void interrupt(void)
{
i++
if(i==6400) //计数6400次,即64秒执行次中断
{
i=0
}
clear_bit(intcon,T0IF)
}
void main()
{
intcon=0b10100000
tmr0=61 //定义TIMER0的始终周期为10ms一次计数
option_reg=0b10000111
while(1)
{
}//我觉得就是那么多了,任务放在if语句里应该就没问题了,没校验个过,自己放些任务进去校验看看吧,如果出错可能是T0IF大小写问题,试试看
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)