5.假定串行口串行发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位, 请画出传送字符“A”的帧格式 起始 校验位停止位 6.判断下列说法是否正确 (1)串行口通信的第9数据位的功能可由用户定义。(对) (2)发送数据的第9数据位的内容在SCON寄存器的TB8位预先准备好的。(对) (3)串行通讯发送时,指令把TB8位的状态送入发送SBUF。(错) (4)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(对) (5)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出设定。(对) 7.通过串行口发送或接收数据时,在程序中应使用:(选(3)) (1)MOⅤC指令(2)MOVX指令(3)MOV指令(4)XCHD指令 8.为什么定时器计数器T1用做串行口波特率发生器时,采用方式2?若已知时钟频率、 通讯波特率,如何计算其初值? 解答:因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设 置时,就避免了重装参数的操作 OSMO 已知时钟频率、通讯波特率,根据公式:波特率=二 计算 3212×(256-X) 出初值 9.串行口工作方式1的波特率是:(3) (1)固定的,为foC/32 (2)固定的,为fosC/16。 (3)可变的,通过定时器计数器T1的溢出率设定。 (4)固定的,为fosC/64 10.在串行通讯中,收发双方对波特率的设定应该是(相等)的。 11.若晶体振荡器为110592MHz,串行口工作于方式1,波特率为4800b/s,写出用T作 为波特率发生器的方式控制字和计数初值 解答:初值计算:查阅P148表7-2可得,FAH 控制字: ANL TMOD,#0FOH ORL TMOD#20H MOV THL#OFAH MOV TLL#OFAH MOV SCON #40H 12.简述利用串行口进行多机通讯的原理 解答:参考P146页 13.使用8031的串行口按工作方式1进行串行数据通讯,假定波特率为2400bs,以中断方 式传送数据,请编写全双工通讯程序 解答:略
5. 假定串行口串行发送的字符格式为 1 个起始位,8 个数据位,1 个奇校验位,1 个停止位, 请画出传送字符“A”的帧格式。 起始位 0 1 0 0 0 0 0 0 校验位 停止位 6.判断下列说法是否正确: (1) 串行口通信的第 9 数据位的功能可由用户定义。(对) (2) 发送数据的第 9 数据位的内容在 SCON 寄存器的 TB8 位预先准备好的。(对) (3) 串行通讯发送时,指令把 TB8 位的状态送入发送 SBUF。(错) (4) 串行通讯接收到的第 9 位数据送 SCON 寄存器的 RB8 中保存。(对) (5) 串行口方式 1 的波特率是可变的,通过定时器/计数器 T1 的溢出设定。(对) 7.通过串行口发送或接收数据时,在程序中应使用:(选(3)) (1)MOVC 指令 (2)MOVX 指令 (3)MOV 指令 (4)XCHD 指令 8.为什么定时器/计数器 T1 用做串行口波特率发生器时,采用方式 2?若已知时钟频率、 通讯波特率,如何计算其初值? 解答:因为定时器/计数器在方式 2 下,初值可以自动重装,这样在做串口波特率发生器设 置时,就避免了重装参数的操作。 已知时钟频率、通讯波特率,根据公式: 32 12 (256 ) 2 X fOSC SMOD − 波特率= ,计算 出初值。 9.串行口工作方式 1 的波特率是:( 3 ) (1) 固定的,为 fOSC / 32。 (2) 固定的,为 fOSC /16。 (3) 可变的,通过定时器/计数器 T1 的溢出率设定。 (4) 固定的,为 fOSC / 64 。 10.在串行通讯中,收发双方对波特率的设定应该是( 相等 )的。 11.若晶体振荡器为 11.0592MHz,串行口工作于方式 1,波特率为 4800b/s,写出用 T1 作 为波特率发生器的方式控制字和计数初值。 解答:初值计算:查阅 P148 表 7-2 可得,FAH 控制字:ANL TMOD,#0F0H ORL TMOD,#20H MOV TH1,#0FAH MOV TL1,#0FAH MOV SCON,#40H 12.简述利用串行口进行多机通讯的原理。 解答:参考 P146 页。 13.使用 8031 的串行口按工作方式 1 进行串行数据通讯,假定波特率为 2400b/s,以中断方 式传送数据,请编写全双工通讯程序。 解答:略
14.使用8031的串行口按工作方式3进行串行数据通讯,假定波特率为1200bs,第9数据 位作奇偶校验位,以中断方式传送数据,请编写通讯程序 解答:略 某8031串行口,传送数据的帧格式为1个起始位(0),7个数据位,1个偶校验位和1 个停止位(1)组成。当该串行口每分钟传送1800个字符时,试计算出波特率。 解答:串口每秒钟传送的字符为:1800160=30个字符/秒 所以波特率为:30个字符秒×10位/个字符=300b/ 16.为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位(1)? 解答:串行口的方式θ为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并 行O口,一般不用于两个MCS-51之间的串行通信。该方式以fosc12的固定波特率从低 为位到高位发送或接受数据。 第八章习题解答 l单片机存储器的主要功能是存储(程序)和(数据)。 2试编写一个程序(例如将0H和06H拼为56H,设原始数据放在片外数据区 2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H 解:本题主要考察了对外部存储器的读、写操作,同学们只要记住正确使用 MOVX指令就可以了。编程思路:首先读取2001H的值,保存在寄存器A中, 将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存 到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后 将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。 ORG 000OH MAIN MOV DPTR,#2001H;设置数据指针的初值 MOVX A, @DPTR ;读取2001H的值 SWAP ANL A, #OFOH ;屏蔽掉低四位 MOV 30H,A 保存A INC DPTR ;指针指向下一个 A,@DPTR 读取2002H的值 ANL A, #OFH 屏蔽掉高四位 A,30H 进行拼装 aDPTR,A 保存到2002H END 3假设外部数据存储器2000单元的内容为80H,执行下列指令后: MOV P2,#20H MOV R0,#00H A, aRO 累加器A中的内容为(80H)。 4编写程序,将外部数据存储器中的4000H—-40FFH单元全部清零。 解:本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和MOVX 指令的使用就可以了。 ORG 000OH
14.使用 8031 的串行口按工作方式 3 进行串行数据通讯,假定波特率为 1200b/s,第 9 数据 位作奇偶校验位,以中断方式传送数据,请编写通讯程序。 解答:略 15.某 8031 串行口,传送数据的帧格式为 1 个起始位(0),7 个数据位,1 个偶校验位和 1 个停止位(1)组成。当该串行口每分钟传送 1800 个字符时,试计算出波特率。 解答:串口每秒钟传送的字符为:1800/60=30 个字符/秒 所以波特率为:30 个字符/秒×10 位/个字符=300b/s 16.为什么 MCS-51 串行口的方式 0 帧格式没有起始位(0)和停止位(1)? 解答:串行口的方式 0 为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并 行 I/O 口,一般不用于两个 MCS-51 之间的串行通信。该方式以 fosc/12 的固定波特率从低 为位到高位发送或接受数据。 第八章习题解答 1.单片机存储器的主要功能是存储(程序)和(数据)。 2.试编写一个程序(例如将 05H 和 06H 拼为 56H),设原始数据放在片外数据区 2001H 单元和 2002H 单元中,按顺序拼装后的单字节数放入 2002H。 解:本题主要考察了对外部存储器的读、写操作,同学们只要记住正确使用 MOVX 指令就可以了。编程思路:首先读取 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 3.假设外部数据存储器 2000H 单元的内容为 80H,执行下列指令后: MOV P2,#20H MOV R0,#00H MOVX A,@R0 累加器 A 中的内容为(80H)。 4.编写程序,将外部数据存储器中的 4000H—40FFH 单元全部清零。 解:本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和 MOVX 指令的使用就可以了。 ORG 0000H