- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c8051学习随记-中断,天津记者会中断,笔记本系统中断,中断中止怎么记忆,桃花源记通讯中断,笔记本wifi中断,单片机中断学习,自主学习笔记随笔,三严三实学习笔记,学习笔记
中断
2013年3月11 日星期一
15:30
编译器及其对 语言的扩充允许编程者对中断的所有方面进行控制。
C51 C
定义一个带扩展性的函数语法如下:
返回类型函数名([参数])[模式][再入][中断n]using n
“using”不允许用于外部函数,它对函数的目标代码影响如下:
l 函数入口处将当前寄存器保存入栈;
l 指它的寄存器还会改变;
l 函数退出前寄存器组被恢复。
“using”定义对于返回一个寄存器内的值的函数是无用的。编程者必须十分小心以保证任何寄存器切换都只在自己控制的区域发生。如果
不做到这一点将会产生不正确的函数结果。即使当编程者使用同一寄存器组时,带“using”属性的函数原则上也不能返回一个位值。
使用中断服务函数的完整语法如下:
返回值函数名([参数])[模式][再入] interrupt n[using n]
“interrupt”后接一个0~31的常数,不允许使用表达式。
中断不允许用于外部函数,它对函数目标代码的影响如下:
◇当使用函数时,SFR中的ACC、B、DPH、DPL和PSW(当需要时)入栈;
◇如不使用寄存器组切换,甚至中断函数所需的所有工作寄存器(Rn)都入栈;
◇函数退出前,所有的寄存器内容出栈;
◇函数由8051控制命令“RETI”终止。
◇不能进行参数传递,如果中断过程包括任何参数声明,编译器将产生一个错误信息;
◇无返回值,如果想定义一个返回值将产生错误,然而,如果返回整型值编译器将不产生错误信息,因为整型值是默认值,因而编译器不能
清楚识别。
◇编译器会识别对中断过程的直接调用并拒绝它们,在任何情况下不能直接调用中断过程,因为退出该过程是由操作码RETI完成的。RETI影
响8051芯片的硬件中断系统,由于硬件上没有中断请求存在,因而这个操作码的结果是不定的并且通常是致命的。由于疏忽,可能用指针来
间接调用它,这是值得注意的。
◇编译器从绝对地址8n+3处产生一个中断向量,其中n为中断号,该向量包括一个到中断过程的跳转,向量的产生可由指令NOINTVECTOR压
缩。因而用户有能力从独立的汇编模块中提供中断向量。
◇C51编译器允许0~31个中断,究竟允许哪些中断依赖于使用的8051系列芯片,编译器不能检查。
◇如果中断程序中有浮点运算,必须保持浮点寄存器状态,当没有其它程序执行浮点运算时,可能不保存,函数“fsave”和“fprestore”
用来保存浮点状态。
◇中断过程调用的函数所使用的寄存器必须与中断过程相同,当没有使用“using”指令时,编译器会选择一个寄存器组作绝对寄存器访
问,当子程序使用另一个寄存器组时会发生错误,用户必须保证按要求使用相应寄存器组,C编译器不会对此检查。
C8051F35x系列器件包含一个扩展的中断系统,支持12个中断源,每个中断源有两个优先级。中断源在片内外设与外部输入引脚之间的分配
随器件的不同而变化。每个中断源可以在一个SFR中有一个或多个中断标志。当一个外设或外部源满足有效的中断条件时,相应的中断标志
被置为逻辑‘1’。如果一个中断源被允许,则在中断标志被置位时将产生中断。一旦当前指令执行完,CPU产生一个LCALL到预定地址,开
始执行中断服务程序(ISR)。每个ISR必须以RETI指令结束,使程序回到中断前执行的那条指令的下一条指令。如果中断未被允许,中断标
志将被硬件忽略,程序继续正常执行。中断标志置‘1’与否不受中断允许/禁止状态的影响。
每个中断源都可以被独立地编程为两个优先级中的一个:低优先级或高优先级。一个低优先级的中断服务程序可以被高优先级的中断所中
断,但高优先级的中断不能被中断。每个中断在 SFR(IP 或 EIP1)中都有一个配置其优先级的中断优先级设置位,缺省值为低优先级。如
果两个中断同时发生,具有高优先级的中断先得到服务。如果这两个中断的优先级相同,则由固定的优先级顺序决定哪一个中断先得到服
务。
中断源 中断向量 优先级 位寻址 硬件清除 中断允许 优先级控制
复位 0x0000 最高 无 N/A N/A 始终允许 总是最高
外部中断 0 (/INT0) 0x0003 0 IE0 Y Y EX0 PX0
(TCON.1) (IE.0) (IP.0)
定时器
文档评论(0)