PIC中断延时严重

PIC中断延时严重,第1张

首先,中断服务函数中尽量不要调用函数或进行数学运算,中断服务里只是快速地清中断标志并设定一些状态或者服务标志,出中断后由主程序查询状态或服务标志来执行。如果中断里函数调用太多或者有数学运算,会产生大量的中断现场保护和现场回复代码,导致中断延时变长。

其实,硬件上中断响应时间一直是固定的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大小写问题,试试看


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12157539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存