




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用全册配套
精品完整课件1第1章概述1.1单片机的基本概念1.2单片机的发展概况1.3单片机的特点及应用1.4常用单片机系列介绍1.1单片机的基本概念微机组成结构框图
单片机组成框图
单板机:将微处理器、存储器、I/O接口电路以及简单的输入/输出设备组装在一块印刷电路板上,称单板微型计算机。单片机:将微处理器、存储器、I/O接口电路和相应实时控制器件集成在一块芯片上,称单片微型计算机。
微型计算机:微处理器、存储器、I/O接口电路由总线有机地连接在一起的整体,称为微型计算机。
微型计算机系统:微型计算机与外围设备、电源、系统软件一起构成的系统,称为微型计算机系统。
※通用微机的CPU主要面向数据处理,其发展主要围绕数据处理功能、计算速度和精度的进一步提高。
※单片机主要面向控制,控制中的数据类型及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。通用微机与单片机区别一
※通用微机中存储器组织结构主要针对增大存储容量和CPU对数据的存取速度。
※单片机中存储器的组织结构比较简单,存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写按直接物理地址来寻址存储器单元,存储器的寻址空间一般都为64KB。通用微机与单片机区别二※通用微机中I/O接口主要考虑标准外设※单片机应用系统的外设是非标准的通用微机与单片机区别三1.2单片机的发展概况
※4位单片机阶段(主要用于家用电器、电子玩具等)美国德克萨斯仪器公司TMS-1000
美国国家半导体公司COP402系列日本电气公司μPD75XX系列美国洛克威尔公司PPS/1系列日本松下公司MN1400系列富士通公司MB88系列
※8位单片机阶段(用于工业控制、智能接口、仪器仪表等)
低档8位单片机美国Intel公司MCS-48系列莫斯特克(Mostek)、仙童(Fairchild)公司3870(F8)系列摩托罗拉(Motorola)公司6801系列
高档8位单片机摩托罗拉公司MC6801系列齐洛格公司Z8系列
NEC公司μPD78XX系列
Intel公司的MCS-51系列
超8位单片机
Intel公司8X252、UPI-45283C152Zilog公司Super8Motorola公司MC68HC※16位单片机阶段(可用于高速复杂的控制系统)
Intel公司MCS-96系列
Intel公司80C96
美国国家半导体公司HPC16040NEC公司783XX系列
※32位单片机1.3单片机的特点及应用
单片机的特点※单片机的存储器ROM和RAM严格区分※采用面向控制的指令系统※单片机的I/O引脚通常是多功能※单片机的外部扩展能力强单片机的应用特点※体积小,成本低,运用灵活,易于产品化,能方便地组成各种智能化的控制设备和仪器,做到机电一体化。※面向控制,能针对性地解决从简单到复杂的各类控制任务,因而能获得最佳的性能价格比。※抗干扰能力强,适用温度范围宽,在各种恶劣的环境下都能可靠地工作,这是其它类型计算机无法比拟的。※可以方便地实现多机和分布式控制,使整个控制系统的效率和可靠性大为提高。
单片机应用领域
※工业控制
※仪器仪表
※计算机外部设备与智能接口
※商用产品
※家用电器1.4常用单片机系列介绍MCS系列产品
第一阶段(1971~1976年):单片机发展的初级阶段Intel4004
第二阶段(1976~1980年):低性能单片机阶段MCS-48系列第三阶段(1980~1983年):高性能单片机阶段MCS-51系列第四阶段(1983年至今):16位单片机阶段MCS-96系列
INTEL主要单片机系列MCS-51系列单片机的结构特点※CPU的结构※存储器结构※输入输出接口※内部有一个全双工串行口※布尔处理机8051单片机MOTOROLA单片机Microchip单片机Atmel单片机第2章MCS-51系列单片机的硬件结构2.1MCS-51系列单片机简介2.2MCS-51系列单片机内部结构与外部引脚说明2.3微处理器2.4存储器2.5并行输入/输出接口2.6定时器/计数器2.7串行输入/输出口2.8MCS-51单片机的中断系统2.9复位状态及复位电路2.1MCS-51系列单片机简介
两大系列(51子系列和52子系列)
51子系列:8031、8051、8751
52子系列:8032、8052、87522.2MCS-51系列单片机内部结构与外部引脚说明2.2.1内部结构框图
MCS-51系列单片机的内部结构框图如图2.1所示。
图2.1MCS-51单片机内部结构框图2.2.2外部引脚说明图2.2MCS-51系列单片机引脚及总线结构※主电源引脚
VCC(40脚)VSS(20脚)※外接晶体引脚
XTAL1(19脚)XTAL2(18脚)※输入/输出引脚
P0口(39~32脚)P1口(1~8脚)P2口(21~28脚)P3口(10~17脚)表2.1P3口第二功能表引脚第二功能P3.0串行口输入端P3.1串行口输出端P3.2外部中断0请求输入端,低电平有效P3.3外部中断1请求输入端,低电平有效P3.4定时器/计数器0计数脉冲输入端P3.5定时器/计数器1计数脉冲输入端P3.6外部数据存储器写选通信号输出端,低电平有效P3.7RXDTXDINT0INT1T0T1WRRD※控制线(30脚)(29脚)(9脚)(31脚)引脚特点
※单片机功能多,引脚数少,因而许多引脚都具有第二功能。
※单片机对外呈现3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用为数据总线;由ALE、PSEN、RST、EA与P3口中的INT0、INT1、T0、T1、WR、RD共10个引脚组成控制总线。2.3微处理器※运算部件
※控制部件及振荡器
※CPU时序2.3.1运算部件
运算部件以ALU为核心,包括累加器ACC、寄存器B、暂存器、程序状态字PSW等许多部件。实现数据的算术逻辑运算、位变量处理和数据传输操作。
1.算术逻辑单元ALU与累加器ACC、寄存器B
ALU:完成8位二进制的加、减、乘、除、加1、减1及BCD加法的十进制调整等算术运算,对8位变量进行逻辑“与”、“或”、“异或”、循环移位、求补、清零等逻辑运算,具有数据传输、程序转移等功能。
ACC:8位寄存器
寄存器B:为ALU进行乘除法运算而设置。不作乘除运算时,可作为通用寄存器使用。
2.程序状态字程序状态字PSW是一个8位的标志寄存器,它保存指令执行结果的特征信息,以供程序查询和判别。其各位的定义如下:字节地址D0HCACF0RS1RS0OVPPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0
3.布尔处理机指令系统中的位处理指令集(17条位操作指令),存储器中的位地址空间,程序状态寄存器PSW中的进位标志CY作为位操作"累加器",构成了MCS-51单片机内的布尔处理机。2.3.2控制部件及振荡器控制部件包括定时和控制电路、指令寄存器、译码器以及信息传送控制等部件。先以主振频率为基准发出CPU的时序,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来协调单片机内部个功能部件之间的数据传诵、数据运算等操作,并对外发出相应的控制信号,并接受处理外接的复位、控制信号。
单片机的定时控制功能是用片内的时钟电路和定时电路来完成。片内的时钟产生方式:内部时钟方式和外部时钟方式。图2.3单片机外接晶体的接法
表2.2单片机外部时钟接法表芯片类型XTAL1XTAL2HMOS型接地接片外振荡脉冲输入端(带上拉电阻)CHMOS型接片外振荡脉冲输入端(带上拉电阻)悬浮接法2.3.3CPU时序
时序:计算机在执行命令时,将一条指令分解为若干基本的微操作。这些微操作所对应的脉冲信号在时间上的先后次序称为计算机的时序。
振荡周期:振荡脉冲的周期。
状态周期(时钟周期):两个振荡周期为一个状态周期。
机器周期:一个机器周期包含6个状态周期。
指令周期:执行一条指令所占用的全部时间,它以机器周期为单位。图2.4单周期指令时序(a)单字节周期指令(如INCA);(b)双字节单周期指令(如ADDA,#data)2.4存储器※程序存储器※数据存储器从物理空间上:片内ROM、片外ROM、片内RAM、片外RAM。从功能上:片内外统一的ROM、片内RAM、片外RAM。2.4存储器2.4.1程序存储器
1.编址与访问程序计数器PC:用以存放将要执行的指令地址。可寻址的地址空间为64KB(0000H~0FFFFH)。图2.5程序存储器编址图(a)51子系列;(b)52子系列2.程序的7个特殊入口地址表2.3MCS-51单片机复位、中断入口地址操作入口地址复位0000H外部中断00003H定时器/计数器0溢出000BH外部中断10013H定时器/计数器1溢出001BH串行口中断0023H定时器/计数器0溢出或T2EX端负跳变(52子系列)002BH2.4.2数据存储器
1.编址与访问
片内、外数据存储器是两个独立的地址空间,单独编址。片内数据存储器除RAM块外,还有特殊功能寄存器(SFR)块。
51子系列:RAM有128个字节(00H~7FH)
SFR有128个字节(80H~FFH)
52子系列:RAM有128个字节(00H~0FFH)
SFR有128个字节(80H~0FFH)图2.6数据存储器编址图(a)51子系列;(b)52子系列2.片内数据存储器00HR0
工作寄存器0组01HR1工07HR708HR0
工作寄存器1组作09HR1
寄0FHR710HR0
工作寄存器2组存11HR1
器17HR718HR0
工作寄存器3组区19HR11FHR751子系列单片机片内RAM的配置数据缓冲区20H21H22H23H位24H25H寻26H27H址28H29H区2AH2BH2CH2DH2EH2FH07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241404F4E4D4C4B4A494857565554535251505F5E5D5C5B5A595867666564636261606F6E6D6C6B6A696877767574737271707F7E7D7C7B7A797830H31H7EH7FH
1)工作寄存器区(00H~1FH单元)工作寄存器分成4组,每组8个寄存器(R0~R7)。表2.4工作寄存器组的选择表PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组R0~R7000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)
2)位寻址区(20H~2FH单元)
16个单元(共计128位)位地址:00H~7FH。
3)数据缓冲区
51子系列:80个单元(30H~7FH)
52子系列:208个单元30H~0FFH4)堆栈和堆栈指针图2.8MCS–51单片机堆栈
3.特殊功能寄存器块SFRSFR用于控制、管理片内算术逻辑部件、并行I/O口、串行I/O口、定时器/计数器、中断系统等功能模块的工作。
51子系列:18个专用寄存器,3个为双字节寄存器,共占用21个字节;
52子系列:21个专用寄存器,5个双字节寄存器,共占用26个字节。表2.5特殊功能寄存器名称、表示符、地址一览表表2.5特殊功能寄存器名称、表示符、地址一览表2.5并行输入/输出接口2.5.1P0口
1.P0口结构
P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用I/O接口。
1位的结构原理如图2.9所示。图2.9P0口1位结构图
2.地址/数据分时复用功能从P0口输出地址或数据从P0口输入数据。
3.通用I/O接口功能
※在输出数据时,由于V2截止,输出级是漏极开路电路,要使"1"信号正常输出,必须外接上拉电阻。
※P0口作为通用I/O口使用时,是准双向口。(在输入数据时,应先把口置1)4.端口操作
“读-修改-写”操作
ANLP0,A ;(P0)←(P0)∧(A)ORLP0,#data;(P0)←(P0)∨dataDELP0 ;(P0)←(P0)-1
有外部扩展存储器时,P0被作为地址/数据总线口,此时是一个真正的双向口;没有外部扩展存储器时,P0口也可作为通用的I/O接口,但此时只是一个准双向口。
P0口的输出级具有驱动8个LSTTL负载的能力,即输出电流不大于800μA。2.5.2P1口
P1口为准双向口,其1位的内部结构如图2.10所示。输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出高电平时,可以提供拉电流负载,不必外接上拉电阻。
P1口具有驱动4个LSTTL负载的能力。图2.10P1口1位结构图
2.5.3P2口图2.11P2口1位结构图※作为准双向通用I/O口使用,工作原理与负载能力与P1相同。
※作为外部扩展存储器的高8位地址总线使用,输出高8位地址A8~A15(程序计数器PC来的高8位地址PCH,或数据指针DPTR来的高8位地址DPH)。2.5.4P3口图2.12P3口1位结构图2.6定时器/计数器
定时器/计数器的特点:
(1)定时器/计数器有多种方式,可以是计数方式也可以是定时方式。
(2)定时器/计数器的计数值是可变的,计数的最大值取决于计数器的位数。计数的最大值限定了定时的最大值。
(3)在到达设定的定时或计数值时发出中断申请,以便实现定时控制。51子系列:带有两个16位定时器/计数器T0和T1。52子系列:带有两个16位定时器/计数器T0和T1、T2。※定时器/计数器T0、T1的结构※定时器/计数器T0、T1的四种工作方式2.6.1定时器/计数器T0、T1的结构图2.13定时器/计数器T0、T1的结构框图
1.16位加法器定时器/计数器的核心是16位加法计数器。
TH0、TL0是定时器/计数器0加法计数器的高8位和低8位
TH1、TL1是定时器/计数器1加法计数器的高8位和低8位。
计数器:加法计数器P3.4或P3.5上的输入脉冲计数。定时器:加法计数器对内部机器周期脉冲Tcy计数。加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。
2.定时器/计数器方式控制寄存器TMOD
通过程序对TMOD设置来选择四种工作方式。其位定义如下:GATEC/TMIM0GATEC/TM1M0TMOD字节地址89H
D7D6D5D4D3D2D1D0T1T0
C/T:定时或计数功能选择位。
M1、M0:定时器/计数器工作方式选择位。
GATE:门控位表2.6定时器/计数器工作方式M1M0工作方式方式说明00013位定时器/计数器01116位定时器/计数器102具有自动重装初值的8位定时器/计数器113
3.定时器/计数器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0TCON字节地址88H
D7D6D5D4D3D2D1D0
TF0(TF1):T0(T1)定时器/计数器溢出中断标志位。
TR0(TR1):T0(T1)运行控制位。2.6.2定时器/计数器T0、T1的四种工作方式1.工作方式0图2.14定时器/计数器方式0的逻辑结构16位定时器/计数器(THx8位、TLx低5位构成13位加法计数器)。计数值:N=213–x=8192–x计数范围:1~8192定时时间:T=N×Tcy=(8192-x)Tcy
定时器/计数器在每个机器周期的S5P2期间采样Tx脚输入信号,若一个机器周期的采样值为1,下一个机器周期的采样值为0,则计数器加1。
识别一个高电平到低电平的跳变需两个机器周期,对外部计数脉冲的频率应小于fosc/24,高电平与低电平的延续时间均不得小于1个机器周期。
2.工作方式1
16位定时器/计数器(THx、TLx都是8位加法计数器)。计数值:N=216-x=65536-x
计数范围:1~65536。定时时间:T=N×Tcy=(65536-x)Tcy3.工作方式2图2.15定时器/计数器方式2的逻辑结构计数值:N=28-x=256-x计数范围:1~256。定时值:T=N×Tcy=(256-x)Tcy4.工作方式3图2.16定时器/计数器方式3的逻辑结构2.7串行输入/输出口2.7.1串行通信的基本概念图2.17通信的两种基本方式(a)并行通信;(b)串行通信1.异步传送方式图2.18串行异步传送的字符格式(a)字符格式;(b)有空闲位的字符格式
串行异步传送中,通信双方必须事先约定:
※字符格式
※波特率2.同步传送图2.19同步通信的格式图2.20串行通信数据传送的三种方式(a)单工方式;(b)半双工方式;(c)全双工方式2.7.2MCS-51单片机的串行口1.功能与结构表2.7串行口的工作方式SM0SM1工作方式功能波特率00方式0移位寄存器方式,用于并行I/O扩展fosc/1201方式18位通用异步接收器/发送器可变10方式29位通用异步接收器/发送器fosc/32或fosc/6411方式39位通用异步接收器/发送器可变串行口控制寄存器SCONSM0SM1SM2RENTB8RB8T1RISCON字节地址98HD7D6D5D4D3D2D1D0
SM0、SM1:选择串行口四种工作方式。
SM2:多机通信控制位。
REN:允许串行接收控制位。
TB8:发送数据D8位。
RB8:接收数据D8位。
TI:发送中断标志位。
RI:接收中断标志位。串行数据缓冲器字节地址99HSBUF
电源控制寄存器SMODCF1CF0PDIDLD7D6D5D4D3D2D1D0PCON
字节地址97H
SMOD:串行口波特率系数控制位。2.串行口的工作方式
●发送
CPU执行一条写SBUF的指令,如MOVSBUF,A,就启动了发送过程。●接收在RI=0的条件下,将REN(SCON.4)置1就启动一次接收过程。
RXD为串行数据接收端,TXD依然输出同步移位脉冲。1)方式0图2.21串行口方式0结构示意图2)方式1图2.22串行口方式1、2、3结构示意图
●发送
CPU执行一条写SBUF指令便启动了串行口发送,数据从TXD输出。●接收允许接收控制位REN被置1,接受器就开始工作,跳变检测器以所选波特率的16倍速率采样RXD引脚上的电平。当采样到从1到0的负跳变时,启动接收控制器接收数据。
※如果RI=0、SM2=0,接收控制器发出"装载SBUF"信号,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=1,向CPU申请中断。
※如果RI=0、SM2=1,那么只有停止位为1才发生上述操作。
※RI=0、SM2=1且停止位为0,所接收的数据不装入SBUF,数据将会丢失。
※如果RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。
3)方式2与方式3
方式2、方式3:9位异步通信接口。一帧信息:1位起始位、9位数据位和1位停止位。
发送数据时,第9位数据由SCON中的TB8位提供。接收数据时,当第9位数据移入移位寄存器后,将8位数据装入SBUF,第9位数据装入SCON中的RB8。
3.波特率设置方式0:波特率=fosc/12。方式2:波特率=2SMOD×fosc/64
方式1和方式3:波特率=2SMOD×定时器/计数器T1溢出率/32
定时器/计数器T1溢出率=计数速率/[256-(TH1)]4.多机通信图2.23主从式多机通信系统
主机发出的信息有两类:
※地址:用来确定需要和主机通信的从机。串行传送的第9位数据为1。
※数据:串行传送的第9位数据为0。
从机:利用SCON寄存器中的SM2位的控制功能。
※接收时,若RI=0,则只要SM2=0,接收总能实现;若SM2=1,则发送的第9位TB8必须为0接收才能进行。
从机在接收地址时,应使SM2=1,以便接收到主机发来的地址,从而确定主机是否打算和自己通信,一经确认后,从机应使SM2=0,以便接收TB8=0的数据。
主从多机通信的过程:
(1)使所有的从机的SM2位置1,以便接收主机发来的地址。
(2)主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1。
(3)所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的从机,使SM2位清零以接收主机随后发来的所有信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。
(4)主机给已被寻址的从机发送控制指令和数据(数据帧的第9位为0)。2.8MCS-51单片机的中断系统2.8.1中断的基本概念
中断:CPU对系统中或系统外发生的某个事件的一种响应过程。
中断系统:实现中断功能的硬件系统和软件系统统称为中断系统。
中断系统需要解决的问题:
※中断源:中断请求信号的来源。涉及到中断请求信号的及时撤除问题。
※中断响应与返回:CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执行完中断服务子程序怎样返回被中断的程序继续正确地执行。涉及到CPU响应中断的条件、现场保护等问题。※优先级控制2.8.2中断源
1.外部中断外部中断是指从单片机外部引脚、输入中断请求信号的中断,即外部中断源有两个。外部中断请求、有两种触发方式:电平触发及跳变(边沿)触发。TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON字节地址98H
IT0(IT1):外部中断0(或1)触发方式控制位。
IT0(或IT1)置0:电平触发方式
IT0(或IT1)置1:跳变触发方式
IE0(IE1):外部中断0(或1)的中断请求标志位。
若外部中断设置为跳变触发方式,CPU在每个机器周期都采样。为了保证检测到负跳变,输入到引脚上的高电平与低电平至少应保持1个机器周期。对于电平触发的外部中断,由于CPU对引脚没有控制作用,也没有相应的中断请求标志位,因此需要外接电路来撤除中断请求信号。图2.24撤除外部中断请求的电路
ANLP1,#0FEHORLP1,#01H
2.内部中断内部中断是单片机芯片内部产生的中断。内部中断:定时器/计数器T0、T1的溢出中断;串行口的发送/接收中断。2.8.3中断控制
1.中断允许控制中断源的中断开放或关闭是由内部的中断允许寄存器IE的各位来控制的。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字节地址A8H
EA:中断允许总控位。
ET2:定时器/计数器T2的溢出中断允许位,
ES:串行口中断允许位。
ET1:定时器/计数器T1的溢出中断允许位。
EX1:外部中断1()的中断允许位。
ET0:定时器/计数器T0的溢出中断允许位。
EX0:外部中断0()的中断允许位。
2.中断优先级控制
MCS-51单片机的中断源有两个用户可控的中断优先级,从而可实现二级中断嵌套。中断系统遵循三条规则:
(1)正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。
(2)正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。
(3)CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。PT2PSPT1PX1PT0PX0D7D6D5D4D3D2D1D0IP字节地址B8HPT2:定时器/计数器T2的中断优先级控制位,只用于52子系列。PS:串行口的中断优先级控制位。PT1:定时器/计数器T1的中断优先级控制位。PX1:外部中断的中断优先级控制位。PT0:定时器/计数器T0的中断优先级控制位。PX0:外部中断的中断优先级控制位。表2.8中断优先级
中断源同级的中断优先级
外部中断0
定时器/计数器0中断外部中断1
定时器/计数器1中断串行口中断定时器/计数器2中断最高
最低图2.25中断系统的逻辑结构示意图2.8.4中断响应的条件、过程与时间
1.中断响应的条件单片机响应中断的条件为中断源有请求(中断允许寄存器IE相应位置1),且CPU开中断(即EA=1)。且满足:
※无同级或高级中断正在处理。
※现行指令执行到最后1个机器周期且已结束。
※若现行指令为RETI或访问IE、IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完毕。
2.中断响应过程
(1)根据中断请求源的优先级高低,对相应的优先级状态触发器置1。
(2)保护断点,即把程序计数器PC的内容压入堆栈保存。
(3)清内部硬件可清除的中断请求标志位(IE0、IE1、TF0、TF1)。
(4)把被响应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行。
3.中断响应时间中断响应时间:CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。单步操作实现方法把一个外部中断(如/INT0)设置为电平激活方式,在中断服务程序的末端尾写上指令:JNBP3.2,$;在/INT0(P3.2)变高前,原地等待
JBP3.2,$;在/INT0变低前,原地等待
RETI;返回并执行一条指令。2.9复位状态及复位电路2.9.1复位状态
复位引脚RST上只要出现10ms以上的高电平,单片机就实现复位。表2.9MCS-51单片机复位状态表寄存器复位状态寄存器复位状态PC0000HTCON00HA00HT2CON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0~P3FFHSCON00H图2.26复位电路2.9.2复位电路第3章MCS-51单片机指令系统和汇编语言程序示例3.1MCS-51单片机指令系统概述3.2寻址方式3.3数据传送类指令3.4算术运算类指令3.5逻辑运算及移位指令3.6控制转移类指令3.7子程序调用与返回指令3.8位操作类指令3.9汇编程序格式与伪指令3.10汇编程序设计示例3.1MCS-51单片机指令系统概述※指令、指令系统的概念※
MCS-51单片机指令系统及其指令格式3.1.1指令、指令系统的概念
指令是使计算机内部执行的一种操作,提供给用户编程使用的一种命令。计算机能够执行的全部操作所对应的指令集合,称为这种计算机的指令系统。
指令的三种属性:
功能属性:指每条指令都对应一个特定的操作功能
时间属性:指一条指令执行所用的时间,一般用机器周期来表示;
空间属性:指一条指令在程序存储器中存储所占用的字节数。指令的描述形式:机器语言形式,采用机器语言编写的程序称目标程序;汇编语言形式,采用汇编语言编写的程序称源程序。汇编:汇编语言程序→机器语言程序汇编有两种方式:机器汇编和手工汇编。3.1.2MCS-51单片机指令系统及其指令格式
MCS-51单片机指令系统共有111条指令:
功能:数据传送、算术操作、逻辑操作、程序转移位操作等五大类;
空间属性:单字节指令(49条)、双字节指令(46条)和最长的三字节指令(只有16条)。
时间属性:单机器周期指令(64条)、双机器周期指令(45条)和只有乘、除法两条4个机器周期的指令。
指令结构:每条指令通常包括操作码和操作数。
操作码:表示指令将进行何种操作;
操作数:表示参加操作的数的本身或操作数所在的地址。汇编语言指令格式:[标号:]操作码助记符[目的操作数][,源操作数][;注释]※无操作数、单操作数、双操作数
一些符号的约定意义:
※Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1。n取0~7,表示R0~R7。
※#data:表示包含在指令中的8位立即数。
※#data16:表示包含在指令中的16位立即数。
※rel:以补码形式表示的8位相对偏移量,-128~127。※
addr16和addr11:分别表示16位直接地址和11位直接地址。※direct:表示直接寻址的地址。※bit:表示可位寻址的直接位地址。※(X):表示X单元中的内容。※((X)):表示以X单元的内容为地址的存储器单元内容。※/和→符号:“/”表示取反。“→”表示操作流程。3.2寻址方式※立即寻址※寄存器寻址※寄存器间接寻址※直接寻址※变址寻址※相对寻址※位寻址3.2.1立即寻址操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。例:MOV
A,#30H※数的前面冠以"#"符号作前缀。3.2.2寄存器寻址在指令选定的某寄存器中存放或读取操作数,以完成指令规定的操作。例:MOV
A,R0※R0~R7、Acc、Cy、DPTR、AB。3.2.3寄存器间接寻址由指令指出某一寄存器的内容作为操作数地址的寻址方法,称为寄存器间接寻址。例:MOVA,@R1※寄存器中的内容不是操作数本身,而是操作数的地址,到该地址单元中才能得到操作数,寄存器起地址指针的作用。
※只有Ri、DPTR才能用于寄存器间接寻址。
※内部RAM(@R0、@R1);
外部RAM(@R0、@R1、@DPTR)。图3.1寄存器间接寻址示意图
3.2.4直接寻址指令中直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为直接寻址。例:MOVA,40H
机器码:E540※数的前面冠以"#"符号作前缀。
※直接寻址可用于访问片内RAM的低128字节、SFR。3.2.5变址寻址例:MOVCA,@DPTR※变址寻址可用于访问程序存储器(@A+DPTR、@A+PC)。图3.2变址寻址示意图3.2.6相对寻址以当前程序计数器PC值加上指令中给出的偏移量rel,而构成实际操作数地址的寻址方法。
※当前PC值是指相对转移指令的存储地址加上该指令的字节数。当前PC值是对相对转移指令取指结束时的值。
※偏移量rel是有符号的单字节数,以补码表示。3.2.7位寻址在位操作指令中直接给出位操作数的地址。例:MOVC,40H
机器码:92H40H※可以对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻址。3.3数据传送类指令※访问片内数据存储器的一般数据传送指令※片内特殊传送指令※片外数据存储器数据传送指令※访问程序存储器的数据传送指令3.3.1访问片内数据存储器的一般数据传送指令实现数在片内RAM单元之间、寄存器之间、寄存器与RAM单元之间的传送。
格式:
MOV<目的操作数>,<源操作数>;目的操作数单元←源操作数(或单元)※注意两个操作数的各种寻址方式的组合方式。图3.3访问片内RAM的一般传送指令操作关系图
表3.1访问片内RAM的一般传送指令表
例1:设内部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,分析程序执行后各单元及寄存器、P2口的内容。MOVR0,#30H MOVA,@R0 MOVR1,A MOVB,@R1 MOV@R1,P1 MOVP2,P1 MOV10H,#20H 3.3.2片内特殊传送指令
※堆栈操作指令※数据交换指令1.堆栈操作指令
进栈指令:保存片内RAM单元(低128字节)或特殊功能寄存器SFR的内容;
出栈指令:恢复片内RAM单元(低128字节)或特殊功能寄存器SFR的内容。
※注意堆栈先进后出的原则。(SP)←(SP)-1修改指针,指向新栈顶
(direct)←((SP)+1)把栈顶的数据弹出到直接寻址单元中去
PUSHdirect;
POPdirect;
((SP))←direct把直接地址单元的内容压入SP所指单元内
(SP)←(SP)+1修改指针,使其指向栈顶上的一个存数单元
例2若在外部程序存储器中2000H单元开始依次存放0~9的平方值,数据指针(DPTR)=3A00H,用查表指令取得2003H单元的数据后,要求保持DPTR中的内容不变。MOVA,#03HPUSHDPHPUSHDPLMOVDPTR,#2000HMOVCA,@A+DPTRPOPDPLPOPDPH
2.数据交换指令数据交换指令作双向传送,指令执行后,两操作数均未冲掉、丢失。
数据传送指令一般都是将操作数自源地址单元传送到目的地址单元。指令执行后,源地址单元的操作数不变,目的地址单元的操作数则修改为源地址单元的操作数。例3设(R0)=30H,30H=4AH,(A)=28H,分析执行下列指令后的结果。
XCHA,@R0XCHDA,@R0SWAPA3.3.3片外数据存储器数据传送指令
MCS-51单片机CPU对片外扩展的数据存储器RAM或I/O口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来完成。MOVXA,@DPTR ;(A)←((DPTR)) E6MOVXA,@Ri ;(A)←((Ri)) E2、E3MOVX@DPTR,A ;((DPTR))←(A) F0MOVX@Ri,A;((Ri))←(A) F2、F3例4设外部RAM(0203H)=FFH,分析以下指令执行后的结果。
MOVDPTR,#0203HMOVXA,@DPTRMOV30H,A MOVA,#0FHMOVX@DPTR,A3.3.4访问程序存储器的数据传送指令访问程序存储器的数据传送指令又称作查表指令,采用基址寄存器加变址寄存器间接寻址方式,把程序存储器中存放的表格数据读出,传送到累加器A。
MOVCA,@A+DPTR;(A)←((A)+(DPTR))93MOVCA,@A+PC ;(PC)←(PC)+1,(A)←((A)+(PC))83
例:从片外程序存储器2000H单元开始存放0~9的平方值,分别以PC和DPTR作为基址寄存器进行查表得9的平方值。(设MOVC指令所在地址(PC)=1FF0H)MOVA,#09H ;(A)←09HADDA,#0FH ;用加法指令进行地址调整MOVCA,@A+PC;(A)←((A)+(PC)+1)3.4算术运算类指令※加、减法指令※十进制调整指令※乘、除法指令3.4.1加、减法指令图3.4加减法指令形式结构图(a)加减法指令关系图;(b)加1、减1指令关系图
必须按照二进制进行加减运算表3.2加减法指令表
例:设(A)=49H,(R0)=6BH,分析执行指令ADDA,R0后的结果。例:设(A)=C3H,数据指针低位(DPL)=ABH,CY=1,分析执行指令ADDCA,DPL后的结果。例:设(A)=52H,(R0)=B4H,分析执行如下指令后的结果
CLRCSUBBA,R0
例:设(R0)=7EH,(7EH)=FFH,(7FH)=38H,(DPTR)=10FEH,分析逐条执行下列指令后各单元的内容。INC@R0INCR0INC@R0INCDPTRINCDPTRINCDPTR3.4.2十进制调整指令若(A)3~0>9或(AC)=1,则(A)3~0←(A)3~0+06H若(A)7~4>9或(CY)=1,则(A)7~4←(A)7~4+06HDAA;
※两个压缩BCD码按二进制相加,必须在加法指令ADD、ADDC后,经过本指令调整后才能得到正确的压缩BCD码和数,实现十进制的加法运算。
※DA指令不能对减法进行十进制调整。做减法运算时,可采用十进制补码相加,然后用DAA指令进行调整。
例:对BCD码加法65+58→DBH,进行十进制调整。
例11设片内RAM30H,31H单元中分别存放着两位BCD码表示的被减数和减数,两数相减的差仍以BCD码的形式存放在32H单元中。可用下面的程序实现:CLRCMOVA,#9AHSUBBA,31H ;求减数的十进制补码ADDA,30H ;作十进制补码加法DAA ;进行BCD调整MOV32H,A ;将BCD码的差送存32H单元3.4.3乘、除法指令※乘法指令※除法指令1、乘法指令MULAB;(B)←((A)×(B))15~8(A)←((A)×(B))7~0CY←0机器码:A4H
※乘积16位数中的低8位存放在A中,高8位存放在B中。
※乘积大于0FFH,OV置1,否则OV清零。
※乘法指令执行后CY=0。2.除法指令DIVAB; (A)←(A)÷(B)之商,(B)←(A)÷(B)之余数
(CY)←0,(OV)←0机器码:84H※商存于累加器A中,余数存于寄存器B中。※进位标志位CY和溢出标志位OV均被清零。※若B中的内容为0时,溢出标志OV被置1,而CY仍为0。3.5逻辑运算及移位指令图3.5逻辑指令形式结构图
与加、减法指令寻址方式相同的逻辑指令;(b)与加、减法指令寻址方式不同的逻辑指令表3.3逻辑操作指令表表3.3逻辑操作指令表
例:(P1)=C5H=11000101B,屏蔽P1口高4位而保留低4位。
逻辑“或”指令常用来使字节中某些位置“1”,其它位保持不变。例:若(A)=C0H,(R0)=3FH,(3FH)=0FH,执行指令
ORLA,@R0
逻辑“异或”指令常用来使字节中某些位进行取反操作,其它位保持不变。欲某位取反该位与“1”相异或;欲某位保留则该位与“0”
相异或。还可利用异或指令对某单元自身异或,以实现清零操作。例:若(A)=B5H=10110101B,执行下列操作:
XRLA,#0F0HMOV30H,AXRLA,30H
用移位指令还可以实现算术运算,左移一位相当于原内容乘以2,右移一位相当于原内容除以2。例:设(A)=5AH=90,且CY=0,则执行指令RLA后,(A)=B4H=90。执行指令RRA后,(A)=2DH=45。执行指令RLCA后,(A)=B4H=90。执行指令RRCA后,(A)=2DH=45。3.6控制转移类指令※无条件转移指令※条件转移指令3.6.1无条件转移指令表3.4无条件转移指令
1.LJMP(长转移指令)
※16位目标地址(addr16)可以使程序从当前地址转移到64KB程序存储器地址空间的任意地址。
※执行时间长,字节多。
2.AJMP(绝对转移指令)
AJMP的机器码是由11位直接地址addr11和指令操作码00001组成:a10 a9a800001a7a6a5a4a3a2a1a0
目的地址:由AJMP指令所在位置的地址PC值加上该指令字节数2,构成当前PC值。取当前PC值的高5位与指令中提供的11位直接地址形成转移的目的地址,即:转移目的地址(PC)PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0
※
程序可转移的位置只能是和PC当前值在同一2KB范围内。
※
本指令转移可以向前也可以向后,指令执行后不影响状态标志位。
※
若addr11相同,则AJMP指令的机器码相同,但转移的目的地址却可能不同。
3.SJMP(相对短转指令)
※指令的操作数rel用8位带符号数补码表示。
※转移范围:PC当前值向前转128字节,向后转127字节。
※转移目的地址=SJMP指令所在地址+2+rel※rel=FEH,目的地址就是SJMP指令的地址
SJMP$指令无限循环,进入等待状态。
4.JMP@A+DPTR(相对长转移指令)
以数据指针DPTR的内容为基址,以累加器A的内容为相对偏移量,在64KB范围内无条件转移。特点:转移地址可以在程序运行中加以改变。例:根据累加器A的值,转不同处理程序的入口。
MOVDPTR,#TABLE JMP@A+DPTR
TABLE:AJMPTAB1 AJMPTAB2 AJMPTAB3 ……3.6.2条件转移指令条件转移指令是当某种条件满足时,程序转移执行;条件不满足时,程序仍按原来顺序执行。表3.5条件转移指令
1.判零条件转移指令判零条件转移指令以累加器A的内容是否为0作为转移的条件。
※执行该指令不作任何运算,也不影响标志位。
例:将片外RAM首地址为DATA1的一个数据块转送到片内RAM首地址为DATA2的存储区中。数据为零终止传送。
MOVR0,#DATA1 MOVR1,#DATA1LOOP:MOVXA,@R0HERE:JZHERE MOV@R1,A INCR0 INCR1 SJMPLOOP
2.比较转移指令先对两个规定的操作数进行比较,根据比较的结果来决定是否转移。
※比较是进行一次减法运算,但其差值不保存,两个数的原值不受影响,而标志位要受到影响。
※利用标志位CY作进一步的判断,可实现三分支转移。
例:当从P1口输入数据为01H时,程序继续执行,否则等待,直到P1口出现01H。
MOVA,#01H WAIT:CJNEA,P1,WAIT
3.减1条件转移指令把第一操作数减1,并把结果仍保存在第一操作数中,然后判断是否为零。
※指令对于构成循环程序是十分有用
例:将内部RAM从DATA单元开始的10个无符号数相加,相加结果送SUM单元保存。(设相加结果不超过8位二进制数)
MOVR0,#0AH MOVR1,#DATACLRA LOOP:ADDA,@R1INCR1 DJNZR0,LOOPMOVSUM,A3.7子程序调用与返回指令※子程序调用指令※返回指令※空操作指令3.7.1子程序调用指令子程序调用指令有长调用和绝对调用两条。3.7.2返回指令返回指令:对应两条调用指令的子程序返回指令RET;对应从中断服务程序的返回指令RETI。两点不同:
※从使用上,RET指令必须作子程序的最后一条指令;RETI必须作中断服务程序的最后一条指令。
※RETI指令除恢复断点地址外,还恢复CPU响应中断时硬件自动保护的现场信息。执行RETI指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而RET指令只能恢复返回地址。3.7.3空操作指令
NOP3.8位操作类指令
位操作也称布尔变量操作,它是以位(bit)作为单位来进行运算和操作的。
MCS-51单片机内部有一个功能相对独立的布尔处理机,借用进位标志CY作为位累加器,有位存储器(位寻址区中的各位),指令系统中有17条专门进行位处理的指令集。位处理指令可以完成以位为对象的数据转送、运算、控制转移等操作。
位地址的表示方法:※直接位地址表示,如D5H。※点表示,如PSW.5。※位名称表示,如F0。※用户定义名称表示,如用户定义用FLG代替F0。
例:利用位操作指令,模拟下图所示硬件逻辑电路的功能。图3.6硬件逻辑电路图3.9汇编程序格式与伪指令
1.汇编程序格式
[标号:]操作码助记符[源操作数][,目的操作数][;注释]
2.伪指令
伪指令不要求计算机做任何操作,也没有对应的机器码,不产生目标程序,不影响程序的执行,仅仅是能够帮助进行汇编的一些指令。常用的伪指令:※
设置目标程序起始地址伪指令ORG
格式:[符号:]ORG地址※结束汇编伪指令END
格式:[符号:]END※定义字节伪指令DB
格式:[标号:]DB项或项表※定义字伪指令DW
格式:[标号:]DW项或项表※预留存储空间伪指令DS
格式:[标号:]DS表达式※等值伪指令EQU
格式:标号:EQU项※位地址定义伪指令BIT
格式:标号:BIT位地址3.10汇编程序设计示例3.10.1算术、逻辑处理程序例:将一个双字节数存入片内RAM。设该待存双字节数高字节在工作寄存器R2中,低字节在累加器A中,要求高字节存入片内RAM的36H单元,低字节存入35H单元。
例:多字节无符号数相加。设被加数与加数分别在以ADR1与ADR2为初址的片内数据存储器区域中,自低字节起,由低到高依次存放;它们的字节数为L,要求加得的和放回被加数的单元。
程序流程框图
例:将R1、R2、R3、R4四个工作寄存器中的BCD码数据依次相加,要求中间计算结果与最后的和都仍为BCD码,且存入片内RAM。设四个工作寄存器中的BCD码数据相加后其和仍为2位BCD码,无溢出;(R1)+(R2)后的和存入片内RAM的30H单元,再加(R3)后的和存入31H单元,总的和存入32H单元。
例:使双字节数依次右移1位。设该双字节数的高字节已在工作寄存器R2中,低字节已在累加器A中。
例:多字节数求补。设该多字节数由低字节到高字节依次存放在片内RAM的以30H为起始地址的区域中,求补后放回原处。
例:统计自P1口输入的字串中正数、负数、零的个数。设R0、R1、R2三个工作寄存器分别为统计正数、负数、零的个数的计数器。
例:双字节无符号数乘法子程序设计。3.10.2数制转换程序例:将某8位二进制数转换为BCD码。设8位二进制数已在A中,转换后存于片内RAM的20H、21H单元。例:将某十进制数转换为ASCII码。设该十进制数已在A中。例:编写将某BCD码数据转换为ASCII码的子程序。设待转换的BCD码数据已在累加器A中,且在程序存储器中按序放有与BCD码数据对应的ASCII码的表格,其首地址为TAB。3.10.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西贵港桂平市江口中心卫生院招聘3人考前自测高频考点模拟试题完整答案详解
- 2025湖南娄底冷水江市城发实业有限公司公开招聘实验室试验员的考前自测高频考点模拟试题及参考答案详解1套
- 大学课件片头
- 2025人民医院流程优化能力考核
- 2025广西石卡镇储备村(社区)“两委”后备人才152人考前自测高频考点模拟试题及答案详解参考
- 2025年福建供电服务公司招聘笔试考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025安徽芜湖鸠江区招聘区属国有企业领导人员拟聘用人员(二)考前自测高频考点模拟试题附答案详解(模拟题)
- 2025北京市通州区不动产登记中心协办员招聘1人考前自测高频考点模拟试题及答案详解参考
- 上海市中医院学术会议学习汇报与知识转化能力考核
- 2025中心医院切缘评估诊断考核
- 枫蓼肠胃康胶囊与其他肠胃药的协同作用研究
- 环境污染物对人体健康影响的研究
- 国家开放大学理工英语1边学边练
- 人工智能导论PPT完整全套教学课件
- 卡氏肺孢子虫肺炎
- 陕中医大西医外科学教案05水、电解质代谢和酸碱平衡的失调
- 俱舍论原文内容
- GB/T 18742.3-2017冷热水用聚丙烯管道系统第3部分:管件
- 肺癌患者随访服务记录表
- 高三班主任经验交流课件
- 小学英语三年级上册全册课件
评论
0/150
提交评论