1、第四章习题与思考答案4-3 外设端口有哪两种编址方法?各有什么特点?答:微型计算机对 I/O 端口进行编址的方式有两种:单独编址和统一编址。1外设端口单独编址特点:(1)需要专用 I/O 指令,实现 CPU 和外设间数据传送。(2)I/O 端口地址的独立。2外设端口与存储器统一编址特点:(1)无需专用 I/O 指令(2)I/O 端口地址是内存地址中的一部分。4-4 I/O 数据有哪四种传送方式?各有什么特点?CPU 与外设之间的数据传送方式有无条件传输方式、查询方式、中断方式和 DMA 方式。1无条件传输方式无条件传送又称为同步传送或直接传送方式。CPU 在与外设进行数据交换时,外设随时处于准
2、备好的状态,这样 CPU 不必查询外设的状态,也不必等待,而是直接进行数据的输入输出。2查询传输方式查询传输方式也称为异步传输、条件传输方式。采用查询方式时,CPU 每次与外设进行数据传输前,都要先读取状态端口的信息,查询外设是否准备就绪,只有在外设处于“就绪”状态时,才能向外设的数据端口发送数据或从其中读取数据,如果外设未就绪,就需要 CPU 原地循环等待外设完成准备工作,所以 CPU 的工作效率不高。3中断传输方式在中断传输方式中,以外设为主动方,每次外设准备好就可以向 CPU 发出一次中断请求,使 CPU 暂停当前正在执行的程序,转去与外设进行一次数据传输工作,当完成了本次数据的输入或输
3、出后,再回到原先被打断的地方继续执行原来的程序。中断方式可以大大提高 CPU 的效率和系统的实时性。4DMA 方式DMA 方式即直接存储器存取方式,是一种在 DMA 控制器的控制下实现的外设与存储器之间的直接数据传输方式。在整个DMA 传输过程中,是不需要 CPU 参与的,完全是通过硬件逻辑电路用固定的顺序发地址和读写信号来实现的,数据不需要经过 CPU 而是在外设和存储器之间高速传输。4-5 8051 内部的并行 I/O 口有哪些?各有什么功能?1P0 口P0 口的第一功能是作为通用 I/O 口使用。P0 口的第二功能是作为地址(低 8 位地址)/数据总线的复用口。2P1 口P1 口的第一功
4、能是作为通用 I/O 口使用3P2 口P2 口的第一功能是通用 I/O 口P2 口的第二功能是作为地址总线,输出高 8 位地址信号,与 P0 口输出的低 8 位地址组合,共同完成外部存储器单元 16位地址信号的输出。4P3 口P3 口的第一功能是通用 I/O 口,且各引脚有不同的第二功能。4.8 中断处理的过程是怎样的?所谓中断是指 CPU 在正常执行程序的过程中,由于某种随机发生的事件使它暂停当前正在执行的程序,转而去执行另外的一段程序(中断服务程序) ,在这段程序完成后自动返回被打断的程序处继续执行的过程。CPU 与外设之间一个完整的可屏蔽中断传输过程包括:中断请求、中断响应、中断处理和中
5、断返回。4.9 8051 单片机有几个中断源?各自对应的中断标志是什么?对应的中断服务子程序入口地址是什么?IE 寄存器的作用是什么?8051 单片机提供 5 个中断源,其中 2 个外部中断,2 个定时器/计数器中断,1 个串行口中断。外部中断 / 以各自引脚上输入低电平或负跳变信INT0I1号作为中断触发事件。当检测到外部中断请求时,外部中断的标志 IE0/IE1 被置为 1定时器/计数器中断是由 8051 内部的定时器/计数器计满溢出产生的。T0 或 T1 计满溢出时,中断标志 TF0 或 TF1 被置 1.串行口中断包括发送中断和接收中断, 当串行口接收完一组数据时,串行口接收中断标志
6、RI 被置 1; 当串行口发送完一组数据时,串行口发送中断标志 TI 被置 1。8051 中断入口地址表:中断源 中断服务程序 入口INT00003H定时器 T0 000BHI10013H定时器 T1 001BH串行口中断 0023HIE 寄存器:通过中断允许寄存器 IE 可以对中断实现两级控制。每个中断源都对应有各自的中断屏蔽位,当中断屏蔽位为 1 时允许中断,当中断屏蔽位为 0 时禁止中断;IE 寄存器还有一个总中断允许位 EA,对整个中断系统进行开中断或关中断的控制。4-10 MCS-51 单片机的中断系统有几级中断优先级?IP 寄存器的作用是什么?2 级:高级中断优先级和低级中断优先级
7、。IP 寄存器是中断优先级寄存器,用于选择各个中断源的中断优先级。其各位的定义参见图 4-12。4-11 MCS-51 单片机中断响应的条件有哪些?如何进行中断响应的操作? 当前没有同级或高优先级的中断正在被服务。 CPU 应保证执行完当前正在执行的指令。 如果当前正在执行的指令是 RETI 或任何访问 IE、IP 寄存器的指令,则应至少再执行一条其他指令。中断响应条件满足时,硬件系统产生一个硬件长调用LCALL。硬件长调用 LCALL 操作将当前程序计数器 PC 的值推入堆栈保存起来,并将不同中断源对应的中断入口地址转入PC。4-12 MCS-51 单 片 机 内 部 定 时 器 有 几 种
8、 工 作 方 式 ? 如 何 通 过 定 时器 方 式 控 制 寄 存 器 进 行设置?工作方式控制寄存器 TMOD 用来设定定时器/计数器 T0和 T1 的工作方式。其中 M1M0 两位可以选择 4 种方式:方式0、方式 1、方式 2 和方式 3。具体设置的方法见图 4-18。4-13 试比较 MCS-51 内部定时器在 4 种工作方式下的异同。方式 0 是 13 位计数器方式,以 T0 为例,13 位计数器由TH0 的 8 位和 TL0 中的低 5 位组成,TL0 的高 3 位不用,当计数器计满溢出时,由硬件将 TF0 标志置 1。由 控制位选择作为C/T定时器还是计数器工作。当 GATE
9、=0 时,只要 TR0 置位,定时器即开始工作;当 GATE=1 时,TR0 置 1 后,只有 上出现高电IN0平信号时,T0 才开始工作。方式 1 是 16 位计数器方式,由 TH0 的 8 位与 TL0 的 8 位组成 16 位计数器,其它工作过程与方式 0 相同。方式 2 是 8 位自动重装载计数器方式。在计数器计满溢出时,可以自动重新装入计数初值,循环计数。而方式 0 和方式1 都不具备自动重装载的功能。T0 和 T1 的以上 3 种方式是完全相同的,而方式 3 下 T0 和T1 是不相同的。如果设置 T1 为方式 3,则 T1 停止工作。T0 设置为方式 3 作为两个独立的 8 位计
10、数器工作。 4-14 设单片机时钟为 12MHz,请分别计算定时器工作在方式 0和方式 1 时定时 2ms 所需要的定时器初值。(1)初值 HNx 183069208192213 (2)初值 F5564-16 设单片机时钟为 12MHz,请利用定时器 T0 编出令 P1.0 引脚输出 2ms 的矩形波程序,要求占空系数为 1:2(高电平时间短) 。高电平: 2ms/3=667s初值: 162536748965xNFDH低电平: 01ss初值: 16 203ACBORG 0000HAJMP MAINORG 000BHAJMP T0INTMAIN: MOV TMOD,#01H ;T0 选择工作方式
11、 1,16 位定时器MOV TH0,#0FDH ;初始化 T0 值MOV TL0,#65HMOV IE,#82H ;开 T0 中断SETB TR0 ;启动 T0 定时器SJMP $T0INT: MOV C,P1.0JC NEXT ;判断 P1.0 的高低电平MOV TH0,#0FDH ;P1.0 为低则装入高电平的初始值 MOV TL0,#65HSJMP COMNEXT: MOV TH0,#0FAH ;P1.0 为高则装入低电平的初始值MOV TL0,#0CBH COM: CPL P1.0RETIEND4-17 已知 8051 单片机内部 RAM 中以 10H 为起始地址的数据区有 50 个字
12、节,要求每隔 100ms 向内部 RAM 中以 70H 为起始地址的数据区传送 10 个字节,通过 5 次传送完毕。要求采用定时器T1 定时,单片机时钟为 12MHz,请编写程序。定时器 50ms,循环 2 次可得 100ms,设定初值 3CB0HORG 0000HAJMP MAINORG 001BHAJMP BRT1MAIN: MOV TMOD #10H ;T1 选择工作方式 1,16 位定时器MOV TH1,#3CH ;计数器初始化MOV TL1,#0B0HMOV R1,#10HMOV R0,#70HMOV R2,#5 ;传送次数MOV R3,#02H ;定时两次,每次 50msMOV I
13、E,#88H ;开 T1 中断SETB TR1 ;启动 T1 计数器LOOP: SJMP $BRT1: MOV TH1,#3CH ;定时 50msMOV TL1,#0B0HDJNZ R3,DONEMOV R3,#02HDJNZ R2,LOOPDCLR ET1 ;传送数据完毕,关闭 T1 中断SJMP DONELOOPD: MOV R4,#10 ;每次传 10 个字节LOOP1: MOV A,R1MOV R0,AINC R1INC R0DJNZ R4,LOOP1DONE: RETIEND4-18 异步通信和同步通信的主要区别是什么?MCS-51 串行口有没有同步通信功能?异步通信是字符帧通信通信
14、原理:(1) .发送/接收端有两个相互独立时钟源;(2) .接收端检测到 RXD 线的低电平(起始位)接收端便知发送端已开始发送。同步通信靠同步头通信通信原理:接收端检测 RXD 线上有同步头便知对方已开始发送。MCS-51 串行口无同步通信功能。4-21 串行通信有哪几种制式?各有什么特点?通信方式可分为:单工通信、半双工通信与全双工通信。(1) .单工通信只支持数据在一个方向上传输(2) .半双工通信允许数据在两个方向上传输,但在同一时刻,只允许数据在一个方向上传输(3) .全双工通信允许数据同时在两个方向上传输,即通信的双方可以同时发送和接收数据。4-24 MCS-51 串行口工作方式有
15、哪 4 种?如何设定?串行口的工作方式有方式 0、方式 1、方式 2 和方式 3 四种工作方式。方式 0: 在方式 0 下,方式 0 时 SM2 位必须为 0。其波特率是固定的,为 。/12oscf方式 1:在方式 1 下,串行口为 10 位通用异步接口。方式 2:在方式 2 下,串行口为 11 位通用异步接口。先根据通信协议用软件设置 TB8。其信息传送波特率与 SMOD 有关。方式 3:方式 3 为波特率可变的 11 位异步通信方式。4-26 请用中断法编出串行口方式 1 下的接收程序。设 8051 单片机主频为 6MHz,波特率为 600b/s,接收数据缓冲器在外部RAM,起始地址为 R
16、BLOCK,接收数据区长度为 30,采用偶校验(数据块长度不发送) 。主程序:RBLOCK DATA 2000HLEN DATA 30 ORG 0000HLJMP STARTORG 0023HLJMP RXSVESTART: MOV TMOD, #20H ;T1 为方式 2MOV TL1,#0E6H ;时间常数初值送 T1MOV TH1,#0E6H ;波特率为 600bpsMOV PCON,#00H ;SMOD=0SETB TR1 ;启 T1MOV SCON,#50H ;串口方式 1,允许接收MOV DPTR,#RBLOCK ;接收数块始址送 DPTRMOV A,#LENMOV R2,A ;块
17、长送 R2SETB EA ;开所有中断SETB ES ;允许串口中断WAIT: SJMP WAIT ;等待中断ORG 0150HRXSVE: CLR ES ;关串口中断CLR RI ;清接收中断标志MOV A,SBUF ;读接收缓冲区中内容MOV C,P ;取出校验位JC ERROR ;若有错,则转 ERRORANL A,#7FH ;无就删去校验位MOVX DPTR,A ;送入接收缓冲区DJNZ R2,NEXT ;若接收未完,则 NEXTCLR EA ;关所有中断NEXT: INC DPTR ;接收区指针加 1SETB ESRETI ;中断返回ERROR: . ;出错 ERRORRETIEND当 PCON 的值为 80H 时(SMOD=1) ,定时器初值应设 TH1 为0CCH,TL1 为 0CCH