单片机考试.docx
《单片机考试.docx》由会员分享,可在线阅读,更多相关《单片机考试.docx(30页珍藏版)》请在冰豆网上搜索。
单片机考试
ch1单片机基本概念
1.什么是单片机?
答:
单片机是电子计算机的一种。
在一片芯片上集成了CPU、存储器、I/O接口等组成一台完整的微型计算机
2.单片机的应用?
答:
单片机的专长则是测控,单机应用测控系统智能仪表机电一体化产品智能接口;多机应用多功能集散系统并行多机控制系统局部网络系统
3.单片机的发展趋势
答:
单片机的发展速度很快,其发展趋势主要表现在以下四个方面:
单片机的高性能化存储器大容量化外围电路内装化工艺上的提高
4.单片机命名规则
89C51 :
8代表8位单片机
9代表falsh存储器,此位置为0代表无rom,7代表eprom存储器
c代表CMOS工艺,此位置为S代表ISP编程方式
1代表片内程序存储器容量,容量大小对应为该位数字*4KB
89C52:
8KB容量
5.ch2MCS-51单片机结构及原理
1.MCS-51单片机结构及工作原理
MCS-51基本构成
ØCPU:
8位
Ø存储器:
Ø
Ø128字节RAM21个专用寄存器4K字节ROM存储器
Ø并行口:
4个8位并行口串行口:
1个全双工的串行口
Ø定时器/计数器:
2个16位的定时器/计数器中断系统:
5个中断源,两个中断优先级
Ø寻址范围:
64K字节(程序存储区和外部数据存储区各64K)
CPU:
单片机的核心部分,是单片机的指挥和执行部件。
包含两个基本部分:
运算器和控制器。
Ø运算器:
进行算术和逻辑运算,存储运算结果并作相应标记。
Ø1.算术逻辑运算部件ALU:
Ø完成各种算术运算和逻辑运算
Ø2.寄存器:
CPU内部没有单独的存储器,而是设置了一些工作寄存器,暂存数据和状态等
Ø
(1)累加器ACC:
可存放操作数和运算的中间结果;
Ø
(2)寄存器B:
主要用于乘、除运算。
寄存器B也可作为一般的寄存器用。
Ø3)程序状态字PSW
Ø程序状态字是8位寄存器,用于指示程序运行状态信息。
Ø其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。
C:
也表示为CY进(借)位标志位
在加减运算中,若操作结果的最高位有进位或有借位时,CY由硬件自动置1,否则就清0。
在位操作中,CY作为位累加器使用,参于进行位传送、位与、位或等位操作。
另外某些控制转移类指令也会影响CY位状态。
AC:
辅助进(借)位标志位。
在加减运算中,当低四位向高四位进位或借位时此标志位由硬件自动置1,否则就清0。
F0:
用户标志位,由用户通过软件设定,用以控制程序转向。
RS1,RS0:
寄存器组选择位
用于设定当前通用寄存器组的组号。
通用寄存器组共有4组,其对应关系如下
OV:
溢出标志位
在带符号数(补码数)的加减中,OV=1表示运算的结果超出了累加器A的八位符号数表示范围(-128~+127),产生溢出,因此运算结果是错误的。
OV=0,表示未超出表示范围,运算结果正确。
乘法时,OV=1,表示结果大于255,结果分别存在A,B寄存器中。
OV=0,表示结果未超出255,结果只存在A中。
除法时,OV=1,表示除数为0。
OV=0,表示除数不为0。
D1位未定义。
可用伪指令将它定义为F1,如同F0一样,作为用户设定的软件标志位。
P:
奇偶标志位。
表示累加器A中数的奇偶性;在每个指令周期由硬件根据A的内容的奇偶性,对P自动置位或复位。
P=1,表示A中内容有奇数个1。
控制器:
控制计算机各部分协调工作。
程序计数器PC(ProgramCounter)
PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。
PC具有自动加1的功能,从而实现程序的顺序执行。
由于PC不可寻址的,因此用户无法对它直接进行读写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。
PC的寻址范围为64KB,即地址空间为0000~0FFFFH。
数据指针DPTR
✓数据指针DPTR为16位寄存器,它是MCS—51中唯一的一个16位寄存器。
✓DPTR通常在访问外部数据存储器时作为地址指针使用,寻址范围为64KB。
✓编程时,既可按16位寄存器使用,也可作为两个8位寄存器分开使用。
DPH为DPTR的高八位寄存器,DPL为DPTR的低八位寄存器。
✓堆栈指针SP
✓SP为8位寄存器,用于指示栈顶单元地址。
✓堆栈是一种数据结构,只允许在其一端进行数据删除和数据插入操作的线性表。
数据写入堆栈叫入栈(PUSH),数据读出堆栈叫出栈(POP)。
堆栈的最大特点是“后进先出”的数据操作原则。
堆栈的功用
堆栈的主要功用是保护断点和保护现场。
因为计算机无论是执行中断程序还是子程序,最终要返回主程序,在转去执行中断或子程序时,要把主程序的断点保护起来,以便能正确的返回。
同时,在执行中断或子程序时,可能要用到一些寄存器,需把这些寄存器的内容保护起来,即保护现场。
指令寄存器、译码器、定时控制电路
指令寄存器(IR):
存放所取出的指令
指令译码器(ID):
对指令进行译码
定时和控制电路:
根据指令发出时序控制信号。
指令执行过程
Ø基本概念
✓指令:
是计算机执行某种操作的命令。
指令通常由操作码和操作数两部分组成。
●操作码:
表示计算机执行什么具体操作。
●操作数:
表示参加操作的数或操作数所在的地址。
程序:
为完成某项工作,将一系列指令有序地组合
复位
✓计算机在启动运行时都需要复位,使CPU和系统中的其他部件都处在一个确定的初始状态,并从这个状态开始工作。
✓只要在MCS-51单片机的RST引脚输入24个振荡周期(即2个机器周期)以上的高电平,单片机即被复位。
✓复位是单片机系统的初始化操作,系统复位后会对专用寄存器和单片机的个别引脚信号有影响,复位后对一些专用寄存器的影响情况如下:
✓MCS-51的片外总线结构
总线:
是用来传送信息的一组导线,它为CPU和其他部件之间提供数据、地址、和控制信息的传输通道。
一般包括:
✓地址总线AB:
用来传送地址信息。
地址总线是由CPU出发的,因而是单向的。
地址总线的位数决定了CPU可直接寻址的内存范围。
✓数据总线DB:
用于传送数据信息。
数据既可以从CPU传送到存储器或输入输出接口,也可以从存储器或输入输出接口传送到CPU,因而是双向的。
✓控制总线CB:
用于传送控制信号。
一种是有CPU发出到存储器或输入输出接口,一种是有输入输出接口发送到CPU的控制信号。
CPU的时序
时序的基本概念
✓计算机的工作过程就是不断执行指令的过程。
CPU每执行一条指令,都要进行取指令、译码、执行指令。
这些操作都必须按照时间节拍一步步地顺序完成。
✓人们把CPU执行一条指令的各个操作所对应的脉冲信号遵循的时间顺序称为时序。
时序严格地规定了单片机内部以及与外部各功能部件相互配合协调工作的时空关系。
✓时序图:
直观展现CPU的时序。
把执行一条指令时对应信号线上有关信息的变化按时间序列以特定的波形表示出来。
按指令的执行过程,定义了四种周期:
✓振荡周期:
为单片机提供定时信号的振荡源的周期;
✓时钟周期:
振荡脉冲二分频,又称为状态周期S;
✓机器周期:
完成一个基本操作(如取指令、读存储器等)所需要的时间称为机器周期。
机器周期由6个状态周期(12个振荡周期)组成。
✓指令周期:
CPU执行一条指令所需要的时间,可包含1~4个机器周期。
存储器:
储存二进制信息的数字电路器件。
存储器包括主存储器和外存储器。
✓外存储器(外存)指各种大容量的磁盘存储器、光盘等。
✓存储器(内存)指能与CPU直接进行数据交换的半导体存储器。
半导体存储器:
按读、写功能可以分为随机读/写存储器RAM和只读存储器ROM。
✓随机读/写存储器RAM在断电后再通电时,原存的信息全部丢失。
它主要用来存放临时的数据和程序。
✓只读存储器ROM在使用时,只能读出信息,而不能写入,且在断电后ROM中的信息仍然保留。
它主要用来存放固定不变的程序和数据。
✓可擦除只读存储器又可分为紫外线擦除的EPROM、电擦除的EEPROM和FlashROM。
✓物理结构上,8051有四个存储空间:
✓逻辑上,即从用户编程的角度看,8051只有三个存储空间:
✓8051内共有4KB掩膜ROM,片外可接60KB的EPROM,片内外统一编址
✓89C51存储器的结构
✓89C51的存储器配置方式与其他常用的微机系统不同,属哈佛结构(注意:
什么是哈佛结构?
),它把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能。
程序存储器用于存放程序和表格常数;数据存储器用于存放程序运行数据和结果。
✓
✓由如下功能部件组成:
对图2-1中的片内各部件做简单介绍。
✓1.CPU(微处理器):
运算器和控制器
✓2.数据存储器(RAM)
✓片内为128个字节(52子系列的为256个字节)
✓3.程序存储器(ROM/EPROM)
✓8031:
无此部件;8051:
4K字节ROM;8751:
4K字节EPROM;89C51/89C52/89C55:
4K/8K/20K字节闪存。
✓4.4个并行可编程的8位I/O口
✓P1口、P2口、P3口、P0口
✓5.串行口1个全双工的异步串行口,具有四种工作方式。
✓6.定时器/计数器7.中断系统8.特殊功能寄存器(SFR)
✓共有21个,是一个具有特殊功能的RAM区。
✓内部RAM高128单元是供给专用寄存器使用的,因此称之为专用寄存器区(也称为特殊功能寄存器区(SFR)区),单元地址为80H~0FFH。
✓这些特殊功能寄存器中,A、B、PSW、SP、DPTR等已在前面介绍过,其他的留在后面的有关章节介绍。
✓
✓CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,SpecialFunctionRegister)的集中控制方式。
✓3.单片机存储器结构
✓89C51的存储器组织结构可以分为三个不同的存储空间,分别是:
(哈弗结构?
)
✓
✓存储器空间可划分为5类:
✓1.程序存储器空间
✓片内程序存储器为4KB的Flash存储器
✓2.片内数据存储器空间:
128B
✓3.特殊功能寄存器SFR-SpecialFunctionRegister
✓4.位地址空间:
211个可寻址位。
✓5.外部数据寄存器空间:
片外可扩展64K字节RAM。
✓机器周期、指令周期与指令时序
✓单片机执行的指令的各种时序均与时钟周期有关
✓1.时钟周期
✓单片机的基本时间单位。
若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。
;
✓例如:
fosc=6MHz,Tosc=166.7ns。
✓2.机器周期
✓CPU完成一个基本操作所需的时间称为机器周期。
✓执行一条指令分为几个机器周期。
每个机器周期完成一个基本操作。
MCS-51单片机每12个时钟周期为1个机器周期,一个机器周期又分为6个状态:
S1~S6。
每个状态又分为两拍:
P1和P2。
✓机器周期是6个状态周期、12个时钟周期。
✓当时钟频率为12MHz时,机器周期为1S;
✓当时钟频率为6MHz时,机器周期为2S。
✓寻址方式:
✓在指令中给出操作数地址或其他指令地址的方式
✓指令的一个重要组成部分是操作数,它指明了参与操作的数或数所在的地址,也就是要指出操作数的来源,这就是对操作数进行寻址。
✓对于相对转移指令,操作数则要指出下一条要执行的指令的地址,这就是对指令进行寻址。
MCS-51单片机有七种寻址方式:
Ø立即寻址;直接寻址;寄存器寻址;寄存器间接寻址;变址寻址;相对寻址;位寻址。
Ø例:
将压缩式BCD码拆开,并转换为ASCII码。
设BCD码在片内RAM40H单元中,要求将转换结果分别存入41H、42H单元,顺序存放
例:
设有两个4位BCD码,分别存放在片内RAM的50H、51H单元和60H、61H单元中。
试编写求这两数之和的程序,结果存放到40H、41H单元中。
解多字节BCD码相加:
✓先加低位,再加高位;
✓高位相加必须加进位标志C;
BCD码运算时每位相加后进行BCD码调整
✓指令格式:
单字节指令:
操作码双字节指令:
操作码操作数三字节指令:
操作码第一操作数第二操作数
十进制数加法调整指令(1条)
DAA
当要进行十进制数加法运算时,该指令用在加法指令(ADD、ADDC)之后,对相加结果进行调整,以确保结果是BCD码。
注意:
这条指令是必须跟在加法指令之后
减法指令
(1)带借位的减法指令(4条)SUBBA,Rn
例:
设有两个4位BCD码,分别存放在片内RAM的50H、51H单元和60H、61H单元中。
试编写求这两数之和的程序,结果存放到40H、41H单元中。
解多字节BCD码相加:
✓先加低位,再加高位;
✓高位相加必须加进位标志C;
✓BCD码运算时每位相加后进行BCD码调整
✓
。
✓编码键盘:
✓普通PC键盘:
PS2接口(接口简单)USB接口(复杂,无法在8位机上使用)
✓专用键盘芯片8279键盘扩展芯片(并口,复杂,淘汰)ZLG7289(SPI接口)ZLG7290(I2C接口)
✓
✓非编码键盘有:
独立键盘行列式(又称为矩阵式)键盘
按键消抖方法:
硬件消抖(硬件成本)触发器并联电容(0.1uF左右)
软件消抖(0费用)按键检测延时(一般为10ms左右)按键检测按键处理
sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。
格式如下:
sbit位变量名=位地址;
中断
中央处理器CPU在执行程序的过程中,外部发生了某一事件请求CPU迅速去处理,于是,CPU暂时中断当前的工作,转入处理所发生的事件;中断处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。
随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点
▪分时操作。
CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
▪实时响应。
CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
▪可靠性高。
CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
▪80C51单片机的中断优先级有三条原则:
▪CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
▪正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
▪正在进行的低优先级中断服务,能被高优先级中断请求所中断。
▪为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。
其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。
以外部中断0为例
主程序需要有以下代码:
EA=1;//打开总中断
EX0=1;//开外部中断0
IT0=0/1;//设置外部中断的触发方式
外部服务程序
voidint0()interrupt0[using0]
{
dowhatyouwant
}
中断响应条件和时间
中断响应条件
中断源有中断请求;
此中断源的中断允许位为1;
CPU开中断(即EA=1)。
以上三条同时满足时,CPU才有可能响应中断。
有下列情况发生时,CPU不响应中断
CPU正在处理同级的或更高优先级的中断;
现行的机器周期不是所执行指令的最后一个机器周期;
CPU正在执行的指令是RETI或任何访问IE/IP的指令,此时CPU须再执行完紧接着的一条指令后,才能响应中断
在响应中断的过程中,单片机必须做以下三件事:
(1)将相应的优先级状态触发器*置位,指明CPU开始处理的中断优先级别
(2)清中断标志
(3)把中断的断点地址,也就是当前程序计数器PC中的内容压入堆栈,将相应的中断服务程序的入口送给PC
中断处理的四个步骤:
✓保护现场:
此时不能响应新的中断请求,所以在保护现场之前应禁止所有中断
✓中断服务:
中断服务时,应允许新的中断
✓恢复现场:
此时不能响应新的中断请求,所以在恢复现场之前应禁止所有中断
✓中断返回
一、外部中断请求INT0、INT1:
✓由P3.2、P3.3脚输入。
✓分别通过IT0位和IT1位来控制中断输入信号是低电平有效还是负跳变边沿有效。
✓一旦输入触发信号有效,就分别置位标志位IE0(TCON.0)、IE1(TCON.1),向CPU请求中断处理。
✓二、内部中断:
✓
(1)定时器溢出中断TF0、TF1:
✓当定时器T0、T1产生溢出时发出的中断请求,中断标志位TF0、TF1置1,请求中断处理;响应中断后,自动清0。
✓
(2)串行口中断RI或TI:
✓当串行口接收或发送完一帧数据时发出的中断请求,中断标志位RI或TI置1,请求中断处理。
响应中断后,由用户清0。
注意:
RI、TI的中断入口都是0023H,所以CPU响应后转入0023H开始执行服务程序,首先必须判断是RI中断还是TI中断,然后进行相应服务。
在返回主程序之前必须用软件将RI或TI清除,否则会出现一次请求多次响应的错误。
✓
特殊功能寄存器IE为中断允许寄存器,通过向IE写入中断控制字,控制CPU对中断源的开放或屏蔽。
2级控制:
一个总控制位,
每个中断源有一个分控制位
特殊功能寄存器IP为中断优先级寄存器,通过IP中的位,可设置中断源优先级的高低。
2个优先级:
同时收到两个不同优先级的中断时,先处理高优先级;
高优先级中断源可中断低优先级中断服务程序,
若同时收到两个同级的中断,则按预先设定的顺序进行响应
IP:
中断优先级寄存器,系统复位后全部清零
例:
出租车计价器计程方法是车轮每转一圈产生一个负跳变,从外部中断INT0(P3.2)引脚输入,行驶里程为轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。
解:
编程如下:
ORG0000H;复位地址
LJMPSTAT;转用户程序
ORG0003H;中断入口地址
LJMPINT;转中断服务程序
ORG0100H;初始化程序首地址
STAT:
MOVSP,#60H;置堆栈指针
SETBIT0;置边沿触发方式
MOVIP,#01H;置高优先级
MOVIE,#81H;开中断
MOV30H,#0;里程计数器清0
MOV31H,#0;
MOV32H,#0;
LJMPMAIN;转主程序,并等待中断
ORG0200H;中断服务子程序首地址
INT:
CLREA;关中断
PUSHAcc;保护现场
PUSHPSW;
SETBEA;开中断,可响应更高级中断
MOVA,30H;读低8位计数器
ADDA,#2;低8位计数器加2m
MOV30H,A;回存
CLRA;
ADDCA,31H;中8位计数器加进位
MOV31H,A;回存
CLRA;
ADDCA,32H;高8位计数器加进位
MOV32H,A;回存
CLREA;关中断
PUSHPSW;恢复现场
PUSHAcc;
SETBEA;开中断,可响应更高级中断
RETI;中断返回
定时/计数器的结构和工作原理
一、定时/计数器的结构
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。
TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
初始化程序应完成如下工作:
对TMOD赋值,以确定T0和T1的工作方式。
计算初值,并将其写入TH0、TL0或TH1、TL1。
中断方式时,则对IE赋值,开放中断。
使TR0或TR1置位,启动定时/计数器定时或计数
例1用定时器0的方式1实现第一个发光以250ms间隔闪烁,用定时器的方式1实现数码管前两位59s循环计时。
设系统时钟频率为12MHz。
解:
1、计算计数初值X:
由于晶振为12MHz,所以机器周期Tcy为1s。
所以:
定时10ms的初值设置:
N=t/Tcy=10000/1=10000
X=65536-10000=55536=D8F0H
即应将D8H送入TH0中,F0H送入TL0中
2、求T1的方式控制字TMOD:
M1M0=01,GATE=0,C/T=0,可取方式控制字为11H;
实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。
也可以采用下面三种方法:
▪软件定时:
软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。
▪采用时基电路定时:
例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。
但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。
▪采用可编程芯片定时:
这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。
在单片机的定时/计数器不够用时,可以考虑进行扩展。
ch780C51的串行口
计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。
可以分为两大类:
并行通信与串行通信。
并行通信通常是将数据字节的各位用多条数据线同时进行传送。
并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。
串行通信的特点:
传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
串行通信的基本概念
一、异步通信与同步通信
1、异步通信
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。
为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
异步通信的特点:
不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。
2、同步通信
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。
此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。
发送方对接收方的同步可