1、单片机应用技术(汇编语言)单片机应用技术(汇编语言)任务任务1 了解单片机的硬件结构了解单片机的硬件结构任务任务2 WAVE软件的应用和程序烧录软件的应用和程序烧录任务任务3 熟悉单片机存储器结构熟悉单片机存储器结构任务任务5 Proteus ISIS 7.5软件的使用软件的使用任务任务4 单片机最小系统设计单片机最小系统设计 任任务务1 了解了解单单片机的硬件片机的硬件结结构构 1了解单片机的基本概念。2掌握AT89S51单片机的封装、引脚定义及其功能、I/O端口及其功能。3了解单片机的内部结构。在利用单片机实现预定的设计目标前,首先需要对单片机有一个基本的了解。本任务就是建立对单片机的一个
2、感性认识,学会识别不同封装形式单片机的引脚编号,并掌握各个引脚功能的定义。在了解单片机内部结构的基础上,初步掌握单片机I/O端口与外围电路的设计思路。一、单片机概述一、单片机概述单片机是一种集成电路芯片,它采用超大规模集成电路技术将具有数据处理能力的微处理器(CPU)、存储器(含ROM和RAM)、I/O接口电路等集成在同一块芯片上,构成一个既小巧又完善的计算机硬件系统。其在单片机程序的控制下能准确、迅速、高效地完成程序设计者预先规定的任务。1单片机的发展阶段单片机的发展阶段第一阶段(19761979)单片机的探索阶段Intel公司MCS-48为代表 第二阶段(19791982)单片机的完善阶段
3、Intel公司MCS-51为代表 第三阶段(19821990)16位单片机推出阶段Intel公司MCS-96为代表 第四阶段(1990至今)微控制器全面发展阶段 Microchip PIC Motorola 为代表 MC68HC2AT89S51的功能特性的功能特性兼容MCS-51系列产品。4KB Flash存储器,支持 在线编程,可反复擦写 1 000次。128B片内RAM。工作电压4.55.5 V。全静态时钟033 MHz。32个双向I/O口线。2个16位定时/计数器。5个中断源,2个中断优 先级。1个全双工UART串行口。看门狗定时器。低功耗空闲和省电模式。二、单片机的封装形式及引脚定义二
4、、单片机的封装形式及引脚定义PDIP封装形式的封装形式的AT89S51单单片机的引脚描述片机的引脚描述引脚定引脚定义义引脚引脚编编号号功能描述功能描述VCC40电源引脚,接+5V电源GND20接地引脚,接+5V电源地XTAL1和XTAL219和18时钟引脚,外接时钟电路RST9复位引脚,用于单片机复位P0.0P0.7(P0口)39321.作为8位双向I/O口使用2.在访问外部存储器或外部接口电路时,分时用作低8位地址线和数据总线P1.0P1.7(P1口)181.作为8位准双向I/O口使用2.用于ISP编程下载(P1.5、P1.6、P1.7)(续续表)表)引脚定引脚定义义引脚引脚编编号号功能描述
5、功能描述P2.0P2.7(P2口)21181.作为8位准双向I/O口使用2.在访问外部存储器或外部接口电路时,分时用作高8位地址线P3.0P3.7(P3口)10171.作为8位准双向I/O口使用2.具有第二功能(详见课题五中具体应用)/Vpp31外部/内部程序存储器使能端29外部程序存储器读选通信号端ALE/30地址锁存允许信号端三、单片机内部结构三、单片机内部结构单片机各片机各组成部分成部分说明明组组成部分成部分说说 明明中央处理器(CPU)单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入输出功能等操作
6、数据存储器(RAM)内部有256B的RAM,其中包含128B用户数据存储单元(地址为00H7FH)和128B专用寄存器单元(地址为80HFFH)程序存储器(ROM)内部有4KB掩膜ROM,用于存放用户程序,原始数据或表格定时/计数器(T0、T1)含有两个16位的定时/计数器(T0、T1),以实现定时或计数功能组组成部分成部分说说 明明并行输入输出(I/O)口 共有4组8位并行I/O口(P0、P1、P2和P3),用于单片机与外围设备之间的数据传输全双工串行口 内置一个全双工串行通信口,用于与其他设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用中断系统 共含有5个中断
7、源(2个外部中断、2个定时/计数器中断和1个串行中断),并具有2级的优先级别选择时钟电路 需外接晶振和微调电容构成振荡电路,产生单片机运行的脉冲时序(续表)(续表)四、单片机的四、单片机的I/O端口端口 AT89S51单片机有4个I/O端口,即P0、P1、P2和P3。每个端口均由8个引脚(即8位)构成,常用做输入输出。P0口为三态双向输入输出口。在不扩展存储器或者I/O接口时,作为双向通用I/O口,直接连接外部的输入输出设备,可以驱动8个TTL门电路。当用于外接存储器或者扩展I/O接口时,P0口作为分时复用的低8位地址(A0A7)/数据(D0D7)总线口。1P0口口P0口为漏极开路输出端口,即
8、漏极没有电阻接至电源,所以当要输出高电平时,必须在P0口的外部接一个470 左右的上拉电阻至电源。图示为单片机使用P0口驱动外部发光二极管的连接电路。其他3个口(P1、P2和P3口)各位结构中已接有上拉电阻,因此不需要外接上拉电阻。P1口作为通用I/O口使用时与P0口相似,其内部具有提升电路,输出可以直接驱动4个TTL门电路。同时P1口的部分引脚还具有第二功能:2P1口口 P1.5:MOSI端(用于端(用于ISP编程,主出从入数据端)。编程,主出从入数据端)。P1.6:MOSO端(用于端(用于ISP编程,主入从出数据端)。编程,主入从出数据端)。P1.7:SCK端(用于端(用于ISP编程,串行
9、时钟输入端)。编程,串行时钟输入端)。P2口为双功能口。既可作为通通用用的的I/O口口使用,又可作为系统扩展时的高高8位地址总线位地址总线使用。当用做通用I/O口时,其数据传输与P0口控制相似,其内部具有提升电路,可以直接驱动 4 个TTL门电路。当用于外接存储器或者扩展I/O接口时,P2口作为分时复用的高8位地址(A8A15)总线口,与P0口共同构成16位地址总线(A0A15)。3P2口口引脚引脚符号名称符号名称功能功能P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2外部中断0输入P3.3外部中断1输入P3.4T0定时器0的外部输入P3.5T1定时器1的外部输入P3.6外部数据存
10、储器写信号P3.7外部数据存储器读信号P3口做通用I/O口使用时,结构和工作过程与P2口完全相同。同时P3口还可按位复用为第二功能,具体见下表。4P3口口在AT89S51的I/O口中,只有P1口没有第二功能。在实际应用中P0P3口均可作为双向通用I/O口使用,但当某一端口既做输入又做输出使用时,在输出转输入操作时应先给该端口写“1”然后再读。例例 P1口在输出转输入操作时的软件编程方法。口在输出转输入操作时的软件编程方法。汇编:汇编:MOV P1,#23H C51:P1=0 x23;/P1口作输出口使用 MOV P1,#0FFH P1=0 xff;/先将P1口置“FF”MOV A,P1 ACC
11、=P1;/P1口由输出转输入口若端口只作输入口使用,则读数时不必再向端口先写“1”。P0口作口作为为输输出口使用出口使用单单片机片机最小系最小系统统P2口作口作为为输输入口使用入口使用单片机应用电路生生产产厂家厂家类别类别型号型号举举例例图图 片片ATMEL公司AT89系列AT89C2051(DIP封装)AT89S52(DIP封装)AT90系列(AVR单片机)ATmega48(QFP封装)查查找找资资料,了解常料,了解常见见的其他的其他类类型型单单片机。片机。生产厂家生产厂家类别类别型号举例型号举例图图 片片STC公司STC单片机STC89C52RC(DIP封装)MicroChip公司PIC单
12、片机PIC16F877A(DIP封装)PHILIPS公司51LPC系列LPC2148FBD64(LCC封装)生产厂家生产厂家类别类别型号举例型号举例图图 片片TI公司MSP430系列MSP430F1612(QFP封装)TMS370系列TMS370C722FNT(LCC封装)Motorola公司MC68HC908系列MC68HC908SR12CB(DIP封装)单击此处返回目录单击此处返回目录单击此处返回目录单击此处返回目录任任务务2 WAVE软件的应用和程序烧录软件的应用和程序烧录1熟悉WAVE软件的集成开发环境。2掌握WAVE软件的基本操作方法。利用WAVE编程软件,创建一个流水灯.ASM文件
13、,并完成对流水灯程序的录入、编译及程序的仿真及下载。一、一、WAVE软件件简介介WAVE软件是一款单片机汇编调试软件,可以进行软件模拟仿真(不用仿真器也能模拟运行用户程序)和硬件仿真;可仿真MCS51系列、MCS196系列、Microchip PIC系列CPU;支持汇编、PLM语言和C语言的程序设计,界面友好。二、二、WAVE 软件常用窗口介绍软件常用窗口介绍CPU窗口信息窗口存储器窗口 三、程序三、程序烧录烧录器器EP3.0程序烧录器EP3.0程序烧录器支持 ATMEL、STC、SST等型号单片机的烧写,具有性能稳定、烧录速度快等优点。该烧录器采用直接USB供电,串口通信。一、新建源程序一、
14、新建源程序1运行VW.EXE,打开软件开发界面。2设置仿真器。单击“仿真器”“仿真器设置”命令3建立、编辑及保存文件。1)新建文件。单击“文件”“新建文件”命令。2)文件保存。单击“文件”“保存文件”命令,输入文件名完成保存。3)程序输入:流水灯.ASM。源程序的输入二、程序的编译二、程序的编译单击“项目”“编译”/“全部编译”命令程序错误,编译出错程序正确,生 成.hex文件三、程序的调试和仿真运行三、程序的调试和仿真运行1程序的调试单击“执行”“单步”/“跟踪”/“执行到光标处”命令,调试程序。在程序调试过程中执行“窗口”“CPU窗口”/“数据窗口”等命令,可打开“CPU窗口”“数据窗口”
15、等进行程序调试数据观察。2 仿真运行(3)复位“”:终止调试过程,程序将被复位。(1)全速执行“”:全速运行程序。(4)设置/取消断点:将光标所在行设为断点,如果该行原来已为断点,则取消该断点。(2)暂停“”:暂停正在全速执行的程序。四、程序的烧录四、程序的烧录1检测芯片ID,根据烧录单片机的类型选择具体型号。2单击“(自动)擦除器件”命令,将要烧录的单片机中之前的程序擦除。3单击“(自动)装入文件”命令,添加通过编译后的“*.HEX”或“*.BIN”文件。4单击“写器件”命令,将所选“*.HEX”或“*.BIN”文件写入单片机。用串口数据线将烧录机与计算机的COM口连接好,然后将要烧录的单片
16、机放入编程器IC锁紧座并锁紧。运行程序烧录软件“Easy 51Pro.exe”进行程序的烧录:烧录完成后状态信息单击此处返回目录单击此处返回目录单击此处返回目录单击此处返回目录5单击“(自动)效验数据”,检验数据是否出错,当提示“效验成功,数据正确”时,说明此次烧录成功。6取下单片机,插入电路板,观察实际运行情况。任任务务3 熟悉熟悉单单片机存片机存储储器器结结构构1了解单片机存储器的分类及结构。2掌握单片机数据存储器(RAM)的具体配置。利用WAVE汇编软件对软件中虚拟的单片机内部存储单元进行操作,具体操作要求如下:1将单片机片内数据存储器的20H、21H、22H、23H单元分别赋值为01H
17、、02H、03H、04H,并观察它们在位寻址区内是如何存储的。2给单片机片内数据存储器第二组工作寄存器中R0 R7分别赋值01H、02H、03H、04H、05H、06H、07H、08H。一、单片机存储器结构分类一、单片机存储器结构分类片内数据存储器片内数据存储器和片内程序存储器片内程序存储器1程序存储器程序存储器用于存放用户程序以及固定的表格和常数,其存储单元只能读不能写只能读不能写。采用16位编址,片内有4KB的ROM,片外有64KB的ROM,最低的4KB是公用的,采用同一指令MOVC进行访问。用外部引脚EA电平高低区分低4KB空间访问的是内部ROM还是外部ROM。当EA接高电平时,单片机从
18、片内ROM取指令,当地址超过0FFFH后,则自动转向片外ROM取指令;当EA接低电平时,单片机只从片外取指令。1单片机复位后,程序地址寄存器PC的内容为0000H,单片机自动从0000H单元取指令执行。2从0003H0023H有5个中断入口地址,主程序一定要存放在0023H之后的存储单元中,因此,一般都在0000H单元放一条跳转指令,用户程序则由转移之后的地址开始执行。3对于一般不太复杂的用户程序,单片机内部的程序存储器足以存储,不必考虑片外程序存储器,因此硬件上只要将单片机的EA脚接+5 V电源即可。2数据存储器数据存储器(随机存储器)51系列单片机片内256字节数据存储器分为两部分:低12
19、8字节为用户数据RAM单元,地址为00H7FH,该部分作为用户数据存取使用;高128字节为特殊功能寄存器(SFR)单元,地址为80HFFH,该部分作为单片机功能控制使用。用于存取程序运行时的中间结果数据等,存储单元既可读又可写既可读又可写。51单片机片内单片机片内RAM分配图分配图工作寄存器区32个字节又分为4个子区,如左图所示。每个寄存器区分别由工作寄存器R0R7组成。程序运行时,通过设置特殊功能寄存器中的程序状态字寄存器(PSW)的第3位和第4位(RS0和RS1)的值来决定用哪个工作寄存器区,如右图所示。不用的工作寄存器可作为一般存储器供用户使用,CPU复位后会自动选中区0。二、常用特殊功
20、能寄存器二、常用特殊功能寄存器它是运算器中一个最重要的特殊功能寄存器,地址为E0H,用于存放参加运算的操作数和运算结果,在指令系统中常常用助记符A表示累加器。寄存器B也是运算器中的一个工作寄存器,地址为F0H,主要在乘法和除法运算中存放操作数和运算结果,在其他运算中,也可以作为一个中间结果寄存器使用。1累加器累加器 ACC2寄存器寄存器 B用于存放程序运行的状态信息,地址为D0H。这个寄存器的某些位可由软件设置,有些位则由硬件运行时自动设置。3程序状态字寄存器程序状态字寄存器 PSW程序状态字寄存器程序状态字寄存器 PSW各位的定义及功能各位的定义及功能位序位序位标志位标志位名称位名称功功 能
21、能PSW.0P奇偶标志位表示累加器A中内容的奇偶性,若A中有奇数个“1”,则P置“1”,否则清“0”PSW.1-保留位,未用PSW.2OV溢出标志位当执行算术运算时,如果产生溢出,则由硬件将OV置“1”或清“0”PSW.3PSW.4RS1RS0工作寄存器区控制选择位用于设置究竟用哪个工作寄存器区(续表)(续表)位序位序位标志位标志位名称位名称功功 能能PSW.5F0用户标志位供用户设置的标志位,由软件置“1”或清“0”PSW.6AC辅助进位标志位进行加、减法运算时,当低4位向高4位产生进位或借位时,AC置“1”,否则清“0”。该标志位常用于十进制调制和压缩BCD码运算等PSW.7CY进位标志位
22、在进行加、减法运算时,当运算结果产生进位或借位时,CY置“1”,否则清“0”。在进行位操作时,作为位累加器(C)使用4数据指针数据指针 DPTR数据指针为16位寄存器,地址为83H和82H,编程时既可以按16位寄存器来使用,也可以按2个8位寄存器来使用,即高字节寄存器DPH(地址为83H)和低字节寄存器DPL(地址为82H)。DPTR主要是用来存放16位地址,当对64KB外部数据存储器寻址时,作为间址寄存器使用。当访问程序存储器时,DPTR可用做基址寄存器,采用基址+变址寻址方式访问程序存储器。PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64KB。PC在物理上是独立的,不
23、属于特殊功能寄存器区中的寄存器。PC执行完一条指令后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按用户要求执行。三、程序计数器三、程序计数器 PC内部RAM位寻址区20H2FH单元,共有16个字节,128个位,位地址为00H7FH,CPU能直接寻址这些位,执行例如置“1”、清“0”、取反、位传送和位逻辑运算等操作。四、内部四、内部RAM位寻址区位地址位寻址区位地址一、对片内数据存储器赋值一、对片内数据存储器赋值1打开位数据窗口2双击DATA(片内数据存储器)中20H、21H、22H、23H内存单元,分别进行赋
24、值,观察对应的位寻址区中数据的变化情况。二、对第二组工作寄存器中二、对第二组工作寄存器中R0R7赋值赋值1 打开CPU窗口2修改程序状态字PSW中的RS1和RS0的值,使其分别等于1、0,使工作寄存器组工作在第2组。单击此处返回目录单击此处返回目录单击此处返回目录单击此处返回目录3 修改10H17H单元的值,观察R0R7中数据的变化。任任务务4 单单片机最小系片机最小系统设计统设计1了解单片机最小系统组成。2掌握单片机最小系统的设计与制作方法。单片机是一种微控制器,任何微控制器正常工作都必须具备最基本的条件,即要有正确的电源、时钟和复位电路(即最小系统)。因此,在所有的单片机应用电路中,单片机
25、必须满足以上三个条件才能正常运行工作。本任务就是要认识单片机最小系统的组成及各部分的作用,并最终完成单片机最小系统的设计与制作。一、电源电路一、电源电路 单片机的工作电压单片机的工作电压 单片机要想工作,首先要有为整个系统提供电源的供电模块。电源模块的稳定可靠是系统平稳运行的前提前提和基础基础。51系列单片机工作电源的电压一般为+4.5+5.5 V,典型值为+5V,即将单片机的VCC脚接+5V电源,GND脚接地。二、时钟电路二、时钟电路 单片机的单片机的“心脏心脏”即单片机内部的高增益反向放大器通过XTAL1、XTAL2引脚外接作为反馈元件的片外晶体振荡器(呈感性)与电容组成的并联谐振回路构成
26、一个自激振荡器,向内部的时钟电路提供振荡时钟。1内部时钟方式内部时钟方式外部时钟方式常用于多片51单片机同时工作,以便于同步。它是将外部振荡脉冲信号通过CMOS门电路输入至XTAL1脚,XTAL2脚悬空,如下图所示。时钟电路异常也会引起单片机CPU不工作,可通过测量ALE脚是否有六分频信号输出来判断振荡电路是否起振。2外部时钟方式外部时钟方式3时序时序51系列单片机的一个机器周期由12个振荡周期组成,分为6个状态,分别称为S1、S2、S3、S4、S5、S6,每个状态都包含P1和P2两相。振荡周期、状态周期、机器周期和指令周期的关系如下:例例AT89S51外接晶振频率为外接晶振频率为12 MHz
27、,则,则4个时个时间周期的具体值为:间周期的具体值为:解:振荡周期 1/12s状态周期 2振荡周期 1/6s机器周期 6状态周期 1s指令周期 (14)机器周期 1 4s三、复位电路三、复位电路单片机恢复初始状态值单片机恢复初始状态值1硬件复位硬件复位上电复位电路 上电与按键均有效的复位电路 2软件复位软件复位即看门狗复位,AT89S51内部自带看门狗定时器,由一个14位定时器及WDTRST(Watch Dog Time RST)寄存器构成。利用软件控制看门狗定时器,当系统进入死循环(程序跑飞)时,看门狗定时器自动复位,让系统恢复正常运作状态。一、画出单片机最小系统电路原理图一、画出单片机最小
28、系统电路原理图步步骤骤说说明明示范示范图图片片1材料准备参照元器件清单表二、备料二、备料三、硬件电路焊接及调试过程三、硬件电路焊接及调试过程 步步骤骤说说明明示范示范图图片片2硬件焊接注:单片机的 /VPP端接电源,选内部存储器电路板元件布局图电路板背面 /Vpp端GNDVCC(+5V)步步骤骤说说明明示范示范图图片片3通电调试最小系统运行图单击此处返回目录单击此处返回目录单击此处返回目录单击此处返回目录任任务务5 Proteus ISIS 7.5软件的使用软件的使用 1熟悉Proteus ISIS 7.5仿真软件的集成工作环境。2掌握Proteus ISIS 7.5仿真软件的基本使用方法。通
29、过绘制、编辑跑马灯控制电路原理图,熟悉Proteus ISIS 7.5仿真软件工作环境,并完成软件系统和硬件系统的连接调试。一、进入一、进入Proteus ISIS的方法的方法1双击桌面上的ISIS 7 Professional图标“”。2单击“开始”“程序”“Proteus 7 Professional”“ISIS 7 Professional”命令。二、工作界面二、工作界面一、新建一、新建设计文件文件1打开Proteus ISIS 工作界面,单击“文件”“新建设计”命令,弹出模板选择窗口,选择好模板后单击“OK”按钮。模板选择窗口2单击“文件”“保存设计”命令,在弹出的保存窗口中设置好保存
30、路径和文件名,最后单击“保存”按钮,则完成新建设计文件的保存。保存窗口在“”按钮中单击“P”按钮进入元器件选择窗口。二、添加元器件二、添加元器件添加元器件主要有两种方法:添加元器件主要有两种方法:1在关键字文本框中直接输入所需元件名称,则会在元件列表区出现与关键字相匹配的元件列表。选中所需元件,单击“确定”按钮或直接双击,便可将器件添加到ISIS的对象选择器窗口中。2在元件类别列表中选择元件所属类,然后在元件子类别列表中选择所属子类,再从元件列表区选择出所需元件。三、元件的放置、移动、旋转、删除和属性设置三、元件的放置、移动、旋转、删除和属性设置1放置放置在对象选择器中单击选中要放置的元件,然
31、后将光标移动到原理图的编辑区,在任意位置单击鼠标左键,即可出现一个随光标浮动的元器件原理图符号,移动光标到适当位置再单击鼠标左键即可完成该元器件的放置。2移动移动在原理图编辑窗口中,左击选中需要移动的元件(默认选中时为红色),再按住鼠标左键拖动元件至适当位置,释放鼠标左键,并左击空白处撤销选中状态,即可完成元件的移动。3旋转旋转放置元件前,在对象选择器窗口先选中要旋转的元件,再根据需要单击“”方位控制按钮,即可更改元件的放置方向。4删除删除方法1:右键双击该元件;方法2:先左击选中该元件,再按下“Delete”键删除。5属性设置属性设置用鼠标左键双击要编辑的元件,可弹出编辑元件窗口对元件相关属
32、性进行设置。元件的放置、移动、旋转、删除和属性设置操作均可通过右击该元件,弹出如图所示的快捷菜单来操作完成。四、放置电源、地四、放置电源、地单击“”图标,选中“POWER”行,将鼠标移到原理图编辑窗口的适当位置再单击,便可引入“电源”。选中“GROUND”,便可引入“地”。五、元器件的连线五、元器件的连线1两个两个对象之象之间的的连线 引脚间直接连线任意角度的连线设定路径连线 2总线与分支线的画法总线与分支线的画法 (1)单击总线按钮“”。总线与分支线之间的连接(2)在合适位置单击鼠标左键放置总线起点,双击鼠标左键放置总线终点。(3)将光标移近对象引脚末端,单击引出分支线,使其终点移近总线并与
33、总线中心相连,同时按住“Ctrl”键,即可画出与总线相连的分支线。在元件的连线过程中,如果下一次的连线路径与上一次的连线相同,则可在下一个要连元件的引脚上左双击,这样就会形成一条和上一条路径相同的连线。当电路中多根数据线、地址线、控制线并行时建议使用总线设计。3添加网络标号添加网络标号在Proteus仿真时,系统会默认网络标号相同的引脚是连接在一起的。六、电气检测六、电气检测单击菜单“工具”“电器规则检查”命令进行电气检测。七、仿真运行七、仿真运行1双击电路原理图中的AT89C51单片机,在弹出的属性编辑窗口中载入“跑马灯.hex”文件。在仿真运行中,各元件引脚会呈现不同的颜色。例如红点代表输
34、出高电平,蓝点代表低电平,灰点代表高阻状态,黄点表示短路。可以根据引脚的颜色来区分此时引脚输出的状态。2单击仿真运行“”按钮开始仿真。单击此处返回目录单击此处返回目录单击此处返回目录单击此处返回目录任务任务1 数据传送类指令的应用数据传送类指令的应用任务任务2 算术运算类指令的应用算术运算类指令的应用任务任务3 控制转移类指令和位操作类指令的应用控制转移类指令和位操作类指令的应用任务任务4 逻辑运算类指令的应用逻辑运算类指令的应用任任务务1 数据数据传传送送类类指令的指令的应应用用 1掌握MCS-51单片机的寻址方式。2掌握数据传送类指令的功能及用法。将LED0LED7八只发光二极管接在单片机
35、的P1.0P1.7,如图所示。编程实现如下功能,并在Protues软件中进行仿真。1分别运用立即数寻址、直接寻址、寄存器寻址和寄存器间接寻址方式结合数据传送指令实现LED0、LED2、LED4、LED6亮,LED1、LED3、LED5、LED7灭。2运用交换指令实现LED0、LED1、LED2、LED3亮,LED4、LED5、LED6、LED7灭。一、指令的格式一、指令的格式一条指令通常由操作码和操作数两部分组成。操作码是用来规定指令所完成的操作的,而操作数则表示操作的对象。在51系列的指令中,有单字节、双字节和三字节等不同长度的指令。1单单字字节节指令指令指令只有一个字节,操作码和操作数在同
36、一个字节中。在51系列的指令系统中,共有49条单字节指令。例例 INC A2双字节指令双字节指令双字节指令包括两个字节。其中一个字节为操作码,另一个字节为操作数。在51系列的指令系统中,共有45条双字节指令。例例 MOV A,#data3三字三字节节指令指令在三字节指令中,操作码占一个字节,操作数占两个字节,其中操作数既可能是数据,也可能是地址。在51系列的指令系统中,共有17条三字节指令。例例 CJNE A,#data,rel汇编语言指令基本格式见下表:汇编语言指令基本格式见下表:标号:标号:操作码操作码助记符助记符操作数操作数1,操作数,操作数2,操作数,操作数3;注释;注释LOOP:MO
37、VA,30H-;A(30)MAIN:INCA-;A A+1DELAY:CJNEA,#30H,LOOP;比较指令二二、常用符号与助常用符号与助记记符符 Rn:工作寄存器中的寄存器Rn,R1R7之一。Ri:工作寄存器中的寄存器R0或R1。#data:8位立即数。#data16:16位立即数。direct:片内RAM或SFR的地址(8位)。Ri(i=0,1):间接寻址寄存器。Bit:片内RAM或SFR的位地址。1 常用符号常用符号 addr11:11位目的地址。addr16:16位目的地址。rel:补码形式的8位地址偏移量,偏移范围为-128127。/:位操作指令中,该位求反后参与操作,不影响该位。
38、X:片内RAM的直接地址或寄存器。(X):相应地址单元中的内容。(X):由X寻址的单元中的内容。:箭头右边的内容传送到箭头的左边。2 助助记记符符助记符用于规定指令进行何种操作,共42种,一般由25个英文字母组成。常用助记符及其功能见下表:助记符助记符常见格式常见格式功能功能MOVA,R0对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送MOVXA,R0对外部RAM的数据进行传送MOVCA,A+DPTR程序存储器内容与其他存储单元间数据进行传送XCHA,R0字节交换XCHDA,R0低半字节交换助记符助记符常见格式常见格式功能功能SWAPA低4位与高4位交换PUSHA入栈POPA出栈SE
39、TBC置1CLRC清0ANLA,R0逻辑与JNZLOOPA不为则转移(续表)(续表)三三、MCS51单片机的寻址方式单片机的寻址方式1 立即寻址立即寻址寻址方式是指某一个CPU指令系统中规定的寻找操作数所在地址的方式。立即寻址即直接在指令中给出操作数,一般把指令中的操作数称为立即数。为了与直接寻址相区别,在操作数前加“#”表示。例例 MOV A,#30H ;A30H MOV DPTR,#40H ;DPTR40H例例 MOV A,30H ;A(30H)MOV 40H,30H ;(40H)(30H)2直接直接寻寻址址直接寻址就是在指令中给出操作数的地址。3寄存器寄存器寻寻址址寄存器寻址就是将寄存器
40、中的内容作为操作数,寄存器一般指累加器A或工作寄存器R0R7。例例 MOV A,Rn ;A(Rn)MOV Rn,A ;Rn(A)MOV B,A ;B(A)例例 MOV A,Ri ;A (Ri)4寄存器间接寻址寄存器间接寻址5变址寻址变址寻址例例 MOVC A,A+DPTR;A (A)+(DPTR))MOVC A,A+PC ;A (A)+(PC))寄存器间接寻址就是以寄存器中的内容作为地址,将该地址内的数作为操作数。变址寻址用于访问程序存储器中的数据表格,它以基址寄存器(DPTR 或PC)的内容为基本地址,加上变址寄存器A的内容形成16位的地址,访问程序存储器中的数据表格。例例 JNZ 60H
41、;A=0 PCPC+2 ;A0 PCPC+60H 6相对寻址相对寻址相对寻址是以程序计数器PC的当前值作为基地址,与指令中给出的相对偏移量rel进行相加,把所得之和作为程序的转移地址。转移的范围为-128+127,使用中应注意rel的范围不要超出。该指令中60H为偏移量,偏移量为一个8位有符号数,其取值范围在-128+127之间,所以程序既可以向上转移,也可以向下转移。例例 SETB TR0 ;TR01 CLR 00H ;(00H)0 MOV C,bit ;Cbit ANL C,bit ;CCbit7位寻址位寻址位寻址就是对位地址空间的每个位进行位状态传送、状态控制、逻辑运算操作。在51系列单
42、片机中,与外部存储器RAM打交道的只能是A累加器。所有需要传送入外部RAM的数据必需通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此能看出内外部RAM的区别,内部RAM间能直接进行数据的传递,而外部则不行。除了目的操作数为ACC的指令影响奇偶标志P外,其他一般不影响标志位。四、数据四、数据传传送送类类指令(共指令(共29条)条)1以累加器以累加器A为目的操作数类指令为目的操作数类指令数据传送类指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。MOVA,data;(A)(data)MOVA,#data;(A)#data MOVA,
43、Rn;(A)(Rn)MOVA,Ri;(A)(Ri)功能功能:把源操作数的内容送到累加器A。寻址方式寻址方式:直接、立即、寄存器和寄存器间接4种寻址方式。2以寄存器以寄存器Rn为目的操作数的指令为目的操作数的指令MOVRn,data;(Rn)(data)MOVRn,#data;(Rn)#dataMOVRn,A;(Rn)(A)功能功能:把源操作数指定的内容送到所选定的工作寄存器 Rn中。寻址方式寻址方式:直接、立即和寄存器3种寻址方式。3以直接地址为目的操作数的指令以直接地址为目的操作数的指令功能功能:把源操作数指定的内容送到由直接地址data所选定的片内RAM中。寻寻址方式址方式:直接、立即、寄
44、存器和寄存器间接4种寻址方式。MOVdata,data;(data)(data)MOVdata,#data;(data)#dataMOVdata,A;(data)(A)MOVdata,Rn;(data)(Rn)MOVdata,Ri;(data)(Ri)4以间接地址为目的操作数的指令以间接地址为目的操作数的指令功能功能:把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。寻址方式寻址方式:直接、立即和寄存器3种寻址方式。MOVRi,data;(Ri)(data)MOVRi,#data;(Ri)#dataMOVRi,A;(Ri)(A)5查表指令查表指令功能功能:对存放于程序存储器中的数据表
45、格进行查找传送。寻址方式寻址方式:使用变址寻址方式。MOVCA,A+DPTR;(A)(A)+(DPTR)MOVCA,A+PC;(A)(A)+(PC)6累加器累加器A与片外数据存储器与片外数据存储器RAM传送指令传送指令功能功能:用于累加器A与片外RAM间的数据传送。寻寻址方式址方式:使用寄存器寻址方式。MOVXDPTR,A;(DPTR)(A)MOVXA,DPTR;(A)(DPTR)MOVXA,Ri;(A)(Ri)MOVXRi,A;(Ri)(A)7堆栈操作类指令堆栈操作类指令功能功能:把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。PUSH dat
46、a;SP SP+1,(SP)(data)POPdata;(data)(SP)SP(SP)-1这类指令只有两条,第一条称为入栈操作指令,第二条称为出栈操作指令。1单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。2进栈是堆栈指针首先加1,然后直接寻址单元中的数据再送到堆栈指针SP所指的单元中。而出栈是指针SP所指的单元数据先送到直接寻址单元中,然后堆栈指针SP再进行减1操作。8交换指令交换指令功功能能:把累加器A中的内容与源操作数所指的数据相互交换。XCHD是把累加器A中的内容的
47、低4位与源操作数所指的数据的低4位相互交换。SWAP将A中的值的高4位与低4 位进行交换。XCHA,Rn;(A)(Rn)XCHA,Ri;(A)(Ri)XCHA,data;(A)(data)XCHDA,Ri;(A3-0)(Ri)3-0)SWAPA;(A3-0)(A7-4)9十六位数据十六位数据传传送指令送指令 功能功能:把16位常数送入数据指针寄存器,其中高8位送到DPH,低8位送到DPL。MOVDPTR,#data16;(DPH)#dataH,;(DPL)#dataL一、在一、在Proteus中绘制仿真电路图中绘制仿真电路图二、数据传送类指令二、数据传送类指令1.ASM1 编写程序编写程序2
48、编译程序并仿真编译程序并仿真三、数据传送类指令三、数据传送类指令2.ASM1 编写程序编写程序单击此处返回目录单击此处返回目录单击此处返回目录单击此处返回目录2编译程序并仿真编译程序并仿真任任务务2 算算术术运算运算类类指令的指令的应应用用 1理解MCS-51单片机算术运算类指令的功能。2掌握算术运算类指令的用法。3通过编程计算梯形的面积,掌握算术运算类指令的应用。51系列单片机为单芯片微控制器(简称MCU),内部含有具有数据运算处理能力的CPU。而在一些单片机应用系统中,往往需要对外部复杂数据进行运算处理。本任务主要通过编程计算图示梯形的面积来学习对外部数据进行算数运算处理的方法(已知梯形的
49、上底长为a,下底长为b,高是h)。算术运算类指令主要包括ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA等,如图所示。一、不一、不带进带进位的加法指令位的加法指令ADD A,Rn;A(A)+(Rn)ADD A,direct;A(A)+(direct)ADD A,Ri;A(A)+(Ri)ADD A,#data;A(A)+data 例例(A)=85H,R0=20H,(20H)=0AFH,执行指令:ADD A,R0结果:(A)=34H;CY=1;AC=1;OV=1。二二、带进位的加法指令带进位的加法指令ADDCA,Rn;A(A)+(Rn)+(CY)ADDCA,direct;A(A)+
50、(direct)+(CY)ADDCA,Ri;A(A)+(Ri)+(CY)ADDCA,#data;A(A)+data+(CY)例例 (A)=85H,(20H)=0FFH,CY=1,执行指令:ADDC A,20H结果:(A)=85H;CY=1;AC=1;OV=0。三三、带借位的减法指令带借位的减法指令SUBBA,Rn;A(A)(Rn)(CY)SUBBA,direct;A(A)(direct)(CY)SUBBA,Ri;A(A)(Ri)(CY)SUBBA,#data;A(A)data(CY)例例 (A)=4EH,R0=5DH,执行指令:SUBB A,R0结果:(A)=F1H,CY=1(有借位),OV=