单片机简答题1重要.docx
《单片机简答题1重要.docx》由会员分享,可在线阅读,更多相关《单片机简答题1重要.docx(15页珍藏版)》请在冰豆网上搜索。
![单片机简答题1重要.docx](https://file1.bdocx.com/fileroot1/2022-11/25/2134029f-de0b-4a3d-a3a0-b51b2b839214/2134029f-de0b-4a3d-a3a0-b51b2b8392141.gif)
单片机简答题1重要
一、单片机概述:
8051单片机的基本组成:
中央处理器CPU:
8位,运算和控制功能
内部RAM:
共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。
内部ROM:
4KB掩膜ROM,用于存放程序、原始数据和表格。
定时/计数器:
两个16位的定时/计数器,实现定时或计数功能。
并行I/O口:
4个8位的I/O口P0、P1、P2、P3。
串行口:
一个全双工串行口。
中断控制系统:
5个中断源(外中断2个,定时/计数中断2个,串行中断1个)
时钟电路:
可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ
32位的ARM和DSP。
1、单片机主要应用于哪些领域?
答:
单片机主应用在下列领域:
工业控制、仪器仪表、电机技术、办公自动化和计算机外部设备、汽车与节能、导航与控制、商用产品、家用电器等。
2、MCS-51系列单片机有什么特点?
答:
MCS-51系列单片机有以下特点:
集成度高、系统结构简单、扩展方便、抗干扰能力强、处理能力强、速度快、开发方便和兼容性好等。
二、MCS-51单片机的结构和原理:
1、MCS-51单片机主要是由哪些硬件组成?
答:
主要由CPU,程序存储器(ROM),数据存储器(RAM),2个16位的定时器/计数器,4个8位并行I/O口:
P0、P1、P2、P3,1个全双工串行I/O口等组成。
其中CPU又由运算器和控制器两部分组成。
2、MCS-51单片机可寻址的ROM和RAM为多大?
为什么?
答:
都为64KB,因为它的数据指针DPTR为16位,216=64K。
3、请指出程序存储器中有特殊用途的几个单元,并说明它们的作用是什么?
答:
程序存储器中有7个单元留作特殊用途。
其作用如下:
0000H:
单片机复位后,PC=0000H,即程序从0000H开始执行指令。
0003H:
外部中断0入口地址。
000BH:
定时器T0溢出中断入口地址。
0013H:
外部中断1入口地址。
001BH:
定时器T1溢出中断入口地址。
0023H:
串行口中断入口地址。
002BH:
定时器T2溢出或T2EX端负跳变中断入口地址,仅对52系列有用。
4、位地址55H和字节地址55H有什么区别?
位一址55H在RAM区中的具体位置在哪里?
答:
位地址55H只是RAM区中的一个位,字节地址55H是RAM中的一个字节单元,包括8个位。
位地址55H在RAM区中的2AH单元的第6位(也可由2AH.5描述此位地址)。
三、MCS-51单片机的指令系统习题:
1、设在8051单片机内部RAM中,已知(31H)=32H,(32H)=34H,(41H)=56H,(42H)=78H,请分析下列程序中各条指令执行后,各存储器和寄存器以及端口的内容。
MOV A,41H
MOV R0,A
MOV P1,#0BBH
MOV @R0,31H
MOV DPTR,#1234H
MOV 41H,32H
MOV R0,31H
MOV 60H,R0
MOV 42H,#41H
MOV A,@R0
MOV P2,P1
答:
执行程序后,P2=BBH,A=34H,(42H)=56H,(56H)=32H,R0=32H,(41H)=34H,DPTR=1234H,P1=BBH。
2、十进制调整指令DAA的功能是什么?
其运作过程是怎样的?
答:
功能是:
对两个BCD变量相加后存放在累加器中的结果进行调整,使之成为一个正确的两位BCD数。
十进制调整所做的工作就是进行内部加法操作,其依据如下:
(1)、若AC标志为1,或BCD变量的个位数(低四位)大于9,则对此个位数进行加6调整。
(2)、若CY标志为1,或BCD变量的十位数(高四位)大于9,则对此十位数进行加6调整。
(3)、上述调整过程中,如果BCD码的最位产生进位,则CY置1,若无进位,则不对CY进行清零操作。
这样,CY就成了两个BCD变量相加之和是否大于99的标志了。
OV和AC位不受此指令的影响。
四、应用程序设计习题:
1、思考如何编写一个子程序,将单字节的十六进制数转换成为单字节BCD码整数。
答:
参考程序如下:
入口条件:
待转换的单字节十六进制整数在累加器A中。
出口信息:
转换后的BCD码整数(十位和个位)仍在累加器A中,百位在R3中。
影响资源:
PSW、A、B、R3。
堆栈需求:
2字节。
MOV B,#100 ;分离出百位,存放在R3中
DIV AB
MOV R3,A
MOV A,#10 ;余数继续分离十位和个位
XCH A,B
DIV AB
SWAP A
ORL A,B ;将十位和个位组成BCD码
RET
2、设在ROM中有一表格TAB,表格的字节数存放在R7中,思考如何编一程序实现在表格中查找和累加器A中的内容相符的内容。
答:
参考程序如下:
入口条件:
待查找的内容在A中,表格首地址在DPTR中,表格的字节数在R7中。
出口信息:
OV=0时,顺序号在累加器A中;OV=1时,未找到。
影响资源:
PSW、A、B、R2、R6
FDS:
MOV B,A ;保存待查找的内容
MOV R2,#0 ;顺序号初始化(指向表首)
MOV A,R7 ;保存表格的长度
MOV R6,A
FD11:
MOV R2,A ;按顺序号读取表格内容
MOV DPTR,#TAB ;取表格首址
MOVC A,@A+DPTR
CJNE A,B,FD12 ;与待查找的内容比较
CLR OV ;相同,查找成功
MOV A,R2 ;取对应的顺序号
RET
FD12:
INC R2 ;指向表格中的下一内容
DJNZ R6,FD11 ;查完全部表格内容
SETB OV ;未查找到,失败
RET
五、定时/计数器习题
1、8051单片机内部有几个定时器/计数器?
它们是由哪些专用的寄存器组成的?
答:
8051单片机内部有两个定时器/计数器,它们分别为T0、T1,其中T0由特殊功能寄存器TH和TL0构成。
T1由特殊功能寄存器TH1和TL1构成。
2、若定时器/计数器T0设置的初值为0FFFFH,并且选用方式1的计数方式,则此时T0实际的用途是什么?
答:
将T0的计数初值设置为0FFFFH,即外界来一个输入脉冲,则产生溢出中断,因此可以利用该特性将定时器/计数器T0作为一个外部事件的中断源,并在T0的溢出中断服务程序中设置相关的中断服务程序。
3、可编程定时器/计数器8253有几个计数器和几种工作方式?
答:
可编程定时器/计数器8253芯片内有三个16位定时器/计数器,一共有6种工作方式。
4、8051单片机的晶振频率为6MHz,思考如何编程使P1.0输出500ms的方波。
答:
参考程序如下:
ORG 0000H
AJMP MAIN
ORG 000BH ;T的中断服务程序
AJMP T0INT
MAIN:
MOV R0,#05H ;清除寄存器0的值
CLR P1.0
MOV TMOD,#61H ;T0工作在定时器方式1
MOV TH0,#2FH ;设置计数初值
MOV TL0,#0E0H
SETB ET0 ;开T0中断
SETB EA ;开CPU中断总允许位
SETB TR0 ;启动定时器0
LOOP:
CJNE R0,#05H,STIME
SJMP LOOP
T0INT:
INC R0
MOV TH0,#2FH
MOV TL0,#0E0H
RETI
STIME:
CPL P1.0
MOV R0,#00H
SJMP LOOP
END
5.在8051中,已知晶振频率为12MHz,试编程使P1.0和P1.1分别输出周期为2ms和500ms的方波
#include
#defineucharunsignedchar
#defineuintunsignedint
uintTime_Num_2ms,Time_Num_500ms;
sbitPWM1=P1^0;//位定义2ms方波输出的端口
sbitPWM2=P1^1;//位定义500ms方波输出的端口
voidInitTimer0(void)
{
TMOD=0x01;//设定定时器0为工作方式1
TH0=(65536-1000)/256;//装初值,1ms初值
TH0=(65536-1000)%256;//装初值,1ms初值
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
voidT0Timer()interrupt1
{
TH0=(65536-1000)/256;//重装初值,1ms初值
TH0=(65536-1000)%256;//重装初值,1ms初值
Time_Num_2ms++;
Time_Num_500ms++;
}
voidmain(void)
{
P1=0xff;
InitTimer0();
while
(1)
{
if(Time_Num_2ms==2)
{
Time_Num_2ms=0;
PWM1=~PWM1;
}
if(Time_Num_500ms==500)
{
Time_Num_500ms=0;
PWM2=~PWM2;
}
}
}
六、MCS-51单片机的系统扩展:
1、根据存储器的介质的性质,半导体存储器可以分为哪几类?
各类中的存储器有什么特点?
答:
根据存储器介质的性质,半导体存储器可以分成三类:
只读存储器(ROM、PROM),随机存取存储器(SRAM、DRAM),不挥发性读写存储器(EPROM、EEPROM、FlashMemory等)。
各类存储器的特点请参见教材。
2、EPROM一般情况下有哪些工作方式?
答:
EPROM在一般情况下有读方式、维持方式、编程方式、编程校验方式和编程禁止方式,共五种工作方式。
七、MCS-51单片机的串行接口:
1、全双工、半双工、单工通信有什么异同?
答:
只能单方向传送信息的称为单工;能双向传送信息,但在同一时刻,信息只能向一个方向传送的称为半双工;能同时实现信息的双向传送的称为全双工。
2、MCS-51串行I/O接口的基本工作原理?
答:
MCS-51串行I/O接口的基本工作原理是:
(1).发送时,将CPU送来的并行数据转换为一定格式的串行数据,然后从引脚TXD按照规定的波特率一位一位的发送出去。
(2).接收时,监视引脚RXD,一旦出现起始位"0",就将外围设备送来的一定格式的串行数据转换成并行数据,等待CPU读入。
3、为什么作串口通信时,常常采用晶振频率为11.0592MHz的晶振?
答:
由于定时器T1的初值只能为整数,这样就不可避免要产生波特率误差。
为了降低误差,一般采用晶振频率为11.0592MHz的晶振。
八、MCS-51单片机的中断系统:
1、什么叫中断?
CPU为什么要采用中断结构?
答:
所谓中断,是指当计算机在执行正常的程序时,系统中出现一些急需CPU处理的异常情况或特殊请求,此时CPU暂时停止现在的程序,转去处理紧迫的事件,并在处理完毕后自动返回原来的正常程序继续运行。
引入中断之后,单片机具有以下的优点:
(1).CPU可以与外设实现同步工作。
(2).可以实时处理数据。
(3).实现对故障的自诊断。
2、中断嵌套的原则是什么?
答:
中断嵌套的原则是:
一个正在执行的低优先级中断服务程序可以被高优先级的中断源所中断;同级的或低优先级的中断源不能中断正在执行的同级或高级的中断服务程序。
3、单片机响应中断的条件和过程是怎样的?
答:
单片机响应中断的条件和过程是:
中断源有中断请求,CPU允许所有中断源请求中断(EA=1),中断允许寄存器IE的相应位置"1"状态。
这样,CPU在每个机器周期顺序采样每个中断源,并按优先级顺序查询中断标志。
若查询到某一个中断标志为1时,如果没有被下述条件所阻止,CPU则在下一个机器周期的S1响应激活了的最高优先级中断请求。
(1).CPU正在处理相同的或更高优先级的中断。
(2).当前的机器周期不是所执行指令的最后一个机器周期。
(3).正在执行的指令是RETI或者是访问IE或IP的指令。
若CPU正在执行RETI或者访问IE、IP,则至少要再执行一条指令CPU才会响应新的中断请求。
单片机常用名词解释
总线:
指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。
地址总线(AB):
地址总线是单向的,用于传送地址信息。
地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总线由P0口经地址锁存器提供低8位地址(A0~A7),P2口直接提供高8位地址(A8~A15)。
数据总线(DB):
一般为双向,用于CPU与存储器,CPU与外设、或外设与外设之间传送数据信息(包括实际意义的数据和指令码)。
数据总线宽度为8位,由P0口提供。
控制总线(CB):
是计算机系统中所有控制信号的总称,在控制总线中传送的是控制信息。
由P3口的第二功能状态和4根独立的控制总线,RESET、EA、ALE、PSEN组成。
存储器:
用来存放计算机中的所有信息:
包括程序、原始数据、运算的中间结果及最终结果等。
只读存储器(ROM):
只读存储器在使用时,只能读出而不能写入,断电后ROM中的信息不会丢失。
因此一般用来存放一些固定程序,如监控程序、子程序、字库及数据表等。
ROM按存储信息的方法又可分为以下几种:
1、掩膜ROM:
掩膜ROM也称固定ROM,它是由厂家编好程序写入ROM(称固化)供用户使用,用户不能更改内部程序,其特点是价格便宜。
2、可编程的只读存储器(PROM):
它的内容可由用户根据自已所编程序一次性写入,一旦写入,只能读出,而不能再进行更改,这类存储器现在也称为OTP(OnlyTimeProgrammable)。
3、可改写的只读存储器EPROM:
前两种ROM只能进行一次性写入,因而用户较少使用,目前较为流行的ROM芯片为EPROM。
因为它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。
4、可电改写只读存储器(EEPROM):
EEPROM可用电的方法写入和清除其内容,其编程电压和清除电压均与微机CPU的5V工作电压相同,不需另加电压。
它既有与RAM一样读写操作简便,又有数据不会因掉电而丢失的优点,因而使用极为方便。
现在这种存储器的使用最为广泛。
随机存储器(RAM):
这种存储器又叫读写存储器。
它不仅能读取存放在存储单元中的数据,还能随时写入新的数据,写入后原来的数据就丢失了。
断电后RAM中的信息全部丢失。
因些,RAM常用于存放经常要改变的程序或中间计算结果等信息。
RAM按照存储信息的方式,又可分为静态和动态两种。
1、静态SRAM:
其特点是只要有电源加于存储器,数据就能长期保存。
2、动态DRAM:
写入的信息只能保存若干ms时间,因此,每隔一定时间必须重新写入一次,以保持原来的信息不变。
可现场改写的非易失性存储器:
这种存储器的特点是:
从原理上看,它们属于ROM型存储器,从功能上看,它们又可以随时改写信息,作用又相当于RAM。
所以,ROM、RAM的定义和划分已逐渐的失去意义。
1、快擦写存储器(FLASH)
这种存储器是在EPROM和EEPROM的制造基础上产生的一种非易失性存储器。
其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丢失信息的特点,所以发展迅速。
2、铁电存储器FRAM
它是利用铁电材料极化方向来存储数据的。
它的特点是集成度高,读写速度快,成本低,读写周期短。
时钟周期:
计算机在时钟信号的作用下,以节拍方式工作。
因此必须有一个时钟发生电路,输入微处理器的时钟信号的周期称为时钟周期。
机器周期:
机器完成一个动作所需的时间称为机器周期,一般由一个或一个以上的时钟周期组成。
在我们讲述的MCS-51系列单片机中,一个机器周期由12个时钟周期组成。
指令周期:
执行一条指令(如“MOV A,#34H”,该指令的含义是将立即数34H传送到微处理器内的累加器A中)所需时间称为指令周期,它由一个到数个机器周期组成。
指令周期的长短取决于指令的类型,即指令将要进行的操作步聚及复杂程度。
汇编:
是能完成一定任务的机器指令的集合。
二进制数:
只有0和1两个数码,基数为二。
16进制数:
采用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等16个数码,其中A-F相应的十进数为10-15,基数是16。
指令:
是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。
字节:
8位二进制数组成一个字节,在存储器中以字节为单位存储信息。
字:
2个字节组成一个字。
双字:
2个字组成一个双字。
补码:
机器数可用不同的码制来表示,补码表示法是最常用的一种,正数采用符号-绝对值表示,即数的最高有效位为0,数的其余部分则表示数的绝对值;负数的表示要麻烦一些,先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位加1,就可以得到该负数的补码表示了。
段地址:
8086CPU将1MB的存储器空间分成许多逻辑段,每个段最大限制为64KB,段地址就是逻辑段在主存中的起始位置。
为了能用16位寄存器表示段地址,8086规定段地址必须是模16地址,即为xxxx0H形式,省略低4位0,段地址就可以用16位数据表示,它通常被保存在16位的段寄存器中。
偏移地址:
存单元距离段起始位置的偏移量简称偏移地址,由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。
物理地址:
在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址,把段地址左移4位再加上偏移地址就形成物理地址。
代码段:
程序员在编制程序时要把存储器划分成段,代码段用来存放程序的指令序列,代码段的段地址存放在CS中,指令指针寄存器IP指示代码段中指令的偏移地址,处理器利用CS:
IP取得下一条要执行的指令。
数据段:
数据段存放当前运行程序所用的数据,数据段的段地址存放在DS中。
附加段:
附加段是附加的数据段,也用于数据的保存,另外,串操作指令将附加段作为其目的操作数的存放区域。
附加段的段地址存放在ES中。
堆栈段:
堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆栈指针寄存器SP指示堆栈栈顶的偏移地址,处理器利用SS:
SP操作堆栈中的数据。
堆栈:
堆栈是一个"后进先出"的主存区域,位于堆栈段中,使用SS段寄存器记录其段地址。
它只有一个出入口,即当前栈顶,栈顶是地址较小的一端(低端),它用堆栈指针寄存器SP指定。
堆栈有两种以字为单位的基本操作,对应两条基本指令:
进栈指令PUSH和出栈指令POP。
伪指令:
汇编语言程序的语句除指令外还包括伪指令和宏指令,伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,完成诸如数据定义、分配存储区、指示程序结束等功能。
宏指令:
宏是源程序中一段有独立功能的程序代码,它只需要在源程序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。
宏指令是用户自定义的指令,在编程时将多次使用的功能用一条宏指令来代替。
子程序:
子程序又称为过程,它相当于高级语言中的过程和函数。
在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它;某些常用的特定功能的程序段也可编制成子程序的形式供用户使用。
中断:
中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。
中断处理程序:
当中断发生时,处理器中止当前正在运行的程序,而转到处理特殊事件的程序段中去执行,这种处理中断的子程序就是中断处理程序,又称为中断服务程序。
中断处理程序的入口地址被安排在中断向量表中。
BIOS中断:
在存储器系统中,从地址0FE000H开始的8KROM中装有BIOS(BasicInput/OutputSystem)例行程序。
驻留在ROM中的基本输入输出程序BIOS提供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。
BIOS中断给程序员编程带来很大方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程序。
暂存器:
用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。
中断:
中断是单片机实时地处理内部或外部事件的一种内部机制。
当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
掉电保护:
指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丢失,当主电源恢复供电时,又自动切换为主电源供电。
寄存器寻址:
操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。
波特率:
即每秒钟传送二进制数的位数,波特率越高,数据传输的速度越快。
D/A转换:
即将二进制数量转换成与其量值成正比的电流信号或电压信号。
A/D转换:
即将模拟量转换成相应的数字量,然而送计算机处理。
串行方式:
指数据的各位分时传送,只需一条数据线,外加一条公共信号地线和若干条控制信号线。
并行方式:
指数据的各位同时传送,每一条数据都需要一条传输线。
伪指令:
用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
SLEEPMODI睡觉模式:
保证程序内部运行,但与外部的传输等动作已停止的一种运行模式。
linking连接:
把编译后生成的*.obj文件与其它*.obj文件合并成机器能识别的机器文件。
I²C:
输入与输出共用一条传输线,而时钟由另一条线控制的一种串行传输方式。
SFR特殊功能寄存器区:
8051把CPU中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分布在地址从80H到FFH范围内,这个区域称为特殊功能寄存器区SFR。
1.中断响应的过程:
计算机每执行一个指令周期都要查看中断标志,一但有中断标志置位,PC指针自动压入堆栈,然后指向相应的中断向量处,完成保护现场,IFR恢复现场,最后中断返回PC出栈,在原断点处自动运行