单片机复习提纲
一. 选择题:
1.MC-51单片机复位后,程序计数器PC的内容是( C )。
A.00H B.FFH C.0000H D.FFFFH
2.8051单片机芯片在使用时应把EA信号引脚( A )。
A.接高电平 B.接地 C.悬空 D.接地址锁存器选通端
3.MCS-51的程序计数器PC为16位计数器,因此其寻址范围是( D )。
A.8K B.16K C.32K D.64K
4.在MCS-51单片机中,唯一一个可供用户使用的16位寄存器是( B )。
A.PSW B.DPTR C.AC D.PC
5.在MCS-51单片机中,唯一一个用户不能直接使用的寄存器是( D )。
A.PSW B.DPTR C.AC D.PC
6.在单片机中,用作标志寄存器的一个特殊功能寄存器是( A )。
A.PSW B.DPTR C.AC D.PC
7.单片机的指令地址存放在( D )中。
A.PSW B.DPTR C.SP D.PC
8.提高单片机的晶振频率,则机器周期信号( C )。
A.不变 B.变长 C.变短 D.变长变短不定
9.地址空间3000H~37FFH共有( B )存储单元。
A.1K B.2K C.4K D.8K
10.8051单片机系统扩展时使用的锁存器用于锁存( B )。
A.高8位地址 B.低8位地址 C.8位数据 D.ALE信号
11.在MCS-51单片机的中断中,如果出现同级中断申请时,序列来处理响应次序,其优先级别中第三个为:( D )
A、 定时/计数器中断0 B、定时/计数器中断1
C、外部中断0 D、外部中断1 E、串行口中断
12.MSC-51在响应中断时,必须由用户清除的标志为( B )
A、TF0 B、RI C、IE0 D、TF1
就按硬件查询
13.8051不具有第二功能的I/O口是:( B )
A、 P0 口 B、P1口 C、P2口 D、 P3口
14.关于MCS-51的堆栈操作,正确的说法是( C )。
A、先入栈,再修改栈指针对 B、先修改栈指针,再出栈
C、先修改栈指针,再入栈 D、以上都不对
15.要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器IE的内容应是( A )。
A、98H B、84H C、42H D、22H
16.PSW=18H时,则当前工作寄存器是( D )。
A、0组 B、1组 C、2组 D、3组
17.执行IE=0x03后,MCS-51将响应的中断是 ( D )。
A、1个 B、2个 C、3个 D、0个
18.各中断源发出的中断请求信号,都会标记在MCS-51系统中的( A )。
A、TCON/SCON B、IE C、IP D、TMOD
19.下列对SCON的相关位描述不正确的是( A )。
A、当REN=1时,禁止串行口接收数据 B、在方式0时,SM2必须为0
C、RI位由软件清零 D、TI=1,表示一帧数据发送结束
20.设串行口工作于方式1,晶振频率为6MHz,波特率为1200b/s,SMOD=0,则定时器1的计数初值为:( B )
A、E8H B、F4H C、FDH D、FAH
21.以下所列特点,不属于串行口工作方式0的是( D )
A、 波特率是固定的,为时钟频率的十二分之一 B、8位移位寄存器
C、TI和RI都必须用软件清零 D、在通信时须对定时器1的溢出率进行设置
22.MCS-51外扩ROM、RAM和I/O口时,它的数据总线是( A )
A、P0口 B、P1口 C、P2口 D、P3口
23.在串行通信中,数据传送的速率为:120字符/s ,采用异步通信方式,帧的格式为:1 个起始位,7 个数据位,1 个奇偶校验位,1个停止位, 则其波特率为:( A )位/s
A、 1200 B、 120 C、840 D、1080
24.若设串行控制寄存器SCON=40H,则串行口的工作方式为:( B )
A、 方式0 B、方式1 C、方式2 D、方式3
25.CPU响应中断的条件包括( ACDE )。
A、现行指令运行结束 B、保护现场 C、有中断请求
D、申请中断的中断源中断允许位为1 E、已开放CPU中断
26.MCS-51的并行I/O口信息有两种读取方法,一种是读引脚,还有一种是( A )
A、读锁存器 B、读数据库 C、读累加器A D、读CPU
27.单片机应用程序一般存放在( B )中。
A、RAM B、ROM C、CPU D、寄存器
28.系统总线指的是( ABE )。
A、数据总线 B、地址总线 C、内部总线 D、外部总线 E、控制总线
29.51系列单片机的内部RAM中,可以进行位寻址的地址空间为( B )。
A、00H~2FH B、20H~2FH C、30H~7FH D、7FH~FFH
30.共阳极LED数码管的驱动信号有何特点? ( B )
A、高电平点亮 B、低电平点亮 C、以上都不是
31.80C51单片机的CPU主要的组成部分为( A )。
A、运算器、控制器 B、加法器、寄存器
C、运算器、加法器 D、运算器、译码器
32.单片机能直接运行的程序称为( D )。//可执行程序
A、源程序 B、汇编程序 C、目标程序 D、编译程序
33.单片机中的程序计数器PC用来( C )。
A、存放指令 B、存放正在执行的指令地址
C、存放下一条指令地址 D、存放上一条指令地址
34.单片机80C51的ALE引脚是( B )。
A、输出高电平 B、输出矩形脉冲,频率为fOSC的1/6
C、输出低电平于 D、输出矩形脉冲,频率为fOSC的1/2
35.单片机上电复位后,AT89C51堆栈区的最大允许范围是( B )个单元。
A、64 B、120 C、128 D、256
36.PSW中的RS1和RS0用来( A )。
A、选择工作寄存器区号 B、指示复位 C、选择定时器 D、选择工作方式
37.80C51的串行数据缓冲器SBUF用于( B )。
A、存放运算中间结果 B、存放待发送或已接收到的数据
C、暂存数据和地址 D、存放待调试的程序
38.单片机应用程序一般存放在( B )中。
A、RAM B、ROM C、CPU D、寄存器
39.80C51单片机的机器周期为2µs,则其晶振频率fOSC为( C )MHz。
A、1 B、2 C、6 D、12
40.在80C51中,需要外加电路实现中断撤除的是( A )
A、电平方式的外部中断 B、脉冲方式的外部中断 (硬件清0)
C、外部串行中断 D、定时中断
41.80C51单片机串行口接收数据次序是下述的顺序( B )。
(1)接收完1帧数据后,硬件自动将SCON的RI置1
(2)用软件将RI清零
(3)接收到的数据由SUBF读出
(4)置SCON的REN为1,外部数据由RXD(P3.0)输入
A、(1)(2)(3)(4) B、(4)(1)(2)(3)
C、(4)(3)(1)(2) D、(3)(4)(1)(2)
42.80C51单片机串行口发送数据次序是下述的顺序( A )。
(1)待发送数据送SBUF (2)硬件自动将SCON的TI置1
(3)经TXD(P3.1)串行发送一帧数据完毕 (4)用软件将TI清零
A、(1)(3)(2)(4) B、(1)(4)(2)(3)
C、(1)(2)(3)(4) D、(3)(4)(1)(2)
二. 填空题:
1.根据MCS—51内部RAM的配置情况填空:
MCS—15内部RAM共有 128 字节。其中:
00H-1FH 为 工作寄存器 区 ;
20H-2FH 为 位寻址 区,可以 字节 寻址,也可以 位 寻址;
30H-7FH 为 用户RAM 区,只能 字节 寻址。
2.根据51系列单片机的基本特性填空:
(1)、CPU字长是 8 位
(2)、可供使用的地址线最多可达到 16 根
(3)、可寻址的最大空间为 64K
(4)、具有 4 个 8 位并行I/O口,共 32 根I/O线
(5)、具有 5个中断源, 2 个优先级
(6)、8051具有 片内ROM , 8031 无片内ROM
3.MCS-51外部中断0的中断入口地址是: 0003H 、外部中断1的中断入口地址是: 0013H 、定时器T0的中断入口地址是: 000BH 定时器T1的中断入口地址是: 001BH 、串行口的中断入口地址是: 0023H 。
4.中断过程包括: 中断请求 、 中断响应 、 中断处理 和中断返回 。
5.在8051单片机采用总线结构扩展系统中,高8位地址由 P2 端口提供,低8位地址由 _P0 端口提供。
6.在8051单片机中,一个机器周期包括 6 个状态周期,一个状态周期包括 2 个振荡周期。
7.根据应用的要求,复位电路通常有两种基本形式,它们分别是 上电 复位和
按键 复位。
8. C51源程序的扩展名为 c 。机器能直接执行的文件的扩展名为 hex 。
9.按数据传送方向,串行通信可分为: 单工 、 半双工 和 全双工 。
10.单片机中使用的串行通信都是 全双工 方式。
11.虽然MCS-51串行口的发送和接收缓冲寄存器都名为 SBUF ,但发送和接收可通过指令 SBUF=ACC; 、 ACC=SBUF; 来区别(以累加器为例)。
12.P0端口既可以传递 数据 又可以传递 地址 ,是分时复用的。
13.当单片机复位后,程序的入口地址为 0000H ;堆栈指针SP为 07H 。
14.在MCS-51 的I/O端口的读引脚方式下,CPU首先必须使欲读端口引脚所对应的锁存器置 1 。
15.C51程序的基本单位是 函数 。一个C51源程序至少包含一个 主函数 。
16.变量的基本属性是 变量名 和 变量值 。一旦在程序中定义了一个变量,C51编译器就会给这个变量分配相应的存储单元。此后变量名就与 存储单元地址 相对应,变量值就与 存储单元内容 相对应。
17.DAC0832与单片机的接口连接可根据实际需要采用 直通方式 、 单缓冲方式 和
双缓冲方式 3种工作方式。
18.为防止现场强电磁干扰或工频电压通过输出通道反串到测控系统,一般都采用通道隔离技术。实现通道隔离的常用器件是 光电耦合器。
19. 电磁继电器 既可以实现输入端与输出端的隔离,又能达到通过弱电信号控制高压、交直流大
功率设备的目的。
20. 单片机是指在一片集成电路芯片上集成 微处理器(CPU) 、 存储器 与 各种输入/输出接口 ,从而构成的单芯片微型计算机。
三. 判断题:
1、TMOD中的GATE=1时,也由TRi控制定时器的启停。 F
2、堆栈可用于响应中断或调用子程序时,保护断点地址,程序断点16位地址会自动压入堆栈,数据入栈前SP先自动加1,然后高8位地址进栈,每进栈一个字节SP又自动加1,而后是低8位地址进栈。 F
3、程序计数器PC也是特殊功能寄存器。 F
4、MCS-51复位不影响内部RAM中的数据,包括工作寄存器R0—R7。F
5、MCS-51系列单片机的特点之一是内部工作寄存器以RAM形式组成。 T
6、P0端口既可以作地址线,又可以作数据线,是分时复用的。 T
7、在MCS-51单片机中,高级中断可以打断低级中断形成中断嵌套。 T
8、每个特殊功能寄存器都既有字节地址,又有位地址。F
9、20H一定是字节地址。 F
10、中断初始化时,对中断允许寄存器的状态设置,只能使用位操作指令,而不能使用字节操作指令。 F
11、8051单片机具有4个并行端口和一个串行端口。 T
12、堆栈遵循数据先进后出,后进先出的原则。 T
13、只要有中断出现,CPU就立即响应中断。 F
14、MCS-51的外设端口地址是采用外设端口和外部RAM统一编址的方式。 T
15、MCS-51单片机共有五个中断源,因此相应地在芯片上就有五个中断请求输入引脚。 F
16、MCS-51单片机的定时和计数都使用同一计数机构,所不同的只是计数脉冲的来源。来自于单片机内部的是定时,而来自于外部的则是计数。 T
17、MCS-51对LED管的显示可以分为静态和动态两种。单片机控制系统通常采用动态扫描显示。 T
18、MCS-51使用于多机通信时必须在方式2或方式3下工作,作主机的80C51的SM2应设定为0,作从机的SM2设定为1。 T
19、在串行通信的查询法编程时,发送过程是先发后查,而接收过程是先查后收。 T
20、变量和函数都必须先定义后使用。 T
四.简答题:
1、简述行列式矩阵键盘扫描的工作过程。
答:① 判断键盘中是否有键按下;
②若有键按下,则调用延时子程序去抖动;再次判断是否有键按下;
③若有键按下,进行行(列)扫描,判断是哪一个键按下,求取按键的键值;
④等待按键释放;
⑤根据按键的键值,转入相应按键的处理程序。
2、简述单片机控制LED数码管进行动态显示的工作原理。
答:动态显示就是一位一位地轮流点亮各个LED。每一位LED数码管每隔一段时间才点亮一次。
单片机使用两个并行口来控制LED:一个作为字形口,一个作为字位口;用循环程序每隔一段时间送出一个字形码、字位码让LED的某位显示某个数字;只要点亮的间隔时间小于人眼的视觉暂留时间,就可以看到是多个LED在“同时”显示了。
3、简述单片机系统扩展时采用总线结构的基本原则。
答:(1)以P0口作地址/数据总线,此地址总线是系统的低8位地址线。
(2)以P2口的口线作高位地址线。(不固定为8位,需要几位就从P2口引出几条口线)
(3)控制信号线:
① 使用ALE作为地址锁存的选通信号,以实现低8位地址的锁存。
② 以PSEN信号作为扩展程序存储器(ROM)的读选通信号。
③ 以EA信号作为内外程序存储器的选择信号。
④ 以RD和WR作为扩展数据存储器和I/O端口的读写选通信号。
4、计算机的存储器地址空间有哪两种结构形式,各有什么特点?
答:普林斯顿结构:也叫冯诺依曼结构,将程序指令存储器和数据存储器合并在一起,即ROM和RAM位于同一存储空间的不同物理位置。
哈佛结构:将程序指令存储器和数据存储器分开,即ROM和RAM位于不同存储空间
5、用示意图表明C51的存储类型与单片机存储空间的对应关系。
P62
6、MCS-51有哪几个中断源?它们的中断向量地址分别是多少?中断编号是多少?(用表格列出)
P90
7、80C51单片机的内部资源主要包括哪些?
中央处理器(CPU),
片内振荡器和时钟电路,
4KB片内程序存储器(ROM),
128字节的片内RAM,
2个16位的定时/计数器,
可寻址64KB片外数据存储器和64KB片外程序存储器空间的控制电路,
4个8位双向I/O端口,
一个全双工串行接口,
5个中断源
五.接口编程题。
1、利用定时器产生一方波信号,要求采用查询或中断的方式编写程序。
例:4KHZ的方波
查询法:
#include sbit p1_0=P1^0; void mian() { TMOD=0X01;//定时器1方式1 TR0=1; //启动定时器 while(1) { TH0=0XFF; //装初值 TL0=-125; while(!TF0); TF0=0; p1_0=!p1_0; } } 中断法: #include sbit p1_0=P1^0; void mian() { TMOD=0X01;//定时器1方式1 TH0=0XFF; //装初值 TL0=-125; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器 while(1); } void T0_ISR() interrupt 1 { TH0=0XFF; TL0=-125; p1_0=!p1_0; } 2、数据采集系统的编程设计(要求采用查询或中断的方式编写程序)。 ADC的查询方式: #include #include sbit START=P2^5; sbit EOC=P2^6; sbit OE=P2^7; void main(void) { unsigned long temp, adc_value; while(1) { START = 1; //启动转换 _nop_(); START = 0; while(EOC==0); //等待AD转换完成 OE = 1; P1=0xff; temp = P1; //读取数据 OE = 0; adc_value=(1000*5*temp/255+5)/10; display(adc_value); } } 3、利用延时子程序设计流水灯。 //低电平驱动 //四舍五入 #include #define PLED0 P0 //延时 void delayms (unsigned int n) { unsigned int i, j; for (i=n; i>0; i--) for (j=123; j>0; j--); } void main() { unsigned char i, led=0x7f; while(1) { for (i=0; i<8; i++) { PLED1=led; delayms (250); led=(led>>1)|0x80; //或用循环右移_cror_ } } 4、串行口的点对点通信时发送、接收程序。 //方式1 /******发送程序******/ #include void delay_ms(unsigned int i); void main() { unsigned char c = 0, temp; //定义计数变量 SCON = 0x50;//SM0 = 0, SM1 = 1, 方式1; REN = 1, 允许接收; SM2 = TI = RI = 0; TMOD = 0x20; TH1 = TL1 = 0xf4; TR1 = 1; while(1) { SBUF = c; while(!TI); TI = 0; while(!RI); RI = 0; temp = SBUF; if(temp == c) //T1定时方式2 //设置波特率为 2400bps //开始计时 //把要发送的数据送到发送逻辑单元 //在此等待数据发送完 //发送数据后, 软件把 TI 清零 //在此等待B机返回的数据 //接收数据后, 软件把 RI 清零 //接收B机返回的值 //如果B机返回的值与A机发送出去的值相等 { P2 = c; //显示 if(++c >= 16) c = 0; delay_ms(500); //间隔500毫秒再发送数据 } } } /******接收程序******/ #include unsigned char r = 0; //定义变量存放接收到的数据 void main() { SCON = 0x50; //SM0 = 0, SM1 = 1, 方式1; REN = 1, 允许接收; SM2 = TI = RI = 0; TMOD = 0x20; //定时器方式2 TH1 = TL1 = 0xf4; //当晶振11.0592MHz, 波特率为2400Mbps TR1 = 1; EA = 1; ES = 1; while(1); } void serial() interrupt 4 { RI = 0; //软件清零标志位ES=0; r = SBUF; P2 = r; SBUF = r; //串行口中断服务程序 while(TI == 0); //如果是TI引起的中断 TI = 0; ES=1; } //方式2 /* 双机通讯 -- 甲方(发送)程序 */ #include #define uchar unsigned char #define uint unsigned int /* 延时函数 */ void delayms (uint n) { uint i,j; for(i=n;i>1;i--) for(j=125;j>1;j--); } void main() { uchar counter=0; P2=0X00; //从0开始算 TMOD=0X20; //定时器1工作于方式2 TH1=TL1=0XFD; //自动重装,初值0xFD,波特率:9600 SCON=0XD0; //串口工作于方式3,允许接收 TR1=1; //启动定时器1 while(1) { ACC=counter; //将数据放入累加器,以便奇偶校验 TB8=P; //奇偶校验 SBUF=counter; //发送数据给乙方 while(TI==0); //等待发送完成 TI=0; //清除发送标志位 while(RI==0); //等待乙方的回答 RI=0; //清除接收标志位 if(RB8==1) //接收到数据,并进行奇偶校验 { P2=counter; //输出到数码管 if(++counter>15) counter=0; delayms(500); } } } /* 双机通讯 -- 乙方(接收)程序 */ #include #define uchar unsigned char void main() { uchar receive; P2=0X00; //从0开始算 TMOD=0X20; //定时器1工作于方式2 TH1=TL1=0XFD; //自动重装,初值0xFD,波特率:9600 SCON=0XD0; //串口工作于方式3,允许接收 TR1=1; //启动定时器1 while(1) { while(RI==1) //是否接收到数据 { RI=0; //接收标志位清0 receive=SBUF; //读取接收到的数据 ACC=receive; //将数据放入累加器,以便奇偶校验 if(P==RB8) TB8=1; 方处理接收到的数据 //奇偶检验位和接收到的一样,则将发送的奇偶校验位赋1,否则赋0,以便甲 else TB8=0; SBUF=receive; //发送接收到的数据 while(TI==0); //等待发送完成 TI=0; //清除发送标志位 P2=receive; //输出到数码管 } } } 因篇幅问题不能全部显示,请点此查看更多更全内容