洛阳理工学院 2011/2012 学年第一学期单片机原理与接口技术期末考试试题卷(A)适用班级:B090505/06/07/08 考试日期时间:120分钟
一、选择题(每小题2分,共20分)
1.片内RAM的20H~2FH为位寻址区,所包含的位地址是( B )。
A、00H~20H
B、00H~7FH
C、20H~2FH
D、00H~FFH
2.下列哪个并行口可以既作为输入输出口又可以作为高8位地址口( B )
A.P1 B.P2 C.P3 D.P0
3.若AT89C51单片机使用晶振频率为6MHz时,其复位持续时间应该超过( B )。
A、2μs
B、4μs
C、8μs
D、1ms
4.定时器/计数器工作方式1是( D )。
A、8位计数器结构
B、2个8位计数器结构
C、13位计数结构
D、16位计数结构
5.在五个中断源中,可通过软件设置各中断源中断级别的高或低,但在同一级别中,按硬
件排队的优先级别最高的是( C )中断。
A.定时器T0 B.定时器T1 C.外部中断INT0
D.外部中断INT1 E.串行口
6.定时器T0的溢出标志为TF0,采用查询方式,若查询到有溢出时,该标志(A)
A.由软件清零B.由硬件自动清零C.随机状态D.AB都可以
7.串行口的工作方式由( C )寄存器决定。
A.SBUF B.PCON C.SCON D.RI
8.单片机C51中用关键字(C)来改变寄存器组
A.interrupt B.unsigned C.using D.reentrant
9.可以将P1口的低4位全部置高电平的表达式是( B )
A.P1&=0x0f B.P1|=0x0f C.P1^=0x0f D.P1=~P1
10.访问绝对地址时,一般需包含的库文件是( B )
A、reg51.h
B、absacc.h
C、intrins.h
D、startup.h
二、填空题(每空1分,共20分)
1.微处理器本身不是计算机,它是微型计算机的核心部件,又称它为CPU ,它包
括两个主要部分运算器、控制器。
2.AT89C51有 4 个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须
先写入 1 。
3.若不使用AT89C51片内的程序存储器,引脚EA非必须接地。
4.AT89C51系列单片机有: 外中断0 , 定时器0 ,外中断 1 ,
定时器1 , 串行口等5个中断请求源。
5.用定时器T1方式2计数,要求每计满100次,向CPU发出中断请求,TH1、TL1的初始
值分别是9CH 、9CH 。
6.AT89C51单片机的外部中断请求信号的触发方式有:电平触发方式和边沿触
发方式。
7.存储器扩展包括程序存储器扩展和数据存储器扩展。
8.单片机程序的入口地址是0000H ,外部中断1的入口地址是0013H 。
9.KeiL C51软件中,编译连接后生成可执行的文件扩展名是hex 。
三、简答题(每小题6分,共30分)
1.什么是机器周期?一个机器周期的时序是如何来划分的?如果采用12MHz晶振,一个机
器周期为多长时间?
答:完成一个基本操作所需要的时间称为一个机器周期(1分),每个机器周期包含六个时钟周期(用S表示),每个时钟周期由节拍信号P1和节拍信号P2组成的,每个节拍持续一个振荡周期(2分)。
因此一个机器周期包含S1P1~S6P2共6个状态的12个振荡
周期(1分)。
如果采用12MHz晶振,一个机器周期为1μs(2分)。
2.AT89C51单片机有几个中断源?它们的中断标志和中断入口地址各是什么?
答:外部中断0 IE0 0003H (1分)
定时计数器0 TF0 000BH (1分)
外部中断1 IE1 0013H (1分)
定时计数器1 TF1 001BH (1分)
串行口TI和RI 0023H (2分)
3.定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?
答:定时的计数脉冲来自于单片机内部,即每个机器周期产生一个计数脉冲,也就是每个机器周期计数器加1(3分)。
定时时间与定时器的工作模式、定时器的初值选择有关(3分)。
4.在程序里如何以简单的方式来防止输入开关的抖动现象?
答:只要在截获第一个输入信号时,即调用一个约20ms的延迟函数,即可避开20ms的不确定信号(4分)。
20ms后再执行后面的指令(2分)。
5.简述串行通信中“单工”、“半双工”、“全双工”三种数据传送方式。
1.答:“单工”是指只能发送数据或只能接收数据(2分)。
“半双工”是指可发送数据或接收数据,但任一个时间只能发送数据或只能接收数据(2分)。
“全双工”是指可以在任一时刻同时进行发送数据与接收数据(2分)。
四、程序分析设计题(第1、2小题每题10分,第3、4小题每题5分,共30分)
1.已知fosc=12MHZ,利用单片机定时器T1在P1.0引脚上产生周期为100ms的方波输出,
采用查询方式用C51写出实现程序(10分)。
#include<reg51.h> //包含头文件(1分)
sbit p1_0=P1^0; //定义P1口位变量(1分)
void main() //主函数
{
TMOD=0x10; //定时器T1,模式1 (1分)
TH1=0x3c; //定时器T1高8位初值(1分)
TL1=0xb0; //定时器T1低8位初值(1分)
TR1=1; //打开定时器T1 (1分)
while(1) //无限循环(1分)
{
while(TF1==0); //等待定时器溢出(1分)
TF1=0;//定时器T1溢出位清零(1分)
TH1=0x3c; //重新装入初值
TL1=0xb0;
p1_0=!p1_0; //对P1_0位进行取反(1分)
}
}
2.如图1所示电路,采用中断方式实现以下功能,按下按键一次,则LED指示灯闪烁一次,
试把下列程序补充完整(10分)。
图1 线路连接图
# include <reg51.h>
unsigned char j;
sbit Led=P1^0;
void delay(unsigned int count) //延时函数
{
unsigned char j;
while(count--)
for(j=0; j<120; j++) //在时钟为12MHz时,循环120次,约为1ms
}
void main(void)
{
IE=0; //关所有中断,IE的所有位置“0”,可以不要(1分)
IT0=1; //设置INT0为下降沿触发方式(1分)
EX0=1; //IE^1,开INT0中断,允许INT0中断申请(1分)
EA=1; //IE^7(EA=1)开所有中断(1分)
Led=1; //熄灭LED (1分)
while(1);
}
void int0func(void) interrupt 0 using 3 //中断处理函数
{
EX0=0; //关INT0中断(1分)
Led=0; //点亮LED (1分)
delay(500); //延时500ms (1分)
Led=1; //熄灭LED (1分)
EX0=1; //开INT0中断
}
3.如图2所示,在DAC0832的输出端接入一级运算放大器可以得到负的电压信号,接入两
级运算放大器可以得到正的电压信号,要求单缓冲工作方式下运算放大器的输出端(V out)输出锯齿波信号。
试把主函数中的内容补充完整(5分)。
#include<reg51.h>
#define dac XBYTE[0x7fff]; /* DAC0832的地址*/
void main()
{
unsigned char j; /*变量定义*/ (1分)
while(1) (1分)
{
for(j=0;j<256;j++) /* 循环输出0~255之间的数据*/(2分) dac=j; (1分) } }
OUT
图2 DAC0832单缓冲工作方式接口电路
4. 图3为4片27128 EPROM
扩展成64KB 程序存储器的所需相关芯片。
其中,EPROM 的
片选信号由译码器产生,试完成下面的电路连接图,并写出图中的IC1~IC4的地址范围(5分)。
74LS373
27128
27128
27128
27128
IC1: 0000H-3FFFH 16K IC2: 4000H-7FFFH 16K IC3: 8000H-BFFFH 16K IC4: C000H-FFFFH 16K。