单片机原理及接口技术C编程张毅刚第二版习题答案 下载本文

3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于2个机器周期。对

四、简答

1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合?

答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。

3.如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少?

答:晶振的频率为24MHz, 机器周期为0.5μs。

方式0最大定时时间=0.5μs×213=0.5μs×8192=4096μs 方式1最大定时时间=0.5μs×216=0.5μs×65536=327686μs 方式2最大定时时间=0.5μs×28=0.5μs×256=128μs 五、编程

2.编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400μs,占空比为10:1的矩形脉冲。

解:设fosc = 12MHz,则机器周期为1us。设P1.0初值为0。 周期为400us,可定义方式2定时,计数初值为256-40,一个周期中断10次为400us,在中断计数为1和2(或任意两次计数之间)时,对P1.0求反即可。

#include

sbit P1_0=P1^0; //输出周期引脚

unsigned char cnt=0; //中断次数计数器,初值为0 void main(){

P1_0=0; //输出初值为0(低电平) TMOD=0x02; //T0方式2定时 TH0=256-40; //计40次(定时40us),计数初值为模256减40 TL0=TH0;

IE=0x82; //允许CPU响应中断(10000010),允许T0发中断请求 TR0=1; //启动T0

for(;;){} //无限循环等待中断 }

void timer0()interrupt 1 using 1{ cnt++;//中断次数加1

if(cnt==1||cnt==2) P1_0=!P1_0; //中断次数为1或2时对输出引脚求反 if(cnt==10)cnt=0; //中断次数达到10时复位为0 }

答:据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为363.63μs和36.37μs。如果系统采用6MHz晶振的话,Tcy=2μs,因此高低电平输出取整,则约为364μs和36μs。参考程序如下:

MAIN: WAIT: IT0P: DLY:

ORG 0000H LJMP MAIN ORG LJMP IT0P MOV MOV SETB TR0 SETB ET0 SETB EA SETB P1.0 AJMP WAIT CLR

CLR MOV

DJNZ R0,DLY MOV SETB P1.0 SETB EA RETI

000BH TMOD,#02H TL0,#4AH

;定时器/计数器T0为定时方式2 ;定时364μs初值赋值 ;启动T0,开始计数 ;允许T0中断 ;CPU开中断

EA

P1.0 R0,#9 TL0,#4AH ;关中断

;延时36μs ;定时364μs初值赋值

第8章 串行口的工作原理及应用 思考题及习题8参考答案

一、填空

1、AT89S51的串行异步通信口为(单工/半双工/全双工)。

答:全双工。

2. 串行通信波特率的单位是( )。 答:bit/s

3. AT89S51的串行通信口若传送速率为每秒120帧,每帧10位,则波特率为( ) 答:1200

4.串行口的方式0的波特率为( )。 答:fosc/12

5.AT89S51单片机的通讯接口有( )和( )两种型式。在串行通讯中,发送时要把( )数据转换成( )数据。接收时又需把( )数据转换成( )数据。

答:并行,串行,并行,串行,串行,并行

6.当用串行口进行串行通信时,为减小波特率误差,使用的时钟频率为( )MHz。 答:11.0592

7.AT89S51单片机串行口的4种工作方式中,( )和( )的波特率是可调的,这与定时器/计数器T1的溢出率有关,另外两种方式的波特率是固定的。

答:方式1,方式3 8.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式( )。 答:方式1。

9.在串行通信中,收发双方对波特率的设定应该是( )的。 答:相同的。

10.串行口工作方式1的波特率是( )。 答: 方式1波特率=(2SMOD /32)×定时器T1的溢出率

二、单选

1.AT89S51的串行口扩展并行I/O口时,串行接口工作方式选择。 A. 方式0 B.方式1 C. 方式2 D.方式3 答:A 2. 控制串行口工作方式的寄存器是。

A.TCON B.PCON C. TMOD D.SCON 答:D 三、判断对错

1.串行口通信的第9数据位的功能可由用户定义。对

2.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。对 3.串行通信方式2或方式3发送时,指令把TB8位的状态送入发送SBUF中。错

4.串行通信接收到的第9位数据送SCON寄存器的RB8中保存。对

5.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。对 6. 串行口工作方式1的波特率是固定的,为fosc/32。错

7. AT89S51单片机进行串行通信时,一定要占用一个定时器作为波特率发生器。错 8. AT89S51单片机进行串行通讯时,定时器方式2能产生比方式1更低的波特率。错 9. 串行口的发送缓冲器和接收缓冲器只有1个单元地址,但实际上它们是两个不同的寄存器。对

四、简答

1.在异步串行通信中,接收方是如何知道发送方开始发送数据的?

答:实质就是如何检测起始位的开始。当接收方检测到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。

2.AT89S51单片机的串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

答:有4种工作方式:方式0、方式1、方式2、方式3; 有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率,

方式1的波特率=2SMOD/32×定时器T1的溢出率 方式2的波特率=2SMOD /64×fosc

方式3的波特率=2SMOD /32×定时器T1的溢出率

5.某AT89S51单片机串行口,传送数据的帧格式由1个起始位(0)、7个数据位、1个偶校验和1个停止位(1)组成。当该串行口每分钟传送1 800个字符时,试计算出它的波特率。

答:串口每秒钟传送的字符为:1800/60=30个字符/秒 所以波特率为:30个字符/秒×10位/个字符=300b/s