⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic16f87x单片机中断系统应用须关注的问题.htm

📁 一些收集到的PIC文章
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                  <TD width="14%">INTE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">TMR0溢出中断</TD>
                  <TD width="16%">T0IF</TD>
                  <TD width="14%">T0IE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">RB端口电平变化中断</TD>
                  <TD width="16%">RBIF</TD>
                  <TD width="14%">RBIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">TMR1溢出中断</TD>
                  <TD width="16%">TMR1IF</TD>
                  <TD width="14%">TMR1IE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">TMR2中断</TD>
                  <TD width="16%">TMR2IF</TD>
                  <TD width="14%">TMR2IE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">CCP1中断</TD>
                  <TD width="16%">CCP1IF</TD>
                  <TD width="14%">CCP1IE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">CCP2中断</TD>
                  <TD width="16%">CCP2IF</TD>
                  <TD width="14%">CCP2IE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">&nbsp;</TD>
                  <TD width="9%">&nbsp;</TD>
                  <TD width="13%">&nbsp;</TD></TR>
                <TR>
                  <TD width="25%">SCI同步发送中断</TD>
                  <TD width="16%">TXIF</TD>
                  <TD width="14%">TXIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">&nbsp;</TD></TR>
                <TR>
                  <TD width="25%">SCI同步接收中断</TD>
                  <TD width="16%">RCIF</TD>
                  <TD width="14%">RCIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">&nbsp;</TD></TR>
                <TR>
                  <TD width="25%">SSP中断</TD>
                  <TD width="16%">SSPIF</TD>
                  <TD width="14%">SSPIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">&nbsp;</TD>
                  <TD width="9%">&nbsp;</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">SSP I2C总线碰撞中断</TD>
                  <TD width="16%">BCLIF</TD>
                  <TD width="14%">BCLIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">&nbsp;</TD>
                  <TD width="9%">&nbsp;</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">并行端口中断</TD>
                  <TD width="16%">PSPIF</TD>
                  <TD width="14%">PSPIE</TD>
                  <TD width="8%">&nbsp;</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">&nbsp;</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">&nbsp;</TD></TR>
                <TR>
                  <TD width="25%">A/D转换中断</TD>
                  <TD width="16%">ADIF</TD>
                  <TD width="14%">ADIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">E2PROM中断</TD>
                  <TD width="16%">EEIF</TD>
                  <TD width="14%">EEIE</TD>
                  <TD width="8%">√</TD>
                  <TD width="7%">√</TD>
                  <TD width="8%">√</TD>
                  <TD width="9%">√</TD>
                  <TD width="13%">√</TD></TR>
                <TR>
                  <TD width="25%">&nbsp;</TD>
                  <TD width="16%">&nbsp;</TD>
                  <TD width="14%">&nbsp;</TD>
                  <TD width="8%">13种</TD>
                  <TD width="7%">14种</TD>
                  <TD width="8%">10种</TD>
                  <TD width="9%">11种</TD>
                  <TD width="13%">10种</TD></TR></TBODY></TABLE>
              <P 
              align=left><BR>  从表1中可以看出,各中断源基本上都是与各个外围设备模块相对应的。其中,多数外围设备模块对应着1个中断源(比如定时器/计数器TMR0模块),有的外围设备模块对应着2个中断源(比如通用同步/接收/发送器SCI模块),也有的外围设备模块没有中断源与之对应(比如输入/输出端口RA和RC模块),还有的中断源没有外围设备模块与之对应(比如外部触发中断源INT)。 
              </P>
              <P align=center><B>二、 PIC16F87X的中断硬件逻辑 </B></P>
              <P 
              align=left>  在PIC16F87X的子系列中,具体型号不同,中断逻辑电路也存在着差异,中断源的种类和个数也不同:最多的具备14种中断源;最少的具备10种中断源(详见表1)。其中并行端口模块和并行端口中断源,只有40脚封装的型号(PIC16F871、PIC16F874和PIC16F877)才会具备;而对于28脚封装的型号(PIC16F870、PIC16F872、PIC16F873和PIC16F876)则不具备。 
              <BR>  PIC16F87X系列单片机中断系统的逻辑电路如图1所示。每一种中断源对应着1个中断标志位(记为XXXF,F是Flag的第1个英文字母)和1个中断屏蔽位或者叫中断使能位(记为XXXE,E是Enable的第1个英文字母)。中断源产生的中断标志信号是否得以向前传递,将受控于对应的中断屏蔽位。每一个中断标志位都对应着1个触发器。当中断源申请CPU中断时,与之对应的触发器就由硬件自动置位,而该触发器的清零是由用户安排程序来实现的;每一个中断屏蔽位也对应着1个触发器。该触发器的置位和清零均是由用户程序完成的。 
              <BR>  图1描绘的逻辑电路是1个由简单的门电路构成的组合逻辑电路。将全部14个中断源按2个梯队并列排开,第1梯队中只安排了3个中断源,其余的中断源全部安排到第2梯队中。这样做是为了与早期的PIC系列单片机型号相兼容(前些年研制出的单片机型号片内配置的外围设备模块数量较少,相应的中断源的数量自然也就少,比如PIC16C61只有第1梯队中的3个中断源)。近期研制的一些PIC单片机新型号是在原有的单片机芯片基础之上进行一些功能扩展而得来的。 
              <BR>  所有的中断源都受全局中断屏蔽位(也可以称为总屏蔽位)GIE的控制。第1梯队的中断源不仅受全局中断屏蔽位的控制,还要受各自中断屏蔽位的控制;第2梯队的中断源不仅受到全局中断屏蔽位和各自中断屏蔽位的控制,还要额外受到1个外设中断屏蔽位PEIE的控制。</P>
              <P align=left>&nbsp;</P>
              <P align=center><IMG height=234 
              src="PIC16F87X单片机中断系统应用须关注的问题.files/yyjq921.gif" 
              width=351><BR><B>图1中断逻辑</B></P>
              <P align=center><B>三、 中断相关的寄存器</B></P>
              <P 
              align=left>  与中断功能有关的特殊功能寄存器共有5个:中断控制寄存器INTCON、第1外围设备中断标志寄存器PIR1、第1外围设备中断屏蔽寄存器(又称中断使能寄存器)PIE1、第2外围设备中断标志寄存器PIR2和第2外围设备中断屏蔽寄存器PIE2。如表2所列,5个寄存器中共有40位,其中使用了30位。分别与图1中的中断逻辑电路的输入逻辑信号成严格对应关系,也与逻辑表达式成严格对应关系。这5个寄存器都具有在RAM数据存储器中统一编码的地址。也就是说,PIC单片机可以把这5个特殊寄存器当作普通寄存器单元来访问(即读出或写入操作)。这样有利于减少指令集的指令类型和指令数量,也便于学习、记忆和编程。 
              </P>
              <DIV align=center><B>表2 与中断功能相关的寄存器</B> </DIV>
              <TABLE align=center border=1 cellPadding=0 cellSpacing=0 
              width="90%">
                <TBODY>
                <TR vAlign=center>
                  <TD rowSpan=2 width="18%">
                    <DIV align=left>寄存器名称</DIV></TD>
                  <TD rowSpan=2 width="15%">
                    <DIV align=center>寄存器符号</DIV></TD>
                  <TD rowSpan=2 width="13%">
                    <DIV align=center>寄存器地址</DIV></TD>
                  <TD colSpan=8>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -