单片机课堂笔记.doc_第1页
单片机课堂笔记.doc_第2页
单片机课堂笔记.doc_第3页
单片机课堂笔记.doc_第4页
单片机课堂笔记.doc_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 概述 1 引言计算机系统 硬件主机+外设 软件系统软件+应用软件 语言语言:机器语言面向机器语言,由二进制数组成(0,1,0,1)特点:计算机直接执行,速度快,人不易记忆汇编语言采用助记符,如ADD表加法,SUB表减法特点:需编译,快,可记忆源程序 编译软件 可执行文件(二进制文件0,1,0,1)高级语言面向对象,与机器无关如:VC 、VB、pascal 特点:编译方便记忆,编译速度慢,占内存大汇编语言应用在计算机控制中(硬件)高级语言应用在管理和科学计算中主要学习;8031/8051单片机为蓝本的汇编语言2数制一、 常用, ,掌握这几种数制表示方法和相互转换 10101100B2# 171Q8#1234D(或不写) 10# 1ACFH16#对于16,如A1D6H0A1D6H F112H0F112H 第一个以AF开头前加0二、 二一十进制(BCD)作用 表示方法:8421码 BCD用四位表示一位10# BCD 15的BCD=0001 0101B 0 0000 123的BCD=0001 0010B 1 0001 1000 0111B87 9 1001 非压缩BCD码:用一个字节(8位)表示为BCD如: 8 0000 1000B7 0000 0111B 高4位为0 低4位为值如:87占用2个字节 8 0000 1000B7 0000 0111B 压缩BCD码:用一个字节(8位2#)表示二位BCD87 1000 0111B 一个字节三、字母与字符编码 09 az AZ / 统一编码,用于输入/输出之用用7位2#来表示 27= 128字符编码方式ASCII码 编码表 书P3500110000B30H10110001B31H90111001B39HA1000001B41HB42H差20HF46H a 1100001B61H b 62Hf66H 3 码制数在计算机中用2#表示,但负数怎样表示?三种方法:一、原码:用最高位表符号如: 一个数用8位2#表示 D7 D6D5D4D3D2D1D0 符号 表数值 如: 一个数用16位2#表示 D15 D14D0 符号 表数值如:X=105 X原 01101001B 符号 值如:X105 X原11101001B如:0原00000000看8位2#(无符号)数 00000000B11111111B 即 0255原码表示范围:11111111B01111111B 即 127+127二、反码 X反 X 当X0 当X00原0原0原0原000000000原11111111如:X4100B X反00000100B X反11111011B表示范围:127127三、补码 X 当X0 X补 X反1 当 X0 指最低位D0 0补00000000X4 X补00000100B X补111110110000000111111100B补码:128+127 128补10000000 127补01111111补码定理:XY补X补Y补优点:表示负数 减法变成加法如:641054 6410补64补10补0100000011110110 100110110 自然丢失 结果 其中10补00001010 10补111101010000000111110110即6410补00110110 而0110110B54 641054通式:若XY补X补Y补Z +Z 当Z最高位为0则X-Y Z1反 当Z最高位为1 如 5105 510补5补10补000001011111011011111011 则5101111101100000001反00000101B5写法:XY补 XY4 计算机的硬件构成计算机的类型、特点及特点: 大、中型:体积大,成本高,科学计算速度快。 小 型:服务器、网络、图形处理 微 型:PC机 单 板 机:工业控制 单 片 机:工业控制、智能仪表、仪器(家用电器等)什么叫计算机? 包含硬件和软件,且硬件含以下五大部分的机器及为计算机。 硬件:1:中央处理器:CPU 2 内存储器:内存3外存储器:如硬盘,软盘,光盘和一些磁带机等等4 输入设备:键盘,鼠标,扫描仪,麦克声控,摄像头都算5 输出设备:打印机,显示器等等单片微型计算机就是将CPU、RAM、ROM(或EPROM、Flash ROM)、定时器/计数器和多种I/O接口都集成到一块集成电路芯片上的微型计算机,简称单片机。单片机是应工业控制需要而诞生的,其特点是一块芯片就构成了一台计算机,因此这类芯片就称为 Single-Chip Microcomputer,中文名译为“单片机”。单片机主要由CPU、存储器(程序存储器ROM、数据存储器RAM)、I/O接口电路(并行接口、串行接口)三部分组成,还包括定时器/计数器、中断控制器等部分。8088CPU存储器三总线8259中断器8255并行接口8253定时、计数器 (8031、8051CPU中除了图中存储器模块没有外,其他模块均包含)单片机的发展: Intel公司:MCS-48,(8位) MCS-51(8031/8051CPU),(8位) MCS-96/98,(16位) 注意:这里所说的8位与16位指数据总线数,表明计算机同时处理数据的能力。第二章 单片机的结构、引脚、时序1 组织结构 五大组成: CPU(含运算器和控制器) 存储器输入/输出设备总线(DB,AB,CB)关系:以CPU为核心,三总线结构1, CPU 1片IC 运算和控制协调全体工作2,存储器 IC 存放程序和数据和文件 内存RAM或ROM构成 存储器外存硬盘,光盘衡量存储器单位 容量:指有多个存储单元或字节存储器 单位:一个单元(字节)1024字节1K字节1024K字节1M1024M1G1024G1T常用内存:512M10241024512(字节)外存:160G 存储长度:每个单元能放几位2#数存储器一般为8位或16位 一个字节 二个或一个字节对8086/8088CPU存储器,长度为一个字节。 存储地址对每个单元进行编号,地址用16#表示有一个64K存储器,有641024=65536个单元06553500FFFFH字母开头,加0 3/4、输入/输出5、总线地址总线(AB)寻址存储地址,对于8086/8088AB有20根线AB是单向(CPU存储器) 可接存储器:2201048576 地址为01048575 即:00FFFFFH 1M数据总线(DB)传送数据和命令 DB是双向的 DB81(根) CPU 存储器(写操作) CP U 存储器(读操作)控制总线(CB)送控制信号,接受状态信号出 入 2 CPU内部结构一、CPU内部结构图核心:运算器,ALU二、寄存器组什么叫寄存器? 位置在CPU内部 作用放运算前数据或运算后结果 1、程序计数器PC ,16位 (相当于8086中的IP) 作用:放当前指令所在地址。(可自动调整) 寻址范围:0000H-FFFFH,64K程序计数器PC。PC是一个16位的不同寻址专用寄存器,用作程序存储器的地址指针,每次仅存放下一条指令的地址。当CPU读取指令时,PC的内容送往地址总线上,根据地址编码从程序存储器中取出指令代码后,PC中的数据具有自动加1功能,指向下一个地址的另一条指令,以保证程序按顺序执行。 2、累加器A(或ACC), 指令寄存器。它是一个8位寄存器,用于暂时存放待执行的指令,等待译码,以确定相应功能的操作控制。(相当于AX)作用:主要用于进行运算。 例: MOV A,#3 :立即数3A ADD A,#1 ;A3+1 3、通用寄存器B ,8位 作用:主要用于运算。 例: MOV A,#2 MOV B,#3 MUL AB :BA23 (结果为16位的,B存高8位,A存低8位) 4、程序状态字 PSW,8位 (相当于F寄存器) 作用:放A中数据的状态特征。 程序状态寄存器PSW。PSW是一个8位的特殊功能寄存器,用于保存当前指令执行后的有关状态,为后面的程序指令执行提供状态转向条件。许多指令的执行结果将影响PSW相关的状态标志。PSW寄存器各位状态标志定义如下: CY(PSW .7):保存当前指令运算结果产生的进位(或错位),CY1表示有进位(或错位),CY0表示无进位(或错位)。AC(PSW . 6):辅助进位标志,又称之为半字节进位标志,若运算结果累加器A中的A3位向A4位有进位,则AC1,否则AC0,常用于十进制调整。F0(PSW . 5):用户自定义的状态标志位,可由编程者根据实际需要通过软件进行设置或测控。RS1(PSW .4)、RS1(PSW .3):用于选择片内RAM区的工作寄存器组,由于工作寄存器组共有4组,每组均有R0R7共8个8位工作寄存器,单片机运行时,仅能有一组工作寄存器投入工作,其余3组只能作普通的RAM存储器单元使用。OV(PSW .2):溢出标志位。溢出是指当运算结果数值的绝对值超过允许表示的最大值时,就会产生所谓的“溢出”。主要用于有符号数运算的溢出检测判断。当两个有符号数进行运算时,次高位D6产生向最高位D7进位(错位),而最高位D7不能产生进位(错位),或D6不产生进位(错位),而D7产生进位(错位)时,则OV1,有溢出,否则OV0,无溢出。即最高位和次高位不同时有进位或错位时OV1,有溢出;否则OV0,无溢出。 PSW .1:保留位,暂无定义。PSW .0:奇偶校验标志位。根据运算结果累加器A中“1”的奇偶性来确定取值,当“1”的个数为奇数时P1,偶数时P0。5、堆栈指针SP,8位堆栈指针SP。SP是一个8位的特殊功能寄存器,它作为堆栈指针总是指向栈顶。单片机在片内RAM区中开辟某一个地址连续区域作为堆栈,理论上堆栈能位于RAM128个字节的任何单元。但由于系统在复位有效时,栈指针SP的初始值为07H,这显然与工作寄存器区域重叠,因此必须通过软件重新定义SP,一般情况下在片内RAM的30H单元开始建立栈区。 先进后出,后进先出,自动加1,指针指向栈顶。 例: MOV SP,#70H MOV A,18H PUSH A POP B; SP=71H1H=70H 弹后:B=11H6、数据指针DPTR,16位寄存器 DPH8位,DPL8位作用:用来存放8031CPU以外(片外)RAM和ROM地址。数据指针DPTR。数据指针DPTR是由两个8位特殊功能寄存器DPH和DPL组合成16位的专用寄存器,用作外扩展程序存储器和数据存储器的地址指针,仅能采用间接访问方式读写存储器。 RAM:随机存储器 ROM: 只读存储器 8031ROMRAM 总线 ZONG64K64K 图中,ROM和RAM属片外存储器 8031可接最大存储器128K. DPTR寻址: 0000HFFFFH,64K的范围 例: 图1: MOV DPTR,#1000H ;DPTR=1000H MOVX A,DPTR ;把片外RAM中地址为1000H中的内容A. (MOVX访问片外RAM) 图2: MOV DPTR,#1001H MOVC B,DPTR (MOVC访问片外ROM) 7、通用寄存器 R0R7,共8个寄存器,均是8位 MOV R1,A ;(A)赋值给R1 若PSW中,RS1、RS0=00,即R1为片内地址为01H单元 三、存储器结构 1、ROM结构8031片内无ROM,片外外接EPROM或EEPROM芯片。最多外接64K,0000HFFFFH 2、RAM结构(内存指的就是RAM)8031片内有256个字节RAM,片外接RAM芯片,64K。片内组成: 单片机片内RAM区地址空间为00HFFH,可划分为两部分:00H7FH为低128字节地址,并进一步划分为工作寄存器区、位寻址区和数据缓冲堆栈区三个区域,80HFFH为高128字节地址,为特殊功能寄存器(SFR)的区域。低128个字节(00H7FH):每个单元为8位二进制数(一个字节)。、 工作区 由PSW中RS1、RS0决定,R0R7为03组其中一组, 共有48=32个字节,00H1FH。工作寄存器区(00H1FH)共有32个字节单元,工作寄存器又称为通用寄存器,一般作为数据运算和传送时的暂存地址单元。工作寄存器划分有4个区,每个区有R0R7八个工作寄存器。每个工作寄存器有8位,可以用寄存器的名称寻址,也可用直接字节地址方式寻址。当用寄存器寻址方式时,由程序状态字PSW中的RS1和RS0两位确定工作寄存器区,如表所示。表 工作寄存器表RS1 RS0区号寄存器名字节地址RS1 RS0区号寄存器名字节地址000区R0R1R2R3R4R5R6R700H01H02H03H04H05H06H07H011区R0R1R2R3R4R5R6R708H09H0AH0BH0CH0DH0EH0FH102区R0R1R2R3R4R5R6R710H11H12H13H14H15H16H17H113区R0R1R2R3R4R5R6R718H19H1AH1BH1CH1DH1EH1FH四个区的工作寄存器组均可选作为CPU当前用的工作寄存器,通过特殊功能寄存器PSW中的RS0、RS1两位的数据来设置,但每次只能允许其中一组被选中。CPU复位有效时,自动选中第0区的工作寄存器组,其余三个区的工作寄存器组仅能作为普通RAM存储单元使用。RS1 RS0R0-R7的物理地址(指8031CPU内部ROM中的地址) 0 000H-07H 0 108H-0FH 1 010H-17H 1 118H-1FH、 位寻址区,共16个字节位寻址区(20H2FH)有16个字节地址单元,共有128位。该区域既可用字节直接寻址方式访问,也可采用位寻址方式访问。128位每一位都有一个单独的位地址编码(00H7FH),这些位存储单元可以构成布尔处理机,能对位地址直接寻址,执行置位、清0、取反、为0跳转或为1跳转等操作,能实现复杂的组合逻辑功能。通常把各种程序状态标志、位控制变量都设置在位寻址区内。另外,有部分的特殊功能寄存器也具有位寻址功能。表2-3 位寻址区中的位地址字节地址位 地 址D7D6D5D4D3D2D1D02FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100字节地址为20H2FH,每个字节地址中都有8个位地址。 如:把字节地址为20H中的最低位D0置1。 MOV A,20H ;A(20H),20H位字节地址 ORL A,#01H ;(A)01H MOV 20H,A :(A)20H SET B 00H;(00H)=1 (1位),把1位置1 实际上:(20H)中D0位位地址为00H。 如:把字节地址21H中D7位清“0” CLR 0FH;(0FH)=0 共有168=128个位地址,为00H7FH 只有该区有位地址。 区别: 两边平衡原则MOV A,20H ;20H为字节地址 MOV C,20H ;20H为位地址,C为PSW中的进位位、 用户区,30H7FH把字节地址30H7FH当作普通的RAM存储单元,一般用于数据的暂存、缓冲区域,CPU对这一空间只能进行字节直接寻址,不能采用位寻址。在实际应用的程序设计中,往往需要一个先进后出的RAM区,用以保存CPU的现场数据,这种先进后出的缓冲器区域被称为堆栈。堆栈原则上可以设在片内RAM的任意区域,但为避免出现功能设置在地址上的重叠现象,堆栈一般设在30H7FH的范围内,栈顶的位置由栈指针SP控制。SP在复位后的值为07H,显然,这和工作寄存器区重叠,因此,必须对堆栈重新定义。(4)、特殊功能寄存器(SFR)(80H0FFH)对于单片机内部的I/O口锁存器、定时器/计数器、串行口的控制字、中断控制的设置、堆栈指针及数据指针的设置、运算的结果、状态等都是用特殊功能寄存器来实现的。AT89S51单片机片内共有26个特殊功能寄存器,被离散地设置在80HFFH地址空间内,见图2-10。由于128个字节单元仅用了26个,大部分是空的暂没有定义,因此对这部分地址单元访问无效。特殊功能寄存器按字节操作时,仅可用直接寻址方式,不管是使用寄存器符号,或是使用寄存器的字节地址,均为直接寻址方式,不能视为寄存器寻址方式。在26个特殊功能寄存器中,它们的字节地址凡能被8整除,即字节地址的尾数为8或0的特殊功能寄存器具有位寻址操作功能。AT89S51单片机共有11个寄存器,除能字节寻址外,还具有位寻址功能。如表所示。表 特殊功能寄存器位地址字节地址位 地 址寄存器符 号0FFH0F0HF7F6F5F4F3F2F1F0B0E0HE7E6E5E4E3E2E1E0ACCCYACF0RS1RS0OVP0D0HD7D6D5D4D3D2D1D0PSWPSPT1PX1PT0PX00B8HBFBEBDBCBBBAB9B8IP0B0HB7B6B5B4B3B2B1B0P3EAESET1EX1ET0EX00A8HAFAEADACABAAA9A8IE0A0HA7A6A5A4A3A2A1A0P2SM0SM1SM2RENTB8RB8T1RI98H9F9E9D9C9B9A9998SCON90H9796959493929190P1TF1TR1TF0TR0IE1IT1IE0IT088H8F8E8D8C8B8A8988TCON80H8786858483828180P0第二节 8031引脚40个引脚,包含I/O口,控制口,电源口等。一、 I/O口1、 P1口(P1.7P1.0)双向并行I/O口,指令操作进行数据I/O,类似8255。2、 P3口(P3.7P3.0)控制口构成单片机系统用P3.0:RXD(串行口输入端);P3.1:TXD(串行口输出端);P3.2:(外部中断0信号输入端);P3.3:(外部中断1信号输入端);P3.4:T0(定时器/计数器0外部计数脉冲输入端);P3.5:T1(定时器/计数器1外部计数脉冲输入端);P3.6:(外部数据存储器的写选通);P3.7:(外部数据存储器的读选通);3、 P2口(P2.7P2.0)输出高8位地址,AB4、 P0口(P0.7P0.0)双重作用,输出低8位地址/8位数据线,复用,分时输出二、 控制口1. 振荡器电路外接晶振引脚XTAL1(19脚)、XTAL2(18脚):当使用片内振荡器的时钟电路方式时,电路接法如图2-2所示,C1、C2为微调电容,通常取2030pF。图2-3为使用外部振荡器的时钟电路方式,使用该时钟电路方式时,高低脉冲电平持续时间应不短于20ns,否则工作不稳定。2、 EPROM选择线,输入信号线 2. : 、为1时,8031访问片内ROM 、为0时,8031访问片外ROM 对8031而言,=0.(接地)3、 ALE(30脚):地址锁存允许/编程脉冲信号端,双功能引脚。当CPU访问外部程序存储器或外部数据存储器时,该引脚提供一个ALE地址允许信号(由正向负跳变),将低8位地址信息锁存片外的地址锁存器中。输出地址锁存器(74LS373),信号输出线。下降沿时把P0口输出低8位地址存入地址锁存器(外接的)。74LS373引脚图地址锁存器常采用74LS373,373为三态输出的8 D锁存器,如图所示。各引脚意义如下:LE:锁存允许端:输出允许端D0D7:数据输入端Q0Q7:输出端。当=0时,Q0Q7 为正常逻辑状态,可用来驱动负载或总线。若=0,LE=1,输出端Q0Q7状态与输入端D1D7状态相同;LE由1变为0(下降沿),输入端D0D7 数据锁入Q0Q7。当=1时,Q0Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。4、/PSEN(29脚):该引脚为外部程序存储器读选通信号,低电平有效。当单片机访问外部程序存储器读取及执行指令代码时,产生信号,但在执行片内程序存储器读取指令码时不产生信号。在读写内部RAM单元的数据时,亦不产生信号。 输出,低电平有效,选择外部ROM5、 RESETRST(9脚):单片机复位输入端,高电平有效。在单片机上电后,振荡器稳定有效运行的情况下,若RST端脚能维持两个机器周期(24个振荡周期)以上的高电平,则可使单片机系统复位有效。所谓复位,是指使单片机CPU和系统中有关部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位方式主要有上电自动复位和按钮手动复位两种,如图2-8所示。图2-8a、b电路均有上电复位和按钮复位功能。图2-8a为电平复位电路,当单片机系统上电时,电路通过电容C充电瞬间加给RST引脚一个高电平脉冲,可使复位有效;单片机工作运行后,按下S按钮也可以使系统复位完成。图2-8b用脉冲复位的电路,由于电容C两端电压不能突变,此时反相器输出为高电平加给RST引脚维持高电平时间大于10ms以上。输入,引脚上强行加高电平,复位(上电)、重启(死机)。6、 电源VCC(40脚):直流电源供电电压4.05.0V。VSS(GND 20脚):电源负极(即电源地电平)。第三节 8031外接ROM和RAM.(P65图2-12) 一般微机的CPU外部都有单独的地址总线、数据总线和控制总线,而MCS-51单片机由于受引脚的限制,数据线和地址线是复用的,而且由I/O口线兼用。为了将它们分离出来,以便同单片机片外的芯片正确地连接,需要在单片机外部增加地址锁存器(如74LS373),从而构成与一般CPU相类似的片外三总线,如图所示。(1)地址总线(AB)地址总线用于传送单片机送出的地址信号,以便进行存储单元和I/O端口的选择。地址总线是单向的,只能由单片机向外发送信息。图6.1中,由P0口提供低8位地址A0A7,P2口提供高8位地址A8A15。由于P0口要分时作为数据线和地址线用,因此P0口输出的低8位地址必须用锁存器锁存。而P2口具有输出锁存的能力,故不需要外加锁存器。ALE(地址锁存允许)信号作为地址锁存器的锁存控制信号,由MCS-51单片机的P0口送出的低8位有效地址信号是在ALE信号变高的同时出现的,并在ALE由高变低时(下降沿),将出现在P0口的地址信号锁存到外部地址锁存器中,直到下一次ALE变高时,地址才发生变化。扩展片外存储器时,所需地址线的根数与存储器的字节单元数有关,设地址线的数量为n,则满足下式:(2)数据总线(DB)数据总线用于单片机与存储器之间或单片机与I/O端口之间传送数据。数据总线是双向的,可以进行两个方向的数据传送。图6.1中,数据总线由P0口提供,其宽度为8位(数据总线的宽度应与单片机处理数据的字长一致)。P0口是应用最频繁的通道,单片机与外部交换的数据、指令、信息等绝大部分都通过P0口传送。(3)控制总线(CB)控制总线是单片机发出的,以控制片外ROM、RAM和I/O口读/写操作的一组控制线。除了地址线和数据线之外,在扩展系统中还需要一些控制信号线,以构成扩展系统的控制总线。这些信号有的是单片机引脚的第一功能信号,有的则是第二功能信号。其中包括: ALE:地址锁存允许信号,以实现低8位地址的锁存。 :片外程序存储器的读选通信号。 :片内、片外程序存储器的访问控制信号。当=0时,只访问片外ROM,而不论片内有无ROM。因此在扩展并使用片外ROM时,必须接地。(P3.7)和(P3.6)作为扩展数据存储器和I/O端口的读、写选通信号,执行MOVX指令时,这两个信号分别自动有效。 MCS-51外接片外RAM最大可扩展到64KB:MCS-51外接片外ROM最大可扩展到64KB:总结:、/PSEN=0时,访问片外ROM.(只读) 、/PSEN=1时,访问片外RAM,/RD=0时,读操作,/WR=0时,写操作第四节 简单时序图 (补充)第五节、存储器组织 程序存储器和数据存储器根据单片机的应用特点而决定,大部分的单片机在存储器结构上通常采用哈佛型结构。单片机的存储器配置在物理结构上有3个存储空间:片外程序存储器、片内数据存储器、片外数据存储器。从逻辑结构上则有3个存储器地址空间:片内外统一编址的64KB程序存储器地址空间,片内128B的数据存储器地址空间和片外64KB的数据存储器地址空间。指令系统采用不同形式的指令,产生不同的控制信号,访问这3个不同逻辑的存储地址空间。下图表示单片机存储器的空间结构。第三章 指令系统第一节 指令系统格式一条指令对应着一种基本操作,因此在一条指令中的内容通常包括操作性质和操作对象,例如“加”操作,操作对象是两个数,一个是被加数,另一个是加数。指令中除了要表达进行加法运算这一操作性质外,还必须指明参与操作的两个数或这两个数的存放地点(地址),以及相加结果应放何处。在计算机中,指令都是以二进制代码形式表示和存放的,这种二进制码称为指令代码或机器码。MCS-51系列单片机的指令由操作码和操作数两大部分组成,其指令格式为:操作码 操作数1 ,操作数2 ,操作数3方括号“ ”内的字段表示可有可无。(1)操作码 表示指令进行何种操作,即操作性质。一般为英语单词的缩写。(2)操作数 指出了参加操作的数据或数据存放的地址,即操作对象。它以一个或几个空格与操作码隔开,根据指令功能的不同,操作数可以有3个、2个、1个或没有,操作数之间以逗号“,”分开。例如下列四条指令: CJNE A,#35H,LOOP ADD A,R1 INC R2 RET分别为3个、2个、1个和没有操作数的指令。第二节 寻址方式 所谓寻址方式,就是指寻找操作数所在地址的方式。这里,地址泛指一个存储单元或某个寄存器。寻址方式越是多样,越是灵活,指令系统将越有效,计算机的功能也随之越强。MCS-51系列单片机指令系统的寻址方式有七种。它们是:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址寄存器加变址寄存器间接寻址、相对寻址和隐含寻址。位寻址属于直接寻址的一类。寻址方式通常是针对源操作数的,否则需特别指明是针对目的操作数的,以免弄错。1、 寄存器寻址这种寻址方式由指令指出某一寄存器的内容作为操作数。寄存器为4组R0R7中的某一个。例如:INC R1 ; (R1)(R1)+1工作寄存器的选择由PSW中的RS1和RS0的状态决定。RS1和RS0的状态,可使用指令通过对PSW赋值而改变其状态。 操作数已经在内部寄存器中,寄存器之间传送。(A、B,R0R7) MOV A,B ;A(B) MOV R7,A ;R7(A)2、 直接寻址在指令中直接给出操作数所在存储单元的地址(一个8位二进制数),称为直接寻址。直接地址用direct表示。内部数据RAM的128个字节单元(00H7FH)例如: MOV A,60H; (A)(60H)指令功能是把内部RAM 60H单元中的内容送入累加器A。 指令中输出片内RAM的地址。(00H7FH,128个字节) MOV 30H,A ;30H(A) MOV 10H,20H ;10H(20H) MOV 11H,R1 ;11H(R1)3、 立即寻址这种寻址方式在指令中给出直接参与操作的常数(称为立即数)。这样的操作数前面以“#”号标识,可以是一个8位或16位的二进制常数。例如:MOV A,#72H;将常数72H送入累加器A中。该指令的执行过程见图3.1MOV DPTR,#2100H;将16位立即数2100H送入16位寄存器DPTR中。该指令的执行过程见图3.2 程序存储器 操作码 (PC) 立即数 (PC)+1 01110010 (PC)+2 ACC 图3.1 指令的执行过程操作数10010000 (PC)+2立即数高8位 00100001 (PC)+2立即数低8位00000000 (PC)+2DPH DPL 图3.2 寻址方式示意图 指令中有立即数 MOV A,#11H ;A=11,A11H MOV SP,#70H ;SP=70H,用于定义栈底。 4、 寄存器间接寻址通过Ri可以访问8031内部RAM的256个存储单元(地址为00H0FFH)和外部RAM的256个存储单元(地址为00H0FFH)。使用数据指针DPTR作为寄存器间接寻址时,可以访问外部RAM的64KB空间。堆栈操作也是间接寻址的。采用Ri间接寻址指令如:MOV R0,#57H ;(R0)57HMOV A,R0 ;(A)(R0)R0内容为57H,而内部RAM 57H单元的内容是8AH,则指令的功能是将8AH这个数送到累加器A中。采用DPTR间接寻址指令如:MOV DPTR,#2315H;将立即数2315H送数据指针MOVX DPTR,A;将累加器A中内容送外部RAM 2315H存储单元 通过R0、R1、DPTR三个寄存器间接寻址,其余不行。 MOV A,R0 (表间接寻址) 前:(R0)=3AH 后:A(R0) 片内RAM(3AH)=65H =(3AH) MOV R1,A 前:A=12H 后:A=12H R1=30H R1=30H (30H)=98H (30H)=12H(A) 为以R1中内容作地址的寄存器MOV R1,AMOV A,R0 ;R0,片内RAMMOV A,R0 ;R0,寄存器 5、 变址寻址这种寻址方式以16位的程序计数据PC(当前值)或数据指针DPTR作为基址寄存器,以8位的累加器A作为变址寄存器,基址寄存器内容和变址寄存器内容相加,其和形成16位的地址,该地址即为参与操作的数据的储存地址。例如指令: MOVC A, A+PC ; (A)(A)+(PC) MOVC A,A+DPTR ; (A)(A)+(DPTR) MOVC A,DPTR+A ;A(DPTR+A) 注意:MOVC,为访问片外ROM 6、 相对寻址这种寻址方式主要用于转移指令,用于指定转移的目标地址,它是以当前的PC值加上指令中规定的偏移量rel(以8位二进制补码表示)而形成实际的转移地址。一般将相对转移指令操作码所在地址称为源地址,转移后的地址称为目的地址。于是有:目的地址源地址2(相对转移指令字节数)rel例如指令:JC 75H ; 设CY=1,rel=75H。这是一条以CY为条件的转移指令。因为“JC 75H”指令是双字节指令,当CPU取出第二个字节时,PC的当前值已是原PC的内容加2,由于CY=1,所以程序转向(PC)+75H单元地址去执行。在实际应用中,经常需要根据已知的源地址和目的地址计算偏移量rel。rel的计算为:rel =目的地址源地址2计算得到的rel不论正负,均应用8位二进制补码表示。 在相对转移指令中使用 SJMP 标号;无条件转移指令 如: SJMP LL 7、 位寻址位寻址指令均采用直接寻址。位地址分布在MCS-51系列单片机内部两个区域:一个是片内RAM 20H2FH单元的128个位地址;另一个是字节地址能被8整除的特殊功能寄存器SFR中的92个位地址。位地址常用下列两种方式表示:(1)直接使用位地址。对片内RAM 20H2FH单元的128个位地址00H7FH的操作。例如: CPL 08H ; 对片内RAM 21H单元中的D0位(位地址08H)内容取反。(2)对于某些特殊功能寄存器SFR,可以直接用寄存器名字加位数表示,例如: CLR PSW.3 ; 将PSW.3中的RS0清0。 指令中含有位地址 MOV 20H,C (标志位中进位位C),20HC 注意:对称原则,式中20H,C均为位地址 MOV ACC.7,28H ;把28H放入A中D7位,ACC.7=(28H)下表为上述七种基本寻址方式及其相应的寻址空间:序 号寻址方式使用的变量寻址空间1立即寻址#data片内外ROM区64KB2直接寻址direct片内RAM低128字节3寄存器寻址R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论