当前位置:
文档之家› 单片机实用技术(钱游)项目三课后习题及答案
单片机实用技术(钱游)项目三课后习题及答案
char utime=0;
char code tab[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(int time)
{
while(time)
{
time--;
}
}
void display()
{
P0=tab[count/10]; //显示十位
AT89C51单片机中断源可以设置两个优先级——高优先级和低优先级。每个中断源优先级的设定由IP的各控制位决定。
CPU响应中断后即转至一段程序入口,准备执行这段程序,这段程序叫做中断服务程序。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。不同的中断源服务的内容及要求各不相同,其处理过程也有所区别。一般情况下,中断服务程序包括3部分:一是保护现场,二是中断服务,三是恢复现场。
IT1=1;
while(1)
{
}
}
3-1、简述中断、中断源、中断源的优先级及中断服务程序的含义?
答:在计算机执行程序的过程中,当出现某种情况时,由服务对象向CPU发出请求当前程序中断的信号,要求CPU暂时停止当前程序的执行,而转去执行相应的处理程序,待处理程序执行完毕后,再返回继续执行原来被中断的程序,这样的过程称为中断。把引起中断的原因或触发中断请求的来源称为中断源。
3-2、51系列单片机能提供几个中断源?它们的入口地址各是多少?
答:51系列单片机提供5个中断源,分别是:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口接收/发送中断。
AT89C51 单片机中断源的入口地址
中断源
中断入口地址
自然优先级
外部中断0
0003H
最高级
最低级
定时器T0中断
000BH
外部中断0→定时/计数器T0→外部中断1→定时/计数器T1→串行口(从高到低)
3-4、使用外中断0来控制,去实现下列功能。
其中K1为按键,P1口对应8个发光二极管的状态
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
无按键按下(循环)
●
●
○
○
●
●
○
○
●
●
●
●
○
○
●
●
有按键按下
●
●
●●Leabharlann ○○○○
#include<reg51.h>
//sbit k1=P2^0;
int count=0;
void delay(unsigned char i);
void int0Proc() interrupt 0
{
count++;
P1=0xf0;
}
void main()
{
EA=1;
EX0=1;
IT0=1;
P1=0xcc;
while(1)
{ if(count%2==0)
{
if(P1==0xcc)
{
P1=0x30;
delay(500);
}
else
{
P1=0xcc;
delay(500);
}
}
}
}
void delay(unsigned char i)
{
unsigned char j,k;
for(k=0;k<i;k++)
外部中断1
0013H
定时器T1中断
001BH
串行口接收/发送中断
0023H
3-3、51系列单片机各中断源的优先级如何确定?同一优先级中各个中断源的优先级又如何确定?
答:AT89C51单片机中断源可以设置两个优先级——高优先级和低优先级。每个中断源优先级的设定由IP的各控制位决定。IP寄存器中的相应位为1时,所对应的中断就为高优先级,相应位是0时,所对应的中断就为低优先级。在同一优先级别下,按自然优先级进行确定优先响应顺序,即:
P2=tab[count%10];//显示个位
}
void int1Part() interrupt 2
{
//TR0=1;
++count;
if(count>99)
{
count=0;
}
display();
}
void main()
{
P0=0xff;
P2=0xff;
EA=1;//总开关
EX1=1;//中断开关
for(j=0;j<255;j++);
}
3-5、单片机P0和P1口各驱动两只共阳数码管,用外部中断1实现加计数功能,并将计数值输出到数码管上显示。
#include<stdio.h>
#include<reg51.h>
sbit p1_0=P1^0;//k1
sbit p1_1=P1^1;//k2
char count=0;