单片机原理及接口技术1

更新时间:2023-09-28 01:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

一、计算题

1、①(10000111)2 (87)16 ② (0 .101) 2 (0.A) 16 ③(101111.1011) 2 (2F.B) 16

2、①(430)10 (1AE) 16 ②(0.6875)10 (0.B) 16

③(110.851563)10 (6E.DA0008637BD058) 16 3、①(11101010110)2 (1878)10

② (1001000.0101101) 2 (72.351563) 10 ③ (0.010101) 2 (0.328125) 10

4、①00011100B ②10000000B ③11110000B

5、 原码 反码 补码

① 0010 0110 0010 0110 0010 0110

② 0100 0000 0100 0000 0100 0000

③ 1111 0000 10001111 1001 0000

6、 X Y X+Y X-Y

① 00100110 00110111 01100101 10001001

真值 101 -9

② 01001110 00001111 01011101 00111111

真值 93 63

③ 10110011 01100001 00101110 01101100s

真值 46 108

7、(863) 10 (895) 10 (365) 10 8、414235H 434F4D5055544552H 5374756479H

二、问答题

1、什么是数制?为什么微型计算机要采用二进制?十六进制数能为计算机执行么?为什么要学习十六进制数。

答:数制就是计数方式,计算机中采用二进制是由计算机所使用的逻辑器件所决定。这种逻辑器件是具有两种状态的电路(触发器)好处是运算法则简单、实现方便,两个状态的系统具有稳定性。计算机中的数只能用二进制表示,十六进制适合于读写方便需要。

2、单片机的发展状况如何?它有哪些应用?试举例说明。 答:1971年微处理器研制成功。1974年,美国仙童公司研制出世界第一台单片微型计算机F8。该机由两块集成电路芯片组成,具有与众不同的指令系统,深受民用电器及仪器仪表领域的欢迎和重视。从此单片机开始迅速发展,应用领域也不断扩大。

目前,单片机正朝着高性能和多品种方向发展,但以MCS-51为主的8位单片机仍然占据着单片机的主导地位。单片机的应用日益广泛,如应用在仪器仪表、家用电器和专用装备的智能化以及过程控制等方面,单片机在人们的日常生活和工作中正扮演着越来越重要的角色。

(1)工业控制。单片机可以构成各种工业控制系统、数据采集系统等。如数控机床、自动生产线控制、电机控制、测控系统等。

(2)仪器仪表。如智能仪表、医疗器械、数字示波器等。 (3)计算机外部设备与智能接口。如图形终端机、传真机、复印机、打印机、绘图仪、磁盘/磁带机、智能终端机等。

(4)商用产品。如自动售货机、电子收款机、电子秤等。 (5)家用电器。如微波炉、电视机、空调、洗衣机、录像机、音响设备等。 (6)消费类电子产品。 (7)通讯设备和网络设备。 (8)儿童智能玩具。

(9)汽车、建筑机械、飞机等大型机械设备。 (10)智能楼宇设备。 (11)交通控制设备。

第二章

一、填空 1、0;低电平 2、32;4;8;R0-R7

3、上电复位;手动按键复位;00;00H-07H;11 4、内部数据存储器;外部数据存储器;内部程序存储器;外部程序存储器;3 5、256B;64KB 6、0B;4KB

7、1.2MHZ;12MHZ; 二、选择

1、① 2、④ 3、① 4、① 5、② 6、③ 7、③ 8、③ 9、③ 三、判断

1、× 2、× 3、× 4、√ 5、× 6、× 7、× 8、× 9、× 四、问答题

1、MCS-51单片机内部包含哪些主要逻辑功能部件? 答:(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。

(2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。

(3)4K ROM程序存贮器:存贮程序及常用表格。 (4)128B RAM 数据存贮器:存贮一些中间变量和常数等。 (5)两个16bit定时器/计数器:完全硬件定时器

(6)32根可编程I/O口线:标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入或输出。 (7)一个可编程全双工串行口。 (8)五个中断源。

2、MCS-51系列单片机的存储器可划分为几个空间?各自的地址范围和容量是多少?在使用上有什么不同?

答案:MCS-51的存储器空间可以划分为以下4种,分别是:程序存储器;内部数据存储器;内部特殊功能寄存器;外部

数据存储器; 对89S51来说,程序存储器分为片内程序存储器和片外程序存储器,片内程序存储器地址范围为0000H-0FFFH4KB;片外程序存储器地址范围0000H~FFFFH,64KB。内部程序存储器与外部程序存储器统一编址,当EA为高电平时,从内部程序存储器开始读取程序,达到4KB后跳到片外程序存储器的1000H开始读取程序;当EA为低电平时,直接从片外程序存储器的0000H开始处读取程序。 内部数据存储器地址范围为00H~7FH,128B,在程序中做通用存储器使用。 内部特殊功能寄存器地址范围80H~FFH,128B,专用于控制、管理片内算术逻辑部件、并行I/O口、串行I/O口、定时器/计数器、中断系统等功能模块的工作。 外部数据存储器地址范围0000H~FFFFH,64KB,又称为外部数据RAM,当单片机内部128个字节的数据RAM不能满足系统工作的需要时,可以通过它的外部总线扩展外部数据存储器。

3、位地址7CH和字节地址7CH有何区别?位地址7CH具体在内存中什么位置?

答:字节地址7CH是片内数据存储器中的一个地址单元,该地址单元中可以存放8位二进制数,位地址7CH是内部数据存储器中位寻址区中的一位,该地址单元中可以存放1位二进制数。位地址7CH具体在片内数据存储器字节地址为2FH中的第4位(2FH.4)。

4. 分别说明程序计数器 PC 和堆栈指针 SP 的作用?复位后 PC和 SP 中值各为何?

答: 程序计数器 PC 时一个 16 位的计数器,其内容为将要执行下一条指令的首地址, PC 寻址范围达 64KB, 具有自动加 1 功能,以实现程序的顺序执行。PC 不可寻址,无法对它进行读写。堆栈指针 SP 的内容就是堆栈栈顶的存储单元地址,向堆栈中每存一个数,SP 中的值就自动加 1,每取一个数就自动减 1,SP始终指在栈顶地址。复位后 PC为0000H和 SP 为07H。

5、程序状态字寄存器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):奇偶校验位。

6、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU在操作中要使用两组工作寄存器,SP应该多大?

答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00H~1FH为工作寄存器区,20H~2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。

7、MCS-51的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负载。

(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口相同,常用第二功能。

8、为什么说单片机的P1和P3端口是静态I/O端口,而P2端口是动态I/O端口,用P2端口输出一个字节数据,在端口线上能得到数据么?

9、MCS-51的并行I/O信息有哪两种读取方法?读改写操作是针对并行I/O口的那一部分进行的?有何优点? 答:读引脚和读锁存器。锁存器。

对“读改写”指令,不直接读引脚而读锁存器,是为了避免可能出现的错误。因为在端口已处于输出状态的情况下,如果端口引脚正好驱动一个晶体管基极,导通了的PN结就会把引脚的高电平拉低,这时若直接读端口引脚,将会把原输出的数据“1”误读成“0”。但是,如果从锁存器来读取数

据,由于原输出数据在锁存器中已被锁存,即使引脚电平发生变化,也不会出现上述可能的错误。

10、若采用6MHz的晶振,8051的振荡周期和机器周期分别是多少微秒?一条单字节双周期指令的指令周期为多少微秒?

答:6-1us;2 us;4 us 第三章 一、填空 1、指令

2、111;单;双;三 3、7

4、操作数;A;B;DPTR 5、操作数;地址;R0;R1;DPTR 6、直接

7、DPTR;PC;A;程序存储器 8、DPTR;SP;MOVX 9、直接;立即 10、80H 11、68H 12、68H

13、62H;68H;36H

14、41H;39H;88H 15、BFH ;0;0;0 16、2EH;1;1;0 17、26H;1

18、90H;06H;0;1 19、10H;03H;0;0 20、00H;96H 二、选择

1、④ 2、③ 3、④ 4、②

2.要访问一特殊功能寄存器和外部数据存储器应分别采用哪种寻址方式?

答:直接寻址方式、寄存器寻址可用于访问特殊功能寄存器,位寻址方式可对特殊功能寄存器中的可位寻址位进行寻址。外部数据存储器应采用寄存器间接寻址方式。 5.请写出能完成每一种操作的指令序列

①将R0的内容传送到R1 MOV A R0 MOV R1 A

②.将内部RAM20H单元的内容传送到R7 MOV R7 20H

③.将外部RAM1000H单元的内容传送到内部RAM30H单元 MOV DPTR #1000H MOVX A @ DPTR MOV 30H A

④.将外部RAM1000H单元的内容传送到R1 MOV DPTR #1000H MOVX A @ DPTR MOV R1 A

6.阅读下面的程序。要求:说明程序的功能; 写出涉及的寄存器及片内RAM单元的最后结果

答:该程序是将内部RAM40H中的内容与41H的内容相加,和放在43H,42H中。指令执行后:A的内容为01H,42H的内容为5AH,43H的内容为01H。

7、假设在内RAM30H和31H中存放有一个16位的无符号二进制数(高字节在高地址单元),请编写程序对该数乘2,再放回原单元。

ORG 1000H

START:MOV A 30H; MOV B #2; MUL AB;

MOV 30H A; MOV 32H B; MOV A 31H; MOV B #2; MUL AB;

ADD A 32H; MOV 31H A; END

8、写出16位数相加程序,设被加数存放在内RAM20H,21H单元,加数存放在22H,23H单元,并将结果存放在后续单元24H、25H中(要求低位数存放在低地址单元中)。

ORG 1000H START: CLR C MOV A 20H; ADD A 22H; MOV 24H A; MOV A 21H; ADDC A 23H; MOV 25H A; END

9、试编写程序:采用“与”运算,判断内RAM 20H单元的8位二进制数是正数还是负数。试根据30H中的值编写程序判断20H单元中数的两种情况,在30H中存放?0?代表正数,存放?1?代表负数。

ORG 1000H; MOV A #80; ANL A 20H; JZ NEXT0; MOV 30H #1; SJMP NEXT1; NEXT0: MOV 30H #0; NEXT1: SJMP $ END

10、从内RAM40H单元开始的区域内存有10个单字节十进制数(压缩的BCD码)试求它们的累加和,并将结果存放在内部RAM20H和21H单元中。

ORG 1000H

START: MOV R1 #40H; MOV R2 #10; MOV 20H #0; MOV 21H #0; CLR C

LOOP : MOV A @R1; ADD A 20H; DA A ;

MOV 20H A; MOV A 21H; ADDC A #0; MOV 21H A; INC R1;

DJNZ R2 LOOP; SJMP $ END

11、编写程序,将内RAM从20H开始存放的16个数传送到从18H开始的单元中。

ORG 1000H MOV R0 #20H; MOV R1 #18H; MOV R2 # 16; LOOP: MOV A @R0; MOV @R1 A; INC R0; INC R1;

DJNZ R2 LOOP; SJMP $ END

12、编写程序,将内RAM从20H开始存放的16个数传送到从28H开始的单元中。

ORG 1000H

START :MOV R0 #2FH; MOV R1 #37H; MOV R2 # 16; LOOP: MOV A @R0; MOV @R1 A; DEC R0; DEC R1;

DJNZ R2 LOOP; SJMP $ END

13、编写程序,将片外RAM从2000H开始存放的8个数传送到片内RAM从30H开始的单元中。

ORG 1000H

MOV DPTR #2000H; MOV R1 #30H; MOV R2 # 8; LOOP: MOVX A @DPTR; MOV @R1 A; INC DPTR; INC R1;

DJNZ R2 LOOP; SJMP $ END

14、已知从外部RAM 0040H单元开始存放有20个无符号数,试编制程序,将该数据块搬移到外部RAM从0060H单元开始的存储区域内。

ORG 1000H

MOV DPTR #0040H; MOV R0 #60H; MOV R2 #20; LOOP1: MOVX A @DPTR; MOVX @R0 A; INC R0; INC DPTR;

DJNZ R2 LOOP1; SJMP $ END

第四章

一、填空 1. 保护;恢复 2. 机器语言

3. 0500H;0505H;01H;0507H

3. 求连续存放在20H中的8个单字节无符号数之和,并求其平均值存放在R2中

解: ORG 0200H MOV R7,#07H

MOV R3,#0 MOV A, 20H MOV R0, #21H CLR C

LOOP: ADD A, @R0

JNC NEXT

INC R3

NEXT: INC R0 DJNZ R7, LOOP MOV 51H, R3 MOV 50H, A MOV R2,#03H LOOP1: CLR C

MOV A, 51H

RRC A

MOV 51H,A MOV A, 50H

RRC A MOV 50H, A DJNZ R2,LOOP1 MOV R2, 50H

4. 设内部RAM从21H单元开始存有一组带符号数,数据长度存于20H单元,要求把改组中正数,负数分别求和,并存放在寄存器R6和R7中。

MOV R0, #21H MOV R1, 20H CLR C

MOV R7, #00H MOV R6, #00H LOOP: MOV A, @R0

JB ACC.7, STEP ADD A, R6 MOV R6, A INC R0 SJMP HERE

STEP: ADD A, R7 MOV R7, A INC R0 HERE: DJNZ R1, LOOP END

5. 设内部RAM从LIST单元开始存有一组符号数据,数据个数为30,变成找出其中的最大数,并存入BIG单元中。

解: LIST EQU 42H

BIG EQU 41H ORG 0000H

MOV R0, #LIST MOV BIG, @R0 MOV R2, #30 DEC R2 NEXT: INC R0

MOV A , @R0

CJNE A , BIG , COMP COMP: JC CON

MOV BIG, A CON: DJNZ R2, NEXT RET

6.设内RAM从20H单元开始存有40H个无符号数,试编制程序将它们按从大到小的顺序排列,结果仍存放在原存贮区域内。

ORG 0000H

LJMP MAIN ORG 0100H MAIN: MOV R1,#20H

MOV R2,#39 CLR 10H

LOOP1: MOV A,@R1 INC R1

MOV 70H,@R1 CJNE A,70H,LOOP2

LOOP2: JNC LOOP3 MOV @R1,70H DEC R1

MOV @R1,A INC R1 SETB 10H LOOP3: DJNZ R2,LOOP1

JB 10H,MAIN SJMP END

7. 编写程序把累加器A中的二进制数变换成3位BCD码,并将百位,十位和个位BCD码分别放在内RAM50H,51H和52H单元。

MOV B , #10 DIV AB

MOV 52H , B

MOV B , #10 DIV AB

MOV 51H , B MOV 50H , A RET

8.手工汇编下列程序段:

ORG 1200H Lab EQU 1400H

1200 E5 35 MOV A 35H 1202 C3 CLR C

1203 94 0A SUBB A #0AH 1205 40 09 JC Lab2

1207 E5 36 MOV A 36H 1209 40 02 JC Lab1 120B *1 1400(81 00) AJMP Lab

120D 75 35 00 Lab1: MOV 35 1210 30 02 05 Lab2: JNB 02H 1213 AE 39 MOV R6 39H 1215 1E DEC R6 1216 80 04 SJMP Lab4

1218 AE 39 Lab3:MOV R6 39H 121A 05 39 INC 39H

121C C2 01 Lab4:CLR 01H 121E 02 32 00 LJMP 3200H 1221 END

第五章

一、填空 1. 共享

#00 Lab3 2. 外部

3. PC;PC;外部中断0矢量地址 4. 外部中断0 5. 电平;边沿 二、选择

1. ②2. ③3. ④4. ①5. ③6. ④7. ②8. ② 三、编程

3.试编写一段对中断系统初始化程序,要求允许外部中断0(电平触发)、T0中断、串行口中断,且使T0为高优先级中断。

ORG 0000H AJMP MAIN ORG 0003H ; AJMP IT_0 ORG 000BH ; AJMP IT_T0 ORG 0023H ; AJMP IT_S ORG 0100H ; MAIN: ? ; SETB EXO ; CLR ITO ; SETB ET0 ; SETB ES ; SETB EA ; SETB PT0 ; ? ;

IT_0: ? ; IT_T0: ? ; IT_S: ? ; END

第六章

一、填空 1. 16;4;3

2. 中断标志位;查询标志位 3. 32768us 二、选择 1. ③2. ④

本文来源:https://www.bwwdw.com/article/571d.html

Top