单片机原理及接口技能技术总结-C51编程(张毅刚第二版)-习题答案 下载本文

精心整理

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 sbitP1_0=P1^0;//输出周期引脚 unsignedcharcnt=0;//中断次数计数器,初值为0 voidmain(){ P1_0=0; //输出初值为0(低电平) TMOD=0x02; //T0方式2定时 TH0=256-40; //计40次(定时40us),计数初值为模256减40 TL0=TH0; IE=0x82; //允许CPU响应中断,允许T0发中断请求 TR0=1; //启动T0 for(;;){} //无限循环等待中断 }

voidtimer0()interrupt1using1{ 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:

ORG0000HLJMPMAINORGLJMPIT0PMOVMOVSETBTR0SETBET0SETBEASETBP1.0AJMPWAITCLR CLRMOV

DJNZR0,DLYMOVSETBP1.0SETBEARETI 000BHTMOD,#02HTL0,#4AH

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

EA

P1.0R0,#9TL0,#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.方式0B.方式1C.方式2D.方式3答:A 2.控制串行口工作方式的寄存器是。 A.TCONB.PCONC.TMODD.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)组成。当该串行口每分钟传送1800个字符时,试计算出它的波特率。

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