单片机习题
单片机习题——精选推荐
第一章习题(一)填空题1. 除了“单片机”之外,单片机还可以称之为和。
2. 专用单片机由于已经把能集成的电路都集成到芯片内部了,所以专用单片机可以使系统结构最简化,软硬件资源利用最优化,从而极大地提高了和降低了。
3. 在单片机领域内,ICE的含义是。
4. 单片机主要使用汇编语言,而编写汇编语言程序要求设计人员必须精通和。
5. CHMOS工艺是工艺和工艺的结合,具有的特点。
6. 与8051比较,80C51的最大特点是。
7. 控制技术是对传统控制技术的一次革命,这种控制技术必须使用才能实现。
(二)选择题1.下列简写名称中不是单片机或单片机系统的是(A)MCU (B)SCM (C)ICE (D)CPU2.在家用电器中使用单片机应属于计算机的是(A)数据处理应用(B)控制应用(C)数值计算应用(D)辅助工程应用3.80C51与80C71的区别在于(A)内部程序存储器的类型不同(B)内部数据存储器的类型不同(C)内部程序存储器的容量不同(D)内部数据存储器的容量不同4.8051与80C51的区别在于(A)内部ROM的类型不同(B)半导体工艺的形式不同(C)内部寄存单元的数目不同(D)80C51使用EEPROM,而8051使用EPROM5.在下列单片机芯片中使用掩膜ROM作为内总程序存储器的是(A)8031 (B)80C51 (C)8032 (D)87C516.80C51芯片采用的半导体工艺是(A)CMOS (B)HMOS (C)CHMOS (D)NMOS7.单片机芯片8031属于(A)MCS-48系列(B)MCS-51系列(C)MCS-96系列(D)MCS-31系列8.使用单片机实现在线控制的好处不包括(A)精确度高(B)速度快(C)成本低(D)能与数据处理结合9.以下所列各项中不是单片机发展方向的是(A)适当专用化(B)不断提高其性能(C)继续强化功能(D)努力增加位数第二章习题(二)判断题1.用户构建单片机应用系统,只能使用芯片提供的信号引脚。
单片机习题集(含答案)经典
单片机原理及应用习题第一章绪论1-1单项选择1、计算机中最常用的字符信息编码是()。
(A)ASCII (B)BCD码(C)余3码(D)循环码2、-31D的二进制补码为.( )。
(A)1110000B (B)11100001B (C)01100000B (D)01100001B3、十进制29的二进制表示为原码()。
(A)11100010B (B) 10101111B (C)00011101B (D)00001111B4、十进制0.625转换成二进制数是()。
(A)0.101 (B) 0.111 (C)0.110 (D)0.1005、十六进制数7的ASCII码是()。
(A) 37 (B) 7 (C) 07 (D) 476、十六进制数B的ASCII码是()。
(A) 38 (B) 42 (C) 11 (D) 10117、通常所说的主机是指()(A)运算器和控制器(B)CPU和磁盘存储器(C)CPU和主存储器(D)硬件和软件8、使用单片机实现在线控制的好处不包括( )(A)精确度高(B)速度快(C)成本低(D)能与数据处理结合1-2填空1、计算机中常作的码制有、和。
2、十进制29的二进制表示为。
3、十进制数-29的8位补码表示为。
4、是计算机与外部世界交换信息的载体。
5、十进制数-47用8位二进制补码表示为。
6、-49D的二进制补码为。
7、计算机中的数称为,它的实际值叫。
8、单片机的存储器结构形式有普林斯顿结构(又称冯.依诺曼结构)与哈佛结构,MCS-51存储器采用的是结构。
1-3 问答题1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点?2、单片机主要应用在哪些领域?3、为什么80C51系列单片机能成为8位单片机应用主流?4、举例说明单片机的主要应用领域。
5、二进制数、十进制数、十六进制数各用什么字母尾缀作为标识符?无标识符时表示什么进制数?6、试比较MCS-51,MSP430,EM78,PIC,M6800及AVP等系列单片机的特点。
单片机期末考试试题
单片机期末考试试题
一、选择题
1. 下列关于单片机的说法,正确的是:
A. 单片机只能执行一个程序
B. 单片机是一种独立运行的计算机系统
C. 单片机通常由微处理器、存储器和输入输出设备构成
D. 单片机不需要外部电源供电
2. 单片机中常用的编程语言是:
A. C语言
B. Java语言
C. Python语言
D. HTML语言
3. 下列哪个是单片机的主要功能之一?
A. 图像处理
B. 语音识别
C. 数据处理
D. 网络连接
4. 单片机中常用的存储器包括:
A. ROM
B. RAM
C. Flash
D. 所有选项都正确
5. 单片机的时钟频率通常指的是:
A. CPU的时钟频率
B. 串口的时钟频率
C. 芯片上的任务执行频率
D. 外部存储器的时钟频率
二、填空题
1. 单片机中的ADC全称是__________。
2. 单片机中常见的GPIO中文全称是__________。
3. 单片机中最基本的输入输出设备是__________。
4. 单片机中常见的中断服务程序是__________。
5. 单片机中的I/O口中文全称是__________。
三、简答题
1. 请简要说明单片机中的PWM是什么,有什么作用?
2. 简要解释单片机中的I2C总线的原理及应用。
3. 请简述单片机中的串口通信是如何实现的,常用的串口通信方式有哪些?
四、编程题
请在单片机开发环境中编写一个简单的LED点亮程序,实现LED 灯隔1秒亮灭交替的效果。
以上为单片机期末考试试题内容,祝您考试顺利!。
单片机习题——精选推荐
单片机习题1、计算机由哪几部分组成?2、微型计算机由哪几部分构成?3、微处理器与微型计算机有何区别?4、什么叫单片机?其主要特点有哪些?5、微型计算机有哪些应用形式?各适于什么场合?6、当前单片机的主要产品有哪些?各有何特点?7、简述单片机的开发过程。
8、80C51单片机在功能上、工艺上、程序存储器的配置上有哪些种类?9、80C51单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?10、80C51单片机的P0~P3口在结构上有何不同?在使用上有何特点?11、如果80C51单片机晶振频率为12MHz,时钟周期、机器周期为多少?12、80C51单片机复位后的状态如何?复位方法有几种?13、80C51单片机的片内、片外存储器如何选择?14、80C51单片机的PSW寄存器各位标志的意义如何?15、80C51单片机的当前工作寄存器组如何选择?16、80C51单片机的控制总线信号有哪些?各信号的作用如何?17、80C51单片机的程序存储器低端的几个特殊单元的用途如何?18、80C51系列单片机的指令系统有何特点?19、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?20、访问特殊功能寄存器SFR可以采用哪些寻址方式?21、访问内部RAM单元可以采用哪些寻址方式?22、访问外部RAM单元可以采用哪些寻址方式?23、访问外部程序存储器可以采用哪些寻址方式?24、对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问?25、试根据指令编码表写出下列指令的机器码。
(1)MOV A,#88H(2)MOV R3,50H(3)MOV P1.1,#55H(4)ADD A,@R1(5)SETB 12H26、完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。
(1)将R0的内容传送到R1;(2)内部RAM单元60H的内容传送到寄存器R2;(3)外部RAM单元1000H的内容传送到内部RAM单元60H;(4)外部RAM单元1000H的内容传送到外部RAM单元2000H。
单片机习题及参考答案
习题及参考答案一、填空题1、指令格式是由操作码和操作数所组成,也可能仅由操作码组成。
2、若用传送指令访问MCS-51的程序存储器,它的操作码助记符应为MOVC 。
3、若用传送指令访问MCS-51的片内数据存储器,它的操作码助记符应为MOV 。
4、若访问MCS-51的片外数据存储器,它的操作码助记符应为MOVX 。
5、累加器(A)=80H,执行完指令ADD A,#83H后,进位位C= 1 。
6、执行ANL A,#0FH指令后,累加器A的高4位= 0000 。
7、JZ rel的操作码地址为1000H,rel=20H,它的转移目的地址为1022H 。
8、JBC 00H,rel 操作码的地址为2000H,rel=70H,它的转移目的地址为2073H 。
9、累加器(A)=7EH,(20H)= #04H,MCS-51执行完ADD A,20H指令后PSW.0= 0 。
10、MOV PSW,#10H是将MCS-51的工作寄存器置为第 2 组。
11、指令LCALL 37B0H,首地址在2000H,所完成的操作是2003H 入栈,37B0H →PC。
12、MOVX A,@DPTR源操作数寻址方式为寄存器间接寻址。
13、ORL A,#0F0H是将A的高4位置1,而低4位保持不变。
14、SJMP rel的指令操作码地址为0050H,rel=65H,那么它的转移目标地址为 00B7H 。
15、设DPTR=2000H,(A)=80H,则MOVC A,@A+DPTR的操作数的实际地址为2080H 。
16、MOV C,20H源寻址方式为位寻址。
17、在直接寻址方式中,只能使用8 位二进制数作为直接地址,因此其寻址对象只限于片内RAM 。
18、在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。
19、在变址寻址方式中,以 A 作变址寄存器,以PC 或DPTR 作基址寄存器。
20、假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC后,把程序存储器1031H 单元的内容送入累加器A中。
单片机复习参考题(含答案)
单片机复习题一、选择1.二进制数110110110对应的十六进制数可表示为( )。
A. 1D3H B.1B6H C.DBOH D. 666H2.-3的补码是( )。
A. 10000011 B. 11111100 C.11111110 D.111111013.CPU主要的组成部部分为( )。
A.运算器,控制器 B.加法器,寄存器 C. 运算器,寄存器 D.运算器,指令译码器4.INTEL 8051 CPU是( )位的单片机。
A. 16 B.4 C. 8 D.准16位5.对于以 8051为核心的小单片机应用系统来说,/EA脚总是( )A.接地B.接电源C. 悬空D.不用6.程序计数器PC用来( )。
A.存放指令 B.存放正在执行的指令地址C. 存放下一条的指令地址 D.存放上一条的指令地址7.指令和程序是以( )形式存放在程序存储器中。
A. 源程序B. 汇编程序C. 二进制编码 D.BCD码8.单片机应用程序一般存放在( )中。
A. RAM B.ROM C. 寄存器 D.CPU9.单片机8051的XTALl和XTAL2引脚是()引脚A. 外接定时器 B.外接串行口 C. 外接中断 D.外接晶振10.8031复位后,PC与SP的值为( )。
A.0000H,00H B.0000H,07H C.0003H,07H D. 0800H,00H11.P0,P1口作输入用途之前必须( )。
A. 相应端口先置1 B.相应端口先置0 C.外接高电平 D.外接上拉电阻12.8051的内部RAM中,可以进行位寻址的地址空间为( )。
A. 00H~2FH B. 20H~2FH C. 00H~FFH D. 20H~FFH13.8051的程序计数器PC为16位计数器,其寻址范围是( ) 。
A. 8KB. 16K C. 32K D. 64K14.8051单片机中,唯一一个用户不能直接使用的寄存器是( )。
A.PSW B. DPTR C. PC D. B15.对MCS-51单片机来说,其内部RAM( )。
单片机习题_回答问题
i=0;
P1_1=!P1_1;}来自}7.在8051系统中,已知振荡频率是12MHz,用定时器/计数器T1实现从P1.1产生高电平宽度是10ms,低电平宽度是20ms的矩形波,试编程。
#include <reg51.h>
unsigned char i;
sbit P1_1=P1^1;
void main( )//主函数
sbit P1_1=P1^1;
void main()
{
i=0;
TMOD=0x10;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET1=1;
TR1=1;
while(1);
}
void timer1_int(void) interrupt 3
{
TH0=(65536-10000)/256;
1.简述C51语言和汇编语言的比较
使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势:
①编程调试灵活方便;
②生成的代码编译效率高;
③模块化开发;
④可移植性好;
⑤便于项目的维护;
2.哪些变量类型是51单片机直接支持的?
答:C51编译器支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型等。
#include <reg51.h>
unsigned char i,j,k;
单片机习题答案
第1章单片机概述1.除了单片机这一名称之外,单片机还可称为和 ;答:微控制器,嵌入式控制器;2.单片机与普通微型计算机的不同之处在于其将、、和 3部分集成于一块芯片上;答:CPU、存储器、I/O口;3.8051与8751的区别是 ;A.内部数据存储单元数目不同B.内部数据存储器的类型不同C.内部程序存储器的类型不同D.内部寄存器的数目不同答:C;4.在家用电器中使用单片机应属于微计算机的 ;A.辅助设计应用;B.测量、控制应用;C.数值计算应用;D.数据处理应用答:B;5.微处理器、微计算机、微处理机、CPU、单片机它们之间有何区别答:微处理器、微处理机和CPU都是中央处理器的不同称谓;而微计算机、单片机都是一个完整的计算机系统,单片机特指集成在一个芯片上的用于测控目的的单片微计算机; 6.MCS-51系列单片机的基本型芯片分别为哪几种它们的差别是什么答:MCS-51系列单片机的基本型芯片分别是8031、8051和8751;它们的差别是在片内程序存储器上;8031无片内程序存储器,8051片内有4KB的程序存储器ROM,而8751片内集成有4KB的程序存储器EPROM;7.为什么不应当把51系列单片机称为MCS-51系列单片机答:因为MCS-51系列单片机中的“MCS”是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机; 8.AT89C51单片机相当于MCS-51系列单片机中的哪一种型号的产品答:相当于MCS-51系列中的87C51,只不过是AT89C51芯片内的4KB Flash存储器取代了87C51片内的4KB的EPROM;第2章 AT89C51单片机片内硬件结构1.在AT89C51单片机中,如果采用6MHz晶振,一个机器周期为 ;答:2μs2.AT89C51单片机的机器周期等于个时钟振荡周期;答:12;3.内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为和 ;答:28H;88H;4.片内字节地址为2AH单元的最低位的位地址是;片内字节地址为88H单元的最低位的位地址是 ;答:50H;88H;5.若A中的内容为63H,那么,P标志位的值为 ;答:P标志位的值为0;6.AT89C51单片机复位后,R4所对应的存储单元的地址为,因上电时PSW= ;这时当前的工作寄存器区是组工作寄存器区;答:04H;00H;0;7.内部RAM中,可作为工作寄存器区的单元地址为 H~ H;答:00H;1FH;8.通过堆栈操作实现子程序调用,首先要把的内容入栈,以进行断点保护;调用返回时,再进行出栈保护,把保护的断点送回到 ;答:PC;PC;9.AT89C51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89C51单片机的PC是16位的,因此其寻址的范围为 KB;答:64KB;10.判断下列项说法是正确的;A.AT89C51单片机的CPU是由RAM和EPROM组成的B.区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端C.在AT89C51单片机中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1D.PC可以看成是程序存储器的地址指针答: A. 错; B. 错;C. 对;D. 对;11.判断以下有关PC和DPTR的结论是正确的;A.DPTR是可以访问的,而PC不能访问B.它们都是16位寄存器C.在单片机运行时,它们都具有自动加“1”的功能D.DPTR可以分为2个8位的寄存器使用,但PC不能答:A. 对; B. 对;C. 错;D. 对;12.判断下列说法项是正确的;A.程序计数器PC不能为用户编程时直接访问,因为它没有地址B.内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用C.AT89C51单片机共有21个特殊功能寄存器,它们的位都是可用软件设置的,因此,是可以进行位寻址的;答:A. 对; B. 错;C. 错;13.PC的值是 ;A.当前正在执行指令的前一条指令的地址B.当前正在执行指令的地址C.当前正在执行指令的下一条指令的地址D.控制器中指令寄存器的地址答:A. 错;B. 错;C. 对;D. 错;14.判断下列说法项是正确的;A.PC是一个不可寻址的特殊功能寄存器B.单片机的主频越高,其运算速度越快C.在AT89C51单片机中,一个机器周期等于1sD.特殊功能寄存器内存放的是栈顶首地址单元的内容答:A. 对;B. 对;C. 错;D.错;15.AT89C51单片机的片内都集成了哪些功能部件各个功能部件的最主要的功能是什么11个微处理器CPU;2128个数据存储器RAM单元;34KB Flash程序存储器;44个8位可编程并行I/O口P0口、P1口、P2口、P3口;51个全双工串行口;62个16位定时器/计数器;7一个中断系统,5个中断源,2个优先级;821个特殊功能寄存器SFR;16.说明AT89C51单片机的引脚EA的作用,该引脚接高电平和低电平时各有何种功能答:当EA脚为高电平时,单片机读片内程序存储器4KB Flash,但在PC值超过0FFFH即超出4KB地址范围时,将自动转向读外部程序存储器内的程序;当EA脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H~FFFFH,片内的4KB Flash程序存储器不起作用;17.64KB程序存储器空间有5个单元地址对应AT89C51单片机5个中断源的中断入口地址,请写出这些单元的入口地址及对应的中断源;答:64KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址,见下表;18.当AT89C51答:按下复位按钮;第3章 AT89C51单片机的指令系统1.在基址加变址寻址方式中,以作为变址寄存器,以或作为基址寄存器;答:A,PC,DPTR;2.指令格式是由和组成,也可仅由组成;答:操作码,操作数,操作码;3.假定累加器A中的内容为30H,执行指令1000H:MOVC A,A+PC后,把程序存储器单元的内容送入累加器A中;答:1031H;4.在AT89C51单片机中,PC和DPTR都用于提供地址,但PC是为访问存储器提供地址,而DPTR是为访问存储器提供地址;答:程序,数据;5.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的 ;答:地址;6.已知程序执行前有A=02H,SP=52H,51H=FFH,52H=FFH;下述程序执行后,A= ,SP= ,51H= ,52H= ,PC= ;POP DPHPOP DPLMOV DPTR,4000HRL AMOV B,AMOVC A,A+DPTRPUSH AccMOV A,BINC AMOVC A,A+DPTRPUSH AccRETORG 4000HDB 10H,80H,30H,50H,30H,50H答:A=50H,SP=50H,51H=30H,52H=50H,PC=5030H;7.假定A=83H,R0=17H,17H=34H,执行以下指令后,A= ;ANL A,17HORL 17H,AXRL A,R0CPL A答:A=0CBH;8.假设A=55H,R3=0AAH,在执行指令“ANL A,R5”后,A= ,R3= ;答:A=00H,R3=0AAH;9.如果DPTR=507BH,SP=32H,30H=50H,31H=5FH,32H=3CH,则执行下列指令后,DPH= ,DPL= ,SP= ;POP DPHPOP DPLPOP SP答:DPH=3CH,DPL=5FH,SP=50H;10.假定,SP=60H,A=30H,B=70H,执行下列指令后,SP的内容为 ,61H单元的内容为 ,62H单元的内容为 ;PUSH AccPUSH B答:SP=62H,61H=30H,62H=70H;11.判断下列说法项是正确的;A.立即寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中B.指令周期是执行一条指令的时间C.指令中直接给出的操作数称为直接寻址答:A.对;B.对; C.错;12.判断以下指令的正误;1MOV 28H,R2 2DEC DPTR 3INC DPTR 4CLR R05CPL R5 6MOV R0,R1 7PHSH DPTR 8MOV F0,C9MOV F0, 10MOVX A,R1 11MOV C,30H 12RLC R0答:1错2错3对4错5错6错7错8对9错10对11对12错;13.访问SFR,可使用哪些寻址方式答:只能使用直接寻址方式;14.下列程序段的功能是什么PUSH AccPUSH BPOP AccPOP B答:A的内容与B的内容互换;15.写出完成如下要求的指令,但是不能改变未涉及位的内容;1把,,和清“0”;2把累加器A的中间4位清“0”;3使和置“1”;答:1ANL A,87H2ANL A,0C3H3ORL A,0CH16.借助本书中的表3-2指令表,对如下指令代码十六进制进行手工反汇编;FF C0 E0 E5 F0 F0答:MOV R7,APUSH AMOV A ,BMOVX DPTR,A第4章 AT89C51单片机汇编语言程序设计1.已知程序执行前有A=02H,SP=42H,41H=FFH,42H=FFH;下述程序执行后,A= ;SP= ;41H= ;42H= ;PC= ;POP DPHPOP DPLMOV DPTR,3000HRL AMOV B,AMOVC A,A+DPTRPUSH AccMOV A,BINC AMOVC A,A+DPTRPUSH AccRETORG 3000HDB 10H,80H,30H,80H,50H,80H答: A=80H,SP=40H,51H=50H,52H=80H ,PC=8050H;2.说明伪指令的作用;“伪”的含义是什么常用伪指令的功能如何答:伪指令不属于指令系统中的汇编语言指令,它是程序员发给汇编程序的控制命令;只有在汇编前的源程序中才有伪指令;所以“伪”体现在汇编后,伪指令没有相应的机器代码产生;3.解释手工汇编、机器汇编、交叉汇编、反汇编术语概念;答:1手工汇编:手工编程,首先把程序用助记符指令写出,然后通过查指令的机器代码表,逐个把助记符指令“翻译”成机器代码,这种人工查表“翻译”指令的方法称为手工汇编;2机器汇编:是借助于微型计算机上的软件汇编程序来代替手工汇编,完成把助记符指令“翻译”成机器代码的工作;3交叉汇编:使用微型计算机来完成汇编,而汇编后得到的机器代码却是在另一台计算机这里是单片机上运行,称这种机器汇编为交叉汇编;4反汇编:将二进制的机器代码语言程序翻译成汇编语言源程序的过程;4.下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么ORG 1000HTAB1 EQU 1234HTAB2 EQU 3000HDB "MAIN"DW TAB1,TAB2,70H答:4D 41 49 4E 12 34 30 00 00 705.设计子程序时应注意哪些问题答:在编写子程序时应注意以下问题;1子程序的第一条指令前必须有标号;2使用子程序调用指令时,有两条调用指令可供使用;①使用绝对调用指令ACALL addr11要注意,被调用的子程序的首地址与本绝对调用指令的下一条指令的高5位地址相同,即只能在同一2KB程序存储区内;②使用长调用指令LCALL addr16时,addr16为直接调用的子程序的目标地址,也就是说,被调用的子程序可放置在64KB程序存储器区的任意位置;3子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护;4子程序返回主程序时,最后一条指令必须是RET指令;5子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序;6.试编写一个程序,将内部RAM中45H单元的高4位清“0”,低4位置“1”;答:参考程序如下:MOV A,45HANL A,0FHORL A,0FHMOV 45H,A7.试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据;若有,则将51H 单元置为“01H”;若未找到,则将51H单元置为“00H”;答:参考程序如下:START: MOV R0,30HMOV R2,20HLOOP: MOV A,R0CJNE A,0AAH,NEXTMOV 51H,01HLJMP EXITNEXT: INC R0DJNZ R2,LOOPMOV 51H,00HEXIT: RET8.试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数,并将查找到的结果存入41H单元;答:参考程序如下:START: MOV 41H,0MOV R0,20HMOV R2,20HLOOP: MOV A,R0JNZ NEXTINC 41HNEXT: INC R0DJNZ R2,LOOPRET9.在内部RAM的21H单元开始存有一组单字节无符号数,数据长度为20H,编写程序,要求找出最大数存入MAX单元;答:略:10.若SP=60H,标号LABEL所在的地址为3456H;LCALL指令的地址为2000H,执行如下指令2000H LCALL LABEL后,堆栈指针SP和堆栈内容发生了哪些变化PC的值等于什么如果将指令LCALL直接换成ACALL是否可以如果换成ACALL指令,可调用的地址范围是什么答: 1SP=SP+1=61H 61H=PC的低字节=03HSP=SP+1=62H 62H=PC的高字节=20H2PC=3456H3可以42KB=2048 Byte第5章 AT89C51单片机的中断系统1.外部中断1的中断入口地址为 ;定时器1的中断入口地址为 ;答:0013H;001BH;2.若IP=00010100B,则优先级最高者为 ,最低者为 ;答:外部中断1;定时器T1;3.AT89C51单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送 ,使程序执行转向中的中断地址区;答:PC、PC、程序存储器;4.判断AT89C51单片机对外中断请求源响应的最快响应时间为3个机器周期 ; 答:对;5.下列说法正确的是 ;A.各中断源发出的中断请求信号,都会标记在AT89C51单片机的IE寄存器中B.各中断源发出的中断请求信号,都会标记在AT89C51单片机的TMOD寄存器中C.各中断源发出的中断请求信号,都会标记在AT89C51单片机的IP寄存器中D.各中断源发出的中断请求信号,都会标记在AT89C51单片机的TCON与SCON寄存器中答:D;6.中断查询确认后,在下列各种AT89C51单片机运行情况下,能立即进行响应的是 ;A.当前正在进行高优先级中断处理B.当前正在执行RETI指令C.当前指令是DIV指令,且正处于取指令的机器周期D.当前指令是MOV A,R3答:D;7.在AT89C51单片机的中断请求源中,需要外加电路实现中断撤销的是 ; A.电平方式的外部中断B.脉冲方式的外部中断C.外部串行中断D.定时中断答:A;8.下列说法正确的是 ;A.同一级别的中断请求按时间的先后顺序响应B.同一时间同一级别的多中断请求将形成阻塞,系统无法响应C.低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求D.同级中断不能嵌套答:A、C、D;9.中断服务子程序与普通子程序有哪些相同和不同之处答:RETI指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作;除了这一点两条指令不同外,其他操作都相同;10.AT89C51单片机响应外部中断的典型时间是多少在哪些情况下,CPU将推迟对外部中断请求的响应答:略;11.编写外部中断1为跳沿触发的中断初始化程序段;答:SETB IT1SETB EX1SETB EA12.中断响应的条件是什么答:略;13.某系统有3个外部中断源1、2、3,当某一中断源发出的中断请求使INT1引脚变为低电平时见图5-10,便要求CPU进行处理,它们的优先处理次序由高到低为3、2、1,中断处理程序的入口地址分别为1000H、1100H、1200H;试编写主程序及中断服务子程序转至相应的中断处理程序的入口即可;答:参见电路如图5-10所示,参考程序如下:ORG 0000HLJMP MAINORG 0013HLJMP INT_EX1ORG 0030HMAIN: CLR IT0 ;采用电平触发,低电平有效中断SETB EX1 ;允许外部中断1SETB EAWAIT: LJMP WAIT ;用原地跳转代替一段用户程序;以下为外部中断1服务子程序INT_EX1: JNB ,NEXT1 ;=0,不是3号中断,跳转NEXT1LJMP INT_IR3 ;是3号中断,跳转到对应的中断处理程序NEXT1: JNB ,NEXT2 ;=0,不是2号中断,跳转NEXT2LJMP INT_IR2 ;跳转到2号中断处理程序NEXT2: LJMP INT_IR1 ;跳转到1号中断处理程序ORG 1000HINT_IR3: 插入相应中断处理程序RETI ;中断返回ORG 1100HINT_IR2: 插入相应中断处理程序RETI ;中断返回ORG 1200HINT_IR1: 插入相应中断处理程序RETI ;中断返回第6章 AT89C51单片机的定时器/计数器1.下列项说法是正确的;A.特殊功能寄存器SCON,与定时器/计数器的控制无关B.特殊功能寄存器TCON,与定时器/计数器的控制无关C.特殊功能寄存器IE,与定时器/计数器的控制无关D.特殊功能寄存器TMOD,与定时器/计数器的控制无关答:A.对;B.;错C.错;D.错;2.如果采用的晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少答:因为机器周期所以定时器/计数器工作方式0下,其最大定时时间为同样可以求得,方式1下的最大定时时间为;方式2下的最大定时时间为1024ms; 3.定时器/计数器用作定时器模式时,其计数脉冲由谁提供定时时间与哪些因素有关答:定时器/计数器用作定时器时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供;定时时间与时钟频率和定时初值有关;4.定时器/计数器用作计数器模式时,对外界计数频率有何限制答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24;5.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式;定时1ms后,又转为计数工作方式,如此循环不止;假定AT89C51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写程序;答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作;除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式;参考程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,06H ;定时器/计数器T0为计数方式2MOV TL0,156 ;计数100个脉冲的初值赋值MOV TH0,156SETB GATE ;打开计数门SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断CLR F0 ;设置下一轮定时方式的标志位WAIT: AJMP WAITIT0P: CLR EA ;CPU关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,00H ;定时器/计数器T0为定时方式0MOV TH0,0FEH ;定时1ms初值赋值MOV TL0,0CHSETB EARETICOUNT: MOV TMOD,06HMOV TL0,156SETB EARETI6.定时器/计数器的工作方式2有什么特点适用于哪些应用场合答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,如波特率的产生;7.编写程序,要求使用T0,采用方式2定时,在输出周期为400μs,占空比为10∶1的矩形脉冲;答:根据题意,从输出的矩形脉冲的高低电平的时间为10∶1,则高低电平的时间分别为μs和μs;如果系统采用6MHz晶振,Tcy=2μs,因此高低电平输出取整,则约为364μs 和36μs;参考程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,02H ;定时器/计数器T0为定时方式2MOV TL0,4AH ;定时364s初值赋值SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断SETBWAIT: AJMP WAITIT0P: CLR EACLR ;关中断MOV R0,9DLY: DJNZ R0,DLY ;延时36sMOV TL0,4AH ;定时364s初值赋值SETBSETB EARETI8.一个定时器的定时时间有限,如何用两个定时器的串行定时来实现较长时间的定时答:方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器;这种方式的定时时间为两个定时器定时时间的和;方法2,一个作为定时器,在定时中断后产生一个外部计数脉冲比如由接INT0产生,另一个定时器工作在计数方式;这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值;9.当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭答:由T1口控制定时器T1的启动和关闭;10.定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程若时钟频率为6MHz,求允许测量的最大脉冲宽度是多少答:采用方式1定时工作方式;最大脉冲宽度为;11.编写一段程序,功能要求:当引脚的电平正跳变时,对的输入脉冲进行计数;当引脚的电平负跳变时,停止计数,并将计数值写入R0、R1高位存R1,低位存R0;答:将的输入脉冲接入INT0,即使用T0计数器完成对口的脉冲计数;参考程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: JNB ,MAINMOV TMOD,05H ;定时器/计数器T0为计数方式1SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断WAIT: JB ,WAITCLR EACLR TR0MOV R1,TH0MOV R0,TL0AJMP $IT0P: INC R2RETI12.TH x与TL xx=0,1是普通寄存器还是计数器其内容可以随时用指令更改吗更改后的新值是立即刷新还是等当前计数器计满后才能刷新答:THx与TLxx=0,1是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值立即刷新;但在读THx、TLx值时,应该先读THx值,后读TLx,再读THx值;若两次读得THx值相同,则可确定读得的内容正确;若前后两次读得的THx值有变化,再重复上述过程;第7章 AT89C51单片机的串行口1.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式 ; 答:1;2.在串行通信中,收发双方对波特率的设定应该是的;答:相等;3.下列选项中, 是正确的;A.串行口通信的第9数据位的功能可由用户定义B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定答:A对B对C错D对E对;4.通过串行口发送或接收数据时,在程序中应使用 ;A.MOVC指令 B.MOVX指令C.MOV指令D.XCHD指令答:CMOV指令;5.串行口工作方式1的波特率是 ;A.固定的,为f osc/32 B.固定的,为f osc/16C.可变的,通过定时器/计数器T1的溢出率设定D.固定的,为f osc/64答:C;6.在异步串行通信中,接收方是如何知道发送方开始发送数据的答:当接收方检测到RXD引脚上的有效的负跳变时,即可知道发送方开始发送数据; 7.串行口有几种工作方式有几种帧格式各种工作方式的波特率如何确定答:串行口有4种工作方式:方式0、方式1、方式2、方式3;有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率;方式1的波特率=2SMOD/32×定时器T1的溢出率;方式2的波特率=2SMOD/64×fosc;方式3的波特率=2SMOD/32×定时器T1的溢出率;8.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B”42H的帧格式;答:传送的字符“B”的帧格式如图所示先低位后高位;起始位 0 1 0 0 0 0 1 0 校验位停止位图9.为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2若已知时钟频率、通信波特率,如何计算其初值答:1因为定时器/计数器在方式2下,初值可以自动重装,这样在进行串口波特率发生器设置时,就避免了重装参数的操作,且减少了重装参数的误差;2已知时钟频率、通信波特率,根据公式7-3,即可计算出初值;10.若晶体振荡器为,串行口工作于方式1,波特率为4 800bit/s,写出用T1作为波特率发生器的方式控制字和计数初值;答:经计算,初值为FAH;控制字: ANL TMOD,0F0HORL MOD,20HMOV TH1,0FAHMOV TL1,0FAHMOV SCON,40H11.简述利用串行口进行多机通信的原理;答:以方式1为例;发送过程:数据位由TXD端输出,发送1帧信息为10位,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送;发送开始时,内部发送控制信号SEND变为有效,将起始位向TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位;8位数据位全部输出完毕后,置1中断标志位TI,然后SEND信号失效;接收过程:当检测到起始位的负跳变时,则开始接收;接收时,定时控制信号有2种;其中一种是位检测器采样脉冲,它的频率是RX时钟的16倍;也就是在1位数据期间,有16个采样脉冲,以波特率的16倍速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误地开始接收数据;12.使用AT89C51的串行口按工作方式1进行串行数据通信,假定波特率为2 400bit/s,以中断方式传送数据,请编写全双工通信程序;答:请参考教材的P115-P117程序,并作适当改动;13.某AT89C51单片机串行口,传送数据的帧格式由1个起始位0、7个数据位、1个偶校验和1个停止位1组成;当该串行口每分钟传送1800个字符时,试计算出它的波特率; 答:串口每秒钟传送的字符为1800/60=30个字符/秒,所以波特率为30个字符/秒×10位1个字符=300b/s;14.为什么AT89C51单片机串行口的方式0帧格式没有起始位0和停止位1答:串行口的方式0为同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个89C51之间的串行通信;该方式以fosc/12的固定波特率从低位到高位发送或接收数据;15.直接以TTL电平串行传输数据的方式有什么缺点答:优点是连线简单,缺点是抗干扰性能差,传输距离短;第8章 AT89C51单片机扩展存储器的接口设计1.单片机存储器的主要功能是存储和 ;答:程序,数据;2.假设外部数据存储器2000H单元的内容为80H,执行下列指令后累加器A中的内容为 ;MOV P2,20HMOV R0,00HMOVX A,R0答:80H;3.在存储器扩展中,无论是线选法还是译码法最终都是为扩展芯片的片选端提供控制信号;答:片选;4.起止范围为0000H~3FFFH的存储器的容量是 KB;答:16KB5.在AT89C51单片机中,PC和DPTR都用于提供地址,但PC是为访问存储器提供地址,而DPTR是为访问存储器提供地址;答:程序,数据;6.11条地址线可选个存储单元,16KB存储单元需要条地址线;答:2KB,14;7.4KB RAM存储器的首地址若为0000H,则末地址为 H;答:0FFFH;8.区分AT89C51单片机片外程序存储器和片外数据存储器的最可靠方法是 ; A.看其位于地址范围的低端还是高端B.看其离AT89C51单片机芯片的远近C.看其芯片的型号是ROM还是RAMD.看其是与RD信号连接还是与PSEN信号连接答:D;9.试编写一个程序如将05H和06H拼为56H,设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H;答:本题主要考察对外部存储器的读、写操作的编程,只要正确使用MOVX指令就可以了;编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高4位和低4位互换,再屏蔽掉低4位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高4位,然后将寄存器A的值与30H进行“或运算”,将运算后的结果保存在2002H中;ORG 0000HMAIN: MOV DPTR,2001H ;设置数据指针的初值MOVX A,DPTR ;读取2001H的值SWAP AANL A,0F0H ;屏蔽掉低4位MOV 30H,A ;保存AINC DPTR ;指针指向下一个片外RAM单元MOVX A,DPTR ;读取2002H的值ANL A,0FH ;屏蔽掉高4位ORL A,30H ;进行拼装MOVX DPTR,A ;保存到2002H片外RAM单元END10.编写程序,将外部数据存储器中的4000H~40FFH单元全部清“0”;答:本题主要考察对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了;ORG 0000HMAIN: MOV A,0 ;0给AMOV 0,0FFH ;设置循环次数MOV DPTR,4000H ;设置数据指针的初值LOOP: MOVX DPTR,A ;当前单元清“0”INC DPTR ;指向下一个单元DJNZ R0,LOOP ;是否结束END11.在AT89C51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突答:因为控制信号线的不同;外扩的RAM芯片既能读出又能写入,所以通常都有读、写控制引脚,记为OE和WE,它们分别与89C51的RD和WR引脚相连;外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与89C51单片机的PSEN相连;12.请写出图8-14中4片程序存储器27128各自所占的地址空间;答:图中采用了译码法;4片地址分别为0000H~3FFFH、4000H~7FFFH、8000H~BFFFH、C000H~FFFFH;。
(完整版)单片机试题及答案
(完整版)单⽚机试题及答案单⽚机原理与接⼝技术习题答案习题与思考题11-1 微型计算机通常由哪些部分组成?各有哪些功能?答:微型计算机通常由控制器、运算器、存储器、输⼊/输出接⼝电路、输⼊设备和输出设备组成。
控制器的功能是负责从内部存储器中取出指令并对指令进⾏分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调⼯作;运算器主要完成算数运算和逻辑运算;存储器⽤于存储程序和数据;输⼊/输出接⼝电路完成CPU与外设之间相连;输⼊和输出设备⽤于和计算机进⾏信息交流的输⼊和输出。
1-2 单⽚微型计算机与⼀般微型计算机相⽐较有哪些区别?有哪些特点?答:与通⽤微型计算机相⽐,单⽚机的硬件上,具有严格分⼯的存储器ROM和RAM和I/O端⼝引脚具有复⽤功能;软件上,采⽤⾯向控制的指令系统和硬件功能具有⼴泛的通⽤性,以及品种规格的系列化。
单⽚机还具备体积⼩、价格低、性能强⼤、速度快、⽤途⼴、灵活性强、可靠性⾼等特点。
1-3 简述计算机的⼯作过程。
答:计算机的⼯作是由微处理器以⼀定的时序来不断的取指令、指令译码和执⾏指令的过程。
1-4 单⽚机的⼏个重要指标的定义。
答:单⽚机的重要指标包括位数、存储器、I/O⼝、速度、⼯作电压、功耗和温度。
1-5 单⽚微型计算机主要应⽤在哪些⽅⾯?答:单⽚机的主要应⽤领域有智能化产品、智能化仪表、智能化测控系统、智能化接⼝等⽅⾯。
1-6 为什么说单⽚微型计算机有较⾼的性能价格⽐和抗⼲扰能⼒?答:因为单⽚微型计算机主要⾯向特定应⽤⽽设计,设计者在硬件和软件上都⾼效率地设计,量体裁⾐、去除冗余,⼒争在同样的硅⽚⾯积上实现更⾼的性能,具备较⾼的性能、价格⽐;单⽚机嵌⼊式系统中的软件⼀般都固化在存储器芯⽚或单⽚机本⾝中,⽽不是存贮于磁盘等载体中,另外单⽚机体积⼩,可以放⼊屏蔽设备中,从⽽使其具有较⾼的抗⼲扰能⼒。
1-7 简述单⽚机嵌⼊式系统的定义和特点。
答:单⽚机嵌⼊式系统是嵌⼊到对象体系中的专⽤计算机系统;其特点是⾯向特定应⽤、与各个⾏业的具体应⽤相结合、硬件和软件⾼效率、软件固化在存储器芯⽚或单⽚机本⾝和不具备⾃举开发能⼒。
单片机习题
选择:1、单片机应用程序一般存放在()A、RAMB、ROMC、寄存器D、CPU 2.在单片机中,通常将一些中间计算结果放在()中A、累加器B、控制器C、程序存储器D、数据存储器3.CPU主要的组成部部分为()A、运算器、控制器B、加法器、寄存器C、运算器、寄存器D、运算器、指令译码器4、89C51单片机的堆栈区应建立在()。
A. 片内数据存储区的低128字节单元B. 片内数据存储区C.片内数据存储区的高128字节单元D.程序存储区5、 89C51单片机中既可位寻址又可字节寻址的单元是()A、20HB、30HC、00HD、70H6、在89C51单片机中,PC存放的是()A、正在执行指令的地址B、将要执行的下一条指令的地址C、正在执行指令的操作码D、对已执行过的指令条数计数7、为了使10H—17H作工作寄存器使用RS1、 RS0的取值为()A 、0 ,0 B、 0 ,1 C、 1, 0 D、 1, 18.下述哪条引脚为输入脚()A 、RESET B、 ALE C、 RD D、 PSEN9、在89C51单片机中,SP存放的是()A、堆栈栈低的地址B、堆栈栈顶的地址C、堆栈栈低的内D、堆栈栈低的内容10.数据指针DPDR在()中A、CPU控制器B、CPU运算C、外部程序存储器D、外部数据存储器11.单片机上电后或复位后,工作寄存器R0是在()A、0区00H单元B、0区01H单元C、0区09H单元D、SFR12、89C51的内部RAM中,可以进行位寻址的地址空间为()A、00H∽2FHB、20H∽2FH C 、00H∽FFH D、20H∽FFH13、在堆栈操作中,当进栈数据全部弹出后,S P指向()A、栈底单元B、7FH单元C、栈底单元地址加1D、栈底单元地址减114、关于指针DPTR,下列说法正确的是()A.DPTR是一个8位寄存器 B.DPTR不可寻址C.DPTR是由DPH和DPL两个8位寄存器组成的 D.DPTR的地址83H填空:1、PC存放_______________,具有___________特性。
单片机练习题
单⽚机练习题⼀、单选题。
1.计算机中最常⽤的字符信息编码是()A ASCIIB BCD码C 余3码D 循环码2.要MCS-51系统中,若晶振频率屡8MHz,⼀个机器周期等于( ) µsA 1.5B 3C 1D 0.53. 以下不是构成的控制器部件():A 程序计数器、B指令寄存器、C指令译码器、D存储器4.以下不是构成单⽚机的部件()A 微处理器(CPU)、B存储器C接⼝适配器(I\O接⼝电路) D 打印机5.16位⼆进制所表⽰的⽆符号整数,其相应的⼗进制数范围是()A.0~65536B.1~65536C.1~65535D.0~655356.-49D的⼆进制补码为.( )A 11101111B 11101101C 0001000D 111011007.⼗进制29的⼆进制表⽰为原码()A 11100010B 10101111C 00011101D 000011118. ⼗进制0.625转换成⼆进制数是()A 0.101B 0.111C 0.110D 0.1009使⽤8255可以扩展出的I/O⼝线是()16根(B)24根(C)22根(D)32根10.PSW=18H时,则当前⼯作寄存器是()(A)0组(B)1组(C)2组(D)3组11.控制串⾏⼝⼯作⽅式的寄存器是()(A)TCON (B)PCON (C)SCON (D)TMOD12.MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是( )(A) T1, (B)T0,T1 (C)T1,串⾏接⼝(D) ,T013、MOVX A,@DPTR指令中源操作数的寻址⽅式是()(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)⽴即寻址14、ORG 0003HLJMP 2000HORG 000BHLJMP 3000H 当CPU响应外部中断0后,PC的值是()(A)0003H (B)2000H (C)000BH (D)3000H15、执⾏PUSH ACC指令,MCS-51完成的操作是()(A ) SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP (C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP16、CALL指令操作码地址是2000H,执⾏完相⼦程序返回指令后,PC=()(A)2000H (B)2001H (C)2002H (D)2003H17、6264芯⽚是()(A) EEPROM (B)RAM(C)FLASH ROM (D)EPROM18、下⾯条指令将MCS-51的⼯作寄存器置成3区()(A)MOV PSW,#13H (B)MOV PSW,#18H(C)SETB PSW.4 CLR PSW.3 (D) SETB PSW.3 CLR PSW.419、⽤MCS-51⽤串⾏扩展并⾏I/O⼝时,串⾏接⼝⼯作⽅式选择()(A) ⽅式0 (B)⽅式1 (C)⽅式2 (D)⽅式320、当8031外出扩程序存储器8KB时,需使⽤EPROM 2716()(A) 2⽚(B)3⽚(C)4⽚(D)5⽚21、ORG 0000HAJMP 0040HORG 0040HMOV SP,#00H当执⾏完左边的程序后,PC的值是()(A) 0040H (B)0041H (C)0042H (D)0043H22、对程序存储器的读操作,只能使⽤()(A) MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令23某种存储器芯⽚是8KB*4/⽚,那么它的地址线根线是()(A) 11根(B)12根(C)13根(D)14根24要使MCS-51能够响应定时器T1中断、串⾏接⼝中断,它的中断允许寄存器IE的内容应是()(A)98H (B)84H (C)42 (D)22H25. MCS-51外扩ROM,RAM和I/O⼝时,它的数据总线是()(A) P0 (B)P1 (C)P2 (D)P326.⽤MCS-51串⾏接⼝扩展并⾏I\O⼝时,串⾏接⼝⼯作⽅式应选择( )(A)⽅式0 (B)⽅式1 (C)⽅式2 (D)⽅式327.MCS-51有中断源()(A)5个(B)2个(C)3个(D)6个28.使⽤定时器T1时,有⼏种⼯作模式()(A)1种(B)2种(C)3种(D)4种29、MCS-51的中断源全部编程为同级时,优先级最⾼的是()(A) INT1 (B)TI (C)串⾏接⼝(D)INT030.MCS—51系列单⽚机8031⽚内EPROM有()A.0KBB.4KBC.2KBD.8KB31.⼗进制数215转换成⼆进制数表⽰,是()A.11010111BB.10001101BC.11011111BD.11110101B32.8031单⽚机所⽤的电源是()A.±15VB.+15VC.+5VD.±5V33.8031单⽚机内有_________定时器/计数器。
单片机练习题及例题【精选】
单片机课堂练习题/例题总结习题和思考题一1、一个完整的单片微机芯片内至少有哪些部件?2、根据程序存储器的差别单片机可以分为那些类型?3、单片机的主要特性是什么?它适宜于构成一个通用微机系统还是专用微机系统?为什么?习题与思考题二1、8051单片机内包含哪些主要逻辑功能部件?2、MCS-51单片机结构上有哪些主要特点?习题和思考题三1、详细描绘MCS-51单片机的存储器配置图。
2、MCS-51单片机是通过哪些方法将程序存储器和数据存储器严格分开的?3、什么是单片机的特殊功能寄存器?8051/8052各有几个特殊功能寄存器?这些特殊功能寄存器占有的地址范围?4、MCS—51单片机有哪些可直接寻址的位?5、什么是堆栈?8031的堆栈区可以设在什么地方?一般应设在什么区域?如何实现?试举例说明。
习题和思考题四1、试根据P1口和P3口的结构特性,指出它们作为输入口或第二功能输入/输出的条件。
2、MCS-51中无ROM型单片机在应用中P2口和P0口能否直接作为输入/输出连接开关、指示灯之类的外围设备?为什么?3、画出MCS-51系列单片机进行系统扩展时的三总线结构图。
课堂练习一1、8031有四个工作寄存器区,由PSW状态字中的RS1、RS0两位的状态来决定,单片机复位后,若执行SETB RS1 指令,此时只能使用()区的工作寄存器。
A、0区B、1区C、2区D、3区2. 09H位所在的单元地址是()A.02H B.21H C.08H D.20H3.单片机在进行取指令操作时,指令的地址是由()的内容决定。
A.SP B.PC C.DPTR D.PSEN和ALE4. P1口作输入用途之前必须( )。
A.外接高电平B.外接上拉电阻C.相应端口先置0 D.相应端口先置15.程序计数器PC用来( )。
A.存放指令B.存放上一条的指令地址C.存放下一条的指令地址D.存放正在执行的指令地址思考题1. 数123可能是( )。
A. 二进制数B. 八进制数C. 十六进制数D.四进制数 E.十进制数2. 8031单片机内部RAM包括( ) 。
单片机习题集及答案
1.在MCS-51中,有7种寻址方式,它们分别为立即数寻、寄存器寻址、直接寻址、寄存器间接寻址、相对寻址、变址寻址和位寻址。
2.汇编语言的指令格式为标号:操作码操作数注释。
3.数据传送类指令执行完毕,源操作数的内容不会(会/不会)丢失。
4.8051内部RAM从20H至2FH既可位寻址,又可间接寻址,位地址空间从00H到7FH。
5.MCS-51单片机指令系统中,指令长度有一字节、二字节和(三)字节,指令执行时间有一个机器周期、两个机器周期和四机器周期,乘法指令需四机器周期。
6.MOV A,20H中,20H的寻址方式称之为_直接___;SETB 20H的寻址方式为位寻址。
7.关于堆栈类操作的两条指令分别是_PUSH(入栈)指令_ 、POP(出栈)指令;堆栈操作只能是寄存器间接寻址寻址。
8.访问8031片外数据存储器MOVX指令采用的是寄存器间接寻址寻址方式。
访问片外序存储器MOVC指令采用的是变址寻址方式。
9.设(A)=55H,(R5)=AAH,则执行ANL A,R5指令后的结果是(A)= 00H,(R5)= AAH;则执行ORL A,R5指令后的结果是(A)= FFH ,(R5)= AAF;则执行XRL A,R5指令后的结果是(A)= FFH,(R5)= AAH 。
10.伪指令不产生(产生/不产生)可执行目标代码。
汇编语言程序结束的指令为END。
11.DA指令跟在ADD,ADDC指令的后面,用与二进制数与BCD码的调整。
若(A)=0AH ,执行DA A指令后,(A)= 15。
单项选择题1.JMP跳转范围是:(D. -128~127B)2.MCS—51系列单片机最长的一条指令需 B. 4个机器周期。
3.MOV A,@R0这条指令中@R0的寻址方式称为:(B. 寄存器间接寻址)4.在CPU内部,反映程序运行状态或反映运算结果的特征寄存器是:B. PSW5.下列指令中正确的是:B. JBC TF0,L16.下列指令中错误的是:A. SETB 50H.07.将累加器的值压入堆栈的正确指令是:B. PUSH A8.下列那条减法指令是错误的:C. SUBBC9. 指令CJNE A ,#00H ,LOOP 影响PSW的哪一位:C.CY10. 在MUL AB指令中,若积超过255,则C. OV=111.在相对寻址方式中,寻址的结果体现在A.PC中12.在相对寻址方式中,"相对"两字是指相对于 C.当前指令的末地址13.在寄存器间接寻址方式中,指定寄存器中存放的是B.操作数地址14.对程序存储器的读操作,只能使用D.MOVC指令15.必须进行十进制调整的十进制运算C.只有加法16.执行返回指令时,返回的断点是C.调用指令下一条指令的首地址17.下列指令中与进位标志位CY 无关的指令有D.无条件转移指令18.可以为访问程序存储器提供或构成地址的有D.PC、A、DPTR和SP 19.以下各项中不能用来对内部数据存储器进行访问的是A.数据指针DPTR20.若原来工作寄存器0组为当前寄存器组,现要改1组为当前寄存器组,不能使用指令C.MOV PSW.3,C21.不能为程序存储器提供和构成地址的有:D.PSW22.MCS-51汇编语言指令格式中,唯一不可缺少的部分是:B.操作码23.MCS—51的立即寻址方式中,立即数前面:D.应加前缀“#”号24.下列完成8031单片机内部数据传送的指令是:D.MOV direct,direct(25).MCS—51的立即寻址的指令中,立即数就是:A.放在寄存器R0中的内容26.单片机中PUSH和POP指令常用来:C.保护现场,恢复现场27.MCS—51寻址方式中,操作数Ri加前缀“@”号的寻址方式是:A.寄存器间接寻址28.MCS—51寻址方式中,位寻址的寻址空间是:D.片内RAM的20H~2FH字节中的所有位和部分专用寄存器SFR的位29.MCS—51寻址方式中,直接寻址的寻址空间是B.专用寄存器SFR30.执行指令MOVX A,@DPTR时,WR、RD脚的电平为:C.WR高电平,RD低电平31.主程序执行完ACALL后返回主程序后,堆栈指针SP的值:A.不变32.单片机中使用MOVX A,@R1指令寻址数据存贮器1050H单元。
单片机练习题(含答案)
1.单片机还可称为(微控制器)。
2. 单片机与普通计算机的不同之处在于其将(CPU)、(存储器)、和(I/O接口电路)三部分集成于一块芯片上。
3. MCS-51系列单片机芯片间主要差别是什么?主要差别在于片内是否带有程序存储器4. 在家用电器中使用单片机应属于微计算机的(B)A)辅助设计应用(B)测量、控制应用(C)数值计算应用(D)数据处理应用5. MCS-51单片机的引脚EA接高电平和接低电平时各有何种功能?接高电平,则使用片内程序存储器,否则使用片外程序存储器。
6. 什么是机器周期?一个机器周期的时序是如何来划分的?如果采用12MHz晶振,一个机器周期为多长时间?1个机器周期等于12个时钟振荡周期,而时钟振荡周期即晶振频率的倒数。
如果采用12MHz晶振,一个机器周期为1us。
7.存储器的空间里,有5个单元是特殊的,这5个单元对应MCS-51单片机5个中断源的中断入口地址,请写出这些单元的地址以及对应的中断源。
8.(B)区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。
错(C)在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。
对(D)PC可以看成是程序存储器的地址指针。
对9. 8051 单片机复位后,R4所对应的存储单元的地址为(04H),因上电时PSW=(00H)。
这时当前的工作寄存器区是(0)组工作寄存器区。
10.判断以下有关PC和DPTR的结论是否正确?(A) DPTR是可以访问的,而PC不能访问。
对(B) 它们都是16位的寄存器。
对(C) 它们都具有加“1”的功能。
错(D) DPTR可以分为2个8位的寄存器使用,但PC不能。
对11.内部RAM中,哪些单元可作为工作寄存器区,哪些单元可以进行位寻址?写出其地址范围。
答:字节地址为00H-1FH的单元可以作为工作寄存器区;字节地址为20H-2FH的单元可以进行位寻址。
12.使用8031单片机时,需将EA引脚接(低)电平,因为其片内无(程序)存储器。
单片机习题
一、判断题1.寄存器间接寻址中,寄存器中存放的是操作数。
(错)2.程序存储器只能存放程序,不能存放固定数据和表格。
(错)3.要进行多机通信,8051串行接口的工作方式0为多机通信方式。
(错)4.8051单片机复位是高电平有效。
(对)5.内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用。
(错)6.在8051单片机中可以设置串行中断为最高优先级中断。
( 对)7.8051单片机有5个中断源,芯片相应有5个中断请求输入引脚。
(错)8.同级中断请求按照时间先后顺序响应。
(对)9.脉冲方式中断请求是脉冲的上升沿有效。
(错)10.在同一优先级别内,串行中断优先级别最高。
(错)二、填空题1.8位无符号二进制数中,最小的十进制数是____-128_____。
2.8052单片机有_____5____个中断源。
3.8051中唯一不可寻址的16位寄存器为____DPTR_____。
4.伪指令中,位定义命令为____BIT_____。
5.帧格式为1个起始位、8个数据位和1个停止位的异步串行通信方式是方式__方式1____。
6.在8051单片机系统中,为外扩存储器准备了___16______条地址线,其中低位地址线由___P0______提供,高位地址线由_____P2____提供。
7.8位无符号数最小的数字是___00H___。
8.8051单片机中,片内RAM有__128____字节。
9.8051中唯一可供用户使用的16位寄存器是__DPTR____。
10.8051单片机数据传送指令访问内部RAM使用MOV指令,访问外部RAM使用___MOVX___指令,访问ROM使用___MOVCC___指令。
11.8051有4组工作寄存器,它们的地址范围是___00H___~__1FH____。
12.堆栈的结构可以有两种类型:___向上生长___和向下生长型,8051属于___向上生长___。
13.在加减运算中,当OV=1时,表明_____有借位________,在乘法运算中,表示_____乘积大于0FFH________。
单片机习题
开始 将20H中的数送 入A 20H与22H单元中 数据加法操作 将A中数送入24H 将21H中的数送 入A 21H与23H完成带 进位加法操作 将A中数送入25H 结束
START:
ORG 1000H
CLR C
MOV ADD A A 20H; 22H;
MOV
MOV
24H A;
A 21H;
ADDC A 23H;
#2;
mov
mov
30H
32H
A;
B;
mov
mov mul ADD mov END
A
B AB; A 31H
31H;
#2;
32H; A;
8、写出16位数相加程序,设被加数存放在内 RAM20H,21H单元,加数存放在22H,23H单元,并 将结果存放在后续单元24H、25H中(要求低位数 存放在低地址单元中)。
6.阅读下面的程序。要求:说明程序的功能; 写出涉及的寄存器及片内RAM单元的最后结果 答:该程序是将内部RAM40H中的内容与41H的内 容相加,和放在43H,42H中。指令执行后:A的 内容为01H,42H的内容为5AH,43H的内容为 01H。
7、假设在内RAM30H和31H中存放有一个16位的无 符号二进制数(高字节在高地址单元),请编写 程序对该数乘2,再放回原单元。
程序踏步 结束
SJMP $ END
第四章
习题
一 填空题
1. 2. 3.
保护;恢复 机器语言 AREA1=0500H BUF=0505H TIME=01H ACK=0507H
3.
求连续存放在20H中的8个单字节无符号数之和,并求其平均值 存放在R2中 解: ORG 0200H MOV R7,#07H ;R7作循环次数计数器 MOV R3,#0 ;R3作和数高字节寄存器 MOV A, 20H ;取被加数 MOV R0, #21H ;R0作加数地址指针 CLR C LOOP: ADD A, @R0 ;作加法 JNC NEXT ;CY=0,和<256,转 INC R3 ;CY=1,加到高字节 NEXT: INC R0 ;修改R0指针 DJNZ R7, LOOP ;未完,重复加 MOV 51H, R3 ;存高字节 MOV 50H, A ;存低字节
单片机原理及应用习题库(附答案)
单片机原理及应用习题库(附答案)一、单选题(共100题,每题1分,共100分)1、设异步串行接口按方式1每分钟传输9000个字符,则其波特率应为()A、2000B、1500C、1000D、1200正确答案:B2、下列属于INT1口触发中断时的语句为interrupt()A、1B、3C、2D、0正确答案:C3、185转化为16进制为()A、11B、12C、B9D、9B正确答案:C4、在计算机中“A”是用()来表示的A、BCD码B、二——十进制编码C、余三码D、ASCII码正确答案:D5、P0口作数据线和低8位地址线时()A、能作I/O口B、应外接上拉电阻C、应外接高电平D、不能作I/O口正确答案:D6、80C51串口收发过程中定时器T1的下列描述中()是不正确的。
A、T1的作用是产生用以串行收发节拍控制的通信时钟脉冲,也可用T0进行替换B、发送数据时,该时钟脉冲的下降沿对应于数据的移位输出C、接收数据时,该时钟脉冲的上升沿对应于数据位采样D、通信波特率取决于T1的工作方式和计数初值,也取决于PCON的设定值正确答案:A7、用定时器T1工作方式2计数,要求每次计满100次向CPU发出中断请求,TH1,TL1的初始值为()A、0x9cB、0x20C、0x64D、0xa0正确答案:A8、当ALE信号有效时,表示()A、从ROM中读取数据B、从P0口可靠地送出低8位地址C、从P0口送出数据D、从RAM中读取数据正确答案:B9、中断控制方式的优点是()A、提高CPU的利用率B、能在线进行故障处理C、无须CPU干预D、硬件连接简单正确答案:A10、1字节为()位A、4B、8C、16D、32正确答案:B11、89C51单片机串行口SCON寄存器允许接收位为()A、TIB、RIC、REND、SM2正确答案:C12、串行口也可称作()A、寄存器B、内部中断源C、定时器D、外部中断源正确答案:B13、中断函数的返回值是()A、无返回值B、1或0C、0D、1正确答案:A14、定时器T0工作在方式3时,定时器T1有()种工作方式。
单片机原理及应用练习题含答案
单片机原理及应用练习题含答案一、单选题(共100题,每题1分,共100分)1、51单片机定时器T0的益处标志TF0,若计数产生溢出时,其值为()A、00HB、1C、FFHD、计数值正确答案:B2、8501单片机的最高工作频率是()MHz。
A、12B、8C、10D、6正确答案:A3、在编写程序的时候,若遇到重复出现多次的一段语句,最好的方法是()A、定义一个自定义函数B、复制粘贴C、直接手写D、在网上查找正确答案:A4、十进制43转换成二进制数是()。
A、111011B、101011C、101111D、101101正确答案:B5、T0的两个特殊功能寄存器为()A、TH0,TL1B、TH1,TL0C、TH1,TL1D、TH0,TL0正确答案:D6、MC51单片机中有()个16位的定时器/计数器A、1B、2C、3D、4正确答案:B7、80C51单片机的中断服务程序入口地址是指()A、中断服务程序的首句地址B、中断服务程序的返回地址C、中断向量地址D、主程序调用时的断点地址正确答案:C8、属于51单片机用于串行通信控制寄存器的是()A、SUBNB、HUNAC、SCOND、PCOM正确答案:C9、共阳极七段数码管显示器的驱动信号有何特色?()A、低电平点亮B、低电平不亮C、高电平点亮D、以上皆非正确答案:A10、蜂鸣器的声调由信号的()决定A、电压B、频率C、幅值D、占空比正确答案:B11、89C51单片机的RS1,RSO=11时,当前寄存器R0-R7占用内部RAM()单元。
A、00H-07HB、08H-0FHC、10H-17HD、18H-1FH正确答案:D12、C51数据类型中关键词“sfr”用于定义()A、位变量B、字节变量C、无符号变量D、特殊功能寄存器变量正确答案:D13、()为定时/计数器控制寄存器。
A、IEB、TCONC、SCOND、IP正确答案:B14、蜂鸣器可以分为()和无源A、有旋B、震荡C、有源D、无旋正确答案:C15、欲访问8051单片机的内部程序存储器,则EA引脚必须为()A、高电平B、低电平C、高低电平D、与PC值有关正确答案:A16、单片机程序代码一般存放在()A、RAMB、ROMC、CPUD、寄存器正确答案:B17、在微型计算机中,负数常用()表示。
单片机学习习题答案
单片机学习习题答案各位同学务必认真完成此习题,以对课程有个完整的复习。
祝同学得到好成绩!单片机练习一一、单项选择题1.当使用8051且EA=1,程序存储器地址小于1000H时,访问的是。
A.片内ROM B.片外ROM C.片内/外ROM D.片外RAM2.下面部件不属于CPU结构中控制器部分的是。
A .PCB .IRC .PSWD .ID 外扩存储器时,系统的数据总线是构成。
A .P0 B .P1 C .P2 D. P3 根地址线的寻址范围。
A .512KB .4K 上电复位后,SP的内容是。
A .00HB .07H 6.栈操作遵循的原则是。
A.先进后出B. 先进先出C. 后进后出D. 随机口的每一位能驱动。
A. 2个TTL负载个TTL负载个TTL负载个TTL负载的并行I/O读-改-写操作,是针对该口的。
A.引脚B.缓冲器C.地址线D.内部锁存器9.当ALE信号有效时,表示。
A. 从ROM中读取数据B. 从P0口可靠地送出地址低8位C. 从P0口送出数据D. 从RAM中读取数据10.要使8031单片机复位,应在RST端上加至少个机器周期的高电平。
B. 2 C. 3 D. 4 单片机的堆栈区应建立在。
A.片内数据存储区的低128字节单元B.片内程序存储区C.片内数据存储区的高128字节单元D.片外程序存储区 12.下面哪种设备不是输入设备。
A. A/D转换器B. 键盘C. 打印机D. 扫描仪是用8位二进制补码表示的十六进制的数,那么相应的十进制数是。
A.-122 B. 118 C. 10 D. –9 15.欲访问8051单片机的内部程序存储器,则EA引脚必须为。
A.高电平 B.低电平 C.高低电平 D.与PC值有关中存放的是。
A.下一条要执行指令的地址B.当前正在执行的指令C.当前正在执行的地址D.下一条要执行17.假定设置堆栈指针SP的值为36H,在执行指令PUSH 20H后,SP的值为。
单片机原理及应用模拟练习题含答案
单片机原理及应用模拟练习题含答案一、单选题(共50题,每题1分,共50分)1、当晶振频率为6MHz时,机器周期为():A、3μsB、1μsC、4μsD、2μs正确答案:D2、CY(PSW.7)的定义是()A、进位标志位B、辅助进位标志位C、用户标志位D、寄存器组选择位E、溢出标志位F、奇偶标志位正确答案:A3、DA A 是()A、数据传送指令B、算术运算指令C、逻辑运算指令D、控制转移指令E、位操作指令正确答案:B4、某种存储器芯片是8KB*4/片,那么它的地址线根数是( )A、11根B、12根C、13根D、14根正确答案:C5、下列指令能使累加器A低4位不变,高4位置F的是()A、ANL A,#OFHB、ANL A,#OFOHC、ORL A,#OFHD、ORL A,#OF0H6、子程序返回指令的操作数有几个():A、0B、3C、1D、2正确答案:A7、执行下列程序后,内部RAM 30H单元的内容是()。
MOV 30H,#00H MOV R0,#30H MOV A, 30H ADD A, #05H MOVC A, @A+PC MOV @R0, A SJMP $ TDB:DB 00H ,01H ,02H,03H,05HA、00HB、02HC、05HD、30H正确答案:B8、以下标号正确的是():A、LOOPB、MOV:C、ST1:D、1ABC:正确答案:C9、一个机器周期内含有多少个状态周期():A、8B、2C、6D、4正确答案:C10、执行程序:MOV DPTR,#8000H MOVX A,@DPTR ADD A,20H MOV R0,#00H MOVx @R0,A INC R0 CLR A ADDC A,#00H MOVx @R0,A RET 之后则DPTR是()A、8003HB、7900HC、8001HD、8000H11、地址总线的缩写是():A、ABB、DBC、CBD、KB正确答案:A12、下列指令能使R0高4位不变,低4位置F的是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题一:试写出相应的程序来描述图2.7所示的前趋关系
解答:
Var a,b,c,d,e,f,g,h :semaphore:=0,0,0,0,0,0,0,0; Begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end; begin wait(b); S3; signal(e); end;
begin wait(c); S4; signal(f); end;
begin wait(d); S5; signal(g); end;
begin wait(e); S6; signal(h); end;
begin wait(f); wait(g); wait(h); S7; end; parend
end
习题二:有8个程序段p1,…,p8的,它们在并发执行时有如图所示的制约关系试用信号量实现这些程序段间的同步。
习题三:设有两个生产者进程A、B和一个销售者进程C,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然后入库供销售者销售;销售者每次循环从仓库中取出一个产品进行销售。
如果不允许同时入库,也不允许边入库边出库,而且要求生产A产品和B产品的件数满足以下关系:
的件数的件数
n A-B m
-≤≤
其中n、m是正整数,但对仓库中A产品和B产品的件数无上述要求,请用信号量机制写出A、B、C三个进程的工作流程。
解答:
分析:本题中存在着以下的同步和互斥关系:①生产者A、B和消费者C之间,不能同时将产品入库和出库,故仓库是一个临界资源。
②两个生产者之间必须进行同步。
当生产的A、B产品的件数之差大于等于m时,生产者A必须等待;小于等于-n时,生产者B必须等待。
这种关系可想象成有两种令牌,分别跟允许A 和B生产的产品数量相关,A和B必须取得对应的令牌后才能生产产品,故这两类令牌也就是两种临界资源。
③生产者和销售者之间也必须进行同步,只有当生产者生产出产品并入库后,销售者才能进行销售。
为了互斥地入库和出库,需为仓库设置一初值为1的互斥信号量mutex;为了使生产的产品件数满足:n A-B m
-≤≤
的件数的件数,需设置两个信号量,其中SAB 表示当前允许A生产的产品数量,其初值为m,SBA表示当前允许B生产的产品数量,其初值为n;还需设置一个初值为0的资源信号量S,对应于仓库中的产品量。
具体的同步算法如下:
Var SAB,SBA,S, mutex:semaphore:=m,n,0 ,1;
begin
parbegin
process A:
begin
repeat
wait(SAB);
produce a product A;
signal(SBA);
wait(mutex);
add the product A to the storehouse;
signal (mutex);
signal(S);
until false
end
process B:
begin
repeat
wait(SBA);
produce a product B;
signal(SAB);
wait(mutex);
add the product B to the storehouse;
signal(mutex);
signal(S);
until false
end
process C:
begin
repeat
wait(S);
wait(mutex);
take a product A or B from storehouse;
signal(mutex);
sell the product;
until false
end
parend
end
习题四:试用记录型信号量写出一个不会死锁的哲学家进餐问题的算法。
分析:此题有多种解决方法。
其中之一是只允许4个哲学家同时进餐,以保证至少有一个哲学家可以进餐,最终才可能由他释放出其所用过的两只筷子,从而使更多的哲学冢可以进餐。
为此,需设置一个信号量Sm来限制同时进餐的哲学家数目,使它不超过4,Sm的初值也应置成4(也可想象成桌上有4块令牌,只有拿到令牌的哲学家才能进餐,这样令牌就是一种临界资源,故可为它们设置一个初值为4的信号量Sm)。
答:除了为每只筷子设置一个初值为1的信号量chopstick[i](i=0,…,4)外,还需再设置一个初值为4的信号量Sm,以限制同时就餐的哲学家人数不超过4。
第i个哲学家的活动可描述为:
repeat
wait(Sm);
wait(chopstick[i]);
wait(chopstick[(i+l)mod 5]);
eat;
signal(chopstick[i]);
signal (chopstick[(i+l)mod 5]);
signal(Sm);
think;
until false;
习题五:嗜睡的理发师问题:
一个理发店由一个有N张沙发的等候室和一个放有一张理发椅的理发室组成。
没有顾客要理发时,理发师便去睡觉。
当一个顾客走进理发店时,如果所有的沙发都已被占用,他便离幵理发店;否则,如果理发师正在为其他顾客理发,则该顾客就找一张空沙发坐下等待;如果理发师因无顾客正在睡觉,则由新到的顾客唤醒理发师为其理发。
在理发完成后,顾客必须付费,直到理发师收费后才能离开理发店。
试用信号量实现这一同步问题。
解答:
分析:本题中,顾客进程和理发师进程之间存在着多种同步关系:
1、只有在理发椅空闲时,顾客才能坐到理发椅上等待理发师理发,否则顾客便必须等待;只有当理发椅上有顾客时,理发师才可以开始理发,否则他也必须等待。
这种同步关系类似于单缓沖(对应于理发椅)的生产者一消费者问题中的同步关系,故可通过信号量empty和full来控制。
2、顾客理完发后必须向理发师付费,并等理发师收费后顾客才能离开,而理发师则需等待顾客付费,并在收费后通知顾客离开,这可分别通过两个信号量payment和receipt控制。
3、等候室中的N张沙发是顾客进程竞争的资源,故还需为它们设置一个资源信号量sofa。
4、为了控制顾客的人数,使顾客能在所有的沙发都被占用时离开理发店,还必须设置整型变量count来对理发店中的顾客进行计数,该变量将被多个顾客进程互斥地访问并修改,这可通过一个互斥信号量mutex来实现。
为解决上述问题,需设置一个整型变量count用来对理发店中的顾客进行计数,并需设置6个信号量。
其中:mutex用来实现顾客进程对count变量的互斥访问,其初值为1;sofa是对应于等候室中N张沙发的资源信号量,其初值为N。
empty 表示是否有空闲的理发,其初值为1;full表示理发椅上是否坐有等待理发的顾客,其初值为0;payment用来等待付费,其初值为 0;receipt用来等待收费,其初值为 0。
具体的算法描述如下:
var count:integer:=0;
mutex,sofa,empty,full:semaphores:=1,N,1,0;
cut,payment,receipt:semaphore:= 0,0,0; ^
begin
parbegin
guest: begin
wait(mutex);
if(count>N) then
begin
signal(mutex);
离开理发店
end
else
begin
count:=count+l;
signal(mutex);
if(count>l) then
begin
wait(sofa);
在沙发中就座
wait(empty);
从沙发上起来;
signal(sofa);
end
else /* count=l */
begin
wait(empty);
end
在理发椅上就座
signal(full);
理发;付费;
signal(payment);
wait(receipt);
从理发椅上起来;
signal(empty);
wait(mutex);
count:=count-1;
signal(mutex);
离开理发店
end
end
barber:
begin
repeat
wait(full);
替顾客理发
wait(payment);
收费
signal(recipt);
until false
end
parend
end。