历史上的今天
今天是:2024年11月19日(星期二)
2018年11月19日 | 少走弯路,PIC单片机中断总结
2018-11-19 来源:eefocus
PIC单片机有多个中断源,16系列只有一个中断入口,18系列有两个中断入口,不同编译器下书写格式又不大一样。网上资源千篇一律,也不够系统,只是简单的罗列程序,代码生存的环境不一样也少有说明。在此做个简单的总结,因为又走了弯路...
1.先说18系列(MCC18编译器下):
MPLAB C18不自动把中断服务程序放在中端向量处。通常将GOTO指令放在中断向量处,从而把控制权转交给相应中断服务程序。
void low_isr(void);
void high_isr(void);
*****************************低级中断入口及服务子程序************************************/
#pragma code low_vector=0x18//低优先级中断入口,转自21ic基础知识
void interrupt_at_low_vector(void)
{
_asm GOTO low_isr _endasm
}
#pragma interrupt low_isr
#pragma code
void low_isr(void)
{
//低优先级中断服务函数写在这里
}
*****************************高级中断入口及服务子程序************************************/
#pragma code high_vecotr=0x08//高优先级中断入口
void interrupt_at_high_vector(void)
{
_asm GOTO high_isr _endasm
}
#pragma code
#pragma interrupt high_isr
void high_isr(void)
{
//高优先级中断服务函数写在这里
}
2.再说18系列(PICC18编译器下):
//void PIC18F_High_isr(void);
//void PIC18F_Low_isr(void);
*****************************低级中断服务子程序************************************/
#pragma interrupt lowlow_priority PIC18F_Low_isr
void PIC18F_Low_isr (void)
{
//低优先级中断服务函数写在这里
}
*****************************高级中断服务子程序************************************/
#pragma interrupt PIC18F_High_isr
void PIC18F_High_isr (void)
{
//高优先级中断服务函数写在这里
}
3.三说16系列(PICC编译器下)(只有一个中断入口,无所谓高了就):
void interrupt isr (void)
{
//中断服务函数写在这里
}
void init_interrupt()
{
GIE=0;
PEIE=1;
IPEN=1;
//TMR1IE=1;
//TMR1IF=0;
//TMR1IP=0;
//TMR1L=61;
//T1CON=0xC7;//set up timer0 - 8bit -prescaler
//TMR0IE=1;
//TMR0IF=0;
//TMR0IP=0;
//TMR0L=61;
//T0CON=0xC7;//set up timer0 - 8bit -prescaler 1:256
GIE=1;
}
下一篇:PIC单片机之PWM原理
史海拾趣
|
选购摄像机总是有人存在一些误区,比如洋品牌就好,还有价格要越低越好,下面我就说说真正需要注意的几点是什么吧! 第一、经济性 当前安防产品同质化很严重,进口的与国产的相差无几,所以朋友们不要盲目的崇拜洋 ...… 查看全部问答> |
|
现在我只有一个NK.BIN文件,想了解怎样才能把它下载至2440的开发板…我现在可以下载NK.NB0文件,但是不了解怎样下载NK.BIN文件,希望了解的大拿给指点指点…… 查看全部问答> |
|
WinCE的explorer.exe不启动直接启动自己的应用程序会有什么样的影响? 提一个关于WinCE启动的问题,在很多地方看到WinCE不启动explorer.exe,用自定义的应用程序替换,我有几个问题想寻求解答: 1、explorer.exe的完整的功能是哪些? 2、如果不启动这个功能,在VS2005下写的程序(基于compact Frame work)还能不能用 ...… 查看全部问答> |
|
这个图形加速器的驱动TI给出了现成的module,基于Linux的 里边基本全了,module源文件,app-test,看看README就都明白啦 还没尝试过POWERVR的杀伤力到底有多强 不知道SEED提供的底板是否有LCD,如果有就基本完美啦,否则还得自己想办法弄L ...… 查看全部问答> |
|
我使用MDK3.22,首先已按照lut1lut的帖子修改了汇编代码。数据源参考了圈圈的“FFT结果的物理意义”中的数据,我把圈圈的256个数据*1024然后作的四舍五入取整。结果与圈圈文章中分析的基本一致,第0点、50点、75点数据比较大,此三点数据为( ...… 查看全部问答> |
|
stm32串口1,2,3,4为什么1,2可以,3,4就不行啊。 USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure. ...… 查看全部问答> |




