资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,二进制数字,0,与,1,数字电路常用高电平代表,1,,低电平代表,0.,数字电路的计算通常采用二进制,计算机硬件所能执行的只能是二进制代码,实际上是通过高低电平来进行的。,0,0,0,1,1,二进制数字0与1数字电路常用高电平代表1,低电平代表0.00,1,逻辑,0,与逻辑,1,逻辑运算的值为,1,代表真。,逻辑运算的值为,0,代表假。,逻辑0与逻辑1逻辑运算的值为1代表真。,2,二进制运算,100110011,001000110,101111001,二进制运算 100110011,3,二进制数与十进制数,二进制数与十进制数,4,二进制与十六进制,十六进制,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,1,0,1,1,0,1,0,1,B,5,表示为十六进制,0xB5,,,8,位为一字节,二进制与十六进制十六进制10110101B5表示为十六进制0,5,BCD,码,0,0,1,1,0,1,0,1,十位,09,个位,09,以上,BCD,码表示十进制数,35,BCD码00110101十位09个位09以上BCD码表示,6,逻辑运算,逻辑与,& A*B,有,0,得,0,,全,1,得,1,逻辑或,| A+B,有,1,得,1,,全,0,得,0,逻辑非!,!A,取反,1,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1,逻辑运算逻辑与& A*B 有0得0,7,脉冲,上升沿,下降沿,脉冲宽度,脉冲上升沿下降沿脉冲宽度,8,数字电路,逻辑运算电路,编码器,译码器,数显电路,数模、模数转换,(,D/A,A/D)Digital / Analoge,加法器,触发电路,时序电路,数字电路逻辑运算电路,9,几个概念与术语,ROM(Read Only Memerry),只读存贮器,RAM(Read Access Memerry),可读写存贮器,Rom,主要用来存贮程序,,RAM,用来存贮计算数据,单片机是集,CPU,、存储器、,I/O,接口于一体的大规模集成电路芯片。,MCS-51,系列单片机是目前市场上应用最广泛的单片机机型。,几个概念与术语ROM(Read Only Memerry)只,10,存贮器,D0,D1,D2,D3,D4,D5,D6,D7,00H,01H,02H,03H,04H,05H,D0,D1,D2,D3,D4,D5,D6,D7,D0,D1,D2,D3,D4,D5,D6,D7,数据总线,A0,A1,A2,A3,A4,A5,A6,A7,地址译码电路,控制电路,A0,A1,A2,A3,A4,A5,A6,A7,地址总线,地址锁存器,CS,(片选),RD,(读取),WR,(写入),控制总线,存贮器D0D1D2D3D4D5D6D700H01H02H03,11,三大总线,数据总线,地址总线,控制总线,三大总线数据总线地址总线控制总线,12,MCS-51,系列单片机,普通型,(,51,子系列),8051,、,8031,、,8751,、,89C51,、,89S51,等。,增强型,(,52,子系列),8032,、,8052,、,8752,、,89C52,、,89S52,等。,结构基本相同,主要差别在存储器的配置上。,8031,片内没有程序存储器,8051,内部设有,4KB,的,掩模,ROM,程序存储器,8751,是将,8051,片内的,ROM,换成,EPROM,89C51,则换成,4KB,的闪速,EEPROM,89S51,结构同,89C51,,,4KB,的闪速,EEPROM,可在线编程,增强型的存储容量为普通型的一倍,单片机原理课件,13,51,系列单片机内部结构,P3,P1,P2,可编程,串行,I/O,口,P0,外部中断,基准频率源,控制,128B RAM,数据存储器,4KB ROM,程序存储器,2,个,16,位,定时,/,计数器,振荡器及 定时电路,CPU,64KB,总线扩展控制,可编程,并行,I/O,口,内部中断,计数脉冲,串行输出,串行输入,51系列单片机内部结构P3P1P2,14,CPU,CPU,是单片机的核心部件。它由运算器和控制,器等部件组成。,1,.,运算器,运算器的功能是,进行算术运算:加、减、乘、除、加,1,、减,1,、比较,BCD,码十进制调整等,逻辑运算:与、或、异或、求反、循环等逻辑操作,位操作:内部有布尔处理器,它以进位标志位,C,为位累加器,用来处理位操作。可对位置,“,1,”,、对位清零 、位判断等。,操作结果的状态信息送至状态寄存器,PSW,。,CPU,15,运算器组成,1.,算术逻辑运算单元,ALU,用于对数据进行算术和逻辑操作的执行部件,由加法,器和其它逻辑电路(移位电路和判断电路等)组成。,2.,累加器,A,使用最频繁的寄存器,可写为,Acc,。,A,的作用:,(,1,)是,ALU,单元的输入之一,又是运算结果存放单元。(,2,)数据传送大多都通过累加器,A,。,(,3,),A,的进位标志,Cy,同时又是位处理机的位累加器。,运算器组成,16,2.,程序计数器,PC,程序计数器,PC,是,16,位的寄存器,用来存放即将要执行的指令地址,可对,64KB,程序存储器直接寻址。,3.,指令寄存器 指令寄存器中存放指令代码。,CPU,执行指令时,由程序存储器中读取的指令代码送入指令存储器,经指令译码器译码后由定时与控制电路发出相应的控制信号,完成指令功能。,2.程序计数器PC 程序计数器PC是16位的寄存器,用,17,MCS-51,的引脚,40,脚塑料双列直插封装(,PDIP,),P1,P3,P0,P2,MCS-51的引脚 P1P3P0P2,18,44,脚,“,J,”,型脚的方形封装(,PLCC,),44脚“J”型脚的方形封装(PLCC),19,引脚逻辑图,8051,单片机为,40,脚双列直插式封装,引脚可分为三个部分,控制引脚,并行,I/O,口引脚,电源及时钟引,脚,引脚逻辑图控制引脚并行I/O口引脚电源及时钟引脚,20,控制引脚,(1) RST/VPD(9,脚,),:复位与备用电源,(2) ALE/PROG,*,(,30,脚):,第一功能,ALE,:地址锁存允许,第二功能,PROG,*,:编程脉冲输入端。,(3) PSEN,*,(,29,脚):读外部程序存储器的选通信号。,(4) EA,*,/VPP (31,脚,),:,EA,*,为内外程序存储器选择控制,EA,*,=1,,访问片内程序存储器,,EA,*,=0,,单片机则只访问外部程序存储器。,第二功能,VPP,,用于施加编程电压。,控制引脚,21,8051,有,4,组,8,位,I/O,口:,P0,、,P1,、,P2,和,P3,口,其中,P1,、,P2,和,P3,为准双向口,,P0,口则为双向三态输入输出口。,MCS-51,系列单片机的基本,I/O,口,双向三态输入输出端口。,P0,口身兼两职,既可作为地址总线(,AB0-AB7,),也可作为数据总线(,DB0-DB7,)。,作为通用,I/O,时,是一个漏极开路电路。需外接上拉电阻。,作为地址,/,数据总线使用时,不需 接上拉电阻。,P0,可驱动,8,个,LSTTL,,其它,P,口可以驱动,4,个,LSTLL,。,并行输入和输出端口,P0,8051有4组8位I/O口:P0、P1、P2和P3口,其中,22,注意在,P0,口作为通用的,I/O,口时,必须外接上拉电阻,(,如下图)。,1,2,3,4,5,6,7,8,P0,口,VCC,注意在P0口作为通用的I/O口时,必须外接上拉电阻(如下图),23,P1,口某位结构,并行输入和输出端口,P1,P1,口为,8,位准双向输入输出端口。,作为输入口使用时,有两种情况。,其一是:首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读,修改,写操作,象,JBC(,逻辑判断,),、,CPL(,取反,),、,INC(,递增,),、,DEC(,递减,),、,ANL(,与逻辑,),和,ORL(,逻辑或,),指令均属于这类操作。,其二是:读,P1,口线状态时,打开三态门,G,,将外部状态读入,CPU,。,P1口某位结构并行输入和输出端口P1 P1口为8位准双向,24,注意在,P1,口作为通用的,I/O,口使用时,在从,I/O,端口读入,数据时,应该首先向相应的,I/O,口内部锁存器写,“,1,”,。,举例:从,P1,口的低四位输入数据,MOV P1,#00001111b ;,先给,P1,口底四位写,1,MOV A,P1 ;,再读,P1,口的底四位,注意在P1口作为通用的I/O口使用时,在从I/O端口读入,25,并行输入和输出端口,P2,P2,口作为通用,I/O,时,准双向输入输出端口。,P2,口作为高,8,位地址总线,,AB8-AB15,。,P2,口与,P0,一起构成单片机与外电路相连接的扩展端口。通常可以用来扩展存储器、及与其它总线型连接方式的外设。,P2,可以驱动,4,个标准的,TTL,负载电路。,并行输入和输出端口P2,26,利用,P0,、,P2,端口扩展,SRAM,、,EPROM,存储器,8051,EA,P2,P0,ALE,PSEN,RD,74LS373,ROM,A15A0,PD/PGM,A15A0,A7A0,A7A0,RAM,RD,WR,WR,利用P0、P2端口扩展SRAM、EPROM存储器8051EA,27,并行输入和输出端口,P3,P3,口作为通用,I/O,时,为准双向输入输出端口。,P3,口的第二功能。,P3.0,串行输入口,(RXD),P3.1,串行输出口,(TXD),P3.2,外中断,0(INT0),P3.3,外中断,1(INT1),P3.4,定时,/,计数器,0,的外部输入口,(T0),P3.5,定时,/,计数器,1,的外部输入口,(T1),P3.6,外部数据存储器写选通,(WR),P3.7,外部数据存储器读选通,(RD),并行输入和输出端口P3P3口作为通用I/O时,为准双向输入输,28,注意在,P3,口的使用时,首先要考虑第二功能的要求。,单片机原理课件,29,MCS-51,单片机,P3,口的第二功能,引脚,第二功能,P3.0,RXD(,串行口输入,),P3.1,TXD(,串行口输出,),P3.2,INT0(,外部中断,0,输入,),P3.3,INT1(,外部中断,1,输入,),P3.4,T0(,定时器,0,的外部输入,),P3.5,T1(,定时器,1,的外部输入,),P3.6,WR(,片外数据存储器写选通控制输出,),P3.7,RD(,片外数据存储器读选通控制输出,),MCS-51单片机P3口的第二功能引脚第二功能P3.0RXD,30,举例,1,:,P1,口作为输出口,原本无需接上来电阻,这里是为了增强,P1,口的驱动能力。,ORG 0000H,START,:,MOV P1,#00H,ACALL DELAY,MOV P1,#0FFH,ACALL DELAY,SJMP START,DELAY: MOV R3,#0FFH,DEL2: MOV R4,#0FFH,DEL1: NOP,DJNZ R4,DEL1,DJNZ R3,DEL2,RET,END,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,ALE,WR RD,P1. 0,P1. 1,P1. 2,P1. 3,P1. 4,P1. 5,P1. 6,P1. 7,+5V,0,0,0,0,0,0,0,0,举例1:P1口作为输出口,原本无需接上来电阻,这里是为了增强,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,PX,口输入举例,S0,+5 V,4.7 k,W,ALE,WR RD,P3. 0,P3. 1,P3. 2,P3. 3,P3. 4,P3. 5,P3. 6,P3. 7,读端口:,MOV P3, #11111111B,MOV A, P3,89C51,寄存器,A,注:,当,I/O,端口作为输入使用时,需先向端口写入,“,1,”,,使内部的,FET,截止,再读入引脚的状态。,你知道,P3.4,对应寄存器,A,哪一位吗?,P3.4,1,1,1,1,1,1,1,1,0,1,1111111111111111PX口输入举例S0+5 V4,32,程序状态字寄存器,PSW,(,1,),Cy,(,PSW.7,)进位标志位,(,2,),Ac(PSW.6),辅助进位标志位,(,3,),F0,(,PSW.5,)标志位,由用户使用的一个状态标志位。,(,4,),RS1,、,RS0,(,PSW.4,、,PSW.3,),4,组工作寄存器区选择控制位,1,和位,0,。,程序状态字寄存器PSW,33,工作寄存器区的选择,18,1FH,3,区,1 1,10,17H,2,区,1 0,08,0FH,1,区,0 1,00,07H,0,区,0 0,R,0,R,7,地址,寄存器组,RS,1,RS,0,工作寄存器区的选择 181FH3区1 11017,34,(,5,),OV,(,PSW.2,)溢出标志位,指示运算是否产生溢出。,(,6,),PSW.1,位 保留位,未用,(,7,),P(PSW.0),奇偶标志位,P=1,,,A,中“,1”,的个数为奇数,P=0,,,A,中“,1”,的个数为偶数,(5)OV(PSW.2)溢出标志位,35,MCS-51,存储器的结构,存储器空间可划分为,5,类:,1.,程序存储器空间,2.,内部数据存储器空间,3.,特殊功能寄存器,4.,位地址空间,5.,外部数据寄存器空间,MCS-51存储器的结构,36,内部数据存储器,(,a,),外部数据存储器,(,b,),MCS-51,单片机存储器空间分配,特,殊,功,能,寄,存,器,00H,1FH,20H,2FH,30H,7FH,80H,FFH,80H,88H,90H,98H,A0H,A8H,B0H,B8H,D0H,E0H,F0H,特殊功能寄存器中位寻址,外部,ROM,内部,ROM,(EA=1),外部,ROM,(EA=0),0000H,0000H,0FFFH,0FFFH,1000H,FFFFH,外 部,RAM,(I/O,口,地址,),0000H,FFFFH,程序存储器,(,c,),工作寄存器区,位寻址区,通用,RAM,区,内部数据存储器外部数据存储器MCS-51单片机存储器空间分配,37,程序存储器,存放应用程序和表格之类的固定常数。,分为片内和片外两部分,由,EA,*,引脚上所接电平确定,程序存储器中的,0000H,地址是系统程序的启动地址,在程序存储器中,以下,7,个单元具有特殊功能,是留给系统用的。,表,3-1 5,种中断源的中断入口地址,外中断,0 0003H,定时器,T0,溢出,000BH,外中断,1 0013H,定时器,T1,溢出,001BH,串行口,0023H,定时器,T2,溢出(,89C52/S52,),002BH,程序存储器,38,内部数据存储器,共,128,个字节,,字节地址为,00H,7FH,。,00H,1FH,:,32,个单元,是,4,组通用工作寄存器区,20H,2FH,:,16,个单元,可进行,128,位的位寻址,30H,7FH,:用户,RAM,区,只能进行字节寻址,用作数据缓冲区以及堆栈区。,内部数据存储器,39,特殊功能寄存器(,SFR,),CPU,对各种功能部件的控制采用特殊功能寄存器集中控制方式,共,21,个。,有的,SFR,可进行位寻址,其字节地址的末位是,0H,或,8H,。,表,3-2 SFR,的名称及其分布,特殊功能寄存器(SFR)表3-2 SFR的名称及其分布,40,SFR,中的某些寄存器,1,堆栈指针,SP,(,Stack Point,),指示出堆栈顶部在内部,RAM,块中的位置,复位后 ,,SP,中的内容为,07H,。,(,1,)保护断点,(,2,)现场保护,2.,数据指针,DPTR,16,位特殊功能寄存器,高位字节寄存器用,DPH,表示,低位 字节寄存器用,DPL,表示。,3. I/O,端口,P0,P3,专用寄存器,P0,P3,分别为,I/O,端口,P0,P3,的锁存器。,SFR中的某些寄存器,41,4.,寄存器,B,在执行乘法和除法操作中,用,B,寄存器暂存数据。,在不执行乘、除的情况下,可当作一个普通寄存器来使用。,5.,串行数据缓冲器,SBUF,存放欲发送或已接收的数据,一个字节地址物理上是由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。,6.,定时器,/,计数器,两个,16,位定时器,/,计数器,T1,和,T0,,各由两个独立的,8,位寄存器组成:,TH1,、,TL1,、,TH0,、,TL0,,只能字节寻址,但不能把,T1,或,T0,当作一个,16,位寄存器来寻址访问。,4.寄存器B,42,位地址空间,211,个(,128,个,+83,个)寻址位。位地址范围为:,00H,FFH,。,内部,RAM,的可寻址位,128,个,(,字节地址,20H,2FH),见,表,3-3,。,特殊功能寄存器,SFR,为,83,个可寻址位,见,表,3-4,。,位地址空间,43,表,3-3,内部的可寻址位及位地址,表3-3 内部的可寻址位及位地址,44,表,3-4 SFR,中的位地址分布,表3-4 SFR中的位地址分布,45,外部数据存储器,最多可外扩,64K,字节的,RAM,或,I/O,。几点注意:,(1),地址的重叠性,程序存储器与数据存储器全部,64K,字节地址空间重叠,程序存储器与数据存储器在使用上是严格区分的,(3),位地址空间共有两个区域,(4),片外与片内数据存储器由指令来区分,(5),片外数据存储区中,,RAM,与,I/O,端口统一编址。,所有外围,I/O,端口的地址均占用,RAM,地址单元,使用与访问外部数据存储器相同的传送指令。,外部数据存储器,46,内部数据存储器,(,a,),外部数据存储器,(,b,),MCS-51,单片机存储器空间分配,特,殊,功,能,寄,存,器,00H,1FH,20H,2FH,30H,7FH,80H,FFH,80H,88H,90H,98H,A0H,A8H,B0H,B8H,D0H,E0H,F0H,特殊功能寄存器中位寻址,外部,ROM,内部,ROM,(EA=1),外部,ROM,(EA=0),0000H,0000H,0FFFH,0FFFH,1000H,FFFFH,外 部,RAM,(I/O,口,地址,),0000H,FFFFH,程序存储器,(,c,),工作寄存器区,位寻址区,通用,RAM,区,内部数据存储器外部数据存储器MCS-51单片机存储器空间分配,47,时钟电路与时序,时钟电路用于产生单片机工作所必需的时钟控制信号。,时钟电路,时钟频率直接影响单片机的,速度,,电路的质量直接影响系统的,稳定性,。常用的时钟电路有两种方式:,内部时钟,方式和,外部时钟,方式。,时钟电路与时序,48,内部时钟方式,内部有一个用于构成振荡器的高增益反相放大器,其输入端:,XTAL1,,输出端:,XTAL2,。,C1,和,C2,典型值通常选择为,30pF,左右。,晶体的振荡频率在,1.2MHz,12MHz,之间。,某些高速单片机芯片的时钟频率已达,40MHz,。,内部时钟方式 C1和C2典型值通常选择为30pF左右。,49,时钟电路与复位电路,XTAL1,XTAL2,GND,8XX51,C01,C02,时钟电路与复位电路XTAL1XTAL2GND8XX51C01,50,机器周期、指令周期与指令时序,一、时钟周期(振荡周期),单片机的基本时间单位。定义为时钟脉冲频率的倒数在一个时钟周期内,中央处理器仅完成一个最基本的动作,若时钟的晶体的振荡频率为,fosc,,则时钟周期,Tosc=1/fosc,。,二、状态周期,在系列单片机中把一个时钟周期定义为一个节拍(用表示),两个节拍定义为一个状态周期(用表示),三、机器周期,CPU,完成一个基本操作所需要的时间。,执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。,MCS-51,单片机每,12,个时钟周期为一个机器周期,机器周期、指令周期与指令时序,51,一个机器周期又分为,6,个状态,:,S1,S6,。,每个状态又分为两拍,:,P1,和,P2,。因此,,一个机器周期中的,12,个时钟周期表示为:,S1P1,、,S1P2,、,S2P1,、,S2P2,、,、,S6P2,。,一个机器周期又分为6个状态:S1S6。每个状态又分为两拍:,52,指令周期,指令周期是执行一条指令所需要的时间一般由若干个机器周期组成,执行一条指令时,可分为取指令阶段和指令执行阶段 。,取指令阶段,,PC,中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。,指令执行阶段,对指令操作码进行译码,以产生一系列控制信号完成指令的执行。,ALE,信号是为地址锁存而定义的,以时钟脉冲,1/6,的频率出现,在一个机器周期中,,ALE,信号两次有效(注意,在执行访问外部数据存储器的指令,MOVX,时,将会丢失一个,ALE,脉冲),指令周期,53,8051,X2,X1,Vss,TTL,外接时钟源,Vcc,时钟电路,需外接晶振的频率,1.212MHZ,,,C1,和,C2,取,3010PF,X1,X2,C2,C1,X,8051,振荡电路,S1,S2,S3,S4,S5,S6,S1,S2,P1,P2 P1,P2 P1 P2,P1 P2 P1,P2 P1,P2,P1 P2 P1 P2,f,osc,一个状态周期,一个机器周期,T=12*(1/fosc),X,2,CPU,的时序(时钟周期、 状态周期、机器周期),8051TTL外接时钟源VccX1X2C2 C1X 8051,54,若外接晶振为,12MHz,时,则单片机的四个周期的具体值为:,时钟周期,1/12MHz,1/12s,0.0833s,状态周期,1/6s,0.167s,机器周期,1s,指令周期,1,4s,可用于计算指令、程序的执行时间,以及定时器的定时时间,MCS51,单片机的,CPU,取指令和执行指令的时序如下图所示:,若外接晶振为12MHz时,则单片机的四个周期的具体值为:,55,单片机原理课件,56,复位:是单片机初始化操作,其主要功,能是把包括,PC,在内的一些专用寄存器赋予,初始数据,使单片机从这些出值开始工作。,单片机运行出错或进入死循环时,可使,其复位后重新运行。,单片机本身一般是不能自动进行复位,的,必须配合相应的外部电路才能实现。,复位和复位电路,复位:是单片机初始化操作,其主要功复位和复位电路,57,MCS-51,单片机各寄存器的复位状态,00H,TCON,0000H,PC,00H,TMOD,0,0000B,PCON,0,000000B,IE,不定,SBUF,000000B,IP,00H,SCON,0FFH,P,0,P,3,00H,TH,1,0000H,DPTR,00H,TL,1,07H,SP,00H,TH,0,00H,PSW,00H,TL,0,00H,ACC,复位状态,寄存器,复位状态,寄存器,复位操作,MCS-51单片机各寄存器的复位状态 00HTCON0000,58,上电自动复位,和,按钮复位,最简单的上电自动复位电路,:,外部复位电路,上电自动复位和按钮复位 外部复位电路,59,按键手动复位,,有,电平方式,和,脉冲方式,两种。,电平方式 脉冲方式,按键手动复位,有电平方式和脉冲方式两种。,60,单片机最小系统示例,单片机最小系统示例,61,指令,指令格式,寻址方式,指令系统,指令指令格式,62,标号:,操作码 操作数,1,,操作数,2 ,;注释,换行表示一条指令结束。,例:,LOOP,:,MOV A,,,#40H,;取参数,MOV,_move,传送,XCH,_exchange,交换,ANL,_and logic,与逻辑运算,XRL,_exclusive or,异或运算,MUL,_Multiply,乘法,RR,_rotate right,右循环,SJMP,_short jump,短跳转,RET,_return,子程序返回,指令格式,MOV_move传送 指令格式,63,机器语言指令格式,操作码,操作数,1 ,操作数,2,有单字节、双字节和三字节指令。,举例:,汇编语言:机器语言:,MOV A,,,R0E8H,MOV R6,,,#32H7E 32H,MOV 40H,,,#100H75 40 64H,11101000,01111110,00110010,01110101,01000000,01100100,机器语言指令格式操作码 操作数1 操作数2举例:1,64,指令寻址方式,操作数类型,位,(b),位寻址区中的一位二进制数据,字节,(B) 8,位二进制数据,字,(W) 16,位双字节数据,1.,立即寻址方式,举例:,8,位立即数:,MOV A,,,#40H,;,A,40H,16,位立即数:,MOV DPTR,,,#2100H,;,DPTR,2100H,指令寻址方式操作数类型1.立即寻址方式,65,执行指令,MOV A,,,40H,后,A =,2.,直接寻址方式,41H,78H,40H,56H,56H,执行指令 MOV A,40H 后 A = 2.,66,3.,寄存器寻址方式,MOV A,,,R0,;,A,R0,4.,寄存器间接寻址方式,例,:MOV A,,,R0,;,A,(R0),设指令执行前,A=20H,,,R0=40H,,地址为,40H,存储器 单元内容如图所示,。,41H,67H,40,H,34H,0100 0000,A,0010 0000,R0,0100 0000,R0,3.寄存器寻址方式 MOV A,R0;A,67,5.,变址间接寻址方式,数据地址,=,基地址,+,偏移量。,例:,MOVC A,,,A+DPTR,;,A,(A+DPTR),设指令执行前,A=09H,,,DPTR=2000H,,存储器单元内容如图所示。,2008H,89H,2009H,12H,5.变址间接寻址方式 数据地址 = 基地址 +,68,6.,位寻址方式,指令给出位地址。一位数据在存储器位寻址区。,例:,MOV Cy,,,40H,;,Cy,(,位地址,40H),28H,0110001,0,29H,11010111,位寻址区,位地址,40H,6.位寻址方式28H 0110001029H,69,MCS-51,指令系统分析,指令功能分类:,数据传送、数据操作、布尔处理、程序控制。,1.,数据传送指令,实现寄存器、存储器之间的数据传送。,内部传送指令,外部传送指令,交换指令,堆栈操作指令,查表指令,MCS-51指令系统分析指令功能分类:1. 数据传送指令,70,一、,内部传送指令,:,MOV A,,,Rn,;,ARn,,,Rn=R,0,R,7,MOV A,,,direct,;,A(direct),,,MOV A, Ri,;,A (Ri),,,Ri=R,0,、,R,1,MOV A, #data,;,A d,,,例子:,MOV A,,,R1,;,MOV A,30H,;,MOV A,R1,;,MOV A,#34H,;,1,) 以累加器为目的操作数的指令,一、内部传送指令:MOV A,Rn ;ARn,Rn=,71,MOV Rn,,,direct,;,Rn (n),MOV Rn,,,#data,;,Rn data,MOV Rn,,,A,;,Rn ,(,A,),2,)以寄存器,Rn,为目的操作的指令,MOV Rn, direct ;Rn (n)2)以寄存器R,72,MOV direct,Rn ;direct,Rn,MOV direct,,,A ;,MOV direct,,,Ri ;,MOV direct,,,#data ;,MOV direct,,,direct2 ;,例:,MOV 20H,R1,MOV 20H,A,MOV 20H,30H,MOV 20H,R1,MOV 20H,#34H,(,3,)以直接地址为目的操作数的指令,MOV direct,Rn ;directRn例:(3)以,73,MOV Ri,,,A,; (,Ri,)(,A,),,MOV Ri,,,direct,; (,Ri,)(,direct,) ,,MOV Ri,,,#data,; (,Ri,),data,,,例:,MOV R0,A,MOV R1,20H,MOV R0,#34H,(,4,)以间接地址为目的操作数的指令,MOV Ri, A; (Ri)(A),例: (4)以间,74,(,5,)十六位数的传递指令,MOV DPTR,,,#data16,(5)十六位数的传递指令 MOV DPTR,#data16,75,例,3-2-1,:,顺序执行下列指令序列,求每一步执行结果,。,MOV A,,,#30H,MOV 4FH,,,A,MOV R0,,,#20H,MOV R0,,,4FH,MOV 21H,,,20H,习题,1,:,用两种寻址方式实现,将片内,RAM 60H,单元的数据传送给累加器,A,。,解:,MOV A,#60H,MOV R0,,,#60H MOV A,,,R0,;,A= 30H,;,(4FH)= 30H,;,R0= 20H,;,(20H)= 30H,;,(21H)= 30H,MOV R0,,,60H MOV A,,,R0,解:,MOV A,60H,A=60H,A=32H,A=58H,A=32H,例3-2-1:顺序执行下列指令序列,求每一步执行结果。MOV,76,习题,2,:,综合练习:,给出每条指令执行后的结果,MOV 23H,#30H,MOV 12H,#34H,MOV R0,#23H,MOV R7,#22H,MOV R1,12H,MOV A,R0,MOV 34H,R1,MOV 45H,34H,MOV DPTR,#6712H,MOV 12H,DPH,MOV R0,DPL,MOV A,R0,习题2:综合练习: 给出每条指令执行后的结果 MOV 23H,77,二、 外部传送指令,实现片外数据存储器和,A,累加器之间的数据传送。,指令格式:,MOVX,目的操作数,源操作数,寻址方式:片外数据存储器用寄存器间址方式。,1. DPTR,作,16,位数据,指针,寻址,64KB,片外,RAM,空间,MOVX A,,,DPTR,;,A(DPTR),读数据,MOVX DPTR,,,A,;,(DPTR)A,写数据,2. Ri,作,8,位数据,指针,寻址,256B,片外,RAM,空间,MOVXA,,,Ri,;,A(Ri),读数据,MOVXRi,,,A,;,(Ri)A,写数据,二、 外部传送指令实现片外数据存储器和A累加器之间的数据传,78,3,、使用时应当首先将要读或写的地址送入,DPTR,或,Ri,中,然后再用读写命令。,小结,:,1,、在,51,中,与外部存储器,RAM,打交道的只可以是,A,累加器。所有需要送入外部,RAM,的数据必需要通过,A,送去,而所有要读入的外部,RAM,中的数据也必需通过,A,读入。,在此我们可以看出内外部,RAM,的区别了,内部,RAM,间可以直接进行数据的传递,而外部则不行,比如,要将外部,RAM,中某一单元(设为,0100H,单元的数据)送入另一个单元(设为,0200H,单元),也必须先将,0100H,单元中的内容读入,A,,然后再送到,0200H,单元中去。,2,、要读或写外部的,RAM,,当然也必须要知道,RAM,的地址,在后两条指令中,地址是被直接放在,DPTR,中的。而前两条指令,由于,Ri,(即,R0,或,R1,)只是一个,8,位的寄存器,所以只提供低,8,位地址。因为有时扩展的外部,RAM,的数量比较少,少于或等于,256,个,就只需要提供,8,位地址就够了。,3、使用时应当首先将要读或写的地址送入DPTR或Ri中,然后,79,三、,交换指令,实现片内,RAM,区的数据双向传送。,1.,字节交换指令,XCH A,,,Rn,;,A,Rn,XCH A,,,Ri,;,A,(Ri),XCH A,,,direct,;,A,(n),习题,4,:,将片内,RAM60H,单元与,61H,单元的数据交换。,例:,设,A= 29H,,执行指令,XCH A,,,2AH,后,,A=,?,(2AH)=,?,38H,29H,XCH 60H,,,61H ,对吗?,29 H,三、 交换指令 实现片内RAM区的数据双向传送。1.,80,2.,半字节交换指令,XCHD A,,,Ri,;,A,0,3,(Ri),0,3,SWAP A,;,A,4,7,A,0,3,是将,A,中的值的高、低,4,位进行交换。,例:(,A,),=39H,,则执行,SWAP A,之后,,A,中的值就是,93H,。,2. 半字节交换指令XCHD A,Ri ;A03 (,81,例,7,已知(,A,),56H,,(,R0,),20H,,(,20H,),78H,,(,10H,),18H,,(,R4,),8AH,;,单独执行指令:,XCH A,,,10H, XCH A,,,R4, XCH A,,,R0,指令执行后: (,A,),=18H,, (,10H,),=56H,;,(,A,),=8AH,, (,R4,),=56H,;,(,A,),=78H,, (,R0,),=20H,,(,R0,),=,(,20H,),=56H,。,例,8,已知,(A),7AH,,(,R1,),48H,,(,48H,),0DH,;,执行指令,:,XCHD,A,, ,R1,指令执行后:,(,A,),7DH,,(,R1,),48H,,,(R1),(,48H,),0AH,。,例7已知(A)56H,(R0)20H,(20H)78,82,四、堆栈操作指令,入栈指令:,PUSH n,;,SP,SP+1,,,(SP),(n),出栈指令:,POP n,;,(n),(SP),,,SP,SP-1,堆栈操作,PUSH direct,POP direct,第一条指令称之为推入,就是将,direct,中的内容送入堆栈中,,第二条指令称之为弹出,就是将堆栈中的内容送回到,direct,中。,推入指令的执行过程是,首先将,SP,中的值加,1,,然后把,SP,中的值当作地址,将,direct,中的值送进以,SP,中的值为地址的,RAM,单元中。,四、堆栈操作指令 入栈指令:PUSH n ;SP,83,例,3,5,已知当前(,SP,),38H,,(,10H,),70H,;,该指令的执行过程如图,3,9,所示:,例35已知当前(SP)38H,(10H)70H;该,84,指令的执行过程如图,3,10,所示:,例:(,SP,),=40H,,(,40H,),=68H,,(,A,),=20H,POP,ACC,指令执行后;(,SP,),3FH,,(,40H,),68H,,(,A,),68H,指令的执行过程如图310所示:例:(SP)=40H,(40,85,例:,MOV SP,,,#5FH,MOV A,,,#100,MOV B,,,#20,PUSH ACC,PUSH B,POP B,POP ACC,这有什么意义呢?,ACC,中的值本来就是,100,,,B,中的值本来就是,20,,是的,在本例中,的确没有意义,但在实际工作中,则在,PUSH B,后往往要执行其他指令,而且这些指令会把,A,中的值,,B,中的值改掉,所以在程序的结束,如果我们要把,A,和,B,中的值恢复原值,那么这些指令就有意义了。,例:这有什么意义呢?,86,五、 查表指令,实现从程序存储器读取数据到,A,累加器,,,只能使用变址间接寻址方式,。,多用于查常数表程序,可直接求取常数表中的函数值。,1,DPTR,为基址寄存器,MOVCA,,,A+DPTR,;,A,(A+DPTR),查表范围为,64KB,程序存储器任意空间,称为远程查表指令 。,2,PC,为基址寄存器,MOVCA,,,A+PC,;,PC,(,PC,),+1,,,A,(A+PC),常数表只能在查表指令后,256B,范围内。,五、 查表指令 实现从程序存储器读取数据到A累加器,只,87,算术运算指令,状态标志,MCS-51,的程序状态字寄存器,PSW,为标志寄存器。,算术运算指令 状态标志 MCS-51 的程序状态字寄存器 P,88,1,标志位,(,自动设置状态,),1,),Cy,:进位标志位,保存运算后最高位的进位,/,借位状态,当有进位,/,借位,,Cy=1,,否则,Cy=0,。,2,),AC,:辅助进位标志位,保存低半字节的进位,/,借位状态,当,D,3,产生进位,/,借位,,AC=1,,否则,AC=0,。用于十进制调整。,3,),OV,:溢出标志位,OV=Cy,7,Cy,6,,补码运算产生溢出,OV=1,,否则,OV=0,。,4,),P,:奇偶标志位,反映累加器,A,中数据的奇偶性。当,1,的个数为奇数,,P=1,,否则,P=0,。,1标志位(自动设置状态)1)Cy:进位标志位,89,2,用户选择位,(,编程设置状态,),1,),F0,:用户自定义标志位。,2,),RS1,、,RS0,: 工作寄存器区选择位。复位时,,PSW=00H,RS1 RS0,工作寄存器,0 0 0,区,0 1 1,区,1 0 2,区,1 1 3,区,例:复位后,设置使用工作寄存器,2,区,其余标志位不变。,解:,MOV PSW,,,#,18H,2用户选择位(编程设置状态)1)F0:用户自定义标志位。,90,1,)不带进位加法:,ADD A,,源操作数,ADD A,#DATA ;,例:,ADD A,,,#10H,ADD A,direct ;,例:,ADD A,,,10H,ADD A,Rn ;,例:,ADD A,,,R7,ADD A,Ri ;,例:,ADD A,,,R0,算术运算指令,完成片内,RAM,和,A,中数据的加减乘除运算,。,一加减指令,1.,加法指令,例:,MOV A,,,#30H,ADD A,,,#10H,1)不带进位加法:ADD A,源操作数算术运算指令完成,91,ADD,影响,Cy,、,OV,、,AC,、,P,0011 1011,+,0011 1011,0111 0110,ADD影响Cy、OV、AC、P 0011 1011,92,2),带进位加法:,ADDC A,,源操作数,ADDC A,,,Rn,ADDC A,direct,ADDC A,Ri,ADDC A,#data,用途:将,A,中的值和其后面的值相加,并且加上进位位,C,中的值。,带进位加法指令,ADDC,用于多字节运算,2)带进位加法: ADDC A,源操作数ADDC A,,93,1001 1010,1110 0011,+,0,1,0111 1101,ADDC,影响,Cy,、,OV,、,AC,、,P,1001 1010 ADDC 影响Cy、OV、AC、,94,带进位加法指令,ADDC,用于多字节运算,例:,设双字节数,X,存在片内,RAM 41H,、,40H,单元,,Y,存在,42H,、,43H,单元,编程求,Z=X+Y,,并存入片内,RAM,单元,44H,、,45H,、,46H,。,ADDS,:,MOV A,,,40H,ADD A,,,42H,MOV 44H,,,A,MOV A,,,41H,ADDC A,,,43H,MOV 45H,,,A,MOV A,,,#0,ADDC A,,,#0,MOV 46H,,,A,RET,;,取被加数低字节,;加上加数低字节,;保存和的低字节,;取被加数高字节,;加上加数高字节,;保存和的高字节,;求高字节进位,;子程序结束,带进位加法指令ADDC用于多字节运算例:设双字节数 X 存在,95,十进制加法指令:,ADD A,,源操作数,DAA,带进位十进制加法指令:,ADDC A,,源操作数,DA A,BCD,调整指令:,DAA,; 对,A,中加法结果进行调整,注意,:,这条指令是必须跟在加法指令之后,.,调整的实质是将十六进制的加法运算转换成十进制,十进制加法指令:BCD调整指令:注意:这条指令是必须跟在加,96,2,减法指令,SUBB A,,,源操作数,;,带借位减法指令,SUBB A,,,Rn,SUBB A,direct,SUBB A,Ri,SUBB A,#data,说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将,CY,清零即可。,2减法指令SUBB A,源操作数;带借位减法指令S,97,带借位的减法指令影响,PSW,中的标志位。,两个数相减时:, 如果第,7,位有借位,则,Cy,1,,否则,Cy,0,;, 如果第,3,位有借位,则,AC,1,,否则,AC,0,;, 相减的差存放在,A,中,如果结果中,“,1,”,的个数为奇数,则,P,1,,否则,P,0,。,带借位的减法指令影响PSW中的标志位。,98,二、,增量、减量指令,INC,单操作数,注意:,没有指令 DEC DPTR,可用指令 DEC DPL 代替,例如:,INC A,INC Rn,INC direct,INC Ri,INC DPTR,DEC A,DEC Rn,DEC direct,DEC Ri,加,1,指令除影响奇偶校验位,P,外,不影响程序状态字,PSW,中的其它标志位。减,“,1,”,指令除,DEC A,影响奇偶标志,P,外,其余指令不影响,PSW,中的标志位;,二、 增量、减量指令INC 单操作数注意:没有指令,99,例:(,A,),=12H,,(,R0,),=33H,,(,21H,),=32H,,(,34H,),=22H,,,DPTR=1234H,。执行下面的指令:,INC A,(,A,),=13H,INC R2,(,R0,),=34H,INC 21H,(,21H,),=33H,INC R0,(,34H,),=23H,INC DPTR,(,DPTR,),=1235H,INC,用途很简单,就是将后面目标中的值加,1,说明:从结果上看,INC A,和,ADD A,,,#1,差不多,但,INC A,是单字节,单周期指令,而,ADD #1,则是双字节,双周期指令,而且,INC A,不会影响,PSW,位,如(,A,),=0FFH,,,INC A,后(,A,),=00H,,而,CY,依然保持不变。如果是,ADD A,,,#1,,则(,A,),=00H,,而,CY,一定是,1,。因此加,1,指令并不适合做加法,事实上它主要是用来做计数、地址增加等用途。另外,加法类指令都是以,A,为核心的,其中一个数必须放在,A,中,而运算结果也必须放在,A,中,而加,1,类指令的对象则广泛得多,可以是寄存器、内存地址、间址寻址的地址等等。,例:(A)=12H,(R0)=33H,(21H)=32H,(,100,综合练习:,MOV A,,,#12H,MOV R0,,,#24H,MOV 21H,,,#56H,ADD A,,,#12H,MOV DPTR,,,#4316H,ADD A,,,DPH,ADD A,,,R0,CLR C,SUBB A,,,DPL,SUBB A,,,#25H,INC A,SETB C,ADDC A,,,21H,INC R0,SUBB A,,,R0,MOV 24H,,,#16H,CLR C,ADD A,,,R0,综合练习:CLR C,101,三、乘除指令,MUL AB,;,BAAB,,,Cy0,,,;当积高字节,B=0,,,OV0,;,B0,,则,OV1,例:(,A,),=4EH,,(,B,),=5DH,,,执行指令,MUL AB,后,,乘积是,1C56H,,所以在,B,中放的是,1CH,,而,A,中放的则是,56H,。,此指令的功能是将,A,
展开阅读全文