湖南工业大学单片机习题.docx
- 文档编号:12644270
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:35
- 大小:42.48KB
湖南工业大学单片机习题.docx
《湖南工业大学单片机习题.docx》由会员分享,可在线阅读,更多相关《湖南工业大学单片机习题.docx(35页珍藏版)》请在冰豆网上搜索。
湖南工业大学单片机习题
第1章习题
1、微型计算机为什么要采用二进制数?
什么情况下要用到十六进制数?
答:
微型计算机中采用二进制的记数方式主要是因为:
(1)微型计算机是由逻辑电路组成的,二进制数只有0和1两个数码,正好与逻辑量的“真”和“假”相对应。
(2)与十进制数相比,二进制数的运算规则要简单得多,可以使运算器的结构得到简化,有利于提高运算速度,传输和处理时不易出错。
因而。
二进制适用于计算机识别、运算和处理,但不便于操作者阅读和书写。
如果用十六进制就方便得多,一个4位的二进制数只要1位十六进制就可以表达,所以在书写和编程时经常用到十六进制,
在计算机内部会将输入的十六进制数自动转换成二进制。
2、将下列二进制数转化为十进制数。
(1)1101B
(2)10101B(3)1010110B(4)1000111001B
答:
(1)1101B=13
(2)10101B=21
(3)1010110B=86(4)1000111001B=569
3、将下列二进制数转化为十六进制数。
(1)10100B
(2)101101B(3)10100110B(4)100111001B
答:
(1)10100B=14H
(2)101101B=2DH
(3)10100110B=A6H(4)100111001B=139H
4、将下列各数转换为二进制数。
(1)56
(2)8FH(3)125(4)1A3H
答:
(1)56=111000B
(2)8FH=10001111B
(3)125=1111101B(4)1A3H=110100011B
5、什么是原码、反码和补码?
答:
微型计算机中的带符号数有三种表示法,即:
原码、反码和补码。
机器码形式的二进制带符号数就是原码,其最高位为符号位,其余位为数值位。
符号位为0表示正数;符号位为1表示负数。
正数的反码和原码相同;负数的反码是:
符号位仍为1,数值位是其原码的数值位按位取反。
正数的补码和原码相同;负数的补码是反码加1。
6、求下列十进制数的机器码、原码、反码和补码。
(1)X1=-89
(2)X2=105
答:
(1)[X]机器码=-1011001[X]原码=11011001
[X]反码=10100110[X]补码=10100111
(2)[X]机器码=1101001[X]原码=1101001
[X]反码=1101001[X]补码=1101001
7、什么是单片机?
单片机与一般微型计算机相比,具有哪些特点?
答:
单片机是在一块集成电路上把中央处理器(CPU)、存储器(ROM、RAM)和多种输入/输出接口(定时器/计数器、并行I/O接口、串行口等)集成在一起而构成的微型计算机。
它与一般微型计算机相比,具有如下特点:
(1)单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM;
(2)采用面向控制的指令系统,控制功能强;(3)多样化的I/O接口,多功能的I/O引脚;(4)产品系列齐全,功能扩展性强。
8、单片机主要应用在哪些领域?
单片机应用系统有哪些部分组成?
答:
单片机的应用范围很广泛,如:
智能化家用电器、仪器仪表、工业控制、计算机外部设备、智能机器人、电信及导航等方面。
单片机应用系统由硬件和软件两大部分组成。
其中硬件包括:
单片机、存储器、I/O接口及外围设备(如:
键盘、显示器、打印机等人机交互设备);软件包括开发软件和应用软件。
9、简单介绍KeilC51及其主要主要功能。
答:
KeilC51是一种针对MCS-51系列单片机的软件开发工具。
它通过一个集成开发环境KeilμVision2将C编译器、宏汇编器、连接器、库管理器和仿真调试器等组合在一起。
它集编辑、编译、仿真于一体,支持汇编语及C51高级语言的编程设计。
KeilC51能够完成工程建立、管理、编译连接、生成目标代码、软件仿真、硬件仿真等单片机应用项目的开发流程。
第2章习题
1、80C51单片机内包含哪些主要逻辑功能部件?
答:
80C51系列单片机在片内集成了以下主要逻辑功能部件:
(l)8位的CPU(中央处理器);
(2)128B片内RAM;(3)21个特殊功能寄存器;(4)4KB程序存储器;(5)4个8位的并行I/O口;(6)1个全双工串行接口;(7)2个16位的定时器/计数器;(8)1个片内时钟电路。
2、89S51的/EA端有何用途?
答:
/EA端接低电平时,CPU只访问外部ROM,并执行片外程序存储器中的指令;/EA端接高电平时,CPU先访问并执行片内flashROM中的指令,若PC值超过0FFFH,将自动转到片外ROM。
3、读端口锁存器和“读引脚”有何不同?
各使用哪种指令?
答:
读锁存器相当于从存储器中取数据,如从P0口的锁存器取数,用ANLP0,A指令;而读引脚是从外部取数据,如MOVA,P1就是读引脚,目的是把端口P1输入的数据送给A累加器。
4、什么叫堆栈?
堆栈有什么功能?
答:
堆栈是在片内RAM中指定的一个特殊区域。
堆栈中数据的存取是按照"先进后出"原则进行的。
堆栈的主要功能是:
暂时存放数据和地址,通常用来保护程序运行的断点和现场。
5、AT89S51单片机有哪些特殊功能寄存器?
各在单片机的哪些功能部件中?
答:
89S51单片机内部有21个特殊功能寄存器。
物理上分散在片内各功能部件中,在逻辑上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。
特殊功能寄存器分布在以下各个功能部件中:
(1)CPU中有:
ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);
(2)中断系统中:
IP、IE;(3)定时器/计数器中:
TMOD、TCOM、TL0、TH0、TL1、TH1;(4)并行I/O口中:
P0、P1、P2、P3;(5)串行口中:
SCON、SBUF、PCON。
6、AT89S51的存储器分哪几个空间?
如何区别不同空间的寻址方式?
答:
在物理上89S51有4个存储空间,即片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。
逻辑上,片内ROM和片外ROM统一编址,使用MOVC指令访问。
256B的内部数据存储器和64KB的外部数据存储器是独立编址的,访问片内RAM用MOV指令;访问片外RAM用MOVX指令。
7、简述AT89S51片内RAM的空间分配。
片内RAM中包含哪些可位寻址单元?
答:
片内RAM有256B空间的存储单元,地址为00H~FFH。
低128B是真正的RAM区,其中20H~2FH字节地址单元是位寻址区,对应的位地址是00H~7FH;高128B是SFR特殊功能寄存器区。
8、位地址20H和字节地址20H如何区别?
位地址20H在内存中的什么位置?
答:
位地址只表示某个存储单元中某位的地址,而字节地址表示一个8位二进制数所在的地址。
区别位地址20H和字节地址20H可以根据访问它们的指令码来区别。
如:
MOVC,20H和MOVA,20H的指令代码分别为A2H、20H和E5H、20H。
前一条指令是位操作指令,其中的20H是位地址;后一条指令是字节操作指令,其中的20H是字节地址。
位地址20H在内存中位寻址区24H单元的第0位。
9、AT89S51如何确定和改变当前工作寄存器组?
答:
当前工作寄存器组由程序状态继寄存器PSW中的RS1和RS0两位的取值来确定和改变。
有4种组合方式用来从4组工作寄存器组中进行选择。
10、PC是什么寄存器?
是否属于特殊功能寄存器?
它有什么作用?
答:
PC是16位程序计数器(ProgramCounter),它不属于特殊功能寄存器范畴,程序员不能像访问特殊功能寄存器那样来访问PC。
PC是专门用于在CPU取指令期间寻址程序存储器的。
PC总是保存着下一条要执行的指令的16位地址。
通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。
如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的目标地址赋给PC。
11、DPTR是什么寄存器?
它由哪些特殊功能寄存器组成?
它的主要作用是什么?
答:
DPTR是16位数据指针寄存器,它由两个8位特殊功能寄存器DPL(数据指针低8位)和DPH(数据指针高8位)组成,DPTR用于保存16位地址,作间址寄存器用,可寻址外部数据存储器,也可寻址程序存储器。
12、AT89S51单片机的时钟周期与振荡周期之间有什么关系?
什么叫机器周期和指令周期?
如果晶振频率分别为6MHz和12MHz,则机器周期各为多少?
答:
时钟周期又称为振荡周期,它是单片机中最基本、最小的时间单位,也是振荡频率的倒数。
CPU完成一次基本操作所需要的时间就是1个机器周期,1个机器周期包括12个振荡周期。
指令周期是执行一条指令所需的时间。
通常一个指令周期包含1~4个机器周期。
如果晶振频率为6MHz和12MHz,则机器周期分别为2μs和1μs。
13、单片机复位有几种方法?
复位后机器的初始状态如何?
答:
(1)单片机复位方法有:
上电自动复位、按键电平复位和外部脉冲复位三种方式。
(2)复位后,PC的内容被初始化,单片机从0000H单元开始执行程序,片内RAM中的数据不受影响。
特殊功能寄存器SFR中SP=07H,P0~P3=FFH,其他的SFR初始值一般为0。
14、1个机器周期的时序如何划分?
答:
1个机器周期=12个震荡周期=6个状态周期,每个状态周期包含2个震荡周期。
即1个机器周期的时序可以划分如下:
S1P1S1P2S2P1S2P2S3P1S3P2S4P1S4P2S5P1S5P2S6P1S6P2
其中S=State为状态;P=Phase为相位。
15、AT89S51有几种低功耗方式?
如何实现?
答:
89S51有待机和掉电两种低功耗方式。
待机方式和掉电方式是通过对SFR中的PCON(地址87H)相应位置1而启动的。
当CPU执行使IDL=1(PCON.0=1)的指令后,系统进入待机工作方式。
这时,内部振荡器继续工作,内部时钟只供给中断、串行口、定时器/计数器,而不向CPU提供,CPU停止工作;当CPU执行一条使PD=1(PCON.1=1)的指令后,系统进入掉电工作方式。
在这种工作方式下,内部振荡器停止工作。
由于没有振荡时钟,所有的功能部件都停止工作。
但内部RAM区和特殊功能寄存器的内容被保留,而端口的输出状态值都保存在对应的SFR中,ALE和PSEN都为低电平。
第3章习题
1、什么是计算机的指令和指令系统?
答:
指令是计算机用于控制各功能部件完成指定动作的指示和命令。
计算机能够执行的各种指令的集合称为指令系统。
2、什么是机器语言、汇编语言和高级语言?
答:
单片机能够直接识别和执行的指令是由二进制代码组成的机器码,也常用十六进制形式表示,又称为机器语言。
机器语言不易记忆、书写、查错和修改,所以单片机开发者根据不同功能和操作对象的机器指令,分别用具有一定含义的符号即指令助记符来表示。
这些助记符一般采用与指令功能相关的英文单词缩写,以便于人们理解、记忆和使用。
这种用助记符形式表示的机器指令称为汇编语言指令。
高级语言是一种独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言,它与机器语言和汇编语言相比,更加接近人的思维。
3、什么叫寻址方式?
寻址方式的多少有何意义?
答:
计算机执行程序的过程实际上就是不断寻找操作数并进行操作的过程,寻址方式就是寻找指令中的操作数或操作数所在地址的方式。
寻址方式的多少标志着单片机指令系统的有效性和灵活性。
4、要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?
答:
访问特殊功能寄存器可以采用直接寻址、位寻址和寄存器寻址;访问片外数据存储器只能采用寄存器间接寻址。
5、如何访问片内RAM单元和片外RAM单元?
可使用哪些寻址方式?
答:
对于低128字节的片内RAM单元可以采用直接寻址、寄存器寻址、寄存器间接寻址和位寻址访问;对于高128字节的片内RAM单元可以采用直接寻址、寄存器寻址和位寻址。
用MOVX指令可以访问片外RAM单元,且只能使用寄存器间接寻址。
6、如何访问片内外程序存储器?
可使用哪些寻址方式?
答:
用MOVC指令,采用变址寻址访问片内外程序存储器,或采用相对寻址方式访问程序存储器中从PC当前值开始的256字节。
7、在进行压缩BCD码的加法运算时,为什么要进行十进制调整?
如何实现?
答:
因MCS-51指令系统中没有十进制加法运算指令,在进行压缩BCD码的加法运算时,只能通过二进制加法指令来实现。
单片机自动将两数按照二进制相加时,将结果用十六进制显示,而BCD码在进行加法运算时应逢十进一,但计算机将其当作十六进制数处理,进一就相当于加16,比十进制的BCD码多出6个数,结果中就可能会出现大于9的非法码。
用在加法指令后安排一条DAA指令,当BCD加法运算结果中出现非法码时,计算机会自动加6,进行修正。
8、什么是进位和溢出?
答:
两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。
例如将正数3FH和负数D0H相加,其结果不会超出8位字长的表示范围,所以其结果10FH中的进位是正常进位(也就是模)。
但是,若正数3FH与正数70H相加,其结果为AFH,最高位为"1",成了负数的含义,这就不合理了,这种情况称为溢出。
9、在89S51片内RAM中,已知(30H)=51H,(51)H=69H,(69H)=4EH。
分析下面各条指令执行后的结果。
MOVA,30H
MOVR1,A
MOV40H,@R1
MOV30H,40H
答:
各条指令执行的过程及最后结果如下:
MOVA,30H;A←(30H),A=51H
MOVR1,A;R1←(A),R1=51H
MOV40H,@R1;40H←((R1)),(40H)=69H
MOV30H,40H;(30H)←(40H),(30H)=69H
执行后,A=51H,R1=51H,(30H)=69H。
10、已知A=83H,R0=17H,(17H)=34H。
写出执行完下列程序片段后A的内容。
ANLA,#17H
ORL17H,A
XRLA,@R0
CPLA
答:
各条指令执行的过程及最后结果如下:
ANLA,#17H;A←83H∧17H,A=03H
ORL17H,A;17H←34H∨03H,(17H)=37H
XRLA,@R0;A←03H⊕37H,A=34H
CPLA;A←A求反,A=0CBH
执行后,A=0CBH。
11、使用位操作指令实现下列逻辑操作,要求不得改变未涉及位的内容。
(1)使ACC.0置1
(2)累加器的高4位清零
答:
(1)SETBACC.0或SETBE0H
(2)CLRACC.7
CLRACC.6
CLRACC.5
CLRACC.4
12、编程将累加器A与R0中的内容交换。
答:
方法
(1):
XCHA,R0
方法
(2):
MOVB,A
MOVA,R0
MOVR0,B
13、将片内RAM中30H单元的内容传送到片外1000H单元中。
答:
MOVA,30H
MOVDPTR,#1000H
MOV@DPTR,A
14、将片外RAM中30H单元的内容传送到片外3000H单元中。
答:
MOVR0,#30H
MOVA,@R0
MOVDPTR,#3000H
MOV@DPTR,A
15、编程将片外RAM从2000H开始存放的50个数传送到片内30H开始的单元中。
答:
编程如下:
MOVR7,#50H;数据块长度送R7
MOVR0,#30H;数据块目的地址送R0
MOVDPTR,#2000H;数据块源地址送DPTR
LOOP:
MOVXA,@DPTR;传送一个数据
MOV@R0,A
INCDPTR;指向下一个数据
INCR0
DJNZR2,LOOP;数据块长度减1,未传送完,继续传送
16、编程查找内部RAM的20H~50H单元中是否有“#”号。
若有,则将A置1,否则清0。
答:
“#”号的ASCII码为23H,将待查数据逐一与23H比较查找。
编程如下:
MOVR7,#31H;数据块长度送R7
MOVR0,#20H;数据块首地址送R0
LOOP:
MOVA,@R0;待查找的数据送A
CLRC;清进位位
SUBBA,#23H;将待查找的数据与23H比较
JZL1;是则转L1
INCR0;不是,则地址加1,指向下一个待查数据
DJNZR7,LOOP;数据块长度减1,不等于0则继续查找
MOVA,#00H;等于0,未找到,A清0
L1:
MOVA,#0FFH;找到“#”号,A置1
17、两个4位BCD码,高位在前。
一个存放在31H和30H中,另一个存放在33H和32H中,求和,并存回到31H和30H中。
编程如下:
MOVR0,#30H
MOVR1,#32H
MOVA,@R0
ADDA,@R1
DAA
MOV@R0,A
INCR0
INCR1
MOVA,@R0
ADDCA,@R1
DAA
MOV@R0,A
18、试判断A中所存数据的正负。
若为正数,存入20H单元;若为负数则存入21H单元。
答:
判断数据的正负,只要判断出该数的符号位则可。
编程如下:
JBACC7,LOOP
MOV20H,A
SJMP$
LOOP:
MOV21H,A
SJMP$
19、从键盘输入长度不超过100字节的字符串,存放在外部RAM以20H为首地址的连续单元中,以回车符‘CR’作为结束标志。
要求统计此字符串的长度并存入内部RAM的10H单元中。
答:
回车符‘CR’的ASCII码为=0DH,从第一个单元开始取数,每取一数判断其是否为‘CR’是则结束。
ORG1000H
STADATA20H
SLADATA10H
TAM:
MOVR0,#STA-1
MOVB,#0FFH
TBM:
INCR0
INCB
MOVXA,@R0
CJNEA,#0DH,TBM
MOVSLA,B
SJMP$
END
20、设内部RAM20H开始的单元中有一组无符号数,其长度为N。
要求将它们从小到大排序,排序后仍存放在原区域中。
答:
设数据交换标志01存在R2中,数据依次两两相比。
如前数大于于后数,则交换,每交换一次R2+1。
一轮比较完后,如再无交换事件发生,即R2-1=0时,排序完成。
编程如下:
ORG0000H
STAR:
MOVR2,#1
MOVR1,#N-1
MOVR0,#20H
LOOP1:
MOVA,@R0
LOOP2:
INCR0
MOV1FH,@R0
CJNEA,1FH,LOOP3
LOOP3:
JNCLOOP4
DJNZR1,LOOP1
DJNZR2,STAR
SJMP$
LOOP4:
XCHA,@R0
DECR0
MOV@R0,A
INCR2
SJMPLOOP2
END
21、某个小于10的数存放在内部30H中,查表求其平方值,并存回30H单元。
答:
ORG0050H
MOVA,30H
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV30H,A
SJMP$
TAB:
DB0,1,4,9,16
DB25,36,49,64,81
RET
22、8个发光二极管,从左边往右每次点亮一个,并闪烁10次,再转到下一个闪烁10次,循环不止,闪烁间隔为50mS。
答:
设8个发光二极管由P1口控制,当P1.7输出低电平时,LED灯亮,否则不亮。
编程如下:
ORG0000H
START:
MOVA,#07FH
LOOP0:
MOVR1,#10
LOOP1:
MOVP1,A
LCALLYS50mS
DJNZR1,LOOP1
RRA
SJMPLOOP0
YS50mS:
MOVR7,#200
YS1:
MOVR6,#123
NOP
YS2:
DJNZR6,$
DJNZR7,YS1
RET
END
23、在单片机编程中,使用C51语言有什么优点?
C51语言程序有哪些基本结构?
答:
C51语言使用方便,功能强大,它提供了内容丰富的数学函数且支持浮点运算。
由于不依赖硬件系统,大量的功能程序只需作简单修改甚至不作修改便可以移植到不同的系统直接使用,这样可以大大缩短开发时间,并增加了程序的可读性和可维护性。
C51语言程序由顺序结构、选择结构和循环结构三种基本形式组成。
24、求1到50的正数之和。
答:
程序如下:
unsignedintsum1to50(void)﹛
unsignedintn,sum;
sum=0;
for(n=1;n<=50;n++)
sum=sum+n;
return(sum);
﹜
第4章习题
1、什么是中断和中断系统?
其主要优点是什么?
答:
正在处理一的件事情被其他的突发事件意外打断,如:
CPU在执行程序的过程中,暂时中断执行当前的程序,转而去执行其他的应急处理程序,称为中断。
中断发生时,单片机通过硬件来改变程序流向,再通过执行中断服务子程序来处理急需解决的问题。
所以必须是硬件与软件结合才能实现中断,解决中断问题的硬件装置和处理程序称为中断系统。
主要优点是:
(1)能有效解决快速CPU与慢速外设之间的矛盾,消除了CPU在查询方式中的等待现象,使CPU与外设并行工作,大大提高了工作效率;
(2)能对外界发生的事件作出及时的处理,使计算机具有实时处理能力;(3)对系统运行过程中出现的意外或故障,如电源掉电、运算溢出、传输错误等,可由中断进行相应的处理而不必停机。
2、AT89S51有哪些中断源?
单片机对中断请求可通过那些寄存器进行控制?
答:
89S51有如下5个中断源
(1)外部中断0;
(2)定时器/计数器T0中断;(3)外部中断1;(4)定时器/计数器T0中断;(5)串行接口中断。
通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现各种中断控制功能。
3、什么是中断优先级?
中断优先处理的原则是什么?
答:
中断优先级是CPU响应中断的先后顺序。
中断优先处理的原则是:
(1)先响应优先级高的中断请求,再响应优先级低的;
(2)如果一个中断请求已经被响应,同级的其它中断请求将被禁止;(3)如果同级的多个中断请求同时出现,则CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求。
4、说明外部中断请求的查询和响应过程。
答:
当CPU执行主程序第K条指令,外设向CPU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南 工业大学 单片机 习题