单片机原理及应用(林立-张俊亮版)课后习题答案---副本

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第2章MCS-51单片机结构及原理习题6.片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?答:片内RAM中低128个单元划分为三个部分:①工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用;②可位寻址区(20H-2FH),16B,位地址为00H-7FH,用作为按位寻址的空间;③用户RAM区(30H-7FH),80B,用作普通RAM单元或堆栈。7.程序状态字寄存器PSW各位的定义是什么?答:程序状态字寄存器PSW各位的定义如下:PSW.7:进/借位标志CY,加法有进位时置1,减法有借位时置1;PSW.6:辅助进位标志AC,加法运算低四位向高上四位有进位时置1;PSW.5、PSW.1:用户标志位F0和用户标志位F1,保存用户的位数据;PSW.4、PSW.3:工作寄存器选择控制位RS1和RS0,00至11分别选择四组工作之一作为当前工作寄存器PSW.2:溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于255即乘积在BA中,或除法运算除数为0)时置1PSW.0:奇偶标志位P,累加器A中1的个数为奇数时置1。8.什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期为多少微秒?答:时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。机器周期:由12个时钟周期构成,完成一个基本操作指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由1~4个机器周期构成。当振荡频率为12MHz时,一个机器周期为1微秒。第4章单片机的C51语言习题1.C语言的优点是什么?C程序的主要结构特点是什么?答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文件,C程序可与汇编语言混合编程。CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.025.定义变量a,b,c,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型变量,c为指向int型xdata区的指针。答:charbdataa;floatxdatab;intxdata*c;9.内部RAM20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。解:方法一:#includereg51.hvoidmain(){unsignedint*ptr;//设置一个内部RAM指针unsignedintx,y,z;ptr=0x20;//指向0x20单元x=*ptr;//取第一个数ptr=0x22;//指向0x22单元y=*ptr;//取第二个数z=(xy)?x:y;//将两数中的较大者赋给zptr=0x24;//指向地址为0x24的目标单元*ptr=z;//将大数存入目标单元}方法二:#includereg51.h#includeabsacc.hvoidmain(){unsignedintx,y,z;x=DBYTE[0X20]*256+DBYTE[0X21];y=DBYTE[0X22]*256+DBYTE[0X23];z=(xy)?x:y;//将两数中的较大者赋给zDBYTE[0X24]=z/256;DBYTE[0X25]=z%256;}方法三:#includereg51.hunsignedintx_at_0x20;unsignedinty_at_0x22;unsignedintz_at_0x24;voidmain(){z=(xy)?x:y;}3第5章单片机的中断系统习题1.什么是中断、中断源、中断优先级和中断嵌套?答:中断是指单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收及外部事件(如键盘按键动作)等进行自动的检测判断。当CPU正在处理某件事情(例如正在执行主程序)的时候,外部或内部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求CPU迅速处理,于是,中断管理系统会置位相应标志通知CPU暂时中止当前的工作,迅速转去处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。引发中断的事件称为中断源。将中断事件按轻重缓急分若干级别叫中断优先级。允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套。2.什么叫中断源?MCS-51有哪些中断源?答:中断源即引发中断的事件。MCS-51单片机有5个中断源,它们是外部中断0,定时器T0,外部中断1,定时器T1,串行口。7.设fosc=12MHz,利用定时器,TO(工作在方式2)在P1.1引脚上获取输出周期为O.4ms的方波信号,定时器溢出时采用中断方式处理,请编写,T0的初始化程序及中断服务程序。解:fosc=12MHz,则机器周期=1us;当T0工作在方式2时,其最大定时时间为256us,要输出周期为0.4mS即400us的方波信号,则其高、低电平应各为200us,显然当定时器T0按方式2工作时,只需计数达到200次即可,因此其时间常数初值为256-200=56。在T0的中断服务程序中,只需将P1.1引脚求反即可。#includereg51.hsbitP1_1=P1^1;voidtimer0()interrupt1using1{P1_1=!P1_1;}voidmain(){P1_1=0;TMOD=0x02;TH0=56;TL0=56;IE=0x82;TR0=1;for(;;){}}4第6章单片机的定时器/计数器习题2.如果采用的晶振频率为3MHz,定时/计数器TO分别工作在方式0、1和2下,其最大的定时时间各为多少?答:如果采用的晶振频率为3MHz,机器周期为12×1/(3*106)=4us,由于定时/计数器TO工作在方式0、1和2时,其最大的计数次数为8192、65536和256所以,其最大定时时间分别是:方式0为8192×4us=32.768ms、方式1为65536×4us=262.144ms、方式2为256×4us=1024us。5.定时器工作在方式2时有何特点?适用于什么应用场合?答:定时器工作在方式2时是一个可自动装入时间常数初值的8位定时/计数器,TLx为加1计数器,THx为计数初值寄存器。由于其恢复初值由硬件自动完成,所以当需要反复计数时,用方式2可以方便地实现精确的定时。9.设单片机的fosc=12MHz,使P1.O和P1.1分别输出周期为1ms和lOms的方波,请用定时器TO方式2编程实现。解:fosc=12MHz,所以机器周期为1us。要使P1.0输出周期为1000us的方波,可以通过定时中断方式实现,定时时间为250us,定时计数2次来实现,对P1.0求反即可。要使P1.1输出周期为10ms的方波,也可以通过定时中断方式实现,定时时间为5ms,当时间到时,对P1.1求反即可。由于5ms/250us=20,所以也可以通过对250us的定时计数20次来实现。程序如下:#includereg51.hsbitP1_0=P1^0;//输出周期为400us的方波的引脚sbitP1_1=P1^1;//输出周期为10ms的方波的引脚unsignedcharnum1=0,num2=0;//中断次数计数器,初值为0voidmain(){P1_0=0;//输出初值为0P1_1=0;//输出初值为0TMOD=0x02;//T0方式2定时TH0=256-250;//计200次,计数初值为模256减200TL0=TH0;IE=0x82;//允许CPU响应中断,允许T0发中断请求TR0=1;//启动T0for(;;){}//无限循环等待中断}voidtimer0()interrupt1using1{num1++;num2++;//中断次数加1if(num1==2)//中断次数达到2次{P1_0=!P1_0;//输出P1_0求反num1=0;//中断次数复位为0}if(num2==20){//中断次数达到20次num2=0;//中断次数复位为0P1_1=!P1_1;//输出P1_1求反5}}第七章7.1.无7.4.89C51单片机串行通信接口控制寄存器有几个?每个寄存器的含义是什么?答:有电源控制寄存器PCON和串行口控制寄存器SCONPCON中SMOD与串口通信有关。SMOD=0;串口方式1,2,3时,波特率正常。SMOD=1;串口方式1,2,3时,波特率加倍其余与串行通信无关SCON中SM0、SM1:串行口工作方式控制位SM2:多机通信控制位REN:串行口接收使能控制端;REN=1时,允许接收,REN=0时,禁止接收TB8:发送接收数据位8RB8:接收数据位8TI:发送中断标志位;TI=1表示帧发送结束,TI可由软件置0RI:接收中断标志位;RI=1表示帧接收完成,RI可由软件置0第八章8.1无8.3在由单片机80C51和一片ADC0809组成的数据采集系统中,假设ADC0809的地址为0x7ff8~0x7fff,画出接口电路图,并编写每隔1ms轮流采集一次8个通道数据的程序。采样100次取平均值。答:电路图书上实例有,做了如下改动1.控制端ADDA,ADDB,ADDC分别接P2^0,P2^!,P2^2.2.删去了译码器与逻辑器件器件,74LS373,74HC14,74HC02,3.中断检测端EOC接P3^2。参考程序如下,自己写的没经过仿真,#includereg52.h#includeabsacc.h#defineucharunsignedchar//宏定义#defineuintunsignedint#defineAD_0XBYTE[0xff8]//定义通道访问地址#defineAD_1XBYTE[0xff9]#defineAD_2XBYTE[0xffa]6#defineAD_3XBYTE[0xffb]#defineAD_4XBYTE[0xffc]#defineAD_5XBYTE[0xffd]#defineAD_6XBYTE[0xffe]#defineAD_7XBYTE[0xfff]sbitbusy=P3^2;//定义中断请求端ucharcount=0;//定义采样次数uchardatcode[100]={0};//定义数据存放数组intdat=0,dat1=0;//定义临时数据与最终平均数据uchari,j,num;//定义变量voidmain(){TMOD=0x01;//定时器0工作方式1TL0=(65536-1000)/256;//1ms中断一次TH0=(65536-1000)%256;EA=1;//开总中断,定时器中断,打开定时器0ET0=1;TR0=1;while(count100)//100次数据求和函数{dat1=dat1+datcode[i];count++;}dat=dat1/100;if(count=100)count=0;}voidtimer0()interrupt1//中断函数{TMOD=0x01;TL0=(65536-1000)/256;TH0=(65536-1000)%256;AD_0=0;//启动0通道AD转换while(busy==1){num=AD_0+1;//把0通道数据附给num,并指向AD_1通道查询datcode[i+1]=num;j++;if(j==7)//八次查询完毕退出循环{busy=0;j=0;}}7}

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功