《单片机原理及应用》习题及答案

更新时间:2024-04-25 23:38:01 阅读量: 综合文库 文档下载

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

绪论 习题参考答案

0-1 什么是单片机?它与一般微型计算机在结构上何区别?

答:单片微型计算机简称为单片机(Single Chip Computer),又称为微控制器(MCU即Micro-Controller Unit)。它是在一块芯片上集成了中央处理器(CPU)、存储器(RAM、ROM)、定时器/计数器、中断控制、各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等为一体的器件。

微型计算机的基本结构由CPU(运算器、控制器)、存储器、输入设备和输出设备五大部分组成,各部分通过外部总线连接而成为一体。单片机的结构是在一块芯片上集成了中央处理器(CPU)、存储器、定时器/计数器、中断控制、各种输入/输出接口(如并行I/O口、串行I/O口和A/D转换器)等,它们通过单片机内部部总线连接而成为一体。

0-2 MCS-51系列单片机内部资源配置如何?试举例说明8051与51兼容的单片机的异同。

答:MCS-51系列单片机内部资源配置 型号 程序存储片器 8031/80C31 无 内定时/并行串行中断源/中断优口 1 1 1 先级 5/2 5/2 5/2 RAM 计数器 I/O口 128B 128B 128B 2×16 2×16 2×16 4×8 4×8 4×8 8051/80C51 4KB ROM 8751/87C51 4KB EPROM 8032/80C32 无 256B 256B 3×16 3×16 4×8 4×8 1 1 6/2 6/2 8052/80C52 4KB ROM

8051与51兼容的单片机的异同 厂商 型号 程序存片内定时/并行串中断源I/O口 行口 /优先级 其它特点 计数 储器 RAM 器 Intel 8051/80C4KB 51 ROM 128B 2×16 128B 2×16 4×8 1 5/2 ATMEL AT89C202KB 51 Flash ROM 15 1 6/2 直接驱动LED输出,片上模拟比较器 AT89S53 12KB Flash ROM 256B 3×16 32 1 9/2 SPI,WDT,2个数据指针 W77E58 32KB Flash ROM 256B3×+ 1024B 16 36 2 12/2 扩展了4位I/O口,双数据指针,WDT。 AnaloADuC818KB g Devices 飞利80C552 浦 无 2 256B2×16 32 1 9/2 WDT,SPI ,8通道12位ADC,2通道12位DAC,片上DMA控制器。. EEPRO+ M 640B 256B 3×16 48 1 15/4 CMOS型10位ADC,捕捉/比较单元,PWM 83/87C558KB 2 EEPROM 256B 3×16 48 1 15/4 CMOS型10位ADC,捕捉/比较单元,PWM 83/89CE32KB 558 256B3×16 40 1 15/4 8通道10位ADC,捕捉/比较单元,PWM,双数据指针,I2C总线,PLL(32kHz)。 EEPRO+ M 1024B 83C592 16KB 256B3×16 48 2 15/2 CMOS型CAN微控制器 EEPRO+ M 256B 32 2 8/4 40MHz, SPI,双数据指针,WDT。 SST SST89E532KB+81KB 3×54 KB Flash ROM TI MSC1214KB+20Y2 KB Flash ROM 英特87C54 尔 16KB EPROM 256B 3×16 256B 3×16 12803×B 16 16 32 2 21 32位累加器,WDT,SPI,低电压检测,16位PWM。 32 1 7/4 具有帧错误检测的可编程串口。 83/87C518KB GB EPROM 48 1 15/4 PWM,WDT,8通道8位ADC,具有帧检测和识别的串口。

第1章MCS-51单片机的结构与原理

1-1 MCS-51系列单片机内部有哪些主要的逻辑部件?

答: 一个8位CPU;一个片内振荡器及时钟电路;4K字节ROM程序存储器;128字节RAM数据存储器;两个16位定时器/计数器;可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;32条可编程的I/O线(四个8位并行I/O端口);一个可编程全双工串行口;具有五个中断源、两个优先级嵌套中断结构

1-2 MCS-51设有4个8位端口(32条I/O线),实际应用中8位数据信息由哪一个端口传送?16位地址线怎样形成?P3口有何功能?

答:实际应用中8位数据信息由P1口传送。16位地址线由P0口输出低8位地址A7~A0,P2口输出高8位地址A15~A8。P3口是一个多用途的端口,也是一个准双向口,作为第一功能使用时,其功能同P1口;当作第二功能使用时,P3.0—RXD串行输入(数据接收)口,P3.1—TXD串行输出(数据发送)口,P3.2—INT0外部中断0输入线,P3.3—INT1外部中断1输入线,P3.4—T0定时器0外部输入,P3.5—T1定时器1外部输入,P3.6—WR外部数据存储器写选通信号输出,P3.7—RD外部数据存储器读选通信号输入。

1-3 MCS-51的存储器结构与一般的微型计算机有何不同?程序存储器和数据存储器各有何作用?

答:MCS-51存储器结构与常见的微型计算机的配置方式不同,它把程序存储器和数据存储器分开,各有自已的寻址系统、控制信号和功能。

程序存储器用来存放程序和始终要保留的常数,如经汇编后所编程序的机器码。数据存储器通常用来存放程序运行中所需要的常数或变量,例如模/数转换时实时采集的数据等。

1-4 MCS-51内部RAM区功能结构如何分配?4组工作寄存器使用时如何选用?位寻址区域的字节地址范围是多少?

答:MCS-51系列单片机内部数据存储器:00H ~ 7FH单元组成的低128字节地址空间的RAM区,又分为为工作寄存器区(00H~1FH)、位寻址区(20H~2FH)和数据缓冲区(30H~7FH)。 80H ~ FFH(128 ~255)单元组成的高128字节

地址空间的特殊功能寄存器(又称SFR)区。对于8032、8052、8752的单片机还有80H~FFH单元组成的高128字节地址空间的RAM区。

4组工作寄存区是由程序状态字PSW(特殊功能寄存器,字节地址为0D0H)中的D4、D3位(RS1和RS0)来决定的。

PSW.4 (RS1) PSW.3 (RS0) 当前使用的工作寄存器区 R0~ R7 0 0 1 1 0 1 0 1 0区 (00~ 07H) 1区 (08~ 0FH) 2区 (10 ~ 17H) 3区 (18~ 1FH) 位寻址区域的字节地址范围是20H~2FH(对应的位地址范围是00H~7FH)。 1-5 特殊功能寄存器中哪些寄存器可以位寻址?它们的字节地址是什么? 答:P0字节地址80H,TCON字节地址88H,P1字节地址90H,SCON字节地址98H,P2字节地址A0H,IE字节地址A8H,P3字节地址B0H,IP字节地址B8H,PSW字节地址D0H,ACC字节地址E0H,B字节地址F0H。 1-6 简述程序状态字PSW中各位的含义。

答:CY(PSW·7)进位标志,AC(PSW·6)辅助进位标志,F0(PSW·5)用户标志位RS1、RS0(PSW·4、PSW·3)寄存器区选择控制位,OV(PSW·2)溢出标志,P(PSW.0)奇偶标志,每个指令周期都由硬件来置位或清“0”,以表示累加器A 中1的位数的奇偶数

1-7 一个时钟频率为6MHz的单片机应用系统,它的时钟周期、机器周期、指令周期分别是多少?

答:时钟周期=1/3us、机器周期=2us、指令周期=2us。 1-8 单片机有几种主要的工作方式?其特点各是什么? 答:有复位、程序执行、低功耗三种主要工作方式。

复位操作是单片机的初始化操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作,复位操作后,程序将从0000H开始重新执行。

单片机的程序的执行过程分为取指令、译码、执行三个过程。 待机方式,也称为空闲工作。系统进入待机工作方式时,振荡器继续工作,中断系统、串行口以及定时器模块由时钟驱动继续工作,但时钟不提供给CPU。单片机进入掉电工作方式,只有内部RAM单元的内容被保存,其它一切工作都停止。

1-9 堆栈有何功能?堆栈指针的作用是什么?二者的关系?为什么在程序设计时,要对SP重新赋值?

答:堆栈的主要功能:保护断点和程序现场,保存用户数据。

堆栈指针的作用是:堆栈指针SP是一个8位特殊功能寄存器,指示出堆栈顶部在内部RAM中的位置。

两者的关系:堆栈指针SP给定当前的栈顶,SP的初始值越小,堆栈深度就越深。

系统复位后,SP初始化为07H,使得堆栈事实上由08H 单元开始。考虑到08H~1FH单元分属于工作寄存器区1~3,若程序设计中要用到这些区,则最好把SP值改置为1FH或更大的值如60H,SP的初始值越小,堆栈深度就越深,堆栈指针的值可以由软件改变,因此堆栈在内部RAM中的位置比较灵活。

第2章MCS-51指令系统

习题参考答案

2-1 判断下列指令的正误:

1)MOV 28H,@R2 2)DEC DPTR 3)INC DPTR 4)CLR R0 5)CPL R5 6)MOV R0,R1 7)PUSH DPTR 8)MOV F0,C 9)MOV F0,ACC.3 10)MOVX A,@R1 11)MOV C,30H 12)RLC R0 答:错、错、对、错

错、错、错、对 错、对、对、错 2-2 判断下列说法是否正确。

A、 立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。 B、 指令周期是执行一条指令的时间。 C、 指令中直接给出的操作数称为直接寻址。 答:对、对、错

2-3 在基址加变址寻址方式中,以( )作变址寄存器,以( )或( )作基址寄存器。

答:累加器A,DPTR、PC

2-4 指令格式是由( )和( )所组成,也可能仅由( )组成。 答:操作码、操作数、操作码

2-5 设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值?

MOV A,59H ;A=50H MOV R0,A ;R0=50H MOV A,#00H ;A=00H MOV @R0,A ;50H=00H MOV A,#25H ;A=25H MOV 51H,A ;51H=25H MOV 52H,#70H ;52H=70H

答:A=25H R0=50H 50H=00H 51H=25H

2-6 访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。 答:访问外部数据存储器指令有:

MOVX @DPTR,A MOV DPTR,#0100H MOV @DPTR,A MOVX A,@DPTR MOV DPTR,#0200H MOV A,@DPTR MOVX A,@Ri MOVX A,@R0 MOVX @Ri,A MOVX @R1,A 访问程序存储器指令有: MOV A,@A+PC

MOVC A,@A+DPTR

2-7 设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?

PUSH 30H ;61H=24H

PUSH 31H ;62H=10H SP=62H POP DPL ;DPL=10H

POP DPH ;DPH=24H SP=60H MOV 30H,#00H ;30H=00H MOV 31H,#0FFH ;31H=0FFH

2-8 设(A)=40H,(R1)=23H,(40H)=05H。执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?

XCH A,R1 ;A=23H R1=40H XCHD A,@R1 ;A=25H 40H=03H

2-9 两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元中(千位、百位在低地址中,十位、个位在高地址中),和存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。

ORG 0000H LJMP START ORG 0100H

START: MOV A,53H ADD A,51H DA A MOV 55H,A MOV A,52H ADDC A,50H DA A MOV 56H,C SJMP $ END

2-10 设(A)=01010101B,(R5)=10101010B,分别写出执行下列指令后结果。

ANL A , R5 ; 00000000B ORL A , R5 ; 11111111B XRL A , R5 ; 11111111B

2-11指令SJMP rel中,设rel=60H,并假设该指令存放在2114H和2115H单元中。当该条指令执行后,程序将跳转到何地址?

答: 2116H+60H=2176H

2-12 简述转移指令AJMP addr11、SJMP rel、 LJMP addr16及JMP @A+DPTR的应用场合。

答:AJMP addr11 为2K字节范围内的无条件转跳指令,把程序的执行转移到指定的地址。SJMP rel是无条件转跳指令,执行时在PC加2后,把指令中补码形式的偏移量值加到PC上,并计算出转向目标地址。转向的目标地址可以在这条指令前128字节到后127字节之间。

LJMP addr16执行这条指令时把指令的第二和第三字节分别装入PC的高位和低位字节中,无条件地转向指定地址。转移的目标地址可以在64K程序存储器地址空间的任何地方,不影响任何标志。

JMP @A+DPTR 指令的功能是把累加器中8位无符号数与数据指针DPTR中的16位数相加,将结果作为下条指令地址送入PC,利用这条指令能实

现程序的散转。

2-13 试分析下列程序段,当程序执行后,位地址00H,01H中的内容将为何值?P1口的8条I/O线为何状态?

CLR C ;CY=0 MOV A,#66H ;A=66H JC LOOP1

CPL C ;CY=1 SETB 01H ;20H.1=1 LOOP1: ORL C, ACC.0 ;CY=1 JB ACC.2,LOOP2 ; CLR 00H

LOOP2: MOV P1,A ;P1=01100110B SJMP $

20H.0=0 20H.1=1 P1=66H

2-14 查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。

MOV 58H,80H

85(80)(58) 直接寻址字节送直接寻址字节: 汇编时源操作数在目标操作数之前。

MOV 58H,#80H

75(58)(80) 立即数送直接寻址字节: 汇编时目标操作数在原操作数之前。

第3章汇编语言程序设计基础

习题参考答案

3-1 什么是单片机的程序设计语言。

答:单片机的程序设计语言是指计算机能理解和执行的语言,人与CPU、MCU交流的语言。MCS-51系列单片机的程序设计语言,按照语言的结构及其功能可以分为三种:机器语言、汇编语言、高级语言。 3-2 单片机的程序设计包括哪几个步骤。 答:程序设计步骤如下:

(1) 分析问题。即仔细分析任务书中要实现的功能和性能指标。 (2) 确定算法。即找到解决问题思路、方法。

(3) 分配内存单元。即确定数据结构。这一步往往与算法同时考虑。 (4) 根据算法和数据结构,画出程序流程图。

(5) 根据流程图编写汇编语言源程序。编辑录入,保存为*.ASM文件。 (6) 汇编。排除语法错误。

(7) 调试(DEBUG)。找出错误并更正,再调试,直至通过。 (8) 编写相关说明文档。

3-3 画出单片机的三种基本程序结构。 答:

A B 是 条件成立吗? 否 条件成立吗? 是 否 A B A

顺序结构流程图 分支结构流程图 循环结构流程图

3-4 单片机的分支结构程序指令有哪几条?

答:分支结构程序指令有JB、JNB、JC、JNC、JZ、JNZ、CJNE、JBC 3-5 什么是单片机的程序嵌套?生活中有哪些现象与单片机的嵌套类似? 答:一个程序中还会调用别的程序,这称为程序嵌套。

生活例子:在学习,有电话了,去接电话,水开了,放下电话去关掉电水壶,接着打电话,打完电话,接着学习。

3-6 能否从一个子程序内部使用转移指令直接跳转到另一个子程序执行? 答:可以,为了保证正确地从子程序2返回子程序1,再从1返回主程序,每次调用子程序时必须将下条指令地址保存起来,返回时按后进先出原则依次取出旧PC值。

3-7 能否使用转移指令从主程序跳到子程序?

答:不可以,当主程序需要执行某子程序的功能时,只需执行一条调用指令。而并非使用转移指令

3-8 能否使用转移指令从子程序跳到主程序?

答:不可以,子程序的最后一条指令应该是返回指令RET或RETI,以确保子程序能够正确返回主程序。执行RET指令时单片机将原来存在堆栈中的断点地址弹出给PC,保证子程序返回主程序中调用子程序的地方继续执行主程序。 子程序从子程序的标号开始,到RET或RETI指令结束。 RET指令是一般子程序的返回指令。 RETI指令是中断服务子程序的返回指令。

3-9已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后:

POP POP

DPH DPL

MOV DPTR,#3000H RL

A

MOV B,A

MOVC A,@A+DPTR PUSH A MOV A,B INC

A

MOVC A,@A+DPTR PUSH A RET

ORG DB

3000H

10H,80H,30H,80H,50H,80H

请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( )。 答:A=80H , SP=40H , (51H)=50H , (52H)=80H , PC=8050H

3-10计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为 12MHz)。

MOV R3,#15H

;1个机器周期

DL1:MOV R4,#255 DL2:MOV P1,R3

DJNZ R4,DL2 DJNZ R3,DL1 RET

;1个机器周期 ;2个机器周期 ;2个机器周期 ;2个机器周期

;2个机器周期

答:由于((2+2)×255+1+2)×15+1+2=15348us 3-11 子程序的规范化设计包括那几个部分? 答:子程序的规范化设计包括:

(1) 子程序名称。给子程序起名字,起名的原则是子程序名能够反映子程序功能,该名字就是子程序的入口地址标识符。

(2) 子程序功能,对子程序的功能给予简要的描述。

(3) 入口参数,子程序所要运算或处理的数据(加工前的原料),在调用子程序之前,主程序要先准备好入口参数。

(4)出口参数,子程序运算或处理的结果(加工完成的数据),子程序结束之前,最终结果(出口参数)存放在约定的RAM单元,供主程序取用。

(5) 资源占用情况,指出该子程序运行时所使用的片内工作寄存器(R0~R7)、SFR(特殊功能寄存器)、片内RAM单元及片外RAM单元,以便在主程序调用该子程序之前,考虑将这些资源中的哪些字节保护入栈。

3-12 在片内RAM地址40H到4FH的存储单元中存有16个无符号数,找出其中

的最大值,放入50H单元,请用“循环结构”和“分支结构”编程。 答:流程图: 源程序:

ORG 0000H LJMP MAIN ORG 0100H MAIN:

MOV R2,#0FH MOV R0,#40H MOV A,@R0 SUB: INC R0

结束 Y 开始 初始化: R2=15赋判断次数,R0指针指向40H单元 指针加1 B @R0+1 判断A>B? N A 中放大值 Y N R2-15=0? A 50H MOV B,@R0 CJNE A,B,NEXT NEXT: JC NEXT1 DJNZ R2,SUB

JMP LAST NEXT1: MOV A,B DJNZ R2,SUB JMP LAST LAST:

MOV 50H,A

SJMP $

3-13 将片内若干个RAM单元的内容复制到片外RAM单元,请用“主程序”调用“子程序”编程,要求子程序入口参数为:R0存放片内RAM起始地址,DPTR存放片外RAM起始地址,R1存放字节数。请分别编写主程序和子程序。 答:流程图

主程序 子程序

返回 结束 初始化常数 R0←40H

R0单元送DPTR 开始 开始 DPTR←0200H R1←10H 指针加1 调用复制子程序 R1-1=0?

源程序: ORG 0000H LJMP MAIN ORG 0100H MAIN:

MOV R1,#10H MOV R0,#40H MOV DPTR,#0000H LCALL COPY SJMP $ COPY:

NEXT: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPL DJNZ R1,NEXT RET

3-14若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,

执行指令如下:

2000H LCALL LABEL

后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL 直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?

答:1)SP=SP+1=61H

SP=SP+1=62H 2)PC=3456H 3)可以

4)2KB=2048 Byte

(61H)=PC的低字节=03H (62H)=PC的高字节=20H

第4章 中断系统 习题参考答案

4-1外部中断1所对应的中断入口地址为( )H。

答:0013H

4-2下列说法错误的是:

A、 各中断发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中。 B、 各中断发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中。

C、 各中断发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中。 D、 各中断发出的中断请求信号,都会标记在MCS-51系统的TCON与SCON寄存器中。 答:ABC

4-3 中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是:

A、 当前正在执行高优先级中断处理 B、 当前正在执行RETI指令

C、 当前指令是DIV指令,且正处于取指令的机器周期 D、 当前指令是MOV 答:D

4-4 8031单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:

首先把( )的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送( ),使程序执行转向( ) 中的中断地址区。 答:PC、PC、程序存储器

4-5 编写出外部中断1为跳沿触发的中断初始化程序。

答:SETB IT1

SETB EX1 SETB EA

A,R3

4-6 在MCS-51中,需要外加电路实现中断撤除的是:

A、定时中断

B、脉冲方式的外部中断 D、电平方式的外部中断

C、外部串行中断 答:D

4-7 下列说法正确的是:

A、 同一级别的中断请求按时间的先后顺序响应。

B、 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。 C、 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。 D、 同级中断不能嵌套。 答:ACD

4-8中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?

答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断 4-9简述中断、中断源、中断源的优先级及中断嵌套的含义。

答: 当CPU正在处理某项事件的时,如果外界或内部发生了紧急情况,要求CPU暂停正在处理的工作转而去处理这个紧急情况,待处理完以后再回到原来被中断的地方,继续执行原来被中断了的程序,这样的过程称为中断。 向CPU提出中断请求的源称为中断源。

当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而CPU在一个时刻只能响应并处理中断优先高的请求。

在实际应用系统中,当CPU正在处理某个中断源,即正在执行中断服务程序时,会出现优先级更高的中断源申请中断。为了使更紧急的级别高的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,再返回到被中断了的中断服务程序继续执行,但级别相同或级别低的中断源不能中断级别高的中断服务,这就是所谓的中断嵌套。

4-10 MCS-51单片机能提供几个中断源?几个中断优先级?各个中断的源的优先级怎样确定?在同一优先级中各个中断源的优先级怎样确定?

答: MCS-51单片机能提供五个中断源,两个中断优先级。中断优先级是由片内的中断优先级寄存器IP(特殊功能寄存器)控制的。

PS:串行口中断优先级控制位。PS=1,串行口定义为高优先级中断源;PS=0,串行口定义为低优先级中断源。

PT1:T1中断优先级控制位。PT1=1,定时器/计数器1定义为高优先级中断源;PT1=0,定时器/计数器1定义为低优先级中断源。

PX1:外部中断1中断优先级控制位。PX1=1,外中断1定义为高优先级中断源;PX1=0,外中断1定义为低优先级中断源。

PT0:定时器/计数器0(T0)中断优先级控制位,功能同PT1。

PX0:外部中断0中断优先级控制位,功能同PX1。

在同一优先级中,循环轮流排队。不分级别高低,所有中断源优先级都一律平等,CPU轮流响应各个中断源的中断请求。 4-11 简述MCS-51单片机中断响应过程。

答:CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行查询。如果在前一个机器周期的S5P2有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。

4-12 MCS-51单片机外部中断有哪两种触发方式?如何选择?对外部中断源的触发脉冲或电平有何要求?

答:MCS-51单片机外部中断有:负边沿触发方式和电平触发方式。外部中断1(INT1)触发方式控制位。如果IT1为1,则外中断1为负边沿触发方式(CPU在每个机器周期的S5P2采样INT1脚的输入电平,如果在一个周期中采样到高电平,在下个周期中采样到低电平,则硬件使IE1置1,向CPU请求中断);如果IT1为0,则外中断1为电平触发方式。采用电平触发时,输入到INT1的外部中断源必须保持低电平有效,直到该中断被响应。同时在中断返回前必须使电平变高,否则将会再次产生中断。

4-13 在MCS-51单片机的应用系统中,如果有多个外部中断源,怎样进行处理?

答:当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而CPU在一个时刻只能响应并处理一个中断请求,为此,要进行排队。排队的方式有:

(1)按优先级排队。

(2)循环轮流排队。MCS-51单片机优先级比较简单,只有两级,可以通过优先级控制寄存器设置不同的优先级。当优先级相同时,约定有5个中断源优先级顺序由高到低分别为:外部中断0、定时器/计数器0溢出、外部中断1、定时器/计数器1溢出、串行口中断。

4-14 MCS-51有哪几种扩展外部中断源的方法?各有什么特点? 答:1) 利用定时器作为外部中断使用

特点:把MCS-51的两个定时器/计数器(T0和T1)选择为计数器方式,每当P3.4(T0)或P3.5(T1)引脚上发生负跳变时,T0和T1的计数器加1。可以把P3.4和P3.5引脚作为外部中断请求输入线,而定时器的溢出中断作为外部中断请求标志。

2)采用中断和查询相结合的方法扩充外部中断源

特点:这种方法是把系统中多个外部中断源经过与门连接到一个外部中断输入端(例如INT1),并同时还接到一个I/O口,中断请求由硬件电路产生,而中断源的识别由程序查询来处理,查询顺序决定了中断源的优先级。

4-15 MCS-51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推

迟对外部 中断请求的响应?

答:响应外部中断的典型时间是至少需要3个完整的机器周期。

1、外部中断INT0和INT1的电平在每个机器周期的S5P2时被采样并锁存到IE0和IE1中,这个置入到IE0和IE1的状态在下一个机器周期才被其内部的查询电路查询,未产生了一个中断请求。

2、没有满足响应的条件,CPU没有响应中断。

3、没有由硬件生成一条长调用指令转到相应的服务程序入口。

第五章 定时器/计数器及应用

习题参考答案

1. 8051单片机内设有几个可编程的定时器/计数器?它们可以有4种工作方式,

如何选择和设定?各有什么特点?

答:MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1

M1 M0:定时器/计数器四种工作方式选择

M1 M0 0 0 0 1 1 0 1 1 方 式 0 1 2 3 13位定时器/计数器 16位定时器/计数器 自动装入时间常数的8位定时器/计数器 对T0分为两个8位独立计数器;对T1置方式3时停止工作(无中断重装8位计数器) 特点 2. 如果采用晶振的频率为3MHz,定时器/计数器工作方式0、1、2下,其最大

的定时时间为多少? 答:因为机器周期Tcy?1212??4(?s), fOSC3?106所以定时器/计数器工作方式0下,其最大定时时间为

TMAX?213?TC?213?4?10?6?8.192(ms);

同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。

3. 8051单片机内的定时/计数器T0、T1工作在模式3时,有何不同? 答:方式3对定时器T0和定时器T1是不相同的。若T1设置为方式3,则停止工作。方式3只适用于T0。当T0设置为方式3时,将使TL0和TH0成为两个相互独立的8位计数器, TL0利用了T0本身的一些控制方式,它的操作与方式0和方式1类似。而TH0被规定为用作定时器功能,对机器周期计数,并借用了T1的控制位TR1和TF1。在这种情况下TH0控制了T1的中断。

4. 定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有

关?

答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。

5. 定时/计数器用作定时器时,对外界计数频率有何限制?

答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。

6. 定时器/计数器的工作方式2有什么特点?适用于什么应用场合?

答:方式2把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器,TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中。

方式2常用于定时控制,作串行口波特率发生器。

7. 定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时

钟频率为6MHz,求允许测量的最大脉冲宽度是多少? 答:采用方式1可得到最大量程。最大脉宽=2us×65536

8. THX与TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改

吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THX与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。但在读THX、TLX的值时,应该先读THX值,后读TLX,再读THX。若两次读得THX相同,则可确定读得的内容正确。若前后两次读得的THX有变化,再重复上述过程。

9. 定时器/计数器作为外部中断源使用时,需要如何初始化,以T0为例通过程序说明。 答: 初始化

MOV TMOD,#06H

MOV TL0,#0FFH MOV TH0,#0FEH SETB TR0 SETB EA

SETB ET0

10. 采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。 答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。编写程序如下:

ORG

0000H

LJMP MAIN ORG

000BH

LJMP IT0P

;定时器/计数器T0为计数方式2 ;计数100个脉冲的初值赋值

MAIN: MOV TMOD,#06H

MOV TL0,#156 MOV TH0,#156 SETB GATE SETB TR0 SETB ET0 SETB EA CLR

;打开计数门

;启动T0,开始计数

;允许T0中断 ;CPU开中断

;设置下一轮为定时方式的标志位

F0

WAIT: AJMP WAIT IT0P: CLR

JB

EA

;关中断

F0,COUNT ;F0=1,转计数方式设置

;定时器/计数器T0为定时方式0

MOV TMOD,#00H

MOV TH0,#0FEH ;定时1ms初值赋值 MOV TL0,#0CH SETB EA RETI

MOV TMOD,#06H

COUNT:

MOV TL0,#156 SETB EA RETI

11. 编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400μs,占空比为10:1的矩形脉冲。

答:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为363.63μs和36.37μs。如果系统采用6MHz晶振的话,Tcy?2?s,因此高低电平输出取整,则约为364μs和36μs。编写程序如下:

ORG

0000H

LJMP MAIN ORG

000BH

LJMP IT0P

;定时器/计数器T0为定时方式2

MAIN: MOV TMOD,#02H

MOV TL0,#4AH ;定时364μs初值赋值 SETB TR0 SETB ET0 SETB EA SETB P1.0

;启动T0,开始计数

;允许T0中断 ;CPU开中断

WAIT: AJMP WAIT IT0P: CLR

CLR

EA P1.0

;关中断

MOV R0,#9 DJNZ R0,DLY

;延时26μs

DLY:

MOV TL0,#4AH ;定时364μs初值赋值 SETB P1.0 SETB EA RETI

12. 已知单片机时钟振荡频率为6MHz,利用T0定时器,在P1.1引脚上输出连续方波,波形如下:

P1.1 解:计算定时常数: 100μs 150μs 100us 方式0 Tc=FE0E; 方式1 Tc=FFCE; 方式2 Tc=CE 150us 方式0 Tc=FD15; 方式1 Tc=FFB5; 方式2 Tc=B5 方法一:采用方式一,定时器中断。 开始 初始化T0,设置 工作方式 开T0中断, 设置标志位 20H.0 开定时器T0, P1.1=1 等待中断 主程序流程图源程序:

ORG 0000H LJMP START ORG 000BH LJMP TINT0 ORG 0100H START: MOV TMOD,#01H MOV TL0,#0CEH MOV TH0,#0FFH SETB TR0 SETB EA SETB ET0 SETB 20H.0 SETB P1.1

开始 Y N 20H.0=1? T0赋初值150us T0赋初值100us P1.1=0 P1.1=1 取反20H.0 取反20H.0 中断返回 中断返回 中断子程序流程图

SJMP $ TINT0:JNB 20H.0,NEXT MOV TL0,#0B5H MOV TH0,#0FFH CLR P1.1 CPL 20H.0 SJMP LAST NEXT: MOV TL0,#0CEH MOV TH0,#0FFH SETB P1.1 CPL 20H.0 LAST:RETI

方法二: 采用方式2 定时器中断 加延时程序 源程序: ORG 0000H LJMP START

等待中断 返回 开定时器T0, P1.1=1 P1.1=0,关定时器 开T0中断, 设置标志位20H.0 调用50us延时 取反20H.0 P1.1=1 初始化T0,设置 工作方式 Y 20H.0=1? N 开始 开始 取20H.0,开定时器 返回 主程序流程图 中断子程序流程图 ORG 000BH LJMP TINT0 ORG 0100H START: MOV TMOD,#02H MOV TL0,#0CEH MOV TH0,#0CEH SETB TR0 SETB EA SETB ET0 SETB 20H.0 SETB P1.1 SJMP $

TINT0:JNB 20H.0,NEXT CLR TR0 CLR P1.1 LCALL DELAY CPL 20H.0 SETB TR0 SJMP LAST NEXT: SETB P1.1 CPL 20H.0 LAST: RETI DELAY: MOV R7,#8 DELAY1: DJNZ R7,DELAY1 RET

13. 一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定时?

答:方式一,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另

一个定时器。这种方式的定时时间为两个定时器定时时间的和。

方式二,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接INT0产生),另一个定时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。

14. 编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。

答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。编写程序如下:

ORG

0000H

LJMP MAIN ORG

000BH

LJMP IT0P

P1.0,MAIN

;定时器/计数器T0为计数方式1 ;启动T0,开始计数

MAIN: JNB

MOV TMOD,#05H

SETB TR0 SETB ET0 SETB EA

;允许T0中断 ;CPU开中断

WAIT: JB

CLR CLR

P1.2,WAIT

EA TR0

MOV R1,TH0 MOV R0,TL0 AJMP $

R2

IT0P: INC

RETI

第六章 单片机串行数据通信

习题参考答案

1. 波特率的含义是什么?

答:所谓波特率是每秒钟传送信号的数量,单位为波特(Baud )。 2. 什么是串行异步通信?它有哪些特征?

答:串行异步通信就是通信时接收器和发送器有各自的时钟。

特征:异步通信的优点是不需要传送同步脉冲,可靠性高,所需设备简单,缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率 3. 串行数据传送的主要优点和用途是什么?

答:串行数据传送的主要优点是硬件接口简单,接口端口少(2个)。主要用于多个单片机系统之间的数据通信。

4. 单片机的串行接口由哪些功能部件组成?各有什么作用?

答:MCS-51单片机串行口主要由两个物理上独立的串行数据缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。

作用:SBUF为串行口的收发缓冲寄存器,它是可寻址的专用寄存器,其中包含了发送寄存器SBUF (发送)和接收寄存器SBUF (接收),可以实现全双工通信。

5.简述串行口接收和发送数据的过程。

答:发送:发送操作是在TI=0下进行的,此时发送缓冲寄存器“SBUF(发送)”相当于一个并入串出的移位寄存器。CPU 通过指令MOV SBUF,A ,将数据写入“SBUF(发送)”,立即启动发送,将8 位数据以设定波特率从RXD 输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位,并可向CPU 发出中断请求。

接收:接收过程是在RI=0且REN=1条件下启动的,此时接收缓冲寄存器“SBUF (接收)”相当于一个串入并出的移位寄存器。接收时,先置位允许接收控制位REN,此时,RXD为串行数据输入端。当RI=0 和REN=1 同时满足时,开始接收。当接收到第8 位数据时,将数据移入接收缓冲寄存器“SBUF(接收)” ,并由硬件置位RI ,同时向CPU 发出中断请求。CPU 查到RI=1 或响应中断后,通过指令MOV A,SBUF,将“ SBUF (接收)”接收到的数据读入累加器A 。

6. 串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

答:方式0、1、2、3. 8帧 10帧 11帧 三种格式。 波特率:

① 方式0的波特率固定为系统晶振频率的1/12 ,其值为fosc/12 。其中,fosc为系统主机晶振频率。

② 方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:

波特率?(2SMOD/64)?fosc

即:当SMOD =l 时,波特率为fosc/32;当脚SMOD=0时,波特率为fosc/64。 ③ 方式1 和方式3 的波特率由定时器Tl 的溢出率控制。因而波特率是可变的。

定时器TI 作为波特率发生器,相应公式如下:

2波特率=(SMOD32)?定时器T1溢出率

T1溢出率=T1计数率/产生溢出所需的周期数

=(fosc/12)/(2?TC)

式中K:定时器T1的位数,K的值等于8、13、16;TC:定时器T1的预置初值。

7. 假定串行口串行发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位,请画出传送字符“A”的帧格式。 起始位0 1 0 0 0 0 0 0 校验位 停止位

8. 为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位(1)? 答:串行口的方式0为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个MCS-51之间的串行通信。该方式以fosc/12的固定波特率从低为位到高位发送或接受数据。

9.为什么定时器/计数器T1用做串行口波特率发生器时,采用方式2?若已知时钟频率、通讯波特率,如何计算其初值?

答:因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率

k

发生器设置时,就避免了重装参数的操作。

fOSC2SMOD已知时钟频率、通讯波特率,根据公式:波特率=,计算?3212?(256?X)出初值。

10.简述利用串行口进行多机通信的原理。

答:单片机构成的多机系统常使串行口工作在方式2和方式3。(1)主机置SM2位为0,所有从机的SM2位置1 ,处于接受地址帧状态;(2)主机发送一地址帧,其中,8位是地址第9位为1表示该帧为地址帧;(3)所有从机收到地址帧后,都将接受的地址与本机地址比较,对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并将本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬;(4)从机发送数据后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志;(5)主机接收数据时先判断数据接收标志(RB8),若接收帧的RB8=0,则存储数据到缓冲区,并准备接受下帧信息。若RB8=1表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,命令该从机重发数据;(6)主机收到从机应答地址后,确认地址是否相符,若地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据;(7)从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。

11. 利用单片机串行口扩展24个发光二极管和8个按键,要求画出电路图并编写程序使24个发光二极管按照不同的顺序发光(发光的时间间隔为1S)。 答:

原理图如下所示:

12.若晶体振荡器为11.059MHZ,串行口工作方式1,波特率为4800b/s,写出用T1作为波特率发生器的方式控制字和技术初值。 答: MOV TMOD,#20H MOV TH1,#FAH MOV TL1,#FAH SETB TR1 MOV SCON,#50H

第七章 单片机的系统扩展

1. MCS-51单片机外部程序存储器和数据存储器地址范围都是0000H ~ FFFFH,在实际使用时如何区分?

答:访问(读)ROM(程序存储器)时,通过PSEN引脚有效选中程序存储器,PC指针指向程序存储器的地址指针。访问外部RAM(数据存储器),通过RD、

WR引脚有效选中数据存储器(DPTR为外部RAM存储器的地址指针)

2. 访问8051片外数据存储器MOVX指令采用的是 间接 寻址方式。访问片外程序存储器MOVC指令采用的是 基址加变址 寻址方式。 3. MCS-51单片机可以外接64KB的程序存储器和64KB数据存储器。这两种片外存储器地址重叠而不发生总线冲突,主要依靠单片机引脚上的那些信号来区分? 答:同1.

4.在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?

解:因为控制信号线的不同:外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为OE和WE。外扩RAM的读、写控制引脚分别与MCS-51的RD和WR引脚相连。

外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与MCS-51单片机的PSEN相连。 5..11根地址线可选多少个存储单元?16KB存储单元需要多少根地址线? 解:通过总结所学知识,我们得到以下几个信息:2KB的存储器需要11根地址线,地址为0000H-07FFH;4KB的存储器需要12根地址线,地址为0000H-0FFFH; 8KB的存储器需要13根地址线,地址为0000H-1FFFH;16KB的存储器需要14根地址线,地址为0000H-3FFFH;32KB的存储器需要15根地址线,地址为0000H-7FFFH;64KB的存储器需要16根地址线,地址为0000H-FFFFH(以上存储器的首地址均默认为0000H)。

6.试画出MCS-51系列8051最小应用系统的原理结构图。

答:8051最小应用系统如图所示。这种最小应用系统只要将单片机的时钟电路和复位电路接上,同时EA接高电平,系统就可以工作。此类应用系统只能用作

一些小型的控制单元。其应用特点是: (1)全部I/O口线均可供用户用。

(2)内部存储器容量有限(只有4KB地址空间)。 (3)应用系统开发具有特殊性。

+5V

C1 C2 C3

RESET

R

P3

XTAL1 8051

8751 XTAL2

P0 P1 P2

7.假设外部数据存储器2000H单元的内容为80H,执行下列指令后:

MOV MOV MOVX

P2,#20H R0,#00H A,@R0

累加器A中的内容为(80H)。

8.编写程序,将外部数据存储器中的4000H—40FFH单元全部清零。

解:本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了。

ORG

0000H A,#0

;送预置数给A ;设置循环次数 ;设置数据指针的初值 ;当前单元清零 ;指向下一个单元 ;是否结束

MAIN:

MOV MOV MOV MOVX INC

R0,#0FFH

DPTR,#4000H @DPTR,A DPTR

LOOP:

DJNZ END

R0,LOOP

9. 试编写一个程序(例如将05H和06H拼为56H),设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H。 解:本题主要考察了对外部存储器的读、写操作,同学们只要记住正确使用MOVX指令就可以了。编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。

ORG

0000H

MAIN:

MOV MOVX SWAP ANL

DPTR,#2001H A,@DPTR A

;设置数据指针的初值 ;读取2001H的值

;屏蔽掉低四位 ;保存A

;指针指向下一个 ;读取2002H的值 ;屏蔽掉高四位 ;进行拼装 ;保存到2002H

A,#0F0H 30H,A DPTR

MOV INC

MOVX ANL ORL

A,@DPTR A,#0FH A,30H

MOVX END

@DPTR,A

10. 给8031单片机扩展一片2716和6116,请画出系统连接图。 方法一:

地址自定:(其中一种解法如下) 设2716地址:0000H—07FFH 6116地址:0000H—07FFH (不用译码器)

D0~D7 P2.0~P2.2 8051 P0.0~P0.7 地址 锁存器373 G A8~A10 A8-A10 A0-A7 A0~A7 2716 6116 D0-D7 ALE

CE CE OE WE EA PSEN OE WR

方法二:采用部分译码 如: 2716的地址0000H—07FFH 6116的地址0800H—08FFH

方法三:采用全译码 如: 2716的地址0000H—07FFH 6116的地址0800H—08FFH

PSEN RD OE PSEN RD OE P2.5 P2.4 P2.3 +5V C B Y0 A 74LS 138 Y1 P2.2 P2.0—8051 P0.0~P0.7 ALE A8-A10 CE A8~A10 CE A0~A7 6116 D0~D7 地址锁存器 G A0~A7 2716 D0~D7 WE OE WR P2.5 P2.4 P2.3 P2.6 P2.7 P2.0-P28051 P0.0~P0.7 ALE +5V C B Y0 A 74LS 138 Y1 G G2A G2B A8-A10 CE A8~A10 CE A0~A7 6116 地址锁存器 G A0~A7 2716 D0~D7 D0~D7 WE OE WR 11. 如何构造MCS-51单片机扩展的系统总线?

12 根据图示的电路,把8155的PB口设置成输入方式,PA口设置成输出方式,并把PB口输入的数据与8031 P1口输入的数据相“异或”,结果从PA口输出。试写出满足此要求的程序。

(命令字格式:TM2 TM1 IEB IEA PC2 PC1 PB PA)

P0P2.7P2.0 8051 P2 P0 高八位地址线 地址锁 存器 G 低八位地址线 八位数据线

ALE RD RDWR WRPSEN 控制总线

AD0~AD7CEIO/MA80C31ALERDWRRESETEA8155ALERDWRRESETBCTIME INTIME OUT解:根据题意要求,可得8155的命令字为:01H;根据硬件电路8155的I/O端口地址可选为: 7F00H~7F05H。 程序如下:

ORG 2000H

MOV DPTR,#7F00H MOV A,#01H MOVX @DPTR,A MOV DPTR,#7F02H MOVX A,@ DPTR XRL A,P1

MOV DPTR,#7F01H MOVX @DPTR,A SJMP $ END

13.现有8031单片机、74LS373锁存器、1片2764EPROM和2片6116RAM,请使用他们组成一个单片机系统,要求: (1)画出硬件电路连线图,并标注主要引脚;

(2)指出该应用系统程序存储器空间和数据存储器空间各自的地址范围。 解:(1)电路图如下所示:

(2)2764的地址为C000H-DFFFH; 第一个6116的地址为A000H-A7FFH; 第二个6116的地址为6000H-67FFH;

事实上,由于采用的是线选法,导致了地址不连续,地址空间利用不充分。建议 在实际工作中要具体情况具体分析。在两种地址分配中选一种较好的来应用。

803129PSEN16WR17RD2764127VPP22PGM20OECEHM61162120WE18OECSHM61162120WE18OECSP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.02827262524232221U41922231234567819222312345678A10A9A8A7A6A5A4A3A2A1A0U5D7D6D5D4D3D2D1D0171615141311109ALE/P31130EA/VPU2OCP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.03233343536373839Q0Q1Q2Q3Q4Q5Q6Q7O7O6O5O4O3O2O1O0347813141718D0D1D2D3D4D5D6D7256912151619223212425345678910A12A11A10A9A8A7A6A5A4A3A2A1A0U31918171615131211A10A9A8A7A6A5A4A3A2A1A0U6D7D6D5D4D3D2D1D017161514131110911G74LS373

14.使用89C51芯片外扩一片E2PROM2864,要求2864兼作程序存储器和数据存储器,且首地址为8000H。要求: (1)确定2864芯片的末地址;

(2)画出2864片选端的地址译码电路; (3)画出该应用系统的硬件连接图。

解:(1)2864为8KB的存储器,如果首地址为8000H,则其末地址为9FFFH,理由参考第12题; (2)电路图如下所示:

80313029161728272625242322213233343536373839P2.7P2.6P2.5P2.5P2.6P2.7123645U1ABCG1G2AG2B74LS138Y0Y1Y2Y3Y4Y5Y6Y715141312111097ALE/PPSENWRRDP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0N1+5v31EA/VPU2

(3)电路图如下所示:

P2.5P2.6P2.78031+5vPSENWRRDP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.029161728P2.727P2.626P2.52524232221323334353637383934781314171811U4D0D1D2D3D4D5D6D7G74LS373Q0Q1Q2Q3Q4Q5Q6Q7OC2569121516191645G1G2AG2B74LS1382864N1272220223212425345678910WEOECEA12A11A10A9A8A7A6A5A4A3A2A1A0U31123U1ABCY0Y1Y2Y3Y4Y5Y6Y715141312111097N1READY3130EA/VPU2D7D6D5D4D3D2D1D0ALE/P1918171615131211

第八章 应用系统配置及接口技术

习题参考答案

1、设计用P1、P2口扩展4×4矩阵键盘、4位共阴极LED硬件电路。

2、 如何消除键的抖动?对于一般的小键盘来说,为什么不能双键或多键同时按下?

答:方法一:软件延时

方法二:硬件防抖动电路(R-S触发器)

因为单键按下,一个键只代表一个功能,当双键或多建同时按下时,程序视为非法按键。

(除按键不够用,扩展双键或多键同时按下的功能)

1K C D E F a b c d e f g dp P14 P15 P16 P17 7407×3 10K×4 +5V LED 8051 P13 8 9 A B P12 4 5 6 7 P11 0 1 2 3 P10 P20 P21 P22 P23 P24 P25 P26 P27 3、什么是LED数码显示器?它有几种接法?如何得到显示段码? 答:①施加电压有电流流过使之发光的二极管。

(一个发光二极管发光时电流约为10~20mA,管压降2.0V左右) 8个LED发光二极管封装在一起,组成一个8段码 ②8段码有两种接法按结构:共阳极,共阴极 按显示:动态显示,静态显示

③以共阴极为例,公共端接地,某段上加上高电平,则亮,否则灭,从而得到相应符号的段码。

4、说明单片机应用系统中LED显示器的两种显示方式?

答:常用LED显示方式有两种,即动态显示方式和静态显示方式。动态显示方式是指将待显示数据分时送到各显示位并保持一定时间,任何时刻只能有一位显示器通电,其他显示位靠余晖维持发光,因而动态显示方式需不断进行刷新。静态显示方式是指待显示数据分别送到显示器的各位,各显示位同时通电,因单片机的数据端口不能一直被占用,因而要求显示器与单片机数据端口之间有数据锁存功能的单元电路,即每一位LED输入端加一个锁存器,因而硬件电路比动态显示方式复杂,但不需要刷新,可以节省CPU的时间,显示数据可以一直维持到下一次更新。

5、 什么是D/A 转换器?

答:将数字信号变成模拟信号的器件。 6、 A/D 转换器DAC0809的编程要点是什么?

答:根据硬件连接电路和ADC0809的时序图,确定每个通道的地址,启动某路得ADC开始转换,利用软件延时,查询或中断的方式,读取转换结果值。 7、具有8 位分辨率的A/D转换器,当输入0~5V电压时,其最大量化误差是多少?

答:5/256=0.02V=20mV

8、简述行列式扫描键盘的工作原理。

答:行列式键盘是设置两组互相不连接的行线和列线,在行线与列线的交叉处设置一个按键开关,无按键时,行线与列线不连接,有按键时,行线与列线接通。3*3行列式键盘结构如下图所示。

图中列线通过电阻接+5V电源,当键盘上没有键闭合时,所有的行线和列线断开,列线Y0-Y2都呈高电平。当键盘上某一键闭合时,则该键盘锁对应的列线与行线短路。以4号键位例,当4号按键闭合时,行线X1和列线Y1短路,此时Y1的电平由行线X1决定。如果把列线接到微机的输入口,行线接到微机的输出口,则在程序的控制下,使行线X0位低电平,X1、X2都为高电平,则为低电平的列线与X0的交叉处的键处于闭合状态;否则X0这一行上没有键处于闭合状态,一次类推,最后使行线X2位低电平,其余的行线位高电平,检查X2这一行上是否有键闭合。这种逐列检查键盘状态的过程称位对键盘的一次扫描。CPU对键盘的扫描可以采用程序控制的随机方式,CPU空闲时扫描键盘,也可以采用定时工作方式,每隔一定的时间,CPU对键盘进行一次扫描。还可以采用中断方式,每当键盘上有键闭合时,向CPU请求中断,CPU响应键盘输入中断,对键盘扫描,以识别哪一个键处于闭合状态,并对键盘信息作出相应的处理。CPU对键盘上闭合键键号的确定,可以根据行线和列线的状态求得,也可查表求得。

9、设计单片机应用系统的显示部分,将片内RAM的30-35H单元(30H为最高位,35H为最低位)的6位非压缩BCD码显示在6位动态的LED显示器上。 (1)选择元器件; (2)画出原理电路图; (3)编程。

答:(1)结合原理图对所选的元件进行说明:选择8031单片机为控制核心,因而必须外扩程序存储器,图中未画出。图中扩展一片8255A作为显示器及键盘

接口,键盘部分未画出,图中LED为工阴极数码管,由于采用动态显示方式,因而需对LED进行刷新处理。 (2)原理图如下图所示:

(3)从图中可以看出,8255A的A口、B口、C口及控制口的地址分别是8000H-8003H。 程序清单如下:

EX9-11:MOV DPTR,#8003H;

10、利用DAC0832双缓冲器结构特性,设计一个接都电路并编制相应成粗,实现双路模拟信号同时输出。

答:(1)接口电路原理图如下,图中选用两片0832作为双路模拟信号输出转换器,1#0832第一级缓冲器地址为8000H, 2#0832第一级缓冲器地址为4000H,1#0832和2#0832第二级缓冲器地址为2000H,采用线选法。

(2)程序清单:

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

Top