网站大量收购独家精品文档,联系QQ:2885784924

08-8051内部资源的C的编程.ppt

  1. 1、本文档共156页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
08-8051内部资源的C的编程

八、8051内部资源的C编程 ;8.1 中断;8.1.1 中断源;IE 寄存器中的使能位和C 中的中断号; 标准8052的中断源则有6个,其它增强型单片机最多可以有15个中断源。增加合适的数字电路硬件,还可以把各种硬件中断“线或”成为一个外部中断输入,然后再检索引起中断的特定中断源,这样可以扩展很多的外部中断源,比如用于键盘输入。; 1. 定时器/计数器控制寄存器TCON:; 2. 串行口控制寄存器SCON:;8.1.2 中断的控制;ES:串行口中断允许位,取1时允许串行口的发送和接受中断,否则关闭串行口中断;;PX0/PX1:外部中断0/1的中断优先级控制位,取1时外部中断0/1工作在高优先级;; 当多个相同优先级中断源同时申请中断服务时,CPU按照片内硬件优先级的顺序响应中断,硬件优先级的顺序如下:;8.1.3 中断响应; 8051在响应中断请求时,由硬件自动形成转向与该中断源对应的服务程序入口地址,并称之为硬件向量中断法。各中断源的中断服务程序入口地址如下:; 各中断服务入口地址仅间隔8字节,编译器只是在这个地址放入无条件转移指令,让程序再次跳转到服务程序的实际入口地址。; 当向量中断发生时,硬件禁止所有中断(清除EA)。此时外部中断或者定时溢出的标志位由硬件自动清除,但是串行口标志位不会由硬件自动清除,通常需要服务程序判别RI还是TI后,由服务程序清除。; 在实时系统中建立中断优先级是很重要的;中断优先级的设置由“任务可以等待多长时间”决定。例如,有包含下列任务的项目:; 现在了来设置优先级:;8.1.4 寄存器组切换; 8051是一个基于累加器的单片机,具有8个通用寄存器R0—R7。8051一共提供四组可以切换的通用寄存器组,但是每次只能使用其中的一组。; 当运行一个中断任务时,采用不同的寄存器组可以避免大量用于保护现场的入栈操作,通常情况下只需要保存A和B就可以了,最坏的情况可能还需要保存DPTR数据指针。; using不允许用于外部函数,它对函数的目标代码具有如下3条影响:;1. 介绍;2. 中断驱动系统和查寻系统; 有些系统有很多输入源,而且看上去每个输入源都需要中断,这就需要考虑如何在他们之中分配中断,或者对其中的一些输入源使用查询的方法。 例如,有一个电机控制系统对电机传感器送过来的信号进行监视,同时又要接收主CPU送过来的状态查询请求。 丢失一个查询请求信号不会对系统造成很大的影响,而丢失传感器信号可能会对电机造成致命的影响,所以应该把前者的优先级定得比后者高。 如何建立优先级,要从系统的高度去考虑。; 决定了输入源的优先级之后,还要决定如何把信号引入处理器。 对输入信号进行查询时,那些需要快速查询的信号应直接接到端口引脚上,处理器对端口的寻址只需要一个指令周期;对于查询速度要求不高的信号,可通过锁存器由系统总线接入处理器。; 对信号进行查询,应根据不同的情况采取不同的方法。如果输入信号是人发出的,那么10Hz的查询频率就够了,人相当于一个很慢的I/O器件,当他们使用按键向系统传送信息时,10Hz的查询速率和更高的查询速率没什么分别,用户接口信号可在定时器中断,或主循环中查询。;3. 中断的电平和边沿触发; 在边沿触发情况下,当外部中断引脚电平由高向低变化时,将触发中断处理器。每个指令周期查询中断引脚,当前一个指令周期时引脚电平为高,紧接着下一个指令周期检测到引脚电平为低时,将触发中断。; 电平方式在多个器件共用一个中断入口的情况下比较有用,当正在执行一个中断服务程序的时候,另外一个中断请求又来了,这样信号线一直被置低,边沿触发方式将检测不到这个中断,这时用电平触发方式就比较好,因为信号线一直被置低,当上一个中断服务程序完成之后,将立即执行下一个服务程序,只要有中断请求。这可使程序提供任何中断服务,这个过程将重复直到执行完所有的中断服务。;4. 共用中断;5. 扩充外部中断数; 扩展外部中断最简单的方法就是把定时器设置为计数模式,然后把信号接到计数器相应的引脚T0或T1上。为了使每出现一个从高到低的脉冲的时候产生一个中断,把定时器设置为自动重装模式,令重装值为0FFH,当计时器检测到从高到低的脉冲时,定时器将溢出,这时将产生一个中断请求。; 这种方法还是有一定的限制的,第一点,它只能是边沿触发,所以当你需要的是一个电平触发的中断时,就要在中断中不断地对T0或T1进行采样,直到它们变为高;第二点,检测到下降沿和产生中断之间有一个指令周期的延时,这是因为在检测到下降沿一个指令周期之后,计时器才加

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档