版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机应用技术(汇编语言)任务1 了解单片机的硬件结构任务2 WAVE软件的应用和程序烧录任务3 熟悉单片机存储器结构任务5 Proteus ISIS 7.5软件的使用任务4 单片机最小系统设计 任务1 了解单片机的硬件结构 1了解单片机的基本概念。2掌握AT89S51单片机的封装、引脚定义及其功能、I/O端口及其功能。3了解单片机的内部结构。在利用单片机实现预定的设计目标前,首先需要对单片机有一个基本的了解。本任务就是建立对单片机的一个感性认识,学会识别不同封装形式单片机的引脚编号,并掌握各个引脚功能的定义。在了解单片机内部结构的基础上,初步掌握单片机I/O端口与外围电路的设计思路。一、单片
2、机概述单片机是一种集成电路芯片,它采用超大规模集成电路技术将具有数据处理能力的微处理器(CPU)、存储器(含ROM和RAM)、I/O接口电路等集成在同一块芯片上,构成一个既小巧又完善的计算机硬件系统。其在单片机程序的控制下能准确、迅速、高效地完成程序设计者预先规定的任务。1单片机的发展阶段第一阶段(19761979)单片机的探索阶段Intel公司MCS-48为代表 第二阶段(19791982)单片机的完善阶段Intel公司MCS-51为代表 第三阶段(19821990)16位单片机推出阶段Intel公司MCS-96为代表 第四阶段(1990至今)微控制器全面发展阶段 Microchip PIC
3、 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串行口。看门狗定时器。低功耗空闲和省电模式。二、单片机的封装形式及引脚定义PDIP封装形式的AT89S51单片机的引脚描述引脚定义引脚编号功能描述VCC40电源引脚,接+5V电源GND20接地引脚,接+5V电源地XTAL1和XTAL219和18时钟引脚,外接时
4、钟电路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)(续表)引脚定义引脚编号功能描述P2.0P2.7(P2口)21181.作为8位准双向I/O口使用2.在访问外部存储器或外部接口电路时,分时用作高8位地址线P3.0P3.7(P3口)10171.作为8位准双向I/O口使用2.具有第二功能(详见课题五中具体应用) /Vpp31外部/内部程序存储器使能端29外部程序存储器读
5、选通信号端ALE/ 30地址锁存允许信号端三、单片机内部结构单片机各组成部分说明组成部分说 明中央处理器(CPU) 单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入输出功能等操作数据存储器(RAM) 内部有256B的RAM,其中包含128B用户数据存储单元(地址为00H7FH)和128B专用寄存器单元(地址为80HFFH)程序存储器(ROM) 内部有4KB掩膜ROM,用于存放用户程序,原始数据或表格定时/计数器(T0、T1) 含有两个16位的定时/计数器(T0、T1),以实现定时或计数功能组成部分说 明并
6、行输入输出(I/O)口 共有4组8位并行I/O口(P0、 P1、P2和P3),用于单片机与外围设备之间的数据传输全双工串行口 内置一个全双工串行通信口,用于与其他设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用中断系统 共含有5个中断源(2个外部中断、2个定时/计数器中断和1个串行中断),并具有2级的优先级别选择时钟电路 需外接晶振和微调电容构成振荡电路,产生单片机运行的脉冲时序(续表)四、单片机的I/O端口 AT89S51单片机有4个I/O端口,即P0、P1、P2和P3。每个端口均由8个引脚(即8位)构成,常用做输入输出。P0口为三态双向输入输出口。在不扩展存储
7、器或者I/O接口时,作为双向通用I/O口,直接连接外部的输入输出设备,可以驱动8个TTL门电路。当用于外接存储器或者扩展I/O接口时,P0口作为分时复用的低8位地址(A0A7)/数据(D0D7)总线口。1P0口P0口为漏极开路输出端口,即漏极没有电阻接至电源,所以当要输出高电平时,必须在P0口的外部接一个470 左右的上拉电阻至电源。图示为单片机使用P0口驱动外部发光二极管的连接电路。其他3个口(P1、P2和P3口)各位结构中已接有上拉电阻,因此不需要外接上拉电阻。P1口作为通用I/O口使用时与P0口相似,其内部具有提升电路,输出可以直接驱动4个TTL门电路。同时P1口的部分引脚还具有第二功能
8、: 2P1口 P1.5:MOSI端(用于ISP编程,主出从入数据端)。 P1.6:MOSO端(用于ISP编程,主入从出数据端)。 P1.7:SCK端(用于ISP编程,串行时钟输入端)。P2口为双功能口。既可作为通用的I/O口使用,又可作为系统扩展时的高8位地址总线使用。当用做通用I/O口时,其数据传输与P0口控制相似,其内部具有提升电路,可以直接驱动 4 个TTL门电路。当用于外接存储器或者扩展I/O接口时,P2口作为分时复用的高8位地址(A8A15)总线口,与P0口共同构成16位地址总线(A0A15)。 3P2口引脚符号名称功能P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2外部
9、中断0输入P3.3外部中断1输入P3.4T0定时器0的外部输入P3.5T1定时器1的外部输入P3.6外部数据存储器写信号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,
10、#0FFH P1 = 0 xff; / 先将P1口置“FF” MOV A,P1 ACC = P1; / P1口由输出转输入口若端口只作输入口使用,则读数时不必再向端口先写“1”。 P0口作为输出口使用单片机最小系统P2口作为输入口使用单片机应用电路生产厂家类别型号举例图 片ATMEL公司AT89系列AT89C2051(DIP封装)AT89S52(DIP封装)AT90系列(AVR单片机)ATmega48(QFP封装)查找资料,了解常见的其他类型单片机。生产厂家类别型号举例图 片STC公司STC单片机STC89C52RC(DIP封装)MicroChip公司PIC单片机PIC16F877A(DIP封
11、装)PHILIPS公司51LPC系列LPC2148FBD64(LCC封装)生产厂家类别型号举例图 片TI公司MSP430系列MSP430F1612(QFP封装)TMS370系列TMS370C722FNT(LCC封装)Motorola公司MC68HC908系列MC68HC908SR12CB(DIP封装)单击此处返回目录任务2 WAVE软件的应用和程序烧录1熟悉WAVE软件的集成开发环境。2掌握WAVE软件的基本操作方法。利用WAVE编程软件,创建一个流水灯.ASM文件,并完成对流水灯程序的录入、编译及程序的仿真及下载。一、WAVE软件简介WAVE软件是一款单片机汇编调试软件,可以进行软件模拟仿真
12、(不用仿真器也能模拟运行用户程序)和硬件仿真;可仿真MCS51系列、MCS196系列、Microchip PIC系列CPU;支持汇编、PLM语言和C语言的程序设计,界面友好。二、WAVE 软件常用窗口介绍CPU窗口信息窗口存储器窗口 三、程序烧录器EP3.0程序烧录器EP3.0程序烧录器支持 ATMEL、STC、SST等型号单片机的烧写,具有性能稳定、烧录速度快等优点。该烧录器采用直接USB供电,串口通信。一、新建源程序1运行VW.EXE,打开软件开发界面。2设置仿真器。单击 “仿真器” “仿真器设置”命令3建立、编辑及保存文件。1)新建文件。单击“文件” “新建文件”命令。2)文件保存。单击
13、“文件” “保存文件”命令,输入文件名完成保存。3)程序输入:流水灯.ASM。源程序的输入二、程序的编译单击 “项目” “编译”/“全部编译”命令程序错误,编译出错程序正确,生成.hex文件三、程序的调试和仿真运行1程序的调试单击 “执行” “单步”/“跟踪”/“执行到光标处”命令,调试程序。在程序调试过程中执行“窗口” “CPU窗口” /“数据窗口”等命令,可打开“CPU窗口”“数据窗口”等进行程序调试数据观察。2 仿真运行(3)复位“ ”:终止调试过程,程序将被复位。(1)全速执行“ ”:全速运行程序。(4)设置/取消断点:将光标所在行设为断点,如果该行原来已为断点,则取消该断点。 (2)
14、暂停“ ”:暂停正在全速执行的程序。四、程序的烧录1检测芯片ID,根据烧录单片机的类型选择具体型号。2单击“(自动)擦除器件”命令,将要烧录的单片机中之前的程序擦除。3单击“(自动)装入文件”命令,添加通过编译后的“*.HEX”或“*.BIN”文件。4单击“写器件”命令,将所选“*.HEX”或“*.BIN”文件写入单片机。用串口数据线将烧录机与计算机的COM口连接好,然后将要烧录的单片机放入编程器IC锁紧座并锁紧。运行程序烧录软件“Easy 51Pro.exe”进行程序的烧录:烧录完成后状态信息单击此处返回目录5单击“(自动)效验数据”,检验数据是否出错,当提示“效验成功,数据正确”时,说明此
15、次烧录成功。6取下单片机,插入电路板,观察实际运行情况。任务3 熟悉单片机存储器结构1了解单片机存储器的分类及结构。2掌握单片机数据存储器(RAM)的具体配置。利用WAVE汇编软件对软件中虚拟的单片机内部存储单元进行操作,具体操作要求如下:1将单片机片内数据存储器的20H、21H、22H、23H单元分别赋值为01H、02H、03H、04H,并观察它们在位寻址区内是如何存储的。2给单片机片内数据存储器第二组工作寄存器中R0 R7分别赋值01H、02H、03H、04H、05H、06H、07H、08H。一、单片机存储器结构分类片内数据存储器和片内程序存储器1程序存储器用于存放用户程序以及固定的表格和
16、常数,其存储单元只能读不能写。采用16位编址,片内有4KB的ROM,片外有64KB的ROM,最低的4KB是公用的,采用同一指令MOVC进行访问。用外部引脚EA电平高低区分低4KB空间访问的是内部ROM还是外部ROM。当EA接高电平时,单片机从片内ROM取指令,当地址超过0FFFH后,则自动转向片外ROM取指令;当EA接低电平时,单片机只从片外取指令。1单片机复位后,程序地址寄存器PC的内容为0000H,单片机自动从0000H单元取指令执行。2从0003H0023H有5个中断入口地址,主程序一定要存放在0023H之后的存储单元中,因此,一般都在0000H单元放一条跳转指令,用户程序则由转移之后的
17、地址开始执行。3对于一般不太复杂的用户程序,单片机内部的程序存储器足以存储,不必考虑片外程序存储器,因此硬件上只要将单片机的EA脚接+5 V电源即可。2数据存储器(随机存储器)51系列单片机片内256字节数据存储器分为两部分:低128字节为用户数据RAM单元,地址为00H7FH,该部分作为用户数据存取使用;高128字节为特殊功能寄存器(SFR)单元,地址为80HFFH,该部分作为单片机功能控制使用。用于存取程序运行时的中间结果数据等,存储单元既可读又可写。51单片机片内RAM分配图工作寄存器区32个字节又分为4个子区,如左图所示。每个寄存器区分别由工作寄存器R0R7组成。程序运行时,通过设置特
18、殊功能寄存器中的程序状态字寄存器(PSW)的第3位和第4位(RS0和RS1)的值来决定用哪个工作寄存器区,如右图所示。不用的工作寄存器可作为一般存储器供用户使用,CPU复位后会自动选中区0。二、常用特殊功能寄存器它是运算器中一个最重要的特殊功能寄存器,地址为E0H,用于存放参加运算的操作数和运算结果,在指令系统中常常用助记符A表示累加器。寄存器B也是运算器中的一个工作寄存器,地址为F0H,主要在乘法和除法运算中存放操作数和运算结果,在其他运算中,也可以作为一个中间结果寄存器使用。1累加器 ACC2寄存器 B用于存放程序运行的状态信息,地址为D0H。这个寄存器的某些位可由软件设置,有些位则由硬件
19、运行时自动设置。3程序状态字寄存器 PSW程序状态字寄存器 PSW各位的定义及功能位序位标志位名称功 能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”,否则清
20、“0”。该标志位常用于十进制调制和压缩BCD码运算等PSW.7CY进位标志位在进行加、减法运算时,当运算结果产生进位或借位时,CY置“1”,否则清“0”。 在进行位操作时,作为位累加器(C)使用4数据指针 DPTR数据指针为16位寄存器,地址为83H和82H,编程时既可以按16位寄存器来使用,也可以按2个8位寄存器来使用,即高字节寄存器DPH(地址为83H)和低字节寄存器DPL(地址为82H)。DPTR主要是用来存放16位地址,当对64KB外部数据存储器寻址时,作为间址寄存器使用。当访问程序存储器时,DPTR可用做基址寄存器,采用基址+变址寻址方式访问程序存储器。PC是一个16位的计数器,用于
21、存放一条要执行的指令地址,寻址范围为64KB。PC在物理上是独立的,不属于特殊功能寄存器区中的寄存器。PC执行完一条指令后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按用户要求执行。 三、程序计数器 PC内部RAM位寻址区20H2FH单元,共有16个字节,128个位,位地址为00H7FH,CPU能直接寻址这些位,执行例如置“1”、清“0”、取反、位传送和位逻辑运算等操作。 四、内部RAM位寻址区位地址一、对片内数据存储器赋值1打开位数据窗口2双击DATA(片内数据存储器)中20H、21H、22H、23H内存单
22、元,分别进行赋值,观察对应的位寻址区中数据的变化情况。二、对第二组工作寄存器中R0R7赋值1 打开CPU窗口2修改程序状态字PSW中的RS1和RS0的值,使其分别等于1、0,使工作寄存器组工作在第2组。单击此处返回目录3 修改10H17H单元的值,观察R0R7中数据的变化。任务4 单片机最小系统设计1了解单片机最小系统组成。 2掌握单片机最小系统的设计与制作方法。 单片机是一种微控制器,任何微控制器正常工作都必须具备最基本的条件,即要有正确的电源、时钟和复位电路(即最小系统)。因此,在所有的单片机应用电路中,单片机必须满足以上三个条件才能正常运行工作。本任务就是要认识单片机最小系统的组成及各部
23、分的作用,并最终完成单片机最小系统的设计与制作。一、电源电路 单片机的工作电压 单片机要想工作,首先要有为整个系统提供电源的供电模块。电源模块的稳定可靠是系统平稳运行的前提和基础。 51系列单片机工作电源的电压一般为+4.5+5.5 V,典型值为+5V,即将单片机的VCC脚接+5V电源,GND脚接地。 二、时钟电路 单片机的“心脏”即单片机内部的高增益反向放大器通过XTAL1、XTAL2引脚外接作为反馈元件的片外晶体振荡器(呈感性)与电容组成的并联谐振回路构成一个自激振荡器,向内部的时钟电路提供振荡时钟。1内部时钟方式外部时钟方式常用于多片51单片机同时工作,以便于同步。它是将外部振荡脉冲信号
24、通过CMOS门电路输入至XTAL1脚,XTAL2脚悬空,如下图所示。时钟电路异常也会引起单片机CPU不工作,可通过测量ALE脚是否有六分频信号输出来判断振荡电路是否起振。2外部时钟方式3时序51系列单片机的一个机器周期由12个振荡周期组成,分为6个状态,分别称为S1、S2、S3、S4、S5、S6,每个状态都包含P1和P2两相。振荡周期、状态周期、机器周期和指令周期的关系如下:例AT89S51外接晶振频率为12 MHz,则4个时间周期的具体值为:解:振荡周期 1/12s状态周期 2振荡周期 1/6s机器周期 6状态周期 1s指令周期 (14)机器周期 1 4s三、复位电路单片机恢复初始状态值1硬
25、件复位上电复位电路 上电与按键均有效的复位电路 2软件复位即看门狗复位,AT89S51内部自带看门狗定时器,由一个14位定时器及WDTRST(Watch Dog Time RST)寄存器构成。利用软件控制看门狗定时器,当系统进入死循环(程序跑飞)时,看门狗定时器自动复位,让系统恢复正常运作状态。一、画出单片机最小系统电路原理图步骤说明示范图片1材料准备参照元器件清单表二、备料三、硬件电路焊接及调试过程 步骤说明示范图片2硬件焊接注:单片机的 /VPP端接电源,选内部存储器电路板元件布局图电路板背面 / Vpp端GNDVCC(+5V)步骤说明示范图片3通电调试最小系统运行图单击此处返回目录任务5
26、 Proteus ISIS 7.5软件的使用 1熟悉Proteus ISIS 7.5仿真软件的集成工作环境。2掌握Proteus ISIS 7.5仿真软件的基本使用方法。 通过绘制、编辑跑马灯控制电路原理图,熟悉Proteus ISIS 7.5仿真软件工作环境,并完成软件系统和硬件系统的连接调试。一、进入Proteus ISIS的方法1双击桌面上的ISIS 7 Professional图标“ ”。2单击“开始”“程序”“Proteus 7 Professional” “ISIS 7 Professional”命令 。二、工作界面一、新建设计文件1打开Proteus ISIS 工作界面,单击 “
27、文件” “新建设计”命令,弹出模板选择窗口,选择好模板后单击“OK”按钮。 模板选择窗口2单击“文件”“保存设计”命令,在弹出的保存窗口中设置好保存路径和文件名,最后单击“保存”按钮,则完成新建设计文件的保存。保存窗口在“ ”按钮中单击“P”按钮进入元器件选择窗口。二、添加元器件添加元器件主要有两种方法:1在关键字文本框中直接输入所需元件名称,则会在元件列表区出现与关键字相匹配的元件列表。选中所需元件,单击“确定”按钮或直接双击,便可将器件添加到ISIS的对象选择器窗口中。2在元件类别列表中选择元件所属类,然后在元件子类别列表中选择所属子类,再从元件列表区选择出所需元件。三、元件的放置、移动、
28、旋转、删除和属性设置1放置在对象选择器中单击选中要放置的元件,然后将光标移动到原理图的编辑区,在任意位置单击鼠标左键,即可出现一个随光标浮动的元器件原理图符号,移动光标到适当位置再单击鼠标左键即可完成该元器件的放置。2移动在原理图编辑窗口中,左击选中需要移动的元件(默认选中时为红色),再按住鼠标左键拖动元件至适当位置,释放鼠标左键,并左击空白处撤销选中状态,即可完成元件的移动。3旋转放置元件前,在对象选择器窗口先选中要旋转的元件,再根据需要单击“ ”方位控制按钮,即可更改元件的放置方向。4删除方法1:右键双击该元件;方法2:先左击选中该元件,再按下“Delete”键删除。5属性设置用鼠标左键双
29、击要编辑的元件,可弹出编辑元件窗口对元件相关属性进行设置。元件的放置、移动、旋转、删除和属性设置操作均可通过右击该元件,弹出如图所示的快捷菜单来操作完成。四、放置电源、地单击“ ”图标,选中“POWER” 行,将鼠标移到原理图编辑窗口的适当位置再单击,便可引入“电源”。选中“GROUND”,便可引入“地”。五、元器件的连线1两个对象之间的连线 引脚间直接连线任意角度的连线设定路径连线 2总线与分支线的画法 (1)单击总线按钮“ ”。总线与分支线之间的连接(2)在合适位置单击鼠标左键放置总线起点,双击鼠标左键放置总线终点。(3)将光标移近对象引脚末端,单击引出分支线,使其终点移近总线并与总线中心
30、相连,同时按住“Ctrl”键,即可画出与总线相连的分支线。 在元件的连线过程中,如果下一次的连线路径与上一次的连线相同,则可在下一个要连元件的引脚上左双击,这样就会形成一条和上一条路径相同的连线。 当电路中多根数据线、地址线、控制线并行时建议使用总线设计。3添加网络标号在Proteus仿真时,系统会默认网络标号相同的引脚是连接在一起的。六、电气检测单击菜单“工具”“电器规则检查”命令进行电气检测。七、仿真运行1双击电路原理图中的AT89C51单片机,在弹出的属性编辑窗口中载入“跑马灯.hex”文件。在仿真运行中,各元件引脚会呈现不同的颜色。例如红点代表输出高电平,蓝点代表低电平,灰点代表高阻状
31、态,黄点表示短路。可以根据引脚的颜色来区分此时引脚输出的状态。2单击仿真运行“ ”按钮开始仿真。单击此处返回目录任务1 数据传送类指令的应用任务2 算术运算类指令的应用任务3 控制转移类指令和位操作类指令的应用任务4 逻辑运算类指令的应用任务1 数据传送类指令的应用 1掌握MCS-51单片机的寻址方式。2掌握数据传送类指令的功能及用法。将LED0LED7八只发光二极管接在单片机的P1.0P1.7,如图所示。编程实现如下功能,并在Protues软件中进行仿真。1分别运用立即数寻址、直接寻址、寄存器寻址和寄存器间接寻址方式结合数据传送指令实现LED0、LED2、LED4、LED6亮,LED1、LE
32、D3、LED5、LED7灭。2运用交换指令实现LED0、LED1、LED2、LED3亮,LED4、LED5、LED6、LED7灭。一、指令的格式一条指令通常由操作码和操作数两部分组成。操作码是用来规定指令所完成的操作的,而操作数则表示操作的对象。在51系列的指令中,有单字节、双字节和三字节等不同长度的指令。1单字节指令指令只有一个字节,操作码和操作数在同一个字节中。在51系列的指令系统中,共有49条单字节指令。例 INC A2双字节指令双字节指令包括两个字节。其中一个字节为操作码,另一个字节为操作数。在51系列的指令系统中,共有45条双字节指令。例 MOV A,#data3三字节指令在三字节指
33、令中,操作码占一个字节,操作数占两个字节,其中操作数既可能是数据,也可能是地址。在51系列的指令系统中,共有17条三字节指令。例 CJNE A,#data,rel汇编语言指令基本格式见下表:标号:操作码助记符操作数1,操作数2,操作数3;注释LOOP:MOVA,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
34、):间接寻址寄存器。 Bit:片内RAM或SFR的位地址。1 常用符号 addr11:11位目的地址。 addr16:16位目的地址。 rel :补码形式的8位地址偏移量,偏移范围为-128127。 /:位操作指令中,该位求反后参与操作,不影响该位。 X:片内RAM的直接地址或寄存器。 ( X ) :相应地址单元中的内容。 (X) ) :由X寻址的单元中的内容。 :箭头右边的内容传送到箭头的左边。2 助记符助记符用于规定指令进行何种操作,共42种,一般由25个英文字母组成。常用助记符及其功能见下表:助记符常见格式功能MOVA,R0对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送MOV
35、XA,R0对外部RAM的数据进行传送MOVCA,A+DPTR程序存储器内容与其他存储单元间数据进行传送XCHA,R0字节交换XCHDA,R0低半字节交换助记符常见格式功能SWAPA低4位与高4位交换PUSHA入栈POPA出栈SETBC置1CLRC清0ANLA,R0逻辑与JNZLOOPA不为则转移(续表)三、 MCS51单片机的寻址方式1 立即寻址寻址方式是指某一个CPU指令系统中规定的寻找操作数所在地址的方式。立即寻址即直接在指令中给出操作数,一般把指令中的操作数称为立即数。为了与直接寻址相区别,在操作数前加“#”表示。例 MOV A,#30H ; A30H MOV DPTR,#40H ;DP
36、TR40H例 MOV A,30H ;A(30H) MOV 40H,30H ;(40H)(30H)2直接寻址直接寻址就是在指令中给出操作数的地址。3寄存器寻址寄存器寻址就是将寄存器中的内容作为操作数,寄存器一般指累加器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))寄存器间接寻址就是以寄存器中的内容作为地址,将该地址内的数作为操作数。变址寻址用于
37、访问程序存储器中的数据表格,它以基址寄存器(DPTR 或PC)的内容为基本地址,加上变址寄存器A的内容形成16位的地址,访问程序存储器中的数据表格。例 JNZ 60H ;A=0 PCPC+2 ;A0 PCPC+60H 6相对寻址相对寻址是以程序计数器PC的当前值作为基地址,与指令中给出的相对偏移量rel进行相加,把所得之和作为程序的转移地址。转移的范围为-128+127,使用中应注意rel的范围不要超出。 该指令中60H为偏移量,偏移量为一个8位有符号数,其取值范围在-128+127之间,所以程序既可以向上转移,也可以向下转移。例 SETB TR0 ;TR01 CLR 00H ;(00H)0
38、MOV C,bit ;Cbit ANL C,bit ;CCbit7位寻址位寻址就是对位地址空间的每个位进行位状态传送、状态控制、逻辑运算操作。 在51系列单片机中,与外部存储器RAM打交道的只能是A累加器。所有需要传送入外部RAM的数据必需通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此能看出内外部RAM的区别,内部RAM间能直接进行数据的传递,而外部则不行。除了目的操作数为ACC的指令影响奇偶标志P外,其他一般不影响标志位。四、数据传送类指令(共29条)1以累加器A为目的操作数类指令数据传送类指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作
39、数等于源操作数。MOVA,data ;(A)(data)MOVA,#data;(A)#data MOVA,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中。寻址方式
40、:直接、立即、寄存器和寄存器间接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查表指令功能:对存放于程序存储器中的数据表格进行查找传送。寻址方式:使用变址
41、寻址方式。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所指单元的内容送到直接寻址单元中。PUSHdata;SP SP+1,(SP)(data)POPdata;(data)(SP) SP (SP)-1这
42、类指令只有两条,第一条称为入栈操作指令,第二条称为出栈操作指令。1单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。2进栈是堆栈指针首先加1,然后直接寻址单元中的数据再送到堆栈指针SP所指的单元中。而出栈是指针SP所指的单元数据先送到直接寻址单元中,然后堆栈指针SP再进行减1操作。8交换指令功能:把累加器A中的内容与源操作数所指的数据相互交换。XCHD是把累加器A中的内容的低4位与源操作数所指的数据的低4位相互交换。SWAP将A中的值的高4位与低4 位进行交换。XCHA,Rn;
43、(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 编译程序并仿真三、数据传送类指令2.ASM1 编写程序单击此处返回目录2编译程序并仿真任务2 算术运算类指令的应用 1理解MCS-51单片机算术运算类指令的功能。2掌握算术运算
44、类指令的用法。3通过编程计算梯形的面积,掌握算术运算类指令的应用。51系列单片机为单芯片微控制器(简称MCU),内部含有具有数据运算处理能力的CPU。而在一些单片机应用系统中,往往需要对外部复杂数据进行运算处理。本任务主要通过编程计算图示梯形的面积来学习对外部数据进行算数运算处理的方法(已知梯形的上底长为a,下底长为b,高是h)。算术运算类指令主要包括ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA等,如图所示。 一、不带进位的加法指令ADDA,Rn ;A(A)+(Rn) ADDA,direct ;A(A)+(direct) ADDA,Ri ;A(A)+(Ri) ADDA,#d
45、ata ;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)+(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)
46、(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=0。四、乘法指令没有不带借位的减法指令,如果需要做不带借位的减法指令(在做第一次相减时),只要将CY清零即可。MULAB;B高8 位,A低八位 例1 (A)=4EH,(B)=5DH,执行指令:MUL AB 结果:(B)=1CH,(A)=56H(即乘积为1C56H) CY=0,OV=0。 例2 (A)50H,(
47、B)0A0H,执行指令:MUL AB;结果:(B)32H,(A)00H(即乘积为3200H),CY0,OV1。五、除法指令DIVAB;A商,B余数CY 位和OV 位都是“0”,如果在做除法前B 中的值是00H,那么OV=1。 例 (A)3FH,(B)0AH,执行指令:DIV AB;结果:(B)03H,(A)06H(即乘积为3200H),CY0,OV1。六、加1 指令 例 (A)12H,(R3)0FH,(35H)4AH,(R0)56H,(56H)00H,执行如下指令:INC A ;执行后(A)13H INC R3 ;执行后(R3)10H INC 35H ;执行后(35H)4BH INC R0 ;
48、执行后(56H)01H INCA ;A(A)+1 INCRn ;Rn (Rn)+1 INCdirect ;direct (direct)+1 INCRi ;(Ri)(Ri)+1 INCDPTR ;DPTR (DPTR)+1 七、减1 指令 例 (A)12H,(R3)0FH,(35H)4AH,(R0)56H,(56H)00H,执行如下指令:DEC A ;执行后(A)11H DEC R3 ;执行后(R3)0EH DEC 35H ;执行后(35H)3FH DEC R0 ;执行后(56H)0FFH DECA ;A(A)1 DECRn ;Rn(Rn)1 DECdirect ;direct(direct)
49、1 DECRi ;(Ri)(Ri)1 要实现梯形面积的运算,主要分为三步:计算a+b;计算(a+b)h;计算(a+b)h2。在汇编语言中,除法运算是取余,因此此计算梯形的方法仅适用于上底加下底结果为偶数的梯形。此外,为了使梯形的面积值便于观察,程序中分别定义梯形的上底长a、下底长b、高h的数值都比较小,这样(a+b) h的数值不会超过0FFH。根据上面的分析,先分配上底、下底、高的具体数据存储单元,见下表。数据名称数据存放地址数据名称数据存放地址上底30H高32H下底31H面积33H1将编写完的程序输入WAVE软件并编译。梯形面积.ASM2修改上底、下底、高的数据。单击此处返回目录3运行并调试
50、。任务3 控制转移类指令和位操作类指令的应用 1掌握控制转移类和位操作类指令的功能与使用技巧。2掌握用冒泡法对无符号数进行排序的编程方法。编写一段程序,对内存为50H59H十个单元中存放的数据进行从小到大排序,从而掌握使用控制转移类指令和位操作类指令进行编程的方法。一、控制转移类指令控制转移指令共有17条,包括64K范围的长调用、长转移指令;2KB范围的绝对调用和绝对转移指令;全空间的长相对转移和一页范围内的短相对转移指令以及多种条件转移指令。但不包括按布尔变量控制程序转移指令。控制转移类指令用到的助记符共有10种:AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、C
51、JNE、DJNZ。1无条件转移指令AJMPaddr11;PC=PC+2, PC100addr11例 程序存储器的2070H地址单元有绝对转移指令: 2070H AJMP 16AH(000101101010B) 则程序计数器PC当前=PC+2=2070H+02H=2072H(00100 00001110010),取其高5位00100和指令机器代码给出的11位地址00101101010最后形成的目的地址为:0010 0001 0110 1010B=216AH。 (1)绝对转移指令(2)相对转移指令SJMPrel;PC=PC+2, PCPC+rel源地址是SJMP指令操作码所在的地址。相对偏移量re
52、l是一个用补码表示的8位带符号数,转移范围为当前PC值的-128+127,共256个单元。MCS-51没有专用的停机指令,若要求动态停机可用SJMP指令来实现: HERE:SJMP HERE ; 动态停机(80H,FEH) 或 SJMP $ ;“$”表示本指令首字节所在单元 ; 的地址,使用它可省略标号。(3)长跳转指令LJMPaddr16;PC addr16转移指令的目标地址可在64KB程序存储器地址空间的任何地方,不影响任何标志。(4)间接转移指令(散转指令)JMPA+DPTR;PCA+DPTR间接转移指令采用变址方式实现无条件转移,其特点是转移地址可以在程序运行中加以改变。2条件转移指令
53、JZ rel ;若(A)=0,则转移PC(PC)+2+ relJNZ rel ;若(A)0,则转移PC(PC)+2+ rel 这类指令是依据累加器A的内容是否为0的条件转移指令。条件满足时转移(相当于一条相对转移指令),条件不满足时则顺序执行下面一条指令。转移的目标地址在以下一条指令的起始地址为中心的256个字节范围之内(-128+127)。3比较转移指令CJNE A,direct,rel;若(A)(direct),则转移;PC(PC)+3+ relCJNE A,#data,rel;若(A) data,则转移;PC(PC)+3+ rel CJNE Rn,#data,rel ;若(Rn) dat
54、a,则转移;PC(PC)+3+ rel CJNE Ri,#data,rel ;若(Ri) data,则转移;PC(PC)+3+ rel 这组指令是比较前面两个操作数的大小,如果它们的值不相等则转移。如果第一个操作数(无符号整数)小于第二个操作数,则进位标志CY置“1”,否则清“0”,但不影响任何操作数的内容。4减1不为0转移指令DJNZRn,rel;若Rn(Rn)-10,则转移;PC(PC)+2+ relDJNZdirect,rel;若direct (direct)-10,则转移;PC(PC)+2+ rel这两条指令把源操作数减1,结果回送到源操作数中去,如果结果不为0则转移。5调用及返回指令
55、(1)绝对调用指令ACALLaddr11;PC PC2 ;SP(SP)1,(SP)(PC)70;SP(SP)1,(SP)(PC)158 ;PC100addr11执行该指令时,所调用的子程序的首地址必须与ACALL指令后面的第一个字母在同一个2KB区域内,指令执行后不影响任何标志。(2)长调用指令LCALLaddr16;PC PC3;SP(SP)1,(SP)(PC)70;SP(SP)1,(SP)(PC)158 ;PC100addr16LCALL指令无条件调用位于16位地址addr16的子程序。LCALL指令可以调用64KB范围内任何地方的子程序。指令执行后不影响任何标志。(3)子程序返回指令RE
56、T;(PC)158 (SP),SP(SP)-1 ;(PC)70 (SP),SP(SP)-1RET指令是把栈顶相邻两个单元的内容弹出送到PC,SP的内容减2,程序返回PC值所指的指令处执行。RET指令通常安排在子程序的末尾,使程序能从子程序返回到主程序。(4)中断返回指令(5)空操作指令RETI;(PC)158 (SP),SP(SP)-1 ;(PC)70 (SP),SP(SP)-1NOP;PC PC1空操作也是CPU控制指令,它没有使程序转移的功能。只消耗一个机器周期的时间。常用于程序的等待或时间的延迟。RETI指令通常安排在中断服务程序的最后。二、位操作指令位操作指令的操作对象是内部RAM的位
57、寻址区,即字节地址为20H2FH单元中连续的128位(位地址为00H7FH),以及特殊功能寄存器中可以进行位寻址的各位。位操作指令包括控制转移、布尔变量的传送、逻辑运算等指令,所用到的助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC共11种。在布尔处理机中,进位标志CY的作用相当于CPU中的累加器A,通过CY完成位的传送和逻辑运算。指令中位地址的表达方式有以下几种(以允许中断控制寄存器IE中的位0 为例): 直接地址方式:如0A8H。点操作符方式:如IE.0。位名称方式:如EX0 。用户定义名方式:如用伪指令BIT定义,WBZD0 BIT EX0 。
58、定义后,允许指令中使用WBZD0代替EX0 1位数据传送指令MOV C,bit ;CY(bit) MOV bit,C ;bit(CY) 位数据传送指令的功能是:把源操作数指出的布尔变量送到目的操作数指定的位地址单元,其中一个操作数必须为进位标志CY,另一个操作数可以是任何可直接寻址位。 2位变量修改指令CLRC;CY 0CLRbit;bit 0CPLC;CY (CY)CPLbit;bit (bit)SETBC;CY 1SETBbit;bit 1这组指令对操作数所指出的位进行清“0”、取反、置“1”的操作,不影响其他标志。3位变量逻辑与指令ANLC,bit;CY (CY)(bit)ANLC,/b
59、it;CY (CY)(/bit)4位变量逻辑或指令ORLC,bit;CY (CY)(bit)ORLC,/bit;CY (CY)(/bit)5位变量条件转移指令JC rel ;若(CY)=1,则转移 PC(PC)+2+rel JNC rel ;若(CY)=0,则转移 PC(PC)+2+rel JB bit,rel ;若(bit)=1,则转移 PC(PC)+3+rel JNB bit,rel ;若(bit)=0,则转移 PC(PC)+3+rel JBC bit,rel ;若(bit)=1,则转移 PC(PC)+3+rel,bit0 前4条指令在执行中不改变条件位的布尔值,最后一条指令,在转移时将b
60、it清“0”。实现数据从小到大的排序在单片机编程中典型的算法是冒泡法。其基本思路是从数组的第1个数开始,相邻两单元的数相比较,即第1个数和第2个数相比较。如果第2个单元的数大,则两者交换,否则不动;再进行第2单元数和第3单元数比较。这样依次比较下去,重复上述过程N-1次后,才能将N个数中最大的值沉降到数据区的最后一个单元中;然后又从头开始第二轮的比较,经过N-2次的比较后,才能把第2个最大值沉降到数据区的倒数第2个单元。循环N-1轮后,N个数据便会由小到大排列在原数据区中。设R7存放外循环计数值,R6存放内循环计数值,A存放被比较数,R0存放被比较数地址,R1存放比较数地址。则程序流程图如右图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江省临安市高三历史下册期末考试试卷含完整答案【典优】
- 2025年黑龙江省肇东市高二历史上册期末考试模拟卷含完整答案【网校专用】
- 2026年四川省江油市高三历史上册期末考试自测卷附参考答案(满分必刷)
- 统编版语文五年级下册期中达标模拟卷
- 2026澳洲管理员面试题及答案
- 2026安顺社工面试题及答案大全
- 索道运输机械操作工岗前基础操作考核试卷含答案
- 意匠工安全宣贯竞赛考核试卷含答案
- 剪纸工岗前潜力考核试卷含答案
- 电子商务数据分析服务合同协议2026
- 欣旺达在线测评题答案
- TCQAE信息化项目造价及服务清单指南(-2024)
- 2026年企业破产重整法律实务培训课件与债务化解方案
- ACRAAAAI共识解读:造影剂超敏反应管理指南课件
- 2025年新疆时事政治题库及答案
- 人工智能辅助下的高血压个体化治疗方案
- 核废液高级氧化技术-洞察与解读
- 2026年一级建造师一建机电案例分析考前重点知识必背十页纸
- 十年(2016-2025)高考数学真题分类汇编16三角函数与解三角形解答题综合(六大考点65题)(解析版)
- 建设项目竣工验收汇报
- 电池动力船舶知识培训课件
评论
0/150
提交评论