课后练习:
6-1.什么是异步串行通信?它有哪些特点?
答:异步串行通信是串行通信的一种方式,其通信的数据或字符是一帧一帧地传送,在异步通信中,一帧数据先用一个起始位“0”表示字符的开始,然后是5~8位数据,即该字符的代码,规定低位在前、高位在后,接下来是奇偶校验码,最后一个停止位“1”表示字符结束。
它的特点是:通讯过程中无需同步时钟信号,设备间有时要约定波特率,硬件成本低;异步通讯中字符帧由发送端逐帧发送,发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
6-2.51系列单片机串行口由哪些功能部件组成?各有何作用?
答:51系列单片机的串行接口由发送缓冲期SBUF,接收缓冲期SBUF、输入移位寄存器、串行接口控制器SCON、定时器T1构成的波特率发生器等功能部件组成。
作用为:发送缓冲期SBUF发送数据,接收缓冲期SBUF接收数据。串行接口通信的工作方式选择、接收和发送控制及状态等均由串行接口控制寄存器SCON控制和指示。定时器T1产生串行通信所需的波特率。
6-3.AT89C51的串行缓冲器只有一个地址,如何判断是发送信号还是接收信号?
答:AT89C51的串行数据缓冲器SBUF在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。工作中通过对SBUF的读、写语句来区别是对接收缓冲器还是发送缓冲器进行操作。
例如:
CPU在写SBUF时,操作的是发送缓冲器;SBUF=send[i];//发送第i个数据
读SBUF时,就是读接收缓冲器的内容。buffer[i]=SBUF;//接收数据
发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送。接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。
6-4.AT89C51的串行通信有几种工作方式?各工作方式下的数据格式及波特率有何区别?
答:AT89C51串行通信共有4种工作方式,由串行控制寄存器SC0N中SM0SM1决定。
方式0是同步移位寄存器方式,帧格式8位,波特率固定:fosc/12;
方式1是8位异步通信方式,帧格式10位,波特率可变:T1溢出率/n(n=32或16);
方式2是9位异步通信方式,帧格式样11位,波特率固定:fosc/n(n=64或32);
方式3是9位异步通信方式,帧格式11位,波特率可变:T1溢出率/n(n=32或16)。
方式1,2,3的区别方要表现在帧格式及波特率两个方面,方式1与方式2帧格式相同波特率不同:方式1波特率可变与T1溢出率有关,方式2波特率固定。方式1与方式3波特率相同帧格式不同:方式1帧格式10位,方式3顿格式11位。方式1,2,3通信过程完全相同,均为异步通信方式。