周国运版51单片机课后习题答案资料 联系客服

发布时间 : 星期六 文章周国运版51单片机课后习题答案资料更新完毕开始阅读e7d24dbc9f3143323968011ca300a6c30c22f1bc

6.89C52中SCON的SM2、TB8、RB8有何作用? 答:SM2:多机通信控制位。 TB8:发送数据的第9位。 RB8:接收数据的第9位。

7.设fsoc=11.059 2MHz,试编写一段程序,其功能为对串行口初始化,使之工作于方式1,波特率为1 200b/s;并用查询串行口状态的方法,读出接收缓冲区的数据并回送到发送缓冲区。 #include

void main() {

unsigned char temp; SCON=0x50; TMOD=0x20; TH1=0xE8; TL1=0xE8; TR1=1;

while(RI==0); temp=SBUF; RI=0;

SBUF=temp; }

8.若晶振为11.059 2MHz,串行口工作于方式1,波特率为4 800b/s。写出用T1作为波特率发生器的方式字和计数初值。 答:SCON=0x50; TMOD=0x20; TH1=0xE8; TL1=0xE8;

9.为什么定时器T1用作串行口波特率发生器时,常选用工作模式2?若已知系统时钟频率和通信用波特率,如何计算其初值? 答:工作模式2有自动重装入功能。

X=256-fosc?(SMOD?1)

384?波特率

10.若定时器T1设置成模式2作波特率发生器,已知fosc=6MHz,求可能产生的最高和最低的波特率。 答:最高波特率为8Mb/s。 最低波特率为15625b/s。

11.简述单片机多机通信的原理。

29

答:若置SM2=1,则允许多机通信。多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位为0,则本帧为数据帧。当一片89C52(主机)与多片89C5l(从机)通信时,所有从机的SM2位都置l。主机首先发送的一帧数据为地址,即某从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2,以接收主机发来的一帧数据。其他从机仍然保持SM2=1。 12.当89C52串行口按工作方式1进行串行数据通信时,假定波特率为1 200b/s,以中断方式传送数据,请编写全双工通信程序。 #include

unsigned char data txbuf; unsigned char data rebuf;

void main() {

unsigned char temp; SCON=0x50; TMOD=0x20; TH1=0xE8; TL1=0xE8; TR1=1; ES=1; EA=1; }

void comre() {

rebuf=SBUF; }

void comtx() {

SBUF=txbuf; }

void serial_server() interrupt 4 { if(TI) TI=0; else {

30

RI=0; comre(); } } 13.当89C52串行口按工作方式3进行串行数据通信时,假定波特率为1 200b/s,第9位数据作奇偶校验位,以中断方式传送数据,请编写通信程序。 #include

unsigned char data txbuf; unsigned char data rebuf;

void main() {

unsigned char temp; SCON=0xd0; TMOD=0x20; TH1=0xE8; TL1=0xE8; TR1=1; ES=1; EA=1; }

void comre() {

ACC=SBUF; if(RB8==P) rebuf=ACC; else

error(); }

void comtx() {

ACC=txbuf;

SBUF=ACC; TB8=P; }

void serial_server() interrupt 4 { if(TI) TI=0; else

31

{ RI=0; comre(); } }

void error() {

F0=1; }

第8章 习题答案

1.假定一个存储器有4096个存储单元,其首地址为0,则末地址为多少? 答:末地址为4095。

2.6根地址线和11根地址线各可选多少个地址? 答:6根地址线可选26个地址。

11

11根地址线可选2个地址。

3.用2K×4位的数据存储器芯片扩展4K×8位的数据存储器需要多少片?地址总线是多少位?画出连线图。 答:需要4片,地址总线是12位。

89C52 数据总线D0~D3 数据总线D4~D7 2K*4b 2K*4b 2K*4b 2K*4b 地址总线A0~A10 地址总线A11

4.用两片74HC573芯片扩展89C52的P1端口实现6位发光二极管的开关控制和点亮。

32