单片机f习题6答案学习资料Word文档下载推荐.docx
- 文档编号:18147017
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:8
- 大小:113.73KB
单片机f习题6答案学习资料Word文档下载推荐.docx
《单片机f习题6答案学习资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机f习题6答案学习资料Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
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<
reg51.h>
intrins.h>
#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>
y--);
voidexter0()interrupt2
{
for(i=4;
i>
i--)
P1=0x3f;
//送入段选信号7f,使数码管显示8
delay(500);
P1=0x00;
//送入段选信号00,使数码管熄灭
}
8.电路如图6-12所示,要求单片机主程序控制P0口数码管循环显示0~9;
外部中断
发生时,控制P2口控制数码管显示0~9,外部中断
发生时,控制P1口数码管显示0~9,外部中断
为高优先级,外部中断
为低优先级,都采用边沿触发方式,数码管为共阳极数码管。
图6-12单片机外中断
#include<
#defineuintunsignedint
ucharcodetable[]=
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
voiddelayms(uintx)
inti,j;
for(i=x;
for(j=110;
j>
j--);
voidinit()
IT0=1;
//INT0边沿触发。
IT1=1;
//INTl边沿触发。
EA=1;
//开总中断
EX0=1;
//使能INT0
EX1=1;
//使能INTl
PX1=1;
//中断1高优先级
PX0=0;
//中断0低优优先
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<
k++)
P1=table[k];
P1=0xff;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 习题 答案 学习 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)