单片机复习修改1.docx
《单片机复习修改1.docx》由会员分享,可在线阅读,更多相关《单片机复习修改1.docx(19页珍藏版)》请在冰点文库上搜索。
![单片机复习修改1.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/c0be742d-bed0-415f-9700-bee1fb237e97/c0be742d-bed0-415f-9700-bee1fb237e971.gif)
单片机复习修改1
《微机原理与应用》复习
1.单项选择题
1、定时器/计数器工作方式2是( B )结构。
A.8位计数器 B.2个8位计数器 C.16位计数器 D.13位计数器
2.判断题
1、P2口既可以作为I/O使用,又可以作地址/数据复用口使用。
(×)
2、TMOD寄存器的低4位为T0的方式字,高4位是T1的方式字。
(√)
3.填空题
1、51单片机的时序单位有时钟周期、状态周期、(机器周期)、(指令周期)。
4.计算简答题
1、计算下列十进制数在8位微机中的原码、反码和补码形式。
(1)+63
(2)-21
答:
(1)+63,原码:
00111111B反码:
00111111B补码:
00111111B
(2)-21,原码:
10010101B反码:
11101010B补码:
11101011B
2、MCS-51有哪些中断源?
它们的中断向量地址分别是多少?
答:
MCS-51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。
五个中断源的中断向量地址依次为:
外部中断0:
0003H,定时器T0:
000BH,外部中断1:
0013H,定时器T1:
001BH,串行口:
0023H。
5.汇编语言程序阅读理解
要求:
逐条注释语句,并说明程序段所实现的功能。
MOVR7,#18;R7=18
MOVR0,#20H;R0=20H
CONT:
CJNE@R0,#0,NEXT;比较不等转移
MOVA,#0;相等,A=0
SJMPDOWN;转DOWN处
NEXT:
INCR0;修改地址指针
DJNZR7,CONT;计数器减1,非0,则继续循环
MOVA,#1;等于0,退出循环且A=1
DOWN:
MOV50H,A;将A存入50H单元
SJMP$;暂停
END;程序段所实现的功能:
查找内部RAM的20H~38H单元中是否有0,若有,则将50H单元清零,否则将50H单元置1。
6.C51程序设计
编程将8051外部数据存储器1020H单元和1035H单元的数据相乘,结果存到外部数据存储器中(任意位置)。
#include
#include
voidmain()
{
unsignedintxdata*ptr,a,b,x;
ptr=0x1020;
a=*ptr;
ptr=0x1035;
b=*ptr;
x=a*b;
}
7.应用系统设计
试设计一个8051单片机输入/输出应用系统。
其中P0口高2位为输入口接2个按键作启、停按钮,P1口为输出口控制8个发光二极管。
要求:
(1)画出硬件原理图。
(2)编写C51程序实现对流水灯的控制:
单片机复位后,全部发光二极管熄灭;按下开始键,全部灯点亮1s后熄灭,然后8个灯逐个点亮1s,循环不止;按下停止键,全部灯熄灭;再按开始键,重复上述过程。
(注:
1s定时用软件延时程序实现,可以有误差)。
解:
(1)硬件原理图如下:
2)程序设计如下:
#include
unsignedcharled[]={0x01,0x02,0x04,0x08,
0x10,0x20,0x40,0x80};
sbitP0_6=P0^6,P0_7=P0^7;
voiddelay(unsignedchartime)
{
unsignedcharj=225;
for(;time>0;time--)
for(;j>0;j--);
}
voidmain()
{
unsignedchari=0;
P0=0xff;
while
(1)
{
if(~P0_7)
{
P0=0;
delay(200);
P0=0xff;
delay(200);
while
(1)//循环点亮8个灯
{
P0=led[i];
delay(200);
if(~P0_6)//如果按停止键,熄灯,退出
{
P0=0xff;
break;
}
i++;
if(i==7)i=0;
}
}
}
}
第1章单片机基础知识概述
1.1单片机概述
单片机与普通微型计算机的不同之处在于其将(CPU)、(存储器)和(I/O接口)三部分集成于一块芯片上。
1.2单片机学习的预备知识
1、数制定义——2、10、16进制数的概念
2、数制转换——2、10、16进制数的换算
3、有符号数——2进制负数的表示方法
4、位-字节-字——2进制基本概念
5、ASCII码——字符的2进制表示方法
6、BCD码——10进制数的2进制表示方法
7、基本逻辑门电路——与、或、非、与非
练习题:
1.十进制数126其对应的十六进制可表示为( D )
A、8F B、8E C、FE D、7E
2.+1000110B的反码是0100_0110B;
3.-0110011B的补码是1100_1101B。
4.十进制数-47用8位二进制补码表示为:
1101_0001B。
5.(+127)(127)原=(127)反=(127)补=01111111
6.十进制数36的8位BCD码是(D)
A.00100100B.11011011C.11001001D.00110110
7.十进制29的二进制表示为原码(C)。
A.11010100B.10011101C.00011101D.00110110
8.ASCII码是8位码,可以表示汉字信息。
(×)
1.3Proteus应用简介
Proteus是集智能原理图输入系统(ISIS)和高级布线与编辑软件(ARES)两大功能与一体的电子设计系统。
1.在Proteus的ISIS中,仿真运行时需要加载的文件类型是(A)
A..HEXB.CC.OBJD.EXE
2.下列计算机语言中,CPU能直接识别的是(B )。
A.自然语言 B.机器语言 C、汇编语言 D、高级语言
第2章MCS-51单片机结构及原理
2.1MCS-51单片机结构
2.2MCS-51的存储器结构
2.3单片机的复位、时钟与时序
2.4并行I/O口
1.在程序状态字PSW中,(C)位是奇偶校验位
A.OVB.ACC.PD.C
2.CPU主要的组成部分为( D )
A.运算器、寄存器 B.加法器、寄存器
C.运算器、指令译码器 D.运算器、控制器
3.MCS-51上电复位后,SP的内容应为(B)
A.00HB.07HC.60HD.70H
4.若某存储器芯片地址线有10根,那么它的存储容量为(A)
A.1KBB.2KBC.4KBD.8KB
5.MCS51单片机并行口(D)的引脚,还具有外中断、串行通信等第二功能。
A.P0 B.P1C.P2 D.P3
6.单片机的三个逻辑存储器空间是(程序存储器)、(片内数据存储器)和(片外数据存储器)。
7.通常的微机系统存储器有两种结构,即(哈佛)结构和(普林斯顿)结构,MCS-51单片机存储器属于(哈佛)结构。
8.51单片机的时序单位有时钟周期、状态周期、(机器周期)、(指令周期)。
9.MCS-51单片机的存储结构中有(4)个物理存储空间,(3)个逻辑地址空间。
10.程序计数器PC存放CPU(将要执行)的指令所在ROM单元的地址,具有(自动加1)特性。
11.8051单片机内部有(4)个并行口,P0口直接作输出口时,必须外接(上拉电阻);并行口作输入口时,必须先(将口锁存器置1),才能读入外设的状态。
12.区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。
(×)
13.程序计数器PC可以看成是程序存储器的地址指针。
(×)
14.内部RAM的位寻址区,只能位寻址使用,不能字节寻址使用。
(×)
15.在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。
(√)
16.程序计数器PC不能为用户编程时直接使用,因为它没有地址。
(√)
17.8051单片机的程序存储器只能用来存放程序。
(×)
18.CPU不可以直接访问硬盘。
(√)
19.P2口既可以作为I/O使用,又可以作地址/数据复用口使用。
(×)
20.P0口既可作为I/O使用,又可作地址/数据复用口使用。
(√)
21.8031的CPU是由RAM和EPROM所组成。
(×)
22.简述8051单片机程序状态字PSW每一位的含义。
答:
各个标志位的意义如下:
PSW.7(Cy):
进位标志位。
PSW.6(AC):
辅助进位标志位,又称为半进位标志位。
PSW.5(F0):
用户标志位。
PSW.4、PSW.3(RS1和RS0):
寄存器组选择位。
PSW.2(OV):
溢出标志位。
PSW.1(空缺位):
此位未定义。
PSW.0(P):
奇偶校验位
23.MSC-51单片机内部由哪些功能部件组成?
答:
由控制器、运算器、存储器(包括程序存储和数据存储器)、2个16位定时器/计数器、中断系统、4个8位并行口和一个全双工串行口组成。
24.片内RAM中低128个单元划分为哪三个主要部分?
各部分的主要功能是什么?
答:
片内RAM中低128个单元划分为以下三个部分:
(1)工作寄存器区(00H-1FH)四组,每组8个,可作用工作寄存器切换使用;
(2)可位寻址区(20H-2FH)16B,位地址为00H-7FH,用作为按位寻址的空间;
(3)用户RAM区(30H-7FH)80B,用作用户RAM单元或堆栈。
25.MCS-51单片机的时钟周期又叫振荡周期,是最小的时间单位。
机器周期由
(2)个时钟周期构成,完成一个基本操作。
指令周期是(执行一条指令所需的)时间,根据指令的复杂性,可由(1~4)个机器周期构成。
26.要MCS51系统中,若晶振频率为8MHz,一个机器周期等于(A)μs。
A.1.5B.3C.1D.0.5
27.单片机的主频越高,其运算速度越快。
(√)
第3章单片机的汇编语言与程序设计
3.1汇编语言概述
3.2指令系统简介
3.3汇编语言的编程方法
练习题:
1.要用传送指令访问MCS-51片外RAM,它的指令操作码助记符是(B)
A.MOVB.MOVXC.MOVCD.以上都行
2.要将P1口高4位清0,低4位不变,应使用指令(ANLP1,#0FH)。
3.MCS-51单片机有7种寻址方式:
直接寻址、寄存器寻址、(寄存器间接)寻址、立即寻址、(变址)寻址、(位)寻址、相对寻址。
4.指令中直接给出的操作数称为立即寻址。
(√)
5.立即寻址指操作数本身在指令中,而不是它的地址在指令中。
(√)
6.汇编语言程序阅读理解
要求:
逐条注释语句,并说明程序段所实现的功能。
MOVR0,#32H;R0=32H
CONT:
CJNE@R0,#0AAH,NEXT;比较不等转移
MOVA,#0FFH;相等,A=0FFH
SJMPDOWN;转DOWN处
NEXT:
INCR0;修改地址指针
CJNER0,#42H,CONT;比较不等则继续循环
MOVA,#00H;相等,退出循环且A=00H
DOWN:
MOV50H,A;将A存入50H单元
SJMP$;暂停
END
程序段所实现的功能:
查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则将50H单元清零
7.汇编语言程序阅读理解
ORG0030H
MAIN:
MOVR7,#20H;赋值
MOVR1,#40H;赋值
MOVDPTR,#3000H;赋值
LOOP:
MOVA,@R1;读片内RAM
MOVX@DPTR,A;写片外RAM
INCR1;地址加1
INCDPTR;地址加1
DJNZR7,LOOP;循环判断
END
程序功能:
将片内RAM的40H-60H单元中内容送到片外RAM以3000H开始的单元中。
第4章单片机的C51语言
4.1C51的程序结构
4.2C51的数据结构
4.3C51与汇编语言的混合编程
4.4C51仿真开发环境
4.5C51初步应用编程
练习题:
1.a=P0;最优的定义变量a的数据类型是(A)。
A、无符号字符型 B、有符号字符型
C、无符号整型 D、有符号整型
2.C51程序以函数为单位,由一个(主)函数和(若干个其他)函数构成,(主)函数是程序的入口。
3.循环计数从0到999,计数变量的数据类型定义为unsignedchar。
(×)
4.C51程序设计
编程将8051的内部数据存储器50H单元和51H单元的数据相乘,结果存到外部数据存储器低256RAM地址中。
#include
#include
voidmain()
{
unsignedintpdatax;
unsignedchar*ptr,a,b;
ptr=0x50;
a=*ptr;
ptr=0x51;
b=*ptr;
x=a*b;
}
第5章单片机的中断系统
练习题:
1.51单片机在同一优先级的中断源同时申请中断时,CPU首先响应(A)。
A.外部中断0B.定时器0中断
C.外部中断1D.定时器1中断
2.外部中断1的中断号是(C)
A、0B、1C、2D、3
3.MCS-51有(A)个中断源
A、5B、6C、3D、4
4.外部中断0的中断号是(A)
A、0B、1C、2D、3
5.外部中断1INT1的中断入口地址为(0013H ),中断号为(2 );定时器1的中断入口地址为(001BH),中断号为(3 )。
6.当全局中断允许位EA=1时,系统将不响应任何中断。
(×)
7.MCS-51有哪些中断源?
它们的中断向量地址分别是多少?
答:
MCS-51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。
五个中断源的中断向量地址依次为:
外部中断0:
0003H,定时器T0:
000BH,外部中断1:
0013H,定时器T1:
001BH,串行口:
0023H。
8.MCS-51中断系统的中断响应条件是什么?
答:
(1)中断源有中断请求;
(2)此中断源允许位为1,即中断源可以向CPU发中断请求;
(3)CPU开总中断,即EA=1;
(4)无同级或者更高级中断正在服务。
9.应用系统设计
编程实现:
通过中断接口P3.2连接的独立按键产生中断,每次中断后P2口的1个共阳极数码管统计显示按下的次数,从1到F,之后再重新从0开始.七段共阴极数码管的0~F显示对应的二进制值为(0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71)
#include
unsignedinti;
unsignedcharcodeDisp_Tab[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
voidmain(void)
{
IT0=1;//下降沿触发
EA=1;
EX0=1;
P2=Disp_Tab[0];
while
(1);
}
voidcounter(void)interrupt0
{
EX0=0;
i++;//中断计数
if(i==16)i=0;
P2=Disp_Tab[i];
EX0=1;
}
第6章单片机的定时器/计数器
练习题:
1.定时器/计数器工作方式2是( B )结构。
A.8位计数器 B.2个8位计数器
C.16位计数器 D.13位计数器
2.51单片机中定时器的方式2的满计数值为(256),若晶振为12MHZ,方式2最长定时时间为(256us)。
3.定时器T0计数溢出后,置1(TF0)。
4.8051单片机定时器/计数器无论工作在定时或计数状态,都是对(脉冲信号)进行计数,定时与计数的区别是:
定时是对(机器周期)脉冲进行计数;计数是对(外部)脉冲进行计数。
5.8051单片机定时器/计数器的核心是一个二进制加1计数器。
(√)
6.若要定时50ms,只可以选择定时器的定时方式1。
(×)
7.阅读下列C语言程序,对每条语句加以注释,最后说明程序的功能。
假设单片机的晶振频率为12MHz
timer0()interrupt1
{TR0=0;
TH0=(65536-50000)/256;//初值高8位重装载
TL0=(65536-50000)%256;
t++;
if(t==20)//判断中断计数是否20次,相当于1秒
{t=0;
second++;//秒计数加1
}
if(second==60)second=0;
P0=table[second/10];
P2=table[second%10];//P2口输出显示秒数的个位
TR0=1;//程序功能:
秒表定时1s~60S计数中断服务程序
}
8.设单片机的fosc=12MHZ,要求采用定时器T0的中断方式,在P1.0脚上定时中断输出500HZ蜂鸣器响声。
#include
sbitBeep=P1^0;
voidT1_ini()//定时器1初始化子函数
{
TMOD=0x10;//定时器1工作于方式1
TH1=(65536-1000)/256;//定时器1定时1ms,初始值高8位
TL1=(65536-1000)%256;//定时1ms初始值低8位
EA=1;//开总中断
ET1=1;//允许定时器1中断
TR1=1;//启动定时器1中断
}
voidTime1(void)interrupt3//定时器1中断子函数
{
TH1=(65535-1000)/256;//重置1ms定时初始值高8位
TL1=(65535-1000)%256;//重置1ms定时初始值低8位
Beep=~Beep;//蜂鸣器发声
}
voidmain()//主函数
{
voidT1_ini();
while
(1);
}
9.应用系统设计
试设计一个8051单片机输入/输出应用系统。
其中P0口低4位为输入口接4个按键开关K1~K4,P2口低4位为输出口控制4个发光二极管D1~D4。
要求:
1、画出硬件原理图。
2、编写C51程序实现可键控的流水灯功能:
开始时发光二极管D1~D4均为熄灭状态,随后根据开关K1~K4的状态循环点亮4个发光二极管:
K1为启动键,K2为停止键,K3、K4分别为上、下流动方向键。
#includ
unsignedcharled[]={0x01,0x02,0x04,0x08};
voiddelay(unsignedchartime)
{
unsignedcharj=225;
for(;time>0;time--)
for(;j>0;j--);
}
voidmain()
{
bitdir=0,run=0;
unsignedchari;
while
(1)
{switch(P0&0x0f)
{
case0x0e:
run=1;break;
case0x0d:
run=0,dir=0;break;
case0x0b:
dir=1;break;
case0x07:
dir=0;break;
}
if(run)
if(dir)
for(i=0;i<=3;i++)
{
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--)
{
P2=led[i];
delay(200);
}
else
P2=0;
}
}