单片微型计算机原理及应用.ppt_第1页
单片微型计算机原理及应用.ppt_第2页
单片微型计算机原理及应用.ppt_第3页
单片微型计算机原理及应用.ppt_第4页
单片微型计算机原理及应用.ppt_第5页
已阅读5页,还剩261页未读 继续免费阅读

下载本文档

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

文档简介

单片微型计算机原理及应用,第1章单片计算机概述1-1现代计算机技术的两大分支mpu微处理器(用于大数量数值计算无止尽要求,满足数字模拟仿真,数字信号处理,图象分析,人工智能等领域)。重要指标:数据总线宽度及外围寻址能力。数据总线宽度从8163264位过渡,指令系统上突出了数字运算和逻辑运算mcu微控制器(用于快速实时对外部事件、对象实现信号采集,判断、处理、参数控制等要求,构成工控系统,适应各种对象的控制需要)重要指标:高速i/o口,计数器的捕获,比较功能,a/d,d/a转换,功率驱动i/o口,位寻址及位操作,程序运行监督等,数据总线宽度及外围寻址只是单片机众多指标之一。,1-2微型计算机单板机单片机1.微型计算机若将运算器与控制器集成在一块硅片上,称该芯片为中央处理器cpu或mpu。若再将它与大规模集成电路制成的主存储器,i/o接口电路用总线结构联系起来就构成了微型计算机2.单板机将cpu、ram、rom、i/o接口封装在一块印刷电路板上,就成为单板机3.单片机若在一块半导体芯片上,能容纳一台数字计算机的4个基本组成部分,则这种芯片就被称为单片微型计算机,1-3单片机的发展简况及应用1976年intel公司推出第一个8位单片机系列(mcs-48)至今,经历了外围集成、总线完善、功能集成、全方位发展阶段,已走过了三代发展历程一、第一代单片机始于1976年,主要实现单个芯片上计算机的集成,为初级阶段。典型产品:intel公司mcs-48系列、motorola公司6801系列、zilog公司z8系列特点:采用专门结构设计,将cpu及外围单元集成在一块芯片上,指令系统设计面向控制功能要求,具有较强的控制功能。8位cpu,并行i/o口,8位定时/计数器,ram等。无串行i/o口,寻址范围不大于4k。,二、第二代单片机19781983。高性能单片机阶段。典型代表:intel的mcs-51系列特点:完善外部总线,确立了单片机的基本控制功能。单片机均带有串行i/o口,具有多级中断处理系统,16位定时/计数器,寻址范围可达到64k三、第三代单片机1983至今。8位单片机巩固完善,16位单片机推出普及应用及32位单片机也投入使用典型产品:各大公司纷纷开发出自己的单片机系列,如motorola,philips,intel等技术特点:全速发展单片机的控制功能。16位单片机除cpu为16位以外,片内ram/rom容量进一步扩大,片内ram增加为232b,rom为8kb,且片内带有高速i/o部件,保证程序可靠运行的wdt,多通道10位a/d转换器,具有8级中断,人机接口等等。,1-4我国单片机16年探索时期(80年代初)起步时期(19861990)开拓时期(19901995)发展时期(1995至今)5新时期新理念,1-5单片机的结构特点以mcs-51系列举例:在数据ram区开辟了一个工作寄存器区,区内共分4组,每组8个寄存器,共计32个工作寄存器,提供21个特殊功能寄存器,完成定时,串口,中断等功能存储结构上:从空间将程序、数据存储器分开,采用不同寻址方式,用两个不同地址指针。pc-程序存储器,dptr-数据存储器i/o接口特点:通道口引线在程序控制下都可有第二功能,用户可灵活使用。内部有一个全双功的串行接口,可同时发送接收数据有专门的位处理机。,1-6单片机的开发及开发工具开发:提出任务定型生产投入使用的过程称对微机进行开发包括:系统(产品)总体方案论证,设计硬件,软件开发,目标样机的调试等。开发过程明显特点:微计算机化的产品软,硬件分不开为此设计了专门的微型机开发系统mdsp3图1-2,单片计算机开发系统一般应具有4方面的基本功能:硬件电路诊断、检查用户程序输入、修改程序运行、调试、单步、断点运行程序可固化到eprom中去,1-7单片机的应用领域工业自动化智能仪表及集成智能传感器家用电器领域办公自动化五汽车、航空航天电子系统,18嵌入式应用系统一定义:将计算机软件和硬件结合起来,构成一个专门的计算装置,完成特定的功能或任务。是一个大系统或大电子设备中的一部分,工作在一个与外界发生交互并受到时间约束的环境中,在无人工干预的情况下进行实时控制。其中软件用以实现有关功能并使其系统具有适应性和灵活性;硬件用以满足性能甚至安全的需要。二特性:1完成单一或一组紧密相关的特定功能2具有高性能和实时的要求,且这些要求正不断增加3系统作为设备的一部分,其运行一般不需要人工干预,系统的电源可靠性和安全性通常是影响设计的重要因素处理器的选择是嵌入式系统设计关键一步用途:用途很广,如移动通信设备(手机)、数字相机或摄像机、洗衣机、微波炉、打印机、复印机、工业仪器/仪表、汽车刹车、引擎控制等。对于各个嵌入式系统其要求是千变万化的,既要求体积小(如手机),性能高(信号处理),又要求安全可靠(如核电站)四嵌入式系统的主要特征实时性是嵌入式系统的主要特征。,五嵌入式系统开发嵌入式系统开发或设计与一般意义计算机应用开发或计算机软件设计有很大不同,不但要考虑软件,而且还要考虑硬件设计,不但要考虑功能设计(如完成什么功能),还应考虑性能设计(如精度,实时性,安全可靠性等等一些指标)。,思考题现代计算机技术的两大分支?各自适合的领域2什么叫单片机?简述微型计算机,单板机,单片机的异同点。世界上第一个单片机是什么系列?什么时间产生的?谁家生产的?数据为几位?(自查资料回答)我国单片机的发展现状?我国主要有哪些从事单片机生产、制造的企业,它们各自产品的性能和特点是什么?5什么是嵌入式应用系统?嵌入式系统的主要特征是什么?嵌入式应用系统的开发或设计与一般意义计算机应用开发或计算机软件设计的不用点在哪里?,第2章mcs-51单片机的组成及结构分析2-1mcs-51单片机的内部结构框图(以8031为例)框图见p8双总线:数据/地址分时传送8位cpu,片内振荡器4k字节rom,128字节ram21个特殊功能寄存器4个p口共32根i/o线可分别寻址64k的外部数据存储器、程序存储器空间2个16位的定时/计数器,5个中断源,2个优先级一个全双工串行口可位寻址,适于布尔处理的位处理机2-2cpu结构单片机的cpu由三部分组成:,一运算器:看书p81结构:alu(8位)+tmp1+tmp2+acc+b+psw+布尔处理机组成逻辑电路。2alu作用:完成2#的四则运算及逻辑运算acc(a)是一个8位的寄存器,又称累加器。作用:一般在运算前暂存一个数,运算后保存结果,也即a既可放源码,也可放目的操作数。b是一个8位的寄存器作用:用于乘/除运算,或作为其它运算的暂存器。psw为程序状态标志寄存器,8位。用来存放运算结果的一些特征,每位含义如下表:,注意:cy特性(反映无符号数+/-,有无借进位)。ov(对带符号数而言)功能算术运算:、1及bcd码加法的10#调整逻辑运算:and、or、clr、xrl、not移位运算:左/右移、循环二布尔处理机17条位操作指令,是单片机cpu中运算器的重要组成部分,有自己的位累加器位寻址ram位i/o空间位指令系统操作均围绕累加器c进行,位操作指令可寻址:内部数据ram里的128个位和sfr里的位地址空间,可进行置位,取反,满足条件转移等操作。功能:可方便利用指令完成硬件逻辑完成功能为用户设置标志。如:置1或置0含义?控制器是cpu的大脑中枢,包括:定时控制逻辑指令寄存器译码器地址指针dptr程序计数器pc堆栈指针spram地址寄存器16位地址缓冲器,功能:8031或51系列cpu从程序存储器中取出的指令字节指令寄存器储存。在整个分析、执行过程中一直受控于这些指令。指令寄存器中的这些代码被分析翻译成一种或各种电平讯号,这些电平讯号与外部时钟脉冲在cpu定时与控制电路的组合后,形成各种按一定时间节拍变化的电平和脉冲控制信息,在cpu内部协调各部分工作pc:程序存储器指针,每取一条指令地址自动+1sp:8位堆栈指针。指示当前堆栈栈顶地址。注意:单片机复位后,sp=07h,若不重新定义sp,第一个压栈的数据将存入08h单元dptr:外部数据存储器或i/o口的地址指针为16位,分成两个字节,高字节dph,低字节dpl8031的时钟:由两种方式产生:内部外部参看书p8,2-3存储器空间及存储器单片机存储器结构主要特点:程序存储器和数据存储器的寻址空间是分开的。51系列(8031/8032除外),有4个物理上互相独立的存储器空间即程序存储器的8051片内有4krom8751片内有4keprom8052,8752片内有8k字节的容量,注意:8031,8032无片内程序存储器,需在片外外接程序存储器,所以片内有无程序存储器是区别51系列产品8031/8051/8751的重要标志。片外程序存储器容量,用户可根据需要任意选择,但片内外总容量合起来不得超过64kb片内存放数据的ram容量为256字节,而片外ram一般为64kb,这对8031/8051/8751均适用3空间分配图,一程序存储器作用:存放要执行的程序指令及固定的表格,常数等。程序计数器:pc使用地址:16位地址寻址范围:64k寻址指令:movc对有内部rom,eprom的8051,8751,内部程序存储器地址安排在0000h0fffh的4k空间。外部程序存储器的地址空间为1000hffffh之间为60kb。,ea(头上有)接高电平,执行程序当pc0fffh寻址内部存储器当pc1000h控制自动转向外部程序存储器,执行其间的内容ea(头上有)接低电平或接地,取址只对外部程序存储器进行,不用内部程序存储器。8031因无内部程序存储器,ea(头上有)应接地。程序存储器容量可据需要扩展。地址空间原则上可由用户安排注意:单片机复位后程序计数器的内容为0,使单片机必然从0单元取指令,执行程序。0003h0023h为定死的5个中断服务子程序入口地址,往往予留该存储空间,而由0000h开始存放一条绝对跳转指令。用户设计的程序则由跳转后的地址开始存放。,单片机访问外部程序存储器需提供两类信号:地址信号确定选中某单元控制信号接在rom或eprom的数据允许输出端单片机无专门的地址/数据总线,常用p2口输出高8位地址,p0口分时复用输出地址的低8位及8位数据线,并由ale将低8位地址锁存在地址锁存器中。访问指令为movc单片机的程序存储器是只读的,是单片机的一个特点,数据存储器作用:存放和读取数据。数据存储器分为:内部ram地址空间为00hffh,访问指令为mov外部ram地址空间为0000hffffh,访问指令为movx一般情况应充分利用内部数据存储器,仅在数据采集,处理或数据量太大时才扩充数据存储器,常用静态ram。访问外部数据存储器:采用16位数据存储器地址指针:dptr地址分配:p2口输出地址高8位,p0口输出地址低8位,ale锁存地址信号,数据存储器可读/写,内部数据ram外部数据ram,内部数据存储器地址:00hffh共256个字节,由两部分组成内部数据ram00h7fh(包括位地址空间)特殊功能寄存器80hffh在内部数据ram中,有些单元既可对其执行按字节的操作,也可对其中每个单元的8位二进制代码执行按位操作分配为:,由图:在内部ram128个单元中,3248共计16个单元为位地址空间,计168=128个位。sfr中有12个专用r是可位寻址的计128=96个位,但要除去ip.7ip.6ie.6(96-3)为93个位,总的内部数据存储器共可进行的位操作为221个位地址(128+93=221)内部数据ram1)结构特点:单片机内部共有128个字节的ram,cpu为其提供了丰富的操作指令,均可按字节操作。用户:可当数据缓冲区,也可在其中开辟自己的栈区,还可利用所提供的工作寄存区进行数据的快速交换和处理。单片机的特点之一:内部工作寄存区以ram形式组成。与cpu直接有关或表示cpu状态的寄存器和堆栈指针sp,a,psw等统统归并于sfr之中。,在ram的00hffh区,按地址划分出四组工作寄存器,每组有工作寄存器8个,分别是r0r7,共可提供48=32个寄存器。2)作用:用来暂存运算的中间结果以提高运算速度也可用r0,r1存放8位地址值访问256字节块中的单元,此时高8位地址事先由p2已定好r0r7也可用作计数器,在指令作用下1缺点:与通用寄存器不同的是它们不能组成所谓的寄存器对,因而也不能当16位地址指针使用3)堆栈指针sp的设置由于它是8位的,只能限制在内部数据存储区,原则上可由用户分配在片内的任意区,只要对sp赋不同初值就可指定不同的堆栈区域。注意:具体操作时堆栈区的设置应和ram的分配统一考虑即工作寄存器和位寻址区域分配好后,再指定堆栈区域。8031复位后人为做成sp为07h,指向工作寄存区0,因此用户初始化程序都应对sp设初值。一般设在30h以后的范围为合适。8031的堆栈是向上生成的,ram空间分配建议表如下:,特殊功能寄存器sfr1)地址空间:128255地址范围:80hffh51系列中,除pc和4个工作寄存区外,所有其它寄存器均位于这个地址空间,5个为双字节寄存器,后面学习。mcs-51规定,对sfr只能直接寻址p16表2-6列出了单片机的sfr及他们的映象地址。2)功能:反映了8031的状态8031的状态及控制字可分为两类:一类与芯片引脚有关如p口另一类作芯片内部功能的控制用如ie8031中的一些中断屏蔽及优先级控制不是采用硬件优先链方式解决,而是用程序在sfr中设定。定时器,串行口的控制字等全以sfr出现,就使单片机有可能把i/o口与cpu,m集成在一起,替代多片机中多个芯片连在一起完成的功能,这是单片机设计的一大特色,p0p3实际为4个锁存器,(每个锁存器)(一个输出驱动器)(一个输入缓冲器)就构成了一个并行口。51系列共有4个并行口,32根i/o线,每线为双向,且有第二功能位地址空间51系列有很强的位处理功能,丰富的位操作指令,硬件上有位累加器及位地址空间。共有221个位地址范围:00hffh低128位处于内部数据ram202f字节单元,见图2-8高93位则在sfr区,但不连续,从80h开始,每8个单元有一个可位寻址的专用寄存器,见图2-9位处理的数据仅为一位二进制数,指令系统中位地址及字节地址很好区分,因大多数位操作均围绕c进行,图2-8,图2-9,注意:在内部数据ram128255共128个字节单元,sfr只占用了26个字节,其余单元现在无定义,用户不能对这些单元读/写,若要访问会得到一个不确定的随机数,24i/o口及相应的sfrmcs-51系列单片机,数据线和地址线低8位分时合用通道口0,且地址高8位亦与其它信号合用通道口2,借助于p0p3使每个通道在程序控制下都可有第二功能即可使有限的管脚完成更多的功能。p0p3四个通道口都包含:一个锁存器(特殊功能寄存器),一个输出驱动器两个(p3为三个)三态缓冲器输入/输出的指令有两类:(这两类的操作是有区别的)读锁存器读引脚,一p0口结构:书p20由一个输出锁存器,两个三态缓冲器,一个输出驱动电路(由一对fet组成)和一个输出控制电路组成。,2工作原理:从p0口输出a(地址)/d(数据)当p0口输出a/d时,控制信号电平应为1,mux与地址控制线相连将p0口作为一般i/o口使用i当cpu向端口输出数据时,对应的输出控制信号电平应为0,mux与锁存器q的反相连,ii从p0引脚输入(读)数据从p0引脚输入数据应先向p0口写入1,使两个fet均截止,才能用作高阻抗,但在p0口连接外部存储器时,由于访问外部存储器期间,cpu会自动向口0的锁存器写入0ffh,因而对用户来讲,p0口用作a/d总线时则是一个真正的双向口。,注意:有时要用一根口线去驱动一个晶体管的b极,则应向此口写1,晶体管导通,但引脚上的电平却被拉低,若此时再从引脚上读数据,会错读为0。为避免错读的可能性,单片机还提供了另一类所谓读锁存器操作。特点:先读口,随之再对读入数据修改,然后再写到端口上。例:orlp0,a操作如下:先将p0口的内容cpu,再将p0口的内容与a按位“相或”,再将结果p0口,实现读修改写操作的指令。目的操作数一般为i/o口的某一位或i/o口概括如下:p0口既可作a/d总线,也可作通用i/o线,在有外部存储器扩充时,它作为a/d总线,时序上先输出低8位地址线到外部地址锁存器,再输入/输出指令代码或数据。在没扩展到外部存储器,作为通用i/o口。当用作输出口时,输出级为漏极开路形式,在驱动nmos器件时,应外接上拉电阻;用作输入口时,应先由软件向输出锁存器写1,然后方可输入信息。,p1口1结构:,是一个8位准双向并行i/o口。输出驱动器结构与p0不同,接有内部上拉电阻,可加速输出数据从“0”“1”的转变。,在位操作方式下,p1口可进行每位单独的i/o操作,给应用带来许多方便。在8032/8052中,p1.0,p1.1有复用功能。除用作一般双向i/o口外,p1.0用作定时/计数器2的外部输入端,并以t2表示,p1.1用作定时/计数器2的外部控制输入,以t2ex表示。p2口1结构:,工作原理:地址输出:若mux接通地址端,则地址信号加到输出端经反相器,fet在输出引脚上出现地址信号,数据输出:若mux接锁存器,则输出信号线路连通。要输出的数据经内部总线锁存入p2,该数据出现在口2的输出引脚上。同样p2中的数据也可由读锁存器内部总线读入cpu。从引脚输入:若要将口2的某一位做输入时,先要给锁存器写入“1”,使fet封闭,即q=1,经反相器=0,使fet截止,与p2.x相连的端口=1,不影响p2.x,再经缓冲器读引脚将信号内部总线,读入cpu注意:若不使q=1的后果,可能使q=0,反相后=1,使fet导通,与p2.x相连的那一端为0,使口2钳位在低电平,不可能将高电平送入。复位后,各引脚均为高电平,p3口结构:,是一个双功能口,用作i/o口时,功能和p2一样,每位可定义为输入/输出。当p3口工作于第二功能时,应先由软件对输出锁存器置“1”,第二功能是单片机的控制信息,由主机自动产生。各位含义如下:p3.0rxd串行输入通道p3.1txd串行输出通道p3.2int0(头上有“-”)外部中断0p3.3int1(头上有“-”)外部中断1p3.4t0定时器0外部输入p3.5t1定时器1外部输入p3.6wr(头上有“-”)外部数据存储器写选通p3.7rd(头上有“-”)外部数据存储器读选通,工作原理输出:用于一般i/o口的输出时,选择输出功能端应为“1”,使与非门对q来说是畅通的。用于第二功能做专用信号输出时,应使锁存器q=1,使与非门对选择输出功能是畅通的。输入:无论该位是用作一般i口或第二功能入口,相应的输出锁存器和选择第二功能均应置“1”(道理同前)注意:51系列单片机所有口上的锁存器在上电复位时均置“1”,自然符合要求,使用者不必做任何工作小结p0口:地址低8位与数据线分时使用p1口:按位可编程的i/o口p2口:pc高8位,dptr高8位或i/o口p3口:双功能口,实际应用时口子常用来扩展系统,要考虑p口的输出驱动能力一般p1,p2,p3的输出能驱动3个lsttl输入,p0能驱动8个lsttl输入,都可直接驱动固态继电器工作。对nmos而言,p1,p2,p3无需外加提升电阻就可直接驱动,p0需外加提升电阻。但当p0用作地址/数据线时,可直接驱动mos输入而不必外加提升电阻,实际应用时这些因素都要加以考虑利用端口组成8031应用系统举例何谓最小系统?包含有程序存储器的单片机系统为最小系统。以8031为例学习:8031最小系统的结构图如p24图2-14,2-5mcs-51单片机的引脚信号和cpu时序8051单片机引脚功能注意:51系列单片机是一个有40个引脚双列直插式器件。4个并行i/o口共32根引脚,分别做:地址线数据线i/o口另外有6根控制线,2根电源线,共计40个引脚p0p3(已学过)控制信号引脚:6根ale/prog(头上有“-”)地址锁存允许信号。访问外部存储器时,当ale的下降沿到来时,将p0口的低8位地址信息打入锁存器进行eprom编程时,该口又是编程脉冲输入端(prog头上有“-”),psen(头上有“-”)为外部程序存储器选通信号,低电平有效。在读外部程序存储器时,每个机器周期内输出两次有效信号在执行内部程序存储器中的程序时该信号无输出访问外部数据存储器时,psen(头上有“-”)无有效信号输出ea(头上有“-”)/vppea(头上有“-”)为低电平,访问外部程序存储器ea(头上有“-”)为高电平,若pc值0fffh,访问内部程序存储器,若pc值0fffh,访问外部程序存储器,vpp为内部eprom的编程电源(+21v)输入,xtal1振荡器的倒相放大器的输入端,使用外振荡器时,须接地电位xtal2振荡器的倒相放大器的输出端和内部时钟发生器的输入,使用外振荡器时,须接外振荡器信号rst/vpd为复位端。vcc处于掉电情况下,作为内部ram的备用电源。复位后p0p3口输出高电平,体现在编程上即p0.0p3.7全为“1”,sp指针重新赋值为07h,其它sfr和程序计数器pc被清“0”,复位后各内部寄存器初态见书p28。常见的复位电路有两类:上电复位电平/脉冲方式开关复位,上电复位图电源线vcc编程,检验及正常工作时的电源为+5vvss接地端,cpu时序单片机的基本操作周期为机器周期。一个机器周期可分为6个状态,分别记作s1s6。每个状态由两个脉冲组成(即两相),前一个脉冲叫(相位1)p1,后一个脉冲叫(相位2)p2,所以一个机器周期共有12个振荡脉冲。将一个机器周期的12个振荡脉冲分别用s1p1s1p2s6p6表示,书p29图2-19规定:51系列单片机的振荡频率为1.2-12mhz,p1在每个状态的前半周期有效。p2在每个状态的后半周有效。一般情况下,p1期间进行算术/逻辑运算,p2期间进行内部寄存器之间的传送。图2-19为外部时钟振荡信号和ale信号作的示意图。在每个机器周期(s1-s6)中,ale下降沿有两次,一次在s1p2和s2p1,另一次在s4p2及s5p1中,(a)/(b)图具体操作:执行单字节单周期指令/双字节单周期。在s1p2期间读入操作码,并将其锁存到指令寄存器中若为双字节指令,第二字节在同一机器周期的s4期间读出若为单字节在s4期间仍有一个读操作,但这时读出的字节是不处理的。程序计数器也不+1。不论怎样,指令都在s6p2期间执行完。通常,两字节码在一个周期内从程序存储器取出,但在执行movx指令时例外。movx指令是访问外部数据存储器的单字节双周期指令。在movx指令期间少执行两次取指操作,用以寻址和选通外部数据存储器。,具体操作过程如下:执行movx指令,仍在第一个机器周期的s1期间读入操作码,在s4期间也读入下一个操作码,但读入的该码不予处理。由第一个机器周期的s5开始送出片外数据存储器地址,随后读/写数据,直至第二周期无ale信号。在第二周期的s4期间,由于片外数据存储器已被寻址及选通,所以也不产生取指操作。,复习思考题mcs-51单片机由哪些功能部件组成?各部分功能?mcs-51单片机引脚ale,psen(头上有“-”)各是什么信号?功能?ea(头上有“-”)是什么信号?对8031芯片的处理?pc及dptr各是几位寄存器?各自的功能?工作寄存器位于单片机内部哪一个部件中?具体地址是如何安排的?psw是?由哪些位组成?每一位的含义?sp是?在堆栈操作中sp的内容变化怎样?51系列内部ram的低128个单元按其功用可分几部分?各部分的功能?,试简述四个并行i/o口的功能10什么是sfr?51系列有那些sfr及那些是可位寻址的?常用单片机复位方式有哪些?一个机器周期由几个状态组成?每个状态又分为几相?为什么要了解cpu的时序?14位地址7ch与字节地址7ch有什么区别?位地址7ch具体在内存中什么位置,第三章指令系统指令系统指单片机能执行的全部指令的集合单片机共有条指令,其中系统时钟为,有种助记符,种寻址方式,单片机的助记符语言助记符就是根据机器指令不同的功能和操作对象来描述指令,便于记忆,理解和分类的一种符号语言。由两部分组成:例:adda,#00h(一)操作码是指令功能的英文缩写。例:传送类:movmovcmovx,数据操作类:addsubbmuldiv等|加带借位减乘除程序控制:ajmpsjmpljmpcjneacall等逻辑操作anlorlxrl(二)操作数:是一条指令操作的对象,功能不同指令,操作对象形式也不同1传送类指令:指明操作对象从哪来(源)传到哪去(目的)书写格式:助记符目的地址源地址例:mova,r0,数据操作类:靠运算器完成。常用到a,既参与运算又存储结果书写格式:助记符被运算数运算数例:adda,#00h程序控制类指令:操作对象是pc和一个数(控制去向的绝对或相对转移地址)实际上操作数是2个,但因一个是pc,故省略不写如:ajmp操作数逻辑操作类:一般la、ra等为单操作数而and、or、xrl等需双操作数,结果目的操作数,位移操作固定在累加器a中进行。位移只需一个操作数,操作数可是数据,也可是地址何谓立即数?若操作数是数据时,被称为立即数,“#”为其标志,分为两种:8位16位操作数更常见的是存放数据的地址,这些地址通常是:1某一个工作寄存器区的r0r7,a,b,c,dptr等可编址的寄存器2片内数据存储器低128字节,sfr可寻址的221位3片外数据存储器空间4程序存储器空间参看p33,表,例:mova,#03h相当于:a为:movdptr,#2400h,注意:1同样是data,前加“#”表示立即数,否则表示地址2同样是选定工作区寄存器的r0-r7,但既能存放数据也能存放地址的只有r0,r1。若r0,r1前加“”表示其中存放地址否则表示存放数据。dptr同理3对sfr讲,仅有直接寻址3-2mcs-51指令格式及分类指令格式:51系列单片机指令:标号:操作码目的操作数源操作数:注释|表示该指令表示执行可有可无所在符号地什么功能被操作对象可是一个,也址,由字母可是两个,也可无操作数打头的字母数字串组成,例:mov74h,#00hincareti分类单字节指令格式操作码这种格式只有一个字节,操作码中包含了操作数的信息。两种情况下其指令为一字节。(1)操作数固定,无须附加空间来指定即它可完整明确的表示出指令的功能例:inca机器代码为04,(2)操作数在工作寄存器中,其寻址变化只需3位2#码即可表示,此时操作码占一个字节中的5位,操作数占3位。例:mova,rn机器代码为e8hefh,归纳起来基本都与a,c,rn有关双字节指令操作码操作数或地址双字节指令中,操作码,操作数各占一个字节例:mova,#0fh机器代码为740fh三字节指令操作码操作数或地址操作数或地址各占一个字节,例:movdptr,#data16-机器代码为指令字节数90hdphdpl注意:指令字节数越多,占用内存单元越多,但不一定执行时间越长。例:乘/除法指令为一个字节,执行时间要4个机器周期。若将111条指令按功能可分为5大类:数据传送28逻辑操作24算术运算25位操作17控制转移17,3-3寻址方式寻址即寻找操作数的地址。寻址方式是通过确定操作数的位置或地址,将操作数提取出来的方法。系列共有种寻址方式立即寻址:指令中跟在操作码后面01110100操作码00110000操作数的一个字节就是实际操作数,参加指令规定的操作.立即寻址在立即数前加“#”例:mova,#30h,直接寻址:指令中包含了操作数的真实地址.该地址直接给出了参加运算或传送的单元或位,可访问三种地址空间(1)sfr(2)内部数据ram128个字节单元(3)221个位地址空间例:mova,30h内部ram:30h68h,寄存器寻址操作数在寄存器中.指定了寄存器就得到了操作数,寄存器寻址方式的指令均是一字节指令,以符号名称表示寄存器。例:mova,r1功能:将寄存器r1的内容送a寄存器寻址方式的寻址范围:(1)工作寄存器组r0r7,4组共32个寄存器注意:指令中只能使用当前工作寄存器组中的寄存器,因此使用前可通过对psw寄存器中的位rs1rs0的设置来选择当前工作寄存器组具体操作如下:先看是4组寄存器中的哪一组,再用操作码低3位确定组内哪一个寄存器得到地址,例:incr3pc00001011,4寄存器间接寻址(1)定义:寄存器内存的是操作数的地址。即操作数是通过寄存器间接得到的,因此称寄存器间接寻址。(2)寄存器间接寻址表示形式:寄存器间接寻址符号+寄存器名(3)51系列可用来寻址的寄存器有选定工作寄存器区的r0,r1,sp,及16位数据指针dptr例:mova,r0,设r0中的内容为30h30h68h,30h,r0,a,68h,内部ram,规定:1)用r0,r1作间接寻址,寻址范围为片内数据ram的低128字节和片外数据存储器的头256字节2)用dptr间接寻址,寻址范围为整个数据存储器的64kb空间3)sp用于指示堆栈操作的地址5变址寻址指由指令指定的偏移量寄存器和变址寄存器dptr或pc相加所得的结果作为操作数地址例:movca,a+pc功能:将pc和a的内容相加得到的程序存储器中的地址单元的内容传送给a设该指令执行前,a=30h,pc=22f1h,则:22f1+)302321(h)最后结果a的内容为38h,6相对寻址为程序相对转移设计的将pc的当前值+指令给出的偏移量(rel),构成程序转移的目的地址注意:pc的当前值为该相对转移指令的下一条指令的地址。转移目的地址可表示如下:目的地址=转移指令地址+转移指令字节数+relrel一个8位带符号2#补码。范围:当前pc值的+127-128之间例:jz30hjz:a=0,跳转a=1,不跳转转移时要刨掉操作码+操作数占的字节数,再加偏移量,本例:jz30h是2字节指令假设jz即操作码原pc为1005h,则操作数占据1006h,刨掉这两个单元此时pc应指向1007h+30h=1037h,位寻址指令能对片内数据ram中的128位和sfr的93位进行位操作,即对地址空间的每一位都可进行运算和传送操作1)位寻址范围:内部ram中字节地址20h2fh的16b单元共128个2#位,位地址为00h7fh字节地址可被8整除的11个sfr中的各个有定义的位2)51系列中位地址的表示可采用以下几种形式:直接使用位地址表示,如a的位的4的位地址为e4h采用字节单元地址加位的表示法,如20h.5表示字节单元地址20h的位5.对可位寻址的sfr可直接用寄存器名称加位的方法.如acc.4表示a的位4使用位名称.例:psw中位5是f0可用f0表示该位,注意:位地址与直接寻址中的字节地址形式完全一样,主要由操作码来去分小结见书p38,3-4数据传送类指令:共28条,8种助记符,按操作方式可分为三种:数据传送数据交换堆栈操作见下表或书p39,按操作码助记符又可分为三类:movmovxmovc注意:除了在用pop或mov指令将数据传送到psw时,一般传送操作不影响标志位源地址的内容目的地址后,源地址内容不变sfr只能直接寻址,几个表示法:rn表示r0r7ri表示r0r1表示源,目的地址可互换表示内容可互换一通用传送指令mov格式:mov,功能:传送字节变量允许有15种源目的寻址方式组合范围:内部数据存储器中工作寄存器rn,片内数据ram,sfr及a之间的传递,立即数arn片内ramsfr目的源机器代码操作mova,#data74dataa#datamovdata,#data75data(data)#datamovri,#data76data(ri)#datamovrn,#data78data(rn)#data例:movr0,#data设r0的内容为20h,则指令执行结果:20h#data例:mov40h,#20h,例:mova,#20h例:movr3,#20h例:movp1,#80h例:movr1,#82hmova,r1指令本身没错,但要注意82h是sfr的dpl的地址值,对sfr来讲,只有直接寻址,故该种寻址方式无效,使用时要注意,若要从dpl中取值送a,可用直接寻址方式mova,82h就可,2片内数据存储器(rn,片内ram,sfr)与类加器a传送数据,共6条指令操作码目的源功能mova,dataa(data)mova,ria(ri)mova,rna(rn)movdata,a(data)(a)movri,a(ri)(a)movrn,a(rn)(a)注意:sfr仅能被直接寻址,而在sfr地址范围(128255)中很多单元又无定义。若对之读/写会得到不确定的值,要写入的数也被丢失。所以对内部数据存储器来讲,间接寻址的真正范围实际上只有0127个单元的片内数据ram地址,内部数据存储器中rn,sfr和片内数据ram之间的数据传送,共5条movdata,datamovdata,rimovdata,rnmovri,datamovrn,data这5条指令共有3种寻址方式:直接寻址寄存器寻址寄存器间接寻址注意:ri与rn的区别,例:执行一段程序后(a)=?,(r1)=?,(b)=?,(25h)=?,(p3)=?mov20h,#25h;mov25h,#10hmovp1,#0cahmovr0,#20hmova,r0movr1,amovb,r1movr1,p1movp3,p1,目标地址传送条指令movdptr,#data16功能:将16位常数装入数据指针例:movdptr,#2003h外部数据存储器(或i/o口)与a传送指令movx格式:movx功能:外部传送共4条指令movxa,dptrmovxa,rimovxdptr,amovxri,a,注意:上述指令有2条采用dptr作间址寄存器。因dptr为16位地址指针,所以这2条指令可寻址外部ram的整个64kb空间,另2条采用r0,r作8位地址指针,寻址范围只限于外部ram最低256个单元外部数据传送采用movx,内部数据传送采用mov体现了51对内部ram和外部ram的独立编址,采用不同的指令访问。外部ram单元只能与累加器a进行数据交换,程序存储器向a传送指令movc共2条格式:movca,a+pcmovca,a+dptr功能:完成从程序存储器读取数据的功能注意:dptr虽说是数据存储器指针,但也应用于程序存储器,显示数据,故此时可指向程序存储器注意:(1)这2条指令均为一字节指令(2)都采用了基址寄存器+变址寄存器的间接寻址方式(3)这2条指令主要用于查表(4)2条指令使用的基址寄存器不同,因此适用范围也不同理解:指令以pc为基址,在cpu取完操作码时pc会自动+1,指向下1条指令的第一字节地址,所以此时的pc已不是原值而是pc+1。又因为a中的内容为8位无符号数,就使得该指令查表范围只能在以pc当前值开始后的256个字节范围内,使表格地址分配受限制,同时编址时还需进行偏移量的计算,偏移量dis=表首地址(该指令所在地址+1)例:对dptr作基址寄存器,dptr可任意赋值。因该指令寻址范围是整个程序存储器的64kb空间。缺点:若dptr已有它用,在赋首地址之前要保护现场,执行完查表后再予以恢复。,例:编制根据累加器a中的数(0-9)查其平方的子程序解:count:pushdph;保护现场pushdpl;movdptr,#table;赋表首址到dptrmovca,a+dptr;据a的内容查表popdpl;popdph;ret;返回主程序table:db00db01db04db09db16db25db36db49db64db81,table,数据交换指令共5条,完成a和内部ram单元之间的字节或半字节交换字节交换格式:xcha,dataxcha,rixcha,rn功能:完成a与内部ram单元内容的全字节交换例:设(r0)=20h,(a)=3fh,(20h)=75h,则执行xcha,r0后(a)=?,(20h)=?半字节交换将a与ram单元内容的低4位进行交换格式:xchda,ri,例:(r1)=30h,(a)=67h,(30h)=84h,则执行xchda,r1后(a)=?(30h)=?累加器自身半字节交换完成a内容高4位与低4位的交换格式:swapa,栈操作指令入栈格式:pushdata(sp)(sp)+1(sp)(data)出栈格式:popdata(data)(sp)(sp)(sp)-1特点:后进先出堆栈编址采用向上生成方式,即栈底占用较低地址,栈顶占用较高地址,入栈:先(sp)+1sp,指向栈底的上一个单元后把直接寻址单元的内容sp所指的单元例:出栈:先弹出栈顶内容到直接寻址单元后(sp)-1sp形成新的堆栈指针push,pop是一个逆过程。常用在保护恢复现场当中,使程序执行迅速,安全小结(1)对不同存储器空间采用不同指令访问movmovx的区别?movc,(2)数据传送类指令不影响psw(3)51指令没专门i/o指令,采用数据传输指令进行i/o操作3-5逻辑操作指令共24条,9种助记符,完成各种逻辑运算。按操作数可分为:单操作数双操作数单操作数专门对a进行逻辑操作,主要是清“0”,求反,左/右移等,结果仍在a中双操作数是a和第二操作数间执行逻辑与,或,异或操作。第二操作数可是:,对应的寻址方式:也可将直接寻址单元作为第一操作数逻辑“与”共6条指令anla,rn;anla,data;anla,rianla,#dataanldata,aanldata,#data逻辑“与”按“位”操作,逻辑“或”共6条指令orla,rnorla,dataorla,riorla,#dataorldata,aorldata,#data逻辑“异或”共6条xrla,rnxrla,dataxrla,rixrla,#dataxrldata,axrldata,#data,累加器清“0”,取反共2条clracpla移位指令共4条循环左移rla;an+1(an),a0(a7)2带进位循环左移动rlca;an+1(an),cy(a7),a0(cy),循环右移rra;(an)(an+1),(a7)(a0)带进位循环右移rrca;(an)(an+1),(a7)(cy),(cy)(a0)六举例:例1:将内部ram中30h单元的最高位取反,其它位保持不变解:mova,30hxrla,#80hmov30h,a,例2:从p1口输入一个数据,将其高4位变为“0”后存入内部ram30h单元中解:mova,p1anla,#0fhmov30h,a例3:利用移位指令实现累加器a的内容乘6解:clrcrlcamovr1,aclrcrlcaadda,r1,例4:双字节数移位。将r2,r3中的一个双字节数左移一位,最低位补零,最高位存cy中。设r2中为高字节,r3中为低字节。解:clrcmova,r3rlca;低字节左移一位,高位cy,最低位补“0”movr3,amova,r2rlca;高字节左移一位,低字节原最高位进入最低位movr2,a通过例子看出逻辑操作按位进行anl常用来屏蔽字节中的某些位,欲清除该位用“0”去“与”,保留该位用“1”去“与”orl常用来使字节中的某些位置“1”,欲保留不变的位用“0”去“或”,欲置位的位用“1”去“或”xrl用来对字节中某些位取反。若取反用“1”去“异或”,想保留用“0”去“异或”。,注意:当用逻辑与,或,异或指令修改一个并行i/o口输出内容时,则原始值将从该输出口的锁存器中读取,而不是从该输出口的引脚读取。,36算术运算类指令51的算术指令共25条,8种助记符。全部指令均是8位数据运算加/减运算指令1加法指令一般加法指令共4条,被加数总是a,且结果也放入a中adda,#dataadda,dataadda,riadda,rn功能:源内容与a内容相加,结果送目的a注意:运算影响ac,cy,ov,p溢出判断规则:溢出运算结果的最高的位6与符号位7二者只有一个产生进位(或借位时)认为溢出,ov将置位不溢出若二者同时有进位或均无进位时,将不认为溢出,例:a=49h,则执行adda,#6bh结果:,置“”,表示两正数相加和变为负数,或两负数相加和变为正数的错误结果,0),带进位加法指令共4条,被加数总是a,结果也放入a中addca,#dataaddca,dataaddca,riaddca,rn这些指令除考虑进位外,其它与一般加法指令完全相同,影响psw的状态位,主要用于多字节数的加法运算加“1”指令共5条,对指定的单元内容+“1”incaincrnincdataincriincdptr,注意:+“1”指令不影响psw,前4条指令对一个字节单元内容+1,后一条给16位寄存器内容+1若用该指令使i/o口内容+1时,其原始值将从输出数据锁存器读入,非输出口引脚例:有两个双字节数,按低字节在前分别存放在内部ram的30h,31h,和40h,41h中,求两数的和并存于内部ram30h,31h单元,假定和仍不超过2字节解:movr0,#30hmovr1,#40hmova,r0adda,r1movr0,aincr0incr1mova,r0addca,r1movr0,a,减法指令51系列没有不带借位的减法带借位减法指令共4条。被减数和结果均存在a中suuba,#datasuuba,datasuuba,risuuba,rn注意:减法运算影响psw的cy,ov。cy=1,表示有借位,cy=0表示无借位。ov=1表示带符号数相减时,从一个正数中减去一个负数得到一个负数或是从一个负数减去一个正数得到一个正数的错误情况。判定法则同加法:由位6,位7借位状态异或=1而得单字节相减时,须先清借位位,以免相减后结果出错例(a)=d9h,r0内容为87h,求相减结果解:clrcsubba,r0则a=52h,cy=0,ov=0,11011001-)1000011101010010,减“1”共4条指令deca,decdatadecridecrn注意:若用该指令使i/o口内容-1时,其原始值将从输出数据锁存器读入-1,再写入锁存器,非对输出口引脚内容-1乘/除法运算指令共2条指令。乘/除各一条,完成2个8位无符

温馨提示

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

评论

0/150

提交评论