简述单片机与微计算机的异同
都是一个完整的计算机系统,都具有运算器、控制器、存储器和输入输出接口4个基本组成部分
结构不同:单片机是在一块芯片上集成了4个基本组成部分
什么是RAM? 什么是ROM? 区分其性能和用途
RAM存储器(可读/写存储器)是指断电信息会丢失的存储器,但这种存储器可以现场快速地修改信息,一般作为数据存储器使用
ROM存储器(只读存储器)的内容是预先写入的,而且一旦写入,使用时只能读出不能改变,掉电信息也不会丢失,一般用作存储程序或常数
结合MCS-51系列单片机功能框图阐明其大致组成
主要有8031、8051、8751三种机型,基于HMOS工艺,他们的指令系统与芯片引脚完全兼容,只是片内程序存储器(ROM)有所不同
80C51单片机内部包含哪些主要逻辑功能器件?各有什么主要功能?
- 中央处理器(CPU):由运算器、控制器和布尔(位)处理器组成;产生控制信号,把数据从存储器或输入入口传送到CPU或反向传送,还可以对输入数据进行算术逻辑运算及位操作处理
- 存储器:存储数据和程序
- 并行输入输出接口:4个8位并行I/O口(P0、P1、P2、P3)
- 时钟电路:产生时钟脉冲,保证各部件的同步工作
- 复位电路:使CPU和系统中其他部件都处于一个确定的工作状态,并从这个状态开始工作
什么是ALU? 简述MCS-51系列单片机ALU的功能与特点
ALU(算术逻辑单元)是用于对数据进行算术运算和逻辑操作的执行部件,由加法器和其他逻辑电路组成。在控制信号的作用下,能完成算术加、减、乘、除和逻辑与、或、异或等运算以及循环移位操作、位操作等功能
如何认识80C51存储器空间在物理结构上可划分为4个空间,而在逻辑上又可划分为3个空间?
物理结构上:分为片内程序存储器,片外程序存储器,片内数据存储器,片外数据存储器
逻辑上:分为片内外统一编址的64KB程序存储器地址空间(16位地址),256B片内数据存储器地址空间(8位地址),64KB片外数据存储器地址空间(16位地址)
在访问3个不同的逻辑地址时,应采用不同形式的指令,以产生不同的存储空间的选通信号
什么是堆栈?堆栈有何作用? 在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU在操作中要使用两组工作寄存器,你认为SP的初值应该为多大
堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。它的特点是按照先进后出的原则存取数据,这里的进与出是指进栈与出栈操作。
80C51片内RAM的部分单元可以用做堆栈。有一个8位的堆栈指针寄存器SP,专用于指出当前堆栈顶部是片内RAM的哪一个单元。80C51单片机系统复位后SP的初值为07H,也就是将从内部RAM的08H单元开始堆放信息。但是,80C51系列的栈区不是固定的,只要通过软件改变SP寄存器的值便可更动栈区。为了避开工作寄存器区和位寻址区,SP的初值可置为2FH或更大的地址值。
如果CPU在操作中要使用两组工作寄存器,如果不使用位变量, SP的初值至少应为OFH或更大的值;如果使用位变量,SP的初值至少应为2FH或更大的值;Keil C51编译器会自动计算SP的初始设定值,无需编程者关心。
程序状态寄存器PSW的作用?常用状态标志位有哪几位?作用是什么?
PSW是8位寄存器,用作程序运行状态的标志
P:奇偶标志位。跟踪累加器A中内容的奇偶性
F0、F1:用户标志位。用户置位或复位
OV:溢出标志位。符号数运算时,溢出OV置1,否则清0
RS0、RS1:工作寄存器组选择位。用于选择指令当前工作的寄存器组
AC:半进位标识。当进行加法(或减法)运算时,如果低半字节(位3)向高半字节(位4)有进位(或借位),AC置1,否则清0。AC也可用于BCD码调整时的判别立。
CY:进位标识。在进行加法(或减法)运算时,如果操作结果最高位(位7)有进位,CY置1,否则清0。在进行位操作时,CY又作为位操作累加器C。
综述P0,P1,P2,P3口各有哪几种功能?
P0:通用IO接口和地址/数据分时复用总线(低8位)
P1:通用IO接口
P2:通用IO接口或高8位地址总线
P3:通用IO接口+第二功能(如下表)
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0外部中断0(低电平有效) P3.3 INT1外部中断1(低电平有效) P3.4 T0定时器/计数器0的外部输入 P3.5 T1定时器/计数器1的外部输入 P3.6 WR片外存储器写选通(低电平有效) P3.7 RD片外存储器读选通(低电平有效)
何谓时钟周期、机器周期、指令周期?80C51的时钟周期 、机器周期、指令周期是如何分配的?当振荡频率为8MHz时,一个单片机的机器周期为多少微秒?
时钟周期也称为振荡周期,定义为时钟脉冲频率( fosc)的倒数,是计算机中最基本最小的时间单位。
机器周期指系统完成一个基本操作,例如取指令、读写存储器的时间
指令周期指系统从内存中取出指令和执行指令的总时间
通常情况下,一个机器周期包含12个时钟周期,指令周期根据指令的长短具有不同的时钟周期
振荡频率为8MHz时,机器周期=12*1/8 = 1.5us
复位的作用是?有几种复位方法?复位后单片机的状态如何?
复位是单片机的初始化操作。其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。
有上电自动复位和按键手动复位两种。
复位后,程序计数器PC指向0000H,PO~P3输出口全部为高电平,堆栈指针写入07H,其他专用寄存器被清0。RST由高电平下降为低电平后,系统从O000H 地址开始执行程序。
何谓单片机最小系统?请分别画出由80C32单片机和89C52单片机组成的最小系统
单片机最小系统就是能使单片机工作的最少的器件构成的系统,是大多数控制系统必不可少的关键部分。
80C32单片机和 89C52单片机组成的最小系统如图所示

什么是寻址方式?80C51单片机有哪些寻址方式?
CPU在规定的寻址空间能迅速获得操作数的有效地址的方法称为寻址方式
- 寄存器寻址
- 寄存器间接寻址
- 直接寻址
- 立即寻址
- 变址间接寻址
- 相对寻址
- 位寻址
对80C51片内RAM的128 到255字节区域的地址空间寻址时,应注意些什么?对特殊功能寄存器,应采用何种寻址方式进行访问?
此空间有2类不同的物理存储空间,一个是特殊功能寄存器区,一个是RAM区。
直接寻址访问特殊功能寄存器,间接寻址访问RAM区。
将30H、31H单元中的十进制数与38H、39H单元中的十进制数做十进制加法,其和送入40H、41H单元,即(31H、30H)+(39H、38H)--> (41H、40H)
#include<reg52.h>
#include<absacc.h>
void main()
{
unsigned int sum;
sum = DBYTE[Ox30]+DBYTE[Ox38];
if((sum&OxO00f)>Ox9)
sum += Ox06; //个位十进制调整
if(sum>0x99)
sum += Ox60; //十位十进制调整
DBYTE[Ox40]= sum; //和低位字节
DBYTE[Ox41]=(sum>>8)+DBYTE[Ox31]+DBYTE[Ox39]; //和高位字节
if(DBYTE[Ox41]>0x09)
DBYTE[Ox41]+= Ox06; //百位十进制调整
while(1);
}
已知:(30H)=55H,(31H)=0AAH,分别写出完成下列指令,并写出32H单元的内容
- (30H)&(31H)--> (32H)
DBYTE[Ox32]= DBYTE[Ox30]& DBYTE[Ox31];Ox00 - (30H)|(31H)--> (32H)
DBYTE[Ox32]= DBYTE[Ox30]| DBYTE[Ox31];Oxff - (30H)^(31H)--> (32H)
DBYTE[Ox32]= DBYTE[Ox30]^ DBYTE[Ox31];Oxff
有程序如下:
CLR C //位操作指令,C=0
CLR RS1 //位操作指令,RS1=0
CLR RS0 //位操作指令,RS0=0
MOV A,#38H //字节操作指令,A=38H
MOV R0,A //字节操作指令,RO=(A)=38H
MOV 29H,R0 //字节操作指令,(29H)=(RO)=38H
SETB RS0 //位操作指令,(RSO) =1
MOV R1,A //字节操作指令,R1=(A)=38H
MOV 26H,A //字节操作指令,(26H)=(A)=38H
MOV 28H,C //位操作指令,(28H)=(C)=0
- 区分哪些是位操作指令?哪些是字节操作指令?
- 程序执行后,写出片内RAM有关单元的内容
- 如fosc=12mhz,计算这段程序的执行时间(答:11us)
伪指令与汇编指令有何区别?说出常用的5种伪指令的作用
- 汇编指令:编译后产生机器码的指令
- 伪指令:仅供汇编程序使用,编译后不产生机器码的指令
常用5种伪指令:
- ORG:设置起始地址
- DB或DEFB:定义字节
- DW或DEFW:定义字
- EQU:为标号赋值
- END:结束汇编,停止编译
在单片机应用开发系统中,C语言编程和汇编语言编程相比有哪些优势?
- 编程调试灵活方便
- 生成的代码编译效率高
- 完全模块化
- 可移植性好
- 便于项目维护管理
在C51中有几种关系运算符?
6种:
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
- == 测试等于
- != 测试不等于
如何定义C51的中断函数
一般格式如下:
void 函数名() interrupt n [using m]
关键字interrupt后面的n是中断号,n的取值范围为0~31。
using m指明该中断服务程序所对应的工作寄存器组,取值范围为0~3。通常不设定using m,除非保证中断程序中未调用其他子程序。
80C51有几个中断源?各中断标志位是如何产生的,如何清零的?CPU响应中断时,其中断入口地址各是多少?
80C51共有3类5个中断源,分别是2个外部中断源、2个定时中断源、1个串行口接收/发送中断源。
要实现中断,首先中断源要提出中断请求,单片机内中断请求的过程是特殊功能寄存器TCON和SCON相关状态位——中断请求标识位置1的过程,当CPU响应中断时,中断请求标识位才由硬件或软件清0。
2个外部中断源和2个定时中断源的标识由硬件自动复0,串行口接收/发送中断由软件清0。
中断入口地址:
中断源 中断入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H
80C51提供哪几种中断?在中断管理上有何特点?什么是同级内的优先权管理?中断被封锁的条件有哪些?
80C51共有3类5个中断源,分别是2个外部中断源、2个定时中断源、1个串行口接收/发送中断源。
中断管理是通过设置中断允许控制寄存器E和中断优先级寄存器IP完成的。
当同一优先级的几个中断源同时向CPU提出中断请求时,CPU通过内部硬件查询逻辑电路,按查询顺序判定优先响应哪一个中断请求,其查询顺序为:外部中断0、定时中断0、外部中断1、定时中断1、串行中断。
中断被封锁的条件:
- CPU正在处理同级或更高优先级的中断。
- 所查询的机器周期不是当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。
- 正在执行的指令是RETI或是访问IE或IP的指令。因为CPU在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。
在中断请求有效并开中断状况下,能否保证立即响应中断?有什么条件?
条件就是中断没有被封锁,即不能出现以下情况:
- CPU正在处理同级或更高优先级的中断。
- 所查询的机器周期不是当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性。
- 正在执行的指令是RETI或是访问IE或IP的指令。因为CPU在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求。
80C51单片机内部设有几个定时器/计数器?他们各由哪些特殊功能寄存器所组成?有哪几种工作方式?
80C51的单片机内有2个16位可编程的定时器/计数器。
特殊功能寄存器包括加16位加1计数器THO、TLO和 TH1、TL1;和定时控制寄存器(TCON)和工作方式控制寄存器(TMOD);
有4种工作方式,分别是:
- 方式0:13位定时器/计数器
- 方式1:16位定时器/计数器
- 方式2:初值自动重新装入的8位定时器/计数器
- 方式3:仅适用于TO,将其分为两个8位计数器。对T1停止计数
定时器/计数器用于定时,定时时间与哪些因素有关?用于计数,对外界计数频率有何限制?
当80CS1内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲位,计数器增1,因此定时器/计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的1/12。当采用12MHz频率的晶体时,计数速率为1MHz,输入脉冲的周期间隔为1us。由于定时的精度决定于输入脉冲的周期,因此当需要高分辨率的定时,应尽量选用频率较高的晶振(80C51最高为40 MHz)。
当定时器/计数器用作计数器时,计数脉冲来自外部输入引脚TO或T1。由于确认一次下跳变需要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24。为了确保某一给定的电平在变化之前能被采样一次,则这个电平至少要保持一个机器周期。
80C51单片机系统中,已知单片机晶振频率为6MHz,选用定时器0以工作方式3产生周期为400us的等宽正方波连续脉冲,请编写由P1.1口输出此方波的程序
#include "REG51.H”
sbit rect_wave=P1^1;
void time_over(void);
void main(void)
{
TMOD=Ox03;
TLO=160;
IE=Ox00;
TRO=1;
for(;;)
{
if(TFO)
time_over();
}
}
void time_over(void)
{
TFO=O;
TLO=160;
rect_wave=!rect_wave;
}
串行通信操作模式有哪几种?各有什么特点?
串行通信操作模式有2种,异步串行通信和同步串行通信。
异步串行没有专门的时钟信号,依靠事先约定的字符格式和通信速率来完成通信
同步串行收发双方建立专门的时钟信号使双方达到同步
异步串行通信时,通信双方应遵守哪些规定,1帧信息包含那些内容?
异步串行通信所传输的数据格式由1个起始位、7个或8个数据位、1~2个停止位(含1.5个停止位)和1个校验位组成。起始位约定为0,空闲位约定为1。
1帧信息包含1个起始位,8个数据位,1个停止位
本文介绍了单片机与微计算机的区别与联系,详细解析了单片机的组成与工作原理,包括存储器类型、指令周期、中断管理、定时器/计数器的工作方式等内容。

&spm=1001.2101.3001.5002&articleId=128274245&d=1&t=3&u=d8aa3792eb7d4d01a957acb7fda78988)
4516

被折叠的 条评论
为什么被折叠?



