最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

第09章思考题和习题解答

来源:动视网 责编:小OO 时间:2025-09-26 05:18:37
文档

第09章思考题和习题解答

第9章思考题和习题解答9.1异步通信和同步通信的主要区别是什么?MCS-51串行口有没有同步通信功能?答:所谓同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相信始终保持一致(同步),保证了通信双方在发送和接收数据时具有完全一致的定时关系。异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。MCS-51串行口使用的都是异步通信,没有同步通信功能。9.2串行通信有按照数据传送方向可分为哪几种方式,各自有什么特点?答:按照数据传送方向和UART的
推荐度:
导读第9章思考题和习题解答9.1异步通信和同步通信的主要区别是什么?MCS-51串行口有没有同步通信功能?答:所谓同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相信始终保持一致(同步),保证了通信双方在发送和接收数据时具有完全一致的定时关系。异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。MCS-51串行口使用的都是异步通信,没有同步通信功能。9.2串行通信有按照数据传送方向可分为哪几种方式,各自有什么特点?答:按照数据传送方向和UART的
第9章 思考题和习题解答

9.1 异步通信和同步通信的主要区别是什么?MCS-51串行口有没有同步通信功能?

答:所谓同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相信始终保持一致(同步),保证了通信双方在发送和接收数据时具有完全一致的定时关系。

异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。

MCS-51串行口使用的都是异步通信,没有同步通信功能。

9.2 串行通信有按照数据传送方向可分为哪几种方式,各自有什么特点?

答:按照数据传送方向和UART的工作方式,串行通信可分为单工方式、半双工和全双工三种方式。

1)单工方式:在单工方式下,通讯线的一端连接发送器,另一端连接接收器,只允许数据按照一个固定的方向传送,即一方只能发送,而另一方只能接收,这种方式现在较少使用。

2)半双工方式:在半双工方式下,系统中的每个通讯设备都由一个发送器和一个接收器组成,通过开关接到通讯线路上,双方(A,B)之间只有一个通信回路,数据要么由A发送到B,要么由B发送到A,不能同时在两个方向上传送。半双工方式比单工方式灵活,但是它的效率依然不高。

3)全双工方式:在全双工方式下,A、B两站间有两个的通信回路,两站都可以同时发送和接收数据。一回路用于发送,另一回路用于接收,因此,全双工方式通信效率较高。

9.3 通信波特率的定义是什么?它和字符的传送率之间有何区别?

答:波特率的定义为每秒钟传送二进制数码的位数(也称比特数),单位通常为bps(bit per second),即位/秒。波特率是串行通信的重要指标,用于表征数据传输的速度。波特率越高,数据传输速度越快,与字符的传输速率不同。字符的传输速率是指每秒钟内所传字符帧的帧数,它与字符帧格式有关。而波特率则与字符帧格式无关

9.4 串行通信中为什么要用modem?按数字信号的调制技术,modem可分为哪三类?

答:计算机通信要传送的是数字信号,而在远程数据通信时,通信线路往往是借用现成的电话网,但是,电话网是为300~3400Hz间的音频模拟信号设计的,不合适对二进制数据的传输。二进制数据信号在电话网上远距离传输必然会导致信号衰减和畸变,以致传送到接收端后无法辨认。为了使数据能在远程通信中,使用电话网进行传输,必须利用调制的手段,将数字信号变换成能在通讯线上传输而不受影响的模拟信号,在发送时需要采用调制器(Modulator)把数字信号转换成模拟信号,送到通信链路上去,而在接收时,需要用解调器(Demodulator)再把从通信链路上收到的模拟信号还原成数字信号。

按对数字信号的调制技术,MODEM可分为频移键控(FSK)、相移键控(PSK)和相幅调制(PAM)三种类型。

9.5简述MCS-51串行口在四种工作方式下的字符格式。

答:MCS-51串行口口可设置4种工作方式,可有8位、10位或11位帧格式。

方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。其帧格式如下:

D0D1D2D3D4D5D6D7
方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1)。其帧格式为:

起始D0D1D2D3D4D5D6D7停止
方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1)。其帧格式为:

起始D0D1D2D3D4D5D6D7D8停止
附加第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。

9.6 MCS-51串行口控制寄存器SCON中的SM2的含义是什么?主要在什么方式下使用?

答:在方式2 和3 中,若SM2=1 且接收到的第九位数据(RB8)为1,才将接收到的前8 位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8 位数据。若SM2=0,则不论第九位数据(RB8)为1 还是为0,都将前8 位送入接收SBUF中,并产生中断请求。方式1 时,SM2必须置0。SM2主要在多机通信时使用。

9.7 简述MCS-51串行口在4种工作方式下的字符格式。

9.8 简述MCS-5l串行口在4种工作方式下波特率的产生方法。

答:串行口方式0波特率的产生如下图所示。

方式0波特率 = fosc / 12

串行口方式2波特率的产生如下图所示。

方式2波特率=2SMOD/×fosc

方式1和方式3的波特率的产生如下图所示。

方式1、方式3

9.9 简述MCS-5l串行口发送和接收数据的过程。

答:MCS-51串行口的发送过程由指令MOV  SBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲的控制下,低位在前,高位在后,从TXD端(方式0除外)一位一位地向外发送。

串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令(MOV  A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。

 TI和RI是由硬件置位的,但需要用软件复位。

9.10试比较和分析MCS-5串行口在4种工作方式下发送和接收数据的基本条件。

答:1. 方式0(SM1=SM0=0)

方式0发送是以写SBUF寄存器的指令开始,8位数据输出结束时TI 被置位。

方式0接收是在REN=1和RI=0同时满足时开始,接收的8位数据装入SBUF中时结束,RI被置位。

2. 方式1(SM0=0,SM1=1)

方式1发送以执行一条写SBUF的指令启动一次串行口发送过程,发送电路就自动在8位发送字符前后分别添加1位起始位和停止位,发送完一帧信息后,发送中断标志TI由硬件在发送停止位时置位,应由软件将它复位。

方式l接收的前提条件是REN=l,同时满足两个条件(1)RI=0;(2)SM2=0或接收到的停止位为1,本次接收有效,将其装入SBUF和RB8位。否则放弃接收结果。

3.方式2和方式3

方式2和方式3的发送起始于执行一条写SBUF的指令当第9位数据(TB8)输出之后,置位TI。

方式2和方式3的接收前提条件也是REN=1.在第9位数据接收到后,如果下列条件同时满足 (1)RI=0;(2)SM2=0或接收到的第9位为1, 本次接收有效,将已接收的数据装入SBUF和RB8,并置位RI。如果条件不满足,则接收无效。

9.11请用中断法编出串行口方式1下的发送程序。设8031单片机主频为11.0592MHz,波特率为 9600bps,发送数据缓冲区在外部 RAM,起始地址为 TBLOCK,数据均为7位的ASCII字符,数据块长度为30,采用偶校验,放在发送数据第8位,数据块长度首先发送。

解:参考程序如下:

            ORG    0000H

            LJMP    MAIN

            ORG    0023H

            LJMP    TXSVE

TBUFF        EQU    TBLOCK

LEN            EQU    30

;主程序

MAIN:        MOV    TMOD,#20H            ;设置T1为定时器工作方式2

            MOV    TH1,#0FDH            ;波特率9600bps

            MOV    TL1,#0FDH

            MOV    PCON,#00H            ;SMOD=0

            SETB    TR1                    ;启动T1

            MOV    SCON,#40H            ;串行口为方式1

            SETB    EA                    ;开CPU中断

            SETB    ES                    ;开串行口中断

            MOV    DPTR,#TBUFF        ;DPTR指向数据块首址

            MOV    A,#LEN                ;数据块长度送A

            CLR        ACC.7

CPL        P                    ;偶校验

            MOV    C,P

            MOV    ACC.7,C                ;设置偶校验位

            MOV    SBUF,A                ;发送长度数据

            MOV    R2,A

WAIT:        CJNE    R2,#00H,WAIT        ;未发送完循环等待中断发送

            CLR        EA                    ;关CPU中断

            SJMP    $                    ;暂停

;中断服务程序

TXSVE:    CLR        ES                    ;关串行口中断

            CLR        TI                    ;清串行口发送中断请求标志

            MOVX    A,@DPTR            ;数据送A

            INC        DPTR                ;调整数据指针

            CLR        ACC.7

CPL        P                    ;偶校验

            MOV    C,P

            MOV    ACC.7,C                ;设置偶校验位

            MOV    SBUF,A                ;发送字符数据

            DEC    R2                    ;数据长度减1

            SETB    ES                    ;开串行口中断

            RETI                        ;中断返回

END

9.12请用中断法编写出串行口在方式1下的接收程序。设单片机主频为11.0592MHz,波特率为19200bps,接收数据缓冲区在外部RAM,起始地址为BLOCK,接收数据区长度为100,采用奇校验,假设数据块长度要发送。

解:参考程序如下:

            ORG    0000H

            LJMP    Main

            ORG    0023H

            LJMP    RXSVE

TBUFF        EQU    BLOCK

MAXLEN    EQU    100

;主程序

MAIN:        MOV    TMOD,#20H            ;设置T1为定时器工作方式2

            MOV    TH1,#0FDH            ;波特率19200bps

            MOV    TL1,#0FDH

            MOV    PCON,#10H            ;SMOD=1

            SETB    TR1                    ;启动T1

            MOV    SCON,#80H            ;串行口为方式1

            SETB    EA                    ;开CPU中断

            CLR        F0                    ;设置出错标志,F0=1接收出错

            SETB    REN                ;允许接收

            JNB        RI,$                    ;等待接收数据长度

            MOV    A,SBUF                ;接收数据长度

            ACALL    VERIFY                ;奇校验

            CJNE    A,#0FFH, CHKLEN    ;奇校验正确转REV

            SETB    F0

SJMP    ERRO                ;奇校验出错

CHKLEN:    MOV    R2,A

CLR        C

MOV    A,#MAXLEN

SUBB    A,R2                ;检查数据长度

            JC        ERRO                ;数据长度大于数据缓冲区长度出错

MOV    DPTR,#TBUFF        ;DPTR指向字符块首址

SETB    ES                    ;开串行口中断

RECEIVE:    JB        F0,ERRO                ;接收校验错转ERRO

            CJNE    R2,#00H, RECEIVE    ;未接收完循环等待中断接收

            CLR        EA                    ;接收完成,关CPU中断

            SJMP    $                    ;暂停

ERRO:        SJMP    ERRO                ;数据块长度送A

;中断服务程序

RXSVE:    CLR        ES                    ;关串行口中断

            CLR        RI                    ;清串行口接收中断请求标志

            MOV    A,SBUF                ;数据送A

            ACALL    VERIFY                ;奇校验

            CJNE    A,#0FFH,SAVE        ;奇校验正确转SAVE

            SETB    F0

SJMP    INTRET                ;奇校验出错

SAVE:        MOVX    @DPTR,A            ;保存数据

            INC        DPTR                ;调整数据指针

            DEC    R2

INTRET:    SETB    ES                    ;开串行口中断

            RETI                        ;中断返回

;奇校验子程序

;入口参数:A=收到数据,ACC.7奇校验

;出口参数:校验正确A=校验数据,ACC.7=0去除校验位。校验错误A=0FFH

;占用寄存器:R7

VERIFY:    MOV    R7,A                ;保存数据到R7

            CLR        ACC.7                ;清原校验位

            MOV    C,P                    ;取奇校验位

            MOV    ACC.7,C                ;加上新校验位

            XRL    A,R7                ;校验

            CJNE    A,#00H,VERRO        ;校验错转VERRO

            MOV    A,R7                ;校验正确,取回原数据

            CLR        ACC.7                ;清校验位

            SJMP    EXIT

VERRO:    MOV    A,#0FFH            ;设置校验错

EXIT:        RET    

END

9.13 请用查询法编出 8031串行口在方式 2下的接收程序。设:波特率为 fosc/32,接收数据块在外部RAM,起始地址为RBLOCK,数据块长度为50,采用奇校验,放在接收数据的第9位上,接收数据块长度首先被发送。

解:参考程序如下:

            ORG    0000H

TBUFF        EQU    BLOCK

MAXLEN    EQU    50

;主程序

MAIN:        MOV    PCON,#10H            ;SMOD=1

            MOV    SCON,#40H            ;串行口为方式2

            CLR        ES                    ;关串行口中断

            CLR        F0                    ;设置出错标志,F0=1接收出错

            SETB    REN                ;允许接收

            JNB        RI,$                    ;等待接收数据长度

            MOV    A,SBUF                ;接收数据长度

            ACALL    VERIFY                ;奇校验

            JNB        F0, CHKLEN            ;奇校验正确转REV

SJMP    ERRO                ;奇校验出错

CHKLEN:    MOV    R2,A

            MOV    A, #MAXLEN

            CLR        C

SUBB    A, R2                ;检查数据长度

            JC        ERRO                ;数据长度大于数据缓冲区长度出错

            MOV    DPTR,#TBUFF        ;DPTR指向字符块首址

RECEIVE:    JNB        RI, RECEIVE            ;查询等待接收一个数据结束

            CLR        RI

            MOV    A,SBUF                ;读接收数据

            ACALL    VERIFY                ;奇校验

            JNB        F0,SAVE                ;奇校验正确转SAVE

SJMP    ERRO                ;奇校验出错

SAVE:        MOVX    @DPTR,A            ;保存数据

            INC        DPTR                ;调整数据指针

            DJNZ    R2, RECEIVE

            SJMP    $                    ;接收完成暂停

ERRO:        SJMP    ERRO                ;校验出错暂停

;奇校验子程序

;入口参数:P=接到数据奇校验位,RB8=收到奇校验位

;出口参数:校验正确F0=0,校验错误F0=1

VERIFY:    JB        RB8, VERIFY1

            JNB        P,VERRO

            SJMP    RIGHT

VERIFY1:    JB        P, VERRO

RIGHT:    CLR        F0

            SJMP    EXIT

VERRO:    SETB    F0                    ;设置校验错

EXIT:        RET    

END

9.14 设8031单片机的发送缓冲区和接收缓冲区皆在内部RAM,起始地址分别为TBLOCK和RBLOCK,数据块长度皆为20。试编写主机既能发送又能接收的全双工通信程序。

解:无校验,使用方式1。假设8031单片机主频为11.0592MHz,波特率选 9600bps。采用中断编程。参考程序如下:

            ORG    0000H

            LJMP    MAIN

            ORG    0023H

            LJMP    RTXSVE

TBUFF        EQU    TBLOCK

RBUFF        EQU    RBLOCK

LEN            EQU    20

;主程序

MAIN:        MOV    TMOD,#20H            ;设置T1为定时器工作方式2

            MOV    TH1,#0FDH            ;波特率9600bps

            MOV    TL1,#0FDH

            MOV    PCON,#00H            ;SMOD=0

            SETB    TR1                    ;启动T1

            MOV    SCON,#40H            ;串行口为方式1

            SETB    EA                    ;开CPU中断

            SETB    ES                    ;开串行口中断

            MOV    R0,#TBUFF            ;DPTR指向发送数据块首址

            MOV    R1,#TBUFF            ;DPTR指向接收数据块首址

            MOV    R2,#LEN                ;发送数据长度送R2

            MOV    R3,#LEN                ;接收数据长度送R3

            CLR        TI

            CLR        RI

            MOV    A,@R0

            MOV    SBUF,A                ;启动发送过程

WAIT:        MOV    A,R2

            OR        A,R3

            JNZ        WAIT                ;等待发送和接收完成

            CLR        ES                    ;关串行口中断

            SJMP    $                    ;暂停

;中断服务程序

RTXSVE:    CLR        ES                    ;关串行口中断

            JNB        TI,RX                ;不是发送中断,转接收中断处理

CLR        TI                    ;清发送中断请求标志

            MOV    A,R2

            JZ        INTRET                ;已发送完转中断返回

            DEC    R2

TX:        INC        R0                    ;调整接收数据指针

MOV    A,@R0                ;数据送A

MOV    SBUF,A                ;发送数据

            SJMP    INTRET

RX:        CLR        RI                    ;清接收中断请求标志

MOV    A,R3

JZ        INTRET                ;已接收完转中断返回

MOV    A,SBUF

            MOV    @R1,A                ;保存接收数据

            INC        R1                    ;调整接收数据指针

DEC    R3

INTRET:    SETB    ES                    ;开串行口中断

            RETI                        ;中断返回

END

文档

第09章思考题和习题解答

第9章思考题和习题解答9.1异步通信和同步通信的主要区别是什么?MCS-51串行口有没有同步通信功能?答:所谓同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相信始终保持一致(同步),保证了通信双方在发送和接收数据时具有完全一致的定时关系。异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。MCS-51串行口使用的都是异步通信,没有同步通信功能。9.2串行通信有按照数据传送方向可分为哪几种方式,各自有什么特点?答:按照数据传送方向和UART的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top