单片机f习题6答案学习资料.docx
- 文档编号:5175696
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:8
- 大小:113.73KB
单片机f习题6答案学习资料.docx
《单片机f习题6答案学习资料.docx》由会员分享,可在线阅读,更多相关《单片机f习题6答案学习资料.docx(8页珍藏版)》请在冰豆网上搜索。
单片机f习题6答案学习资料
单片机f-习题6答案
习题6
1.什么是中断系统?
中断系统的功能是什么?
答:
中断系统是指实现中断过程的硬件逻辑和实现中断功能的指令的统称。
为了满足单片机系统中各种中断的要求,中断系统一般具备如下基本功能:
(1).能实现中断及返回
(2).能实现优先权排队
(3).能实现中断嵌套
2.什么是中断嵌套?
答:
当CPU响应某一外设的中断请求,正在进行中断处理时,若有优先权级别更高的中断源提出中断请求,则CPU能中断正在进行的中断服务程序,响应高级中断,在高级中断处理完后,再继续执行被中断的中断服务程序。
这一过程称为中断嵌套,如图6-1所示。
若发出新的中断申请的中断源的优先级与正在处理的中断源同级或更低时,则CPU不响应这个中断申请,直至正在处理的中断服务程序执行完后才去处理新的中断申请。
图6-1中断嵌套
3.8051单片机的中断源有几个?
各个中断的标志位是什么?
答:
80C51单片机的中断系统有5个中断源,它们是:
(1)外部中断0:
由
(P3.2)引脚输入,由外部中断0触发方式选择位IT0选择其为低电平有效还是下降沿有效,当CPU检测到
引脚上出现有效的中断请求信号时,中断请求标志位IE0置1,向CPU申请中断。
(2)外部中断1:
由
(P3.3)引脚输入,由外部中断1触发方式选择位IT1选择其为低电平有效还是下降沿有效,当CPU检测到
引脚上出现有效的中断请求信号时,中断请求标志位IE1置1,向CPU申请中断。
(3)定时器/计数器T0溢出中断请求,当T0定时时间到或计数满后,中断请求标志位TF0由硬件置1,向CPU申请中断。
(4)定时器/计数器T1溢出中断请求,当T1定时时间到或计数满后,中断请求标志位TF1被硬件置1,向CPU申请中断
(5)串行口中断请求,当串行口接收完一帧数据时,中断请求标志RI被硬件置1,或当串口发送完一帧数据时,中断请求标志TI被硬件置1。
4.各个中断源的中断请求是如何撤销的?
答:
定时器/计数器中断请求的撤销
定时器/计数器的中断请求被响应后。
硬件会自动把中断请求标志位TF0、TF1清0,因此定时器/计数器中断请求是自动撤销的。
外部中断请求的撤销
(1)电平触发方式外部中断请求的撤销
电平触发方式的中断请求标志是自动撤销的,但外部中断请求信号的低电平可能继续存在,由于单片机对
、
引脚没有控制作用,所以在以后的机器周期采样时,又会把已清0的IE0或IE1标志位重新置1,会多次引起中断,因此需要外接电路来撤销中断请求信号,即在中断响应后把中断请求信号引脚从低电平强制改变为高电平。
常用的电平触发方式外部中断请求信号的撤销电路如图6-8所示。
图6-8电平触发方式外部中断请求的撤销电路
由图6-8可见,用D触发器锁存外来的中断请求电平,外部中断请求信号通过D触发器加到单片机的
或
引脚上。
当外部中断信号使D触发器的CP端发生正跳变时,由于D端接地,Q端输出为0,即向单片机发出中断请求,CPU响应中断后,为了撤销中断请求,可利用D触发器的直接置位端SD实现,把SD端接51单片机的P1.0端,使P1.0端输出一个负脉冲就可以使D触发器置1,从而撤销了低电平的中断请求信号,所需的负脉冲可通过在中断服务程序中增加如下两条语句得到:
P1=P1&0xfe;P1.0=0
P1=P1|0x01;P1.0=1
第一条语句使P1.0为0,P1口的其它各位状态不变。
由于P1.0与直接置1端SD相连,故D触发器Q=1,撤销了中断请求信号。
第二条语句使P1.0为1,即置1端SD不起作用,目的使以后产生的新的外部中断请求信号又能向单片机申请中断。
由此可见,电平触发方式的外部中断请求信号的完全撤销,是通过软硬件相结合的方法来实现的。
(2)边沿触发方式外部中断请求的撤销
边沿触发方式的外部中断请求的撤销,其中断标志位(IE0或IE1)的清0是在中断响应后由硬件自动完成的,因此边沿触发方式的外部中断请求是自动撤销的。
串行口中断请求的撤销
串行口中断的标志位是TI和RI,但对这两个中断标志位CPU不进行自动清0,因为响应串行口的中断后,CPU无法知道是接收中断还是发送中断,所以串行口中断请求的撤销只能使用软件的方法,在中断服务程序中用程序清0,即用如下的语句进行串行口中断标志位的清除:
5.CPU响应中断时,各个中断源的中断入口函数如何编写?
答:
C51的中断函数格式如下:
void函数名()interrupt中断号using工作组
{
中断服务程序内容
}
中断函数不能返回任何值,所以最前面用void;后面紧跟函数名,名字不要与C语言中的关键字相同;中断函数后不带任何参数,所以函数后面的小括号为空;中断号是指单片机中几个中断源的序号,可查表6-1,这个序号是编译器识别不同中断的唯一序号,此处应该设为0;最后面的“using工作组”是指这个中断函数使用单片机内部RAM中4个工作寄存器组中的哪一组,C51编译器在编译程序时会自动分配工作组,因此“using工作组”通常省略不写。
6.编写外部中断0为边沿触发方式的中断初始化程序。
答:
IE=0x81;//EA=1,CPU开中断,EX0=1,允许外部中断0产生中断
IP=0x01;//PX0=1,外中断0为高级中断
IT0=1;//外中断0为边沿触发方式
7.电路如图6-11所示,要求单片机的主程序实现P1口控制一个共阴极数码管的各段依次点亮,不断循环,当有外中断
输入时,使数码管显示0,闪烁4次后,返回原断点处继续执行程序,外中断
的触发方式采用边沿触发方式。
试编写程序。
图6-11单片机外中断
应用系统电路图
答:
程序如下:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
uchari,aa;
voiddelay(uintz);
voidmain()
{
EA=1;//开总中断
EX1=1;//开外部中断1
IT1=1;//将外部中断1设为边沿触发方式
aa=0x01;
P3=0xff;
while
(1)
{
P1=aa;//送入段选信号
delay(1000);
aa=_crol_(aa,1);//将aa循环左移1位后再赋给aa
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidexter0()interrupt2
{
for(i=4;i>0;i--)
{
P1=0x3f;//送入段选信号7f,使数码管显示8
delay(500);
P1=0x00;//送入段选信号00,使数码管熄灭
delay(500);
}
}
8.电路如图6-12所示,要求单片机主程序控制P0口数码管循环显示0~9;外部中断
发生时,控制P2口控制数码管显示0~9,外部中断
发生时,控制P1口数码管显示0~9,外部中断
为高优先级,外部中断
为低优先级,都采用边沿触发方式,数码管为共阳极数码管。
试编写程序。
图6-12单片机外中断
、
应用系统电路图
答:
程序如下:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
voiddelayms(uintx)
{
inti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
voidinit()
{
IT0=1;//INT0边沿触发。
IT1=1;//INTl边沿触发。
EA=1;//开总中断
EX0=1;//使能INT0
EX1=1;//使能INTl
PX1=1;//中断1高优先级
PX0=0;//中断0低优优先
}
voidmain()
{
uchari;
init();
while
(1)
{
P0=table[i];
i=(i+1)%10;/*显示0-9*/
delayms(500);
}
}
voidxint0()interrupt0
{
ucharj;
for(j=0;j<10;j++)
{
P2=table[j];
delayms(500);
}
P2=0xff;
}
voidxint1()interrupt2
{
uchark;
for(k=0;k<10;k++)
{
P1=table[k];
delayms(500);
}
P1=0xff;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 习题 答案 学习 资料