原创 PIC18F单片机的中断嵌套的C语言编程方法

2007-1-19 12:38 5500 8 8 分类: MCU/ 嵌入式

    PIC<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />18F4520单片机提供多个中断源及一个中断优先级功能,可以给大多数中断源分配高优先级或者低优先级.高优先级中断向量地址为0008H,低优先级中断向量地址为0018H。高优先级中断事伯将中断所有可参正在进行的低优先级中断。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


    10个寄存器用于控制中断的操作。它们是:


RCON


INTCON


INTCON2


INTCON3


PIR1PIR2


PIE1PIE2


IPR1IPR2


通常,用三个位控制中断源的操作。它们是:


标志位   表明发生了中断事件


使能位   允许程序跳转转到中断向量地址处执行(当标志位置1时)


优先级   用于选择是高优先级还是低先级


通过将IPEN位(RCON<7>)置1,可使能中断优先级功能。当使能中断优先级时,有2位可使能全局中断。将GIEH位(INTCON<7>)置1,可使能所有优先级位置1(高优先级)的中断。将GIEL位(INTCON<6>)置1,可使能所有优先级位清零(低优先级)的中断。


当中断标志位、使能位以及相应的全局中断使能位均被置1时,程序将立即跳转到中断地址0008H0018H,具体地址取决于优先级位的设置。通过设置相应的使能位可以禁止单个中断。


    注意:系统复位时IPEN位为零(默认状态)时,便会禁止中断优先级功能,此时中断与PIC16系统中档单片机相兼容。在兼容模式下,所有中断均跳转到地址0008H执行。


 


下面是在SP9608-PIC增强型单片机开发板利用PIC18F4520单片机来实现的数字频率计数器功能,程序中使用了T0用为外部信号源输入,通TMR0来实现对信号源的频率计数。TMR3作为定时器,来产生1mS数码管扫描时基和1S秒时基信号。为了提高频率计数的准确度,采用中断嵌套技术来完成,将TMR3产生1mS的定时信号作为高优先级中断,TMR0作为频率计数溢出中断作为低先级中断。


    源程序采用MCC18编译器和MPLAB7.50版本的集成开发环境,调试工具采用ICD2;具体源程序如下:


    系统时钟:采用外部的12MHz晶振经过内部PLL4倍频到48MHz。(HS-PLL配置位)


 


    详细源程序见: www.supermcu.com/yc_info.asp?id=370


     我们的网站: www.supermcu.com


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
8
×
广告
关闭 站长推荐上一条 /3 下一条