单片机课后习题解答Word下载.docx
- 文档编号:18769983
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:38
- 大小:111.97KB
单片机课后习题解答Word下载.docx
《单片机课后习题解答Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课后习题解答Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。
8、程序状态字存放器PSW的作用是什么?
常用状态标志有哪些位?
作用是什么?
程序状态字PSW是8位存放器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。
各个标志位的意义如下:
PSW.7〔Cy〕:
进位标志位。
PSW.6〔AC〕:
辅助进位标志位,又称为半进位标志位。
PSW.5〔F0〕:
用户标志位。
PSW.4、PSW.3〔RS1和RS0〕:
存放器组选择位。
PSW.2〔OV〕:
溢出标志位。
PSW.1〔空缺位〕:
此位未定义。
PSW.0〔P〕:
奇偶校验位。
9、位地址7CH和字节地址7CH有何区别?
位地址7CH具体在内存中什么位置?
字节地址7CH是片内数据存储器中的一个地址单元,该地址单元中可以存放8位二进制数,位地址7CH是内部数据存储器中位寻址区中的一位,该地址单元中可以存放1位二进制数。
位地址7CH具体在片内数据存储器字节地址为2FH中的第4位〔2FH.4〕。
10、89S51/52中4个I/O端口的作用是什么?
89S51/52的片外三总线是如何分配的?
I/O端口是单片机与外界联系的重要通道,实现与外部设备的信息的传输。
总线分配:
片外数据总线〔8根〕通过P0口输出,片外地址总线〔16根〕通过P0口〔低8位〕和P2口〔高8位〕输出,片外控制总线〔PSEN,ALE,RD,WR,EA〕主要通过P3口。
11、89S51/52中4个I/O端口在结构上有何异同?
89S51/52单片机的4个I/O口在结构上是根本相同的,但又各具特点。
这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。
在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。
在作为一般的通用I/O输入时,都必须先向锁存器写入“1〞,使输出驱动场效应管FET截止,以免误读数据。
各自特点如下:
〔1〕P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。
作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;
输入数据可以得到缓冲,增加了数据输入的可靠性。
每个引脚可驱动8个TTL负载。
(数字电路按工艺有肖特基双极晶体管和CMOS工艺两种,使用双极晶体管的数字电路称TTL数字电路,
单片机输出端带负载能力,意思就是单片机的P3端口只能并联4个TTL型集成电路输入端。
)
〔2〕P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用I/O口使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。
每个引脚可驱动4个TTL负载。
〔3〕P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部I/O设备。
它与地址总线高8位复用,可驱动4个TTL负载。
一般作为外部扩展时的高8位地址总线使用。
〔4〕P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。
作为通用I/O口时,功能与P1口相同,常用第二功能。
12、复位的作用是什么?
有几种复位方法?
复位后单片机的状态如何?
复位是单片机的初始化操作。
单片机在RST引脚产生两个机器周期〔即24个时钟周期〕以上的高电平即可实现复位。
主要的复位方法有上电自动复位和按键手动复位两种。
按键手动复位又分:
按键电平复位和按键脉冲复位。
第三章指令系统
1、简述以下名词术语的根本概念:
指令、指令系统、程序、汇编语言指令
指令:
规定单片机进行某种操作的命令称为指令。
指令系统:
单片机能够执行的各种指令的集合。
程序:
一系列指令的有序集合称为程序。
汇编语言指令:
用助记符形式来表示机器指令。
2、80C51单片机有哪几种寻址方式?
这几种寻址方式是如何寻址的?
共7种寻址方式,分别为:
存放器寻址,直接寻址,存放器间接寻址,立即寻址,变址寻址,位寻址和相对寻址。
存放器寻址方式:
由指令指出某一存放器的内容做为操作数。
直接寻址方式:
指令中操作数直接以单元地址的形式给出。
存放器间接寻址方式:
存放器间接寻址方式,存放器中存放的那么是操作数的地址,即操作数是通过存放器间接得到的。
立即寻址方式:
操作数在指令中直接给出。
变址寻址方式:
变址寻址是为了访问程序存储器中的数据和表格。
MCS-51的变址寻址是以DPTR或PC作基址存放器,以累加器A作变址存放器,并以两者内容相加形成的16位地址做为操作数地址,以到达访问数据和表格的目的。
位寻址方式:
指对片内RAM的位寻址区和某些可寻址的特殊功能存放器进行位操作的寻址方式。
相对寻址方式:
相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。
3、要访问特殊功能存放器和片外数据存放器,应采用哪些寻址方式?
访问特殊功能存放器可以采用直接寻址、存放器寻址和位寻址〔针对可以进行位寻址的特殊功能存放器〕方式。
访问片外数据存储器可采用存放器间接寻址方式。
4、80C51单片机的指令系统可以分为哪几类?
说明各指令的功能。
51单片机指令系统按功能可分为5类:
〔1〕数据传送指令 主要进行数据的传送、交换等;
〔2〕算术运算指令主要进行根本的加减乘除运算;
〔3〕逻辑运算指令主要实现逻辑运算与移位运算;
〔4〕控制转移指令主要是实现对程序流程的控制;
〔5〕位操作指令
5、外部数据传送指令有哪几条?
有和区别?
外部数据传送指令有读指令和写指令两类,每类指令的寻址范围不同,分别为:
读外部存储器指令:
MOVXA,@Ri;
寻址范围为256字节
MOVXA,@DPTR;
寻址范围为64K字节
写外部存储器指令:
MOVX@Ri,A;
MOVX@DPTR,A;
6、在89S51片内RAM中,〔30H〕=38H,〔38H〕=40H,〔40H〕=48H,〔48H〕=90H,请分别分析下段程序按序执行后的结果。
MOVA,40H;
A=48H
MOVR0,A;
R0=48H
MOVP1,#0FFH;
P1=FFH
MOV@R0,30H;
(48H)=38H
MOVDPTR,#1246H;
DPTR=1246H
MOV40H,38H;
(40H)=40H
MOVR0,30H;
R0=38H
MOV90H,R0;
(90H)=38H
MOV48H,#30H;
(48H)=30H
MOVA,@R0;
A=40H
MOVP2,P1;
P2=38H
7、略
8、DAA指令的作用是什么?
怎样使用?
对十进制BCD数作加法时进行调整,当结果的低4位A0~A3>
9,或半进位AC=1,那么A0~A3+6,否那么不加;
当结果的高4位A4~A7>
9,或进位CY=1,那么A4~A7+6,否那么不加;
这条指令是在进行BCD码加法运算时,跟在“ADD〞和“ADDC〞指令之后,用来对BCD码的加法运算结果自动进行修正,使其仍为BCD码表示形式。
9、试编程将片外数据存储器60H中的内容传送到片内RAM54H单元中。
MOVR0,#60H
MOVXA,@R0
MOV54H,A
10、试编程将存放器R7的内容传送到R1中去。
MOVA,R7
MOVR1,A
11、当前PC值为210H,请用两种方法将程序存储器2F0H中的常数送入累加器A中。
〔1〕以程序计数器PC作为基址存放器
MOVA,#0E0H
MOVCA,@A+PC
〔2〕以数据指针DPTR作为基址存放器
MOVDPTR,#02F0H
MOVA,#00H
MOVCA,@A+DPTR
12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0中的内容是什么?
MOVR0,#0A7H;
R0=A7H,立即数送存放器R0
XCHA,R0;
A=A7H,累加器A中的数据与R0中的数据进行交换
SWAPA;
A=7AH,累加器A中的上下四位进行交换
R0=7AH,数据交换回R0
13、请用两种方法实现累加器A与存放器B的内容交换。
〔1〕MOVR0,A
MOVA,B
MOVB,R0
〔2〕MOVR0,B
XCHA,R0
14、试编程将片外RAM中40H单元的内容与R1的内容交换。
MOVR0,#40H
XCHA,R1
MOVX@R0,A
15、:
A=0C9H,B=8DH,CY=1。
执行指令ADDCA,B结果如何?
A=57H,CY=1,OV=1,AC=1,P=1
执行指令SUBBA,B结果如何?
A=3BH,CY=0,AC=1,OV=1
16、试编程将片外RAM中30H和31H单元中的内容相乘,结果存放在32H〔低位〕和33H〔高位〕单元中。
MOVR0,#30H
MOVB,A
INCR0
MULAB
MOVA,B
17、试用3种方法将累加器A中的无符号数乘2.
ADDA,R0
〔2〕MOVB,#2
MULAB
〔3〕RLA
18、分析依次执行以下指令的结果:
MOV30H,#0A4H;
(30H)=A4H
MOVA,#0D6H;
A=D6H
MOVR0,#30H;
R0=30H
MOVR2,#47H;
R2=47H
ANLA,R2;
A=46H
ORLA,@R0;
A=E6H
SWAPA;
A=6EH
CPLA;
A=91H
XRLA,#0FFH;
ORL30H,A;
(30H)=EEH
19、求以下指令执行后,累加器A及PSW中进位CY、奇偶位P和溢出位OV的值。
〔1〕当A=5BH时;
ADDA,#8CH
〔2〕当A=5BH时;
ANLA,#7AH
〔3〕当A=5BH时;
XRLA,#7FH
〔4〕当A=5BH,CY=1时;
SUBBA,#0E8H
〔1〕A=E7H,CY=1,P=0,OV=0
〔2〕A=5AH,P=0
〔3〕A=24H,P=0
〔4〕A=72H,CY=1,P=0,OV=0
20、把累加器A中的低4位数据送到外部数据存储器的2000H单元。
ANLA,#OFH
MOVDPTR,#2000H
MOVX@DPTR,A
21、试说明指令CJNE@R1,#7AH,10H的作用,假设本指令地址为250H,其转移地址是多少?
指令作用:
如果以R1内容为地址的单元中的数据等于7AH,那么程序顺序执行,否那么转移后继续执行。
假设本指令地址为250H,那么转移地址为250H+03H+10H=263H。
22、将累加器A中的数据由0递增,加到50,结果在累加器A中。
CLRA
MOVR0,#50
L1:
INCA
DJNZR0,L1
23、试说明压栈指令和弹栈指令的作用及执行过程。
压栈〔入栈或进栈〕指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针SP的内容加1,然后将直接地址单元中的数据压入SP指向的单元中。
假设数据已推入堆栈,那么SP指向最后推入数据所在的存储单元〔即指向栈顶〕。
弹栈〔出栈〕指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针SP所指出单元的内容送入直接寻址单元中,然后将SP的内容减1,此时SP指向新的栈顶。
24、下述程序执行后,SP=?
,A=?
,B=?
。
ORG2000H
MOVSP,#40H
MOVA,#30H
LCALL250H;
下条指令地址2021H送41H、42H,SP=42H
ADDA,#10H
MOVB,A;
地址为200AH
SJMPL1
ORG250H
MOVDPTR,#200AH
PUSHDPL;
SP+1=43H,DPL→(43H)
PUSHDPH;
SP+1=44H,DPH→(44H)
RET;
200AH→PC
上述程序执行后,SP=42H,A=30H,B=30H。
25、发光二极管点亮规律:
先是第1和第8个亮,延时一段时间后,第2和第7个亮,延时后,再是第3和第6个亮,延时后,最后是第4和第5个点亮,延时后循环。
26、假设系统晶振频率为6MHz,求子程序DELAY的延时时间,假设想加长或缩短时间,应该怎样修改?
DELAY:
MOVR2,#0FAH
L1:
MOVR3,#0FAH
L2:
DJNZR3,L2
DJNZR2,L1
RET
总时间计算:
T=4μs+〔250×
4μs+4μs〕×
250+4μ
估算:
T=250×
4μs×
250=250ms
假设想加长延时时间,可以增加循环次数或再加一重循环;
假设想减小延时时间,可以减少循环次数或较少一重循环。
27、P1口连接8个共阳极连接的发光二极管,是编制灯亮移位程序。
MOVA,#0FEH
MOVP1,A
RLA
LCALLDELAY;
DELAY子程序同上题
28、试编一程序,将外部数据存储器2100H单元中的高4位置“1〞,其余位清“0〞。
MOVDPTR,#2100H
MOVXA,@DPTR
ORLA,#0F0H
ANLA,#0F0H
29、试编程将片内数据存储器40H单元的第0为和第7位置1,其余取反。
MOVA,40H
CPLA
SETBACC.7
MOV40H,A
30、将A.5与80H位相与的结果,通过P1.4输出。
MOVC,80H
MOVP1.4,C
31、请用位操作指令,求以下逻辑方程。
〔1〕
MOVP1.7,C
〔2〕
MOV20H,C
ORLC,20H
MOVPSW.5,C
〔3〕
ORLC,20H〔下一行〕MOVP2.3,C
第四章汇编语言程序设计
1、编程将片内40H~60H单元中的内容送到以3000H为首的存储区内。
MOVR1,#40H
MOVR2,#21H
MOVDPTR,#3000H
MOVA,@R1
INCR1
INCDPTR
DJNZR2,L1
2、编程计算以下算式的程序
〔1〕23H+45H+ABH+03H=
MOVA,#23H
ADDA,#45H
ADDA,#0ABH
XCHA,B;
溢出处理
ADDCA,#00H
XCHA,B
ADDA,#03H;
A中为结果低位,B中为高位
〔2〕CDH+15H-38H-46H=
MOVA,#0CDH
ADDA,#15H
SUBBA,#38H
SUBBA,#46H
〔3〕1234H+8347H=
MOVA,#34H
ADDA,#47H
MOV30H,A
MOVA,#12H
ADDCA,#83H
MOV31,A;
30H存结果低位,31H存结果高位
〔4〕AB123H-43ADCH=
CLRC
SUBBA,DCH
MOVA,#0B1H
SUBBA,#3AH
MOV31H,A
MOVA,#0AH
SUBBA,,#04H
MOV32H,A;
30H为低位,32H为高位
3、设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中〔低位在低字节,高位在高字节〕。
MOVA,22H
ADDA,32H
MOV42H,A
MOVA,23H
ADDCA,33H
MOV43H,A
4、略
5、编程计算片内RAM区50H~59H单元中数的平均值,结果存放在5AH中。
MOVR0,#8
MOVR1,#50H
MOVA,#00H
ADDA,@R1
MOVB,#8
DIVAB
MOV5AH,A
6、编写计算下式的程序。
设乘积和平方结果均小于255。
a、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。
MOVDPTR,#3001H
MOVXA,@DPTR
MOV30H,A;
a暂存30H单元
INCDPL
CJNEA,30H,L1;
是否a=b
MOVA,#25
SJMPSAVE
JNCL2
MOVB,30H
L2:
MOVA,30H
SAVE:
MOVDPTR,#3000H
MOVX@DPRT,A
ADDA,30H
MULAB;
(a+b)2
CJNEA,#10,L1
JCL2
SUBBA,#10
ADDA,#10
MOVC@DPTR,A
7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之和,结果存放到以220H为首地址的存储区中。
MOVDPH,#02H
MOVR1,#15
MOVR2,#00H;
数组1首地址低位
MOVR3,#10H;
数组2首地址低位
MOVR4,#20H;
和首地址低位
MOVDPL,R2
MOVDPL,R3
ADDA,R1
MOVDPL,R4
MOVX@DTPR,A
INCR2
INCR3
INCR4
DJNZR1,L1
SJMP$
8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。
MOV30H,#00H;
正数计数器
MOV31H,#00H;
负数计数器
MOV32H,#00H;
零计数器
MOVR1,#100
L4:
CJNEA,#0,L1
INC32H
SJMPL2
JCL3
INC30H
L3:
INC31H
DJNZR1,L4
9、将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM30H~60H中,并将原
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课后 习题 解答
![提示](https://static.bdocx.com/images/bang_tan.gif)