单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/7/8,#,单片机概述,1.1 单片机的概念,控制器,运算器,存储器,输入/输出设备,CPU,单片机,电子管,晶体管,集成电路,大规模、超大规模集成电路,甚大规模集成电路,发展方向:,1.高速度、大容量、高性能,2.体积小、价格廉、稳定可靠,单片机概述1.1 单片机的概念控制器运算器存储器输入,1,单片机概述,1.1 单片机的概念,1.1.1 单片机的名称,一片芯片相当于一个计算机系统,单片机,Single Chip MicroComputer,微控制器,Micro Control Unit,国内通称,国际通称,嵌入式,微控制器,Embed,单片机概述1.1 单片机的概念1.1.1 单片机的,2,单片机概述,1.1 单片机的概念,1.1.1 单片机的名称,1.1.2 通用单片机和专用单片机,ASIC,1.1.3 单片机和单片机系统,(1)单片机:芯片本身,(2)单片机系统:以单片机为中心组成的一定功能的,计算机系统。,1.1.5 单片机的程序设计语言和软件,(1)单片机的程序设计语言:,机器语言、,汇编语言、,C,语言,(,2,)单片机的软件,:,编程软件、,仿真软件、,编译软件、,写入软件、,监控软件。,1.1.4 单片机的应用系统和开发系统,(1)应用系统,(2)开发系统:仿真器,单片机概述1.1 单片机的概念1.1.1 单片机的,3,单片机概述,1.1 单片机的概念,1.2 单片机的发展,1.2.1 单片机的发展概述,1946 第一台计算机诞生,1971 第一个微处理器诞生,1976,MCS-48(8,位),1980,MCS-51(8,位),80年代末,Motorola 680X,Zilog Z-8,Rockwell 650X,1983,MCS-96(16,位),当前:,(1),MCS-51、MCS-96,系列发展。,(2),PIC,(Microchip,公司,),(3),DSP,(,公司,),单片机概述1.1 单片机的概念1.2 单片机的发展,4,单片机概述,1.2 单片机的发展,1.2.1 单片机的发展概述,1.2.2,MCS-51,单片机系列,1.2.3,80C51,单片机系列,80C51,是,MCS-51,系列单片机的发展:性能、功耗,单片机概述1.2 单片机的发展1.2.1 单片机的,5,单片机概述,1.1 单片机的概念,1.2 单片机的发展,1.3 单片机的应用,1.3.1 单片机应用的特点,1. 控制系统的,在线,应用,(1) 控制系统中的离线应用。,(2) 控制系统中的在线应用。,2. 软硬件结合,3. 应用现场环境恶劣,4. 应用的广泛性极其重要意义,民用级 0,+70,工业级,-40,+85,军用级,-65,+125,单片机概述1.1 单片机的概念1.2 单片机的发展,6,1.3 单片机的应用,1.3.1 单片机应用的特点,1.3.2 单片机的应用领域,1.,工业自动化方面,2.,仪器仪表方面,3.,家用电器方面,4.,信息和通信产品方面,5.,军事装备方面,1.3 单片机的应用1.3.1 单片机应用的特点1.3.,7,单片机芯片的硬件结构,2.1 MCS-51,单片机的逻辑结构及信号引脚,2.1.1 MCS-51,单片机结构框图,2.1.2 MCS-51,单片机芯片内部逻辑结构,中央处理器,(CPU),运算器,控制器,:,ALU(,算术逻辑单元,),、,ACC(,累加器,),、,B,寄存器,、,程序状态字,、,暂存寄存器,:,PC(,程序计数器,),、,PC,加,1,寄存器,、,指令寄存器,、,指令译码器,、,定时与控制电路,单片机芯片的硬件结构2.1 MCS-51单片机的逻辑结构及信,8,2.1.2 MCS-51,单片机芯片内部逻辑结构,中央处理器,(CPU),2.,内部数据寄存器,RAM(128*8),、,RAM,地址寄存器,3.,内部程序寄存器,ROM(4K*8),、,程序地址寄存器,4.,定时器,/,计数器,2,个,16,位的定时器,/,计数器,5.,并行,I/O,口,4,个,8,位的,I/O,口(,P,0,、,P,1,、,P,2,、,P,3,),2.1.2 MCS-51单片机芯片内部逻辑结构中央处理器(C,9,2.1.2 MCS-51,单片机芯片内部逻辑结构,6.,串行口,7.,中断控制系统,5,个中断源,:外中断,2,个、定时,/,计数中断,2,个、串行中断,1,个。,8.,时钟电路,9.,位处理器,10.,总线,2.1.2 MCS-51单片机芯片内部逻辑结构6. 串行口,10,2.1 MCS-51,单片机的逻辑结构及信号引脚,2.1.1 MCS-51,单片机结构框图,2.1.2 MCS-51,单片机芯片内部逻辑结构,2.1.3 MCS-51,的信号引脚,40,引脚双列直插式,2.1 MCS-51单片机的逻辑结构及信号引脚2.1.1 M,11,2.1 MCS-51,单片机的逻辑结构及信号引脚,2.1.1 MCS-51,单片机结构框图,2.1.2 MCS-51,单片机芯片内部逻辑结构,2.1.3 MCS-51,的信号引脚,40,引脚双列直插式,1.,信号引脚介绍,输入,/,输出口线,P,0.0,P,0.7,P,0,口,8,位双向口线,P,1.0,P,1.7,P,1,口,8,位双向口线,P,2.0,P,2.7,P,2,口,8,位双向口线,P,3.0,P,3.7,P,3,口,8,位双向口线,ALE,地址锁存控制信号,(1) P,0,口输出的低,8,位地址锁存控制信号,(2),作为外部时钟或外部定时脉冲,2.1 MCS-51单片机的逻辑结构及信号引脚2.1.1 M,12,2.1.3 MCS-51,的信号引脚,1.,信号引脚介绍,PSEN,外部程序存储器读选通信号,EA,访问程序存储器控制信号,0,:仅访问外部程序存储器,1,:从内部程序存储器开始访问,并可延续至外部程序存储器。,RST,复位信号:连续,2,个周期以上的高电平。,XTAL,1,、,XTAL,2,外接晶体引线端,V,SS,地线,V,CC,+5V,电源,2.1.3 MCS-51的信号引脚1. 信号引脚介绍 PSE,13,2.1.3 MCS-51,的信号引脚,1.,信号引脚介绍,2.,信号引脚的第二功能,P,3,口线的第二功能,外部,RAM,读选通,RD,P,3.7,外部,RAM,写选通,WR,P,3.6,定时器,/,计数器,1,计数输入,T,1,P,3.5,定时器,/,计数器,0,计数输入,T,0,P,3.4,外部中断,1,申请,INT,1,P,3.3,外部中断,0,申请,INT,0,P,3.2,串行数据发送,TXD,P,3.1,串行数据接受,RXD,P,3.0,信号名称,第二功能,口线,2.1.3 MCS-51的信号引脚1. 信号引脚介绍2. 信,14,2.1.3 MCS-51,的信号引脚,1.,信号引脚介绍,2.,信号引脚的第二功能,P,3,口线的第二功能,EPROM,存储器程序固化所需要的信号,(1),编程脉冲:,30,引脚,(ALE/PROG),(2),编程电压:,31,引脚,(EA/V,PP,),备用电源引入,9,引脚,(RST/VPD),2.1.3 MCS-51的信号引脚1. 信号引脚介绍2. 信,15,2,单片机芯片的硬件结构,2.1 MCS-51,单片机的逻辑结构及信号引脚,2.2 MCS-51,单片机的内部存储器,2.2.1,内部数据存储器低,128,单元,以,80C51,为例,数据存储器,程序存储器,低,128,单元,(,单元地址,00H-7FH),高,128,单元,(,单元地址,80H-FFH),1.,通用寄存器区,(00H-1FH),(1),分成四组,0,1,2,3,,每组,8,个寄存器,(R,7,-R,0,),每个寄存器为,8,位。,(,2,),任意时刻,,,CPU,只能使用其中的一组寄存器。,(,3,),运用通用寄存器,,可以简化程序设计,提高运行速度。,2 单片机芯片的硬件结构2.1 MCS-51单片机的逻辑结,16,2.2.1,内部数据存储器低,128,单元,1.,通用寄存器区,(00H-1FH),2.2 MCS-51,单片机的内部存储器,2,.,位寻址区,(20H-2FH),3,.,用户,RAM,区,(30H-7FH),2.2.2,内部数据存储器高,128,单元,专用寄存器,(,SFR,),、特殊功能寄存器,1.,专用寄存器简介:,22,个,可寻址,21,个。,(1),程序计数器,(PC,):,16,位,不可寻址。,(2),累加器,A(,或,ACC,):,8,位,寻址地址,0E0H,。,(3) B,寄存器:,8,位,寻址地址,0F0H,。,(4),程序状态字,(PSW,):,8,位,寻址地址,0D0H,。,2.2.1 内部数据存储器低128单元1. 通用寄存器区 (,17,2.2.2,内部数据存储器高,128,单元,1.,专用寄存器简介,(4),程序状态字,(PSW,):,8,位,寻址地址,0D0H,。,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,CY:,进位标志位。,AC:,辅助进位标志位。,F0:,用户标志位。,RS,1,和,RS,0,:,寄存器组选择位。,OV:,溢出标志位。,P:,奇偶标志位。,(5),数据指针,(DPTR,):,16,位,寻址地址,82H(DPL),,,83H(DPH),。,2.2.2 内部数据存储器高128单元1. 专用寄存器简介(,18,2.2.2,内部数据存储器高,128,单元,1.,专用寄存器简介,2.,专用寄存器的,字节寻址,(,21,个),3.,专用寄存器的,位寻址,(1) 21,个专用寄存器不连续分布在内部,RAM,的高,128,个单元,空余单元不能使用。,(2),程序计数器,(PC),不可寻址。,(3),对专用寄存器采用直接寻址方式,指令中使用寄存器符号或寄存器地址。,(1) 11,个专用寄存器可位寻址(,83,个寻址位)。,(2),与内部数据存储器低,128,单元中的位寻址区,(20H-2FH),共同组成数据位存储区。,2.2.2 内部数据存储器高128单元1. 专用寄存器简介2,19,2.2 MCS-51,单片机的内部存储器,2.2.1,内部数据存储器低,128,单元,2.2.2,内部数据存储器高,128,单元,2.2.3 MCS-51,的,堆栈,操作,术语:,出栈,、,入栈,、,栈底,、,栈顶,、,后入先出,1,、堆栈的功能:,保护断点,、,保护现场,2,、堆栈的开辟:,内部数据存储器,3,、堆栈指示器:,SP,(复位后为,07H,初始化为,30H,),4,、堆栈类型:,向上生长型,入栈,SP,30H,或,4AH,或,78H,(1) SP,SP+1,2.2 MCS-51单片机的内部存储器2.2.1 内部数据存,20,2.2 MCS-51,单片机的内部存储器,2.2.1,内部数据存储器低,128,单元,2.2.2,内部数据存储器高,128,单元,2.2.3 MCS-51,的,堆栈,操作,术语:,出栈,、,入栈,、,栈底,、,栈顶,、,后入先出,1,、堆栈的功能:,保护断点,、,保护现场,2,、堆栈的开辟:,内部数据存储器,3,、堆栈指示器:,SP,(,复位后为,07H,初始化为,30H,),4,、堆栈类型:,向上生长型,入栈,30H,或,4AH,或,78H,(1) SP,SP+1,SP,(2),写入数据,出栈,(1),读出数据,(2) SP,SP-1,2.2 MCS-51单片机的内部存储器2.2.1 内部数据存,21,2.2 MCS-51,单片机的内部存储器,2.2.1,内部数据存储器低,128,单元,2.2.2,内部数据存储器高,128,单元,2.2.3 MCS-51,的,堆栈,操作,术语:,出栈,、,入栈,、,栈底,、,栈顶,、,后入先出,1,、堆栈的功能:,保护断点,、,保护现场,2,、堆栈的开辟:,内部数据存储器,3,、堆栈指示器:,SP,(,复位后为,07H,初始化为,30H,),4,、堆栈类型:,向上生长型,入栈,30H,或,4AH,或,78H,(1) SP,SP+1,SP,(2),写入数据,出栈,(1),读出数据,(2) SP,SP-1,、向下生长型,(,8086,),2.2 MCS-51单片机的内部存储器2.2.1 内部数据存,22,2.2 MCS-51,单片机的内部存储器,2.2.1,内部数据存储器低,128,单元,2.2.2,内部数据存储器高,128,单元,2.2.3 MCS-51,的,堆栈,操作,术语:,出栈,、,入栈,、,栈底,、,栈顶,、,后入先出,1,、堆栈的功能:,保护断点,、,保护现场,2,、堆栈的开辟:,内部数据存储器,3,、堆栈指示器:,SP,(复位后为,07H,初始化为,30H,),4,、堆栈类型:,向上生长型,、向下生长型,(,8086,),5,、堆栈使用方式:,自动方式,指令方式,2.2 MCS-51单片机的内部存储器2.2.1 内部数据存,23,2.2 MCS-51,单片机的内部存储器,2.2.4,内部程序存储器,80C51,:,4K ROM,程序存储器,地址,0000H-0FFFH,80C52,:,8K ROM,程序存储器,地址,0000H-,1FFFH,启动单元:,0000H-0002H,中断地址区:,0003H-002AH,2.2.5 MCS-51,单片机系统的存储器结构特点,1.,数据存储器和程序存储器分开,3,.,存储器扩展,16,位地址线,-,寻址范围,64KB,地址,0000H-FFFFH,2,.,内部存储器和外部存储器分开,2.2 MCS-51单片机的内部存储器2.2.4 内部程序,24,单片机(全套)课件,25,2,单片机芯片的硬件结构,2.1 MCS-51,单片机的逻辑结构及信号引脚,2.2 MCS-51,单片机的内部存储器,2.3 MCS-51,单片机并行输入,/,输出口电路,P,0.0,P,0.7,P,0,口,8,位双向口线,P,1.0,P,1.7,P,1,口,8,位双向口线,P,2.0,P,2.7,P,2,口,8,位双向口线,P,3.0,P,3.7,P,3,口,8,位双向口线,2.3.1 P,0,口,字节地址:,80H;,位地址:,80H-87H.,1.,双向,I/0,接口,输出,(,写,),:,加上拉电阻,输入,(,读,),低,8,位地址接口,双向数据接口,2 单片机芯片的硬件结构2.1 MCS-51单片机的逻辑结,26,2.3 MCS-51,单片机并行输入,/,输出口电路,2.3.1 P,0,口,MUX,选择端,V1V2,地址,/,数据推拉式输出,I/O,输出,控制端为,0,,与门封锁,,V2,截止。,外接上拉电阻,传送指令都是读引脚,2.3 MCS-51单片机并行输入/输出口电路2.3.1,27,2.3 MCS-51,单片机并行输入,/,输出口电路,2.3.1 P,0,口,2.3.2 P,1,口,字节地址:,90H;,位地址:,90H-97H.,1.,准双向,I/0,接口(无三态),2,.,输出时不需上拉电阻,2.3.3 P,2,口,字节地址:,0A0H;,位地址:,0A0H-0A7H.,1,.,高,8,位地址接口,2,.,准双向,I/O,接口,3,.,输入时先写,“,1,”,2.3 MCS-51单片机并行输入/输出口电路2.3.1,28,2.3 MCS-51,单片机并行输入,/,输出口电路,2.3.1 P,0,口,2.3.2 P,1,口,2.3.3 P,2,口,2.3.4 P,3,口,字节地址:,0B0H;,位地址:,0B0H-0B7H.,1,.,准双向,I/0,接口,2,.,第二功能信号,2.3.5 MCS-51,口电路小结,1,.,都是双向,I/0,接口,P,0,口可同时用为地址和数据总线,P,2,口可用为地址总线,2,.,P,0,口三态门,,P,1,、,P,2,、,P,3,口准双向口。,3,.,P,3,口,具有第二功能,2.3 MCS-51单片机并行输入/输出口电路2.3.1,29,2,单片机芯片的硬件结构,2.1 MCS-51,单片机的逻辑结构及信号引脚,2.2 MCS-51,单片机的内部存储器,2.3 MCS-51,单片机并行输入,/,输出口电路,2.4 MCS-51,单片机时钟电路与时序,1.,时钟信号,的产生,XTAL,2,XTAL,1,C,2,C,1,组成:,晶体振荡器,、,电容,(,2,个),1.2MHz-12MHz,取,6M,取,30pF,内部时钟电路,2.,引入外部脉冲信号,2.4.1,时钟信号,2 单片机芯片的硬件结构2.1 MCS-51单片机的逻辑结,30,2.4 MCS-51,单片机时钟电路与时序,2.4.1,时钟信号,2.4.2,时序定时单位,振荡脉冲,例,:,12M,、,6M,2,分频,时钟脉冲,6M,、,3M,3,分频,ALE,6,分频,机器周期,1M,、,0.5M,1.,拍节与状态,一个时钟脉冲一个拍节,(S),一个拍节,(S),两个状态,(P),2.,机器周期,1M-1us,0.5M,-2us,3.,指令周期,一个指令周期包含若干个机器周期,2.4.3,典型指令周期,2.4 MCS-51单片机时钟电路与时序2.4.1 时钟信,31,2,单片机芯片的硬件结构,2.5 MCS-51,单片机工作方式,2.5.1,复位方式和复位电路,2.,复位状态,1.,复位信号及其产生,(1),复位信号 :,RST,(2),复位信号产生:,上电复位、按键电平复位、按键脉冲复位,2.5.2,程序执行方式,PC(0000H)-,程序从,0000H,开始执行,2.5.3,掉电保护方式,2.5.4,低功耗方式,2 单片机芯片的硬件结构2.5 MCS-51单片机工作方,32,MCS-51,单片机指令系统,3.1 MCS-51,单片机指令格式和寻址方式,3.1.1,指令系统概述,3.1.2 MCS-51,单片机指令格式,3.1.3 MCS-51,单片机寻址方式,操作码,:规定指令进行什么操作。,操作数,:规定指令操作的对象。,寻址方式,:指定操作数所在单元的方式。(共七种),3,。,寄存器寻址,方式,MOV A,,,R,0,2,。,直接寻址,方式,MOV A,,,3AH,4,。,寄存器间接寻址,方式,MOV A,,,R,0,1,。,立即寻址,方式,MOV A,,,#3AH,MOV DPTR,,,#123AH,MOV A,,,R,1,MCS-51单片机指令系统3.1 MCS-51单片机指令,33,3.1.3 MCS-51,单片机寻址方式,3.1 MCS-51,单片机指令格式和寻址方式,5,。,变址寻址,方式,MOVC A,,,A+DPTR,MOVC A,,,A+PC,JMP A,,,A+DPTR,6,。,位寻址,方式,MOV C,,,3AH,MOV C,,,0F0H,MOV C,,,PSW.5,7,。,相对寻址,方式,目的地址,=,转移指令地址,+,转移指令字节书,+rel,用于转移指令,3.1.3 MCS-51单片机寻址方式3.1 MCS-5,34,3 MCS-51,单片机指令系统,3.1 MCS-51,单片机指令格式和寻址方式,3.2 MCS-51,单片机指令分类介绍,数据传送,类指令(,29,条),算术运算,类指令(,24,条),逻辑运算及移位,类指令(,24,条),控制转移,类指令(,17,条),位操作,类指令(,17,条),3 MCS-51单片机指令系统3.1 MCS-51单片,35,3.2 MCS-51,单片机指令分类介绍,3.2.1,指令格式中符号意义说明,direct,:8,位直接地址。,#data,:8,位立即数。,#data16,:16,位立即数。,DPTR,:,数据指针。,bit,:,内部,RAM,中的直接寻址位。,:,间址寄存器的前缀标志。,/,:,位地址前表示对该位取反。,Rn,:,通用寄存器,R,0,-R,7,。,Ri,:,间接寻址寄存器,R,0,、,R,1,。,3.2 MCS-51单片机指令分类介绍3.2.1 指令格,36,3.2 MCS-51,单片机指令分类介绍,3.2.1,指令格式中符号意义说明,3.2.2,数据传送类指令,1,.,概述,MOV,目的操作数,,,源操作数,目的操作数,:,累加器,A,、通用寄存器,Rn,、直接地址,direct,、,间址寄存器,源操作数,:,累加器,A,、通用寄存器,Rn,、直接地址,direct,、,间址寄存器、,立即数,3.2 MCS-51单片机指令分类介绍3.2.1 指令格,37,3.2 MCS-51,单片机指令分类介绍,3.2.2,数据传送类指令,1,.,概述,2,.,内部,RAM,数据传送指令组,(1),立即数传送指令,MOV A,#data,MOV direct,#data,MOV Rn,#data,MOV Ri,#data,8,位立即数传送指令,MOV DPTR,#data16,16,位立即数传送指令,例:,MOV DPTR,#1234H,DPH: 12H,DPL: 34H,3.2 MCS-51单片机指令分类介绍3.2.2 数据传,38,3.2 MCS-51,单片机指令分类介绍,3.2.2,数据传送类指令,2,.,内部,RAM,数据传送指令组,(1),立即数传送指令,(2),内部,RAM,单元之间的数据传送指令,MOV direct2,,,direct1,MOV direct,,,Rn,MOV Rn,,,direct,MOV direct,,,R,i,MOV R,i,,,direct,例:,MOV P,2,,,R,2,MOV 0A0h,,,R,2,MOV 0D0h,,,R,1,MOV R,5,,,70h,3.2 MCS-51单片机指令分类介绍3.2.2 数据传,39,MOV 0D0h,,,R,1,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,MOV 0D0h,R1位序PSW.7PSW.6PSW.5,40,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,MOV 0D0h,,,R,1,位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW,41,MOV 0D0h,,,R,1,MOV 0D0h,R1,42,3.2 MCS-51,单片机指令分类介绍,3.2.2,数据传送类指令,2,.,内部,RAM,数据传送指令组,(1),立即数传送指令,(2),内部,RAM,单元之间的数据传送指令,(3),通过累加器的数据传送指令,MOV A,,,Rn,MOV Rn,,,A,MOV A,,,direct,MOV direct,,,A,MOV A,,,R,i,MOV R,i,,,A,3.2 MCS-51单片机指令分类介绍3.2.2 数据传,43,3.2.2,数据传送类指令,2,.,内部,RAM,数据传送指令组,3,.,外部,RAM,数据传送指令组,对外部,RAM,单元只能使用,间接寻址,(1),使用,DPTR,进行间接寻址,MOVX A,,,DPTR,MOVX DPTR,,,A,(2),使用,R,i,进行间接寻址,MOVX A,,,R,i,MOVX R,i,,,A,4,.,程序存储器数据传送指令组,MOVC A,,,A+DPTR,MOVC A,,,A+PC,单向,变址寻址,3.2.2 数据传送类指令2. 内部RAM数据传送指令组3.,44,3.2.2,数据传送类指令,5,.,数据交换指令组,(1),整字节交换指令,XCH A,,,Rn,XCH A,,,direct,XCH A,,,R,i,(2),半字节交换指令,XCHD A,,,R,i,低四位数据交换,(3),累加器高低半字节交换指令,SWAP A,6,.,堆栈操作指令组,PUSH direct,POP direct,SP:(SP)+1,,,(SP):(direct),direct,:(,(SP),,,SP:(SP)-1,3.2.2 数据传送类指令5. 数据交换指令组(1) 整字节,45,说明:,只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。,1.,一条指令中不能同时出现两个工作寄存器:,2.,间址寄存器只能使用,R0,、,R1,。,3.,SFR,区只能直接寻址,不能用寄存器间接寻址。,4.,指令表:,非法,指令,:,MOV R0,,,#80H MOV A,,,R0,非法,指令:,MOV A,,,R2,非法,指令:,MOV R1,,,R2MOV R2,,,R0,说明: 只有指令表中的指令才有对应指令代码,计算机才能执行,46,将片内,RAM60H,单元与,61H,单元的数据交换。,XCH 60H,,,61H,查表法求,Y=X,2,。设,X(0X15),在片内,RAM,的,20H,单元中,要求将查表求,Y,,存入片内,RAM21H,单元。,ORG 1000H,SQU:MOV DPTR,,,#TAB,;确定表首地址(基地址),MOV A,,,20H,;取,X,(偏移量),MOVC A,,,A+DPTR,;查表求,Y=X,2,MOV 21H,,,A,;保存,Y,RET,;子程序结束,;其它程序段,ORG 3000H,;常数表格首地址,TAB:DB 00,,,01,,,04,,,09,,,,,225,;平方表,将片内RAM60H单元与61H单元的数据交换。XCH 60,47,3.2 MCS-51,单片机指令分类介绍,3.2.1,指令格式中符号意义说明,3.2.2,数据传送类指令,3.2.3,算术运算类指令,1.,加法指令组(,不带进位,),ADD A,,源操作数,ADD A,,,#data,ADD,A,,,Rn,ADD,A,,,direct,ADD,A,,,R,i,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,3.2 MCS-51单片机指令分类介绍3.2.1 指令格,48,ADD A,,,R2,A=,?,PSW=,?,02H,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,0,0,0,0,0,1,0,1,81H,ADD A,R2A=? PSW=,49,3.2 MCS-51,单片机指令分类介绍,3.2.3,算术运算类指令,1.,加法指令组(,不带进位,),2.,加法指令组(,带进位,),ADDC A,,源操作数,ADDC A,,,#data,ADDC,A,,,Rn,ADDC,A,,,direct,ADDC,A,,,Ri,3.,带借位,减法指令组,SUBB A,,源操作数,SUBB A,,,#data,SUBB,A,,,Rn,SUBB,A,,,direct,SUBB,A,,,Ri,3.2 MCS-51单片机指令分类介绍3.2.3 算术运,50,3.2.3,算术运算类指令,4.,加,1,指令组,INC,A,INC,Rn,INC,direct,INC,R,i,INC,DPTR,不影响程序状态字,PSW,5.,减,1,指令组,DEC,A,DEC,Rn,DEC,direct,DEC,R,i,3.2.3 算术运算类指令4. 加1指令组INC A,51,3.2.3,算术运算类指令,6.,乘除,指令组,(1),乘法指令,MUL AB,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,0,0,0,:,结果,255,奇偶位,MOV A,,,0FH,MOV B,,,0FH,MUL AB,A=,?,PSW=,?,0E1H,00H,3.2.3 算术运算类指令6. 乘除指令组(1) 乘法指令M,52,3.2.3,算术运算类指令,6.,乘除,指令组,(1),乘法指令,(2),除法指令,DIV AB,位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS,1,RS,0,OV,/,P,0,0,1,:,除数为,0(B=0),0,:,其它,奇偶位,A,商;,B,余数,3.2.3 算术运算类指令6. 乘除指令组(1) 乘法指令(,53,3.2.3,算术运算类指令,1.,加法指令组(,不带进位,),2.,加法指令组(,带进位,),3.,带借位,减法指令组,4.,加,1,指令组,5.,减,1,指令组,6.,乘除,指令组,7.,十进制调整,指令,DA A,十进制调整指令原理:,略,MOV A,,,#56H,MOV R5,,,#67H,ADD A,,,R5,DA,A 23H,CY 1,3.2.3 算术运算类指令1. 加法指令组(不带进位)2.,54,带进位加法指令,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,55,3.2 MCS-51,单片机指令分类介绍,3.2.1,指令格式中符号意义说明,3.2.2,数据传送类指令,3.2.3,算术运算类指令,3.2.4,逻辑运算及移位类指令,逻辑运算:,ANL,(,与,),、,ORL,(,或,),、,XRL,(,异或,),1.,逻辑与运算指令组,ANL A,,,Rn,ANL A,,,direct,ANL A,,,R,i,ANL A,,,#data,ANL direct,,,A,ANL direct,,,#data,MOV C,,,P1.0,ANL C,,,P1.1,ANL C,,,/P1.2,MOV P3.0,,,C,P3.0=(P1.0)&(P1.1)&,(P1.2),3.2 MCS-51单片机指令分类介绍3.2.1 指令格,56,3.2.4,逻辑运算及移位类指令,逻辑运算:,ANL,(,与,),、,ORL,(,或,),、,XRL,(,异或,),1.,逻辑,与,运算指令组,2.,逻辑,或,运算指令组,ORL A,,,Rn,ORL A,,,direct,ORL A,,,R,i,ORL A,,,#data,ORL direct,,,A,ORL direct,,,#data,3.2.4 逻辑运算及移位类指令逻辑运算:ANL(与)、OR,57,3.2.4,逻辑运算及移位类指令,逻辑运算:,ANL,(,与,),、,ORL,(,或,),、,XRL,(,异或,),1.,逻辑,与,运算指令组,2.,逻辑,或,运算指令组,XR,L A,,,Rn,XRL A,,,direct,XRL A,,,R,i,XRL A,,,#data,XRL direct,,,A,XRL direct,,,#data,3.,逻辑,异或,运算指令组,3.2.4 逻辑运算及移位类指令逻辑运算:ANL(与)、OR,58,3.2.4,逻辑运算及移位类指令,逻辑运算:,ANL,(,与,),、,ORL,(,或,),、,XRL,(,异或,),4.,累加器清,“,0,”,和取反指令组,CLR A,;,A 0,(1),累加器清,“,0,”,指令,(2),累加器,取反,指令,CPL A,;,A,A,例:,P,1.0-3,A,的低四位,MOVR0,,,A,;保护,A,ANLA,,,#0FH,;保留,A,的低四位,ANLP1,,,#0F0H,;保留,P1,的高四位,ORLP1,,,A,;,MOVA,,,R0,;恢复,A,P,1.0-3,A,的低四位,3.2.4 逻辑运算及移位类指令逻辑运算:ANL(与)、OR,59,A7 A0,3.2.4,逻辑运算及移位类指令,逻辑运算:,ANL,(,与,),、,ORL,(,或,),、,XRL,(,异或,),4.,累加器清,“,0,”,和取反指令组,(,CLR,、,CPL,),5.,移位指令组,(,累加器,A,),(1),循环左移指令,RL A,;,(2),循环右移指令,RR A,;,A7 A0,A7 A03.2.4 逻,60,3.2.4,逻辑运算及移位类指令,逻辑运算:,ANL,(,与,),、,ORL,(,或,),、,XRL,(,异或,),4.,累加器清,“,0,”,和取反指令组,(,CLR,、,CPL,),5.,移位指令组,(,累加器,A,),(1),循环左移指令,RL A,;,(2),循环右移指令,RR A,;,(3),带进位循环左移指令,RLC A,;,A7 A0,CY,(4),带进位循环右移指令,RRC A,;,A7 A0,CY,3.2.4 逻辑运算及移位类指令逻辑运算:ANL(与)、OR,61,3.2 MCS-51,单片机指令分类介绍,3.2.5,控制转移类指令,1.,无条件转移指令组,(1),长转移指令,LJMP addr16,;,PC addr16,指令机器码,:,02 nn,H,nn,L,指令转移范围,:,64KB,(2),绝对转移指令,AJMP addr11,;,指令机器码,:,A,10,A,9,A,8,00001 A,7,0,指令转移范围,:,2KB,推 荐 使 用,3.2 MCS-51单片机指令分类介绍3.2.5,62,3.2 MCS-51,单片机指令分类介绍,3.2.5,控制转移类指令,1.,无条件转移指令组,(3),短转移指令,SJMP,rel,;,PC PC+2+rel,指令机器码,:,80H,rel,相对偏移量,rel,为,8,位补码,rel,=,目的地址,-(,源地址,+2)=,地址差,-2,增地址转移:,指令地址 源程序,2130H SJMP,2132H ,2150H NEXT,:,MOV A,,,R2,1EH,NEXT,3.2 MCS-51单片机指令分类介绍3.2.5,63,指令转移范围,:,前,128,后,127,字节,rel,= (,目的地址,-(,源地址,+2),补,= 0FFH-(,目的地址,-(,源地址,+2)+1,= 0FEH-,地址差,3.2.5,控制转移类指令,1.,无条件转移指令组,(3),短转移指令,SJMP,rel,;,PC PC+2+rel,减地址转移:,取 反,指令地址 源程序,2130H NEXT,:,MOV A,,,R2,2150H SJMP,0DEH,NEXT,指令转移范围:前128后127字节rel= (目的地址-(,64,3.2 MCS-51,单片机指令分类介绍,3.2.5,控制转移类指令,1.,无条件转移指令组,(4),变址寻址转移指令,JMP A+DPTR.,;,PC A+DPTR,指令机器码,73H,,指令转移范围,64KB,。,(1),长转移指令,LJMP,(2),绝对转移指令,AJMP,(3),短转移指令,SJMP,MOVA,,,#02H,MOVDPTR,,,#0006,JMPA+DPTR,3.2 MCS-51单片机指令分类介绍3.2.5,65,单片机(全套)课件,66,P,.77 10.,MOVP2,,,#20H,MOV R0,,,#00H,MOV A,,,R0,P.77 10.MOVP2,#20H,67,3.2 MCS-51,单片机指令分类介绍,3.2.5,控制转移类指令,1.,无条件转移指令组,(4),变址寻址转移指令,JMP,(1),长转移指令,LJMP,(2),绝对转移指令,AJMP,(3),短转移指令,SJMP,2.,条件转移指令组,(1),累加器判零转移指令,JZ rel,;若,A=00H,,,PCPC+e(,转移,),, ;若,A00H,,,PCPC+2 (,不转移,),JNZ rel,;若,A00H,,,PCPC+e(,转移,),, ;若,A=00H,,,PCPC+2(,不转移,),3.2 MCS-51单片机指令分类介绍3.2.5,68,2.,条件转移指令组,(1),累加器判零转移指令,(2),数值比较转移指令,CJNE,操作数,1,,操作数,2,,,rel,CJNEA,,,#data,,,rel,CJNEA,,,direct,,,rel,CJNERn,,,#data,,,rel,CJNER,i,,,#data,,,rel,操作数,1,操作数,2,,转移,PC PC+3+rel,对,CY,的影响,操作数,1=,操作数,2,,,CY=0,;,操作数,1,操作数,2,,,CY=0,;,操作数,1,操作数,2,,,CY=1,;,2. 条件转移指令组(1)累加器判零转移指令(2)数值比较转,69,DJNZ,操作数,,,rel,2.,条件转移指令组,(1),累加器判零转移指令,(2),数值比较转移指令,(3),减,1,条件转移指令,若(,操作数,-1),=,0,,则转移,PCPC+2,,顺序执行; 若,(,操作数,-1),0,,则,PCPC+2+rel,。,指令机器码,:,D8-DFH,rel,(,两个字节,),DJNZ Rn,,,rel,指令,1,DJNZ,direct,,,rel,指令,2,指令机器码,:,D5,direct,rel,(,三个字节,),若(,操作数,-1),=,0,,则转移,PCPC+3,,顺序执行; 若,(,操作数,-1),0,,则,PCPC+3+rel,。,DJNZ 操作数,rel2. 条件转移指令组(1)累加器判,70,查表法求,Y=X,2,。设在片内,RAM,的,20H,开始连续,5,个单元存放,5,个数,X(0X15),,要求将查表求,Y,,存入片内,RAM30H,开始的五个单元。,ORG 0000H,AJMP 0020H,ORG 0020H,SQU:MOV DPTR,#TAB,MOV R0,#20H,MOV R1,#30H,MOV 78H,#5,LOOP: MOV A,R0,MOVC A,A+DPTR,MOV R1,A,INC R0,INC R1,DJNZ 78H,LOOP,ORG 0040H,TAB: DB 00,01,04,09,16,25,36,49,64,81,100,121,144,169,196,225,END,查表法求Y=X2。设在片内RAM的20H开始连续5个单元存放,71,3.,子程序调用与返回指令组,ACALL addr11,指令机器码,:,A,10,A,9,A,8,10001 A,7,0,(1),绝对调用指令,3.2.5,控制转移类指令,1.,无条件转移指令组,2.,条件转移指令组,操作内容,:,PC PC+2,SP SP+1,,,(SP) PC,7-0,SP SP+1,,,(SP) PC,15-8,PC,10-0,addr11,例:,8100H ACALL label,问:,label,的地址范围?,8000H,87FFH,3. 子程序调用与返回指令组ACALL addr1,72,3.,子程序调用与返回指令组,(1),绝对调用指令,(2),长调用指令,LCALL addr16,(3),返回指令,RET,:,子程序返回指令,RETI,:,中断服务,子程序返回指令,操作内容,:,PC PC+3,SP SP+1,,,(SP) PC,7-0,SP SP+1,,,(SP) PC,15-8,PC,addr16,PC15-8 SP,,,SP SP-1,PC7-0 SP,,,SP SP-1,4.,空操作指令,NOP,;,PC PC+1,3. 子程序调用与返回指令组(1)绝对调用指令(2)长调用指,73,3.2.6,位操作类指令,1.,位传送指令组,MOV C,,,bit,MOV bit,,,C,例:,MOV 10H,,,C,MOV C,,,20H,MOV 54H,,,C,MOV C,,,10H,3.2.6 位操作类指令1. 位传送指令组MOV,74,3.2.6,位操作类指令,1.,位传送指令组,2.,位,(CY),置位、复位,指令组,SETB C,;,CY 1,SETB bit,;,bit 1,CLR C,;,CY 0,CLR bit,;,bit 0,3.,位运算指令组,ANL C,,,bit(/bit),ORL C,,,bit(/bit),CPL C,CPL bit,3.2.6 位操作类指令1. 位传送指令组2. 位(C,75,例:,MOVC,,,B,ANL C,,,/E,;,CY,MOV D,,,C,MOV C,,,E,ANLC,,,/B,;,CY,ORLC,,,D,;,CY,MOVD,,,C,;,异或结果送,D,例:MOVC,B,76,3.2.6,位操作类指令,1.,位传送指令组,2.,位,(CY),置位、复位,指令组,3.,位运算指令组,4.,位控制转移指令组,(1),以,C,状态为条件的转移指令,JCrel,JNCrel,(2),以,位,状态为条件的转移指令,JBbit,,,rel,JNBbit,,,rel,JBCbit,,,rel,;,若,(b)=1,转移,且,(b)=0,; 否则不转移,3.2.6 位操作类指令1. 位传送指令组2. 位(C,77,3.2.7 I/O,口访问指令使用说明,1.,口操作指令,MOVPm,,,A,MOVPm,,,#data,MOVPm,,,direct,口输出指令,MOV A,,,Pm,MOV direct,,,Pm,口输入指令,2.,口线操作指令(位),MOV Pm.n,,,C,MOV C,,,Pm.n,SETB Pm.n,CLR Pm.n,ANL C,,,Pm.n,ORL C,,,Pm.n,JB Pm.n,,,rel,JBC Pm.n,,,rel,3.2.7 I/O口访问指令使用说明1. 口操作指令M,78,3.2.7 I/O,口访问指令使用说明,3.,读引脚数据,0,1,?,注:读口前先写入,1,例:,ORLP1,,,#03H,MOVA,,,P1.0,MOVB,,,P1.1,3.2.7 I/O口访问指令使用说明3. 读引脚数据0,79,MCS-51,汇编语言程序设计,4.1,汇编语言程序设计概述,汇编语言程序:,用汇编语言编写的、完成特定功能的指令序列。,汇编程序:,能将汇编语言源程序转换成机器语言目标程序的系统软件。,汇编:,汇编语言程序到机器语言程序的转换过程称为汇编。,汇编方式:,1.,手工汇编:人工查指令表汇编。用于设计短小程序或调试程序的场合。,早期行为。,2.,机器汇编:用汇编程序进行汇编。,PC,机普及后。,MCS-51汇编语言程序设计4.1 汇编语言程序设计概述,80,4 MCS-51,汇编语言程序设计,4.1,汇编语言程序设计概述,汇编的主要任务:,1,)确定程序中每条汇编语言指令的指令机器码。,2,)确定每条指令在存储器中的存放地址。,3,)提供错误信息。,4,)提供目标执行文件(*,.OBJ/*.HEX),和列表文件(*,.LST,)。,汇编语言的语句格式:,: ,;,4 MCS-51汇编语言程序设计4.1 汇编语言程序设,81,4 MCS-51,汇编语言程序设计,4.1,汇编语言程序设计概述,汇编语言的语句格式:,: ,;,标号,:以字母开头的,1-8,个字符(字母、数字等)和,“,:,”,组成。不能使用本汇编语言已定义的符号。,1BT:,BEGIN,TA+TB:,ADD:,操作码,:语句执行的操作内容,不能空缺。,操作数,:为指令的操作提供数据或地址;可缺省,也可包括二项、三项;各操作数之间以逗号分隔。,注释,:以,“,;,”,开头,如换行还应加,“,;,”,。,BEGIN,:,BT1:,TATB:,ADD1:,4 MCS-51汇编语言程序设计4.1 汇编语言程序设,82,4 MCS-51,汇编语言