最新8051内部资源C编程剖析教学讲义ppt.ppt

最新8051内部资源C编程剖析教学讲义ppt.ppt

ID:62259364

大小:1.62 MB

页数:90页

时间:2021-04-24

最新8051内部资源C编程剖析教学讲义ppt.ppt_第1页
最新8051内部资源C编程剖析教学讲义ppt.ppt_第2页
最新8051内部资源C编程剖析教学讲义ppt.ppt_第3页
最新8051内部资源C编程剖析教学讲义ppt.ppt_第4页
最新8051内部资源C编程剖析教学讲义ppt.ppt_第5页
资源描述:

《最新8051内部资源C编程剖析教学讲义ppt.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、8051内部资源C编程剖析8051内部资源的C编程中断31串行口33定时器/计数器(T/C)21.中断中断源31.1中断响应31.3中断的控制1.2寄存器组切换31.4中断编程31.51.1中断源IT0、IT1外部中断0,1触发方式选择位;软件设置;1—下降沿触发,高电平到低电平的跳变;0—电平触发,低电平可引起中断;IE0、IE1外部中断0,1请求标志位;当产生中断请求时由硬件置位,CPU响应中断后,由硬件清除;TF1TF0IE1IT1IE0IT01.1中断源TF0、TF1定时器/计数器0,1溢出中断请求标志;当定时/计

2、数溢出时由硬件置位,CPU响应中断后由硬件清除;TF1TF0IE1IT1IE0IT01.1中断源2)串口控制寄存器SCONRI串行口接收中断标志位,串行口接收完一帧数据后请求中断,由硬件置位,置位后由软件清“0”;TI串行口发送中断请求标志位,当串行口发送完一帧数据后请求中断由硬件置位,由软件清零;TIRI1.2中断的控制1、中断的控制管理通过寄存器IE和IP编程实现中断允许寄存器IE:EX0,EX1:外部中断0,1的中断允许位;1—开中断,0—关中断;ET0,ET1:定时器/计数器0,1溢出中断允许位,1—开中断,0—关

3、中断;EAET2ESET1EX1ET0EX0中断允许寄存器IE1.2中断的控制ES,串行口中断允许位,1—串行口开中断,0—串行口关中断;ET2,定时器/计数器2溢出中断允许位,1—T/C2开中断,0—T/C2关中断;EA,CPU开/关中断控制位;EAET2ESET1EX1ET0EX0中断允许寄存器IE1.2中断的控制2、中断优先级寄存器IP当系统中有多个中断源同时请求中断时,CPU按中断源的优先级别,由高到低分别响应;PX0,PX1,外部中断0,1中断优先级控制位;1—高优先级,0—低优先级PT0,PT1,定时器/计数器

4、0,1中断优先级控制位;PS,串行口中断优先级控制位;PSPT1PX1PT0PX0中断优先级寄存器IP1.2中断的控制8051被复位后,5个中断源都在同一个优先级,若此时其中几个中断源同时产生中断,CPU按照硬件优先级链路顺序响应中断;外部中断0定时器/计数器0外部中断1定时器/计数器1串行口中断PSPT1PX1PT0PX0高低1.3中断响应响应中断的阻止条件:1)CPU正在处理同级或更高级的中断;2)正在执行的是RETI或是访问IE或IP指令;3)现行机器周期不是所执行指令的最后一个机器周期;1.3中断响应CPU响应中断

5、后执行如下操作:1)硬件清除相应的中断请求标志;2)执行一条硬件子程序,保护断点,并转向中断服务程序的入口地址;3)结束中断时执行RETI指令,恢复断点,返回主程序;1.3中断响应各中断服务程序入口地址:1)外部中断00003H2)定时器/计数器0000BH3)外部中断10013H4)定时器/计数器1001BH5)串行口中断0023H各中断程序的入口地址仅间隔8个字节,编译器在这些地址放入无条件转移指令,跳转到服务程序的实际地址;1.4寄存组切换当一个特定的任务正在执行,如果遇到更紧急的任务时,在一个具有优先级的系统中,C

6、PU假定第一个任务已经完成,立即处理新任务;转向新任务后,所使用的通用寄存器破坏了第一个任务使用的中间信息;为避免错误发生,使用上下文切换;8051有4个寄存器组,每组8个字节,分配R0~R7对应8个字节;(PSW中的两位RS0与RS1来设置),寄存器组使得有非常快的上下文切换1.4寄存组切换当发生中断任务时,采用不同的寄存器组,一个任务的8个字节保留,另一个不同的8个字节用在新任务中;除了PSW中的两位设置外,也可采用using指令指定;1.4寄存组切换中断服务程序的完整语法如下:返回值函数名(参数)[模式][重入]in

7、terruptnusingnInterrupt后接一个0~31的常整数,不允许使用表达式;1.4寄存组切换中断不允许用于外部函数,它对目标函数代码的影响如下:1)当调用函数,SFR中的ACC,B,DPH,DPL和PSW入栈;2)如果不使用寄存器组切换,中断函数所使用的所有工作寄存器都入栈;3)函数退出前,所有寄存器出栈;4)函数由8051的指令“RETI”终止;1.5中断编程中断服务程序仅设标志保存I/O输入状态#include#defineucharunsignedchar;ucharstatus;vo

8、idservice_int1(void)interrupt2using2;{flag=1;status=p1;}1.5中断编程voidmain(void){IP=0x04;/*置INT1高优先级中断*/IE=0x84;/*INT1开中断,CPU开中断*/for(;;){if(flag){switch(s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。