单片机原理及接口技术.ppt_第1页
单片机原理及接口技术.ppt_第2页
单片机原理及接口技术.ppt_第3页
单片机原理及接口技术.ppt_第4页
单片机原理及接口技术.ppt_第5页
已阅读5页,还剩203页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及接口技术,2015,1课程名称:单片机原理及接口技术2学时学分:周4学时2.5学分3先修课程:程序设计、电工与电子技术基础4教材:李全利等,单片机原理及应用。5教学方法:讲授法为主,讨论法、练习法(小测验+习题)这几种教学方法的综合运用。6考核方式期终闭卷考试,结合课堂发言,平时作业,课堂表现,考勤要求,加以评定。总评=平时0.2+期末0.8;平时成绩=考勤0.1+小测验0.3+作业0.4+实验0.2,课程的总体要求,课程的课时安排,第1章绪论第2章80C51的结构和原理第3章80C51的指令系统第4章80C51的程序设计第5章80C51的中断系统及定时/计数器第6章80C51的接口,课程内容,本章内容1.1数制与编码的简单回顾1.2电子计算机的发展概述1.3单片机发展过程及产品近况1.4单片机的特点及应用领域,第1章绪论,1.1数制与编码的简单回顾,1.1.1数制,1、十进制(Decimal)十进制后缀D或无后缀a、基数为10。b、特点:它有09十个不同的数码它是逢十进位的。2、二进制(Binary)二进制后缀Ba、基数为2。b、特点:它有0、1两个不同的数码它是逢二进位的。,3、十六进制(Hexadecimal)十六进制后缀Ha、基数为16。b、特点:它有09,A、B、C、D、E、F十六个不同的数码它是逢十六进位的。4、八进制(Octal)八进制后缀O或Qa、基数为8。b、特点:它有07八个不同的数码它是逢八进位的。,5、B、Q、H、D之间的相互转换(按组合算6种)1)BD:BD幂级数求和DB整数部分除以2、取余数、逆序;小数部分乘以2、取整数、顺序;常用最大权法2)QD:QD幂级数求和DQ整数部分除以8、取余数、逆序;小数部分乘以8、取整数、顺序;常用最大权法3)HD:HD幂级数求和DH整数部分除以16、取余数、逆序;小数部分乘以16、取整数、顺序;常用最大权,5、B、Q、H、D之间的相互转换(6种)4)BQ:BQ三合一QB一分三5)BH:BH四合一HB一分四6)QH:HBQH(一分四)B(三合一)QQ(一分三)B(四合一)HHDQH(幂级数求和)D(整除小乘)QQ(幂级数求和)D(整除小乘)H,6、B、Q、H、D之间的相互转换(按转换方法分5种)1)B、Q、HD:幂级数求和2)DB、Q、H:整数部分除以2、8、16取余数,逆序(最大权法)小数部分乘以2、8、16取整数,顺序3)BQ、H:三(位B)合一(位Q)、四(位B)合一(位H)4)Q、HB:一(位Q)分三(位B)、一(位H)分四(位B)5)HQ:H(一分四)B(三合一)QQ(一分三)B(四合一)H,1、ASCII码09的ASCII:30H39HAZ的ASCII:41H5AHaz的ASCII:61H7AH2、BCD码压缩的BCD码:4位二进制数表示1位十进制数非压缩的BCD码:8位二进制数表示1位十进制数,低4位表示十进制数,而高4位没有意义,一般用“0000”来表示。,1.1.2编码,符号位规定:0表示正数,1表示负数。1、原码“符号+绝对值”,符号位表示数的正负,而其余位表示这个数的绝对值。8位字长表示范围:-127+1272、反码对于正数的反码同原码,对于负数,将其原码除符号位外的各位求反为反码。8位字长表示范围:-127+1273、反码正数的补码同原码,负数的补码等于该数的反码在最低位上加“1”。8位字长表示范围:-128+127,1.1.3计算机中带符号数的表示,4)反码运算a、要把符号位当作数一同参与运算,并自动生成结果的符号。b、当符号位相加后,若有进位,则要把它送回到数的最低位去相加循环进位5)补码运算a、把符号位当作数据,一同参与运算。b、符号位相加后,若有进位,则舍去进位。6)带符号数都是用补码表示的。,1、微型计算机的组成微型计算机由CPU、存储器、输入/输出接口电路和系统总线构成。,1.2.2微型计算机的组成及其应用形态,微型计算机结构框图,1.2电子计算机的发展概述,2、微型计算机的应用形态微型计算机的应用形态可以分为3种:多板机:(系统机)工业PC机也属于多板机。单板机:(现已很少用)单片机:集成了CPU、存储器、I/O接口电路的单芯片微型计算机。,系统机(多板机)单板机单片机,1、单芯片微机形成阶段2、性能完善提高阶段3、微控制器化阶段,1.3.1单片机的发展过程,1.3单片机的发展过程及产品近况,1、80C51系列产品繁多,主流地位已形成,已推出的与80C51兼容的主要产品有:2、非80C51结构单片机新品不断推出,1.3.2单片机产品近况,1、控制性能和可靠性高2、体积小、价格低、易于产品化,1.4.1单片机的特点,1.4单片机的特点及应用领域,智能仪器仪表、机电一体化产品、实时工业控制、分布式系统的前端模块、家用电器。,1.4.2单片机的应用领域,本章内容2.180C51系列概述2.280C51的基本结构与应用模式2.380C51典型产品资源配置与引脚封装2.480C51的内部结构2.580C51的存储器组织2.680C51的并行口结构与操作,第2章80C51的结构和原理,生产工艺有两种:一是HMOS工艺,二是CHMOS工艺。在产品型号中凡带有字母“C”的即为CHMOS芯片,CHMOS芯片的电平既与TTL电平兼容,又与CMOS电平兼容;既保持了HMOS的高速度和高密度,还具有COMS的低功耗。功能上,该系列单片机有基本型和增强型两大类:基本型(末位为1):8051/8751/8031/80C51/87C51/80C31增强型(末位为2):8052/8752/8032/80C52/87C52/80C32,2.180C51系列概述,2.1.1MCS-51系列,51系列单片机的主要功能特点:1、一个8位微处理器CPU;2、片内振荡器,振荡频率范围为1.212MHZ;3、4KB/8KB的片内ROM(8031、8032、80C31无);4、128/256字节的片内RAM;5、片外ROM的寻址范围为64KB;6、片外RAM的寻址范围为64KB;7、21个特殊功能寄存器(SFR);8、四个8位并行I/O接口(P0P3),32根I/O口线;9、1个全双工UART串行口,可多级通信;10、2/3个16位定时/计数器;11、具有5/6个中断源,可编程为两个优先级;12、有位寻址功能,适于布尔处理的位处理机;13、111条指令;14、片内采用单总线结构;15、用单一+5V电源。,2.280C51的基本结构与应用模式,2.2.180C51的基本结构,注:与并行口P3复用的引脚有串行口I/O引脚RXD和TXD,外部中断输入引脚INT0*和INT1*,外部计数输入引脚T0和T1,外部数据存储器写和读控制信号WR*和RD*。,2.2.280C51的应用模式,1、总线型单片机应用模式,总线型应用的“三总线”模式,它在扩展外围器件较多时接线复杂、系统可靠性会降低。这种总线应用在系统设计时应尽量减少扩展器件的数量。,非总线型应用的“多I/O”模式,非总线型应用的“多I/O”模式极适用于大量I/O口线需求的应用系统。,2.380C51典型产品资源配置与引脚,2.3.180C51典型产品资源配置,2.3.280C51的引脚封装,1、总线型DIP40引脚封装,DIP封装,QFP封装,DIP40,1、总线型DIP40引脚封装1)电源及时钟引脚VCC(40脚):主电源+5VVss(20脚):接地XTAL1(19脚):在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,此引脚作为驱动端。XTAL2(18脚):在片内它是一个振荡电路反相放大器的输出端。若采用外部时钟电路,此引脚应悬浮。2)控制引脚RST/VPD(9脚):单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)/备用电源ALE/PROG*(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。,2)控制引脚EA*/VPP(31脚):当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。当地址超出4KB时,将自动执行片外程序存储器的程序。当EA输入低电平时,CPU仅访问片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。PSEN*(29脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。,3)并行I/O引脚(32个,4个8位口)P0.0P0.7(39脚32脚):一般I/O口引脚或数据/低位地址总线复用引脚P1.0P1.7(1脚8脚):一般I/O口引脚P2.0P2.7(26脚21脚):一般I/O口引脚或高位地址总线引脚P3.0P3.7(10脚17脚):一般I/O口引脚或第二功能引脚,4)芯片引脚的第二功能引脚复用不会引起混乱的原因:工作方式不同;P3口的第二功能都是重要控制信号,使用时优选第二功能,2.480C51的内部结构,运算器,控制器,存储器,1、80C51的微处理器(CPU)1)运算器组成:算术/逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器、程序状态寄存器PSW(1)ALU用来完成二进制的四则运算和逻辑运算。此外通过对运算结果判断,影响程序状态字的有关位(2)累加器Acc8位寄存器,它通过暂存器和ALU相连,是CPU中最繁忙的寄存器。在进行算术、逻辑运算时,运算器的一个输入多为ACC的输出,而运算结果又大多数送到ACC中。在指令系统中ACC的助记符为A。自身带有全零标志Z,若A0则Z1;若A0则Z0。该标志常用作程序分支转移的判断条件。,2.4.180C51单片机的内部结构,(3)寄存器B80C51中,在做乘、除法时必须使用B寄存器,乘法时用于存乘数/积的高8位,除法时用于存除数/余数;不做乘、除法时,可作为一般的寄存器使用。(4)程序状态字PSW8位寄存器,用来存放运算结果的一些特征。字节地址(D0H),格式如下、含义见下页。,CY:进位标志。在进行加法(或减法)运算时,若运算结果最高位有进位(或借位),则C=1,否则C=0,在进行位操作时,C作为位操作累加器。AC:半进位标志(或辅助进位)。在进行加法(或减法)运算时,若低半字节向高半字节有进位(或借位),则AC=1,否则AC=0,AC还作为BCD码运算调整时的判别位。F0、F1:用户标志位。由用户置位、复位,作为软件标志。OV:溢出标志。反映运算结果是否溢出,溢出时,OV=1,否则OV=0。溢出是指有符号数进行运算时,结果超出了+127-128;而进位是指两个无符号数最前一位(第7位)相加(或相减)时有进位(或有借位)。P:奇偶标志。反映A中的内容的奇偶性,若A中有奇数个1则P=1,否则P=0。,RS1、RS0:工作寄存器指针。用来选择当前的工作寄存器组。由用户通过指令改变RS1、RS0的组合,以选择当前的工作寄存器组。单片机复位时,RS1=RS0=0,CPU默认第0组工作寄存器。,2)控制器控制器是CPU的大脑中枢,它的组成:指令寄存器IR、指令译码器ID、定时与控制逻辑电路、程序计数器PC、数据指针DPTR、堆栈指针SP等。功能:对程序指令逐条译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作,完成指令所规定的操作。(1)指令寄存器IR保存当前正在执行的一条指令。(2)指令译码器ID当指令送入指令译码器后,由译码器对该指令进行译码,即把指令转变成所需的电平信号,以便计算机能正确执行程序所要求的各种操作。,指令寄存器IR和指令译码器ID的协作当指令取出经指令寄存器IR送至指令译码器ID时,ID对该指令进行译码,即把指令转变成所需的电平信号,CPU根据ID输出的电平信号使定时控制电路定时地产生执行该指令所需的各种控制信号,以使计算机能正确执行程序所要求的各种操作。,程序存储器,PC,取出指令码,指令寄存器IR,指令译码器ID,把指令转变成所需要得电平信号,CPU产生执行该指令所需的各种控制信号,取指令,分析指令,执行指令,(3)程序计数器PC是单片机CPU内一个物理结构独立的特殊寄存器。作用就是用来存放将要从ROM中读出的下一指令的16位地址,因此也称为地址指针,可对64KROM直接寻址。PC具备的功能:a、自动加1功能,即CPU从存储器中读出一个字节的指令码后,PC自动加1(指向下一个存储单元)。b、执行转移指令时,PC能根据该指令的要求修改下一个指令的地址。c、在执行调用子程序或发生中断时,CPU会自动将当前PC值压入堆栈,将子程序或中断入口地址装入PC;子程序或中断返回时,恢复原压入堆栈的PC值,继续执行原顺序程序指令。,(4)定时与控制逻辑电路是微处理其的核心部件,任务是控制取指令、执行指令、存取操作数或运算结果等操作,向其他部件发出各种微操作控制信号、协调各部件的工作。(5)数据指针DPTR由于80C51系列单片机可以外接64K的RAM和I/O接口电路,故单片机内设置了16位的数据指针DPTR。它可以对64K外部RAM和I/O口进行寻址。它的高8位为DPH,地址为83H,低8位为DPL,地址为82H。(6)堆栈指针SP(StackPointer)SP在片内RAM128个字节中开辟栈区,并随时跟踪栈顶地址。它是按“先进后出”的原则进行存取数据的,开机复位后,单片机栈底地址为07H。,2、片内存储器程序存储器和数据存储器2个独立的空间(称为哈佛结构)。单片机内程序存储器容量基本型:4KB,地址范围是:0000H0FFFH增强型:8KB,地址范围是:0000H1FFFH单片机内数据存储器容量基本型:128B,地址范围是:00H7FH增强型:256B,地址范围是:00HFFH(高128字节一般为RAM,仅能采用寄存器间接寻址方式),3、I/O口及功能单元并口:P0P3,双向口。每口8条I/O线串行口:P3.0、P3.1,全双工定时/计数器:2个,16位中断系统:5个中断源,2个优先级4、特殊功能寄存器(SFR)21个SFR,地址80HFFH。只占用了80HFFH中的21个字节单元,且这些单元是离散分布的。增强型单片机的SFR有26个字节单元,所增加的5个单元均与定时/计数器2相关。,全双工通信,半双工通信,单工通信,返回,2.4.280C51的时钟与时序,1、时钟产生方式,内部时钟,外部时钟,2、时钟信号晶振周期(或外部时钟周期)为最小的时序单位。1个机器周期:12个晶荡周期(或6个时钟周期)指令的执行时间称作指令周期(单、双、四周期)晶振周期、时钟周期、机器周期、指令周期都是时序单位,机器周期常用于计算其他时间的基本单位。,2.4.380C51单片机的复位,1、复位电路复位可使单片机或系统部件处于确定的初始状态,上电复位电路,按键与上电复位,2、单片机复位后的状态PC=0000HRAM:随机值(运行中复位不改变RAM内容)SFR状态P0P3=FFHSP=07HIP、IE和PCON:有效位为0PSW=00H,2.5.180C51的程序存储器配置,80C51的程序存储器配置,PC:16位计数器,能寻址64KB的ROM,2.5.280C51的数据存储器配置,单片机的RAM配置,数据存储器分为片内RAM和片外RAM。片内RAM有128B,分成工作寄存器区、位寻址区、通用RAM区,用MOV指令访问,无读写信号。基本型片内RAM的128B地址范围:00H7FH,增强型片内RAM的258B地址范围:00HFFH,80HFFH只能用寄存器间接寻址方式访问。片外RAM的64KB地址范围:0000HFFFFH,用MOVX指令访问,有读写信号,无堆栈。,1、工作寄存器区低端32个字节分成4个工作寄存器组,每组8个单元。当前工作寄存器组的机制便于快速现场保护。PSW的RS1、RS0决定当前工作寄存器组号寄存器0组:地址00H07H;寄存器1组:地址08H0FH;寄存器2组:地址10H17H;寄存器3组:地址18H1FH。,2、位寻址区,3、通用RAM区30H至7FH共80个字节作为数据缓冲器操作指令丰富,数据处理方便灵活堆栈区:通常在30H7FH范围栈顶:SP寄存器指示复位时SP的初值为07H,2.5.380C51的特殊功能寄存器(SFR),2.5.380C51的特殊功能寄存器(SFR),21个特殊功能寄存器(SFR)离散分布,地址可被8整除,有效地址83个,访问时只允许用直接寻址方式。1、与运算器相关的寄存器(3个)累加器ACC,8位。提供操作数,存结果;寄存器B,8位。主要用于乘、除法运算。程序状态字寄存器PSW,8位。各位含义为:CY:进位、借位标志。有进位、借位时CY=1,否则CY=0;AC:辅助进位、借位标志;F0:用户标志位,由用户自己定义;RS1、RS0:当前工作寄存器组选择位;OV:溢出标志位。有溢出时OV=1,否则OV=0;P:奇偶标志位。ACC中结果有奇数个1时P=1,否则P=0。,2、指针类寄存器(3个)堆栈指针SP,8位。总是指向栈顶。遵循“后进先出”的原则。入栈时,SP先加1,数据再压入SP指向的单元。出栈操作时,先将SP指向的单元的数据弹出,然后,SP再减1,这时SP指向的单元是新的栈顶。80C51单片机的堆栈区是向地址增大的方向生成的。数据指针DPTR。用来存放16位的地址。它由两个8位的寄存器DPH和DPL组成3、与口相关的寄存器(7个)并行I/O口P0、P1、P2、P3,均为8位;串行口数据缓冲器SBUF;串行口控制寄存器SCON;串行通讯波特率倍增寄存器PCON,(又称为电源控制寄存器)。,4、与中断相关的寄存器(2个)中断允许控制寄存器IE;中断优先级控制寄存器IP。5、与定时器/计数器相关的寄存器(6个)T0的两个8位计数初值寄存器TH0、TL0T1的两个8位计数初值寄存器TH1、TL1工作方式寄存器TMOD;控制寄存器TCON。,2.6.1P0口、P2口的结构,1、P0口的结构P0用作通用I/O口:系统不扩展(片外ROM、片外RAM)时,C=0,MUX接锁存器反相端,T1截止,漏极开路,属于准双向口。P0用作地址/数据总线:系统进行扩展(片外ROM、片外RAM)时,C=1,MUX接反相器,T1截止与导通由地址/数据线的状态决定,是一个真正的双向口。,2.680C51的并行口结构与操作,2、P2口的结构P2用作通用I/O口:不扩展ROM或只扩展256B的片外RAM时,仅用到了地址线低8位,属于准双向口。且P2的输出驱动有上拉电阻。P2用作地址总线:当片外扩展ROM或扩展的RAM容量超过256字节时,硬件使C=1,MUX开关接向地址线,这时P2.X的状态与地址线的信息相同。,1、P1口的结构P1口输出驱动电路与P2口相同,内部设有上拉电阻。P1口是通用的准双向I/O口。输出高电平时,能向外提供拉电流负载,不必再接上拉电阻。当用作输入时,须向口锁存器写入1。2、P3口的结构P3用作第一功能(通用I/O):对P3字节或位寻址时,硬件自动将W置1,属于准双向口。P3用作第二功能使用:当不对P3口寻址时,口锁存器的Q端自动置1,这时P3口作为第二功能使用。,2.6.2P1口、P3口的结构,本章内容:3.1指令格式及常用符号3.280C51的寻址方式3.3数据传送类指令(29条)3.4算术运算类指令(24条)3.5逻辑运算与循环类指令(24条)3.6控制转移类指令(17条)3.7位操作类指令(17条),第3章80C51的指令系统,指令:CPU按照人们的意图来完成某种操作的命令。指令系统:一台计算机的CPU所能执行的全部指令的集合。80C51单片机指令系统有111条指令,其的特点:执行时间短指令编码字节少,位操作指令丰富。机器指令有操作码和操作数(或操作数地址)两部分构成,操作码用来规定指令执行的操作功能,操作数是指参与操作的数据。,3.1.2符号指令的格式,组成:操作助记符、目的操作数、源操作数、注释一般格式:操作助记符目的操作数,源操作数;注释操作数个数:无、单、两、三操作数,在两个操作数的指令中,通常目的操作数写在左边,源操作数写在右边。如:ANLA,40HANL为“与”操作的助记符,立即数“40H”为源操作数,累加器A为目的操作数。,3.1指令格式及常用符号,3.1.3符号指令及其注释中常用的符号,Rn(n=07):当前工作寄存器组中的寄存器之一;Ri(i=0,1):当前工作寄存器组中的R0或R1;:间址寄存器前缀;#data8、#data16:8位立即数、16位立即数;direct:片内低128个RAM单元地址及SFR地址;addr11、addr16:11位目的地址、16位目的地址;rel:补码形式表示的8位地址偏移量,值在128127范围内;bit:片内RAM位地址、SFR的位地址;/:位操作数的取反操作前缀;():表示地址单元或寄存器中的内容;():以单元或寄存器为地址间接寻址单元的内容;箭头右边的内容送入箭头左边的单元中。,寻找操作数或指令的地址的方式。寻址方式有七种,即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。若不特别声明,我们后面提到的寻址方式均指源操作数的寻址方式。,3.280C51的寻址方式,3.2.1寄存器寻址MOVA,R0,操作数在寄存器中,指令中直接给出该寄存器名称。具有较高的传送和运算速度。寻址空间:R0R7、A、B(AB)、DPTR例:MOVA,R0;设(R0)=30H,0工作寄存器组结果:(A)=30H,3.2.2直接寻址MOVA,50H,操作码后的字节是操作数的地址,操作数本身放在该地址指示的存储单元中。寻址空间:片内RAM(128字节)、SFR(常采用符号形式)例:MOVA,50H;设(50H)=3AH结果:(A)=3AH,3.2.3寄存器间接寻址MOVA,R0,寄存器中内容为地址,从该地址取操作数。寻址空间:MOV片内RAM、MOVX片外RAM;间址寄存器:R0或R1片内RAM、片外RAM(256字节)P2口线,页面方式、DPTR。例:MOVA,R0;设(R0)=30H结果:(A)=5AH,3.2.4立即寻址MOVA,#50H,编码中直接给出操作数。操作码之后的操作数称为立即数。立即数:单字节、双字节,标识:,源操作数。寻址空间:ROM。例:MOVA,#50H;结果:(A)=50H,3.2.5变址寻址MOVCA,A+DPTR,以一个基地址加上一个偏移量地址形成操作数地址。操作数地址:基址寄存器DPTR/PC、偏移量寄存器A。寻址空间:ROM。例:MOVCA,A+DPTR;结果:(A)=88H,3.2.6相对寻址JCrel,以PC当前值为基准,加上指令中相对偏移量rel形成目标地址。目标地址:PC+rel,PC的当前值:读出该2字节或3字节的跳转指令后,PC指向的下条指令的地址。rel取值范围是:128127。(补码)例:JCrel;设rel75H,PSW.7为“1”结果:程序转向1077H单元,3.2.7位寻址MOV30H,C,对位地址中内容进行操作。操作的是8位二进制数中的某一位。寻址空间:片内RAM中位寻址区、SFR中的可寻址位SFR的寻址位常用符号位地址表示,如:CLRACC.0MOV30H,C,3.3数据传送类指令(29条),传送类指令分成两大类:MOV一般传送,非MOV特殊传送,非MOV如:MOVC、MOVX、PUSH、POP、XCH、XCHD及SWAP。一般不影响PSW状态,3.3.1一般传送指令,1、16位传送将源操作数data16(通常是地址常数)送入目的操作数DPTR中。2、8位传送将源字节中的内容送入目的字节中,源字节内容不变。格式:MOV,目的操作数:A、Rn、direct、Ri源操作数:A、Rn、direct、Ri、#data目的操作数四选一,源操作数五选一,除direct外源与目的不同名。,3.3.2特殊传送指令,1、ROM查表(A变址,DPTR、PC基址)MOVCA,A+DPTR以DPTR与偏移量之和作为程序存储器地址,将该地址单元的内容传送到A。指令执行后DPTR的内容不变。MOVCA,A+PC以PC的当前值与偏移量之和作为程序存储器地址,将该地址单元的内容传送到A。指令执行后PC的内容不变。这两条指令主要用于程序存储器查表。,2、读写片外RAM1)读片外RAMMOVXA,DPTRMOVXA,Ri2)写片外RAMMOVXDPTR,AMOVXRi,A3、堆栈操作原则:向地址高端生长,后进先出SP:指向栈顶(活动端),复位值07H操作格式:PUSHdirectPOPdirect例:若(SP)=07H,(40H)=88H,执行PUSH40H;结果:(SP)=08H,(08H)=88H。,4、数据交换交换类指令,传送是双向的。1)字节交换XCHA,Rndirect/Ri例:若(R0)=80H,(A)=20H,执行XCHA,R0;结果:(A)=80H,(R0)=20H。2)半字节交换XCHDA,RiSWAPA例:若(R0)30H,(30H)67H,(A)20H,执行XCHDA,R0;结果(A)27H,(30H)60H。例:若(A)30H,执行SWAPA;结果:(A)03H。,3.4算术运算类指令(24条),加、减、乘、除及加1和减1等,多数以A为源操作数,同时又使A为目的操作数。影响PSW中的OV、CY、AC;CY,无符号整数多字节加、减法、移位等OV,可方便的控制补码运算AC,用于BCD码运算。,3.4.1加法,1、不带进位加ADDA,Rndirect/Ri/#data影响:CY、AC、OV和P,注:D7、D6位只有一个有进位时,(OV)=1。如:两个正数相加结果为负数或两个负数相加结果为正数时属于错误结果,此时(OV)=1。2、带进位加ADDCA,Rndirect/Ri/#data源操作数与A的内容相加再与CY相加,结果送入目的操作数A中。CY是在该指令执行之前已存在的值。,例若(A)=84H,(30H)=8DH,CY=1执行指令ADDA,30HADDCA,30H1)结果:(A)=11H,(CY)=1,(AC)=1,(OV)=1,(D7有进位,D6无进位),(P)=0。2)结果:(A)=12H,(CY)=1,(AC)=1,(OV)=1,(D7有进位,D6无进位),(P)=0,3、增1INCARn/direct/Ri/DPTR源操作数的内容加1,结果再送回原单元。这些指令中仅INCA影响P标志。4、十进制调整DAA对A中刚进行的2个BCD码加法的结果调整。当A中低4位数出现了非BCD码或低4位产生进位(AC=1),则在低4位加6。当A中高4位数出现了非BCD码或高4位产生进位(CY=1),则在高4位加6。调整后,CY表示结果的百位值。,例:若(CY)0,A和R2内容见下式。执行指令:ADDA,R2DAA;结果:123(BCD数),3.4.2减法,1、带借位减SUBBA,Rndirect/Ri/#data影响:CY、AC、OV和P,注:D7、D6位只有一个有借位时,(OV)=1。如要用此组指令完成不带借位减法,只需先清CY为0。2、减1DECARn/direct/Ri操作数内容减1,结果再送回原单元。DECA影响P标志,其余指令都不影响标志位的状态。,例若(A)=C9H,(R2)=54H,(CY)=1,执行指令SUBBA,R2;(A)=74H,(CY)=0,(AC)=0,(OV)=1(位6有借位,位7无借位),(P)=0。,3.4.3乘法,MULAB累加器A和寄存器B中的无符号8位二进制数相乘,乘积的低8位存放在累加器A中,乘积的高8位存放在寄存器B中。当乘积大于FFH时,溢出标志位(OV)=1。标志CY总是被清0。例:若(A)=50H,(B)=A0H,执行指令MULAB之后,(A)=00H,(B)=32H,(OV)=1,(CY)=0。,3.4.4除法,DIVAB累加器A中的无符号8位二进制数除以寄存器B中的无符号8位二进制数,商的整数部分存放在累加器A中,商的余数部分存放在寄存器B中。除数为0,商的A和B内容不确定,且(OV)=1。标志CY总是被清0。例:若(A)=FBH(251),(B)=12H(18),执行指令DIVAB之后,(A)=0DH,(B)=11H,(OV)=0,(CY)=0。,3.5逻辑运算与循环类指令(24条),逻辑运算:与、或、异或、清0和取反注意按位进行运算。对A循环移位:方向:左、右CY:带、不带A清0操作对P标志有影响。,3.5.1逻辑与,源操作数与直接地址单元内容相与ANLdirect,A#data源操作数与累加器A的内容相与ANLA,Rndirect/Ri/#data例:若(A)=C3H,(R0)=AAH,执行指令ANLA,R0之后,(A)=82H。,3.5.2逻辑或,源操作数与直接地址单元内容相或ORLdirect,A#data源操作数与累加器A的内容相或ORLA,Rndirect/Ri/#data例:若(A)=C3H,(R0)=55H,执行指令ORLA,R0之后,(A)=D7H。,3.5.3逻辑异或,源操作数与直接地址单元内容相异或XRLdirect,A#data源操作数与累加器A的内容相异或XRLA,Rndirect/Ri/#data例若(A)=C3H,(R0)=AAH,执行指令XRLA,R0之后,(A)=69H。,3.5.4累加器清0和取反,把A的内容清0,结果仍在A中。CLRA把A的内容取反,结果仍在A中。CPLA例若(A)=A5H,执行指令CLRA之后,(A)=00H。,3.5.5累加器循环移位,A的内容循环右移1位。RRAA的内容连同CY位循环右移1位。RRCAA的内容循环左移1位。RLAA的内容连同CY位循环左移1位。RLCA“累加器A内容乘2”的任务可以利用指令RLCA方便地完成。例:若(A)=BDH=10111101B,(CY)0。执行指令RLCA,结果为:17AH(378)2BDH(189)。,A的内容循环右移1位。RRAA的内容连同CY位循环右移1位。RRCA,“累加器A内容除以2”CLRCRRCA,A的内容循环左移1位。RLAA的内容连同CY位循环左移1位。RLCA,“累加器A内容乘以2”CLRCRLCA,3、相对转移SJMPrel第二字节为rel,(补码),00H7FH为正向转移,80HFFH(1281)反向转移。rel是目标地址的标号,由汇编程序自动计算,并填入指令代码中。SJMP$;PC(PC)+2+$,$(自减2,即-2),;目的是:原地踏步等中断例:若“NEWADD”表示地址0123H,PC当前值为0100H。执行:SJMPNEWADD后,程序转向0123H执行(此时rel=0123H(01002)=21H)。,3.6控制转移类指令(17条),3.6.2条件转移,1、累加器判0转移JZrel;A的内容为0转移JNZrel;A的内容不为0转移例:若A原来为00H,则:JNZL1;程序往下执行INCA;JNZL2;程序转向L2处执行2、比较不相等转移CJNEA,direct,relCJNEARn/Ri,data,rel对目的字节与源字节比较,不等则转移,比较时影响进位标志,若目的字节等于源字节,程序将继续往下执行。,3、减1不为0转移DJNZRn,relDJNZdirect,rel每执行一次,循环控制单元减1,并判其是否为0。不为0,则转移到目标地址继续循环;为0,则结束循环,程序往下执行。例有一段程序如下:MOVR7,#0AHCLRALOP:ADDA,R7;A(A)+(R7)DJNZR7,LOP;(R7)0转移到LOPSJMP$结果:(A)=10+9+8+7+6+5+4+3+2+1=37H,2、返回RETRETIRET从堆栈中弹出压入堆栈保护的断点地址,并送入指令计数器PC,返回到断点处继续执行。RETI专用于中断服务程序返回,除返回中断断点处执行主程序以外,并有清除内部相应的中断状态寄存器(以保证正确的中断逻辑)的功能。,NOP不产生任何控制操作,但:PC的内容加1,消耗1个机器周期,空间上占用一个字节。因此,常用来实现较短时间的延时。常用来实现较短时间的延时。,3.6.4空操作,3.7位操作类指令(17条),以位为单位进行的各种操作。位地址形式直接地址(如,0D5H)点操作符(如,0D0H.5、PSW.5等)位名称(如,F0)伪指令定义(如,MYFLAGBITF0)。几种形式表示的都是PSW中的位5。位操作指令中,位累加器“CY”要用字符“C”表示(注:在位操作指令中CY与具体的直接位地址D7H对应),累加器A的位要用字符ACC.x表示,3.7.1位传送,MOVbit,CMOVC,bit指定位地址中内容与CY的内容的相互传送。例:若(CY)=1,(P3)=11000101B,(P1)=00110101B。执行以下指令:MOVP1.3,CMOVC,P3.3MOVP1.2,C结果:(CY)=0,P3的内容未变,P1的内容变为00111001B。,3.7.2位状态设置,1、位清0位累加器CY清0:CLRC位地址内容清0:CLRbit例:若(P1)=10011101B。执行CLRP1.3后,结果为:(P1)=10010101B。2、位置位位累加器CY置1:SETBC位地址内容置1:SETBbit例若(P1)=10011100B。执行SETBP1.0后,(P1)10011101B。,3.7.4位判跳(条件转移),1、判CY转移JCrel;(CY)=1,转向PC+2+rel,否则顺序执行。JNCrel;(CY)=0,转向PC+2+rel,否则顺序执行。2、判bit转移JBbit,rel;(bit)=1,转向PC+3+rel,否则顺序执行。JBCbit,rel;与上面指令相同,但还有将该位清0功能。JNBbit,rel;(bit)=0,转向PC+3+rel,否则顺序执行。,本章内容:4.1程序编制的方法和技巧4.2源程序的编辑和汇编4.3基本程序结构4.4常用程序举例,第4章80C51的程序设计,常用的流程图符号,开始、结束,判断分支,程序流向,工作任务,程序连接,程序连接,4.1程序编制的方法和技巧,流程图的绘制示意,4.1.3汇编语言的语句格式,1、语句行组成:标号:操作码操作数;注释字段间用分隔符分隔:空格、冒号、逗号、分号等。2、标号语句地址的标志符号,几项规定:1)由18个ASCII字符;2)第1个字符必须是字母,其余为字母、数字或其他特定字符;3)不使用已定义的符号4)后边必须跟冒号。3、操作码规定语句执行的操作。它是汇编语句中唯一不能空缺的部分。,4、数据的表示形式二进制数,末尾以字母B标识十进制数,末尾以字母D标识或将字母D省略。十六进制数,末尾以字母H标识。但应注意以字母AF开头时应在其前面加上数字”0”。ASCII码,以单引号标识。如:AB,1245,5、注释功能:便于理解和阅读程序。注意事项:A.注释用分号“;”打头,可以加在任何一行程序中,直到行尾为止。B.如果一行写不下,要延续到下一行,则下一行仍要以分号开头C.注释被略去而不作处理。,1、汇编语言的相关定义汇编语言:是一种用助记符来表示指令的操作码和操作数,用标号和符号来代替地址、常量和变量的符号语言。汇编:把汇编语言编写的程序翻译成由机器代码组成的目标程序的过程。汇编程序:用来把汇编语言编写的程序自动翻译成目标程序的软件源程序:用汇编语言编写的程序,4.2源程序的编辑和汇编,2、汇编程序的建立及汇编过程用文本编辑器EDIT建立后缀为.ASM的汇编源文件。用宏汇编MASM对源文件进行汇编,生成后缀为.OBJ的目标程序用连接程序LINK对目标程序进行链接,形成一个以.HXE为扩展名的可执行文件运行程序用DEBUG命令调试程序,汇编过程,汇编程序建立过程,汇编语言是一种面向机器的语言,CPU不同的机器有不同的汇编语言,据汇编语言规则,正确使用汇编命令,以“.ASM”扩展名存盘。,4.2.1源程序的编辑与汇编,4.2.2伪指令,汇编程序能识别并对汇编过程进行某种控制的汇编命令。无对应的可执行目标码。1、起始地址设定ORG表达式向汇编程序说明下面紧接的程序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。源程序的开始,要设置一条ORG伪指令来指定该程序在存储器中存放的起始位置。省略ORG,则该程序段从0000H单元开始存放。可以多次使用ORG伪指令,但要求地址值由小到大依序排列,不允许空间重叠。,2、汇编结束END汇编程序遇到END伪指令后即结束汇编。3、字节数据定义标号:DB字节数据表将字节数据表中的数据根据从左到右的顺序依次存放在指定的存储单元中。一个数据占一个存储单元。例:DB“howareyou?”把字符串中的字符以ASCII码的形式存放在连续的ROM单元中。又如:DB2,4,6,8,10,18把6个数转换为十六进制表示(FEH,FCH,FAH,08H,0AH,12H),并连续地存放在6个ROM。,DB常用于存放数据表格。如存放显示用的十六进制的字形码:DB0C0H,0F9H,0A4H,0B0HDB99H,92H,82H,0F8HDB80H,90H,88H,83H4、字数据定义标号:DW字数据表从标号指定的地址单元开始,在程序存储器中定义字数据。应注意:高8位存放在低地址单元,低8位存放在高地址单元。例:ORG1400HDATA:DW324AH,3CH汇编后,(1400H)=32H,(1401H)=4AH,(1402H)=00H,(1403H)=3CH。,80C51中数据的存储规则:高8位存放在低地址单元,低8位存放在高地址单元,即按书写的先后顺序存储。,16进制数:33445566H存放20H开始的单元中,则(20H)=33H,(21H)=44H,(22H)=55H,(23H)=66H,5、空间定义标号:DS表达式从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元,并都填以零值。例如:ORG3000HBUF:DS50汇编后,从地址3000H开始保留50个存储单元作为备用单元。,6、赋值符号名EQU表达式将表达式的值或特定的某个汇编符号定义为一个指定的符号名。LENEQU10SUMEQU21HBLOCKEQU22HCLRAMOVR7,LENMOVR0,BLOCKLOOP:ADDA,R0INCR0DJNZR7,LOOPMOVSUM,AEND功能:把BLOCK单元开始存放的10个无符号数进行求和,并将结果存入SUM单元中。,4.3基本程序结构,1、判断程序质量的标准程序的正确性程序的可读性,易维护性程序的执行时间程序所占内存大小2、程序设计的一般步骤一般说来,编制一个汇编程序的步骤如下:(1)分析题意,确定算法。(2)根据算法画出程序框图。(3)根据框图编写程序。(4)上机调试程序。,顺序程序结构是一种最简单的程序结构。在流程图中,处理框一个接一个执行,既无分支,也无循环和转移。,4.3.1顺序程序,1、数据传送例4.1:内部RAM的2AH2EH单元中存储的数据如图所示。试编写程序实现图示的数据传送结果。,步骤如下:(1)分析题意,确定算法。顺序结构(2)根据算法画出程序框图。(3)根据框图编写程序。,方法一:MOVA,2EH;2字节,1个机器周期MOV2EH,2DH;3字节,2个机器周期MOV2DH,2CH;3字节,2个机器周期MOV2CH,2BH;3字节,2个机器周期MOV2BH,#00H;3字节,2个机器周期方法二:CLRA;1字节,1个机器周期XCHA,2BH;2字节,1个机器周期XCHA,2CH;2字节,1个机器周期XCHA,2DH;2字节,1个机器周期XCHA,2EH;2字节,1个机器周期方法一:14个字节,9个机器周期;方法二:9个字节,5个机器周期。,方法一:ORG0100H;程序从0100H开始START:MOVA,2EH;(A)=(2EH)MOV2EH,2DH;(2EH)=(2DH)MOV2DH,2CH;(2DH)=(2CH)MOV2CH,2BH;(2CH)=(2BH)MOV2BH,#00H;(2BH)=00HEND;程序结束方法二:10ORG0100H;程序从0100H开始START:CLRA;A清零XCHA,2BH;(A)与(2BH)互换XCHA,2CH;(A)与(2CH)互换XCHA,2DH;(A)与(2DH)互换XCHA,2EH;(A)与(2EH)互换END;程序结束,2、查表程序例4.2:有一变量在片内RAM的20H单元,取值范围:00H05H。编制一段程序,根据变量值求其平方值,并存入片内RAM的21H单元。程序如下:,ORG0100H;程序从0100H开始START:MOVDPTR,#2000H;DPTR指向片内2000H处MOVA,20H;A=(20H),00-05HMOVCA,A+DPTR;查表片内20H的内容送入AMOV21H,A;SJMP$;原地踏步(等中断)ORG2000H;程序从2000H开始TABLE:DB00,01,04,09,16,25;定义00-05H的平方字节END;程序结束,步骤如下:(1)分析题意,确定算法。顺序结构(2)根据算法画出程序框图。(3)根据框图编写程序。,MOVCA,A+DPTR;用DPTR指向表首址,则变量与DPTR之和的地址单元中的内容就是变量的平方值。MOVCA,A+PC;不破坏DPTR的内容,从而可以减少保护DPTR的内容所需的开销。表格存放在该指令后的256字节内。3、简单运算对于多字节的相加运算必须从低位字节开始分字节进行。除最低字节可以使用ADD指令外,其他字节相加时要使用ADDC指令。例双字节无符号数加法。,例4.3:设被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中。,ORG0100H;程序从0100H开始START:MOVR0,50H;被加数的低字节地址MOVR1,60H;加数的低字节地址MOVA,R0;取被加数低字节ADDA,R1;加上加数低字节MOVR0,A;保存低字节相加结果INCR0;指向被加数高字节INCR1;指向加数高字节MOVA,R0;取被加数高字节ADDCA,R1;加上加数高字节(带进位加)MOVR0,A;存高字节相加结果MOV00H,C;保存进位END;程序结束,步骤如下:(1)分析题意,确定算法。顺序结构(2)根据算法画出程序框图。(3)根据框图编写程序。,ORG0100H;程序从0100H开始START:MOVA,#16H;被乘数放入AMOVB,#04H;乘数放入BMULAB;A*B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论