单片微机原理与接口技术 课后习题答案 宋跃 电子工业出版社 下载本文

声明:此答案仅供参考,部分地方有出入,并非标准答案 第1章 思考题及习题参考答案

1写出下列二进制数的原码、反码和补码(设字长为8位)。 (1)001011 (3)-001011 答:

(1)原码:00001011 反码:00001011 补码:00001011 (2)原码:00100110 反码:00100110 补码:00100110 (3)原码:10001011 反码:11110100 补码:11110101 (4)原码:10111111 反码:11000000 补码:11000001

2已知X和Y,试计算下列各题的[X+Y]补和[X-Y]补(设字长为8位)。 (1) X=1011 (2) X=1011 (3) X=1000 答:

(1)X补码=00001011 Y补码=00000011 [–Y]补码=11111101 [X+Y]补=00001110 [X-Y]补=00001000

(2)X补码=00001011 Y补码=00000111 [–Y]补码=11111001 [X+Y]补=00010010 [X-Y]补=00000100

(3)X补码=00001000 Y补码=00001100 [–Y]补码=11110100 [X+Y]补=00010100 [X-Y]补=11111100

3 微型计算机由那几部分构成?

答:微型计算机由微处理器、存储器和I/O接口电路构成。各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。

4 8086的寻址范围有多大?其物理地址是如何形成?

答:8086有20根地址总线,它可以直接寻址的存储器单元数为1M字节,其地址区域为

Y=0011 Y=0111 Y=1100

(2)100110

(4)-111111

第 1 页 共 47 页

00000H—FFFFFH。

物理地址是由段地址与偏移地址共同决定的,物理地址=段地址×16+偏移地址其中段地址通常来自于段寄存器CS ,物理地址来自于IP。

5 什么叫单片机?它有何特点?

答:单片机就是在一块硅片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O口(如并行、串行及A/D变换器等)的一个完整的数字处理系统。单片机主要特点有:品种多样,型号繁多;存储容量大;频率高,速度快;控制功能强,集成度高;功耗低;配套应用软件多。

第 2 页 共 47 页

第2章 思考题及习题参考答案:

2.1.说明ROM、EPROM、EEPROM和FLASH之间的主要区别

解:ROM为只读存储器,在一般情况下只能读出所存信息,而不能重新写入。信息的写入是通过工厂的制造环节或采用特殊的编程方法进行的,一旦写入,就能长期保存。EPROM芯片一般允许用户多次编程和擦除。擦除时,通过向芯片窗口照射紫外光的方法来进行。 EEPROM,也称E2PROM。该类芯片允许用户多次编程和擦除。擦除时,可采用加电方法在线进行。FLASH是一种新型的大容量、速度快、电可擦除可编程只读存储器。

2.2.EPROM、PROM、动态RAM、静态RAM等存储器中,哪几类是可以随时读写的?

解:动态RAM、静态RAM这几类是可以随时读写的。

2.3 某ROM芯片中有12根地址输入端和8个数据输出端,该芯片的存储容量是多少位?

解:芯片的存储容量是4K*8位。

2.4.说明动态RAM和静态RAM的主要区别,使用时应如何选用?

解:静态(static)RAM,即SRAM。它以触发器为基本存储单元,所以只要不掉电,其所存信息就不会丢失。该类芯片的集成度不如动态RAM,功耗也比动态RAM高,但它的速度比动态RAM快,也不需要刷新电路。在构成小容量的存储系统时一般选用SRAM。在微型计算机中普遍用SRAM构成高速缓冲存储器。

动态(Dynamic)RAM,即DRAM。一般用MOS型半导体存储器件构成,最简单的存储形式以单个M0S管为基本单元,以极间的分布电容是否持有电荷作为信息的存储手段,其结构简单,集成度高。但是,如果不及时进行刷新,极间电容中的电荷会在很短时间内自然泄漏,致使信息丢失。所以,必须为它配备专门的刷新电路。动态RAM芯片的集成度高、价格低廉,所以多用在存储容量较大的系统中。目前,微型计算机中的主存几乎都是使用动态RAM。

2.5.说明NOR FLASH与NAND FLASH的主要区别,使用时应如何选用?

解:NOR Flash具有以下特点:

(1) 程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行;

(2) 可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对块或整片进行预编程和擦除操作。

但是NOR Flash的擦除和编程速度较慢,块尺寸又较大,因此擦除和编程操作所花费的时间很长,在纯数据存储和文件存储的应用中,NOR技术显得力不从心。

NAND Flash具有以下特点:

(1) 以页为单位进行读和编程操作,1页为256或512B(字节);以块为单位进行擦除操作,1块为4K、8K或16KB。具有快编程和快擦除的功能,其块擦除时间是2ms;而NOR技术的块擦除时间达到几百ms。(2) 数据、地址采用同一总线,实现串行读取。随机读取速度慢且不能按字节随机编程。(3) 芯片尺寸小,引脚少,是位成本(bit cost)最低的固态存储器,将很快突破每兆字节1美元的价格限制。(4) 芯片包含有失效块,其数目最大可达到3~35块(取决于存储器密度)。失效块不会影响有效块的性能,但设计者需要将失效块在地址映射表中屏蔽起来。

NOR Flash具有可靠性高、随机读取速度快的优势,在擦除和编程操作较少而直接执行

第 3 页 共 47 页

代码的场合,尤其是纯代码存储的应用中广泛使用,如PC的BIOS固件、移动电话、硬盘驱动器的控制存储器等。

NAND Flash结构的闪速存储器适合于纯数据存储和文件存储,主要作为SmartMedia卡、CompactFlash卡、PCMCIA ATA卡、固态盘的存储介质,并正成为闪速磁盘技术的核心。

2.6.现有2K×8位的RAM芯片若干片,若用线选法组成存储器,有效的寻址范围最大是多少KB?若用3-8译码器来产生片选信号,则有效的寻址范围最大又是多少?若要将寻址范围扩展到64KB,应选用什么样的译码器来产生片选信号?

解:以8086为例,8086有20条地址线,用11条地址线寻址一片2K×8位的RAM,余下的9条地址线做线选法的线,故可以并联9个芯片,故寻址最大范围是20KB,若用3-8译码器来产生片选信号,9条地址线可以控制3个3-8译码器这样就可以控制24个芯片最大范围是50KB. 若要将寻址范围扩展到64KB可选用4-16地址译码器来产生片选信号。

2.7.什么是地址重叠区?它对存储器扩展有什么影响?

解:基本地址和前面全译码连接的地址范围是相同的,但两者还是有区别的。区别在于全译码连接时各芯片的地址是唯一的,而部分译码连接时各芯片地址不是唯一的,也就是可以由若干个地址都选中同一芯片的同一单元,既所谓的地址重叠区。由于存在的地址重叠,影响了地址区的有效使用,也限制了存储器的扩展。因此,在选用部分译码时,也要尽可能多选一些高位地址线来作为译码器的输入。

2.8如图2-22若用1K×8位片子来扩展3K×8位RAM,试核算各片的地址范围为多少?

图2-22 1K×8位片子扩展的3K×8位RAM系统

解:A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址

G1 A B C

1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 片1:

A000H · · ·

1 0 1 0 0 0 11 1 1 1 1 1 1 1 1 片1:

第 4 页 共 47 页

A3FFH

A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址

G1 A B C

1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 片

2:B000H · · ·

1 0 1 1 0 0 11 1 1 1 1 1 1 1 1 片2:B3FFH

A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址

G1 A B C

1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 片

3:B400H · · ·

1 0 1 1 0 1 11 1 1 1 1 1 1 1 1 片3:

B7FFH

所以各片地址范围为: 片1:A000H-A3FFH, 片2:B000H-B3FFH, 片3:B400H-B7FFH

2.9. 现有8K×8位RAM多片,1片3-8译码器,要构成容量为16K×8位的存储器,请用线译码、部分译码、全译码3种方式分别设计,画出连接图,并指出寻址范围。 解:

线译码法: 寻址范围:2000H~5FFFH

第 5 页 共 47 页

部分译码寻址范围:0000H~3FFFH

全译码:寻址范围:0000H~FFFFH

2.10.如何检查扩展的RAM工作是否正常?试编一个简单的RAM检查程序,要求此程序能记录有多少个RAM单元工作有错?且能记录出错的单元地址。 解:

TEST_CONST EQU 5AH TEST_RAM EQU 03H ORG 0000H

LJMP INITIAL ORG 0050H

INITIAL: MOV R0,#253 MOV R1,#3H

TEST_ALL_RAM: MOV R2,#0FFH TEST_ONE_RAM: MOV A, R2 MOV @R1,A CLR A MOV A,@R1

CJNE A,2H, ERROR_DISPLAY

第 6 页 共 47 页

DJNZ R2, TEST_ONE_RAM INC R1

DJNZ R0, TEST_ALL_RAM OK_DISPLAY:

MOV P1, #11111110B WAIT1: SJMP WAIT1 ERROR_DISPLAY: MOV A, R1 MOV P1,A WAIT2: SJMP WAIT2 END

第3章 思考题及习题参考答案

第 7 页 共 47 页

1. 80C51单片机的P0~P3口在通用I/O口时操作要注意哪些?P0~P3口不做通用I/O口时是什么功能?在使用上有何特点? P0~P3驱动能力如何?

答:(1)作为通用I/O口时,P0~P3都是准双向口,输入引脚信息时都必须先向其锁存器写“1”,作为输出口时P0口需结上拉电阻。

(2)P0可以作为地址/数据总线;P2口可以作为地址线的高8位;P3口是双功能口,每条口线还具有不同的第二功能。

(3)P0口的驱动能力为8个TTL负载,而其它口仅可驱动4个TTL负载。 2、MCS-51单片机运行出错或程序进入死循环,如何摆脱困境?

答:通过复位电路复位

3、单片机的复位(RST)操作有几种方法,复位功能的主要作用是什么?

答:单片机的复位操作方式有:1、上电复位;2、手动复位。

复位功能的主要作用是:复位时,PC初始化为0000H,使MCS-51单片机从0000H开始执行程

4、简述程序状态寄存器PSW寄存器中各位的含义。 答:程序状态字寄存器PSW,8位。其各位的意义为:

CY:进位、借位标志。有进位、借位时CY=1,否则CY=0;

AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位); F0:用户标志位,由用户自己定义;

RS1、RS0:当前工作寄存器组选择位,共有四组:00、01、10、11; OV:溢出标志位。有溢出时OV=1,否则OV=0;

P:奇偶标志位。存于累加器ACC中的运算结果有奇数个1时P=1,否则P=0. 5、80C51单片机的当前工作寄存器组如何选择?

答:由特殊功能寄存器中的程序状态寄存器PSW的RS1、RS0来决定,当RS1、RS0为00时,选择0组;为01时,选择1组;为10时选择2组,为11时选择3组。 6. 80C51单片机的控制总线信号有哪些?各信号的作用如何? 答:80C51单片机的控制总线信号有以下4个,各信号的作用为:

RST/VPD: 复位信号输入引脚/备用电源输入引脚;

ALE/PROG: 地址锁存允许信号输出引脚/编程脉冲输入引脚;

EA/Vpp : 内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚; PSEN:外部程序存储器选通信号输出引脚。 7、8051单片机中EA引脚的作用是什么?

答:访问内部或外部程序存储器的选择端当EA接高电平的时候程序从内部ROM开始执行,当EA为低电平的时候,从外部ROM开始执行 8、 程序计数器PC的作用是什么?

答:程序计数器PC是一个16位的计数器,他总是存放着下一个要取的指令的16位存储单元地址。用来存放下一条指令的地址用来存放下一条指令的地址的。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指今的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令

9、堆栈有哪些功能?堆栈指示器( SP)的作用是什么?在程序设计时,为什么要对 SP重新赋值?

第 8 页 共 47 页

答:堆栈在中端过程中用来保护现场数据,复位后SP=7H,而堆栈一般设置在通用ROM区(30H-7FH),在系统初始化时候要从新设置。

10、内部 RAM低 128单元划分为哪 3个主要部分?说明各部分的使用特点。

答:80C51内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下:

(1) 00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元

作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。

(2) 20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。

当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。

(3)30H~7FH为堆栈、数据缓冲区。 11、简述MCS-51单片机存储区的划分。

答:MCS-51单片机的存储器从物理结构上分为:片内和片外数据存储器,片内和片外程序存储器。

2)从逻辑上分别可划分为:片内统一寻址的64K程序存储器空间(0000H---FFFFH);64KB的片外数据存储器空间(0000H---FFFFH);256B的片内数据存储器空间(00H---FFH)。 12、MCS-51基本型单片机的中断入口地址各为多少。 答:外部中断0 中断入口地址 0003H 定时/计数器0 中断入口地址 000BH 外部中断1 中断入口地址 0013H 定时/计数器1 中断入口地址 001BH 串行接口 中断入口地址 0023H

13、什么是指令周期、机器周期和时钟周期?

答:指令周期:指令的执行时间;机器周期:CPU完成一个最简单的指令所需要的时间;时钟周期:晶振信号周期就是时钟周期。

14、已知一MCS51单片机系统使用6MHZ的外部晶体振荡器,计算:该单片机系统的状态周期与机器周期各为多少?

解:由于晶振为6MHz,所以机器周期为2us,因为一个机器周期由6个状态周期组成,所以状态周期1/3us

15、8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?

答:8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。

第4章 思考题及习题参考答案 1. 寻址方式是什么?

答:寻址方式是寻找操作数或操作数地址的方式。

第 9 页 共 47 页

2. 89C51指令系统有哪几种寻址方式?

答:89C51的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。

3、访问特殊功能寄存器SFR可以采用哪些寻址方式?

答:直接寻址和位寻址方式。

4、访问RAM单元可以采用哪些寻址方式?访问外部RAM单元有哪些指令?

答:直接寻址、寄存器间接寻址和位寻址方式。

访问外部RAM单元的指令有4条: MOVX A,@DPTR MOVX A,@Ri MOVX @DPTR,A

MOVX @Ri,A

5、访问外部程序存储器可以采用哪些寻址方式?访问外部程序存储器有哪些指令?

答:立即寻址、变址寻址和相对寻址方式。

访问外部程序存储器的指令有2条 MOVC A,@A+DPTR MOVC A,@A+PC

6、试写出完成以下每种操作的指令序列。 (1)将R0的内容传送到片内RAM 20H; (2)将R1的内容传送到R0;

(3)内部RAM单元10H的内容传送到外部RAM单元1000H; (4)外部RAM单元1000H的内容传送到R5; (5)外部ROM单元1000H的内容传送到R5;

(6)外部RAM单元2000H的内容传送到外部RAM单元2001H。 答:(1)MOV 20H,R0

(2) MOV A,R1 MOV R0,A (3)MOV A,10H MOV DPTR,#1000H MOVX @DPTR,A

(4)MOV DPTR,#1000H MOVX A,@A+DPTR MOV R5,A

(5) MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV R5,A

(6) MOV DPTR,#2000H MOVX A,@DPTR

第 10 页 共 47 页

INC DPTR MOVX @DPTR,A

7. 设内部RAM (30H)=60H, (60H)=10H, (10H)=20H, (R1)=22H,(P1)=0AH, 分析以下程序执行后(30H)=?, (60H)= ?, (10H)= ?,(A)= ?,(B)= ?,(P2)= ?每条指令的机器码为多少?

MOV R0, #30H MOV A, @R0 MOV R1, A MOV B, @R1 MOV @R1, P1 MOV P2, P1 MOV 10H, #90H

答: MOV R0, #30H ; (R0)= 30H , 78 30 MOV A, @R0 ; (A) =60H , E6 MOV R1, A ; (R1) =60H , F9 MOV B, @R1 ; (B) = 10H , 87 F0 MOV @R1, P1 ; (60H) =0AH , A7 90

MOV P2, P1 ; (P2) =0AH , 85 90 A0 MOV 10H, #90H ; (10H) =90H , 75 10 90

(30H)= 60H, (60H)= 0A H, (10H)= 90H,(A)= 60H,(B)= 10H,(P2)= 0AH

8. 设外部RAM (2030H)=0FH, 分析以下指令执行后(DPTR)=?, (30H)=?, (2030H)=?(A)=?每条指令的机器码为多少?

MOV DPTR, #2030H MOVX A, @DPTR MOV 30H, A MOV A, #3FH MOVX@DPTR, A 答:

MOV DPTR, #2030H ; (DPTR) = 2030H , 90 20 30

MOVX A, @DPTR ; (A) =0FH , E0

MOV 30H, A ; (30H) =0FH , F5 30 MOV A, #3FH ; (A) =3FH , 74 3F MOVX@DPTR, A ; (2030H)=3FH , F0

执行结果为: (DPTR)=2030H, (30H)=0FH, (2030H)=3FH ,(A)=3FH。

9、编写指令实现下列位操作。 (1)使累加器的最高2位清零; (2)屏蔽(清零)20H的高4位;

(3)将E0H的低4位取反,高4位不变;

第 11 页 共 47 页

(4)将P0的低2位置1。

(5)将10H的内容取补后存放到20H 答:(1)CLR ACC.7 CLR ACC.6

(2) ANL 20H,#0FH (3) XRL E0H,#0FH (4)ORL P0,#03H (5) XRL 10H,#0FFH INC 10H MOV 20H,10H

10. 在外部程序存储器中, 从1020H单元开始依次存放0~9的平方值: 0、 1、 4、 9、 ?、81, 要求依据累加器A中的值(0~9)来查找所对应的平方值, 试设计程序实现。 答:MOV DPTR, #1020H MOVC A, @A+DPTR

11. 设(R0)=20H, (20H)=40H, (A)=58H, 则: 执行 XCH A, @R0 后 (A)=?, (20H)=? 若执行 XCHD A, @R0 后 (A) =?, (20H) =? 答:执行 XCH A, @R0 后 (A)=40H, (20H)=58H 若执行 XCHD A, @R0 后 (A) =50H, (20H) =48H 12、试编写程序序列,完成两个16位数的减法:(30H)(31H)-(10H)(11H) →(30H)(31H)。 答:CLR C

MOV A,31H SUBB A,11H MOV 31H,A MOV A,30H SUBB A,10H MOV 30H,A

13、试编写程序,将R0中的低4位数与R1中的高4位数合并成一个8位数,并将其存放在R0中。

答:MOV A,R0

ANL A,#0FH MOV B,A MOV A,R1 ANL A,#0F0H ORL A,B MOV R0,A

14. 设计双字节无符号数加法程序实现(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节,假设其和不超过16位。

第 12 页 共 47 页

答:MOV A, R1

ADD A, R3 MOV R5, A MOV A, R0 ADDC A, R2 MOV R4, A

15. 设计双字节无符号数相减程序实现(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节, 答:

MOV A, R1

CLR C SUBB A, R3 MOV R5, A MOV A, R0 SUBB A, R2 MOV R4, A

17. 设2个BCD码数存在外部RAM的2000H和内部RAM的20H。设计程序实现2个BCD码相加,其结果的十位和个位送到外部 RAM的2000H单元, 结果的百位值送F0位。 答: MOV DPTR,#2000H MOVX A,@DPTR ADD A, 20H DA A MOVX @DPTR, A MOV F0H,CY

18. 设变量X存放在片内10H单元中, 函数Y存放在片内20H单元。 编写程序实现如下函数功能。

80H X>0 Y= 50 X=0 FFH X<0

答: MOV A, 10H ; 取出X送A

JZ COM ; 若X=0 则转移到COM JNB ACC.7, POSI ; 若X>0则转移到POSI MOV A, #0FFH ; 若X<0 则A=FFH SJMP COMP ; 转分支结构出口

COM: MOV A,# 50 ; X=0时的赋值

SJMP COMP ; ; 转分支结构出口 POSI: MOV A, #80H ; X>0 时A=80H

COMP: MOV 20H, A ; 存函数Y值

SJMP $ ; 结束

第 13 页 共 47 页

19. 利用位逻辑指令, 模拟下图硬件逻辑电路功能。试编写程序实现。

答:MOV CY,P1.0

ANL CY,P1.1 CPL CY MOV F0,CY MOV CY,P1.1 ORL CY,P1.2 ANL CY,F0 CPL CY MOV F0,CY

20.若(CY)=0,(P1)=10110111B,试指出执行下列程序段后,CY、P1口内容的变化情况。 MOV P1.2,C MOV C, P1.4 JBC P1.7 ,SS ORL C, P1.6

SS:CPL P1.3 ANL C, /P1.3 MOV P1.0,C 答:(CY)=0,(P1)=0011 1010B

第5章 思考题及习题参考答案

1、80C51单片机汇编语言有何特点?

答:优点;源程序结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速

第 14 页 共 47 页

度快、实时性强等优点。

缺点:由于它的是面向机器的语言,所以它缺乏通用性,编程复杂繁琐,但应用相当广泛。

2、利用80C51单片机汇编语言进行程序设计的步骤如何? 答:(1).需要对单片机应用系统预先完成的任务进入深入的分析,明确系统的设计任务、功能要求、技术指标。

(2).要对系统的硬件资源和人工作环境进行分析和熟悉.

(3).利用数学方法或数学模型来对其进行描述,从而把一个实际问题转化成由计算机进行处理的问题。

(4).对各种算法进行分析比较,并进行合理的优化。

3、常用的程序结构有哪几种?特点如何? 答:常用的程序结构有以下几种:

(1)顺序程序结构:顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序进行,直到某一条指令为止;比如数据传送与交换、查表程序和查表程序的设计等;在顺序结构中没有分支,也没有子程序,但它是组成复杂程序的基础和主干;

(2)分支程序结构:它的主要特点是程序执行流程中必然包含有条件判断指令,符合条件要求的和不符条件合要求的有不同的处理程序;

(3)循环程序结构 :它在本质上只是分支程序中的一个特殊形式,它由循环初始化、循环体、循环控制和结束部分构成;在循环次数已知情况下,采用计数循环程序,其特点是必须在初始部分设定计数的初始值,循环控制部分依据计数器的值决定循环次数;根据控制循环结束的条件,决定是否继续循环程序的执行。

(4)子程序:它的主要特点是,在执行过程中需要由其它的程序来调用,执行完后又需要把执行流程返回到调用该子程序的主程序。

4、子程序调用时,参数的传递方法有哪几种?

答:在80C51单片机中,子程序调用时,参数的传递方法由三种: (1)、利用累加器A或寄存器; (2)、利用存储器; (3)、利用堆栈。

5、什么是伪指令?常用的伪指令功能如何?

答:伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令有: (1)起始地址设定伪指令ORG,该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址;

(2)汇编结束伪指令END,该指令的功能是汇编程序遇到END伪指令后立即结束汇编; (3)字节数据定义伪指令DB,该指令的功能是从标号指定的地址单元开始,在程序存储器中定义字节数据;

(4)字数据定义伪指令DW,该指令的功能是从标号指定的地址单元开始,在程序存储器中定义字数据;

(5)空间定义伪指令DS,该指令的功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数存储单元作为备用空间,并都填以零值;

(6)赋值伪指令EQU,该指令的功能是将表达式的值或特定的某个汇编符号定义为一

第 15 页 共 47 页

个指定的符号名;

(7)位地址符号定义伪指令BIT,该指令的功能是将位地址赋给指定的符号名。

6:把外部RAM的2000-20FFH RAM空间置零 程序如下:

ORG 000H MOV R0,#00H

MOV DPTR,#2000H ;空间首地址送DPTR LOOP: MOV A,#00H

MOVX @DPTR,A ;清零 INC DPTR ;DPTR加1 INC R0 ;字节数加1

CJNE R0,#00H,LOOP ;连续清256个字节 LOOP1: SJMP LOOP1 END

7、录入并调试一个排序子程序,其功能为用冒泡法将内部RAM中从50H开始的十个单字节无符号正整数,按从小到大的次序重新排列。 程序如下:

用冒泡法进行数据排序 ORG 0000H MOV R3,#50H LOOP0: MOV A,R3

MOV R0,A ;指针送R0 MOV R7,#0AH ;长度送R7

CLR 00H ;标志位为0 MOV A,@R0 LOOP1: INC R0 MOV R2,A CLR C

MOV 22H,@R0

第 16 页 共 47 页

CJNE A,22H,LOOP2 ;相等吗? SETB C

LOOP2: MOV A,R2

JC LOOP3 ;小于或等于不交换 SETB 00H XCH A,@R0 DEC R0 XCH A,@R0

INC R0 ;大于交换位置 LOOP3:MOV A,@R0 DJNZ R7,LOOP1

JB 00H,LOOP0 ;一次循环中有交换继续 LOOP: SJMP LOOP ;无交换退出 END

8、设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位数相加的程序。 答: ORG 1000H MOV R1,#21H

MOV R2,#23H

MOV R3,#25H CLR C

第 17 页 共 47 页

LP;MOV A,@R2

ADDC A,@R1 MOV @R3,A DEC R1 DEC R2 DEC R3

DJNE R1,#1FH,LP SJMP $

9、编写一段程序,把外部RAM中1000H~1030H单元的内容传送到内部RAM的30H~60H单元中。

答: ORG 0030H MOV R1,#49 MOV R0,#30H MOV DPTR,#1000H LOOP: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0

DJNZ R1,LOOP SJMP $ END

10、编写程序,实现双字节无符号数加法运算,要求(R1R0)+(R7R6)→(61H60H)。 答:

MOV A,R0 ADD A,R6 MOV 60H,A MOV A,R1 ADDC A,R7 MOV 61H,A SJMP $

11、用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加

数,字节存放到R2中作计数初值。 答:

主程序:

JAFA: MOV R0,#20H ;指向加数最低字节 MOV R1,#29H ;指向另一加数最低字节 MOV R2,#04H ;字节数作计数值 ACALL JASUB ;调用加法子程序 AJMP $

第 18 页 共 47 页

RTE

多字节加法子程序:

JASUB: CLR C

JASUB1: MOV A,@R0 ;取出加数的一个字节(4B无符号数加数) ADDC A,@R1 ;加上另一数的一个字节 MOV @R0,A ;保存和数 INC R0 ;指向加数的高位 INC R1 ;指向另一加数的高位 DJNZ R2,JASUB1 ;全部加完了吗? RET

12、在内部RAM的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大数存入BIG单元。 答:

START: MOV R7,30H DEC R7

MOV R0,#21H

MOV A,@R0

LOOP:INC R0 CLR C

SUBB A,@R0 JNC NEXT MOV A,@R0 NEXT:DJNZ R7,LOOP MOV BIG, A SJMP $ END

13、求双字节补码程序

设双字节数放在内部RAM的30H和31H单元(高字节在低地址),将其取补后存入40H(存放高字节)和41H(存放低字节)单元 答:

START:MOV A,31H CPL A

ADD A,#01H MOV 41H,A MOV A,30H CPL A JNC DONE ADD A,#01H

第 19 页 共 47 页

DONE:MOV 30H,A SJMP $

14、编程统计累加器A中“1”的个数。 答:

MOV R1,#0 PUSH ACC LOOP1:JZ DONE CLR C RLC A JNC LOOP1 INC R1 SJMP LOOP1 DONE:POP ACC SJMP $ END

15、编程序实现1+2+3+??+100=? 答:

汇编代码如下:

H_Byte EQU R4 ;保存结果,高8位 L_Byte EQU R5 ;保存结果,低8位 Max_Adder EQU 100 ;最大的加数

ORG 0000H LJMP MAIN ORG 0030H

MAIN:

MOV R2,#1 ;加数 MOV R4,#0 MOV R5,#0

START:

MOV A,#Max_Adder CLR CY SUBB A,R2 JC RESULT MOV A,R2 ADD A,L_Byte

MOV L_Byte,A ;保存低位 MOV A,H_Byte ADDC A,#0

MOV H_Byte,A ;保存高位 INC R2 JMP START

RESULT:

第 20 页 共 47 页

SJMP $ ;只用于调试 END

C语言代码如下:

#include \由于这里只是计算结果,所以这行代码可以去掉 void main(void) {

unsigned char i=1; unsigned int result=0; for(i=1;i<=100;i++) result+=i;

while(1); //这里用于调试 }

第6章思考题及习题参考答案

1. 什么是中断、中断源、中断服务程序、中断程序入口地址?

答: 当有中断源申请中断,并允许响应时,处理暂停当前执行的程序转去执行中断服务子

第 21 页 共 47 页

程序的过程叫中断。导致中断产生的事件和原因统称为中断源。处理暂停主程序后转去执行的,用来处理中断事件的程序成为中断服务子程序。中断程序入口地址是指的中断服务子程序的第一条指令所在的地址。

2. 中断优先权有什么作用,中断嵌套是什么?

答:中断优先权可以用来解决多个中断源同时申请中断时,处理器响应中断的优先顺序。中断嵌套是指处理器正在执行中断服务子程序时,被新的中断打断,转去执行新的中断而出现的一个中断嵌套到另一个中断中的现象。

3. 保护断点是保护什么,怎么保护的,中断返回后的下一步到到哪里去?

答:保护断点是保护主程序暂停时的下一条将要执行的指令的地址。保护方法是将下一条指令的地址值入栈。中断返回后,断点地址从堆栈中弹出到程序计数器或指令指针寄存器,继续执行主程序。

4.保护现场有什么作用,需要保护哪些内容,怎么保护的? 5. 80C51单片机有___个中断源,分别是_____、 _______、 _______、 ______和________。 答: 5,INT0 ,INT1 ,T0,T1,串口

6. 80C51单片机中断有_____个优先权等级,最多可以实现____级嵌套。 答:2,2

7. 80C51中断嵌套的原则是什么?

答: 80C51中断嵌套的原则是:高级中断可以打断低级中断,低级中断不能打断高级中断,同级中断不可以打断同级中断。

8. 80C51响应中断的条件有哪些? 答: 80C51响应中断的条件有:

中断申请的对应中断使能控制位有效; 全局中断使能控制位有效;

中断申请时没有更高级别的中断服务程序正在执行;

9. 80C51的各个中断源是如何撤销中断申请的? 答: 80C51各中断源的中断申请撤销方法是:

定时/计数器中断:在中断被响应后,由硬件自动清零中断申请标志位; 串口中断:由软件清零中断申请标志位;

边沿触发时的外部中断:中断被响应后,由硬件自动清零中断申请标志位;

电平触发的外部中断:需要设计专门的电路,通过软件编程通知外部中断源,由外部中断源撤销申请。

10. 80C51单片机中有 个定时/计数器,定时/计数0有 种工作方式,定时/计数1有 种工作方式。 答: 2,4,3

第 22 页 共 47 页

11. 80C51单片机中有与定时/计数器相关的特殊功能寄存器有哪些,各自有什么作用? 答:有TMOD和TCON的高4位。

TMOD用来设置定时/计数的工作方式,选择计数时钟的来源。具体格式如下: 定时/计数器1 定时/计数器0

D7 D6 D5 D4 D3 D2 D1 D0 名称

GATE C/T M1 M0 GATE C/T M1 M0 TCON的高4位用来控制定时/计数器的启动和停止,并设置中断标志位,向处理器申请中断。具体格式如下:

8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位地址 位名称

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

12. 80C51单片机中的定时/计数器用作定时器和计数器时,有什么区别?

答:用作定时器时,通常选择内部时钟,也可使用外部时钟,应用中,通常需要根据定时要求设定计数初值。并查询等待定时时间结束,或者在定时时间结束后向处理器申请中断; 用作计数器时,只能选择外部时钟,通常设置计数初值为零,而且需要读取计数结果。

13. 80C51单片机中的定时/计数器的门控设置位GATE有什么作用?

答:GATE用来设置外部中断输入引脚INT0 或INT1 是否影响定时/计数器的启动和停止。当GATE有效时,只有INT0 或INT1 为高时,相应计数器才可能启动;当GATE无效时,INT0 或INT1 不影响计数器的启停。

14. 80C51单片机中的定时/计数器的方式0和方式1有什么共同点和不同点?

答:方式1和方式0都是不能自动重装的定时/计数器方式,基本结构相同。不同的是,方式1是16位定时/计数器;而方式0是13位定时/计数器,其中计数寄存器低字节的高3位不使用。

15. 当定时/计数器T0工作在方式3时,T1可以工作在哪些方式,与T0不工作在方式3时,T1的工作方式有什么差异?

答: T0工作在方式3时,T1可以工作在方式0,方式1,方式2。相对于T0不工作在方式3时,T1没有了启动控制位TR1,没有了中断申请标志位TF1,只有设置成方式3才能停止计数,设置在其它方式都会不停计数。

16. 要求设置单片机的定时器1工作在中断模式,方式1,计数器模式,软件启动,定时器0未使用,使用外部中断0,下降沿触发中断,外部中断1闲置,串口关闭。要求设置定时器1的中断优先级最高。

那么IE= 、 IP=_________、TMOD=__________、IT0=___。

答: 89H或10001001B,08H或00001000B, 50H或01010000B, 1

17. 执行以下代码的作用是 。

ANL TMOD, #0F0H ORL TMOD, #02H

答:设置定时/计数器0工作在方式2,定时器模式,仅由软件启动。

第 23 页 共 47 页

18. 若某单片机系统的晶振为12MHz,使用定时/计数器0,进行700us定时,可以使用哪些工作方式,要求只要软件就可以启动,且通过查询方式实现。写各种方式下的初始化程序。 答:晶振频率为12MHz,则计数器时钟周期为1us,定时时间为700us,则需要计数700,方式0的最大计数为8192,方式1为65536,方式2和方式3为256。因此可以选择方式0和方式1。

一:选择方式0

方式0为13位计数器,计数初值为:

fosc?t12?106?700?10?6T0初值?2??8192??7492?1110101000100B

121213 TH0= 11101010B=0EAH ,TL0= 00100B=04H

定时/计数器0工作在方式0,定时器模式,软件启动,则TMOD=00000000B=00H。查询方式下,不需要打开中断使能控制位,复位后IE=0,所以不需要初始化IE。

初始化程序为:

MOV TMOD, MOV TL1, SETB TR0

#00H #04H

MOV TH1, #0EAH

二:选择方式1

方式1为16位计数器,计数初值为:

fosc?t12?106?700?10?6T0初值?2??65536??64836?FD44H

121216 TH0= 0FDH ,TL0= 44H

定时/计数器0工作在方式1,定时器模式,软件启动,则TMOD=00000001B=01H。查询方式下,不需要打开中断使能控制位,复位后IE=0,所以不需要初始化IE。

初始化程序为:

MOV TMOD, MOV TL1, SETB TR0

#01H #43H

MOV TH1, #0FDH

19. 某单片机系统的晶振为12MHz,编程使用定时/计数器0工作在方式3,从P1.0输出周期为200us占空比50%方波,从P1.1输出周期为100us占空比50%;使用定时/计数器1,工作在方式2,从P1.2输出周期80us,占空比50%的方波。(提示,定时/计数器1没有了中断申请标志位,需要读取计数数据,进行判断)。 答:参考程序如下:

ORG 0000H

AJMP AJMP AJMP

MAIN_START INT_TL0_HANDLE

;定时/计数器1中断入口,但作为了T0的TH0定时中断入口 INT_TH0_HANDLE

ORG 000BH ;定时/计数器0中断入口 ORG 001BH ORG 0030H

第 24 页 共 47 页

INT_TL0_HANDLE:

MOV CPL RETI MOV CPL RETI

TL0, #9CH ;TL0产生200us方波 P1.0

;

;TH0产生100us方波

INT_TH0_HANDLE:

TH0, #0CFH P1.1

;

ORG 0100H MAIN_START: READ_T1: END

MOV CLR SUBB JNC CPL AJMP

C

;产生80us方波 ;

;计数小于初值+7,则让输出翻转。由于读取TL1的计数值 ;范围,只要发生了初值重转,则计数已经溢出。 ;大于则继续读数。直到计数溢出。

A, TL1 ;读T1的计数值 A, #0DFH

;

MOV SETB SETB MOV MOV MOV MOV MOV SETB SETB SETB

TMOD, ET0 ET1

#23H ;T0方式3,T1方式2 ;开T0中断

;开T1中断,注:TH0使用。

; ; ;

TL0, #9CH ;赋初值 TH0, #0CFH TH1, #0D8H TL1, #0D8H EA TR0 TR1

P1, #00H ;输出清零

;开全局中断 ;TL0开始计数

;TH0开始计数,T1计数从方式确定就开始了

;并不是每个计数值都能读到,所以判断时需要给一个大的

READ_T1 P1.2 READ_T1

说明:此程序可以直接运行,但是实际测试结果,只能近似输出题目要求波形。定时/

计数器0是由于软件初值重转的问题,计时器1则是由于每次读数时,由于中断的执行,导致错过读数,所以输出波形的频率是不稳定的。

第7章习题与思考题参考答案

第 25 页 共 47 页

7-1简述MCS-51单片机串行口的四种工作方式的接收和发送数据的过程。 答:(略)

7-2 串行口有几种工作方式?各工作方式的波特率如何确定? 答:

它有四种工作方式:方式0、1、2、3。帧格式有10位、11位。方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器的溢出率决定。

7-3 若晶体的振荡频率为11.0592MHz,串行口工作于方式1,波特率为4800bit/s,计算用T1作为波特率发生器的方式控制字和计数初值。

解:方式1和方式3的波特率由定时器的溢出率控制,是可变的,表示为:

波特率=(2SMOD /32)×定时器T1的溢出率

定时器T1的溢出率= T1计数率/产生溢出所需的时间

N=(fOSC/12)/(2?TC)

其中:N为定时器T1的位数,TC为定时器T1的预置初值。

2

7-4 简述IC总线的数据传输方式。 答: (略)

2

7-5 编写程序将AT89C51单片机片内40H~47H单元中的八个8位数据通过IC总线接口传送到存储器AT24C01的50H~57H单元中。 答:

ICW: ICWLP1: ICWLP2: ICWLP3: LCALL START MOV A,#0A0H LCALL WOBYT LCALL TACK JB 30H,ICWLP1 MOV A,#50H LCALL WOBYT LCALL TACK JB 30H,ICWLP1 MOV R5,#8 MOV R0,#40H MOV A,@ R0 LCALL WOBYT LCALL TACK JB 30H,ICWLP1 INC R0 DJNZ R5,WLP2 LCALL STOP LCALL DELAY RET ;发送起始信号 ;#10100000B器件地址码, ;发送器件地址 ;检查应答位 ;无应答位,重发 ;50H为待写存储单元首地址 ;发送待写存储单元地址 ;检查应答位 ;无应答位,重发 ;待发送数据块的长度 ;40H为第一个数据的首地址 ;读一个字节数据 ;发送 ;检查应答位 ;无应答位,重发 ;指向下一个要发送的数据 ;要发送数据未发完,再发送 ;全部数据发完,停止 ;延时,等待AT24C01内部写操作 ;返回

7-6简述SPI总线的数据传输方式。 答:(略)

第 26 页 共 47 页

7-7编写程序将AT89C51单片机片内30H、31H单元中的16位数据通过SPI总线接口传送到数字/模拟转换器TLC5615。. 答:

DIN SCLK CS5615 DataH DataL TLC5615: LPH: LPL: BIT P1.1 BIT P1.2 BIT P1.3 EQU 30H EQU 31H ;定义I/O口 CLR SCLK ;准备操作TLC5615 CLR CS5615 ;选中TLC5615 MOV R7,#08H MOV A, DataH ;装入高8位数据 LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN,C SETB SCLK ;产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPH MOV R7,#08H MOV A,DataL ;装入低8位数据 LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN, C SETB SCLK ; 产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPL SETB CS5615 ;结束TLC5615的操作,同时将转换数据代码存入10位DA寄存器,启动新一轮的DA转换 DELAY: RET …(略) RET 7-8简要说明CAN总线、USB总线、1-Wire总线的特点。

答:

CAN的特点:

(1) 较低的成本与极高的总线利用率;

第 27 页 共 47 页

(2) 数据传输距离可长达10km,传输速率可高达1Mbps;

(3) 可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发; (4) 节点在错误严重的情况下具有自动退出总线的功能;

(5) 报文不包含源地址或目标地址,仅用标志符来指示功能信息和优先级信息; (6) 多主机依据优先权进行总线访问,无破坏性的基于竞争的仲裁; (7) 借助接收滤波的多地址帧传送。 USB:

具有传输速度快(USB1.1是12Mbps,USB2.0是480Mbps, USB3.0是5 Gbps),使用方便,支持热插拔,连接灵活,独立供电等优点。

1-Wire:

它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。

7-9画出CAN总线控制器SIA1000与单片机的连接电路原理图。 答:

7-10写出PDIUSBD12固件各模块程序的分工。 答:

PDIUSBD12固件各模块程序的分工如下:

硬件提取层:对单片机的I/O口、数据总线等硬件接口进行操作。

PDIUSBD12命令接口:对PDIUSBD12器件进行操作的模块子程序集。

中断服务程序:当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12的中断传输来的数据,并设定事件标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_XFER”传输给主循环程序。

标准请求处理程序:对USB的标准设备请求进行处理。 厂商请求处理程序:对用户添加的厂商请求进行处理。

主循环程序:发送USB请求、处理USB总线事件和用户功能处理等。

7-11单总线有哪些ROM命令?

第 28 页 共 47 页

答:

ROM命令 搜索ROM(F0H) 读ROM(33H)(仅适合单节点) 匹配ROM(55H) 跳跃ROM(CCH)(仅适合单节点) 报警搜索ROM(Ech)(仅少数器件支持)

ROM命令 识别单总线上所有的1-wire器件的ROM编码 直接读1-wire器件的序列号 寻找与指定序列号相匹配的1-wire器件 使用该命令可直接访问总线上的从机设备 搜索有报警的从机设备 第 29 页 共 47 页

第8章 思考题及习题参考答案

1.在一般情况下实现片选的方法有两种,分别是 线选法 和 译码法 。 2.起止范围是0000H~3FFFH的存储器的容量是 16 KB。

3.11根地址线可选 2048(或2KB)个存储单元,16KB存储单元需要 14 根地址线。 4.MCS-51机中扩展I/O口占用片外__数据__存储器地址空间。

5.MCS-51单片机访问片外存储器时利用通信 ALE_信号锁存来自_P0__口的低八位地址信号。 6.半导体存储器的最重要的两个指标是 存储容量 和 存取速度 。(较易,一般) 7.32KB ROM的首地址若为2000H,则末地址是 9FFFH 。

8.三态缓冲寄存器的“三态”是指 低电平 态、 高电平 态和 高阻 态。

9.74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中_8_块芯片。 10.74LS273通常用来作为简单 输出 接口扩展;而74LS244则常用来作简单 输入 接口扩展。 11.计算机对输入/输出设备的控制方式主要有三种。其中, A 方式硬件设计最简单,但要占用不少CPU的运行时间; B方式的硬件线路最复杂,但可大大提高数据传送效率;而 C 则介于上述两者之间。

①先进先出 ②后进先出 ③直接存储器访问 ④程序查询 ⑤高速缓存 ⑥系统总线 ⑦程序中断 ⑧逐行扫描 请选择并填写答案:A=__④__,B= ③ ,C=_ ⑦_

12.LED显示器的显示控制方式有 静态 显示和 动态 显示两大类。 13.LED显示器根据二极管的连接方式可以分为 共阴极 和共阳极两大类。 14.I/O口数据传送有哪些传送方式,分别在哪些场合下应用?

单片机和外设之间进行数据和信息的交换时,由于外设的工作速度存在差异,数据的传送就需要采用不同的方式,CPU可以采用无条件传送、查询传送、中断传送和直接存储器存取四种传送。

无条件传送适合数据信号变化缓慢的外部设备及工作速度足以和CPU同步工作的外部设备。 直接存储器存取适合于外设和存储器之间有大量的数据需要传送;外设的工作速度很快。 15.为什么要消除按键的机械抖动?消除按键的机械抖动的方法有哪几种?原理是什么? 解:在按键的闭合和断开过程中,由于开关的机械特性,导致了按键抖动的产生。如果不消

第 30 页 共 47 页

除按键的机械抖动,按键的状态读取将有可能出现错误。消除按键抖动一般是采用软件或硬件去抖。软件去抖的原理:在第一次检测到有键按下时,该键所对应的航线是为低电平,执行一端延时10ms的子程序后,确认该行线电平是否仍然为低电平,如果仍为低电平,则确认为该行确实有键按下。

16.LED的静态显示方式于动态显示方式有何区别?各有什么优缺点?

解:静态显示时,数据是分开送到每一位LED上的。而动态显示则是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示则好一点,适合用在显示位数较多的场合。 17. 说明矩阵式键盘按键按下的识别原理。

解:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置。

18.根据习题图1的电路,把81C55的PA口和PC口设置成输入方式,PB口设置成输出方式,定时器作为方波发生器,对输入的脉冲进行24分频。试写出满足此要求的初始化程序。 (命令字格式:TM2 TM1 IEB IEA PC2 PC1 PB PA)

P0P2.7P2.0AD0-AD7/CSIO/MPAPB80C51ALEWRRDRESET复位电路81C55ALEWRRDRESETPC 解:根据题意要求,可得8155的命令字为:C2H;根据硬件电路81C55的I/O端口地址可选为: 7F00H-7F05H。 程序如下:

ORG 0100H

第 31 页 共 47 页

MOV DPTR,#7F04H ;定时器低8位地址口 MOV A,#18H ;计数初值 MOVX @DPTR,A

INC DPTR ;定时器高8位地址口 MOV A,#40H ;规定定时器的输出方式 MOVX @DPTR,A

MOV DPTR,#7F00H ;状态控制寄存器地址口

MOV A, #0C2H ;启动定时计数器,并规定A、B、C三个口的输入输出方式 MOVX @DPTR,A SJMP $ END

19.采用线选法在80C51单片机上扩展2片2764EPROM芯片,并根据连线确定两芯片的地址空间范围。

P2.7P2.6P2.4-P2.080C51EAGALEP0PSENQ0~7373D0~7OEA0~7A8~12CEA0~7A8~12CEOE2764(1)D0~72764(2)D0~7OE

解:

第 32 页 共 47 页

P2.7P2.6P2.4-P2.080C51EAQ0~7ALEP0PSENG373D0~7OEA0~7A8~12CEA0~7A8~12CEOE2764(1)D0~72764(2)D0~7OE

80C51的EA引脚可接地也可悬空,根据接的电路可以得出两片2764的地址如下: (1)2764:A000H-BFFFH (2)2764:6000H-7FFFH

20.采用线选法在80C51单片机上扩展1片6264RAM芯片以及1片2764ROM芯片,并根据连线确定两芯片的地址空间范围。

P2.7P2.6P2.4-P2.080C51EAALEP0PSENWRRDGQ0~7373D0~7OEA0~7A8~12CEA0~7A8~12CEOE6264(1)2764(2)D0~7D0~7WEOE

解:

P2.7P2.6P2.4-P2.080C51EAALEP0PSENWRRD第 33 页 共 47 页

Q0~7G373D0~7OEA0~7A8~12CEA0~7A8~12CEOE6264(1)2764(2)D0~7D0~7WEOE

6264和2764他们的片选信号均可以直接接地 他们对应的地址范围为:2764:E000H-FFFFH 6264:E000H-FFFFH

21.分析下图2片6264(8KB)存储器芯片的地址范围。

P2.5P2.6P2.7VccCBAG1G2AG2BY3Y474LS138P2.4-P2.0855P0ALEMCS-5188锁存器GCE1A0~126264(1)I/O0~7WECE1A0~126264(2)WEOEI/O0~7OERDWR

解:

(1)6264:2000H-3FFFH (2)6264:C000H-DFFFH

第 34 页 共 47 页

第9章思考题及习题参考答案:

1. A/D,D/A转换器各有什么作用?

答: A/D转换器用来将连续的模拟信号转变成离散的数字信号; D/A转换器用来将数字信号转变成模拟信号。

2. D/A转换器的主要性能参数有哪些?

答:A/D转换器的性能参数主要有:分辨率,量程,转换速度或转换时间;

3. 图9.7中DAC0832的CS 若接80C51的P2.0,则一下哪个地址不能访问DAC0832( )。 A. 0000H B. FF00H C. F0FFH D. FEFFH 答:D/A转换器的性能参数主要有:分辨率,转换精度,转换时间。

4. 图9.13中若要使ADC0809的8个模拟通道地址为2000H~2008H,则P2.7应该改为__________? 答:B

5. ADC0809是一个 位的 转 器件;DAC832是一个 位的 转 器件。

答: P2.5

6. 逐次逼近型A/D转换器主要包括哪几个部分。 答:8位, 模拟,数字;8,数字,模拟

7. AD1674可以工作在哪些模式下,数据格式有几种?

答:电压比较器,控制器,逐次逼近寄存器,D/A转换器,输出缓冲器。

8. PCF8591与ADC0809、DAC0832相比有哪些不同? 答: AD1674可以工作在0~10V、0~20V单极性输入模式和-5V~+5V、-10V~+10V双极性模式。其A/D转换输出位数有8位模式和12位模式。在12位A/D转换模式下,输出数据可以为12位一次输出数据格式,也可为高8位,低4位分时输出数据格式。

9. 利用图9.7所示电路,编程输出一个锯齿波。

答: PCF8591是一个串行A/D,D/A转换器,是一个8位转换器,兼有ADC0809和DAC0832

2

的转换功能,且其数据通过串行总线IC输出的。

10. 参考图9.22,编程使用PCF8591输出三角波。 答:参考代码如下:

ORG 0000H

AJMP MAIN_START ORG 0100H MAIN_START:

MOV DPTR, MOV A,

#7FFFH #0

GOON: 第 35 页 共 47 页

END

MOVX @DPTR, INC

A

SJMP GOON

A

11.参考代码如下:

ORG 0000H

AJMP MAIN_START

ORG 0100H MAIN_START:

MOV R6, 0

;启动IIC总线操作

;设置控制字 ;访问PCF8591的D/A

MOV A, #10010000B LCALL WRB LCALL WRB MOV A, R6 LCALL WRB

LCALL I2C_START ;停止IIC总线操作 INC R6

CJNE R6, #0FFH,

UP

;启动IIC总线操作

;设置控制字 ;访问PCF8591的D/A

;从D/A输出采样值

MOV A, #01000000H

UP: LCALL I2C_START

DOWN:

LCALL I2C_START MOV A, #10010000B LCALL WRB LCALL WRB MOV A, R6 LCALL WRB

LCALL I2C_START ;停止IIC总线操作 DEC R6

CJNE R6, #0, DOWN

;从D/A输出采样值

MOV A, #01000000H

NEXT_CYCLE:

SJMP UP

第 36 页 共 47 页

第10章思考题及习题参考答案

1.C51支持的数据类型和存储器类型有哪些?

答:数据类型:字符型、整型、长整型、浮点型、位型、访问SFR。

存储器类型:bdata 、data、 idata、 pdata 、xdata 、code 2.设x=4,y=8,说明下列各题运算后x,y,z的值分别是多少? (a)z=(++x)*(--y); (b)z=(++x)+(y--) (c)z=(x++)*(--y); (d)z=(x++)+(y--) 答:(a)x=5,y=7,z=35; (b)x=5,y=7,z=13; (c)x=5,y=7,z=28; (d)x=5,y=7,z=12;

3.C51中断函数是如何定义的?各个选项有和意义? 答:

interrupt n 用于定义中断函数,n为中断号,可以为0~31,通过中断号可以决定中断服务程序的入口地址。

常用的中断源对应的中断号 中断源 中断号 外中断0 0 定时器0 1 外中断1 2 定时器1 3 串行口 4 4. C51应用程序的参数传递有哪些方式?特点是什么?

答:参数传递可以采用寄存器、固定存储器位置方式。寄存器传递方式最多可以传递3个参数。这种参数传递可以产生高效的代码。当无寄存器可用时,参数可以采用固定的存储器位置传递。在SMALL模式下,参数传递在内部RAM中完成。在COMPACT和LARGER模式下,参数的传递要在外部RAM中完成。

5. 一般指针与基于存储器的指针有何区别? 答:

定义时未指定它所指向的对象的存储器类型时,该指针变量就被认为是一般指针。一般指针占用3个字节:第一个字节存放该指针的存储器类型编码(由编译模式的默认值确定),第二和第三个字节分别存放该指针的高位和低位地址偏移量。

定义时就指定了它所指向的对象的存储器类型时,该指针变量就属于基于存储器的指针。基于存储器的指针可以高效访问对象,类型由C51源代码中存储器类型决定,且在编译时确定。

6.设fsoc=12MHz,8051定时器0的方式0、方式1、方式2的最大定时间隔分别是多少?

答:fsoc=12MHz,故计数周期为1us,所以: 方式0最大计数为2=8192,T0=8192us; 方式1最大计数为2=65536,T1=65536us; 方式2最大计数为2=256,T1=256us;

7.用单片机内部定时器来产生矩形波, 设单片机时钟频率为l2MHz。要求在p1.0引脚上输出频率为1kHz。试写出有关的程序。

答:用定时器0的方式1编程,采用中断方式。

# include Sbit P1_0=P1^0;

81613

第 37 页 共 47 页

void time0(void) interrupt 1 using 1 { P1_0=!P1_0;

TH0=(65536-500)/256); TL0=(65536-500)%256); }

void main(void) {

MODE=0x01;

TH0=(65536-500)/256); TL0=(65536-500)%256); EA=1; ET0=1; TR0=1; while (1); }

第 38 页 共 47 页

第11章思考题及习题参考答案

1. 简述单片机应用系统设计的一般方法及步骤。

解:

单片机应用系统设计的一般方法及步骤如图11.1所示。 (1)明确设计任务 (2)器件选择 (3)总体设计

开 始明确任务、确定系统的功能与性能选型、软硬件划分硬件设计软件设计修改系统调试修改清除故障、修改程序或硬件固化程序、应用系统独立运行完 成图11-1 单片机应用系统设计的过程

2. 简述单片机应用系统设计中软、硬件设计原则。 解:

(1)硬件电路设计

在硬件设计时,要尽量应用最新单片机,采用新技术。要注意通用性的问题,尽可能选择典型电路,并符合单片机常规用法,为硬件系统的标准化、模块化打下良好的基础。系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。硬件系统设计应尽量朝“单片”(片上系统SOC)方向发展,以提高系统的稳定性。工艺设计时要考虑安装、调试、维修的方便。扩展接口的开发尽可能采用PSD等器件开发。

第 39 页 共 47 页

(2)软件设计

软件设计随单片机应用系统的不同而不同。图11.2给出了单片机软件设计的流程图。一般可分为以下几个方面。

① 总体规划

② 程序设计技术: 模块程序设计、自顶向下的程序设计。

③ 程序设计:建立数学模型、绘制程序流程图、程序的编制。

④ 软件装配。

3. 单片机应用系统软、硬件设计应注意那些问题? 解:

硬件设计:

(1)存储器扩展:容量需求,在选择单片机时就考虑到单片机的内部存储器资源,如能满足要求就不需要

进行扩展,在必须扩展时注意存储器的类型、容量和接

图11.2 软件设计的流程图

口,一般尽量留有余地,并且尽可能减少芯片的数量。选择合适的方法、ROM和RAM的形式,RAM是否要进行掉电保护等。

(2)I/O接口的扩展:单片机应用系统在扩展I/O接口时应从体积、价格、负载能力、功能等几个方面考虑。应根据外部需要扩展电路的数量和所选单片机的内部资源(空闲地址线的数量)选择合适的地址译码方法。

(3)输入通道的设计:输入通道设计包括开关量和模拟输入通道的设计。开关量要考虑接口形式、电压等级、隔离方式、扩展接口等。模拟量通道的设计要与信号检测环节(传感器、信号处理电路等)结合起来,应根据系统对速度、精度和价格等要求来选择,同时还需要和传感器等设备的性能相匹配,要考虑传感器类型、传输信号的形式(电流还是电压)、线性化、补偿、光电隔离、信号处理方式等,还应考虑A/D转换器的选择(转换精度、转换速度、结构、功耗等)及相关电路、扩展接口,有时还涉及软件的设计。高精度的模数转换器价格十分昂贵,因而应尽量降低对A/D转换器的要求,能用软件实现的功能尽量用软件来实现。

(4)输出通道的设计:输出通道设计包括开关量和模拟量输出通道的设计。开关量要考虑功率、控制方式(继电器、可控硅、三极管等)。模拟量输出要考虑D/A转换器的选择(转换精度、转换速度、结构、功耗等)、输出信号的形式(电流还是电压)、隔离方式、扩展接口等。

(5)人机界面的设计:人机界面的设计包括输入键盘、开关、拨码盘、启/停操作、复位、显示器、打印、指示、报警等。输入键盘、开关、拨码盘应考虑类型、个数、参数及相关处理(如按键的去抖处理)。启/停、复位操作要考虑方式(自动、手动)及其切换。显示器要考虑类型(LED,LCD)、显示信息的种类、倍数等。此外还要考虑各种人机界面的扩展接口。

(6)通信电路的设计:单片机应用系统往往作为现场测控设备,常与上位机或同位机构成测控网络,需要其有数据通信的能力,通常设计为RS-232C、RS-485、红外收发等通信标准。

(7)印刷电路板的设计与制作:电路原理图和印刷电路板的设计常采用专业设计软件

第 40 页 共 47 页

进行设计,如Protel,OrCAD等。设计印刷电路板需要有很多的技巧和经验,设计好印刷电路板图后应送到专业化制作厂家生产,在生产出来的印刷电路板上安装好元件,则完成硬件设计和制作。

(8)负载容限的考虑:单片机总线的负载能力是有限的。如MCS-51的P0口的负载能力为4mA,最多驱动8个TTL电路,P1~P3口的负载能力为2mA,最多驱动4个TTL电路。若外接负载较多,则应采取总线驱动的方法提高系统的负载容限。常用驱动器有:单向驱动器74LS244,双向驱动器74LS245等。

(9)信号逻辑电平兼容性的考虑:在所设计的电路中,可能兼有TTL和CMOS器件,也有非标准的信号电平,要设计相应的电平兼容和转换电路。当有RS-232,RS-485接口时,还要实现电平兼容和转换。常用的集成电路有MAX232,MAX485等。

(10)电源系统的配置:单片机应用系统一定需要电源,要考虑电源的组数、输出功率、抗干扰。要熟悉常用三端稳压器(78хх系列、79хх系列)、精密电源(AD580,MC1403,CJ313/336/385,W431)的应用。

(11)抗干扰的实施:采取必要的抗干扰措施是保证单片机系统正常工作的重要环节。它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。

软件设计: (1)总体规划:软件所要完成的任务已在总体设计时规定,在具体软件设计时,要结合硬件结构,进一步明确软件所承担的一个个任务细节,确定具体实施的方法,合理分配资源。

(2)程序设计技术:合理的软件结构是设计一个性能优良的单片机应用系统软件的基础。在程序设计中,应培养结构化程序设计风格,各功能程序实行模块化、子程序化。一般有以下两种设计方法:

(a)模块程序设计:模块程序设计是单片机应用中常用的一种程序设计技术。它是把一个较长的程序分解为若干个功能相对独立的较小的程序模块,各个程序模块分别设计、编程和调试,最后由各个调试好的模块组成一个大的程序。其优点是单个功能明确的程序模块的设计和调试比较方便,容易完成,一个模块可以为多个程序所共享。其缺点是各个模块的连接有时有一定难度。

(b)自顶向下的程序设计:自顶向下程序设计时,先从主程序开始设计,从属程序或子程序用符号来代替。主程序编好后再编制各从属程序和子程序,最后完成整个系统软件的设计。其优点是比较符合于人们的日常思维,设计、调试和连接同时按一个线索进行,程序错误可以较早的发现。缺点是上一级的程序错误将对整个程序产生影响,一处修改可能引起对整个程序的全面修改。

(3)程序设计:在选择好软件结构和所采用的程序设计技术后,便可着手进行程序设计,将设计任务转化为具体的程序。

(a)建立数学模型:根据设计任务,描述出各输入变量和各输出变量之间的数学关系,此过程即为建立数学模型。数学模型随系统任务的不同而不同,其正确度是系统性能好坏的决定性因素之一。

(b)绘制程序流程图:通常在编写程序之前先绘制程序流程图,以提高软件设计的总体效率。程序流程图以简明直观的方式对任务进行描述,并很容易由此编写出程序,故对初学者来说尤为适用。

在设计过程中,先画出简单的功能性流程图(粗框图),然后对功能流程图进行细化和具体化,对存储器、寄存器、标志位等工作单元作具体的分配和说明,将功能流程图中每一个粗框的操作转变为具体的存储器单元、工作寄存器或I/O口的操作,从而给出详细的程序流程图(细框图)。

第 41 页 共 47 页

(c)程序的编制:在完成程序流程图设计以后,便可以编写程序。程序设计语言对程序设计的影响较大。汇编语言是最为常用的单片机程序语言,用汇编语言编写程序代码精简,直接面向硬件电路进行设计,速度快,但进行大量数据运算时,编写难度将大大增加,不易阅读和调试。在有大量数据运算时可采用C语言(如MCS-51的C51)或PL/M语言。 编写程序时,应注意系统硬件资源的合理分配与使用,子程序的入/出口参数的设置与传递。采用合理的数据结构、控制算法,以满足系统要求的精度。在存储空间分配时,应将使用频率最高的数据缓冲器设在内部RAM;标志应设置在片内RAM位操作区(20H~2FH)中;指定用户堆栈区,栈区的大小应留有余量;余下部分作为数据缓冲区。 在编写程序过程中,根据流程图逐条用符号指令来描述,即得汇编语言源程序。应按MCS-51汇编语言的标准符号和格式书写,在完成系统功能的同时应注意保证设计的可靠性,如数字滤波、软件陷阱、保护等。必要时可作若干功能性注释,提高程序的可读性。

(4)软件装配:各程序模块编辑之后,需进行汇编或编译、调试,当满足设计要求后,将各程序模块按照软件结构设计的要求连接起来,即为软件装配,从而完成软件设计。在软件装配时,应注意软件接口。

4. 单片机应用系统硬件设计的基本任务是什么? 解:

一个单片机应用系统的硬件设计包含两部分内容:一是系统扩展,即当单片机内部的功能单元不能满足应用系统的要求时必须进行片外扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如通信接口、键盘、显示器、打印机、A/D、D/A转换器等,要设计合理的接口电路。

5. 在单片机应用系统设计中,硬件调试的基本步骤是什么?

解:

(1)静态检查

根据硬件电路图核对元器件的型号、规格、极性、集成芯片的插接方向是否正确。用逻辑笔、万用表等工具检查硬件电路连线是否与电路图一致,有无短路、虚焊等现象。严防电源短路和极性接反。检查数据总线、地址线和控制总线是否存在短路的故障。

(2)通电检查

通电检查时,可以模拟各种输入信号分别送入电路的各有关部分,观察I/O口的动作情况,查看电路板上有无元件过热、冒烟、异味等现象,各相关设备的动作是否符合要求,整个系统的功能是否符合要求。

6. 在单片机应用系统设计中,有那些常见的可靠性设计内容? 解:

可靠性通常是指在规定的条件下,在规定的时间内完成规定功能的能力。可采用以下的方法提高系统的可靠性。

第 42 页 共 47 页

(1)隔离技术。 (2)屏蔽措施。 (3)双绞线传输。

(4)长线传输的阻抗匹配。 (5)对信号整形。

(6)抑制机械触点,接触器、可控硅的噪声。

(7)提高印刷电路板(PCB)设计中的抗干扰能力。 (8)合理设计地线。

(9)注意各电路之间的电平匹配,总线驱动能力;单片机的空闲端要接地或接电源,或者定义成输出;室外使用的单片机系统或从室外架空引入室内的电源线、信号线,要防止雷击等。

7. 简述单片机应用系统软件设计的主要步骤和方法。 解:

软件设计随单片机应用系统的不同而不同,一般可分为以下几个方面(图11.7画出了单片机软件设计的流程图)。

(1)总体规划 (2)程序设计技术

① 模块程序设计

② 自顶向下的程序设计 (3)程序设计

① 建立数学模型 ② 绘制程序流程图 ③ 程序的编制 (4)软件装配

8. 简述单片机应用系统的调试步骤和方法。 解:

第 43 页 共 47 页

图11.7 软件设计的流程图

硬件和软件调试完成之后,应进行系统调试。在系统调试时,应将全部硬件电路都接上,应用程序模块、子程序也都组合好,进行全系统软、硬件调试,系统调试的任务是排除软、硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的性能指标。

在进行系统调试时,对于有电气控制负载的系统,应先试验空载,空载正常后再试验负载情况。要试验系统的各项功能,避免遗漏。

系统调试成功之后,就可以将程序固化到ROM中,程序固化可以在有些仿真系统中进行,最好用专用程序固化器进行固化操作,因为它的功能完善,使用方便、可靠。

将固化好程序的ROM插回到应用系统电路板的相应位置,即可脱机运行。系统试运行要连续运行相当长的时间,以考验其稳定性。并要进一步进行修改和完善处理。

一般地,经开发装置调试合格的软、硬件,脱机后应正常运行。但由于开发调试环境与应用系统的实际运行环境不尽相同,也会出现脱机后不能正常运行的情况。当出现脱机运行故障时,应考虑程序固化有无错误;仿真系统与实际系统在运行时,有无某些方面的区别(如驱动能力);在联机仿真调试时,未涉及的电路部分有无错误。

9. 按照单片机应用系统设计的一般方法和步骤,设计一个函数发生器,并写出完整的设计

报告。

解:

设计提示:利用单片机控制函数发生器ICL8038芯片,外接少量元器件,制作一台多功能智能函数发生器,要求此函数发生器既能产生各种波形,又能以数字形式显示新产生波形的频率和幅值。

函数发生器一般由以下几部分组成:单片机最小系统,函数发生器ICL8038,真有效值转换电路,A/D和D/A转换电路,显示、键盘及控制电路等。

ICL8038是大规模单片函数发生器,只要外接少量元件,就能产生方波、三角波、正弦波等各种波形。

为减少误差,提高函数发生器的准确度,采用真有效值转换电路,以改善ICL8038产生的波形畸变。一般采用真有效值转换器芯片AD636或AD537来实现。

第 44 页 共 47 页

第12章 思考题及习题参考答案

12-1 微型计算机的发展可划分为几个阶段?当前广泛使用的微机主要采用哪一代的技术? 答:(略)

12-2 8086CPU 由哪两部分组成?它们的主要功能各是什么?总线端口部件BIU 由哪几部分组成?作用各是什么?

答:8086 微处理器由两个独立的单元组成,一个称为总线端口单元,另一个称为执行单元EU。

指令执行单元EU 的功能是负责全部指令的译码和执行,同时管理CPU内部的有关寄存器。执行单元EU 由一个16 位的算术逻辑单元(ALU)、16 位的标志寄存器(实际仅用9 位)、8 个16位的寄存器,以及数据暂存器和EU 控制器等组成。

指令执行单元EU 的工作就是执行指令,并不直接与外部发生联系,而是从总线端口单元BIU 的指令队列中源源不断地获取指令并执行,省去了访问存储器取指令的时间,提高了CPU 的利用率和整个系统的运行速度。

BIU是8086 微处理器在存储器和I/O设备之间的端口部件,负责对全部引脚的操作,即8086 对存储器和I/O设备的所有操作都是由BIU 完成的。

总线端口单元BIU 主要由4 个段寄存器、1个指令指针寄存器、1 个与EU通信的内部寄存器、先入先出的指令队列、总线控制逻辑和计算20 位物理地址的地址加法器组成。4个段寄存器分别称为代码段寄存器(CS)、数据段寄存器(DS)、堆栈段寄存器(SS)和附加数据段寄存器(ES)。

12-3 8086 在最大模式和最小模式下各有什么特点和不同?

答:所谓最小工作方式,就是系统中只有一个8086 微处理器,在这种情况下,所有的总线控制信号,都是直接由8086 CPU 产生的,系统中的总线控制逻辑电路被减到最少,最小工作方式适用于由单微处理器组成的小系统。在这种系统中, 8086 CPU 直接产生所有的总线控制信号,因而省去了总线控制逻辑。

最大工作方式是相对于最小工作方式而言的,将8086/8088 CPU 的引脚MN/MX 接地,就使CPU 工作于最大模式。最大系统用在中、大规模的微机应用系统中,在最大系统下,系统中至少包含两个微处理器,其中一个为主处理器,即8086CPU,其他的微处理器称之为协处理器,是协助主处理器工作的。

12-4 8086CPU 的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快?

答:常用的寻址方式有立即寻址、寄存器寻址、存储器和I/O 端口寻址。其中存储器寻址又包括直接寻址、寄存器间接寻址、变址寻址和基址加变址寻址。其中立即数寻址的指令执行速度最快。

12-5 分别指出下列指令中的源操作数和目标操作数的寻址方式。

(1) (2) (3) (4) (5)

第 45 页 共 47 页

MOV SI,200 MOV AX,DATA [DI] ADD AX,[BX][SI] AND BX,CX MOV [BP],AX 立即寻址 变址寻址 寄存器间接寻址 寄存器寻址 基址加变址寻址

12-6 在8086 汇编语言中如何定义代码段,如何定义过程段?

答:汇编语言源程序的基本结构是段,一个汇编语言源程序由若干个代码段、数据段、附加段和堆栈段组成。段之间的顺序可以随意安排,通常数据段在前,代码段在后。每个段都有段首指令和段结束指令,段的内容介于这两条指令之间。

其一般结构如下:

SSEG SEGMENT STACK 〈堆栈段的内容〉 SSEG ENDS

DSEG SEGMENT DATA 〈数据段的内容〉 DSEG ENDS

CSEG SEGMENT CODE 〈代码段的内容〉 CSEG ENDS

END 〈启动标号〉

12-7 已知一个SRAM 芯片的容量为8KB×8,该芯片的地址线为多少条?数据线为多少条? 答:地址线13条,数据线8条。

12-8 8086有几种中断类型,在IBM PC/XT 中的非屏蔽中断源有几种?

答:8086的中断分为外部中断和内部中断两大类,外部中断是由 CPU 的外部中断请求引脚NMI 和INTR 引起的中断过程,可分为非屏蔽中断和可屏蔽中断两种。内部中断功能是由CPU 内部硬件产生的,或者由软件的中断指令INT n 引起的。在IBM PC/XT 中的非屏蔽中断源有3 种。

12-9单片8259A 能够管理多少级可屏蔽中断源?最多能管理多少级可屏蔽中断源?

答:8259A是专为8086/8088 CPU配套的可编程中断控制器。它可以管理8 级具有优先权的中断源并且可以以级联的方式扩展到64 级优先级。 12-10 对8259A 初始化有什么规定和要求?

答:8259A 初始化工作包括:8259A初始化设定工作方式:边沿触发、缓冲方式、非自动结束EOI、中断全嵌套优先权管理方式。

12-11什么叫DMA?为什么要引入DMA 方式?DMA 一般在哪些场合使用?

答:直接存储器存取DMA 是一种外设与存储器之间直接传输数据的方法,适用于需要高速大量传输数据的场合。DMA 数据传输是利用DMA 控制器进行控制的,不需要CPU直接参与。

12-12 DMA 控制器8237 如何实现优先级控制,并进行数据传送的?

答:在可编程DMA 控制器芯片8237 中,优先编码部分对同时提出DMA 请求的多个通道进行优先级排队判优,

当可编程DMA 控制器芯片8237 收到一个从外设发来的DREQ请求DMA 传送时,该DMAC经过判优和屏蔽处理后,向总线控制器送出总线请求HRQ信号要求使用总线。

DMAC接管总线控制权后,由被动状态进入主动状态,成为系统主控者,并向I /O设备发出DMA 应答信号DACK ,向存储器发出地址信号和读/写信号,开始DMA 传送,成为系统的主宰者。

第 46 页 共 47 页

12-13 ISA总线的主要特征是什么?

答:8 位的ISA总线由62根信号线组成,通常称为PC总线或者XT总线。扩展槽使用62 芯双面插槽,引脚分别为A1~A31和B1~B31,A 面是元件面,B 面是焊接面。

16位ISA总线是在PC/AT上推出的,在PC总线的基础上增加了36根信号线,通常称AT总线,对应36芯双面插槽,其中C面是元件面,对应排列为C1~C18,D 面是焊接面,对应排列为D1~D18。

12-14 PCI总线的主要特点是什么?

答:PCI总线最大允许64 位并行数据传输,采用地址/数据总线复用方式,最高总线时钟66MHz。PCI总线包括数据线、地址线、接口控制线、仲裁及系统线等。PCI接口对单个设备至少需要47 根信号线,对主控设备至少需要49 个信号线。 12-15 USB作为通用串行总线的优点有哪些?有几种传输方式?

答:USB作为通用串行总线,具有传输速度高、可扩展性强和即插即用的优点。 有同步传输方式、 中断传输方式、 控制传输方式和4) 批传输方式4种传输方式。

第 47 页 共 47 页