HOLTEK单片机HT48R05A-1内部结构原理大揭秘
|
外部中断是由INTC引脚上的电平由高到低的变化触发的,相关的中断请求位(EIF、INTC的第4位)被置位,当中断允许,堆栈未满,一个外部中断触发时,将会产生地址04H的子程序调用。中断请求标志(EIF)位和EMI位将会被清除来禁止中断嵌套。 内部定时/计数器中断发生时,会设置定时/计数器中断请求标志位(TF、INTC的第5位),中断请求是由内部定时器溢出产生的。当中断允许,堆栈未满,并且TF已被置位,就会产生地址08H的子程序调用,该中断请求标志位(TF)被复位并且EMI位被清除。以便禁止中断嵌套。
单片机在执行中断子程序期间,其它的中断响应会被暂停,直到RETI指令被执行或是EMI和相关的中断控制位被置位(堆栈未满时)。若要从中断子程序返回时,只要执行RET或RETI指令即可,RETI指令将会自动置位EMI位来允许中断服务,而RET则不能自动置位EMI。
若中断在两个连续的T2脉冲的上升沿间发生,同时中断响应被允许的话,那么在两个T2脉冲后,该中断会被服务,如果同时发生中断服务请求,那么下列表中列出了中断服务优先等级,这种优先等级也可以通过EMI位的复位来屏蔽。
中断控制寄存器(INTC)其RAM地址是0BH,由定时/计数器中断请求标志位(TF)、外中断请求标志位(EIF)、定时/计数器允许位(ETI)、外部中断允许位(EEI)和主中断允许位(EMI)组成。EMI、EEI和ETI是用来控制中断的允许/禁止的状态的,这些位防止正在进行中断服务中的中断请求。一旦中断请求标志位(EEI、ETI)被置位,它们将在INTC中被保留下来,直到相关中断被服务或由软件指令清除。 建议不要在中断子程序中使用"CALL"指令调用子程序,因为它可能会破坏原来的控制序列,而中断经常随机发生或某一个确定的应用程序可能要求立即服务,基于上述情况,如果只剩下一个堆栈,若此时中断不能很好的被控制,而且在这个中断服务程序中又执行了CALL子程序调用,则会造成堆栈溢出而破坏原先的控制序列。
定时/计数器
HT48R05A-1提供一个定时/计数器。定时/计数器包含一个8位可编程的向上计数的计数器,时钟可以来自外部时钟或系统时钟。
如果采用内部系统时钟,那么只有一个参考时基信号,这个内部时钟来自fsys。
外部时钟输入,允许用户去计量外部事件,测量时间长度或脉冲宽度或产生一个精确的时基信号。
有两个寄存器与定时/计数器相关联即TMR(0DH)和TMRC(0EH)。有两个物理寄存器对应TMR的位置,写入TMR会将初始值装入定时/计数器的预置寄存器中,而读TMR则会获得定时/计数器的内容,TMRC是定时/计数器控制寄存器。
TM0和TM1位定义操作模式,事件计数模式用来记录外部事件,这时时钟来源于外部TMR引脚,定时器模式是作为一个普通的定时器功能,时钟源来自fINT时钟。脉冲宽度测量模式能用来计量外部引脚TMR上的高电平或低电平的宽度,计数是基于fINT时钟。
|
||||||||||||||||
查看所有评论




世纪芯是一支由众多技术研发专家和科研企业结盟组成了技术服务型团队,自组建以来一直帮助政府、知名科研机构以及国内众多抄板企业攻克技术难题,10年来,我们专注反向技术研究并不断挑战大型疑难项目,目前已经成为国内抄板企业的中流砥柱。