资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,一个机器周期等于是12个振荡周期,当晶振为12MHz时,那么一个机器周期是?,1,复位电路工作原理,手动复位,2,P0口内部电路,P0口某一位的结构图如以下图所示,它由一个输出锁存器、两个三态输入缓冲器、一个转换开关MUX、一个输出驱动电路(T1和T2)和一个与门及一个非门组成。,3,(1)P0口用作通用I/O口,MUX与锁存器的Q端接通,与门输出为0,T1截止,输出驱动级就工作在需外接上拉电阻的漏极开路方式。,P0口用作输出口,CPU在执行输出指令时,内部数据总线的数据在“写锁存器信号的作用下,由D端进入锁存器,取反后出现在Q端,再经过T2反向,那么P0.X引脚上的数据就是内部总线的数据。由于T2为漏极开路输出,故此时必须外接上拉电阻。,4,P0口用作输入口,数据可以读自端口的锁存器,也可以读自端口的引脚,这要看输入操作执行的是“读锁存器指令还是“读引脚指令。,方式1:读引脚。CPU在执行“MOV类输入指令时(如:MOV A,P0),内部产生的操作信号是“读引脚。P0.X引脚上的数据经过缓冲器2读入到内部总线。注意,在读引脚时,必须先向电路中的锁存器写入1,使T2截止,P0.X引脚处于悬浮状态,可作为高阻抗输入。,5,方式2:读锁存器。,CPU在执行“读-改-写类输入指令时(如:ANL P0,A),内部产生的操作信号是“读锁存器,锁存器中的数据经过缓冲器1送到内部总线,然后与A的内容进行逻辑“与,结果送回P0的端口锁存器并出现在引脚。除了MOV类指令外,其他的读口操作指令都属于这种情况。,6,3P0口小结,P0口既可作地址/数据总线使用,也可作通用I/O口使用。当P0口作地址/数据总线使用时,就不能再作通用I/O口使用了。,P0口作输出口使用时,输出级属漏极开路,必须外接上拉电阻,才有高电平输出。,P0口作输入口读引脚时,应先向锁存器写1,使T2截止,不影响输入电平。,漏极开路的8位准双向I/O口,每位能驱动8个LS型TTL负载。,7,P1口的内部电路,P1口是唯一的单功能口,仅能作为通用I/O口使用。由于在其输出端接有上拉电阻,故可以直接输出而无需外接上拉电阻。,同P0口一样,当作输入口时,必须先向锁存器写“1,使场效应管T截止。,每位能驱动4个LS型TTL负载。,8,P2口内部电路,图中的控制信号C决定转换开关MUX的位置:当C=0时,MUX拨向下方,P2口为通用I/O口;当控制信号C=1时,MUX拨向上方,P2口作为地址总线使用。,在实际应用中,P2口通常作为高8位地址总线使用。,每位能驱动4个LS型TTL负载。,9,P3口内部电路,P3口用作通用I/O口时,第二输出功能信号W=1,P3口的每一位都可定义为输入或输出,其工作原理同P1口类似。,在真正的应用电路中,P3口的第二功能显得更为重要,。,每位能驱动4个LS型TTL负载。,10,第三讲,第三章 MCS-51单片机指令系统,要点:,MCS-单片机指令系统概述,MCS-单片机寻址方式,MCS-汇编语言指令系统,难点:,寻址方式,指令应用,11,第三讲,3.1 概述,指令:,是CPU根据人的意图执行某种操作的命令。,程序设计语言:是实现人机交换信息的根本工具,,分为机器语言、汇编语言和高级语言。,机器语言:,用二进制编码表示每条指令,是计算,机能直接识别和执行的语言。,汇编语言:,是用助记符、符号和数字等表示指令的程序设计语言。它与机器语言指令一一对应。,12,指令系统,一种单片机的全部指令集合称为指令系统。,指令系统表达了单片机的性能,是应用单片机程序设计的根底,13,3.1.1 指令格式,89C51汇编语言指令格式,标号:操作码 目的操作数,源操作数;注释,汇编语言指令对应的二进制代码格式,单字节指令,49条,双字节指令,46条,三字节指令,19条,114条,14,单字节指令 49条,操作码和操作数包含在一个字节中。,1、无操作数的单字节指令,inc dptr ;指令码为A3H,2、含有操作数存放器编码的单字节指令,MOV A,Rn ;令码为11101xxx,;其中xxx为相应的存放,;器号的n值。,15,双字节指令 46条,用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址,mov a,#data,把第二个字节取出来放入第一个字节的累加器a中。指令码:“74H data,16,三字节指令 16条,一个字节操作码,两个字节操作数,mov dptr,#data16;16位数据,mov direct,#data;8位地址和数据,cjne a,#data,rel;8位数据和地址,lcall addr16 ;16位地址,17,助记符意义,助记符,意义,助记符,意义,MOV,数据传输,MUL,乘法,MOVC,程序存储器传A,DIV,除法,MOVX,外部数据传输,DA,十进制调整,PUSH,压入堆栈,AJMP,无条件转移,POP,堆栈弹出,LJMP,长转移,XCH,数据交换,SJMP,短转移,XCHD,交换低4位,JMP,相对转移,SWAP,高低半字节交换,JZ,判A为0转移,ANL,与运算,JNZ,判A为非0转移,ORL,或运算,JC,判Cy为1转移,XRL,异或运算,JNC,判Cy为0转移,18,助记符意义,助记符,意义,助记符,意义,SETB,置位,JB,直接位为1转移,CLR,清零,JNB,直接位为0转移,CPL,取反,JBC,直位为1转移,并清该位,RL,循环左移,CJNE,比较不相等转移,RLC,带进位循环左移,DJNZ,减1不为0转,RR,循环右移,ACALL,绝对调用子程序,RRC,带进位循环右移,LCALL,长调用子程序,ADD,加法,RET,子程序返回,ADDC,带进位加法,RETI,中断子程序返回,SUBB,带进位减法,NOP,空操作,INC,加1,DEC,减1,19,寻址方式中常用符号注释,Rn,表示当前选定寄存器组的工作寄存器R0R7,n=07,Ri,表示作为间接寻址的地址指针R0R,i=0,1,#data,表示8位立即数,即00H0FFH。,#data16,表示16位立即数,即0000H0FFFFH。,Direct,8位直接地址,可为片内RAM区某单元或某专用功能寄存器的地址。,Addr11,11位地址,可表示大于2KB范围内寻址,用于ACALL和AJMP指令中。,Addr16,16位地址,表示大于64KB范围内寻址,用于LCALL和LJMP指令中。,Rel,带符号8位地址偏移量(-128+127),用于SJMP和条件转移指令。,Bit,片内RAM或SFR的直接寻址位地址。,间接寻址方式中,表示间接寻址的符号。,加在位地址之前,表示对该位先取反再参与操作。,(X),X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容。,(X),由X间接寻址的单元的内容,即X指向的地址单元中的内容。,$,当前指令所在地址,指令中数据的传送方向,将箭头右边的内容送入箭头左边的单元。,20,3.2 寻址方式,根本概念,寻址就是寻找指令中操作数或操作数所在地址。,寻址方式就是找到存放操作数的地址,并把操作数提取出来的方法,即寻找操作数或者是操作数地址的方法。,8051单片机寻址方式共有7种:,存放器寻址、直接寻址、立即数寻址,存放器间接寻址、变址寻址、相对寻址,位寻址。,21,存放器寻址 MOV A,R1 ;AR1,直接寻址 MOV A,81H ;A81H,MOV A,SP ;ASP,立即数寻址 MOV DPTR,#1638H ;DPH16,DPL 38H,存放器间接寻址 MOV RO,#30H ;R0(30H),MOV A,R0 ;A(R0)即A(30H),变址寻址 MOV DPTR,#0500H ;DPTR 500H,MOV A,#03H ;A3,MOVC A,A+DPTR ;A(500H+3),相对寻址 SJMP 20H ;转跳至:PCPC+20H,位寻址 MOV C,7FH ;Cy(7FH),MOV C,ACC.7 ;CyACC.7,22,3.3数据传输与交换,23,查表指令,MOVC A,A+DPTR,MOVC A,A+PC,2000H,0,2001H,1,2002H,4,2003H,9,2004H,16,2005H,25,2006H,36,2007H,49,2008H,64,2009H,81,MOV A,#6,;待查项,MOV DPTR,#2000H,;DPTR为表头,MOVC A,A+DPTR,;A结果,24,交换指令,低4位,助记符格式,相应操作,XCH A,Rn,A,Rn,XCH A,direct,A,(direct),XCH A,Ri,A,(Ri),XCHD A,Ri,A,3-0,(Ri),3-0,SWAP A,A,3-0,A,7-4,25,堆栈指令2条,助记符格式,相应操作,PUSH direct,SP SP+1,(SP)(direct),POP direct,direct (SP),SP SP-1,注意:,进栈,堆栈指针SP先加1,并指向栈顶的上一个空单元,然后再将直接地址(direct)寻址的单元内容压入当前SP所指示的堆栈单元中。该操作不影响标志位P。,出栈,先将堆栈指针(SP)所指示的内部RAM(栈顶)单元中内容送入由直接地址寻址的单元中,然后再将栈指针(SP)减1并回送SP。该操作不影响标志位P。,26,单片机堆栈的特点,需设堆栈指针,如不重置SP,复位后为70H;,堆栈操作遵循“先进后出或“后进先出的原那么;,堆栈操作必须是字节型,且只能直接寻址;,堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现场。,如果系统中设有中断,那么必须设定堆栈指针,因为中断效劳程序是自动将中断效劳程序地址送入堆栈的。,27,算术运算指令,28,算术运算指令,29,逻辑运算及移位指令,30,逻辑运算及移位指令,31,逻辑运算及移位指令,注意:移位指令只与累加器A有关,32,NOP ;(PC)(PC)+1,空操作指令是一条单字节单周期指令。它控制 CPU不做任何操作,仅仅是消耗这条指令执行所需要的一个机器周期的时间,不影响任何标志位,故称为空操作指令。NOP指令在设计延时程序、拼凑精确延时时间及在程序等待或修改程序等场合是很有用的。,关于空操作指令,33,【例25】利用DJNZ指令和NOP指令编写一循环程序,实现延时1ms(晶振频率为12MHz)。,解:程序如下:,DELAY:MOVA,#0AH;1s,LOOP:MOVR2,#30H;1s,DJNZR2,$;248s,DJNZR1,LOOP ;1s(1+248+1)10,NOP ;1s,NOP;1s,NOP;1s,NOP;1s,NOP;1s,RET;2s,总的延时时间为:1+(1+248+1)10+7=998s,假设再加上调用本子程序的调用指令所用的时间2s共1000s,即1ms。,34,返回指令返回指令共两条:一条是对应两条调用指令的子程序返回指令RET,另一条是对应从中断效劳程序的返回指令RETI。,35,位操作指令,1、位传输:,MOV C,bit,MOV bit,C,2、位逻辑运算:,ANL C,bit,ORL C,bit,3、位清0指令:,CLR bit,4、位置1指令:,SETB bit,5、位取反指令:,CPL bit,6、位条件转移:,JB bit,rel,JNC rel,36,作用:,伪指令不要求计算机做任何操作;,也没有对应的机器码,不产生目标程序;,不影响程序的执行;,功能:,帮助进行汇编的一些指令,它主要用来指定程序或数据的起始位置,给出一些连续存放数据的地址或为中间运算结果保存一局部存储空间以及表示源程序结束等等。,不同版本的汇编语言,伪指令的符号和含义可能有所不同。,伪指令,37,1、启始指令,格式:符号:ORG 地址(十六进制表示),例:,ORG 2000H,START:MOV A,#7FH,38,2、字节定义,格式:标号:DB 项或项表,例:,ORG 200
展开阅读全文