【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《单片机原理及应用(林立》,欢迎阅读!
第2章MCS-51单片机结构及原理习题
6•片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么?答:片内RAMW氐128个单元划分为三个部分:
① 工作寄存器区〔00H-1FH〕,四组,每组8个,可作用工作寄存器切换使用;可位寻址区〔20H-2FH〕,16B,位地址为00H-7FH用作为按位寻址的空间; ② 用户RAME:30H-7FH〕,80B,用作普通RAM单元或堆栈。 7•程序状态字寄存器PSW各位的定义是什么?
:辅助进位标志AC加法运算低四位向高上四位有进位时置1;、:用户标志位F0和用户标志位F1,
保存用户的位数据;、:工作寄存器选择控制位RS1和RSQ00至11分别选择四组工作之一作为当前工作寄存器
PSW.2:溢出标志位OV有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于255即乘积在BA中,或除法运算除数为0)时置1:奇偶标志位P,累加器A中1的个数为奇数时置1。
8. 什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期为多少微秒?
答:时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。
机器周期:由12个时钟周期构成,完成一个基本操作指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由1~4个机器周期构成。 当振荡频率为12MHz时,一个机器周期为1微秒。
第4章单片机的C51语言习题
1. C语言的优点是什么?C程序的主要结构特点是什么?答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。
C程序以函数为单位,由一个主函数和假设干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文件,C程序可与汇编语言混合编程。 5•定义变量a,b,c,其中a为内部RAM勺可位寻址区的字符变量,b为外部数据存储区浮点型变量,c为指向int型xdata区的指针。 答:charbdataa;floatxdatab;
intxdata*c;内部RAM20H21H和22H23H单元分别存放着两个无符号的16位
数,将其中的大数置于24H和25H单元。
解:方法一:#includevoidmain(){ unsignedint*ptr;//设置一个内部RAM旨针 unsignedintx,y,z;
ptr=0x20;//旨向0x20单元 x=*ptr;//取第一个数
ptr=0x22;//旨向0x22单元 y=*ptr;//取第二个数
z=(x>y)?x:y;//将两数中的较大者赋给z ptr=0x24;//旨向地址为0x24的目标单元 *ptr=z;//将大数存入目标单元}方法二:
#include#includevoidmain(){ unsignedintx,y,z;
x=DBYTE[0X20]*256+DBYTE[0X21];y=DBYTE[0X22]*256+DBYTE[0X23]; z=(x>y)?x:y;//将两数中的较大者赋给z DBYTE[0X24]=z/256;
DBYTE[0X25]=z%256;}方法三:
#includeunsignedintx_at_0x20;unsignedinty_at_0x22;unsignedintz_at_0x24;voidmain() {
z=(x>y)?x:y;}
第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,要输出周期为即400us的方波信号,则其高、低电平应各为200us,显然当定时器T0按方式2工作时,只需计数到达200次即可,因此其时间常数初值为256-200=56。在T0的中断服务程序中,只需将引脚求反即可。
#includesbitP1_仁P1A1; voidtimer0()interrupt1using1{ P1_1=!P1_1;} voidmain(){ P1_1=0;
TMOD=0x02; TH0=56; TL0=56; IE=0x82; TR0=1; for(;;){}}
第6章单片机的定时器/计数器习题
2•如果采用的晶振频率为3MHz定时/计数器TO分别工作在方式0、1和2下,其最大的定时时间各为多少?
答:如果采用的晶振频率为3MHz机器周期为12X1/(3*106)=4us,由于定时/计数器TO工作在方式0、1和2时,其最大的计数次数为8192、65536和256所以,其最大定时时间分别是:方式0为8192X4us=、方式1为65536X4us=、方式2为
256X4us=1024uSo5.定时器工作在方式2时有何特点?适用于什么应用场合?答:定时器工作在方式2时是一个可自动装入时间常数初值的8位定时/计数器,TLx为加1计数器,THx为计数初值寄存器。由于其恢复初值由硬件自动完成,所以当需要反复计数时,用方式2可以方便地实现精确的定时。
9.设单片机的fosc=12MHz,使P1.O和P1.1分别输出周期为1ms和lOms的方波,请用定时器TO方式2编程实现。
解:fosc=12MHz,所以机器周期为1uso要使输出周期为1000us的方波,可以通过定时中断方式实现,定时时间为250us,定时计数2次来实现,对求反即可。
要使输出周期为10ms的方波,也可以通过定时中断方式实现,定时时间为5ms当时间到时,对求反即可。由于5ms/250us=20,所以也可以通过对250us的定时计数20次来实现。程序如下:
#includesbitP1_0=P1A0;//输出周期为400us的方波的引脚
sbitP1_仁P1A1;//输出周期为10ms的方波的引脚unsignedcharnum1=0,num2=0;//中断次数计数器,初值为0 voidmain(){
P1_0=0;//输出初值为0 P1_1=0;//输出初值为0
TMOD=0x02;//T0方式2定时
TH0=256-250;//计200次,计数初值为模256减200 TL0=TH0;
IE=0x82;//允许CPLP向应中断,允许T0发中断请求 TR0=1;//启动T0
for(;;){}//无限循环等待中断} voidtimer0()interrupt1using1{
num1++;num2++;//中断次数加1 if(num1==2)//中断次数到达2次
本文来源:https://www.wddqxz.cn/f070c801c6da50e2524de518964bcf84b9d52d17.html