MSC51单片机.ppt
MCS-51系列单片机 原理及其应用,章节内容,第一章 概述,第二章 MCS-51单片机系统结构,第三章 MCS-51存储器和寻址方式,第四章 8051指令系统与汇编语言,第五章 MCS-51单片机系统扩展与应用,章开始幻灯片号:1,3,8,45,48,70,章开始幻灯片号:1,3,8,45,48,70,章开始幻灯片号:1,3,8,45,48,70,单片机(SCM)即单片微型计算机Singl Chip Microcomputer组成:P(微处理器)、RAM、E2PROM、ROM、Flash、多I/O并口、串口(可有多种:UART 如RS232、I2C总线,SPI、USB等)、定时器/计数器、AD/DA、中断控制、PWM(脉冲调制器)、看门狗和唤醒、DTMF(双音频)、内置LCD驱动、动态刷新、电源管理等功能集成在一块芯片上,具有一台小微机的功能。发展:嵌入式微控制器(Embedded Microcontroller)DSP(数字信号处理器),1.1.1 什么是单片机,第一章概述,1.1.2单片机厂家与品种,Intel MSC51(48/31)/96/198系列,Microchip PIC16/17/18CAtemel 89、AVR系(89C51/52,89C2051,40MHz)Motorola 68xxx系列Philip 80C51/87C51/80C52/87C52,51LPC系列(高速)TI MSP430LG GMS90系列(兼容8051,有40MHz的)Zilog Z8x系列 Scenix 8位RISC结构SX系列 Epson SMC60/63/88系列Micon MDT20XX系列Cygnal C8051系列(兼容,但数据地址不复用,128K)NS国家半导体 COP8,台湾义隆 EM78系列OTP型单片机(与PIC16C兼容)台湾凌阳 SPMC65/75系列(816 位)日立、东芝(870系列,90系列,Mips3000)、三菱等,1.2 MCS-51系列单片机主要功能,8位CPU;哈佛Harvard结构(程序与数据存贮器分开),内部具有数据和程序存贮器,以及特殊功能控制寄存器4个8位I/O并口外部数据和程序存贮空间总线信号与并口复用2个(3个)16位定时/计数器;2个优先级,2-7中断源;1个全双工串行(RS232)I/O口;1个布尔运算器;111条指令,有乘除指令;112MHZ晶振,片内振荡器;现可达40MHZ。软件:监控程序,小操作系统,汇编,C,Keil平台程序存贮器用E2PROM的用于开发,用ROM的仅1次编程,适合产品。均具有保密功能。,1.2.2 MCS-51系列单片机 产品系列,其中AT89S51单片机是一种新型的在线可编程的单片机,1.3 单片机的特点及应用,特点小而灵活、成本低、可多级和分布控制、易于产品化可靠性好,适应温度范围宽,编程方便,程序保密应用领域商用、家用、个人电子秤、收款机、条形码识别等空调系统、制冷系统、报警系统、考勤机等。学习机、PAD,MP3/4,儿童职能玩具网络通讯外设网络路由CPU,通讯如GPS,GPRS,计算机外设用(打印机,复印机)扫描仪,盘控)工业自动化测控系统,数控系统、数据采集系统、智能仪器工业机器人,机、电一体化产品,生产流水线等国防军事装备航天飞机导航系统、智能武器装备、导弹控制等,第二章、MCS-51单片机系统结构,2.1MCS-51 单片机的硬件结构一、MCS 51片内结构,按功能可分成8个部件,通过片内单一总线连接起来,1.微处理器,2.数据存储器,3.程序存储器,4.I/O口,5.串行口,6.定时/计数器,7.中断系统,8.特殊功能寄存器,控制方式:SFR对各功能部件集中控制,片内总线,与RAM统一编址,2.2 8051单片机外部特性-引脚,一、引脚逻辑图8051单片机为40条引脚双列直插式封装引脚可分为三个部分,控制引脚,并行I/O口引脚,电源及时钟引脚,AD7:0,A15:8,复用定义见后,二、并行I/O口引脚(复用),P0口 8位双向三态I/O口;使用外存时,分时复用地址线(低8位)/数据总线P1口8位(带上拉电阻)准双向I/O口;P2口 8位准双向I/O口;访问外存时只输出地址高8位P3口8位准双向I/O口;每个脚还具有第二功能,ALE地址锁存信号用于访问外存时锁存低8位址;ALE为晶振6分频;,三、控制引脚RST复位信号晶振工作后2个机器周期的高电平复位CPU。,2.3 中央处理单元CPU,四、电源及时钟引脚 X1接外部晶体此引脚接地又是内部振荡器的输入端;,X2接外部晶体的另一端又是内部振荡器输出端;,VCC,VSS电源和地+5V电源供电,使用TTL电平。,8051核心部件是8位CPU:由运算部件和控制部件构成运算部件:算术、逻辑、位及数据传送等操作控制部件:以主频为基准,控制CPU的时序,读指、指令译码、控制各硬件环节协调工作一、算术逻辑单元ALU8位,完成算术/逻辑运算。二、寄存器(一)通用寄存器(8位)4组,8个寄存器/组R0R7;R0和R1可用于间接寻址。,(二)特殊功能寄存器(SFR),共有21个1、累加器A(Acc)8051是累加器结构,所有的运算都是以累加器为一个源操作数和目的操作数2、累加器B乘、除指令中的一个操作数可以作为一般变量使用3、程序状态字PSW8位寄存器,保存指令执行状态PSW:,Cy进(借)位标志保存算术运算的进或借位位操作的累加器AC辅助进位标志运算结果从D3产生进位或借位时AC=1主要用于BCD码调整F0用户标志可以使用的位变量可以随PSW被保存RS1,RS0寄存器组选择 0 0 组0(00H07H)0 1 组1(08H0FH)1 0 组2(10H17H)1 1 组3(18H1FH),D7 D6 D5 D4 D3 D2 D1 D0,有符号数运算结果超出允许范围OV=1,否则OV=0。(双符号位,00+无溢;01+溢;10-溢;11-无溢)P奇偶标志位每个机器周期根据累加器A中的内容的奇偶性由硬件置/复位。A中1的个数为奇P=1;否则为P=0;4、堆栈及堆栈指针SP(1)堆栈(存储区)按先进后出的原则读写数据堆栈空间用内部RAM(256),OV溢出标志位,用于保护现场和恢复现场。(2)堆栈指针SP 8位寄存器,指示栈顶位置。进栈:SP+1,再压栈;出栈:先出栈,再SP-1。5、数据指针寄存器DPTR16位寄存器,可以寻址64K地址空间。6、程序计数器PC(16位)不属于SFR,但有联系用于存放下一条的指令地址,(三)复位电路8051复位初始化后,从程序存储器的0000H单元开始执行,用A/LJMP转到所用户程序的首地址上电阻容复位电路,可用专门的复位IC芯片,(一)时钟8051也是在时钟同步下工作,所以上电时必须复位。(二)时钟电路需外接晶振1.212MHZ,C1和C2取3010PF,三、时钟及复位电路,VCC上升时间不超过1mS,振荡器启动时间不超过10mS,此电路能保证可靠复位。,CPU的时序(主频、节拍状态周期机器周期、),(四)时序:主频、节拍、状态、基本机器周期、指令周期:,1个指令周期=1-4机器周期1个机器周期=6个状态周期1个状态周期=2个节拍CLK,S1,多路开关功能:用于控制选通I/O方式还是地址/数据输出方式方式控制:由内部控制信号产生,输入锁存器,两个输入缓冲器(BUF1和BUF2),推拉式I/O驱动器,2.4 并行I/O结构及操作,8051共有4个8位双向I/O口,共32脚。每位均有自己的锁存器(SFR),输出驱动器和输入缓冲器。,(一)P0口位图内部结构,说明:1、当控制信号为0时,P0口做双向I/O口,为漏极开路(3态)2、控制信号为1时,P0口为地址/数据复用总线(用于口扩展)3、P0W为端口输出写信号,用于锁存输出状态4、P0R1为读锁存器信号,执行“ANL P0,#0FH”时该信号有效5、P0R2为读引脚信号,执行“MOV A,P0”时该信号有效6、读引脚(端口)时,输出锁存器应为“1”,1,0,(二)P1口内部结构,P1口内部结构如图2所示输出部分有内部上拉电阻R*约为20K。其他部分与P0端口使用相类似。,写数据,读端口,(二)P2口内部结构,2、当控制信号为1时P2口输出地址信息,此时单片机完成外部的取指操作或对外部数据存储器16位地址的读写操作。3、当P2口作为普通I/O口使用时用法和P1口类似。,说明:1、P2可以作为通用的I/O,也可以作为高8位地址输出。,(三)P3口内部结构,说明:1、做普通端口使用时,变异功能应为“1”。,2、使用第二功能时,输出端口锁存器应为“1”。3、变异功能 P3.0 TXD P3.4 T0 P3.1 RXD P3.5 T1 P3.2 INT0 P3.6 WR P3.3 INT1 P3.7 RD,2.4 定时器/计数器,8051内部有2个16位定时器/计数器(8052有3个)主要作用:对外部脉冲计数、产生精确定时时间、作串行口的波特率发生器一、定时器/计数器结构,用于确定T1和T0的功能和工作方式,用于控制T1和T0的启动和停止,(一)工作方式控制寄存器TMOD,定时方式时,每个机器周期使计数器加1(T=12/fosc)计数方式时T0(P3.4)、T1(P3.5)的负跳变使计数器加1。最大计数速率是fosc/24,即高低电平分别能保持一个机器周期。,用于控制定时器/计数器的功能和工作方式TMOD格式:(字节地址89H),操作模式控制位,GATE:门控制GATE=1时,如INTx=1,且TRx=1,则启动定时器;GATE=0,只要TRx=1定时器就开始工作。C/T:选择定时或计数方式,M1 M0 工作方式控制位,TF1:定时器T1溢出中断标志。当定时器1溢出时,由硬件置1当响应中断转向中断服务程序时由硬件清0。TR1:定时器T1运行控制位。由软件置位/复位,控制定时器是否运行。TF0:功能与TF1类似。TR0:功能与TR1类似。,(二)状态控制寄存器TCONTCON格式:地址88H,状态控制寄存器TCON格式(低4位),二、定时器/计数器四种工作方式,由软件设置TMOD中的M1,M0位,选择定时器4种工作方式(一)方式0(以T1为例)当M1,M0置成00时,为方式0TLx(04)低5位和THx的8位构成13位计数器,溢出进位,溢出置位,4、定时器T0方式0类似5、计数器溢出,TF1置1,由硬件申请中断,B,A,(二)方式1,M1,M0置成01时,为方式116位计数器与方式0的区别:由THx作为高8位和TLx作为低8位构成一个16位计数器。,(三)方式2,M1,M0置成10时,为方式2为8位再装入工作方式。可以不用软件管理,自动工作。TH1为时间常数寄存器,TL1为计数器TL1溢出时打开三态门,由TH1自动为TL1置数,(三)定时器工作方式3(仅用于定时器T0),M1,M0置成11时,为方式3TH0和TL0分为2个独立的计数器,说明:1、TL0占用了全部的定时器控制位。(C/T,GATE,TR0,TF0)2、TH0只能用于定时方式运行控制位和溢出标志位借用定时器T1的TR1和TF1。3、此时的定时器T1可设为方式0、方式1或方式2,用于串行口波特率发生器,不需要中断的场合。,同步数据帧由三个部分组成特点:传输速率较高(可达56kbps以上)缺点:要求发送/接收时钟始终保持严格同步,硬件复杂主要用于计算机网络系统中。,2.5 串行I/O接口,MCS51内部有一个全双工串行通讯接口具有UART的全部功能(Universal Asynchronous Receiver/Transmitter)可同时进行数据的发送和接受可作为同步移位寄存器使用一、串行通讯串行通讯:使用极少的传输线将二进制数据按位传送分类:串行同步/串行异步通讯(一)同步通讯(Synchronous Communication)是一种连续串行传送数据的通讯方式,一次只传送一帧信息每帧信息通常含若干个数据字符,单同步字符帧格式,双同步字符帧格式,1,表示没有数据传送,(二)异步通讯(Asynchronous Communication),以字符(或字节)为单位一帧一帧的传送方式异步通讯协议:1)起始位 4)停止位2)数据位 5)波特率3)奇偶校验位 6)握手信号,表示开始发送,先发送低位数据,表示本帧数据发送完毕,起始位,1位停止位,1位、1.5位或2位波特率数据传输速率定义:每秒传送二进制数码的位数(或称比特数)单位:位/秒,bps(bit per second)字符传输速率:字符帧数/秒位传输时间:波特率的倒数,特点:无需传送同步脉冲发送/接收端的两个时钟源可彼此独立字符帧长度也不受限设备简单化缺点:每帧含有起始位和停止位,降低了有效数据的传输速率,(三)串行通讯约定两个重要指标 a)字符帧格式 b)波特率字符帧格式的四个部分:编码格式(58位,ASCII码7位)奇偶校验,1位,0,1,(四)数据传送方向,单工方式半双工方式全双工方式二、8051串行接口8051串行I/O接口有多机通讯功能主机与多片从机通讯,(一)串行通讯控制寄存器1、发送与接收寄存器SBUF8051有一个发送寄存器和一个接收寄存器,共同占用一个端口地址。2、控制与状态寄存器SCON,(1)SM0 SM1工作方式选择 0 0 方式0 移位寄存器 0 1 方式1 8位UART(10)1 0 方式2 9位UART(11)1 1 方式3 9位UART(11),(2)SM2:多机通讯控制位,SM2=0,为单机通讯方式SM2=1,为多机通讯方式(适用于方式2、3)(3)REN:允许接收控制位REN=0,禁止接收REN=1(且RI=0),允许收:即,数据SBUF中软件置位/复位(4)TB8:发送数据的D8,发送数据时,D8 TB8多机通讯时(仅方式2/3)TB8=1,发送一地址帧TB8=0,发送一数据帧单机通讯时,为奇偶校验位方式0、1未用TB8(5)RB8:接收数据中的D8多机通讯时RB8=1,收到的为地址帧RB8=0,收到的为数据帧单机通讯时,约定的奇偶校验位方式1中,RB8为接收数据的停止位方式0,未用,(6)TI:发送中断标志(硬件),下列情况时,TI=1,申请中断1)方式0,数据D7发送完毕2)其他方式,停止位开始发送时CPU响应中断后,软件清0软件查询TI状态(7)RI:接收中断标志(硬件)下列情况时,RI=1,申请中断1)方式0,收到数据D72)其他方式,收到停止位(中间)CPU响应中断后,软件清0,取数软件查询RI状态,(二)串行口4种工作方式1、方式0移位寄存器方式方式0主要用于I/O扩展RXD(P3.0),为I/O串行数据TXD(P3.1),为串行同步时钟接收:软件置REN=1(RI=0)后TXD产生移位时钟采样RXD线上的数据接收完毕,使RI=1发送:写SBUF有效时,即启动发送发送完毕,使TI=1接收/发送的8位数据低位在前I/O的波特率固定为fosc/12,串行口方式0扩展输入,由串行口扩展输入,1、CD4094是串行输入/并行输出的移位寄存器DI:串入信号/Qs:进位信号CLK移位时钟STB选通输入:高电平时,移入数据锁存器经过输出缓冲器并行输出2、扩展电路4094数据输入连接RXD移位时钟连接TXD由口线P1.0控制锁存(并出),1、CD4014是并行输入/串行输出的移位寄存器。8个并入和串入信号SI在移位时钟CLK作用下,由Q8输出P/S=0时移位使能,为1时置数,2、扩展电路4014串行输出连接RXD移位时钟CLK连接TXD由口线P1.0控制允许移位,2、串行方式1,一个起始位8个数据位一个停止位,26,发送“写SBUF”指令引起发送过程由TXD(P3.1)发送数据发送完成使发送标志TI=1申请中断,置TXD=1为停止位发送时钟周期为16倍的BaudTB8=1组成停止位自动发送,方式1的数据格式:,在每个数据中间点采样3次,以表决方式(3取2)确定数据位当REN=1时,收到停止位RB8=1后,请求中断,置RI=1,CPU响应中断后,读SBUF取数取数完毕,置RI=0(SBUF为空),D8,接收串行口从RXD接收数据接收时钟以16倍的Baud的速率采样RXD当发现从“1”到“0”的负跳变时使接收时钟与数据位同步,串行通讯的波特率,方式1和方式3的波特率取决于定时器1的溢出率和PCON中的最高位SMOD的值。定时器1工作在方式2时,波特率由以下公式计算。,表1、几种常用波特率时间常数,表1是主频为11.0592MHZ,由定时器1工作在方式2(做定时器)时,几种常用波特率的时间常数(TH1)。,3、串行口方式2和方式3,(1)数据格式:,(2)发送与方式1类似,仅是多发送一位数据TB8。(3)接收过程使REN=1,采样RXD线REN由10时,D8 RB8置RI请求中断的条件与方式1相同:SBUF中伤一帧数据已读取SM2=0或停止位=1否则,本次接收失效,RI不变(4)发送过程写SBUF,启动发送,串行口取出TB8(可由软件设置)D8逐一发送完毕后,置TI=1(5)方式2、3的不同在于波特率方式3的波特率与方式1相同,由定时器1发生方式2的波特率的公式计算为:,2.6 8051中断控制系统,一、中断概述(一)概念中断:用外部逻辑强迫停止CPU正在执行的程序,而转到中断服务程序的过程。(二)中断的过程1、有中断请求发生;2、CPU允许中断(打开全局和对应的局部各中断屏蔽);3、响应中断:(1)保护现场(程序先确定中断源,关屏蔽,清中断源,保护要用的寄存器,硬件保护程序点);(2)中断服务;(3)恢复现场并返回(包括开中断屏蔽);,(三)中断优先级中断优先级:多个中断源时,主机对中断源处理的先后顺序1、软件查询方式主机查询顺序决定优先级顺序;2、矢量中断方式硬件优先级排队电路,响应中断时由外设提供中断矢量根据中断矢量决定中断服务程序入口地址51系列有5个中断源,52系列有6个中断源,其中断过程类似中断向量区空间0003-002A,二、8051中断系统,(一)中断源8051的5个中断源,响应每个中断源的中断要求受下列因素控制:中断请求标志TFX(TCON,X=0,1)IEX(TCON,X=0,1)TI和RI(SCON)允许中断寄存器IE中断优先寄存器IP内部查询逻辑(同级)每个中断源的中断矢量,INT0:外部中断0请求,由IT0位设置INT0请求信号为低电平或下降沿有效IE0,中断请求触发器INT1:外部中断1请求由IT1设置INT1请求为低电平有效或下降沿有效IE1,中断请求触发器TF0:定时器0溢出中断请求TF1:定时器1溢出中断请求,RI和TI:串行口收发中断请求RI和TI共用一个中断源由软件清除申请标志,IE各位功能如下:1、EA:允许或禁止所有中断。当EA=0禁止所有中断响应当EA=1允许各个中断源向CPU申请中断2、ES:允许或禁止串行口中断ES=1允许ES=0禁止,(二)中断控制,中断允许寄存器IE:对每个中断源能否申请中断进行控制,3、ET1:定时器1溢出中断允许控制位ET1=1允许ET1=0禁止4、EX1:外部中断1(INT1)中断允许控制位EX1=1允许;EX1=0禁止。5、ET0:定时器0溢出中断允许控制位,设定与ET1类似6、EX0:INT0中断允许控制位,设定与EX1类似 7、系统复位的初始设置为0,(三)中断优先级,8051有两个中断优先级IP寄存器用于控制中断源优先级优先级规则:高优先级可中断低优先级实现中断嵌套同级中断源不能相互中断同一优先级的多个中断源同时申请中断时,由内部查询次序决定先响应哪个中断。查询次序为:IE0TF0IE1TF1RI+TI,编程该位为“1”,高优先级;为“0”低优先级。(四)中断管理8051每个机器周期对中断进行查询发生下列情况之一,中断响应将被屏蔽:同级或高优先级中断正在处理中当前机器周期不是正在执行指令的最后一个周期当前正在执行的指令为中断返回指令(RETI)或对IE和IP寄存器读写指令,中断优先级寄存器IP:,响应中断后,在硬件的控制下,程序转向相应的矢量单元将当前的程序计数器PC值进栈保护,但不保护PSW将相应的矢量地址装入PC,并转向执行该中断服务程序,中断响应过程,中断服务程序从中断入口地址开始执行,直到返回指令(RETI)为止(五)外部中断INT0,INT1可编程电平触发方式或下降沿触发方式每个机器周期(fosc/12)采样中断输入引脚中断引脚上的高和低电平的时间应至少保持12个时钟周期中断响应时间:从中断请求有效到开始执行服务程序的第一条指令(38个机器周期),(六)用优先权编码器扩展外部中断源,74LS148:优先级编码器(8-3)输入07:连接8个中断源(低电平有效)A0A2:8个输入的编码输出(反码)GS:编码器允许输出端输入出现多中断源申请时:输入编号较大的优先级高同一时刻只对优先级高中断源的编码,如:输入有 IR0=IR1=IR3=0则:输出为 A2A1A0=100GS=0时,向CPU申请中断,其它应用1:用外部存贮空间扩展外部中断源,如INT0的外部中断源的扩张,其它应用2:用 I/O 口 虚拟I2C总线 或 SPI串口 或 扩张外部存贮空间的高位地址,其它应用3:用外部存贮空间扩展I/O口,其它应用4:如 使用INT0,单指运行调试,原理:中断返回到断点,至少要执行一条指令指令,才响应新的嵌套中断。实行对指令的逐条执行。硬件:在接一个单脉冲按键开关触发器,其输出通过跳针接INT0,按下开关触发器输出为“1”,放开为“0”。每按一次产生一次INT0中断执行一条指令。程序:JNB P3.2,$;/放按键开关,测试转移 JB P3.2,$;/按按键开关,测试转移 RETI;/中断返回注意:此时原INT0中断不可用,可用跳针断开。也可用其它 中断输入脚,但测试点是对应的P3.x。,有关中断控制中注意问题,中断响应中问题:触发极性高/低电平或/跳沿,根据规定设置,电平请求必须保持4个机器周期(最长指令周期),否则可能得不到响应(因在指令执行的最后周期才响应中断)。中断请求的撤除:外部请求源,如果不能自动清除,设计逻辑必须保证可用程序命令清除。若不清除,电平型则可产生连续中断,造成死机;跳沿型则不能发生下次中断(无跳沿)。,第三章、MCS-51存储器和寻址方式,3.1 8051存储器结构一、存储器结构8051单片机程序存储器和数据存储器分开由PSEN选通外部程序存储器,由RD(P3.7)和WR(P3.6)读写外部数据存储器(MOVX)(一)程序存储器存放程序或固定数据,只能取指令读或程序MOVC读取,说明:1、8051可寻址64K程序空间;2、8051内部有4KBROM;3、执行到0FFFH到外部取指;,4、8031无内部ROM;5、程序存储器访问通过(1)地址有效;(2)PSEN有效;,(二)数据存储区,8051分为片内数据存储器(256B)和片外数据存储器,1、内部RAM由8位地址线寻址00H7FH:存储区80H FFH:特殊功能寄存器区2、片外RAM由16位地址寻址寻址空间64KB片外数据存储器访问条件:(1)地址信号有效;(2)RD/WR信号有效;,二、内部数据存储器内部数据存储器低128字节为RAM高128字节为特殊功能寄存器区,(一)RAM区1、通用寄存器区4组8个8位寄存器R0R7由PSW中的RS1,RS0选择当前工作区2、位寻址空间20H2FH字节可以位寻址128位00H7FH3、寻址内部RAM空间30H7FH字节(80B),4、特殊功能寄存器,*表示 可以位寻址的寄存器(其地址可被8整除)共21个SFR,离散分布只能使用直接寻址,3.2 8051寻址方式(7种),第四章 8051指令系统,4.1指令系统概要一、指令系统分类及技术指标共111种指令,按功能分为5类数据传送(29条)算术操作(24条)逻辑操作(24条)控制转移(17条)布尔变量操作(17条)指令字节数单字节指令占44%双字节指令占42%三字节指令占15%指令执行的时间单机器周期(12/fosc)58%双机器周期(24/fosc)41%两条指令是4个机器周期,二、汇编语言中常用符号,设:fosc=12MHz,则对应的机器周期为单机器周期=1s双机器周期=2 s4个机器周期=4 s,4.2 数据传送指令(29条),一、向累加器A的传送(目的)MOV A,Rn;(A)(Rn)MOV A,direct;(A)(direct)MOV A,Ri;(A)(Ri)MOV A,#data;(A)data二、向通用寄存器传送MOV Rn,A;(Rn)(A)MOV Rn,direct;(Rn)(direct)MOV Rn,#data;(Rn)data,三、向直接地址传送MOV direct,A;(direct)(A)MOV direct,Rn;(direct)(Rn)MOV direct,direct;(direct)(direct)MOV direct,Ri;(direct)(Ri)MOV direct,#data;(direct)data四、间址传送MOV Ri,A;(Ri)(A)MOV Ri,direct;(Ri)(direct)MOV Ri,#data;(Ri)data,六、累加器传送指令字节交换指令XCH A,Rn;(A)(Rn)XCH A,direct;(A)(direct)XCH A,Ri;(A)(Ri)半字节交换指令XCHD A,Ri;(A03)(Ri)03)累加器高4位与低4位数据互换SWAP A;(A03)(A47),五、堆栈操作,入栈指令PUSH direct;(sp)(sp)+1,;(sp)(direct)出栈指令POP direct;(direct)(sp),;(sp)(sp)-1,累加器与外部RAM的传送MOVX A,Ri;(A)(Ri)MOVX A,DPTR;(A)(DPTR)MOVX Ri,A;(Ri)(A),WR有效MOVX DPTR,A;WR(P3.6)有效;(DPTR)(A),累加器与程序存储器传送MOVC A,A+DPTR;(A)(A)+(DPTR)MOVC A,A+PC;(PC)(PC)+1,(A)(A)+(PC),七、目标地址传送指令MOV DPTR,#data16;(DPTR)data16,4、十进制调整指令DA A;对(A)的加结果进行十进制调整,4.3 算术运算指令(24条),一、加法指令1、加法ADD A,Rn;(A)(A)+(Rn)ADD A,direct;(A)(A)+(direct)ADD A,Ri;(A)(A)+(Ri)ADD A,#data;(A)(A)+data注:加/减法指令影响Ac,Cy,OV,P,3、加1指令INC A;(A)(A)+1INC Rn;(Rn)(Rn)+1INC direct;(direct)(direct)+1INC Ri;(Ri)(Ri)+1INC DPTR;(DPTR)(DPTR)+1注:加/减1指令不影响PSW(Cy),2、带进位加法ADDC A,Rn;(A)(A)+(Rn)+(C)ADDC A,direct;(A)(A)+(direct)+(C)ADDC A,Ri;(A)(A)+(Ri)+(C)ADDC A,#data;(A)(A)+data+(C),三、乘法指令MUL AB;(BA)(A)*(B)(A)0FFH,则OV=1,(B)=非零 否则,OV=0,(B)=0,四、除法指令DIV AB;(A)(A)/(B);(B)(A)%(B)Cy=OV=0若(B)=00H,(A)和(B)结果不定,置OV=1,表示0除数错误(Cy=0),无不带借位指令使用前要先CLR C,使Cy=0影响标志位PSW:Cy,AC,OV,P,二、减法指令,1、带借位减法指令SUBB A,Rn;(A)(A)-(Rn)-(C)SUBB A,direct;(A)(A)-(direct)-(C)SUBB A,Ri;(A)(A)-(Ri)-(C)SUBB A,#data;(A)(A)-data-(C),2、减1指令DEC A;(A)(A)-1DEC Rn;(Rn)(Rn)-1DEC direct;(direct)(direct)-1DEC Ri;(Ri)(Ri)-1不影响PSW,6、累加器A带进位循环右移RRC A;,4.4逻辑运算指令(24条),一、单操作数逻辑运算指令1、累加器A清零CLR A;(A)0,3、累加器A循环左移 RL A;,4、累加器A循环右移 RR A;,5、累加器A带进位循环左移RLC A;,RLC A:可以实现快速(A)2RRC A:可以实现快速(A)/2,二、双操作数逻辑运算指令,逻辑操作指令只影响标志位P1、逻辑“与”指令ANL A,Rn;(A)(A)(direct)(direct)&data,2、逻辑“或”指令ORL A,Rn;(A)(A)|(Rn)ORL A,direct;(A)(A)|(direct)ORL A,Ri;(A)(A)|(Ri)ORL A,#data;(A)(A)|dataORL direct,A;(direct)(direct)|(A)ORL direct,#data;(direct)(direct)|data,(2)长调用(64K)LCALL addr16;(pc)(pc)+3;(sp)(sp)+1,(sp)(pc07);(sp)(sp)+1,(sp)(pc815);(pc)addr16,XRL A,Rn;(A)(A)(Rn)XRL A,direct;(A)(A)(direct)XRL A,Ri;(A)(A)(Ri)XRL A,#data;(A)(A)dataXRL direct,A;(direct)(direct)(A)XRL direct,#data;(direct)(direct)data,4.5 控制转移指令(17条)一、无条件转移指令1、调用指令(1)绝对调用(2K)ACALL addr11;(pc)(pc+2);(sp)(sp)+1,(sp)(pc07);(sp)(sp)+1,(sp)(pc815);(pc010)addr010;(pc1115)不变,3、“异或”指令,(3)相对转移(短转移)SJMP rel;(pc)(pc)+rel,(2)中断程序返回RETI;(pc815)(sp),(sp)(sp)-1;(pc07)(sp),(sp)(sp)-1;开放中断逻辑,5、空操作指令NOP;(pc)(pc)+1用于产生一个机器周期的延迟,4、间接转移指令(散转指令)JMP A+DPTR;(pc)(A)+(DPTR),3、转移指令(1)绝对转移(短转移)AJMP addr11;(pc010)addr010;(pc1115)不变,2、返回指令,(1)子程序返回(ACALL和LCALL)RET;(pc815)(sp),(sp)(sp)-1;(pc07)(sp),(sp)(sp)-1,(2)长转移LJMP addr16;(pc)addr16,二、条件转移指令,1、判零转移指令(1)JZ rel;当(A)为0,则(pc)(pc)+rel;否则,顺序执行(2)JNZ rel;当(A)非0,则(pc)(pc)+rel;否则,顺序执行,3、跳转循环指令(内容0)DJNZ Rn,rel;(Rn)(Rn)-1,;若(Rn)非0,则(pc)(pc)+rel;否则,顺序执行DJNZ direct,rel;(direct)(direct)-1,;若(direct)非0,则(pc)(pc)+rel;否则,顺序执行,2、比较转移指令(-128B+127B)CJNE A,direct,relCJNE A,#data,relCJNE Rn,#data,relCJNE Rn,#data,rel;若不相等,(pc)(pc)+rel;否则,顺序执行,4.6布尔处理器指令(17条),8051的位(布尔)处理器具有一系列位指令集布尔变量传送位状态控制布尔逻辑运算位条件转移位变量地址空间片内低RAM,Bit地址范围:00H7FH(128位)片内高RAM,地址能被8整除的SFR中对应各位(11个):80HF7H,MOV C,bit;(C)(bit)MOV bit,C;(bit)(C)C为进位标志位Cy(不影响PSW)二、布尔状态控制1、位清“0”指令CLR C;(C)0CLR bit;(bit)02、位置“1”指令SETB C;(C)1SETB bit;(bit)1,四、位条件转移指令1、判断C转移JC rel;当(C)为1,则(pc)(pc)+rel;否则,顺序执行JNC rel;当(C)为0,则(pc)(pc)+rel;否则,顺序执行,一、布尔数据传送指令,pc+rel中,(pc)表示为当前的指令地址即:执行跳转指令后的下一条指令地址,3、判断位变量转移并清0指令JBC bit,rel;当(bit)为1,则(bit)0,(pc)(pc)+rel;否则,顺序执行 可用于对SFR的bit检测和软件复位(TFX),2、判断位变量转移指令,JB bit,rel;当(bit)为1,则(pc)(pc)+rel;否则,顺序执行JNB bit,rel;当(bit)为0,则(pc)(pc)+rel;否则,顺序执行,例题:比较内部RAM的DATA1和DATA2 中的两个无符号数的大小,大数存入单元M,小数存入单元N,若两数相等使内部RAM位单元127置1。COMP:MOV A,DATA1CJNEA,DATA2,BIGSETB127;两数相等RETBIG:JCLESS;若Cy=1则;DATA1小MOVM,AMOVN,DATA2RETLESS:MOVN,AMOVM,DATA2RET,3、连接程序如果汇编语言产生浮动代码(由A51汇编产生的OBJ文件)则由连接程序形成执行代码。,4.7 汇编语言程序设计,一、单片机软件开发过程(一)、汇编语言开发过程1、汇编语言源程序由编辑软件建立,是ASCII文件符合汇编语言规范扩展名为ASM或A51,4、调试程序一般在开发系统下调试。开发系统:汇编ASM51,Keil 汇编/C仿真平台,其它调试:代码调试,符号调试。,2、汇编程序将汇编程序翻译成机器码形成HEX文件,5、固化由将目标程序转化成HEX格式或二进制映像文件由编程器固化,嵌入到目标板中,2、语句格式的规定指令语句(4个字段)标号:助记符 操作数;注释伪指令语句(4个字段)名字 定义符 参数;注释,1、语句的三种类型指令语句:汇编时,一条指令产生一个目标代码伪指令语句:服务于汇编语言,汇编时,不对应目标代码宏指令语句:用来代替源程序中重复使用的程序段 汇编时,产生相应的目标码,(二)汇编语言语句的种类和格式,程序段说明伪指令ORG例:ORG 1000H START:MOV A,#12H指定程序的起始地址(1000H),如果地址用标号:ORG BEGINPROG:则程序起始于浮动地址,汇编结束伪指令END标号:END位于程序最后,表示汇编结束子程序中可不使用标号,3、伪指令语句等值伪指令EQU和DL:例:DDR EQU 1020H(不可改)CNT DL 2300H(可更改),数据说明伪指令DB和DW例:TAB DB 0,4,8,16,32 数据存入TAB为起始地址的连续字节存储单元中如DB改成DW,则按字存放数据,保留存储区说明伪指令例:STA DS 10H从STA开始保留10H个单元备用,二、汇编语言程序设计与实例,(一)数据传送程序设计例:在代码段中,以CSTR单元开始连续存放一个以NULL(ASCII码0)为结束标志的字符串,将其传送到以STR开始的内部RAM中,试编程。,说明:1、伪指令DB定义字符串,最后一个字节为标志NULL。2、由DPTR寻址源串,用MOVC指令取代码段中的数据。3、R0为目的串指针,寻址内部RAM。,思考题:如何将代码段中的字符串传递到外部RAM中?,程序:STR EQU 30HMCSTR:MOV R0,#STR MOV DPTR,#CSTRMCSTR1:CLR A MOVC A,A+DPTR JZ MCSTR2 MOV R0,A;内部RAM,INC R0 INC DPTR SJMP MCST