1.单片机是把中央处理器、存储器、定时器/计数器以及I/O接口电路等主要计算机部件集成在一块集成电路芯片上的微型计算机。 2。除了单片机这一名称之外,单片机还可称为微控制器、嵌入式控制器。
3.计算机的系统总线有地址总线、控制总线和 数据总线。 4.80C51单片机基本型内部RAM有 128 个字节单元,这些单元可以分为三个用途不同的区域,一是工作寄存器区、二是位寻址区、三是数据缓冲区。
5.8051单片机有2 个16位定时/计数器.
6.单片机存储器的主要功能是存储程序和数据。80C51含4 KB掩膜ROM。
7.80C51在物理上有4个独立的存储器空间。
8.通常、单片机上电复位时PC= 0000H,SP= 07H;而工作寄存器则缺省采用第 00 组,这组寄存器的地址范围是从00H~ 07H。 9.8051的堆栈是向地址的高端生成的。入栈时SP先加1 ,再压入数据。
10.使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器.
11.MCS—51特殊功能寄存器只能采用直接寻址方式。
12.汇编语言中可以使用伪指令,它们不是真正的指令,只是用来对汇编过程进行某种控制。
13.半导体存储器的最重要的两个指标是 存储容量 和 存储速度 。 14.当PSW4=1,PSW3=0时,工作寄存器Rn,工作在第2组。 15.在8051单片机中,由 2 个振荡(晶振)周期组成1个状态(时钟)周期,由 6 个状态周期组成1个机器周期。
16.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器1031H单元的内容送累加器A中。
17.MCS-51单片机访问外部存储器时,利用ALE信号锁存来自P0口的低8位地址信号。
18.内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H。 19.若A中的内容为63H,那么,P标志位的值为0。
20.在基址加变址寻址方式中,以累加器A作变址寄存器,以DPTR或PC作基址寄存器。
21.指令格式是由操作码和操作数所组成,也可能仅由操作码组成。 22.通过堆栈操作实现子程序调用,首先就要把PC的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到PC.
23.MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为64KB。
24.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。
25.假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC
后,把程序存储器1031H单元的内容送入累加器A中。 26.12根地址线可寻址4 KB存储单元。
27.:假定A=55H,R3=0AAH,在执行指令ANL A,R3A=00H,R3=0AAH 。
28.MCS—51的P0口作为输出端口时,每位能驱动8个LSTTL负载。 29.MCS—51有4个并行I/O口,其中P1~P3是准双向口,所以由输出转输入时必须先写入“1\".
30.MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域.
31.若不用MCS-51片内存储器,引脚EA必须接地。
32.MCS-51在外扩ROM、RAM或I/O时,它的地址总线是P0、P2口. 33.MCS-51中凡字节地址能被8整除的特殊功能寄存器均能位寻址. 34.执行当前指令后,PC内容为下一条将要读取的指令码首地址. 35.当串口接收到一个数据,此时RI= 1,当串口发送完一个数据,此时TI= 1。
36.对于80C51无嵌套的单级中断,响应时间至少 3 个机器周期,最多 8 个机器周期。
37..晶振的频率为6MHz时,一个机器周期为2μS。 38。当允许定时器1工作在方式1时,控制字TMOD应为10H. 39.MCS—51单片机8031中有 2 个 16 位的定时/计数器,可以被设定的工作方式有四 种。
40.MCS-51单片机有5 个中断源,可分为2个中断优先级。上电复位
后,
时 外部中断0中断源的优先级最高。
41.用串行口扩展并行口时,串行接口的工作方式应选为方式0。 42.若某8位D/A转换器的输出满刻度电压为+5V,则D/A转换器的分辨率为5/255=0.0196V。
43.在串行通讯中,收发双方对波特率的设定应该是相等的。 44.单片机复位时P0的值为0FFH、PC为0000H。
45.外部中断1所对应的中断入口地址为0013H,T0中断服务程序入口地址为000BH.
46MCS—51系统中,当PSEN信号有效时,表示CPU要从程序存储器读取信息。
47.MCS-51片内20H~2FH范围内的数据存储器,即可以字节寻址又可以位寻址。
48.若用传送指令访问MCS—51的程序存储器,它的操作码助记符应为MOVC。
49.MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器SCON加以选择。
50.当使用慢速外设时,最佳的传输方式是中断.
51.当定时器T0工作在方式3时,要占用定时器T1的TR1和TF1两个控制位。
53.要串口为10位UART,工作方式应选为方式1. 54.用串口扩并口时,串行接口工作方式应选为方式0。
55.在串行通信中,有数据传送方向单工、半双工、全双工三种工作
方式。
56.MOV PSW,#10H是将MCS-51的工作寄存器置为第2组。 57.指令DJNZ R7,e操作码所在地址为3000H,e=EFH,则它的转移目的地址应为2FF1H。
58.累加器(A)=80H,执行完指令ADD A,#83H后,进位位C=1。 执行ANL A,#0FH指令后,累加器A的高4位=0000.
59.SJMP e 的指令操作码地址为0050H,e=65H,那么它的转移目的地址为00B7H。
60.设DPTR=2000H,(A)=80H,则MOVC A,@A+DPTR的操作数的实际地址为2080H。
61.十进制数—47用8位二进制补码表示为1101 0001。—19D的二进制补码表示为1110 1101。
三、判断题
3。51单片机只能做控制用,不能完成算术运算. ( x ) 5。判断寻址方式 (1).MOV A,11H, 是直接寻址.( √ )。 (2).MOV A, R0, 是寄存器寻址。( √ )。 (4).MOV A,@R0 是寄存器间接寻址( √ ). (5). MOV A,#11H 是立即数寻址(√ )。 6.下面几条指令是否正确:
(1)MOV @R1, 80H ( x ) (2)INC DPTR ( √ )
(4)MOV @R1,#80H ( √ ) (5)ANL R1,#0FH ( x ) (6)ADDC A,C ( x ) (7)XOR P1,#31H ( x ) 7。判断下面指令的运行结果 (1)MOV A,#11H ANL A,#FFH (A)= 11H (√ ) (2)MOV A,#11H
ORL A,#FFH (A)= 11H ( X )
8.累加器A中存放着一个其值小于等于127的8位无符号数,CY清“0\"后执行RLC A指令,则A中数变为原来的2倍。( √ )
9.必须有中断源发出中断请求,并且CPU打开中断,CPU才可能响应中断.( √ ) 10。E2PROM不需紫外线能擦除,如2816在写入时就能自动完成擦除。( √ 13.指令AJMP的跳转范围是1KB。( x )
16。A/D转换器的作用是将模拟量转换为数字量;D/A转换器的作用是将数字量转为模拟量.( Y )
18.ANL R1,#0FH ( x )
19。MCS-51单片机的CPU能同时处理8位二进制数据。 ( √ )
21.读内部ROM时使用的是“MOV\"指令,读外部RAM时使用的是“MOVX”指令。( x ) 24。扩展I/O口占用片外数据存储器的地址资源. ( √ )
27.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称. ( √ ) 28.MCS—51上电复位时,SBUF=00H. ( x )。 29.使用可编程接口必须初始化。 ( √ ). 34.计算机中常用的码制有原码、反码和补码(√ )
35.若不使用MCS—51片内存储器,引脚EA必须接地. (√ ) 36.十进制数-29的8位补码表示为11100010。 ( x ) 37.MCS-51的相对转移指令最大负跳距是127B. ( x ) 39.MCS—51的时钟最高频率是18MHz。 ( x ). 42.MCS-51外扩I/O口与外RAM是统一编址的。 ( √ )
45。MCS-51的特殊功能寄存器分布在60H~80H地址范围内.( x )
50。MCS-51有4个并行I\\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入\"0”( x )
56.为了消除按键的抖动,常用的方法有硬件和软件两种方法。( √ 59。在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。( √ ) 61.DPTR是可以访问的,而PC不能访问。 ( √ ) 62.DPTR和PC都是16位的存储器. ( √ )
63.DPTR可以分为两个8位的寄存器使用,但PC不能.( √ )
64.程序计数器PC不能为用户编程时直接使用,因为它没有地址。( √ ) 67.PC是1个不可寻址的特殊功能寄存器。( x ) 68.单片机的主频越高,其运算速度越快。( √ )
71.立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。( √ ) 72.指令周期是执行一条指令的时间。( √ )
73.指令中直接给出的操作数称为直接寻址.( x ) 74.串行口通信的第9数据位的功能可由用户定义。( √ )
75.发送数据的第9数据位的内容在SCON寄存器的TB8位预先准备好的。( √ ) 76.串行通讯发送时,指令把TB8位的状态送入发送SBUF。( x ) 77.串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。( √ ) 78.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出设定。( √ ) 79.一台计算机的指令系统就是它所能执行的指令集合。.( √ ) 80.以助记符形式表示的计算机指令就是它的汇编语言.。( √ )
81.PC、A、DPTR、PSW都能为程序存储器提供和构成地址。( x ) 82.假定累加器A的内容为30H,执行指令:1000H: MOVC A,@A+PC 后,把程序存储器1030H单元的内容送累加器A中。( x )
简答题部分
1、什么叫堆栈?
答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以\"后进先出”的结构方式处理的.实质上,堆栈就是一个按照”后进先出\"原则组织的一段内存区域。 2、进位和溢出?
答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。
4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系? 答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周期,即1M=6S=12P.
5、MCS-51单片机通常内部包含哪些主要逻辑功能部件? 答: 51单片机通常由下列部件组成:一个8位CPU、一个片内振荡器及时钟电路、内部Flash Rom程序存储器、256B的RAM、2个16位的定时/计数器、可寻址64KB片外数据存储器和64KB片外数据存储器和64KB片外程序存储器空间的控制电路、4个8位并行I/O端口及一个可编程全双工串行接口.
6、MCS-51单片机的存储器从物理结构上可划分几个空间? 答:MCS-51系列单片机的存储器配置从物理结构上可分为:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。从逻辑上可分为:片内外统一编址的64KB的程序存储器、片内256B的数据存储器以及片外64KB的数据存储器.
7、存储器中有几个保留特殊功能的单元用做入口地址?分别作什么作用? 答:MCS—51系列单片机的存储器中有6个保留特殊功能单元,其中0000H为复位入口、0003H为外部中断0入口、000BH为T0溢出中断入口、0013H为外部中断1入口、001BH为T1溢出中断入口、0023H为串行接口中断入口.
8、MCS—51单片机片内256B的数据存储器可分为几个区?分别起什么作用?
答:MCS-51单片机片内数据存储器可分为二个区:00H~7FH单元组成的低128B的片内RAM区、80H~FFH单元组成的高128B的专用寄存器区。其中低128B的RAM区又分为:00H~1FH单元为工作寄存器区、20H~2FH单元为位寻址区、30H~7FH单元为用户RAM区。工作寄存器区可作通用寄存器用,用户RAM区可作堆栈和数据缓冲用。专用寄存器区又称特殊功能寄存器,使用80H~FFH单元。
8、MCS-51单片机的P0~P3四个I/O端口在结构上有何异同?使用时应注意的事项? 答:MCS-51单片机的四个端口在结构上相同之处:P0~P3都是准双向I/O口,作输入时,必须先向相应端口的锁存器写入“1”。不同之处;P0口的输出级与P1~P3口不相同,它无内部上拉电阻,不能提供拉电流输出,而P1~P3则带内部上拉电阻,可以提供拉电流输出.
当P0口作通用I/O口输出使用时,需外接上拉电阻才可输出高电平;但作地址/数据总线时,不需要外接上拉电阻。P1~P3口I/O输出时,均无需外接上拉电阻。 9、存储器空间在物理结构上可划分为几个部分?
答:MCS—51存储器是采用将程序存储器和数据存储器分开寻址的结构,其存储器空间在物理结构上可划分为如下四个空间:片内程序存储器、片外程序存储器、片内数据存储器、
片外数据存储器。
10、开机复位后,CPU使用是的哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?
答:开机复位后,CPU使用的是第0组工作寄存器。它们的地址是00H~07H。CPU通过对程序状态字PSW中RS1、RS0的设置来确定和改变当前工作寄存器组。如:RS1、RS0为00则指向第0组;为01则指向第1组;为10则指向第2组;为11则指向第3组.
11、MCS-51的时钟周期、机器周期、指令周期的如何分配的?当振荡频率为8MHz时,一个单片机时钟周期为多少微秒?
答:MCS—51的时钟周期是最小的定时单位,也称为振荡周期或节拍。一个机器周期包含12个时钟周期或节拍.不同的指令其指令周期一般是不同的,可包含有1~4个机器周期。当振荡频率为8MHz时,一个单片机时钟周期为0.125μs 。
12、程序状态存储器PSW的作用是什么?常用状态标志有哪几位?作用是什么? 答:PSW是8位寄存器,用于作为程序运行状态的标志,其格式如下:
PSW位地址 D7H D6H D5H D4H D3H D2H D1H D0H 字节地址D0H C AC F0 RS1 RS0 OV F1 P 当CPU进行各种逻辑操作或算术运算时,为反映操作或运算结果的状态,把相应的标志位置1或清0.这些标志的状态,可由专门的指令来测试,也可通过指令来读出。它为计算机确定程序的下一步运行方向提供依据。PSW寄存器中各位的名称及文职如上所示,下面说明各标志的作用.
P:奇偶标志。该位始终跟踪累加器A内容的奇偶性。如果有奇数个“1”,则置P为1,否则置0。在MCS—51的指令系统中,凡是改变累加器A中内容的指令均影响奇偶标志位P。
F1:用户标志。由用户置位或复位。
OV:溢出标志。有符号数运算时,如果发生溢出时,OV置1,否则清0。对于一个字节的有符号数,如果用最高位表示正、负号,则只有7位有效位,能表示-128~~+127之间的数;如果运算结果超出了这个数值范围,就会发生溢出,此时,OV=1,否则OV=0。此外,在乘法运算中,OV=1表示乘积超过255;在除法运算中,OV=1表示除数为0.
RS0、RS1:工作寄存器组选择位,用以选择指令当前工作的寄存器组。由用户用软件改变RS0和RS1的组合,以切换当前选用的工作寄存器组,其组合关系如下.
RS1 RS0 寄存器组 片内RAM地址 0 0 第0组 00H~07H 0 1 第1组 08H~0FH 1 0 第2组 10H~17H 1 1 第3组 18H~1FH
13、EA/VPP引脚有何功用?8031的引脚应如何处理?为什么? 答:EA/VPP是双功能引脚,功能如下:
(1) EA接高电平时,在低4KB程序地址空间(0000H~0FFFH),CPU执行片内程序存
储器的指令,当程序地址超出低4KB空间(1000H~FFFFH)时,CPU将自动执行片外程序存储器的指令。
(2) EA接低电平时,CPU只能执行外部程序存储器的指令。
8031单片机内部无ROM,必须外接程序存储器。因此,8031的EA引脚必须接低电平。
在对8751单片机内部的 EPROM编程时,此引脚VPP外接+12V电压,用于固化EPROM程序。
14、单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中? 答:MCS—51单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。这些特殊功能寄存器颁在以下各个功能部件中:
(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成); (2)中断系统:IP、IE;
(3)定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1; (4)并行I/O口:P0、P1、P2、P3; (5)串行口:SCON、SBUF、PCON。
16、什么叫寻址方式?MCS51有几种寻址方式?
答:寻址方式:寻址方式就是寻找指令中操作数或操作数所在地址的方式。也就是如何找到存放操作数的地址,把操作数提取出来的方法。MCS51的寻址方式有:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对对址、位寻址. 17、 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。
答:SJMP提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),AJMP的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。短转移方便了可重定位编码.SJMP方便了PC可重定位编码,但转移范围小。而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可跳到下一个区去。因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。 18、中断服务子程序与普通子程序有哪些异同之处?
答:相同点:都是让CPU从主程序转去实行子程序,执行完毕后又返回主程序。不同点:中断服务子程序是随机执行的,而普通子程序是预先安排好的;中断服务子程序以RETI结束,而一般子程序以RET结束。RETI除了将短点弹回PC动作之外,还要清除对应的中断优先标志位(片内不可寻址的触发器),以便新的中断请求能被响应。
19、MCS—51响应中断的条件是什么?CPU响应中断后,CPU要进行哪些操作?不同的中断源的中断入口地址是什么? 答: CPU响应中断的条件如下:
①首先要有中断源发出有效的中断申请;
②CPU中断是开放的,即中断总允许位EA=1,允许所有中断源申请中断。
③申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。
以上是CPU响应中断的基本条件.如果上述条件不足,则CPU一般会影响中断.但是,若有下列任何一种情况存在,则中断响应会被阻止。
①CPU正处在为一个同级或高级的中断服务中。
②现行机器周期不 所执行的指令的最后一个机器周期。作此限制的目的在与使当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。
③当前指令是返回指令(RET、RETI)或访问IE、IP的指令。因为按MCS—51中断系统的特性规定,在执行完这些指令之后,还应在继续执行一条指令,然后才能影响中断.
若存在任何一种情况,CPU将丢弃中断查询结果;否则,将在紧接着的下一个机器周期内执行中断查询结果,响应中断。
CPU响应中断后,保护断点,硬件自动将(PC)→堆栈,寻找中断源,中断矢量→PC,程序转向中断服务程序入口地址。其中,INT0=0003H,T0=000BH,INT1=0013H,T1=001BH,串行接口=0023H。
20、单片机对中断优先级的处理原则是什么? 答:⑴低级不能打断高级,高级能够打断低级;
⑵一个中断以被响应,同级的被禁止;
⑶同级,按查询顺序,INT0→T0→INT1→T1→串行接口
21、MCS—51的外部中断有哪两种触发方式?他们对触发脉冲或电平有什么要求?
答:有电平触发和脉冲触发。电平方式是低电平有效。只要单片机在中断要求引入端INT0和INT1上采样到低电平时,就激活外部中断。脉冲方式则是脉冲的下条沿有效.这种方式下,在两个相邻机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低,即为有效中断请求。因此在这两种中断请求信号方式下,中断请求信号的高电平状态和低电平状态都应至少维持一个周期以保电平变化能被单片机采样用。 22、什么是中断和中断系统?其主要功能是什么?
答:当CPU正在处理某件事情的时候,外部发生的某一件事情请求CPU迅速去处理,于是,CPU暂时终止当前的工作,转去处理发生的事情,中断处理完该事件以后,再回到原来被终止的地方,继续原来的工作.这种过程称为中断,实现这种功能的部件称为中断系统.
功能:(1)使计算机具有实时处理功能,能对外界异步发生的事件作出及时的处理.(2)完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。(3)实现实时控制。 23、MCS—51有哪些中断源?
答: MCS—51有如下中断源:INTO:外部中断0请求,低电平有效(由P3。2输入);INT1:外部中断1请求,低点平有效(由P3。3输入);TO:定时器/计数器0溢出中断请求;T1:定时器/计数器1溢出中断请求;TX/RX:串行借口中断请求。通过对特殊功能积存器TCON、SCON、IE、IP的个位进行置位或复位等操作,可实现各种中断控制功能. 24、说明外部中断请求的查询和响应过程。
答:当CPU执行主程序第K条指令时,外设向CPU发出中断请求,CPU接到中断请求信号并在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断.CPU在每一个S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标记为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。中断服务完毕后,CPU返回到主程序第K+1条指令继续执行。 25、MCS—51响应中断的条件? 答:(1)有中断源发出中断请求。
(2)中断总允许位EA=1,即CPU开中断。
(3)申请中断的中断源的中断允许位为1,即中断没有被屏蔽. (4)无同级或更高级中断正在服务。 (5)当前指令周期已经结束。
(6)若现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完毕.
26、简述MCS—51单片机的中断响应过程。
答:CPU在每个机器周期S5P2期间顺序采用每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序.一旦响应中断,MCS-51首先置位相应的中断“优先级生效”触发器,然后由硬件执行一条长调用指令,把当前的PC值压入堆栈,以保护断点,再将相应的中断服务的入口地址送入PC,于是CPU接着从中断服务程序的入口处开始执行。对于有些中断源,CPU在响应中断后会自动清除中断标志。
27、在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?
答:符合以下6个条件可响应新的中断请求:有中断源发出中断请求、中断总允许位EA=1,即CPU开中断、申请中断的中断源的中断允许位为1,即中断没有被屏蔽、无同级或更高级中断正在被服务、当前的指令周期已结束、若现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完.
如果新的中断请求“优先级”低于正在执行的中断请求或与其同级,则不能被响应。 28、MCS—51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?
答:有两种方式:电平触发和沿触发。电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输入电平。若为低电平,使IE1(IE0)置“1”,申请中断;若为高电平,则IE1(IE0)清零.边沿触发方式:CPU在每个机器周期的S5P2期间采样外部中断请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高水平,接着下一个机器周期采样到外部中断请求为低水平,则使IE1(IE0)置1,申请中断;否则,IE1(IE0)置0。
29、什么是中断优先级?中断优先级处理的原则是什么?
答:通常,在系统中有多个中断源,有时会出现两个或更多个中断源同时提出中断请求的情况.这就要求计算机既能区分各个中断源的请求,又能确定首先为哪一个中断源服务。为了解决这一问题,通常给各中断源规定了优先级别,称为优先权或中断优先级。
中断优先级处理的原则是:当两个或者两个以上的中断源同时提出中断请求时,计算机首先为优先权最高的中断源服务,服务结束后,再响应级别较低的中断源。 30、中断响应过程中,为什么通常要保护现场?如何保护?
答:因为一般主程序和中断服务程序都可能会用到累加器、PSW寄存器和其他一些寄存器。CPU在进入中断服务程序后,用到上述寄存器时,就会破坏它原来存在寄存器中的内容;一旦中断返回,将会造成主程序的混乱.因而在进入中断服务程序后,一般要先保护现场,然后再执行中断处理程序,在返回主程序前再恢复现场.
保护现场的一般方法是把累加器、PSW寄存器及其他一些与主程序有关的寄存器压入堆栈。在保护现场和恢复现场时,为了不使现场数据受到破坏或者造成混乱,一般规定此时CPU不响应新的中断请求.这就要求在编写中断服务程序时,注意在保护现场前要关中断,在恢复现场后要开中断。如果在中断处理时允许有更高级的中断打断它,在保护现场之后要再开中断,恢复现场之前关中断.
31、MCS—51定时器有哪几种工作模式?有何区别? 答:有模式0,模式1,模式2,模式3。
(1)模式0:选择定时器(T0或T1)的高8位和低5位组成的一个13位定时器/计数器。TL低5位溢出时向TH进位,TH溢出时向中断标志位TF0进位,并申请中断.
1313
定时时间t=(2—初值)*振荡周期*12;计数长度为2=8192个外部脉冲. (2)模式1:与模式0的唯一区别是寄存器TH与TL以全部16位参与操作。
1616
定时时间t=(2-初值)*振荡周期*12;计数长度为2=65536个外部脉冲。
(3)模式2:把TL0与TL1配置成一个可以自动重装载的8位定时器/计数器。TL用作8位计数器,TH用以保存初值.TL计数器溢出是不仅使TF0置1,而且还自动将TH中的内容装载到TL中.
8
定时时间t=(2—初值)*振荡周期*12;计数长度为256个外部脉冲。 (4)模式3:对T0和T1不大相同。
若T0设为模式3,TL0和TH0被分为两个相互独立的8位计数器.TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。
TH0仅用于作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1的控制。
定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为模式0~2. 32、串行数据传送的主要优点和用途是什么?
答:串行数据传送是将数据按位进行传送的方式。其主要优点是所需的传送线根数少,对于远距离数据传送的情况,采用串行方式是比较经济的。所以窜行方式主要用于计算机与远程终端之间的数据传送。
33、简述串行接口接收和发送数据的过程.
答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的.当向SBUF发“写”命令时(执行“MOV SBUF,A“指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位T1=1.在满足串行接口接收中断标志位RI(SCON。)=0的条件下,置允许接收位REN(SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOV A,SBUF”指令),便由接收缓冲器SBUF取出信息通过MCS-51内部总线送CPU。
34、MCS-51串行接口有几种工作方式?
答:MCS—51串行接口有四种工作方式;方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。 35、MCS-51中SCON的SM2、TB8、RB8有何作用? 答:MCS-51中SCON的SM2是多机通信控制位,主要用于方式2和方式3.若置SM2=1,则允许多机通信。
TB8是发送数据的第9位,在方式2或方式3中,根据发送数据的需求有软件置位或复位.它在许多通信协议中可用作奇偶校验位;在多机通信中作为发送地址帧或数据帧的标志位。
RB8是接收数据的第9位,在方式2或方式3中,接收到的第9位数据放在RB8位。它或是约定的奇/偶校验位,或是约定的地址/数据标识位。 36、简述单片机多机通信的原理。
答:当一片MCS—51主机与多片从机通信时,所有从机的SM2位置1。主机首先发送的一帧数据为地址,即某从机机号,其中第9位1,所有的接收到数据后,将其中第9位装入RB8中.各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,只有被寻址的目标从机清除SM2(SM2=0),以接收主机发来的一帧数据(点对点通信).其他从机仍然保持SM2=1。 37、串行通信的总线标准是什么?有哪些内容?
答:美国电子工业协会(EIA)正式公布的串行总线接口标准有RS—232C、RS-422、RS—423和RS-485等。在异步串行通信中应用最广的标准总线是RS—232C。它包括了按位串行传输的电气和机械方面的规定,如适用范围、信号特性、接口信号及引脚说明等,适用于短距离(〈15m)或带调制解调器的通信场合。采用RS—422、RS—485标准时,通信距离可达1000m。
38、简述单片机系统扩展的基本原则和实现方法。 答:(1)以P0口作地址/数据总线,此地址总线是系统的低8位地址线.(2)以P2口的口线作高位地址线。(不固定为8位,需要几位就从P2口引出几条口线。)(3)控制信号线:
①、使用ALE作为地址锁存的选通信号,以实现低8位地址线。 ②、以 PSEN信号作为扩展程序存储器的读选通信号。
③、以EA信号作为外程序存储器的选择信号。
④、以RD和WR作为扩展数据存储器和I/O端口的读写选通信号,执行MOVX指令时,这两个信号分别自动有效。
39、8255有哪几种工作方式?怎样选择其工作方式? 答:8255有3种工作方式,即方式0、方式1、方式2。 (1) 方式0(基本输入/输出方式):这种方式不需要任何选通信号。A口、B口及C口的高4位和低4位都可以被设定输入或输出。作为输出口时,输出的数据被封锁;B口和C口作为输入口时,其输入的数据不封锁。
(2) 方式1(选通输入/输出方式):在这种工作方式下,A、B和C三个口将分为两组。A组包括A口和C口的高4位,A口可由编程设定为输入口或输出口,C口的高4位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低4位,B口可由编程设定为输入口或输出口,C口的低4位则用来作为输入/输出操作的控制和同步信号。A口和B口的输出数据都被锁存。 (3) 方式2(双向数据传送方式):在这种方式下,A口为8位双向数据口,C口的PC3~PC7用来作为输入/输出的控制同步信号。
8255的工作方式选择是通过对控制口输入控制字(或称命令字)的方式实现的。 40、8155有哪几种工作方式?怎样进行选择?
答:8155有3种工作方式,即通用I/O口、片外256B的RAM及定时器/计数器方式。 当作为通用I/O口时,将IO/M引角置高电平,I/O工作方式选择是通过对8155内部命令寄存器送命令字来实现的。
当作为片外256B的RAM时,将IO/M引角置低电平.这时8155内部的RAM只能作片外RAM使用,其选址范围由片选线CE(高位地址译码)和AD0~AD7决定,应与应用系统中其他数据存储器统一编址。
当作为定时器/计数器使用时,将IO/M引角置高电平,然后分别选择定时器/计数器的高、低8位寄存器地址,通过对高8位的搞位的设置可定义4种输出波形。高8位中的低6位和低8位寄存器中的8位用于放14位计数器的初值.
41、什么是D/A转换器?简述T形电阻网络转换器的工作原理.
答:在计算机控制的实时控制系统中,有时被控对象需要用模拟量来控制,模拟量是连续变化的电量。此时,就需要将数字量转换为相应的模拟量,以便操纵控制对象。这一过程即为“数/模转换\"D/A(Digit to Analog)。能实现D/A转换的期间称为D/A转换器或DAC。
一个二进制数是由各位代码组合起来的,每位代码都有一定的权。为了将数字量转换成模拟量,应将每一位代码按权大小转换成响应的模拟输出分量,然后根据叠加原理将各代码对应的模拟输出分量相加,其综合就是与数字量成正比的模拟量,由此完成D/A转换。
为实现上述D/A转换,需要使用解码网络。解码网络的主要形式有二进制权电阻解码网络和T形电阻解码网络。
T形电阻网络整个电路是有相同的电路环节所组成的,每节有二个电阻(R和2R)、一个开关,相当于二进制数的一位,开关由该位的代码所控制.由于电阻接成T形解码网络。此电路采用了分流原理实现对输入为数字量的转换.
42、波特率、比特率和数据传送速率的含意各是什么? 答:在数据通信中,描述数据传送速度的方式有3种:
(1)波特率——每秒传送多少个信号码元(或每秒信号码元变换的总个数),单位是波特(Bd).
(2)比特率——每秒传送多少个二进制位(或每秒传送二进制码元的个数),单位是b/s. (3)数据传送速率(或字符传送速率)-—每秒传送多少个字符(或单位时间内平均数据传
移速率),单位是字符/秒。
四、程序分析及编程
1。设(A)=04H,(CY)=1, 写出下列各条指令的结果。 RL A; (A)= 08H RR A; (A)= 02H RLC A; (A)= 09H RRC A; (A)= 82H
2.设(A)=7AH,(R0)=30H,(30H)=A5H,(CY)=1, 写出下列各条指令的结果。
MOV A ,R0 (A)=30H (R0)=30H XCH A, R0 (A)=30H (R0)=30H
XCHD A,@R0 (A)=A5H (R0)=30H (30H)=30H ADD A,#30H (A)=D5H (CY)=1 ADDC A,30H (A)=06H (CY)=1 SUBB A,#30H (A)=D5H (CY)=1 3.下列程序段的功能是什么? PUSH A PUSH B POP A POP B 答:交换A、B的内容
4.已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH.下述
程序执行后:请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( ).
POP DPH POP DPL MOV DPTR,#4000H RL A MOV B,A MOVC A,@A+DPTR PUSH A MOV A,B INC A MOVC A,@A+DPTR PUSH A RET
ORG 4000H
DB 10H,80H,30H,50H,30H,50H
答:(A)=50H , (SP)=50H , (51H)=30H , (52H)=50H , (PC)=5030H
5。假定A=83H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为( )。:
ANL A,#17H
ORL 17H,A XRL A,@R0 CPL A
答:0CBH
6.如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,
则执行下列指令后则:DPH=( ),DPL=( ),SP=( ):
POP DPH POP DPL POP SP
答:DPH=3CH , DPL=5FH , SP=4FH
7.假定,SP=60H,A=30H,B=70H,执行下列指令后,SP的内容为( ),61H单元的内容为( ),62H单元的内容为( )。 PUSH A PUSH B
答:62H , 30H , 70H
8.计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为 12MHz)。
MOV R3,#15H ;1个机器周期 DL1:MOV R4,#255 ;1个机器周期
DL2:MOV P1,R3 ;2个机器周期 DJNZ R4,DL2 ;2个机器周期 DJNZ R3,DL1 ;2个机器周期 RET ;2个机器周期
答:15348us
析:((2+2)×255+1+2)×15+1+2=15348us
9. 假定A=83H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为( ).
ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 答:0CBH
10。 如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:DPH内容为( ),DPL内容为( ),SP内容为( )。 POP DPH; POP DPL; POP SP;
答:(DPH)= 3CH,(DPL)=5FH,(SP)=50H
11。假设外部数据存储器2000H单元的内容为80H,执行下列指令后,累加器A中的内容为( )。 MOV P2,#20H MOV R0,#00H MOVX A,@R0
答:累加器A中的内容为(80H)
12.阅读下列程序段并回答问题 。(1)。该程序执行何种操作? (2).已知初值(60H)=23H,(61H)=61H,运行程序后62H内容( ) CLR C MOV A,#9AH SUBB A,60H ADD A,61H DA A MOV 62H,A
答: 1)、该程序是单字节BCD码运算,是将(61H)—(60H)→62H
2)、(62H)=38H
13.试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1.
答:MOV A, 45H ANL A, #0FH ORL A, #0FH MOV 45H, A
14。试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH
这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。
答:START: MOV R0,#30H MOV R2,#20H LOOP: MOV A,@R0 CJNE A,#0AAH,NEXT MOV 51H,#01H LJMP EXIT NEXT: INC R0 DJNZ R2,LOOP MOV 51H,#00H EXIT: RET
15。 编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400μs,占空比为10:1的矩形脉冲.
解:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为363.63μs和36。37μs。如果系统采用
6MHz晶振的话,
Tcy2s,因此高低电平输出取整,则约为364μs
和36μs。编写程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P
MAIN: MOV TMOD,#02H ;定时器/计数器T0为定时方式2 MOV TL0,#4AH ;定时364μs初值赋值 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB P1.0 WAIT: AJMP WAIT IT0P: CLR EA
CLR P1.0 ;关中断 MOV R0,#9
DLY: DJNZ R0,DLY ;延时26μs
MOV TL0,#4AH ;定时364μs初值赋值 SETB P1.0 SETB EA RETI
16. 设在外部RAM中有三个连续单元2001H,2002H,2003H,其中2001H和2002H单元中分别存放两个8位无符号二进制数,比较这两个数的大小,然后将大数送到2003H单元.
COMPARE:MOV DPTR, #2001H
MOVX A , @DPTR MOV R0,A INC DPTR MOVX A,@DPTR SUBB A ,R0 JNC LOOP MOV A, R0 INC DPTR
MOVX @DPTR ,A RET LOOP:INC DPTR
MOVX @DPTR ,A RET
17。将内部RAM 40H开始的10个单元,搬移到50H开始的10个单元中。
MOV R0,#40H MOV R1,#50H MOV R2, #10 LOOP1:MOV A, @R0
MOV @R1,A INC R0 INC R1
DJNZ R2 ,LOOP1 RET
18。 设单片机晶振频率为6MHz,使用定时器0,以工作方式2,在P1.5引脚输出一个周期为200us连续方波? 解: MOV TMOD,#02H
MOV TH0, #0CEH MOV TL0 ,#0CEH SETB TR0
LOOP: JBC TF0,LOOP1 AJMP LOOP LOOP1: CPL P1。0
19. 编写一段程序,功能要求为:当P1。0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0).
答:将P1。1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。编写程序如下:
ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P
MAIN: JNB P1。0,MAIN
MOV TMOD,#05H ;定时器/计数器T0为计数方式1 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 WAIT: JB P1.2,WAIT CLR EA CLR TR0 MOV R1,TH0 MOV R0,TL0 AJMP $ IT0P: INC R2 RETI
20.试编写一个程序(例如将05H和06H拼为56H),设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H。
答:编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。 ORG 0000H
MAIN:MOV DPTR,#2001H ;设置数据指针的初值 MOVX A,@DPTR ;读取2001H的值 SWAP A
ANL A,#0F0H ;屏蔽掉低四位 MOV 30H,A ;保存A
INC DPTR ;指针指向下一个 MOVX A,@DPTR ;读取2002H的值 ANL A,#0FH ;屏蔽掉高四位 ORL A,30H ;进行拼装
MOVX @DPTR,A ;保存到2002H END
21。编写程序,将外部数据存储器中的4000H—40FFH单元全部清零. 解:本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了。
ORG 0000H
MAIN: MOV A,#0 ;送预置数给A
MOV R0,#0FFH ;设置循环次数 MOV DPTR,#4000H ;设置数据指针的初值 LOOP: MOVX @DPTR,A ;当前单元清零 INC DPTR ;指向下一个单元 DJNZ R0,LOOP ;是否结束 END
22。编写程序,采用8255A的C口按位置位/复位控制字,将PC7置0,PC4置1,(已知8255A各端口的地址为7FFCH-7FFFH)。 解:本题主要考察对8255A的C口的操作.其方式控制字的高位为0时,低四位对C口进行置位。由题目我们得到了方式控制字的地址为7FFFH.
ORG 0000H
MAIN: MOV DPTR,#7FFFH ;控制字寄存器地址送DPTR MOV A,#0EH ;将PC7置0 MOVX @DPTR,A
MOV A,#09H ;将PC4置1 MOVX @DPTR,A END
23.试编写逻辑运算程序,功能为: F=X(Y+Z); F=XYZ
其中F X Y Z均为位变量,依次存在以30H为首址的位寻址区中。
解(1):
F BIT 30H X BIT 31H Y BIT 32H Z BIT 33H LOG1:MOV C,Y ;Y→C ORL C,Z ;(Y+Z)→C ANL C,X ;X(Y+Z)→C MOV F,C ;X(Y+Z)→F RET ; 解(2):
LOG2:MOV C,Y ;Y→C ANL C,Z ;YZ→C ANL C,/X ;XYZ→C CPL C ;XYZ→C MOV F,C ;XYZ→F RET ;
24.试编写程序,统计内RAM 30H~50H单元中FFH的个数,并将统计结果存51H。 解:编程如下:
LOKF:MOV 51H,#0 ;计数器清零 MOV R0,#30H ;置数据区首址
LOP: MOV A,@R0 ;读数据 CPL A ;取反
JNZ LP1 ;判FFH,非FFH,转 INC 51H ;FFH,计数 LP1: INC RO ;指向下一数据
CJNE R0,#51H,LOP;判循环 RET
25.试编写程序,找出外RAM 2000H~200FH数据区中的最小值,并放入R2中。 解:编程如下:
SECH:MOV DPTR,#2000H ;置外RAM数据区首址 MOV R2,#OFH ;置外RAM数据区长度(N—1) MOVX A,@DPTR ;读第一个数据
MOV B,A ;假设第一个数据为最小值 SLOP:INC DPTR ;指向下一个数据 MOVX A,@DPTR ;读下一个数据 CJNE A,B,SLP1 ;新数据与最小值比较
SLP1:JNC SLP2 ;新数据≥最小值,判断循环 MOV B,A ;新数据<最小值,新数据→B SLP2:DJNZ R2,SLOP ;判循环结束否? MOV R2,B ;最小值→R2
RET
26.已知ROM中存有0~100的平方表,首地址为TABDS,试根据累加器A(≤100)中的数值查找对应的平方值,存入内RAM31H30H(双字节).
解:编程如下:
DSQR:MOV DPTR,#TABDS ;置ROM平方表首地址 ADD A,Acc ;A×2→A MOVC A, @A+DPTR ;读平方值高8位 MOV 31H,A ;平方值高8位→31H INC A ;指向平方值低8位 MOVC A,@A+DPTR ;读平方值低8位 MOV 30H,A ;平方值低8位→30H RET
TABDS:DW 0,0,0,1,0,4,0,9,0,16,0,25,…,27H,10H;0~100平方表(双字节)
27.试编程实现3字节无符号数加法:R7R6R5+R4R3R2→@R0(3个连续单元). 解:编程如下:
ADD3: MOV A,R5 ADD A,R2 ;低位加 MOV @R0,A ;存低位和 INC R0 ;修改存储单元
MOV A,R6 ; ADDC A,R3 ;中位加 MOV @R0,A ;存中位和 INC R0 ;修改存储单元 MOV A,R7 ; ADDC A,R7 ;高位加 MOV @R0,A ;存高位和 RET
28.试编写程序,将外部RAM2000H~20FH数据块,传送到3000H~30FFH区域。
解:编程如下:
DMOV:MOV DPTR,#2000H ;置源数据区首址 MOV R2,#00H ;置数据长度(256个) DLOP:MOVX A,@DPTR ;读数据
MOV DPH,#30H ;置目的数据区高8位地址 MOVX @DPTR,A ;存数据
MOV DPH,#20H ;置源数据区高8位地址 INC DPTR ;修改源数据区地址 DJNZ R2,DLOP ;判循环结束否? RET
29。从内RAM20H单元开始存有一组带符号数(补码),其个数已存放在1FH单元。要求统计其中大于0,等于0和小于0的数的个数,并
把统计结果分别存入ONE,TWO,THREE3个单元。 解:编程如下:
ONE EQU 30H TWO EQU 31H THREE EQU 32H
STOR:MOV R0,#20H ;置数据区首址 SLOP: MOV A,@R0 ;读数据 JZ LP1 ;数据=0,转 JB Acc.7,LP2 ;数据<0,转
INC ONE ;数据>0,ONE单元加1 LP0: INC RO ;指向下一数据
DJNZ 1FH,SLOP ;判统计结束否?未结束循环 RET ;统计结束,TWO单元加1 LP1: INC TWO ;数据=0,TWO单元加1 SJMP LPO ;返回循环体
LP2: INC THREE ;数据<0,THREE单元加1 SJMP LPO ;返回循环体
30.设在内部数据存储器中存放有20个字节数据,其起始地址为M。试编写程序,找出数0AH的存放地址,并送入N单元.若OAH不存在,则将N单元清零. 解:程序如下: M EQU 30H
N EQU 2FH SECH:MOV R0,#M MOV R1,#20
LOOP:CJNE @R0,#0AH,LP1 MOV N,R0 RET LP1: INC R0 DJNZ R1,LOOP MOV N,#0 RET
31.试编写程序,求出内RAM20H单元中“1”的个数,并将结果存入21H单元。 解:编程如下:
LOK1:MOV 21H,#O MOV R2,#08H MOV A,20H LOP: RLC A JNC LP1 JNC 21H LP1:DJNE R2,LOP RET
32。试编写统计数据区长度的程序,设数据区从内RAM30H开始,该
数据区以0结束,统计结果送入2FH中。 解:编程如下: ADUP:MOV 2FH,#0 MOV R0,#30H ALOP:MOV A,@R0 JNZ LP1 RET LP1: INC 2FH INC R0 SJMP ALOP
33。从内RAM30H单元开始存放着一组无符号数,其个数存在21H单元中。试编写程序,找出其中最小的数,并将其存入20H单元中。 解:编程如下:
SECH: MOV RO,#3OH MOV 20H,#FFH SLOP: MOV A,@R0 CJNE A,20H,NEXT NEXT: JNC SLP1 MOV 20H,A SLP1: INC R0 DJNZ 21H,SLOP RET
34。用程序实现c=a2+b2。设a2b2存于内RAM,AA,BB单元;c为双字节,存于内RAMCC,DD单元。
解:该题可用于程序来实现。通过两次调用查平方表子程序来得到a和b,并在主程序中完成相加。编程如下: AA EQU 40H BB EQU 41H CC EQU 42H DD EQU 43H FUNC:MOV A,AA LCALL DSQR MOV DD,A MOV CC,31H MOV A,BB LCALL DSQR ADD A,DD MOV DD,A ADDC A,CC MOV CC,A RET
35.利用定时、计数器T1测量某正脉冲宽度,并存入内RAM31H30H。设fosc=12MHz,脉冲从P3。3引脚输入,宽度小于65536us. 解:编程如下:
PLUS: MOV TMOD,#90H MOV TH1,#0 MOV TL1,#0 JB P3.3,$ SETB TR1 JNB P3.3,$ JB P3.3,$ CLR TR1 MOV 31H,THO MOV 30H,TLO RET
36. 设在内部RAM中50H开始有连续的10个单元,求这10个单元之和,结果放在60H,61H,低位放在60H,高位在61H。 解:程序编写如下:
ORG 0000H ACALL ADDTEN
WAIT: AJMP WAIT
ADDTEN:MOV R0 ,50H
MOV R1,#10 MOV A,#00H MOV 60H, A
MOV 61H, A LOOP1:ADD A, @R0
INC R0 MOV 60H,A JC LOOP2 DJNZ R1,LOOP1 RET LOOP2: MOV A,61H; ADD A,#01H DJNZ R1 ,LOOP1 RET END
六、综合题
1。现有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/VPU2P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.03233343536373839O7O6O5O4O3O2O1O0347813141718D0D1D2D3D4D5D6D7Q0Q1Q2Q3Q4Q5Q6Q7256912151619223212425345678910A12A11A10A9A8A7A6A5A4A3A2A1A0U31918171615131211A10A9A8A7A6A5A4A3A2A1A0U6D7D6D5D4D3D2D1D017161514131110911GOC74LS373
2.使用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.525242322213233343536373839123645U1ABCG1G2AG2B74LS138Y0Y1Y2Y3Y4Y5Y6Y715141312111097N12864N1272220223212425345678910WEOECEA12A11A10A9A8A7A6A5A4A3A2A1A0U31READY3130EA/VPU2ALE/P34781314171811U4D0D1D2D3D4D5D6D7G74LS373Q0Q1Q2Q3Q4Q5Q6Q7OC2569121516191D7D6D5D4D3D2D1D01918171615131211
3。画出MCS-51系列单片机利用串行口进行1台主机与4台从机多机串行通讯连线图,其中1台从机通讯地址号为02H,请叙述主机向02H从机发送一个字节数据的过程。
TXD RXD 8031 主机 TXD RXD 00H TXD RXD 01H TXD RXD 02H TXD RXD 03H 从机 从机 从机 从机
答:主机发送数据过程如下:
将从机00~03H的REN置1,SM2=1,并使它们工作在串行口工作方式2或3。
由主机向4个从机发出一帧地址址信息02H,第9位为1。从机接到信息后均发生中断,执行中断服务程序,将02H与自身地址做比较。若相同,则清SM2=0,若不同则SM2不变仍为1。 主机发送一帧数据信息,第9位为0,从机接到信息后,只有SM2=0的从机发生中断,将数据信息收取,其余SM2=1的从机不放出中断,信息丢失,从而实现主机向02H从机发送一个字节数据的功能。
4。请回答:
(1).下图中外部扩展的程序存储器和数据存储器容量各是多少?
(2).两片存储器芯片的地址范围分别是多少?(地址线未用到的位填1)
(3).请编写程序,要求:
(A)将内部RAM 30H~3FH中的内容送入1# 6264的前16个单
元中;
(B)将2# 6264的前4个单元的内容送入40H~43中;
解:(1)。外扩程序存储器的容量是8K,外扩数据存储器的容量是16K
(2)。2764范围:C000H~DFFFH 1#范 围: A000H~BFFFH
ALE 8031 8 P0.7 │ ● P0.0 PSEN RD WR ● ● 8 D0-D7 8 ● OE 8 ● P2.7 P2.6 P2.5 P2.4 │ P2.0 D0 │ D7 Q0 │ Q7 5 ● 8 ● 5 ● 8 A8-A12 CE +5V CS A0-A7 ● 5 8 A8-A12 CE +5V CS A0-A7 5 A0-A7 A8-A12 CE 74LS373 G OE 2764 1# 6264 2# 6264 OE WR D0-D7 OE WR 8 2#范 围: 6000H~7FFFH (3).请编写程序 (A)MOV R1 ,#10H MOV DPTR,@0A000H MOV R0,#30H LOOP: MOV A,@Ro MOVX @DPTR,A
INC DPTR INC R0
DINE R1,LOOP
RET
(B) MOV R1,#04H MOV DPTR,#6000H MOV R0 ,#40H LOOP: MOVX A ,@DPTR MOV @R0 ,A INC DPTR INC R0
DTNZ R1 ,LOOP RET
5.简述一种多外部中断源系统的设计方法。给出图和程序)(
解:原理电路如图所示
程序如下:
INT:PUSH PSW PUSH A
JNB P1.0, IR0 JNB P1。1 , IR1 JNB P1。2, IR2 JNB P1。3, IR3
INTIR: POP A POP PSW
IR0: 中断服务子程序 AJMP INTIR IR1: 中断服务子程序 AJMP INTIR
;扫描中断请求 ;返回 :中断服务 IR2: 中断服务子程序 AJMP INTIR IR3: 中断服务子程序 AJMP INTIP
6。结合原理图,简述行列式扫描键盘的工作原理。
答: 扫描键盘工作原理
首先X0~X3,始终接高电平,Y0~Y3给低电平,扫描P1。0~P1。3若全为高电平,则没有键按下,若有低电平,则有键按下。 接着Y0输出低电平,Y1~Y3输出高平,扫描P1.0~P1。3,若全为高电平,则没有键按下,若有低电平,则找出相位,得到所按的键.
再Y1输出低电平,Y0,Y2,Y3输出高电平,重复第2 步骤作. 再Y2输出低电平,Y0,Y1,Y3输出高电平扫描 再Y3输出低电平,Y0,Y1,Y2输出高电平扫描 根据据以上扫描,确定以上各键是否按下。
7。MCS-51单片机外扩展一片8255,画出系统电路原理图,写出地址分布。
8255A可以直接与MCS-51单片机进行接口,其连接图如图所示。8255A的A0、A1分别接地址总线的A0、A1,片选端CS接P2.7口,因此8255A PA口地址为7FFCH、PB口地址为7FFDH、PC口地址为7FFEH、控制口地址为7FFFH。 ALEQ0Q1D0~D774LS373Q7OEGA0A1CS8255AD0~D7RDWRRESETRDWRRESETPCPAP08031PB 8.编写交通灯控制程序。在十字路口东西南北各设置红、黄、绿三种信号灯,东西方向(A线)通车时,东西方向绿灯亮、南北方向(B线)红灯亮;东西方向通车时间(30秒)到后,东西方向的绿灯亮,黄灯亮3秒,之后由东西方向切换到南北方向通车,此时东西方向黄灯灭,红灯亮,南北方向红灯灭、绿灯亮,南北方向开始通车。通车时间(60秒)到后,南北方向的绿灯亮,黄灯亮3秒,之后由南北方向切换到东西方向通车,如此循环。(20
分)
ORG 2000H
MAIN: MOV P1,#0CH;A线放行、B线禁止
MOV R7,#19H;延时秒数
MAIN1: LCALL DELAY;1秒延时子程序
DJNZ R7,MAIN1
MOV P1,#0AH;A线警告、B线禁止 MOV R7,#05H;延时秒数
MAIN2: LCALL DELAY;1秒延时子程序
DJNZ R7,MAIN2
MOV P1,#21H;A线禁止、B线放行 MOV R7,#19H;延时秒数
MAIN3: LCALL DELAY;1秒延时子程序
DJNZ R7,MAIN3
MOV P1,#11H;A线放行、B线警告 MOV R7,#05H;延时秒数
MAIN4: LCALL DELAY;1秒延时子程序
DJNZ R7,MAIN4 AJMP MAIN
1秒延时子程序: ORG 2100H
DEY1S:MOV R1,#02H; LOOP3:MOV R2,#C8H; LOOP2:MOV R3,#FAH; LOOP1:NOP
NOP NOP
DJNZ R3,LOOP1 DJNZ R2,LOOP2 DJNZ R1,LOOP3 RET
9。若外部程序存储器已扩展(未画出),请编写程序,要求: (1)将30H~3FH中的内容送入6264 1# 的前16个单元中; (2)将6264 2# 的前32个单元的内容送入40H~5FH中;
P2.7 P2.6 P2.5 P2.4 P2.0 ALE 8031 P0.0 P0.7 RD WR ~ ~ 5 D0 Q0 8 8 8 A0~A7 A8~A12 A0~A7 A8~A12 A0~A7 A8~A12 373 8 D7 Q7 G OE 8 8 ~ ~ Vcc CS 6264 1# Vcc CS 6264 2# CE Vcc CS 6264 3# CE D0~DED7 CE DED0~D7 WR DED0~D7 WR WR
解:(1).外部扩展的数据存储器为3片8K的RAM帮外扩容量为24中
(2)。 A15 A!4 A13 地址范围
0 1 1 6000H~7FFFH 1 0 1 A000H~BFFFH (3).(1)程序如下: ORG 0000H
RESET:AJMP MAIN ;复位,转主程序 ORG 0100H
MAIN: MOV DPL,#ooH ;初始化DPTR MOV DPH,#60H
MOV R0,#30H。 ;初始化R0
LOOP: MOV A,@R0
MOVX @DPTR, A
INC R0 INC DPTR
CJNE R0,#40H,Loop NOP RET
(2)程序如下: ORG 0000H
RESET:AJMP MAIN ;转主程序 ORG 0100H
MAIN: MOV DPL#00H ;初始化DPTR MOV DPH,#0A0H
MOV R0,#40H ;初始化 R0 Loop2: movx A,@DPTR Mov @Ro,A INC DPTR INC Ro
CJNE Ro,#60H,Loop2 NOP RET
10.实现一个4个键盘的方法,画出硬件简略图。怎么实现都可以不限条件。
(键盘为1行四列,p1。7为输出,p1.0 p1。1 p1.2 p1.3为输入,键值放在20H单元)
解:编写程序
ORG 0000H MOV 20h ,#00H
WAIT: ACALL KEY INPUT
AJMP WAIT
KEY INPUT:JNB P1.0,KEY_0
JNB P1。1, KEY _1 JNB P1。2, KEY _2 JNB P1。3, KEY _3 RET
KEY_0: ACALL DELAY
JNB P1。0,GET_KEY_0 MOV 20H,#00H RET
GET_KEY_0:MOV 20H,#30H RET
KEY_1: ACALL DELAY
JNB P1.1,GET_KEY_1
MOV 20H,#00H RET
GET_KEY_1:MOV 20H,#31H RET KEY_2: ACALL DELAY
JNB P1.2,GET_KEY_2 MOV 20H,#00H RET
GET_KEY_2:MOV 20H,#32H RET KEY_3: ACALL DELAY JNB P1.0,GET_KEY_3 MOV 20H,#00H RET
GET_KEY_3:MOV 20H,#33H RET
DELAY: MOV R0,#0FFH; DELAY2: MOV R1,#22H DELAY1: DJNZ R1,DELAY1 DJNZ R0,DELAY2 RET END
10。回答下列问题并写出简要分析过程。
图1(a)所示为某微机中存储器的地址空间分布图.图1(b)为存储器的地址译码电路,为使地址译码电路按图1(a)所示的要求进行正确寻址(设CPU的地址线为16条),要求画出: A组跨接端子的内部正确连线图?(并简要分析) B组跨接端子的内部正确连线图?(并简要分析)
(注:74LS139是2—4译码器,A为低端,B为高端,使能端G接地表示译码器处于正常译码状态)。
8000H 地址 存储器 0000H 4000H A组 跨接端子 A15 A14 A13 A12 1 2 3 4 5 6 7 8 ROM1 ROM2 空 RAM1 RAM2
74LS139 A B Y0 Y1 Y2 Y3 B组 跨接端子 9 10 11 12 13 14 15 16 芯片选择 ROM2 ROM1
G C000H E000H FFFFH RAM1 RAM2 图1(a) 地址空间 图1(b) 地址译码电路
答:连线部分:A组跨接端子与B组跨接端子的各自连接如图1(b)所示。
RAM2 A15 A14 A13 A12 A组 跨接端子 1 2 3 4 5 6 7 8 74LS139 A B Y0 Y1 Y2 Y3 B组 跨接端子 9 10 11 12 13 14 15 16 芯片选择 ROM2 ROM1 G RAM1
简答部分:如果图连线错误,则需对简答酌情扣分,然后再视简答的逻辑性酌情给分。
在连对的基础上,只要分析出连线的逻辑关系或各芯片的地址范围或连线逻辑均给分。
图1(b) 地址译码电路
因篇幅问题不能全部显示,请点此查看更多更全内容