《【精品】单片机原理及接口技术精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】单片机原理及接口技术精品ppt课件.ppt(208页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及接口技术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的中断系统及定时/计数
2、器第6章 80C51的接口课程内容课程内容本章内容 1.1 数制与编码的简单回顾 1.2 电子计算机的发展概述 1.3 单片机发展过程及产品近况 1.4 单片机的特点及应用领域第第1章章 绪绪 论论5、B、Q、H、D之间的相互转换(按组合算6种)1)B D:B D 幂级数求和 D B 整数部分除以2、取余数、逆序;小数部分乘以2、取整数、顺序;常用最大权法 2)Q D:Q D 幂级数求和 D Q 整数部分除以8、取余数、逆序;小数部分乘以8、取整数、顺序;常用最大权法 3)H D:H D 幂级数求和 D H 整数部分除以16、取余数、逆序;小数部分乘以16、取整数、顺序;常用最大权5、B、Q、
3、H、D之间的相互转换(6种)4)B Q:B Q 三合一 Q B 一分三 5)B H:B H 四合一 H B 一分四 6)Q H:H B Q H(一分四)B(三合一)Q Q(一分三)B(四合一)H H D Q H(幂级数求和)D(整除小乘)Q Q(幂级数求和)D(整除小乘)H6、B、Q、H、D之间的相互转换(按转换方法分5种)1)B、Q、H D:幂级数求和 2)D B、Q、H:整数部分除以2、8、16取余数,逆序(最大权法)小数部分乘以2、8、16取整数,顺序 3)B Q、H:三(位B)合一(位Q)、四(位B)合一(位H)4)Q、H B:一(位Q)分三(位B)、一(位H)分四(位B)5)H Q:
4、H(一分四)B(三合一)Q Q(一分三)B(四合一)H1、ASCII码 09的ASCII:30H39H AZ的ASCII:41H5AH az的ASCII:61H7AH2、BCD码 压缩的BCD码:4位位二进制数表示1位位十进制数 非压缩的BCD码:8位位二进制数表示1位位十进制数,低4位表示十进制数,而高4位没有意义,一般用“0000”来表示。1.1.2 编码编码 符号位规定:0表示正数,1表示负数。1、原码原码 “符号+绝对值”,符号位表示数的正负,而其余位表示这个数的绝对值。8位字长表示范围:-127 +1272、反码 对于正数的反码同原码,对于负数,将其原码除符号位外的各位求反为反码。8
5、位字长表示范围:-127 +1273、反码 正数的补码同原码,负数的补码等于该数的反码在最低位上加“1”。8位字长表示范围:-128 +1271.1.3 计算机中带符号数的表示计算机中带符号数的表示4)反码运算 a、要把符号位当作数一同参与运算,并自动生成结果的符号。b、当符号位相加后,若有进位,则要把它送回到数的最低位去相加循环进位5)补码运算 a、把符号位当作数据,一同参与运算。b、符号位相加后,若有进位,则舍去进位。6)带符号数都是用补码表示的。1、微型计算机的组成 微型计算机由CPU、存储器、输入/输出接口电路和系统总线构成。1.2.2 微型计算机的组成及其应用形态微型计算机的组成及其
6、应用形态微处理器C P URAMROM I/O接口外 设ABDBCB微型计算机结构框图1.2 电子计算机的发展概述电子计算机的发展概述2、微型计算机的应用形态 微型计算机的应用形态可以分为3种:多板机:(系统机)工业PC机 也属于多板机。单板机:(现已很少用)单片机:集成了CPU、存储器、I/O接口电路的单芯片微型计算机。系统机(多板机)单板机 单片机1、单芯片微机形成阶段 2、性能完善提高阶段3、微控制器化阶段1.3.1 单片机的发展过程单片机的发展过程1.3 单片机的发展过程及产品近况单片机的发展过程及产品近况 1、80C51系列产品繁多,主流地位已形成,已推出的与80C51兼容的主要产品
7、有:2、非80C51结构单片机新品不断推出1.3.2单片机产品近况单片机产品近况1、控制性能和可靠性高2、体积小、价格低、易于产品化 1.4.1 单片机的特点单片机的特点1.4 单片机的特点及应用领域单片机的特点及应用领域 智能仪器仪表、机电一体化产品、实时工业控制、分布式系统的前端模块、家用电器。1.4.2 单片机的应用领域单片机的应用领域本章内容 2.1 80C51系列概述 2.2 80C51的基本结构与应用模式 2.3 80C51典型产品资源配置与引脚封装 2.4 80C51的内部结构 2.5 80C51的存储器组织 2.6 80C51的并行口结构与操作第第2章章 80C51的结构和原理
8、的结构和原理 生产工艺有两种:一是HMOS工艺,二是CHMOS工艺。在产品型号中凡带有字母“C”的即为CHMOS芯片,CHMOS芯片的电平既与TTL电平兼容,又与CMOS电平兼容;既保持了HMOS的高速度和高密度,还具有COMS的低功耗。功能上,该系列单片机有基本型和增强型两大类:基本型(末位为1):8051/8751/8031/80C51/87C51/80C31增强型(末位为2):8052/8752/8032/80C52/87C52/80C322.1 80C51系列概述系列概述2.1.1 MCS-51系列系列 51系列单片机的主要功能特点:1、一个8位微处理器CPU;2、片内振荡器,振荡频率
9、范围为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.2 80C51的基本结构与应用模式的基本结构与应用模式2.2.1
10、80C51的基本结构的基本结构注:与并行口P3复用的引脚有串行口I/O引脚RXD和TXD,外部中断输入引脚INT0*和INT1*,外部计数输入引脚T0和T1,外部数据存储器写和读控制信号WR*和RD*。2.2.2 80C51的应用模式的应用模式1、总线型单片机应用模式总线型应用的“三总线”模式它在扩展外围器件较多时接线复杂、系统可靠性会降低。这种总线应用在系统设计时应尽量减少扩展器件的数量。非总线型应用的“多I/O”模式非总线型应用的“多I/O”模式极适用于大量I/O口线需求的应用系统。2.3 80C51典型产品资源配置与引脚典型产品资源配置与引脚2.3.1 80C51典型产品资源配置典型产品
11、资源配置2.3.2 80C51的引脚封装的引脚封装1、总线型DIP40引脚封装DIPDIP封装封装 QFPQFP封装封装 DIP401、总线型DIP40引脚封装1)电源及时钟引脚 VCC(40脚):主电源+5V Vss(20脚):接地 XTAL1(19脚):在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,此引脚作为驱动端。XTAL2(18脚):在片内它是一个振荡电路反相放大器的输出端。若采用外部时钟电路,此引脚应悬浮。2)控制引脚 RST/VPD(9脚):单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)/备用电源 AL
12、E/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脚):一般
13、I/O口引脚 P2.0P2.7(26脚21脚):一般I/O口引脚或高位地址总线引脚 P3.0P3.7(10脚17脚):一般I/O口引脚或第二功能引脚4)芯片引脚的第二功能 引脚复用不会引起混乱的原因:工作方式不同;P3口的第二功能都是重要控制信号,使用时优选第二功能2.4 80C51的内部结构的内部结构运算运算器器控制控制器器存储存储器器1、80C51的微处理器(CPU)1)运算器 组成:算术/逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器、程序状态寄存器PSW(1)ALU 用来完成二进制的四则运算和逻辑运算。此外通过对运算结果判断,影响程序状态字的有关位(2)累加器Acc 8位寄存器
14、,它通过暂存器和ALU相连,是CPU中最繁忙的寄存器。在进行算术、逻辑运算时,运算器的一个输入多为ACC的输出,而运算结果又大多数送到ACC中。在指令系统中ACC的助记符为A。自身带有全零标志Z,若A0则Z1;若A0则Z0。该标志常用作程序分支转移的判断条件。2.4.1 80C51单片机的内部结构单片机的内部结构(3)寄存器B 80C51中,在做乘、除法时必须使用B寄存器,乘法时用于存乘数/积的高8位,除法时用于存除数/余数;不做乘、除法时,可作为一般的寄存器使用。(4)程序状态字PSW 8位寄存器,用来存放运算结果的一些特征。字节地址(D0H),格式如下、含义见下页。CY:进位标志。在进行加
15、法(或减法)运算时,若运算结果最高位有进位(或借位),则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,否则
16、P=0。RS1、RS0:工作寄存器指针。用来选择当前的工作寄存器组。由用户通过指令改变RS1、RS0的组合,以选择当前的工作寄存器组。单片机复位时,RS1=RS0=0,CPU默认第0组工作寄存器。2)控制器 控制器是CPU的大脑中枢,它的组成:指令寄存器IR、指令译码器ID、定时与控制逻辑电路、程序计数器PC、数据指针DPTR、堆栈指针SP等。功能:对程序指令逐条译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工作,完成指令所规定的操作。(1)指令寄存器IR 保存当前正在执行的一条指令。(2)指令译码器ID 当指令送入指令译码器后,由译码器对该指令进行译
17、码,即把指令转变成所需的电平信号,以便计算机能正确执行程序所要求的各种操作。指令寄存器IR和指令译码器ID的协作 当指令取出经指令寄存器IR送至指令译码器ID时,ID对该指令进行译码,即把指令转变成所需的电平信号,CPU 根据ID输出的电平信号使定时控制电路定时地产生执行该指令所需的各种控制信号,以使计算机能正确执行程序所要求的各种操作。程序程序程序程序存储器存储器存储器存储器PCPC取出取出取出取出指令码指令码指令码指令码指令指令指令指令寄存器寄存器寄存器寄存器IRIR指令指令指令指令译码器译码器译码器译码器IDID把指令转变成所需把指令转变成所需把指令转变成所需把指令转变成所需要得电平信号
18、要得电平信号要得电平信号要得电平信号 CPU CPU 产生执行该指令产生执行该指令产生执行该指令产生执行该指令所需的各种控制信号所需的各种控制信号所需的各种控制信号所需的各种控制信号取指令取指令取指令取指令 分析指令分析指令分析指令分析指令 执行指令执行指令执行指令执行指令(3)程序计数器PC 是单片机CPU内一个物理结构独立的特殊寄存器。作用就是用来存放将要从ROM中读出的下一指令的16位地址,因此也称为地址指针,可对64K ROM直接寻址。PC具备的功能:a、自动加1功能,即CPU从存储器中读出一个字节的指令码后,PC自动加1(指向下一个存储单元)。b、执行转移指令时,PC能根据该指令的要
19、求修改下一个指令的地址。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)堆栈指针
20、SP(Stack Pointer)SP在片内RAM 128个字节中开辟栈区,并随时跟踪栈顶地址。它是按“先进后出”的原则进行存取数据的,开机复位后,单片机栈底地址为07H。2、片内存储器 程序存储器和数据存储器2个独立的空间(称为哈佛结构)。单片机内程序存储器容量基本型:4KB,地址范围是:0000H0FFFH增强型:8KB,地址范围是:0000H1FFFH单片机内数据存储器容量基本型:128B,地址范围是:00H7FH增强型:256B,地址范围是:00HFFH(高128字节一般为RAM,仅能采用寄存器间接寻址方式)3、I/O口及功能单元 并口:P0P3,双向口。每口8条I/O线 串行口:P3
21、.0、P3.1,全双工 定时/计数器:2个,16位 中断系统:5个中断源,2个优先级 4、特殊功能寄存器(SFR)21个SFR,地址80HFFH。只占用了80HFFH中的21个字节单元,且这些单元是离散分布的。增强型单片机的SFR有26个字节单元,所增加的5个单元均与定时/计数器2相关。2.4.2 80C51的时钟与时序的时钟与时序1、时钟产生方式内部时钟外部时钟2、时钟信号 晶振周期(或外部时钟周期)为最小的时序单位。1个机器周期:12个晶荡周期(或6个时钟周期)指令的执行时间称作指令周期(单、双、四周期)晶振周期、时钟周期、机器周期、指令周期都是时序单位,机器周期常用于计算其他时间的基本单
22、位。2.4.3 80C51单片机的复位单片机的复位1、复位电路 复位可使单片机或系统部件处于确定的初始状态上电复位电路按键与上电复位2、单片机复位后的状态 PC=0000H RAM:随机值(运行中复位不改变RAM内容)SFR状态 P0P3=FFH SP=07H IP、IE和PCON:有效位为0 PSW=00H 2.5.1 80C51的程序存储器配置的程序存储器配置80C51的程序存储器配置PC:16位计数器,能寻址64KB的ROM2.5.2 80C51的数据存储器配置的数据存储器配置单片机的RAM配置 数据存储器分为片内RAM和片外RAM。片内RAM有128B,分成工作寄存器区、位寻址区、通用
23、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
24、个字节 作为数据缓冲器 操作指令丰富,数据处理方便灵活 堆栈区:通常在30H7FH范围 栈顶:SP寄存器指示 复位时SP的初值为07H2.5.3 80C51的特殊功能寄存器的特殊功能寄存器(SFR)2.5.3 80C51的特殊功能寄存器的特殊功能寄存器(SFR)21个特殊功能寄存器(SFR)离散分布,地址可被8整除,有效地址83个,访问时只允许用直接寻址方式。1、与运算器相关的寄存器(3个)累加器ACC,8位。提供操作数,存结果;寄存器B,8位。主要用于乘、除法运算。程序状态字寄存器PSW,8位。各位含义为:CY:进位、借位标志。有进位、借位时 CY=1,否则CY=0;AC:辅助进位、借位标志
25、;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,均
26、为8位;串行口数据缓冲器SBUF;串行口控制寄存器SCON;串行通讯波特率倍增寄存器PCON,(又称为电源控制寄存器)。4、与中断相关的寄存器(2个)中断允许控制寄存器IE;中断优先级控制寄存器IP。5、与定时器/计数器相关的寄存器(6个)T0的两个8位计数初值寄存器TH0、TL0 T1的两个8位计数初值寄存器TH1、TL1 工作方式寄存器TMOD;控制寄存器TCON。2.6.1 P0口、口、P2口的结构口的结构1、P0口的结构 P0用作通用I/O口:系统不扩展(片外ROM、片外RAM)时,C=0,MUX接锁存器反相端,T1截止,漏极开路,属于准双向口。P0用作地址/数据总线:系统进行扩展(片
27、外ROM、片外RAM)时,C=1,MUX接反相器,T1截止与导通由地址/数据线的状态决定,是一个真正的双向口。2.6 80C51的并行口结构与操作的并行口结构与操作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口。输出高电平时,能向外提供拉电流负载,不必再接上
28、拉电阻。当用作输入时,须向口锁存器写入1。2、P3口的结构 P3用作第一功能(通用I/O):对P3字节或位寻址时,硬件自动将W置1,属于准双向口。P3用作第二功能使用:当不对P3口寻址时,口锁存器的Q端自动置1,这时P3口作为第二功能使用。2.6.2 P1口、口、P3口的结构口的结构本章内容:3.1 指令格式及常用符号 3.2 80C51的寻址方式 3.3 数据传送类指令(29条)3.4 算术运算类指令(24条)3.5 逻辑运算与循环类指令(24条)3.6 控制转移类指令(17条)3.7 位操作类指令(17条)第第3章章 80C51的指令系统的指令系统 指令:CPU按照人们的意图来完成某种操作
29、的命令。指令系统:一台计算机的CPU所能执行的全部指令的集合。80C51单片机指令系统有111条指令,其的特点:执行时间短指令编码字节少,位操作指令丰富。机器指令有操作码和操作数(或操作数地址)两部分构成,操作码用来规定指令执行的操作功能,操作数是指参与操作的数据。3.1.2 符号指令的格式符号指令的格式 组成:操作助记符、目的操作数、源操作数、注释一般格式:操作助记符 目的操作数,源操作数;注释 操作数个数:无、单、两、三操作数,在两个操作数的指令中,通常目的操作数写在左边,源操作数写在右边。如:ANL A,40H ANL为“与”操作的助记符,立即数“40H”为源操作数,累加器A为目的操作数
30、。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的位地址;/:位操作数的取反操作前缀;():表示地址单元或寄存器中的内容;():以单元或寄存器为地址
31、间接寻址单元的内容;箭头右边的内容送入箭头左边的单元中。寻找操作数或指令的地址的方式。寻址方式有七种,即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。若不特别声明,我们后面提到的寻址方式均指源操作数的寻址方式。3.2 80C51的寻址方式的寻址方式3.2.1 寄存器寻址寄存器寻址 MOV A,R0 操作数在寄存器中,指令中直接给出该寄存器名称。具有较高的传送和运算速度。寻址空间:R0R7、A、B(AB)、DPTR例:MOV A,R0;设(R0)=30H,0工作寄存器组结果:(A)=30H3.2.2 直接寻址直接寻址 MOV A,50H 操作
32、码后的字节是操作数的地址,操作数本身放在该地址指示的存储单元中。寻址空间:片内RAM(128字节)、SFR(常采用符号形式)例:MOV A,50H;设(50H)=3AH结果:(A)=3AH3.2.3 寄存器间接寻址寄存器间接寻址 MOV A,R0 寄存器中内容为地址,从该地址取操作数。寻址空间:MOV片内RAM、MOVX片外RAM;间址寄存器:R0或R1片内RAM、片外RAM(256字节)P2口线,页面方式、DPTR。例:MOV A,R0;设(R0)=30H结果:(A)=5AH3.2.4 立即寻址立即寻址 MOV A,#50H 编码中直接给出操作数。操作码之后的操作数称为立即数。立即数:单字节
33、、双字节,标识:,源操作数。寻址空间:ROM。例:MOV A,#50H;结果:(A)=50H3.2.5 变址寻址变址寻址 MOVC A,A+DPTR 以一个基地址加上一个偏移量地址形成操作数地址。操作数地址:基址寄存器DPTR/PC、偏移量寄存器A。寻址空间:ROM。例:MOVC A,A+DPTR;结果:(A)=88H3.2.6 相对寻址相对寻址 JC rel 以PC当前值为基准,加上指令中相对偏移量rel形成目标地址。目标地址:PC+rel,PC的当前值:读出该2字节或3字节的跳转指令后,PC指向的下条指令的地址。rel取值范围是:128127。(补码)例:JC rel;设rel75H,PS
34、W.7为“1”结果:程序转向1077H单元3.2.7 位寻址位寻址 MOV 30H,C 对位地址中内容进行操作。操作的是8位二进制数中的某一位。寻址空间:片内RAM中位寻址区、SFR中的可寻址位 SFR的寻址位常用符号位地址表示,如:CLR ACC.0 MOV 30H,C3.3 数据传送类指令(数据传送类指令(29条)条)传送类指令分成两大类:MOV一般传送,非MOV特殊传送,非MOV如:MOVC、MOVX、PUSH、POP、XCH、XCHD及SWAP。一般不影响PSW状态3.3.1 一般传送指令一般传送指令1、16位传送 将源操作数data16(通常是地址常数)送入目的操作数DPTR中。2、
35、8位传送 将源字节中的内容送入目的字节中,源字节内容不变。格式:MOV ,目的操作数:A、Rn、direct、Ri 源操作数:A、Rn、direct、Ri、#data 目的操作数四选一,源操作数五选一,除direct外源与目的不同名。3.3.2 特殊传送指令特殊传送指令1、ROM查表(A变址,DPTR、PC基址)MOVC A,A+DPTR 以DPTR与偏移量之和作为程序存储器地址,将该地址单元的内容传送到A。指令执行后DPTR的内容不变。MOVC A,A+PC 以PC的当前值与偏移量之和作为程序存储器地址,将该地址单元的内容传送到A。指令执行后PC的内容不变。这两条指令主要用于程序存储器查表。
36、2、读写片外RAM1)读片外RAM MOVX A,DPTR MOVX A,Ri2)写片外RAM MOVX DPTR,A MOVX Ri,A3、堆栈操作 原则:向地址高端生长,后进先出 SP:指向栈顶(活动端),复位值07H 操作格式:PUSH direct POP direct例:若(SP)=07H,(40H)=88H,执行 PUSH 40H;结果:(SP)=08H,(08H)=88H。4、数据交换 交换类指令,传送是双向的。1)字节交换 XCH A,Rndirect/Ri例:若(R0)=80H,(A)=20H,执行 XCH A,R0;结果:(A)=80H,(R0)=20H。2)半字节交换 X
37、CHD A,Ri SWAP A例:若(R0)30H,(30H)67H,(A)20H,执行 XCHD A,R0;结果(A)27H,(30H)60H。例:若(A)30H,执行 SWAP A;结果:(A)03H。3.4 算术运算类指令(算术运算类指令(24条)条)加、减、乘、除及加1和减1等,多数以A为源操作数,同时又使A为目的操作数。影响PSW中的OV、CY、AC;CY,无符号整数多字节加、减法、移位等 OV,可方便的控制补码运算 AC,用于BCD码运算。3.4.1 加法加法1、不带进位加 ADD A,Rndirect/Ri/#data 影响:CY、AC、OV和P,注:D7、D6位只有一个有进位时
38、,(OV)=1。如:两个正数相加结果为负数或两个负数相加结果为正数时属于错误结果,此时(OV)=1。2、带进位加 ADDC A,Rndirect/Ri/#data 源操作数与A的内容相加再与CY相加,结果送入目的操作数A中。CY是在该指令执行之前已存在的值。例若(A)=84H,(30H)=8DH,CY=1执行指令 ADD A,30H ADDC A,30H 1)结果:(A)=11H,(CY)=1,(AC)=1,(OV)=1,(D7有进位,D6无进位),(P)=0。2)结果:(A)=12H,(CY)=1,(AC)=1,(OV)=1,(D7有进位,D6无进位),(P)=03、增1 INC ARn/d
39、irect/Ri/DPTR 源操作数的内容加1,结果再送回原单元。这些指令中仅INC A影响P标志。4、十进制调整 DA A 对A中刚进行的2个BCD码加法的结果调整。当A中低4位数出现了非BCD码或低4位产生进位(AC=1),则在低4位加6。当A中高4位数出现了非BCD码或高4位产生进位(CY=1),则在高4位加6。调整后,CY表示结果的百位值。例:若(CY)0,A和R2内容见下式。执行指令:ADD A,R2 DA A;结果:123(BCD数)3.4.2 减法减法1、带借位减 SUBB A,Rndirect/Ri/#data 影响:CY、AC、OV和P,注:D7、D6位只有一个有借位时,(O
40、V)=1。如要用此组指令完成不带借位减法,只需先清CY为0。2、减1 DEC ARn/direct/Ri 操作数内容减1,结果再送回原单元。DEC A影响P标志,其余指令都不影响标志位的状态。例若(A)=C9H,(R2)=54H,(CY)=1,执行指令 SUBB A,R2;(A)=74H,(CY)=0,(AC)=0,(OV)=1(位6有借位,位7无借位),(P)=0。3.4.3 乘法乘法 MUL AB 累加器A和寄存器B中的无符号8位二进制数相乘,乘积的低8位存放在累加器A中,乘积的高8位存放在寄存器B中。当乘积大于FFH时,溢出标志位(OV)=1。标志CY总是被清0。例:若(A)=50H,(
41、B)=A0H,执行指令MULAB之后,(A)=00H,(B)=32H,(OV)=1,(CY)=0。3.4.4 除法除法 DIV AB 累加器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循环移位:方
42、向:左、右 CY:带、不带A清0操作对P标志有影响。3.5.1 逻辑与逻辑与源操作数与直接地址单元内容相与 ANL direct,A#data源操作数与累加器A的内容相与 ANL A,Rndirect/Ri/#data例:若(A)=C3H,(R0)=AAH,执行指令ANLA,R0之后,(A)=82H。3.5.2 逻辑或逻辑或源操作数与直接地址单元内容相或 ORL direct,A#data源操作数与累加器A的内容相或 ORL A,Rndirect/Ri/#data例:若(A)=C3H,(R0)=55H,执行指令ORLA,R0之后,(A)=D7H。3.5.3 逻辑异或逻辑异或源操作数与直接地址单
43、元内容相异或 XRL direct,A#data源操作数与累加器A的内容相异或 XRL A,Rndirect/Ri/#data例若(A)=C3H,(R0)=AAH,执行指令XRLA,R0之后,(A)=69H。3.5.4 累加器清累加器清0和取反和取反把A的内容清0,结果仍在A中。CLR A把A的内容取反,结果仍在A中。CPL A例若(A)=A5H,执行指令CLR A之后,(A)=00H。3.5.5 累加器循环移位累加器循环移位 A的内容循环右移1位。RR AA的内容连同CY位循环右移1位。RRC AA的内容循环左移1位。RL AA的内容连同CY位循环左移1位。RLC A “累加器A内容乘2”的
44、任务可以利用指令RLC A方便地完成。例:若(A)=BDH=10111101B,(CY)0。执行指令RLC A,结果为:17AH(378)2BDH(189)。A的内容循环右移1位。RR AA的内容连同CY位循环右移1位。RRC A“累加器A内容除以2”CLR CRRC AA的内容循环左移1位。RL AA的内容连同CY位循环左移1位。RLC A“累加器A内容乘以2”CLR CRLC A3、相对转移 SJMP rel 第二字节为rel,(补码),00H7FH为正向转移,80HFFH(1281)反向转移。rel是目标地址的标号,由汇编程序自动计算,并填入指令代码中。SJMP$;PC(PC)+2+$,
45、$(自减2,即-2),;目的是:原地踏步等中断 例:若“NEWADD”表示地址0123H,PC当前值为0100H。执行:SJMP NEWADD后,程序转向0123H执行(此时rel=0123H(01002)=21H)。3.6 控制转移类指令(控制转移类指令(17条)条)3.6.2 条件转移条件转移1、累加器判0转移 JZ rel;A的内容为0转移 JNZ rel;A的内容不为0转移 例:若A原来为00H,则:JNZ L1;程序往下执行 INC A;JNZ L2;程序转向L2处执行2、比较不相等转移 CJNE A,direct,rel CJNE ARn/Ri,data,rel 对目的字节与源字节
46、比较,不等则转移,比较时影响进位标志,若目的字节等于源字节,程序将继续往下执行。3、减1不为0转移 DJNZ Rn,rel DJNZ direct,rel 每执行一次,循环控制单元减1,并判其是否为0。不为0,则转移到目标地址继续循环;为0,则结束循环,程序往下执行。例有一段程序如下:MOV R7,#0AH CLR ALOP:ADD A,R7;A(A)+(R7)DJNZ R7,LOP;(R7)0转移到LOP SJMP$结果:(A)=10+9+8+7+6+5+4+3+2+1=37H2、返回 RET RETI RET从堆栈中弹出压入堆栈保护的断点地址,并送入指令计数器PC,返回到断点处继续执行。R
47、ETI专用于中断服务程序返回,除返回中断断点处执行主程序以外,并有清除内部相应的中断状态寄存器(以保证正确的中断逻辑)的功能。NOP 不产生任何控制操作,但:PC的内容加1,消耗1个机器周期,空间上占用一个字节。因此,常用来实现较短时间的延时。常用来实现较短时间的延时。3.6.4 空操作空操作3.7 位操作类指令(位操作类指令(17条)条)以位为单位进行的各种操作。位地址形式 直接地址(如,0D5H)点操作符(如,0D0H.5、PSW.5等)位名称(如,F0)伪指令定义(如,MYFLAGBITF0)。几种形式表示的都是PSW中的位5。位操作指令中,位累加器“CY”要用字符“C”表示(注:在位操
48、作指令中CY与具体的直接位地址D7H对应),累加器A的位要用字符ACC.x表示3.7.1 位传送位传送 MOV bit,C MOV C,bit 指定位地址中内容与CY的内容的相互传送。例:若(CY)=1,(P3)=1100 0101B,(P1)=0011 0101B。执行以下指令:MOV P1.3,C MOV C,P3.3 MOV P1.2,C 结果:(CY)=0,P3的内容未变,P1的内容变为 0011 1001B。3.7.2 位状态设置位状态设置1、位清0 位累加器CY清0:CLR C 位地址内容清0:CLR bit 例:若(P1)=10011101B。执行CLR P1.3后,结果为:(P
49、1)=10010101B。2、位置位 位累加器CY置1:SETB C 位地址内容置1:SETB bit 例若(P1)=10011100B。执行SETB P1.0后,(P1)10011101B。3.7.4 位判跳(条件转移)位判跳(条件转移)1、判CY转移 JC rel;(CY)=1,转向PC+2+rel,否则顺序执行。JNC rel;(CY)=0,转向PC+2+rel,否则顺序执行。2、判bit转移 JB bit,rel;(bit)=1,转向PC+3+rel,否则顺序执行。JBC bit,rel;与上面指令相同,但还有将该位清0功能。JNB bit,rel;(bit)=0,转向PC+3+rel
50、,否则顺序执行。本章内容:4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例第第4章章 80C51的程序设计的程序设计常用的流程图符号开始、结束判断分支程序流向工作任务程序连接程序连接4.1 程序编制的方法和技巧程序编制的方法和技巧流程图的绘制示意4.1.3 汇编语言的语句格式汇编语言的语句格式1、语句行组成:标号:操作码 操作数 ;注释 字段间用分隔符分隔:空格、冒号、逗号、分号等。2、标号 语句地址的标志符号,几项规定:1)由18个ASCII字符;2)第1个字符必须是字母,其余为字母、数字或其他特定字符;3)不使用已定义的符号4)后边必须跟