单片机课后题参考答案.ppt

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

习题参考答案(P.204) 1.什么是中断、中断源和中断优先级? (见P173,174,175) 2.8051中断有多少优先级 答:(见p176) 2个 习题参考答案(P.204) 习题3. 8051中断的中断响应条件是什么? 答: 1、中断寄存器IE中的EA和相应的中断使能位激活; 2、CPU没有在处理同级或者更高级的中断; 3、现行执行周期是所执行指令的最后一个周期; 4、当前指令不是RETI或者是访问IE或IP的指令。 4. 8051的中断响应过程是怎样的? 答:CPU响应中断后,由硬件自动执行如下的功能操作: (1) 根据中断请求源的优先级高低,对相应的优先级状态触发器置1。 (2) 保护断点,即把程序计数器PC的内容压入堆栈保存。 (3) 清内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)。 (4) 把被响应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行。各中断服务程序的入口地址见表。 BTW:5个中断源及入口地址表 BTW:5个中断源及入口地址表 编 号 中 断 源 入 口 地 址 0 外部中断0 0003H 1 定时器/计数器0 000BH 2 外部中断1 0013H 3 定时器/计数器1 001BH 4 串行口中断 0023H 习题5. 若8051的外部中断0为边沿触发方式,简述IE0标志的检测和置位过程。 答: 8051的CPU在每个机器周期采样引脚INT0上的电平,当前一个周期采样为高,而这个周期采样为低,即置位中断标志IE0。 同时8051的CPU在每个机器周期还采样中断标志IE0,如果中断标志IE0被置位,中断被激活,且没有中断阻止条件,则CPU自动转向中断0的入口地址0x0003进入中断服务程序。 习题6. 8051的中断系统如何实现两级中断嵌套? 答: 可以利用寄存器IP通过设置不同中断的优先级,或者利用中断的自然优先级实现两级中断嵌套。当单片机处理一个中断的时候,可以再去响应高优先级的中断,或者自然优先级较高的中断。但不能去响应同级或者更低的中断。 (P176) 习题9. 8051中断程序如何进行现场保护?何为上下文切换? 答: 中断通过把保存有现场数据的寄存器压入堆栈进行现场保护。 当一个特定任务正在执行时,可能有更紧急的事需要引起CPU的注意。在一个具有优先级的系统中,CPU不是等待第一个任务完成,而是假定前一个任务已经完成,立即处理新的任务。若程序流程立刻转向新任务,则新任务使用的各个寄存器将会破坏第一个任务使用的中间信息。但第一个任务恢复运行时,寄存器的值将不再可靠而导致错误的发生。解决问题的方法是每次发生任务的切换时执行一些指令进行现场保护和现场恢复,这就是上下文切换。p179 10. 8051定时器方式和计数器方式的区别是什么? 基本的8051有2个可编程的16位定时器/计数器(各工作方式只是用到哪些位?)。 计数器内部晶振驱动-------定时器; 计数8051的输入引脚的脉冲信号----计数器。 定时器实际上也是工作在计数方式下的。 解. 1.50Hz的方波即周期为20ms的方波,要求定时间隔为10ms,每次时间到时,P1.6脚取反。 定时器计数频率为fosc/12=500kHz 其周期即单片机的机器周期为12/fosc=2us 计数周期10ms需要计数10ms/2us=5000次 计数器向上计数需要的初值为65536-5000 习题14. 设fosc=6MHz,利用定时器0的方式1在P1.6口产生一串50Hz的方波。定时器溢出时采用中断方式处理。(1.设计分析;2.流程;3.注释) 主程序 TMOD TMOD=0x01 D TH0,TL0装初值 D EA,ET0,TR0置1 TMOD P1_6=!P1_6 TMOD 等待中断 D TH0,TL0装初值 T0中断 主程序流程 中断服务程序流程 TMOD 返回 #include reg51.h sbit P1_6=P1^6; void timer0() interrupt 1 using 1 { TH0=65536-5000/256; TL0=65536-5000%256; P1_6=!P1_6; //取反 } void main() { TMOD=0x01; //T0方式1 TH0=65536-5000/256; TL0=65536-5000%256; EA=1; //开总中断 ET0=1; //使能T0中断 TR0=1; //启动T0 while(1); //等待 } 15. 用875

文档评论(0)

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

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

1亿VIP精品文档

相关文档