大学单片机课后习题参考答案ppt课件

上传人:桔**** 文档编号:578501316 上传时间:2024-08-24 格式:PPT 页数:26 大小:174.50KB
返回 下载 相关 举报
大学单片机课后习题参考答案ppt课件_第1页
第1页 / 共26页
大学单片机课后习题参考答案ppt课件_第2页
第2页 / 共26页
大学单片机课后习题参考答案ppt课件_第3页
第3页 / 共26页
大学单片机课后习题参考答案ppt课件_第4页
第4页 / 共26页
大学单片机课后习题参考答案ppt课件_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《大学单片机课后习题参考答案ppt课件》由会员分享,可在线阅读,更多相关《大学单片机课后习题参考答案ppt课件(26页珍藏版)》请在金锄头文库上搜索。

1、习题参考答案(P.204)1.什么是中断、中断源和中断优先级?见P173,174,1752.8051中断有多少优先级答:见p1762个习题参考答案(P.204)习题3. 8051中断的中断呼应条件是什么?答:1、中断存放器IE中的EA和相应的中断使能位激活;2、CPU没有在处置同级或者更高级的中断;3、现行执行周期是所执行指令的最后一个周期;4、当前指令不是RETI或者是访问IE或IP的指令。4. 8051的中断呼应过程是怎样的?答:CPU呼应中断后,由硬件自动执行如下的功能操作: (1) 根据中断恳求源的优先级高低,对相应的优先级形状触发器置1。 (2) 维护断点,即把程序计数器PC的内容压

2、入堆栈保管。 (3) 清内部硬件可去除的中断恳求标志位(IE0、IE1、TF0、TF1)。 (4) 把被呼应的中断效力程序入口地址送入PC,从而转入相应的中断效力程序执行。各中断效力程序的入口地址见表。BTW:5个中断源及入口地址表BTW:5个中断源及入口地址表编 号中 断 源入 口 地 址0外部中断00003H1定时器/计数器0000BH2外部中断10013H3定时器/计数器1001BH4串行口中断0023H习题5. 假设8051的外部中断0为边沿触发方式,简述IE0标志的检测和置位过程。答: 8051的CPU在每个机器周期采样引脚INT0上的电平,当前一个周期采样为高,而这个周期采样为低,

3、即置位中断标志IE0。 同时8051的CPU在每个机器周期还采样中断标志IE0,假设中断标志IE0被置位,中断被激活,且没有中断阻止条件,那么CPU自动转向中断0的入口地址0x0003进入中断效力程序。习题6. 8051的中断系统如何实现两级中断嵌套?答: 可以利用存放器IP经过设置不同中断的优先级,或者利用中断的自然优先级实现两级中断嵌套。当单片机处置一个中断的时候,可以再去呼应高优先级的中断,或者自然优先级较高的中断。但不能去呼应同级或者更低的中断。P176习题9. 8051中断程序如何进展现场维护?何为上下文切换?答: 中断经过把保管有现场数据的存放器压入堆栈进展现场维护。 当一个特定义

4、务正在执行时,能够有更紧急的事需求引起CPU的留意。在一个具有优先级的系统中,CPU不是等待第一个义务完成,而是假定前一个义务曾经完成,立刻处置新的义务。假设程序流程立刻转向新义务,那么新义务运用的各个存放器将会破坏第一个义务运用的中间信息。但第一个义务恢复运转时,存放器的值将不再可靠而导致错误的发生。处理问题的方法是每次发生义务的切换时执行一些指令进展现场维护和现场恢复,这就是上下文切换。p17910. 8051定时器方式和计数器方式的区别是什么? 根本的8051有2个可编程的16位定时器/计数器各任务方式只是用到哪些位?。 计数器内部晶振驱动-定时器; 计数8051的输入引脚的脉冲信号-计

5、数器。 定时器实践上也是任务在计数方式下的。解. 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.注释主程序TMODTMOD=0x01DTH0,TL0装初值DEA,ET0,TR0置1TMODP1_6=!P1_6TM

6、OD等待中断DTH0,TL0装初值T0中断主程序流程中断效力程序流程TMOD前往#include sbit P1_6=P16;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. 用8751制造一个模拟航标灯,灯接在p1.7口上,IN

7、T0接光敏元件。使它具有如下功能:白天航标灯熄灭;夜间间歇发光,亮2S,灭2S,周而复始。将信号作门控信号,启动定时器定时。按以上要求编写控制主程序和中断效力程序。解一:设INT0口高电平常表示白天,低电平常表示黑夜,查询方式。采用定时器T0,任务方式1,外接晶振6MHz。定时100ms,20次中断就是2s。产生100ms中断需求100 000/2=50000个计数。当2s到了,就改动P1.7形状,控制LED灯。主程序和中断效力程序流程图分别如下:T0装初值overflow_count+前往#include sbit LED=P17; /*P1.7电平控制灯亮灯灭,高电平灯亮*/sbit da

8、rk=P32; /*经过P3.2脚INT0判别白天黑夜,INT0 低电平表黑夜*/static unsigned long overflow_count = 0;void timer0() interrupt 1 using 0 TH0=65536-50000/256; TL0= 65536-50000 %256; overflow_count+;void main() TMOD=0x01;/T0方式1 TH0=65536-50000/256; /T0装初值 TL0= 65536-50000 %256; EA=1; ET0=1; TR0=1; /运用T0中断 do while(!dark) /

9、LED晚上闪烁 if ( overflow_count = 20) /100ms*20=2s overflow_count = 0; LED = !LED; LED=0; /LED白天熄灭 while1解二:INT0中断方式#include sbit LED=P17; /*P1.7电平控制灯亮灯灭,高电平灯亮*/sbit dark=P32; /*经过P3.2脚INT0判别白天黑夜,INT0 下降沿到来表黑夜*/static unsigned long overflow_count = 0;bit flg=1; /* 设标志位*/void timer0() interrupt 1 using 0

10、 / TH0=65536-50000/256; TL0= 65536-50000 %256; overflow_count+; void int_0() interrupt 0 using 1 if ( overflow_count = 20) /100ms*20=2s overflow_count = 0; LED = !LED; if(dark) flg=0; /dark高电平为白天 else flg=1; void main() TMOD=0x01;/T0方式1 TH0=65536-50000/256; /T0装初值 TL0= 65536-50000 %256; PX0=1; /ITN0

11、中断优先 IT0=1; /INT0下降沿触发p174 EA=1; ET0=1;EX0=1; TR0=1; /*运用T0, INT0中断*/ while1 while(flg); / 等待中断 LED=0; /LED白天熄灭 普通在LED闪烁的时候,假设运用延时程序dlmsT也可以,但是此题要求用定时器。没有延时,人眼视觉看不清。人眼可以觉察的景物变化频率20Hz,也就是LED闪烁至少要延时50ms,普通1s钟即可,T=?void dlms ( uint a ) /延时a*1ms uchar j; while(a-) for(j=0;j125;j+) ; 16.希望8051单片机定时器0的定时值

12、以内部RAM的20H单元的内容为条件而可变,即当20H=00H时,定时值为10ms;当20H=01H时,定时值为20ms。请根据以上要求对定时器0初始化。单片机时钟频率为12MHz。解:fosc=12MHz时,机器周期为1us。10ms间隔内计数器计数10 000/1=10000次; 20ms间隔内计数器计数10 000/1=20000次。用T0定时器,都采用定时方式1.由于T0定时器分别装两次不同的初值,所以可采用查询TF0的方式。#include unsigned char data flag _at_ 0x20;void main() TMOD=0x01;/T0,T1方式1 TR0=1;

13、/ if(flag=0) TH0=65536-10000/256; /T0装初值 TL0= 65536-10000 %256; do while(!TF0); /* 不断等到计数溢出*/ TF0=0; else if(flag=1) TH1=65536-20000/256; /T1装初值 TL1= 65536-20000 %256; do while(!TF0); /* 不断等到计数溢出*/ TF0=0; 解. fosc=12MHz时,最大定时为几十ms。100Hz对应的周期为10ms。占空比2:1时,高电平6.7ms,低电平3.3ms。可取0.1ms定时,对应计数0.1ms/1us=100次

14、。定时器计数频率为fosc/12=1MHz其周期即单片机的机器周期为12/fosc=1us周期10ms需求计数100次中断,其中高电平期间67次中断。习题18. 用单片机和内部定时器来产生矩形波。要求频率为100Hz,占空比为2:1(高电平的时间长)。设单片机时钟频率为12MHz。写出有关的程序。主程序TMODTMOD=0x01DTH0,TL0装初值DEA,ET0,TR0置1TMOD等待中断主程序流程中断效力程序流程(#include #defined unchar unsigned charsbit WAVE=P10uchar time;uchar period = 100;uchar hi

15、gh = 67; void timer0() interrupt 1 TH0 = ( 65536 100 ) / 256; TL0 = ( 65536 100 ) % 256; if( +time = high ) WAVE=0; /高高电电平常平常间间到了到了变变低低电电平平 else if ( time = period ) time=0; WAVE = 1; void main() TMOD=0x01;/T0方式1 TH0=(65536-100)/256;/开场为高电平 TL0=(65536-100)%256; EA=1;/开总中断 ET0=1;/使能T0中断 TR0=1;/启动T0 while(1);/等待19.8051系列单片机用什么提供串行通讯的系列单片机用什么提供串行通讯的定时?定时?答:串口方式答:串口方式1、3,普通采用定时器,普通采用定时器1做波做波特率发生器,特率发生器,T1单位时间内溢出的次数即为单位时间内溢出的次数即为定时器定时器1的溢出率,然后可以计算出波特率。的溢出率,然后可以计算出波特率。 波特率波特率= 但方式但方式0,2波特率是固定的波特率是固定的2SMOD fosc /32,直接跟,直接跟SMOD位和位和fosc有关有关波特率波特率=2SMOD ( T1的溢出率的溢出率 ) /32

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号