PIC16F87X单片机中断系统应用须关注的问题
发布时间:2008/6/3 0:00:00 访问次数:564
关键词:单片机 pic16f87x 中断系统 中断源
目前在世界一些著名的单片机产品系列中,pic16f87x系列单片机是芯片内部包含有外围设备模块数量最多的单片机品种之一。pic16f874和pic16f877单片机的芯片内部集成了15个外围设备模块;pic16f873和pic16f876单片机的芯片内部集成了12个外围设备模块。在最近推出的该系列的新型号中, pic16f870单片机的芯片内部集成了10个外围设备模块;pic16f871单片机的芯片内部集成了13个外围设备模块;pic16f872单片机的芯片内部也集成了10个外围设备模块(比pic16f870多了1个usart模块,少了1个ssp模块)。
这些外围设备模块在启用时以及在工作过程中,都或多或少地需要cpu参与控制、协调或交换数据等各种服务工作。由于cpu的运行速度非常高,而各个外围设备模块的工作速度却非常低,况且这些外围设备模块也不是频繁地要求cpu对其服务。因此,通常采取一种让众多外围设备模块共享1个cpu,并且能够及时得到cpu服务的调度方法——中断。 一、 pic16f87x的中断源 pic系列单片机是当今世界上很有影响力的精简指令集(risc)微控制器,具有丰富的中断功能。其***能强大的中、高挡型号的中断源有18种之多。在pic单片机家族中,排位属于中上水平的pic16f87x子系列单片机具备的中断源多达14种。其中,单片机的型号不同,中断源的种类、个数也不同,如表1所列。其不足之处是:中断矢量只有1个,并且各个中断源之间也没有优先级别之分,不具备非屏蔽中断。 表1 pic16f87x单片机的中断源及其数量
中断源种类 中断源志位 中断源蔽位 873/ 876 874/ 877 870 871 872 外部触发中断int intf inte √ √ √ √ √ tmr0溢出中断 t0if t0ie √ √ √ √ √ rb端口电平变化中断 rbif rbie √ √ √ √ √ tmr1溢出中断 tmr1if tmr1ie √ √ √ √ √ tmr2中断 tmr2if tmr2ie √ √ √ √ √ ccp1中断 ccp1if ccp1ie √ √ √ √ √ ccp2中断 ccp2if ccp2ie √ √ sci同步发送中断 txif txie √ √ √ √ sci同步接收中断 rcif rcie √ √ √ √ ssp中断 sspif sspie √ √ √ ssp i2c总线碰撞中断 bclif bclie √ √ √ 并行端口中断 pspif pspie √ √ a/d转换中断 adif adie √ √ √ √ √ e2prom中断 eeif eeie √ √ √ √ √ 13种 14种 10种 11种 10种
从表1中可以看出,各中断源基本上都是与各个外围设备模块相对应的。其中,多数外围设备模块对应着1个中断源(比如定时器/计数器tmr0模块),有的外围设备模块对应着2个中断源(比如通用同步/接收/发送器sci模块),也有的外围设备模块没有中断源与之对应(比如输入/输出端口ra和rc模块),还有的中断源没有外围设备模块与之对应(比如外部触发中断源int)。 二、 pic16f87x的中断硬件逻辑 在pic16f87x的子系列中,具体型号不同,中断逻辑电路也存在着差异,中断源的种类和个数也不同:最多的具备14种中断源;最少的具备10种中断源(详见表1)。其中并行端口模块和并行端口中断源,只有40脚封装的型号(pic16f871、pic16f874和pic16f877)才会具备;而对于28脚封装的型号(pic16f870、pic16f872、pic16f873和pic16f876)则不具备。
pic16f87x系列单片机中断系统的逻辑电路如图1所示。每一种中断源对应着1个中断标志位(记为xxxf,f是flag的第1个英文字母)和1个中断屏蔽位或者叫中断使能位(记为xxxe,e是enable的第1个英文字母)。中断源产生的中断标志信号是否得以向前传递,将受控于对应的中断屏蔽位。每一个中断标志位都对应着1个触发器。当中断源申请cpu中断时,与之对应的触发器就由硬件自动置位,而该触发器的清零是由用户安排程序来实现的;每一个中断屏蔽位也对应着1个触发器。该触发器的置位和清零均是由用户程序完成的。
图1描绘的逻辑电路是1个由简单的门电路构成的组合逻辑电路。将全部14个中断源按2个梯队并列排开,第1梯队中只安排了3个中断源,其余的中断源全部安排到第2梯队中。这样做是为了与早期的pic系列单片机型号相兼容(前些年研制出的单片机型号片内配置的外围设备模块数量较少,相应的中断源的数量自然也就少,比如
关键词:单片机 pic16f87x 中断系统 中断源
目前在世界一些著名的单片机产品系列中,pic16f87x系列单片机是芯片内部包含有外围设备模块数量最多的单片机品种之一。pic16f874和pic16f877单片机的芯片内部集成了15个外围设备模块;pic16f873和pic16f876单片机的芯片内部集成了12个外围设备模块。在最近推出的该系列的新型号中, pic16f870单片机的芯片内部集成了10个外围设备模块;pic16f871单片机的芯片内部集成了13个外围设备模块;pic16f872单片机的芯片内部也集成了10个外围设备模块(比pic16f870多了1个usart模块,少了1个ssp模块)。
这些外围设备模块在启用时以及在工作过程中,都或多或少地需要cpu参与控制、协调或交换数据等各种服务工作。由于cpu的运行速度非常高,而各个外围设备模块的工作速度却非常低,况且这些外围设备模块也不是频繁地要求cpu对其服务。因此,通常采取一种让众多外围设备模块共享1个cpu,并且能够及时得到cpu服务的调度方法——中断。 一、 pic16f87x的中断源 pic系列单片机是当今世界上很有影响力的精简指令集(risc)微控制器,具有丰富的中断功能。其***能强大的中、高挡型号的中断源有18种之多。在pic单片机家族中,排位属于中上水平的pic16f87x子系列单片机具备的中断源多达14种。其中,单片机的型号不同,中断源的种类、个数也不同,如表1所列。其不足之处是:中断矢量只有1个,并且各个中断源之间也没有优先级别之分,不具备非屏蔽中断。 表1 pic16f87x单片机的中断源及其数量
中断源种类 中断源志位 中断源蔽位 873/ 876 874/ 877 870 871 872 外部触发中断int intf inte √ √ √ √ √ tmr0溢出中断 t0if t0ie √ √ √ √ √ rb端口电平变化中断 rbif rbie √ √ √ √ √ tmr1溢出中断 tmr1if tmr1ie √ √ √ √ √ tmr2中断 tmr2if tmr2ie √ √ √ √ √ ccp1中断 ccp1if ccp1ie √ √ √ √ √ ccp2中断 ccp2if ccp2ie √ √ sci同步发送中断 txif txie √ √ √ √ sci同步接收中断 rcif rcie √ √ √ √ ssp中断 sspif sspie √ √ √ ssp i2c总线碰撞中断 bclif bclie √ √ √ 并行端口中断 pspif pspie √ √ a/d转换中断 adif adie √ √ √ √ √ e2prom中断 eeif eeie √ √ √ √ √ 13种 14种 10种 11种 10种
从表1中可以看出,各中断源基本上都是与各个外围设备模块相对应的。其中,多数外围设备模块对应着1个中断源(比如定时器/计数器tmr0模块),有的外围设备模块对应着2个中断源(比如通用同步/接收/发送器sci模块),也有的外围设备模块没有中断源与之对应(比如输入/输出端口ra和rc模块),还有的中断源没有外围设备模块与之对应(比如外部触发中断源int)。 二、 pic16f87x的中断硬件逻辑 在pic16f87x的子系列中,具体型号不同,中断逻辑电路也存在着差异,中断源的种类和个数也不同:最多的具备14种中断源;最少的具备10种中断源(详见表1)。其中并行端口模块和并行端口中断源,只有40脚封装的型号(pic16f871、pic16f874和pic16f877)才会具备;而对于28脚封装的型号(pic16f870、pic16f872、pic16f873和pic16f876)则不具备。
pic16f87x系列单片机中断系统的逻辑电路如图1所示。每一种中断源对应着1个中断标志位(记为xxxf,f是flag的第1个英文字母)和1个中断屏蔽位或者叫中断使能位(记为xxxe,e是enable的第1个英文字母)。中断源产生的中断标志信号是否得以向前传递,将受控于对应的中断屏蔽位。每一个中断标志位都对应着1个触发器。当中断源申请cpu中断时,与之对应的触发器就由硬件自动置位,而该触发器的清零是由用户安排程序来实现的;每一个中断屏蔽位也对应着1个触发器。该触发器的置位和清零均是由用户程序完成的。
图1描绘的逻辑电路是1个由简单的门电路构成的组合逻辑电路。将全部14个中断源按2个梯队并列排开,第1梯队中只安排了3个中断源,其余的中断源全部安排到第2梯队中。这样做是为了与早期的pic系列单片机型号相兼容(前些年研制出的单片机型号片内配置的外围设备模块数量较少,相应的中断源的数量自然也就少,比如
上一篇:单片机控制的双路有源滤波器设计
上一篇:I2C总线在单片机上的实现