单片机复习题.docx
- 文档编号:656733
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:37
- 大小:545.96KB
单片机复习题.docx
《单片机复习题.docx》由会员分享,可在线阅读,更多相关《单片机复习题.docx(37页珍藏版)》请在冰点文库上搜索。
单片机复习题
一、填空:
Ø在keilC51编译器中,无符号整型变量占数据存储器空间2字节,其数值表达范围是0~65535。
Ø将01111100B转化为16进制数据为0x7c。
在AT89S51的单片机标有“24PC”,S表示该芯片含有可串行下载功能的Flash存储器,24代表速度为24MHz,P表示表示塑料直插双列DIP封装,C表示商业用品。
若MCS-51单片机从片内程序存储器执行程序,引脚
必须接低电平。
Ø若MCS-51单片机从片外程序存储器开始执行程序,引脚
必须接高电平。
Ø
引脚为外部程序存储器选通信号使能脚(低电平有效),用于实现外部ROM单元的读操作。
Ø
、
引脚的作用是分别是读的时候用的引脚,写的时候用的引脚。
(WR和RD的时序是51单片机自动产生的,在执行一条指令movxA,@dptr(读时序)或movx@dptr,A(写时序)都是片外传值的,当然读写的时候都是产生低跳变。
)
ØXTAL1与XTAL2引脚功能为片内震荡电路输入端,片内震荡电路输出端,用示波器观察该引脚,在单片机正常工作时,其波形应为频率为晶振写真频率方波波形。
(填写内容包括频率参数)
Ø当89C51复位时,PC的内容是:
0000H,正常工作时RST引脚的电平是:
低电平,当该引脚上出现持续2个以上的机器周期的高电平时,可实现复位操作。
Ø若MCS-51单片机使用晶振频率为6MHz时,其复位持续时间应该超过4us。
ØALE引脚为地址所存允许信号使能脚,用于地址锁存有效信号(使地址锁存),当不访问外部存储器时,该端口以时钟频率的六分之一输出固定的正脉冲信号。
ØP3.0和P3.1引脚还分别具有RXD和TXD的作用,在异步串行通信中,RXD引脚串行输入口,TXD串行输出口。
Ø
引脚的作用:
外部中断0/外部中断1中断源,引入中断请求信号。
Ø在使用8051单片机计数器功能时,外部计数脉冲从T0/T1即P3.4/P3.5引脚引入单片机。
ØMCS-51系列单片机的有_4__组并行I/O端口,其中___P0__、___P2__和___P3___具有第二功能。
P0口可以作为数据总线和低八位地址总线,P2口作为高八位地址。
Ø8051单片机P0口在作为普通IO口使用时,作为输出口需要上拉电阻。
而所有IO口在作为输入口时,需要向IO寄存器写1。
Ø将定时/计数器0用于定时方式,则计数脉冲来自于内部时钟;若工作于计数方式,则计数脉冲必须来自于外部脉冲,且计数频率不超过晶振频率的24分之一。
ØCPU响应中断后,不能自动清除中断请求“1”串行口中断 。
Ø数据存储器在物理上和逻辑上都分为两个地址空间,一个是由128B的RAM(内部数据存储器)和21个特殊功能寄存器。
另外一个是片外最大可扩充64KB的数据存储器。
其中片内数据存储区地址为0030H,划分为工作寄存器区、位寻址区以及通用RAM区3部分。
Ø8051单片机可以最大寻址的外部存储器地址范围是0000~FFFFH。
Ø8051单片机有四组工作寄存器,当前正在使用哪一组,由特殊功能寄存器PSW的RS0、RS1两位的状态决定。
ØC51编程语言中,不仅可以设定变量的数据类型,还可以设定存储器类型(将变量存储在哪里),data、bdata(位寻址区20H~2FH)、idata、pdata(64kRAM)、xdata、code分别将变量存储在什么区域。
答:
dataidataxdatacode分别是存于片内低128字节,高128字节,片外RAM中,和程序存储器中。
ØC51编程语言中,SFR关键字的作用是对51内部寄存器定义一个地址,SBIT的作用是定义特殊功能寄存器位变量,
Ø特殊功能寄存器IE用于实现中断系统的两级使能控制,若开启定时器1以及外部中断0,试写出IE寄存器所对应的16进制数值0x89。
Ø若中断优先级控制寄存器IP的值设为0x12,请写出此时五个中断源的优先级顺序(由高到低)T0、串行口、外部中断0、外部中断1、T1。
Ø特殊功能寄存器TCON中的TR0和TR1分别是T/C0和T/C1的启动/停止控制位。
ØTMOD寄存器中的GATE位用来指定外部中断请求是否参与对定时器/计数器的控制,若GATE位为1,则除了需要对应的TRi为1之外,还需要
引脚同时为高电平才可能启动相应的定时器。
Ø当SCON寄存器的“REN”位设置为逻辑1时,表明串行口允许控制接收。
Ø将波特率设定成加倍,需要将特殊功能寄存器PCON的最高位设置成1。
ØIT0用于设定外部中断0的触发方式,当其为逻辑0时,表明低电平触发,当其为逻辑1时,表明下降沿触发。
ØDAC0832内部有输入锁存器和DAC寄存器两个缓冲器,由这两个缓冲器的状态可使DAC0832工作在单缓冲模式、双缓冲模式和直通模式三种方式。
ØADC0809将模拟量转化成数字量之后,EOC引脚为高电平。
ØDAC和ADC的分辨能力都和自身位数有关,位数越大,分辨能力越强。
Ø74LS273通常用来做简单输出接口扩展;而74LS244则常用来做简单输入接口扩展
Ø在片外扩展一片2764程序存储器芯片要13根地址线。
二、简答题:
1单片机最小系统:
含义及画图。
单片机正常运行的最低配置:
它有一系列模块组成
1)复位系统:
当引脚9出现2个机器周期以上高电平时,单片机复位,程序从头开始运行.
2)时钟系统:
有振荡器电路产生频率等于晶振频率,这时用的是外界晶振。
也可以又外部单独输入,此时XTAL2脚接地,时钟信号由XTAL1输入.
3)电源系统:
VCC,和GND引脚,供电电压4--5.5V.
2扫描法识别矩阵式键盘的程序步骤。
38051单片机串行通信中主从式多机通信原理。
48051单片机有几个中断源,有几级中断优先等级?
如果所有中断源处于同一优先等级,且同时产生中断请求,CPU将按照何种顺序响应中断?
8051单片机有五个中断源,两个中断优先等级;
CPU将按照自然优先级(高到低):
外部中断0,定时器/计数器中断0,外部中断1,定时器/计数器中断1,串行口。
58051单片机各中断源的中断标志是什么?
如何产生?
如何清除的?
串口中断,外部中断标志是IF0,IF1;定时器中断标志是TF0,TF1;串口中断标志是RI,TI;外部中断和定时器中断硬件置位,硬件清零,软件不用管,串口中断必须使用软件清零(向TI和RI写0)
TF1和TF0:
分别为两个定时/计数器中断标志,当定时/计数器计数值满产生溢出时,由硬件自动置1,并向CPU申请中断。
该
标志位一直保持到CPU响应中断后,由硬件自动清0;
IE1和IE0:
为外部中断1和外部中断0的中断请求标志位,当外部中断源发出中断请求时,由硬件自动置1,并向CPU申请中断。
该标志位一直保持到CPU响应中断后,由硬件自动清0;
RI和TI:
分别是串口发送/接受标志。
在方式0下,发送/接受完第八位数据位时,由硬件置位;在其它方式下,当开始发送停止位时,由硬件将T1置位,即向CPU申请中断;当接受到停止位时,R1置位,必须由软件清0;
68051单片机串行通信中,奇偶校验原理。
设置串口工作模式为2或3,可以用第9位数据位作奇偶检验位,例如发送一字节若这字节为奇检验位则将第9位数据位置1,此时必须通过改变奇偶校验位TB8这样在另一单片机接收时判断第9位数据位为一时才接收就能完成奇检验。
(仅供参考)
7什么是数码管的动态显示?
答:
所谓动态显示就是一位一位轮流点亮每位显示器,在同一时刻只有一位显示器在工作,但由于人眼的视觉残留效应和发光二极管熄灭时的余晖,将出现多个字符“同时”点亮的现象。
88051单片机定时器有几种工作方式?
各方式中的计数寄存器是几位的?
定时器0有方式0,1,2,3共四种工作方式,而定时器0有方式0,1,2共三种工作方式;
(只要定时器0工作在方式3,定时器1,停止工作);
方式0,高八位,低五位共13位;
方式1,高八位,低八位共16位;
方式2,只有八位;
方式3,两个八位;
9简述8051单片机串行口有几种工作方式,各自特点是什么?
方式1,
方式2.
方式3,
10串口初始化编程,如:
已知fosc=11.0592MHz,定时器1工作在方式2下,波特率欲设定为9600bps,请写出串口初始化程序。
MOVTMOD,#20H
MOVTL1,#0FDH
MOVTH1,#0FDH
SETBTR1
MOVSCON,#50H
MOVR0,#55H
SETBEA
SETBES
118051单片机的三总线结构是什么?
数据总线,地址总线,控制总线。
称为三总线
128051单片机的主要特性是什么?
8051是MCS-51系列单片机中的代表产品,它内部集成
了功能强大的中央处理器,包含了硬件乘除法器、21个
专用控制寄存器、4kB的程序存储器、128字节的数据存
储器、4组8位的并行口、两个16位的可编程
定时/计数器、一个全双工的串行口以及布尔处理器。
8051中集成了完善的各种中断源,用户可十分方便地
控制和使用其功能,使得它的应用范围加大,可以说
它可以满足绝大部分的应用场合。
三、程序设计类题目:
1要求:
编写基于定时器的LED流水灯闪烁程序,每1S灯的状态变化一次。
1c语言
#include
#defineucharunsignedchar
#defineuintunsignedint
uintt=0,n=0;
ucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
voidmain(void)
{
TH0=0X3C;
TL0=0XB0;
EA=1;
ET0=1;
TR0=1;
TMOD=0X01;
P1=0xff;
while
(1)
{
if(n==10)
{
n=0;
P1=table[t];
t++;
if(t==8)t=0;
}
}
}
voidtimer0()interrupt1
{
n++;
TH0=0X3C;
TL0=0XB0;
}
2要求:
根据按键的不同、要求编写LED灯的变化程序。
例如:
当第一个按键按下时、实现8个LED灯依次闪灭(流水灯),每个灯的闪灭间隔为0.5秒。
第二个按键按下时,实现从左面开始奇数号灯亮灭,闪烁频率为1Hz。
当第三个按键按下时,实现从左面开始偶数个灯亮灭,闪烁频率为2Hz,当所有按键全部按下时,实现LED灯逐个点亮,然后再依次点灭。
循环往复。
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitkey1=P3^0;
sbitkey2=P3^1;
sbitkey3=P3^2;
uintm;
ucharcodea[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharcodeb[]={0x55,0xff};
ucharcodec[]={0xaa,0xff};
ucharcoded[]={1,3,7,15,31,63,127,255};
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=60;i>0;i--);
}
}
voidmain()
{
P3=0xff;
while
(1)
{
P1=0x00;
while(key1==0&&key2==0&&key3==0)
{
for(m=0;m<8;m++)
{
P1=(d[m])%256;
DelayMS(50);
}
for(m=0;m<8;m++)
{
P1=(d[m])%256;
P1=~P1;
DelayMS(50);
}
}
while(key1==0)
{
if((key1==0)&&(key2==0)&&(key3==0)==1)
{break;}
for(m=0;m<8;m++)
{
P1=a[m];
P1=~P1;
DelayMS(50);
}
}
while(key2==0)
{
if((key1==0)&&(key2==0)&&(key3==0)==1)
{break;}
for(m=0;m<2;m++)
{
P1=b[m];
DelayMS(500);
}
}
while(key3==0)
{
if((key1==0)&&(key2==0)&&(key3==0)==1)
{break;}
for(m=0;m<2;m++)
{
P1=c[m];
DelayMS(1000);
}
}
}
}
3要求:
编写基于外部中断显示控制程序,要求初始显示“001000”,完成基于外部中断的数字显示与调整程序。
要求按下int0所对应的按钮,数字加1;按下int1对应按钮,数字减1。
(数码管显示电路不一定这么复杂)
3c语言
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
sbita1=P2^0;
sbita2=P2^1;
sbita3=P2^2;
sbita4=P2^3;
sbita5=P2^4;
sbita6=P2^5;
uchartt=0,count=160;
uintm=1000;
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
voidinit()
{
EA=1;
EX1=1;
EX0=1;
IP=0x08;
P2=0xff;
}
voiddelay(uintms)
{
uintx,y;
for(x=ms;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(uintnum)
{
ucharge,shi,bai,qian,wan,shiwan;
ge=num%10+0;
shi=(num/10)%10+0;
bai=(num/100)%10+0;
qian=(num/1000)%10+0;
wan=(num/10000)%10+0;
shiwan=(num/100000)%10+0;
a1=1;
P0=table[shiwan];
delay
(1);
a1=0;
a2=1;
P0=table[wan];
delay
(1);
a2=0;
a3=1;
P0=table[qian];
delay
(1);
a3=0;
a4=1;
P0=table[bai];
delay
(1);
a4=0;
a5=1;
P0=table[shi];
delay
(1);
a5=0;
a6=1;
P0=table[ge];
delay
(1);
a6=0;
}
main()
{
init();
while
(1)
{
display(m);
}
}
voidtimer0()interrupt0
{
m=m++;
display(m);
}
voidtimer1()interrupt2
{
m=m--;
display(m);
}
4要求:
外部中断改变流水灯的流动方向和状态转换的延迟时间。
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
voidDelay(uintz)
{
uintx,y;
for(x=z;x>0;x--){
for(y=110;y>0;y--){
}}}
voidmain()
{
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
while
(1)
{
P1=0xff;
}
}
voidinto()interrupt0
{
uinti;
for(i=0;i<4;i++)
{
P1=0x00;
Delay(100);
P1=0xff;
Delay(100);
}
}
voidintr()interrupt1
{
uinti;
for(i=0;i<4;i++)
{
P1=0xfe;
Delay(50);
P1=0xfd;
Delay(50);
P1=0xfb;
Delay(50);
P1=0xf7;
Delay(50);
P1=0xef;
Delay(50);
P1=0xdf;
Delay(50);
P1=0xbf;
Delay(50);
P1=0x7f;
Delay(50);
}
}
5要求:
数码管动态显示默认数字(如654321)。
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
sbita1=P2^0;
sbita2=P2^1;
sbita3=P2^2;
sbita4=P2^3;
sbita5=P2^4;
sbita6=P2^5;
unsignedlongm=654321;
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
voidinit()
{
EA=1;
EX1=1;
EX0=1;
IT0=1;
IT1=1;
IP=0x08;
P2=0xff;
}
voiddelay(uintms)
{
uintx,y;
for(x=ms;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(unsignedlongnum)
{
ucharge,shi,bai,qian,wan,shiwan;
ge=num%10+0;
shi=(num/10)%10+0;
bai=(num/100)%10+0;
qian=(num/1000)%10+0;
wan=(num/10000)%10+0;
shiwan=(num/100000)%10+0;
a1=1;
P0=table[shiwan];
delay
(1);
a1=0;
a2=1;
P0=table[wan];
delay
(1);
a2=0;
a3=1;
P0=table[qian];
delay
(1);
a3=0;
a4=1;
P0=table[bai];
delay
(1);
a4=0;
a5=1;
P0=table[shi];
delay
(1);
a5=0;
a6=1;
P0=table[ge];
delay
(1);
a6=0;
}
main()
{
init();
while
(1)
{
display(m);
}}
voidtimer0()interrupt0
{m=m++;
display(m);}
voidtimer1()interrupt2
{m=m--;display(m);}
6要求:
编写基于定时器的LED指示灯闪烁程序。
LED亮1秒,熄灭N(大于等于1的整数)秒。
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitP10=P1^0;
uintt=0,i=0;
uintN=4;
voidmain(void)
{
TH0=0X3C;
TL0=0XB0;
EA=1;
ET0=1;
TR0=1;
TMOD=0X01;
while
(1)
{P10=0;
while
(1)
{
if(t==10)
{
i=0;
P10=1;
}
if(i==10*N)
{
i=0;
t=0;
P10=0;
}
}
}
}
voidtimer0()interrupt1
{
t++;
i++;
TH0=0X3C;
TL0=0XB0;
}
7要求:
利用定时器T1的中断来使P1.7控制蜂鸣器发出1kHz的音频信号,假设系统时钟频率为12MHz。
编写定时器的方波发生器,要求采用定时器工作方式0。
(具体方式可能变化)
#include
sbitP17=P1^7;
main()
{
TH0=(8192-500)/32;
TL0=(8192-500)%32;
EA=1;
ET0=1;
TR0=1;
TMOD=0X00;
P17=0;
while
(1);
}
voidtimer0()interrupt1
{
P17=!
P17;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
}
8要求:
编写基于定时器方式1的LED单个数码管显示程序,要求以每隔1s数字加1,当数字大于9时,清0。
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
uintt=0,num=0;
voidmain(void)
{
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 复习题