单片机原理及接口技术课后答案李朝青第三版

单片机原理及接口技术课后答案李朝青第三版
单片机原理及接口技术课后答案李朝青第三版

单片机原理及接口技术课后答案李朝青第三版

Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

第一题 8051单片机内包含哪些主要逻辑功能部件

1.CPU

2.ROM

3.RAM

4.Timer/Counter

5.UART(串口)(通用异步串行接收机发送机)

6.4个8bits Port(并口)

7.Int0,int1(外部中断)

第二题8051的/EA端有什么用处

1.EA端Enable Address(外部程序存储器地址允许输入端)

2.低电平有效

3.EA=0(低电平有效)时,只允许访问外部存储器

4.EA=1时,可以访问内部和外部存储器

5.EA还有复用功能,Vpp(Pulse of Programming)(编程脉冲)(固化编程电压

输入端)

第三题8051的存储器分为那几个空间怎样区别不同空间的寻址

1.ROM(片内ROM和片外ROM统一编址)(使用MOVC)(数据传送指令)(16bits

地址)(64KB)

2.片外RAM(MOVX)(16bits地址)(64KB)

3.片内RAM(MOV)(8bits地址)(256B)

?什么是普林斯顿结构哈佛结构

1.普林斯顿结构,ROM和RAM统一编址

2.哈佛结构,ROM和RAM分开编址

第四章8051片内RAM的空间是怎样分配的

1.片内RAM有256B

2.低128B是真正的RAM区

3.高128B是SFR(特殊功能寄存器)区

?真正的RAM区可以分成那几个部分

1.4个工作寄存器区(R0~R7)

2.位寻址区

3.真正的RAM区

第五题简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元

1.片内RAM区从00H~FFH(256B)

2.其中20H~2FH(字节地址)是位寻址区

3.对应的位地址是00H~7FH

第六题如何简洁地判断8051正在工作

1.用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正

常)

2.ALE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频

3.用示波器观察ALE是否有脉冲输出(判断 8051芯片的好坏)

4.观察PSEN(判断8051能够到EPROM 或ROM中读取指令码)

5.因为/PSEN接外部EPROM(ROM)的/OE端子

6.OE=Output Enable(输出允许)

第七题 8051如何确定和改变当前工作寄存器组

1.PSW(程序状态字)(Program Status Word)中的RS1和RS0

2.可以给出4中组合

3.用来从4组工作寄存器组中进行选择

4.PSW属于SFR(Special Function Register)(特殊功能寄存器)

第十题 8051的/EA信号有什么功能在使用8031的时候,EA信号引脚应该如何处理

1.EA=Enable Address(外部程序存储器地址允许输入端)

2.EA=0(低电平有效)只允许访问外部存储器

3.EA=1内外ROM都可以访问

4.因为8031没有片内ROM

5.只能访问片外的EPROM

6.应该使EA=0(有效)

第十二题内部RAM第128B单元划分成那几个主要部分各部分主要功能是什么

1.当前工作寄存器组(4组)(00H~1FH)

2.位寻址区(20H~2FH)

3.真正的RAM区(30H~7FH)

第十三题使单片机复位有哪几种方法复位后机器的初始状态如何

1.上电复位

2.上电复位+手动复位

3.脉冲复位

4.复位会重置一些寄存器

第十四题开机复位后,CPU使用的是哪组工作寄存器它们的地址什么什么

1.8051有4个工作寄存器组

2.分别从R0~R7

3.分别位于 00H~07H,08H~0FH,10H~17H,18H~1FH

4.开机复位后,默认使用寄存器组0

第十五题 PSW的作用是什么作用是什么

1.PSW是一个SFR(特殊功能寄存器)

2.位于片内RAM的高128B

3.具体地址D0H(00H~FFH)(片内RAM的编址)(8bits编址方法)

4.PSW=Program Status Word(程序状态字)

?PSW的常用标志位有哪些

1.CY=Carry(进位标志位)

2.AC=Auxiliary Carry(辅助进位标志位)(半进位标志位)

3.F0用户标志位

4.RS1,RS0,用来选择当前工作寄存器组(R0~R7)(4选1)

5.OV=Overflow(溢出标志位)

6.P=Parity(奇偶校验位)

第十五题位地址7CH和字节地址7CH如何区别位地址7CH在片内RAM中什么地方

1.片内RAM的地址从00H~FFH

2.其中20H~2FH(字节地址)是位寻址区(bits)

3.位地址从00H~7FH

4.位地址7CH位于字节地址2FH

5.可以从寻址方式来区分

6.位地址使用位寻址方式

7.字节地址使用直接寻址,间接寻址

第十七题 8051的时钟周期,震荡周期有什么关系

1.震荡周期

2.时钟周期=状态周期(state)

3.时钟周期=2*振荡周期

4.机器周期=6*时钟周期=12*震荡周期

5.指令周期=1~4个机器周期

第十八题一个机器周期的时序如何划分

1.一个机器周期=12个震荡周期=6个时钟周期(状态周期)

2.S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,S5P2,S6P1,S6P2

3.其中s=state(状态),p=phase(相位)

第十九题什么叫做堆栈SP是什么它的作用是什么8051堆栈的容量不能超过多少个字节

1.Stack(堆栈)

2.具有FILO,LIFO的特性

3.SP=Stack Pointer(堆栈指针)

4.SP是栈顶指示器

评论这张

1.微处理器,RAM,ROM,以及I/O口,定时器,构成的微型计算机称为单片机。

2.指令寄存器(IR)保存当前正在执行的一条指令;指令译码器(ID)对操作码进行译码。

3.程序计数器(PC)指示出将要执行的下一条指令地址,由两个8位计数器PCH及PCL组成。

4.80C31片内没有程序存储器,80C51内部设有4KB的掩膜ROM程序存储器,87C51是将80C51片内的ROM换成EPROM,89C51则换成4KB的闪存FLASHROM,51增强型的程序存储器容量是普通型的2倍。

5.89C51的组成:一个8位的80C51的微处理器,片内256字节数据存储器RAM/SFR用来存放可以读/写的数据,片内4KB程序存储器FLASHROM用存放程序、数据、表格,4个8位并行I/O端口P0-P3,两个16位的定时器/计数器,5个中断源、两个中断个优先级的中断控制系统,

一个全双工UART的串行口I/O口,片内振荡器和时钟产生电路,休闲方式和掉电方式。

6.89C51片内程序存储器容量为4KB,地址从0000-0FFFH开始,存放程序和表格常数,片外最多可扩展64KBROM地址1000-FFFFH,片内外统一编址。单片机的内部存储空间分为数据存储器和程序存储器。

7.内部数据存储器:共256字节单元,包括低128个单元和高128个单元。低128字节又分成3个区域:工作寄存器区(00H~1FH),位寻址区(20H~2FH)和用户RAM区(30H~7FH)存放中间结果,数据暂存及数据缓冲。高128字节是供给特殊功能寄存器(SFR)使用的,因此称之为特殊功能寄存器区(80H~FFH),访问它只能用直接寻址。

内部程序存储器:在8031片内无程序存储器,8051片内具有4KB掩模ROM,8751片内具有4KBEPROM。

8.引脚是片内外程序存储器的选择信号。当端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对于

8051/8751/80C51)或1FFFH(对于8052)时,将自动转向访问外部程序存储器。当端保持低电平时,不管是否有内部程序存储器,则只访问外部程序存储器。由于8031片内没有程序存储器,所以在使用8031时,引脚必须接低电平。

9.RST复位信号输入端,高电平有效。保持两个机器周期(24个时钟振荡周期)的高电平有效,完成复位,复位后,CPU和系统都处于一个确定的初始状态,在这种状态下,所有的专用寄存器都被赋予默认值,除

SP=07H,P0~P3口为FFH外,其余寄存器均为0。

ALE/ :ALE输出正脉冲,频率为振荡周期的1/6,CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号,看芯片好坏可以用示波器看ALE端是否有脉冲信号输出。PSEN程序存储允许输出信号端,也可以检查芯片好坏,有效即能读出片外ROM的指令,引脚信号RD/WR有效时可读/写片外RAM或片外I/O接口。

10.P0作为输出口时,必须外接上拉电阻才能有高电平输出,作为输入口时,必须先向锁存器写“1”;作为普通I/O口使用或低8位地址/数据总线使用。

P1口有上拉电阻,对FLASHROM编程和校验是P1接收低八位地址;只用作普通I/O口使用。

P2口比P1口多了一个转换控制开关;作为普通I/O口使用或高8位地址线使用时访问外部程序存储器和16位地址的外部数据存储器。

P3口比P1口增加了与非门和缓冲器;具有准双向I/O功能和第二功能。

P0,P1,P2,P3准双向口。上述4个端口在作为输入口使用时,应注意必须先向端口写“1”。

11.普林斯顿结构:一个地址对应唯一的存储单元,用同类访问指令。哈佛结构:程序存储器和数据存储器分开的结构。

CPU访问片内外ROM用MOVC,访问片外RAM用MOVX,访问片内RAM用MOV.

12.

SP总是初始化到内部RAM地址07H,堆栈的操作;PUSH、POP。DPTR是数据指针寄存器,是一个16位寄存器,用来存放16位存储器的地址,以便对64KB片外RAM作间接寻址。DPTR由高位字节DPH和低位字节DPL组成。

13.指令周期:执行一条指令所需要的时间。

机器周期:CPU完成一个基本操作所需要的时间,6个状态周期和12个振荡周期。当晶振频率为12MHz时,一个机器周期为1μs;当晶振频率为6MHz时,一个机器周期为2μs,复位时间超过4μs。

14.复位操作有:电自动,按键手动,看门狗。

15.空闲方式是CPU停止工作而RAM,定时器/计数器,串行口及中断系统都工作。掉电一切功能都暂停,保存RAM中内容。退出空闲方式;硬件将PCON.0清0,硬件复位。当CPU执行PCON.1为1,系统进入掉电方式。推出掉电只有硬件复位。

16.保留的存储单元

17.单片机的寻址方式:寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址。

18.AJMP和SJMP的区别有:

(1) 跳转范围不同。 AJMP addr1 ;短跳转范围:2KB 。SJMP rel ;相对跳转范围:-128~+127 (2) 指令长度不同。(3) 指令构成不同。AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是相对地址。不能用AJMP指令代替程序中的SJMP指令,因为如果改变的话,程序跳转到的新PC值指向的地址会不同,导致程序出现错误。

19.在89c51片内RAM中30H)=38H,38H=40H,40H=48H,48H=90H。情分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果

MOV A,40H ;直接寻址(40H)→A

MOV R0,A ;寄存器寻址(A)→R0

MOV P1,#0F0H ;立即数寻址 0F0→P1

MOV @R0,30H ;直接寻址(30H)→(R0)

MOV DPTR,#3848H ;立即数寻址 3848H→DPTR

MOV 40H,38H ;直接寻址(38H)→40H

MOV R0,30H ;直接寻址(30H)→R0

MOV P0,R0 ;寄存器寻址( R0 )→P0

MOV 18H,#30H ;立即数寻址 30H→18H

MOV A,@R0 ;寄存器间接寻址 ((R0)) →A

MOV P2,P1 ;直接寻址(P1)→P2

最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H注意:→左边是内容,右边是单元

20.已知R3和R4中存放有一个16位的二进制数,高位在R3中,地位在R4中,请编程将其求补,并存回原处。 MOV A,R3 ;取该数高8位→A

ANL A,#80H ;取出该数符号判断

JZ L1 ;是正数,转L1

MOV A,R4 ;是负数,将该数低8位→A

CPL A ;低8位取反

ADD A,#01H ;加1

MOV R4,A ;低8位取反加1后→R4

MOV A,R3 ;将该数高8位→A

CPL A ;高8位取反

ADDC A,#00H ;加上低8位加1时可能产生的进位

MOV R3,A ;高8位取反加1后→R3

L1: RET

21.已知30H和31H中村有一个16位的二进制数,高位在前,低位在后,请编程将他们乘以2,在存回原单元中。

CLR C ;清进位位C

MOV A,31H ;取该数低8位→A

RLC A ;带进位位左移1位

MOV 31H,A ;结果存回31H

MOV A,30H ;取该数高8位→A

RLC A ;带进位位左移1位

MOV 30H,A ;结果存回30H

22.假设允许片内定时器/计数器中断,禁止其他中断。设置IE值。

用字节操作指令: MOV IE #8AH 或MOV A8H,#A8H

用位操作指令:SETB ET0

SETB ET1

SETB EA

23.设89 C51的片外中断为高优先级,片内为低优先级,设置IP值。

用字节操作指令:MOV IP,#05H或MOV 0B8H,#05H

用位操作指令:SETB PX0

SETB PX1

CLR PS

CLR PT0

CLE PT1

24.89C51单片机内有两个16位定时器/计数器,即T0,T1.

第三章

1、指令:CPU根据人的意图来执行某种操作的命令

指令系统:一台计算机所能执行的全部指令集合

机器语言:用二进制编码表示,计算机能直接识别和执行的语言

汇编语言:用助记符、符号和数字来表示指令的程序语言

高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言

2、见第1题

3、操作码 [目的操作数] [,源操作数]

4、

5、 SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址

6、 MOV A,40H ;直接寻址(40H)→A

MOV R0,A ;寄存器寻址(A)→R0

MOV P1,#0F0H ;立即数寻址 0F0→P1

MOV @R0,30H ;直接寻址(30H)→(R0)

MOV DPTR,#3848H ;立即数寻址 3848H→DPTR

MOV 40H,38H ;直接寻址(38H)→40H

MOV R0,30H ;直接寻址(30H)→R0

MOV P0,R0 ;寄存器寻址( R0 )→P0

MOV 18H,#30H ;立即数寻址 30H→18H

MOV A,@R0 ;寄存器间接寻址 ((R0)) →A

MOV P2,P1 ;直接寻址(P1)→P2

最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H

注意:→左边是内容,右边是单元

7、用直接寻址,位寻址,寄存器寻址

8、

MOV A,DATA ;直接寻址2字节1周期

MOV A,#DATA ;立即数寻址2字节1周期

MOV DATA1,DATA2 ;直接寻址3字节2周期

MOV 74H,#78H ;立即数寻址3字节2周期

如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A

9、

MOV A,@R0 ;((R0))=80H→A

MOV @R0,40H ;(40H)=08H→(R0)

MOV 40H,A ;(A)=80→40H

MOV R0,#35H ;35H→R0

最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H

10、用直接寻址,位寻址,寄存器寻址

11、只能采用寄存器间接寻址(用MOVX指令)

12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7)

高128字节:直接寻址,位寻址,寄存器寻址

13、采用变址寻址(用MOVC指令)

14、压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用DA A指令调整(加06H,60H,66H)

15、用来进行位操作

16、ANL A,#17H ;83H∧17H=03H→A

ORL 17H,A ;34H∨03H=37H→17H

XRL A,@R0 ;03H⊕37H=34H

CPL A ;34H求反等于CBH

所以(A)=CBH

17、(1)SETB 或SETB E0H ;E0H是累加器的地址(2)CLR

CLR

CLR

CLR

(3)CLR

CLR

CLR

CLR

18、MOV 27H,R7

MOV 26H,R6

MOV 25H,R5

MOV 24H,R4

MOV 23H,R3

MOV 22H,R2

MOV 21H,R1

MOV 20H,R0

19、MOV 2FH,20

MOV 2EH,21

MOV 2DH,22

20、CLR C

MOV A,#5DH ;被减数的低8位→A

MOV R2,#B4H ;减数低8位→R2

SUBB A,R2 ;被减数减去减数,差→A

MOV 30H,A ;低8位结果→30H

MOV A,#6FH ;被减数的高8位→A

MOV R2,#13H ;减数高8位→R2

SUBB A,R2 ;被减数减去减数,差→A

MOV 31H,A ;高8位结果→30H

注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位21、(1)A≥10

CJNE A,#0AH,L1 ;(A)与10比较,不等转L1

LJMP LABEL ;相等转LABEL

L1:JNC LABEL ;(A)大于10,转LABEL

或者:

CLR C

SUBB A,#0AH

JNC LABEL

(2)A>10

CJNE A,#0AH,L1 ;(A)与10比较,不等转L1

RET ;相等结束

L1:JNC LABEL ;(A)大于10,转LABEL

RET ;(A)小于10,结束

或者:

CLR C

SUBB A,#0AH

JNC L1

RET

L1:JNZ LABEL

RET

(3)A≤10

CJNE A,#0AH,L1 ;(A)与10比较,不等转L1

L2:LJMP LABEL ;相等转LABEL

L1:JC L2 ;(A)小于10,转L2

RET

或者:

CLR C

SUBB A,#0AH

JC LABEL

JZ LABEL

RET

22、(SP)=23H,(PC)=3412H

参看书上80页

23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H

参看书上79页

24、不能。ACALL是短转指令,可调用的地址范围是2KB。

在看这个题的时候同时看一下AJMP指令。同时考虑调用指令ACALL和LCALL指令和RET指令的关系。

25、 MOV R2,#31H ;数据块长度→R2

MOV R0,#20H ;数据块首地址→R0

LOOP:MOV A,@R0 ;待查找的数据→A

CLR C ;清进位位

SUBB A,#0AAH ;待查找的数据是0AAH吗

JZ L1 ;是,转L1

INC R0 ;不是,地址增1,指向下一个待查数据

DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找

MOV 51H,#00H ;等于0,未找到,00H→51H

RET

L1:MOV 51H,#01H ;找到,01H→51H

RET

26、 MOV R2,#31H ;数据块长度→R2

MOV R0,#20H ;数据块首地址→R0

LOOP:MOV A,@R0 ;待查找的数据→A

JNZ L1 ;不为0,转L1

INC 51H ;为0,00H个数增1

L1:INC R0 ;地址增1,指向下一个待查数据

DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找

RET

27、 MOV DPTR,#SOURCE ;源首地址→DPTR

MOV R0,#DIST ;目的首地址→R0

LOOP:MOVX A,@DPTR ;传送一个字符

MOV @R0,A

INC DPTR ;指向下一个字符

INC R0

CJNE A,#24H,LOOP ;传送的是“$”字符吗不是,传送下一个字符 RET

28、 MOV A,R3 ;取该数高8位→A

ANL A,#80H ;取出该数符号判断

JZ L1 ;是正数,转L1

MOV A,R4 ;是负数,将该数低8位→A

CPL A ;低8位取反

ADD A,#01H ;加1

MOV R4,A ;低8位取反加1后→R4

MOV A,R3 ;将该数高8位→A

CPL A ;高8位取反

ADDC A,#00H ;加上低8位加1时可能产生的进位 MOV R3,A ;高8位取反加1后→R3

L1: RET

29、 CLR C ;清进位位C

MOV A,31H ;取该数低8位→A

RLC A ;带进位位左移1位

MOV 31H,A ;结果存回31H

MOV A,30H ;取该数高8位→A

RLC A ;带进位位左移1位

MOV 30H,A ;结果存回30H

30、 MOV R2,#04H ;字节长度→R2

MOV R0,#30H ;一个加数首地址→R0

MOV R1,#40H ;另一个加数首地址→R1

CLR C ;清进位位

LOOP:MOV A,@R0 ;取一个加数

ADDC A,@R1 ;两个加数带进位位相加

DA A ;十进制调整

相关主题
相关文档
最新文档