收藏 分销(赏)

中断系统及外设.pptx

上传人:精**** 文档编号:4828212 上传时间:2024-10-14 格式:PPTX 页数:181 大小:932.74KB
下载 相关 举报
中断系统及外设.pptx_第1页
第1页 / 共181页
中断系统及外设.pptx_第2页
第2页 / 共181页
点击查看更多>>
资源描述
第四章第四章中断中断系统及外设系统及外设开始开始4.1.14.1.1数据传送方式数据传送方式数据传送方式数据传送方式有直接、查询、中断、有直接、查询、中断、DMA等传送方式。等传送方式。一、直接传送方式直接传送方式 也称无条件传送方式,也称无条件传送方式,例:驱动指示灯、继电器、驱动指示灯、继电器、启动电机等启动电机等二、查询方式查询方式送数据或发命令前先检查设备状态送数据或发命令前先检查设备状态例:水池水位自动控制装置例:水池水位自动控制装置要求:水位要求:水位B停放停放电路中:电路中:1)输出:输出:P1.0=1时,时,M放水;放水;P1.0=0时,时,M关关2)输入:输入:水位水位B,T1、T2导通导通P1.1=0,P1.2=0A水位水位B,T1止,止,T2通通P1.1=1,P1.2=0三、中断传送方式三、中断传送方式 CPU不不主主动动查查询询中中断断源源,只只执执行行自自己己的的程程序序,当当中中断断源源准准备备好好时时,提提出出申申请请,若若CPU准准于于请请求求,放放下下正正在在执执行行的的程序,程序,去传送去传送外设的数据。外设的数据。录像录像1录像录像2 2查询查询中断中断中断的好处中断的好处1、CPU分时操作(与多个外设并行工作)分时操作(与多个外设并行工作)温度温度压力压力断电断电CPU处理处理2、实现实时处理、实现实时处理外设外设外设外设外设外设CPU3、故障处理、故障处理如何实现中断?如何实现中断?1、中断系统的功能、中断系统的功能(1)响应中断及返回)响应中断及返回2、中断响应过程、中断响应过程中中断断源源提提出出申申请请 CPUCPU决决定定是是否否响响应应 若若响响应应转转去去中中断处理断处理 完成后返回原中断处。完成后返回原中断处。中断请求中断请求中断请求中断请求RETIRETI主程序主程序(2)能实现优先权排队)能实现优先权排队(3)能实现中断嵌套)能实现中断嵌套4.1.2MCS-96中断系统中断系统MCS-96单片机有单片机有九种九种九种九种中断源,分为中断源,分为外部中断外部中断外部中断外部中断(EXTINT、HSI.0)和)和内部中断内部中断内部中断内部中断两类。两类。一、中断源一、中断源一、中断源一、中断源引起中断的原因,或能发出中断申请的源,引起中断的原因,或能发出中断申请的源,称为称为“中断源中断源”。二、中断向量二、中断向量二、中断向量二、中断向量内存中存放中断服务程序入口地址的两个存内存中存放中断服务程序入口地址的两个存储单元叫中断向量。硬件不提供中断服务程序入储单元叫中断向量。硬件不提供中断服务程序入口地址,只提供中断向量。中断向量中存放的内口地址,只提供中断向量。中断向量中存放的内容是中断服务程序入口地址容是中断服务程序入口地址中断源中断源中断向量地址中断向量地址优先权优先权软件陷阱软件陷阱2010H和和2011H用户不可用用户不可用外部中断外部中断200EH和和200FH7(最高)(最高)串行口串行口200CH和和200DH6软件定时器软件定时器200AH和和200BH5HSI.02008H和和2009H4HSO2006H和和2007H3HSI数据有效数据有效2004H和和2005H2A/D转换结束转换结束2002H和和2003H1定时器溢出定时器溢出2000H和和2001H0(最低)(最低)EXTINTACH.7IOC1.1外部中断外部中断外部中断外部中断TI_FLAGRI_FLAG串行口串行口串行口串行口HSI.0HSI.0HSI.0MCS-96单片机全部中断源单片机全部中断源(1)软件定时器软件定时器0软件定时器软件定时器1软件定时器软件定时器2软件定时器软件定时器3复位定时器复位定时器T2HSO_COMMAND.4软件定时器软件定时器软件定时器软件定时器启动启动A/D转换转换任何任何HSO操作操作HSO_COMMAND.4HSOHSOFIFO满满保持寄存器已装载保持寄存器已装载IOC1.7HSIHSI数据有效数据有效数据有效数据有效A/D转换完毕转换完毕A/DA/D转换完毕转换完毕转换完毕转换完毕IOC1.2IOC1.3定时器定时器1溢出溢出定时器定时器2溢出溢出定时器溢出定时器溢出定时器溢出定时器溢出MCS-96单片机全部中断源单片机全部中断源(2)中断控制寄存器中断控制寄存器中断控制寄存器中断控制寄存器开始开始1.中断登记寄存器中断登记寄存器中断登记寄存器中断登记寄存器INT_PENDINGINT_PENDING(0009H)中断登记寄存器的功能中断登记寄存器的功能 D0定时器溢出定时器溢出D1A/D转换完毕转换完毕D4HSI.0D5软件定时器软件定时器D6串行口串行口D7外部中断外部中断D2HSI数据有效数据有效D3HSO事件事件通过修改其内容可以人为通过修改其内容可以人为设置设置设置设置一个中断(将对应一个中断(将对应位位置置置置1 1)或或清除清除清除清除某个中断(将对应位某个中断(将对应位清清清清0 0)。例:清除高速输出例:清除高速输出LDB30H,INT_PENDINGANDB30H,#11110111BSTB30H,INT_PENDING用软件制造中断,可以用如下指令用软件制造中断,可以用如下指令ORBINT_PENDING,#00000010B;设置;设置A/D中断中断改进指令改进指令ANDBINT_PENDING,#11110111B;清除高速输出清除高速输出开始开始2.中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器中断屏蔽寄存器INT_MASKINT_MASK(0008H)INT_MASK位于程序状态字位于程序状态字PSWPSW的低八位的低八位(0008H),各位的定义与),各位的定义与INT_PENDINGINT_PENDING相同。相同。当某中断源发生中断时,即使该中断被当某中断源发生中断时,即使该中断被屏蔽屏蔽屏蔽屏蔽,中,中断登记寄存器的相应位仍被断登记寄存器的相应位仍被置置置置1 1。三、中断处理过程三、中断处理过程三、中断处理过程三、中断处理过程开始开始1.中断响应条件中断响应条件一个中断请求得到响应,必须满足以下条件:一个中断请求得到响应,必须满足以下条件:PSW.9PSW.9=1,即使用,即使用EI指令开放全部中断;指令开放全部中断;INT_MASKINT_MASK的相应位被置的相应位被置1;INT_PENDINGINT_PENDING中的相应位为中的相应位为1;当前中断的优先级当前中断的优先级高于高于高于高于其他中断的优先级。其他中断的优先级。开始开始2.中断响应过程中断响应过程将将INT_PENDINGINT_PENDING相应位清零,将相应位清零,将PCPC值压入堆栈,值压入堆栈,根据根据中断向量中断向量中断向量中断向量提供的地址跳转至中断服务程序。提供的地址跳转至中断服务程序。保护保护保护保护现场,执行中断服务程序。现场,执行中断服务程序。恢复恢复恢复恢复现场,返回主程序。现场,返回主程序。开始开始3.中断程序结构中断程序结构为了使中断程序能够正常执行,必须在主程序中为了使中断程序能够正常执行,必须在主程序中进行相应的初始化,如:进行相应的初始化,如:开放开放INT_MASKINT_MASK中的相应位中的相应位清除清除INT_PENDINGINT_PENDING的相应位的相应位对对IOIO控制寄存器控制寄存器控制寄存器控制寄存器(IOC0和和IOC1)中相应位进行)中相应位进行设置设置将中断控制标志位将中断控制标志位I I置置1开始开始4.中断程序的要求:中断程序的要求:中断向量的内容采用中断向量的内容采用伪指令伪指令伪指令伪指令指定,中断向量的设指定,中断向量的设置应放在整个程序的置应放在整个程序的开始开始开始开始部分。部分。中断程序的第一条指令应为中断程序的第一条指令应为DIDI,以确保不受其,以确保不受其他中断的干扰,中断返回前应执行他中断的干扰,中断返回前应执行EIEI。中断服务程序开始和结束时,应使用中断服务程序开始和结束时,应使用PUSHPUSH和和POPPOP指令来保护现场指令来保护现场。中断服务程序最后一条指令必须为中断返回指令中断服务程序最后一条指令必须为中断返回指令RETRET。开始开始ORG200EHDCWINTP;中断向量(外部中断);中断向量(外部中断)ORG2080HMAIN:LDSTACK_P,#0F0H;堆栈指针;堆栈指针DI;关中断;关中断LDBIOC1,#00HLDBINT_MASK,#80HCLRBINT_PENDINGEI;开中断;开中断;主程序体;主程序体开始开始INTP:DI;关中断;关中断PUSHFPUSHAX;保护现场;保护现场;中断服务程序体;中断服务程序体POPAXPOPF;恢复现场;恢复现场EI;开中断;开中断RET四、中断优先级控制四、中断优先级控制四、中断优先级控制四、中断优先级控制例例例例:中断优先级修改中断优先级修改,要求使串行口中断的优先,要求使串行口中断的优先级低于级低于HSI数据有效中断,但高于其他一切中断源数据有效中断,但高于其他一切中断源。串行口中断服务程序如下:串行口中断服务程序如下:INTP:DIPUSHF;保存;保存PSW(包括(包括INT_MASK)LDBINT_MASK,#00000100B;只允许;只允许HSI中断中断EI;中断服务程序主体;中断服务程序主体POPF;恢复;恢复PSWRET;中断返回;中断返回开始开始五、中断响应时间五、中断响应时间五、中断响应时间五、中断响应时间从中断请求到执行中断服务程序的第一条指令之间,需要从中断请求到执行中断服务程序的第一条指令之间,需要一段响应时间,其长短取决于以下因素:一段响应时间,其长短取决于以下因素:开始开始若中断请求的时刻离正执行指令的结束时刻不到若中断请求的时刻离正执行指令的结束时刻不到4 4个状个状个状个状态周期态周期态周期态周期,则该指令结束后不会立刻响应中断。,则该指令结束后不会立刻响应中断。从响应中断到执行中断服务程序,其间需要从响应中断到执行中断服务程序,其间需要2121个状态周个状态周个状态周个状态周期期期期。如堆栈设在片外。如堆栈设在片外RAM,还需增加,还需增加3 3个状态周期个状态周期个状态周期个状态周期。在执行在执行EIEI、DIDI、PUSHFPUSHF、POPFPOPF和和TRAPTRAP指令时,中断指令时,中断请求不能立即得到响应,而必须等到执行完下一条指令请求不能立即得到响应,而必须等到执行完下一条指令后才能得到响应后才能得到响应。六、例题六、例题六、例题六、例题EXTINT引脚接一个周期性的方波信号,引脚接一个周期性的方波信号,P2.5引脚外引脚外接一个接一个LED。每一次中断,。每一次中断,P2.5的输出电平发生一次的输出电平发生一次翻转,即翻转,即LED一次点亮,下一次熄灭,重复该过程。一次点亮,下一次熄灭,重复该过程。MCS-96EXTINTP2.5主程序:主程序:主程序:主程序:ORG200EHDCWINTPORG2080HMAIN:LDSP,#00C0HDILDBIOC1,#00HLDBINT_MASK,#80HLDBINT_PENDING,#00HEILDB20H,#0FFH;标志;标志WAIT:SJMP WAIT开始开始中断服务程序:中断服务程序:ORG3000HINTP:PUSHFCMPB20H,#00H;比较;比较20H单元是否为单元是否为;00HJES1;是则跳转到;是则跳转到S1ORBP2,#20H;P2.5输出高电平输出高电平SJMPS2S1:ANDBP2,#0DFH;P2.5输出低电平输出低电平S2:NOTB20HPOPFRET在在20H单元设置一个单元设置一个标志标志标志标志,当其为,当其为0FFH时,时,P2.5输出高电输出高电平;当其为平;当其为00H时,时,P2.5输出低电平,每中断一次,将输出低电平,每中断一次,将20H的内容取反,以使的内容取反,以使P2.5间隔输出高、低电平。间隔输出高、低电平。编写中断程序应注意的问题:编写中断程序应注意的问题:设置设置中断向量中断向量中断向量中断向量。设置设置堆栈指针堆栈指针堆栈指针堆栈指针。INT_MASKINT_MASK中相应位要置中相应位要置1,不用的中断位应清零。,不用的中断位应清零。总中断位开放之前,要对总中断位开放之前,要对INT_PENDINGINT_PENDING清清零零。将将IOC0IOC0和和IOC1IOC1中的相应位的置中的相应位的置1或清零或清零。中断初始化之前,执行中断初始化之前,执行DIDI指令,关闭中断标志位指令,关闭中断标志位I I。中断初始化完成后,执行中断初始化完成后,执行EIEI指令,开放中断标志位指令,开放中断标志位I I。进入中断服务程序后,执行进入中断服务程序后,执行DIDI或或PUSHFPUSHF指令;中断返指令;中断返回之前再执行回之前再执行EIEI或或POPFPOPF指令。指令。中断服务程序最后一条指令应为中断服务程序最后一条指令应为RETRET。开始开始一、定时器一、定时器一、定时器一、定时器T1T1MCS-96单片机有三个单片机有三个16位定时器:定时器位定时器:定时器T1T1、T2T2及及监视定时器监视定时器监视定时器监视定时器(watchdog)。)。T1通常作为系统的通常作为系统的实时时钟实时时钟,每经过,每经过8 8个状态个状态个状态个状态周期周期周期周期其计数值其计数值加加1。当当T1记满时,将记满时,将IOS1.5置位,并触发定时器溢出置位,并触发定时器溢出中断,中断,中断向量中断向量2000H。IOC1.2是是T1溢出中断的允溢出中断的允许控制位。许控制位。1.T11.T1工作原理工作原理工作原理工作原理开始开始4.2定时器及监视定时器定时器及监视定时器系统正常工作时,系统正常工作时,T1一直处于循环计数状态,任何一直处于循环计数状态,任何时刻都可读取其计数值(时刻都可读取其计数值(只能只能按字读),仅当系统按字读),仅当系统复复位位时时T1才停止计数并复位。才停止计数并复位。T1的计数值放在的计数值放在0AH(低(低8位)和位)和0BH(高(高8位)单位)单元,元,分别用分别用TIMER1(LO)和和TIMER1(HI)表示。表示。开始开始4.2定时器及监视定时器定时器及监视定时器2.I/O2.I/O控制寄存器控制寄存器控制寄存器控制寄存器1 1(IOC1IOC1)IOC1的地址为的地址为16H,只写。它用来选择某些引脚的功能,只写。它用来选择某些引脚的功能,以及允许或禁止某些中断。以及允许或禁止某些中断。I/O控制寄存器控制寄存器1的功能的功能 D2T1溢出中断允许溢出中断允许/禁止禁止D3T2溢出中断允许溢出中断允许/禁止禁止3.I/O3.I/O状态寄存器状态寄存器状态寄存器状态寄存器1 1(IOS1IOS1)IOS1与与IOC1的地址都是的地址都是16H,但,但IOS1只读。只读。IOS1反映了定时器、反映了定时器、HSI和和HSO设定的软件定时设定的软件定时器的当前状态。器的当前状态。I/O状态寄存器状态寄存器1的功能的功能 D4定时器定时器2溢出溢出D5定时器定时器1溢出溢出开始开始T1溢出中断产生延时溢出中断产生延时设系统晶振频率设系统晶振频率12MHz,则,则T1每隔每隔131ms产生一次产生一次溢出中断,假设要求延时溢出中断,假设要求延时1s,需产生,需产生8次中断次中断(0.1318=1s)。3.3.应用应用应用应用REG2EQU21H;中断溢出次数;中断溢出次数REG3EQU22H;中断结束标志;中断结束标志ORG2000HDCWINT1ORG2080HMAIN:LDSP,#00C0H;建立堆栈指针;建立堆栈指针DI;关中断;关中断LDBINT_PENDING,#00H;清除中断登记寄;清除中断登记寄;存器;存器开始开始LDBINT_MASK,#01H;开放定时器;开放定时器;溢出中断溢出中断LDBIOC1,#04H;允许;允许T1溢出中断溢出中断LDBREG2,#08H;溢出中断次数;溢出中断次数CLRB REG3;清除中断结束标志位;清除中断结束标志位EI;开中断;开中断HERE:JBCREG3,7,HERE;等待中断;等待中断ORG3040H;中断程序;中断程序INT1:PUSHFDJNZREG2,RTN;延迟未结束,则返回;延迟未结束,则返回ORBREG3,#80H;延时结束,将相应标;延时结束,将相应标;志位置;志位置1,并返回,并返回RTN:POPFRET开始开始用用T1测量脉冲宽度测量脉冲宽度设系统时钟频率为设系统时钟频率为12MHz,脉冲信号从,脉冲信号从P0.7引脚输入,脉引脚输入,脉冲上升沿的时刻送冲上升沿的时刻送REG1,下降沿的时刻送,下降沿的时刻送REG2,REG3记录记录T1溢出的次数。溢出的次数。根据已知条件,根据已知条件,8个状态周期的时间为个状态周期的时间为2s,则脉冲的宽,则脉冲的宽度为:度为:T=(REG2REG1REG365536)2sREG1REG2REG3:T1溢出次数溢出次数开始开始ORG2000HDCWINT1ORG2080HDI;关中断;关中断LDSP,#00C0H;设置栈指针;设置栈指针LDBINT_MASK,#01H;允许;允许T1中断中断TH:JBCP0,7,TH;检测上升沿;检测上升沿LDREG1,TIMER1;上升沿时刻;上升沿时刻CLRREG3LDBIOC1,#04H;允许;允许T1中断溢出中断溢出CLRBINT_PENDINGEITL:JBSP0,7,TL;检测下降沿;检测下降沿LDREG2,TIMER1;下降沿时刻;下降沿时刻DI;其他指令;其他指令ORG3040H;中断程序;中断程序INT1:INCREG3;T1溢出次数溢出次数RET二、定时器二、定时器二、定时器二、定时器T2T2开始开始T2实际上是一个外部事件实际上是一个外部事件计数器计数器,计数脉冲来自引脚,计数脉冲来自引脚HSI.1。当该引脚有。当该引脚有正、负跳变正、负跳变时,其计数值时,其计数值加加1,计,计数器溢出时可触发中断,并使数器溢出时可触发中断,并使IOS1.4置置1。仅当仅当IOC0.7为为1时,才允许时,才允许T2对对HSI.1计数。此外,计数。此外,HSI.1发生跳变的最小时间间隔必须大于发生跳变的最小时间间隔必须大于8个状态周期个状态周期。1.1.工作原理工作原理工作原理工作原理T2的计数值放在的计数值放在0CH(低八位)和(低八位)和0DH(高八位),(高八位),分别用分别用TIMER2(LO)和和TIMER2(HI)表示,只能按字读表示,只能按字读出(地址出(地址0CH)。)。T2溢出中断与溢出中断与T1溢出中断合用一个中断向量溢出中断合用一个中断向量2000H,IOC1.3是是T2溢出中断的允许控制位,溢出中断的允许控制位,IOS1.5是是T1的溢的溢出标志,出标志,IOS1.4是是T2溢出的标志。只有在中断服务程溢出的标志。只有在中断服务程序中序中查询查询IOS1,才能判断哪个定时器发生溢出。,才能判断哪个定时器发生溢出。1.I/O1.I/O控制寄存器控制寄存器控制寄存器控制寄存器0 0(IOC0IOC0)IOC0的地址为的地址为15H,只写。它用来控制,只写。它用来控制HSI输入的选通或输入的选通或禁止,以及控制定时器禁止,以及控制定时器T2的时钟源、复位源和复位方式。的时钟源、复位源和复位方式。I/O控制寄存器控制寄存器0的功能的功能 D1每次写每次写1时时T2复位复位D3T2外部复位允许外部复位允许/禁止禁止D5T2复位源复位源HSI.0/T2.RSTD7T2时钟源时钟源HSI.1/T2.CLK开始开始开始开始共有四种方法能够使共有四种方法能够使T2复位:复位:1)系统系统复位复位(RESET)2)将将IOC0.1置置1。3)触发触发HSO的的0EH通道,即将通道,即将HSO_COMMAND的第的第0位至第位至第3位置为位置为1110B(0EH)。)。4)当当IOC0.3=1、IOC0.5=1时,时,HSI.0引脚的引脚的正跳变正跳变使使T2复位。当复位。当IOC0.3=1、IOC0.5=0时,时,T2.RST引脚的引脚的正跳变正跳变使使T2复位。复位。T2与与T1的主要区别在于:的主要区别在于:T2是对是对外部事件外部事件计数,计数,而而T1是对是对系统内部时钟系统内部时钟计数。计数。使用使用T2对外部事件计数对外部事件计数计数脉冲从的计数脉冲从的HSI.1引脚输入,计数值存放在引脚输入,计数值存放在REG1中,由中,由设由接于设由接于P0.7引脚的开关来启动或禁止读数。引脚的开关来启动或禁止读数。2.2.应用应用应用应用ORG2080HLDSP,#00C0H;设置堆栈指针;设置堆栈指针LDBIOC0,#86H;以;以HSI.1为时钟源,为时钟源,;允许;允许HSI.1输入,输入,;使;使T2复位复位CONT:LDREG1,T2JBCP0,7,COUNT;若;若P0.7=0,继续计数,继续计数HERE:JBSP0,7,HERE;若;若P0.7=1,循环等待,循环等待SJMPCONT开始开始使用使用T1和和T2分别记录按键的抖动时间和抖动次数分别记录按键的抖动时间和抖动次数按键接在按键接在HSI.1引脚,引脚,T1记录按键抖动时间,第一次抖动记录按键抖动时间,第一次抖动时刻存放在时刻存放在REG1中,最后一次抖动时刻存放在中,最后一次抖动时刻存放在REG2中,中,T1溢出的次数存放在溢出的次数存放在REG3中,则抖动持续时间为:中,则抖动持续时间为:T=(REG2REG1REG365536)2sT2记录按键抖动的次数,由于按键每次跳变均使记录按键抖动的次数,由于按键每次跳变均使T2计数,计数,因此,抖动次数应为因此,抖动次数应为T2的值加的值加1除除2,其结果存放在,其结果存放在REG4中。中。开始开始理想开关信号理想开关信号实际开关信号实际开关信号开始开始ORG2000HDCWT_1ORG2080HDILDSP,#00C0H;关中断;关中断LDBINT_MASK,#01H;允许定时器中断;允许定时器中断LDBIOC0,#86H;HSI.1为时钟源,为时钟源,;使;使T2复位复位LOW1:JBSHSI,1,HI;检测上升沿;检测上升沿SJMPLOW1HI:LDREG1,T1;第一次抖动时刻值;第一次抖动时刻值;送;送REG1CLRREG3LDBIOC1,#04H;允许;允许T1溢出中断溢出中断CLRBINT_PENDINGEI;开中断;开中断开始开始LOW2:JBCHSI,1,LOW2;开关状态是否为低;开关状态是否为低;电平(最后一次抖动);电平(最后一次抖动)LOOP:LDREG2,T1;最后一次抖动时刻值;最后一次抖动时刻值;送;送REG2LDREG4,T2;T2值送值送REG4INCREG4;T2计数值加计数值加1SHRREG4,#01H;求抖动次数;求抖动次数SJMPLOW2ORG3400HT_1:INCREG3;T1溢出次数溢出次数RET开始开始T1和和T2都产生中断都产生中断MCS-96HSI.1P2.5设系统时钟为设系统时钟为6MHz,在,在P2.5引脚产生周期为引脚产生周期为8s、宽度为、宽度为2s的脉冲,并以该信号输入的脉冲,并以该信号输入给给HSI.1。进入中断程序后,。进入中断程序后,首先根据首先根据IOS1的内容判断是的内容判断是T1中断还是中断还是T2中断。若中断。若T1中中断,令断,令P2.0=0;若;若T2中断,中断,令令P2.0=1。主程序主程序开始开始中断程序初始化中断程序初始化P2.5引脚产生脉冲信号引脚产生脉冲信号结束结束中断处理程序中断处理程序中断开始中断开始IOS1.4=1?IOS1.5=1?否否否否中断结束中断结束P2.0=0P2.0=1ORG2000HDCWINT_TORG2080HMAIN:LDSP,#00C0HDICLRB INT_PENDINGLDBINT_MASK,#01H;允许定时器中断允许定时器中断LDBIOC1,#0CH;允许;允许T1和和T2中断中断LDBIOC0,#86H;以;以HSI.1为时为时;钟源,使;钟源,使T2复位复位EIT2_IN:ORBP2,#20H;P2.5产生周期产生周期8s;宽度为;宽度为2s的脉冲的脉冲;作为;作为T2的外部时钟的外部时钟ANDBP2,#0DFHSJMPT2_IN;重复产生脉冲;重复产生脉冲开始开始ORG3400HINT_T:LDBREG,IOS1JBSREG,4,T_2;T2溢出,转溢出,转T_2JBSREG,5,T_1;T1溢出,转溢出,转T_1SJMPT_3T_2:ANDB P2,#0FEH;P2.0输出低电平输出低电平SJMPT_3T_1:ORBP2,#01H;P2.0输出高电平输出高电平T_3:RET三、监视定时器(三、监视定时器(三、监视定时器(三、监视定时器(WatchdogTimerWatchdogTimer)监视定时器是一个监视定时器是一个16位位计数器,地址为计数器,地址为0AH,当它被启,当它被启动后,每个状态周期计数值动后,每个状态周期计数值加加1,计数器,计数器溢出溢出时(经过时(经过64K个状态周期)使系统个状态周期)使系统复位复位。1.1.工作原理工作原理工作原理工作原理启动监视定时器的方法是:先对其写入启动监视定时器的方法是:先对其写入“1EH”,然后,然后再再写入写入“0E1H”,清零方法与此相同。,清零方法与此相同。监视定时器一旦监视定时器一旦启动启动,除,除系统复位系统复位之外,之外,不能不能通过软件通过软件使其停止工作。因此,使其停止工作。因此,禁止禁止它的方法就是不启动它。它的方法就是不启动它。在应用程序中使用监视定时器时,先对其写入在应用程序中使用监视定时器时,先对其写入1EH,然后,然后再写入再写入0E1H。2.2.应用应用应用应用ORG 2080HBEGIN:LDBWATCHDOG,#1EHLDBWATCHDOG,#0E1HLDBP2,#01HHERE:NOPNOPLDBP2,#00HSJMPBEGIN4.3高速输入单元高速输入单元HSI高速输入单元高速输入单元HSI可用来记录外部事件触发时的状态和时可用来记录外部事件触发时的状态和时刻,其时间基准由刻,其时间基准由T1提供。提供。1.HSI1.HSI的特点的特点的特点的特点HSI与普通的输入端口相比,主要区别在于:与普通的输入端口相比,主要区别在于:HSI不仅能检测引脚上的状态变化,而且能记录状态变不仅能检测引脚上的状态变化,而且能记录状态变化的时刻;化的时刻;HSI内部设有内部设有FIFO(先入先出)寄存器;(先入先出)寄存器;通过四个引脚,通过四个引脚,HSI可检测多种方式的状态变化。可检测多种方式的状态变化。HSI对于事件的处理可以采用查询方法,也可以采用中对于事件的处理可以采用查询方法,也可以采用中断方法。断方法。一、一、一、一、HSIHSI基本结构基本结构基本结构基本结构2.HSI2.HSI的构成的构成的构成的构成HSI选选通逻辑通逻辑端口缓冲器端口缓冲器除除8计数器计数器输入跳变输入跳变检测器检测器FIFO中断中断及控制逻辑及控制逻辑720位位FIFOHSI_MODEHSI_STATUS保持寄存器保持寄存器HSI_TIME定时器定时器1负跳变负跳变正跳变正跳变正、负跳变正、负跳变每每8次正跳变次正跳变HSI引脚引脚HSI结构框图结构框图444484201616二、二、二、二、FIFOFIFO及有关寄存器及有关寄存器及有关寄存器及有关寄存器1.FIFO1.FIFO单元单元单元单元FIFO是一个先进先出的队列,是一个先进先出的队列,用来存放被检测到用来存放被检测到的事件,其队首为保持寄存器,通过的事件,其队首为保持寄存器,通过HSI_STATUS和和HSI_TIME可查询保持寄存器中可查询保持寄存器中的事件。的事件。读取状态寄存器和时间寄存器的操作应在保持寄读取状态寄存器和时间寄存器的操作应在保持寄存器被装载(存器被装载(IOS1.7=1)之后,否则读出的数据)之后,否则读出的数据将是无意义的。具体操作时,应先读将是无意义的。具体操作时,应先读HSI_STATUS,再读,再读HSI_TIME,否则读出的状,否则读出的状态将是错误的。态将是错误的。开始开始2.HSI2.HSI方式寄存器(方式寄存器(方式寄存器(方式寄存器(HSI_MODEHSI_MODE)每个每个HSI引脚都有四种工作方式,通过对引脚都有四种工作方式,通过对HSI_MODE编程来选择,各引脚之间的工作互不影响。编程来选择,各引脚之间的工作互不影响。方式定义:方式定义:方式定义:方式定义:0000:方式方式0,每,每8次正跳变触发一次事件次正跳变触发一次事件0101:方式方式1,每次正跳变触发一次事件,每次正跳变触发一次事件1010:方式方式2,每次负跳变触发一次事件,每次负跳变触发一次事件1111:方方式式3,每每次次跳跳变变(正正跳跳变变或或负负跳跳变变)均均触发一次事件触发一次事件HSI_MODE的地址为的地址为03H,该寄存器只能写入不,该寄存器只能写入不能读出。能读出。HSI_MODE的功能的功能 D0HSI.0方式选择方式选择D1D4D5HSI.2方式选择方式选择HSI.1方式选择方式选择D2D3D7 D6HSI.3方式选择方式选择为了确保为了确保HSI能够正确检测到引脚上发生的事件,能够正确检测到引脚上发生的事件,必须注意以下问题:必须注意以下问题:输入信号的高、低电平持续时间必须大于一个输入信号的高、低电平持续时间必须大于一个状态周期。状态周期。在在8个状态周期内发生的事件只能记录一次。个状态周期内发生的事件只能记录一次。开始开始3.HSI3.HSI状态寄存器(状态寄存器(状态寄存器(状态寄存器(HSI_STATUSHSI_STATUS)HSI_STATUS的地址为的地址为06H,该寄存器只能读出不能写入。,该寄存器只能读出不能写入。D0HSI.0状态状态D1D4D5HSI.2状态状态HSI.1状态状态D2D3D7 D6HSI.3状态状态状态表示方法(以状态表示方法(以状态表示方法(以状态表示方法(以HSI.0HSI.0为例):为例):为例):为例):D0D0:表示在表示在HSI_TIME_TIME记录时刻,该引脚是否有事件发生记录时刻,该引脚是否有事件发生0 0:无事件发生;无事件发生;1 1:有事件发生有事件发生D1D1:表示在表示在HSI_TIME_TIME记录时刻,该引脚的状态记录时刻,该引脚的状态0 0:低电平;低电平;1 1:高电平高电平开始开始4.HSI4.HSI时间寄存器(时间寄存器(时间寄存器(时间寄存器(HSI_TIMEHSI_TIME)HSI以以T1为时间基准,为时间基准,HSI_TIME存放着保持寄存存放着保持寄存器中最先进入器中最先进入FIFO的事件所对应的的事件所对应的T1的值。的值。HSI_TIME的地址为的地址为04H,16位,只读。位,只读。5.5.中断屏蔽寄存器(中断屏蔽寄存器(中断屏蔽寄存器(中断屏蔽寄存器(INT_MASKINT_MASK)INT_MASK中与中与HSI有关的位定义如下:有关的位定义如下:D2D2:HSI数据有效中断允许数据有效中断允许/禁止禁止D4D4:HSI.0中断允许中断允许/禁止禁止6.6.中断登记寄存器(中断登记寄存器(中断登记寄存器(中断登记寄存器(INT_PENDINGINT_PENDING)INT_PENDING中,与中,与HSI中断有关的位与中断有关的位与INT_MASK中有关位相对应。中有关位相对应。三、三、三、三、IOCIOC及及及及IOSIOS寄存器寄存器寄存器寄存器1.IOC01.IOC0寄存器寄存器寄存器寄存器IOC0的地址为的地址为15H,只写。它用来控制,只写。它用来控制HSI输入的选通或输入的选通或禁止,以及控制定时器禁止,以及控制定时器T2的时钟源、复位源和复位方式。的时钟源、复位源和复位方式。D0HSI.0输入允许输入允许/禁止禁止D1每次写时每次写时T2复位复位D2HSI.1输入允许输入允许/禁止禁止D4HSI.2输入允许输入允许/禁止禁止D3T2外部复位允许外部复位允许/禁止禁止D5T2复位源复位源HSI.0/T2.RSTD6HSI.3输入允许输入允许/禁止禁止D7T2时钟源时钟源HSI.1/T2.CLKI/O控制寄存器控制寄存器0的功能的功能 2.IOC12.IOC1寄存器寄存器寄存器寄存器IOC1的地址为的地址为16H,只写。它用来选择某些引脚的功能,只写。它用来选择某些引脚的功能,以及允许或禁止某些中断。以及允许或禁止某些中断。I/O控制寄存器控制寄存器1的功能的功能 D0PWM/P2.5选择选择D2T1溢出中断允许溢出中断允许/禁止禁止D4HSO.4输出允许输出允许/禁止禁止D3T2溢出中断允许溢出中断允许/禁止禁止D5TXD/P2.0选择选择D6HSO.5输出允许输出允许/禁止禁止D7HSI中断中断:FIFO满满/保持寄存器装载保持寄存器装载D1外中断:外中断:ACH7/EXTINT开始开始3.IOS13.IOS1寄存器寄存器寄存器寄存器IOS1与与IOC1的地址都是的地址都是16H,但,但IOS1只读。只读。IOS1反映了反映了定时器、定时器、HSI和和HSO设定的软件定时器的当前状态。设定的软件定时器的当前状态。I/O状态寄存器状态寄存器1的功能的功能 D0软件定时器软件定时器0到时到时D2软件定时器软件定时器2到时到时D4定时器定时器2溢出溢出D3软件定时器软件定时器3到时到时D5定时器定时器1溢出溢出D6HSIFIFO满满D7HSI保持寄存器数据有效保持寄存器数据有效D1软件定时器软件定时器1到时到时四、四、四、四、HSIHSI中断中断中断中断HSI有两种中断源有两种中断源;由由HSI.0引起的中断,中断向量地址为引起的中断,中断向量地址为2008H,它的中断源只有一个,称为它的中断源只有一个,称为HSI.0中断中断HSI数据有效中断,中断向量地址为数据有效中断,中断向量地址为2004H,它,它的中断源有两个:的中断源有两个:FIFO溢出或保持寄存器已装载,溢出或保持寄存器已装载,称为称为HSI中断。中断。1.HSI.01.HSI.0中断中断中断中断HSI.0中断属于外部中断,当中断属于外部中断,当I=1,且且INT_MASK.4为为1时,时,HSI.0的输入端出现正跳变的输入端出现正跳变时将引起中断。时将引起中断。开始开始开始开始HSI数据有效的中断方式由数据有效的中断方式由IOC1.7决定。决定。IOC1.7=1时,为时,为FIFO溢出产生中断溢出产生中断,即当,即当FIFO寄存器寄存器装满装满7个事件后,第个事件后,第8个事件触发个事件触发中断。中断。IOC1.7=0时,为保时,为保持寄存器装载中断持寄存器装载中断,即,即一旦有事件发生,其状态和时间立即送至保一旦有事件发生,其状态和时间立即送至保持寄存器,并产生中断。持寄存器,并产生中断。2.HSI2.HSI数据有效中断数据有效中断数据有效中断数据有效中断HSI中断由中断由HSI.0HSI.3公用。因此,该中断发生公用。因此,该中断发生后,必须查询后,必须查询HSI_STATUS才能确定哪一个引脚才能确定哪一个引脚有事件发生。有事件发生。五、五、五、五、HSIHSI应用应用应用应用1.HSI1.HSI应用要点应用要点应用要点应用要点读读HSI_STATUS和和HSI_TIME之之前前,必必须须设设置置读读取取条条件件(查查询询或或中中断断方方式式)。在在查查询询IOS1时时,应应先先复复制制该该寄寄存存器器内内容容再再进进行行测测试试,否否则则会会破破坏坏IOSI的内容。的内容。应应先先读读HSI_STATUS,再再读读HSI_TIME(在在读读该该寄寄存存器器时时,HSI_STATUS寄寄存存器器的的信信息息自自行行消消失)。失)。中中断断方方式式下下,进进行行高高
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服