版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机基础知识§1-1单片机概述一、什么是单片机单片机就是单片微型计算机(Single-ChipMicrocomputer)。微型计算机系统的硬件部分通常由五部分组成:输入设备运算器输出设备控制器存储器这种计算机系统通常由多块印刷电路板制成:多板机
主板显卡声卡存储器接口网卡输入输出接口内存条CPUCPUCPU芯片内存条存储器接口存储器芯片输入输出接口输入输出接口芯片定时计数器芯片A/D、D/A芯片单板机
印刷电路板
单硅晶片CPU存储器控制电路定时器时钟电路I/O口单片机(1)体积小,重量轻;(2)可靠性高,运行速度快,抗干扰能力强;(3)控制功能强,使用灵活,性价比高;(4)易扩展,易于开发;(5)受集成度限制,片内存储器容量较小,一般内ROM在8KB以下,内RAM在256B以内。单片机是应工业测控的需要而诞生的,它的结构与指令功能都是按照工业控制要求设计的,故又称单片微控制器(SingleChipMicrocontroller)。单片机特点:以单片机为核心的应用系统广泛应用于:家用电器;工业过程控制;仪器仪表;智能武器;航空、汽车等领域。二、单片机系统的组成CPUABDBCB存储器接口部件键盘显示器数码管打印机定时计数器单片机系统硬件部分软件部分单片机芯片外围器件CPU内存中断控制逻辑通用接口运算器寄存器组控制器并行I/O口串行UART定时/计数器ADC0809、DAC0832825382518255A、81552764、6264指令系统应用程序§1-2数制及数码计算机只识别和处理数字信息,数字是以二进制数的形式表示的。它易于物理实现,同时,资料存储、传送和处理简单可靠;运算规则简单,使逻辑电路的设计、分析、综合方便,使计算器具有逻辑性。一、数制1、常用数制(1.)十进制数:1985=1000+900+80+5=1×103+9×102+8×101+5×100
特点:有0~9十个不同的符号。逢十进一。一般用下脚标D表示,如1985D,或无下脚标。
(2.)二进制数:特点:有0,1两个不同的符号。逢二进一。二进制数的下脚标为B
例如:对于整数,
1001B=1×23+0×22+0×21+1×20=9D
对于小数,0.101B=1×2-1+0×2-2+1×2-3=0.625D
二进制数每一位的权是:以小数点分界,…..24,23,22,21,20.2-1,2-2,2-3,……
(3.)十六进制数:有0~9,A,B,C,D,E,F共十六个不同的符号。逢十六进位。用下脚标“H”表示十六进制数。例:327H=3×162+2×161+7×160=807D3AB.11H
=3×162+A×161+B×160+1×161+1×16-2
=939.0664D
2、数制的转换(1.)二进制转换为十进制数方法:按权展开。111.101B=1×22+1×21+1×20+1×2-1+0×2-2
+1×2–3=4+2+1+0.5+0.125=7.625D(2.)十进制数转换为二进制数方法:整数部分除二取余,小数部分乘二取整45余数22111051211001222222即45=(101101)2例1、将十进制数45转换成二进制数。例2:十进制小数部分的转换:乘二取整0.6875×2最高位取11.37500.375×2取00.750×2取11.500.5×2最低位取11.0从上至下写成从左至右10110.6875D=0.B二进制数转换成八进制数与上述类似。(3.)十六进制数与二进制数之间的转换:十六进制数转换为二进制:9AB.7C5H100110101011.011111000101B
二进制数转换十六进制数:0001101111100011.100101111000B1BE3.978H二、数码1、机器数与真值机器只认识二进制数:0、1。这是因为,电路状态常常有两种情况,如:电路的通、断;高电平、低电平;可用0、1表示。在机器中,这种0、1、0、1的表现形式称为机器数。机器数分为无符号数、带符号数。无符号数如:00000001、10010011、01010010、……等等,范围:00H~ FFH。有符号数如:+1010110B、-1101001B、等等01010110B、11101001B2、机器数的编码及运算对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。(1)原码将数“数码化”,原数前“+”用0表示,原数前“-”用1表示,数值部分为该数本身,这样的机器数叫原码。设X——原数;则[X]原=X(X0)[X]原=2n-1–X(X0),n为字长的位数。如,[+3]原=00000011B[-3]原=27-(-3)=10000011B0有两种表示方法:00000000——+010000000——-0原码最大、最小的表示:+127、-128(2)反码规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。[X]反=X(X0)[X]反=(2n–1)+X(X0)如,[+4]反=[+4]原=00000100B[-4]反=(28–1)+(-5)=11111111-00000101=11111010B
反码范围:-128~+127两个0:+0——00000000B-0——11111111B运用补码可使减法变成加法。规定:正数的补码等于原码。负数的补码求法:1)反码+12)公式:[X]补=2n+X(X<0)如,设X=-0101110B,则[X]原=10101110B则[X]补=[X]反+1=11010001+00000001=11010010B如,[+6]补=[+6]原=00000110B[-6]补=28+(-6)=10000000–00000110=11111010B8位补码的范围–128~+127。0的个数:只一个,即00000000而10000000B是-128的补码。原码、反码、补码对照表:见下表123(3)补码补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。
八位二进制数所能表示的数据范围机器数无符号数原码反码补码000000000+0+0+0000000011+1+1+1.....01111111127+127+127+12710000000128-0-127-12810000001129-1-126-127..........11111110254-126-1-211111111255-127-0-1(4)补码的运算当X≥0时,[X]补=[X]反=[X]原[[X]补]补=[X]原[X]补+[Y]补=[X+Y]补[X-Y]补=[X+(-Y)]补例:已知
X=52Y=38求X-Y
方法1:减法:
X-Y=52-38=1400110100
-)0010011000001110方法2:加法
X-Y=[[X-Y]补]补=[[X]补+[-Y]补]补=[[52]补+[-38]补]补=[14]补=14
[52]补:00110100
[-38]补:+)11011010100001110
自然丢失计算机在做算术运算时,必需检查溢出,以防止发生错误
(5)运算的溢出问题由于计算机中表示数据的字长(位数)有一定限制,所以数据的表示应有一个范围。如字长8位时;补码范围-128~+127若运算结果超出这个范围,便溢出。例:[98]补:01100010[25]补:+)00011001
[123]补001111011未溢出00
Cs+1Cs(未溢出)
[85]补:01010101
[47]补:+)00101111[132]补:10000100溢出01
Cs+1Cs(溢出)错:两个正数相加和为负数。
[-85]补:10101011[-47]补:+)11010001
[-132]补:101111100溢出10
Cs+1Cs
错:两个负数相加和为正数。[-19]补:01010101
[-79]补:+)10110001[-98]补:11001111未溢出11
Cs+1Cs错:两个负数相加和为正数。总之:结果正确(无溢出)时,Cs+1=Cs结果错误(溢出)时,Cs+1≠Cs溢出判断:溢出=Cs+1Cs(即结果是0为无溢出;1为有溢出)1、
(6)
十进制数的编码对机器:二进制数方便,对人:二进制数不直观,习惯于十进制数。在编程过程中,有时需要采用十进制运算,但机器不认识十进制数。怎么办?可以将十进制的字符用二进制数进行编码:
0
00005010110101111100016011010112
00107011111003001181000110140100910011110
这叫做二进制数对十进制编码——BCD码。上述每4位二进制数表示一个十进制字符,这4位中各位的权依次是:8、4、2、1——8421BCD码。BCD码的运算:例、18+)321
00011000+)00000011
00011011
B是非BCD码(错)需进行十进制调整:
00011000
+)0000001100011011(个位大于9,应进1)
+)0110(加6使进1)00100001(结果形如21)BCD码加法规则:两个BCD数相加时,“某位”的和小于10则保持不变;两个BCD数相加时,“某位”的和大于9,则和数应加6修正。BCD码减法规则:两个BCD数相减时,“某位”的差未发生借位,则差数保持不变;两个BCD数相减时,“某位”发生了借位,其差应减6修正。这里“某位”指BCD数中的“个位”、“十位”、“百位”、……加法举例:
01100101(65)
+)10010111(97)11111100
+)01100110(加66调整)101100010(162)减法举例:00110100(34)
-)00010101(15)00011111
-)0110(减6调整)00011001(29)(7)字符信息的表示计算机能识别0、1、0、1、……;这些0、1、0、1、……有的代表数值,有的仅代表要处理的信息(如字母、标点符号、数字符号等文字符号),所以,计算机不仅要认识各种数字,还要能识别各种文字符号。人们事先已对各种文字符号进行二进制数编码。如,美国信息交换标准码——ASCII码,用一个字节表示一个字符。低7位是字符的ASCII码值;最高位是通信时的校验位。
§2-1MCS-51单片机内部结构及引脚MCS-51系列单片机是因特公司1980推出的高档8位机分为二个子系列,、三个版本:/8KB8052//803252子系列4KB/8751/4KB8051//803151子系列MCS-51EPROM掩膜MOS存储器类型单片机系列一、MCS-51单片机内部结构内部结构框图如下:单片机结构框图
频率基准源
计数器
内部总线
中断
中断
控制
并行I/O口
串行输入/输出
8051振荡器及定时电路4K/8K字节程序存储器ROM128/256字节数据存储器RAM2个16位定时器/计数器8051CPU64K字节总线扩展控制可编程I/O口4×8位可编程串行口1、中央处理单元CPU(8位)用于数据处理、位操作(位测试、置位、复位)2、只读存储器ROM(4KB或8KB)用于永久性存储应用程序,掩膜ROM、EPROM、EEPROM3、随机存取存取器RAM(256B)用于程序运行中存储工作变量和数据4、并行输入/输出口I/O(32线)用作系统总线、扩展外存、I/O接口芯片5、串行输入/输出口UART(二线)串行通信、扩展I/O接口芯片6、定时/计数器T(16位增量可编程)它与CPU之间各自独立工作,当它计数满时向CPU中断7、时钟电路fosc分为内部振荡器、外接振荡电路8、中断系统五源中断、两级优先,可编程进行控制。二、MCS-51单片机外部引脚封装形式,见右图:引脚分类:1、主电源引脚Vss、Vcc2、外接晶振引脚XTAL1、XTAL23、控制或复位引脚
RST/VPD——
当出现两个机器周期高电平时,单片机复位。复位后,P0~P3
输出高电平;SP寄存器为07H;其它寄存器全部清0;不影响RAM状态。参考复位电路如下:=0时,只访问外部程序存储器,即外ROM=1时,访问内部程序存储器,即内ROM
/Vpp——内\外ROM选择端对于8751单片机编程时,该端施加编程电压4、输入/输出引脚P0.0~P0.7;P1.0~P1.7;P2.0~P2.7;P3.0~P3.7四个I/O口,每口八条线;还兼作地址/数据线。EAEAEAALE/PROG——地址锁存控制端提供1/6fosc振荡频率;为其内的EPROM输入编程脉冲PSEN——外部程序存储器的读选通信号端§2-2MCS-51单片机内存配置一、MCS-51单片机的内存结构)(外部K64RAM数据存储器
程序存储器物理上分为:4个空间,即片内ROM、片外ROM片内RAM、片外RAM逻辑上分为:
3个空间,即程序内存(片内、外)统一编址MOVC
数据存储器(片内)
MOV
数据存储器(片外)
MOVX二、程序存储器寻址范围:0000H~FFFFH容量64KB,即地址长度:16位
,寻址内部ROM;
,寻址外部ROM。
当PC值超过片内ROM容量时会自动转向外部存储器空间。8031单片机接低电平。作用:
存放程序及程序运行时所需的常数。七个具有特殊含义的单元是:
0000H——系统复位,PC指向此处;
0003H——外部中断0入口
000BH——T0溢出中断入口
0013H——外中断1入口
001BH——T1溢出中断入口
0023H——串口中断入口
002BH——T2溢出中断入口
三、内部数据存储器物理上分为两大区域:00H~7FH即128B内RAM区80H~FFH即SFR区。R0、R1、R2、R3、R4、R5、R6、R7即可位寻址,又可字节寻址数据缓冲区、堆栈区、工作单元位寻址区(20H—2FH)16个字节。16*8=128位,每一位都有一个位地址,范围为:00H—7FH,位地址区也可作为一般RAM使用。位寻址区四、特殊功能寄存器MCS-51单片机内共有22个特殊功能寄存器,包括PC及SFR。PC为程序计数器。它是一个双字节寄存器,寻址范围为:0000H~FFFFH,即0~64KB。SFR为特殊功能寄存器。其寻址空间:80H~FFH其中,51子系列有18个寄存器,占有21个字节;52子系列有21个寄存器,占有26个字节。
51子系列SFR的地址分配及位地址见下页表:
寄存器
位地址/位定义
地址
F7
F6
F5
F4
F3
F2
F1
F0
B
F0H
E7
E6
E5
E4
E3
E2
E1
E0
ACC
E0
D7
D6
D5
D4
D3
D2
D1
D0
PSW
CY
AC
F0
RS1
RS0
OV
/
P
D0H
BF
BE
BD
BC
BB
BA
B9
B8
IP
B8H
B7
B6
B5
B4
B3
B2
B1
B0
P3
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
B0H
IE
A8H
A7
A6
A5
A4
A3
A2
A1
A0
P2
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
A0H
SBUF
99H
++
注意:1、表中共有5个双字节寄存器。2、PC也为双字节寄存器,但是不在80H~FFH
范围内。
3、表中,凡地址能被8整除的寄存器都是可位寻址的寄存器。各寄存器的名称:1、算术运算寄存器(1)A——累加器。(2)B——B寄存器,乘、除法运算用。(3)PSW——程序状态字寄存器:包含程序运行状态、信息。
CY——进位/借位标志;位累加器。AC——辅助进/借位标志;用于十进制调整。F0——用户定义标志位;软件置位/清零。OV——溢出标志;
硬件置位/清零。P——奇偶标志;A中1的个数为奇数
P=1;否则
P=0。RS1、RS0——寄存器区选择控制位。
00:0区
R0~R7
01:1区
R0~R710:2区
R0~R7
11:3区
R0~R7
P—RS0RS1OV
F0
AC
CYPSW2、指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址(程序存储器地址),在物理上独立,复位时PC=0000H。(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP=07H。(3)数据指针DPTR@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。DPTR=DPH+DPL,也可单独使用。
3、并行输入/输出端口寄存器P0、P1、P2、P3实为相应端口锁存器。4、串行输入/输出端口(1)串行数据缓冲器
SBUF是物理上独立的两个寄存器,共同使用一个地址(99H)。(2)串行控制/状态寄存器SCON控制监视串行口的工作状态(3)电源控制寄存器PCON控制单片机的低功耗工作方式及波特率选择。
5、中断系统(1)中断优先级寄存器IP:2级优先,可软件设定(2)中断允许寄存器IE6、定时/计数器(1)定时器方式寄存器:TMOD(2)定时器控制寄存器:TCON(3)计数寄存器:TH0、TL0;TH1、TL1。可用于设定计数初值。五、址空间(1)内部RAM20H~2FH共16个单元可按位寻址128位。(2)SFR80H~FFH51子系列,有11个寄存器,83位;52子系列,有12个寄存器,93位。
六、外部数据存储器
(1)容量最大扩展到64KB(2)寻址范围:0000H~FFFFH(3)寻址方式:间接寻址可用R0,R1DPTR
时钟的基本概念
启动单片机后,指令执行顺序:
取指令
分析
执行§2-3CPU时序一个机器周期P1P2P1P2单字节单周期指令例:INCA以上是单周期单字节指令在执行过程中ALE脉冲、取指操作、执行操作等在时间上的先后关系。时序的定义:单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。
执令周期:即从取指到执行完,所需时间。
不同机器指令周期不一样;即使相同机器,不同的指令其指令周期也不一样。机器周期:机器的基本操作周期。个指令周期含若干机器周期(单、双、四周期)
每个状态周期含两个振荡周期,即相位P1、P2。
振荡周期:由振荡时钟产生。
振荡周期Tosc=1/fosc
一个机器周期=12个振荡周期=12×1/fosc。
例如,若fosc=12MHz,则一个机器周期=1μs。状态周期:一个机器周期分6个状态周期Si单字节单周期指令例:INCA双字节单周期指令例:ADDA,DATA单字节双周期指令例:INCDPTR当ALE(ALE信号为振荡频率6分频)正跳变时,对应单片机进行一次读指令操作。一个机器周期二次出现,在S1P2和S2P1及S4P2和S5P1期间。有效宽度为一个状态。(1)单字节单周期指令:INCA只需进行一次读指令操作(指令只有一个字节),当第二个ALE有效时,由于PC没有加1,读出的还是原指令。属于一次无效操作。(2)双字节单周期指令:ADDA,#dataALE两次读操作都有效,第一次读操作码(指令第一字节),第二次读立即数(指令第二字节)。(3)单字节双周期指令:INCDPTR两个机器周期共进行四次读指令操作,但其后三次的读操作都是无效的。
时钟的产生:
XTAL1(19)、XTAL(18)。
1、内部方式
与作为反馈元件的片外晶体或陶瓷谐振器一起组成一个自激振荡器。
2、外部方式
CMOS工艺的8031,其XTAL1接外信号;XTAL2可悬空。HMOS工艺的8031,其XTAL2接外信号;
XTAL1接地。
小结:1、MCS—51存储结构分配是怎样的?2、SFR中各寄存器的名称?
布置作业:P352-5§2-4并行I/O端口四个端口、双向、每个口包含一个锁存器、一个输出驱动器和二个输入缓冲器。一、P0口1、结构
P0口电路图如下图
P0口:地址/数据复用口2、通用I/O口1)读(端口外数据
内部寄存器)方式1(读锁存器)QG2D内部总线,适于“读—修改—写”方式2(读引脚):P0.xG1D内部总线。作为通用I/O使用,
是一个准双向口:“在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态,可作高阻抗输入”2)写(片内数据
端口)
数据
锁存
MUXP0.x
3)地址/数据总线口控制MUX写:地址/数据为1,P0·x——高
地址/数据为0,P0·x——低读:经缓冲器G1读入
4)负载能力可带8个TTL输入,驱动NMOS时,接上拉电阻。
总结特点:(1)P0口可作通用I/O口使用,又可作地址/数据总线口;(2)P0既可按字节寻址,又可按位寻址;(3)P0作为输入口使用时:是准双向口;(4)作通用I/O口输出时:是开漏输出;(5)作地址/数据总线口时,P0是一真正双向口,而作通用I/O口时,只是一个准双向口。
二、P1口1、结构:只能作I/O口用,且是一个准双向口。内部已有上拉电阻,不是开漏输出口。2、特点:(1)无地址/数据口功能(2)可按字节寻址,也可按位寻址(3)作I/O输入口时:是一准双向口,不是开漏输出。
三、P2口1、结构
2、特点:(1)当P2口作为通用I/O时,是一准双向口。(2)从P2口输入数据时,先向锁存器写“1”。(3)可位寻址,也可按字节寻址(4)可输出地址高8位。
四、P3口1、结构2、特点:(1)作通用I/O时,“选择输出功能”应保持高电平,(2)工作于第二功能时,该位锁存器应置1,(3)作输入口时,输出锁存器和选择输出功能端都应置1(4)第二功能专用输入,取自输入通道第一缓冲器(G1)输出端,通用输入信号取自“读引脚”。
高级语言:§3-1汇编语言与指令系统简介
一、汇编语言程序设计的意义什么是程序?完成某项特定任务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。汇编语言:机器语言:程序设计语言:用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。独立于机器,面向过程,接近自然语言和数学表达式.汇编语言程序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。指令
=
操作码
+
操作数操作码——表示了该指令所能执行的操作功能。操作数——表示参加操作的数的本身或操作数所在的地址。MCS-51指令格式:[标号:]操作码助记符[第一操作数][,第二操作数][;注释]二、MCS-51系列单片机的指令系统111条指令,共分五大类:数据传送类;(29条)算术运算类;(24条)逻辑运算类;(24条)控制转移类;(17条)位操作类。(17条)指令中操作数的描述符号:
Rn——工作寄存器R0~R7Ri——间接寻址寄存器R0、R1
Direct——直接地址,包括内部128BRAM单元地址、26个SFR地址。#data——8位常数#data16——16位常数
addr16——16位目的地址addr11——11位目的地址
rel——8位带符号的偏移地址
DPTR——16位外部数据指针寄存器
bit——可直接位寻址的位
A——累加器
B——寄存器B
C——进、借位标志位,或位累加器
@——间接寄存器或基址寄存器的前缀/——指定位求反(x)——x中的内容
((x))——x中的地址中的内容
$——当前指令存放的地址
三、寻址方式寻找操作数存放单元的地址的方式,共6种方式。1、立即数寻址所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀
MOVA,#20H2、寄存器寻址操作数存放在工作寄存器R0~R7中,或寄存器B中。
MOVA,R23、直接寻址指令中直接给出操作数的地址。
MOVA,30HMOV30H,DPH;书放在甲抽屉中;甲抽屉的钥匙放在乙抽屉中;取书,A中
20HMOV30H,#20HMOVR0,#30HMOVA,@R0此例中,20H就当成是那本书;30H就当成是甲抽屉;
R0就当成是乙抽屉,执行的结果就是将20H这个立即数装入A中。期间也经历了两次寻址,即间接寻址。4、寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,在工作上间接寻址寄存器前用“@”表示前缀。例如:“一本书放在甲抽屉中,上了锁;其开锁的钥匙放在乙抽屉中,乙抽屉也上了锁。问如何才能取到哪本书?”这就是一个间接寻址的问题,要经过两次寻址才能找到哪本书。而寄存器间接寻址也是同样。例如:
5、变址寻址操作数地址=变地址+基地址基地址寄存器DPTR或PC
变址寄存器@A该寻址方式常用于访问程序存储器,查表。如MOVCA,@A+DPTR6、相对寻址把指令中给定的地址偏移量与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。例如“李同学20岁,张同学比李同学大3岁,问张同学多少岁?”这就是一个相对寻年龄的问题,而相对寻址与此类似。如JC60H;设(PC)=2000H为基址,相对偏移量为60H;;则当C=1时,转移的目的地址=2000H+2+60H巩固新课:1、汇编语言有何种特点?指令格式?2、MCS—51系列机共有多少条指令?分几类?3、MCS—51系列汇编语言指令有几种寻址方式?
§3-2数据传送类指令一、内部RAM数据传送类1、一般数据传送指令片外程序存储器ROMEPROM特殊功能寄存器SFR片内RAM128字节片外数据存储器RAMMOVCMOVXMOVPUSHPOPXCHXCHD回忆前述操作数描述符:A,direct,Rn,@Ri,#data,DPTR等。经排列组合可写出下列指令:MOVA,Rn;(A)(Rn)以下类似。MOVA,directMOVA,@RiMOVA,#dataMOVRn,AMOVRn,directMOVRn,#dataMOVdirect,RnMOVdirect,directMOVdirect,@RiMOVdirect,#dataMOV@Ri,AMOV@Ri,directMOV@Ri,#dataMOVDPTR,#data16;唯一的16位数据传送指令。上述指令不影响任何标志位,但PSW的P位除外。(direct)(A)MOVdirect,A;上述指令不影响任何标志位,但PSW的P位除外。注意:MOVRn,RnMOV@Ri,@RiMOVRn,@RiMOV#data,A
等等指令是非法指令。
ХХХХ哇!好容易出错啊!(2)(direct)2、栈操作指令PUSHdirectPOPdirect不影响任何标志位。PUSHdirect指令执行中,机器自动进行两步操作:(1)(SP)+1例1、设(SP)=09H,(DPTR)=0123H,分析:执行PUSHDPLPUSHDPH
后,各单元中的内容。(SP)((SP))POPdirect指令执行中,机器也自动进行两步操作:(1)(direct)((SP))(2)(SP)(SP)-1例2、设(SP)=0BH,(0BH)=01H,(0AH)=23H
执行POPDPHPOPDPL
后,各单元中的内容。结论:1)PUSH与POP操作过程刚好相反;2)进、出栈规则:先进后出,后进先出。应注意指令书写先后顺序;
3)可用于“保护现场,恢复现场”。3、字节交换指令XCHA,RnXCHA,direct整字节交换XCHA,@RiXCHDA,@RiSWAPA半字节交换不影响任何标志位。
二、外部RAM数据传送MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A执行过程中会使/WR、/RD有效。例3、试编写一程序段,实现将外RAM0FAH单元中的内容传送到外RAM04FFH单元中。解:MOVDPTR,#04FFHMOVR0,#0FAHMOVXA,@R0MOVX@DPTR,A三、查表指令与ROM之间的数据传送。MOVCA,@A+DPTRMOVCA,@A+PC执行后会使/PSEN有效。MOVC含义是传送常数。以DPTR为基地址的指令,可在ROM的64KB范围内查表;而以PC为基地址的指令只能在(PC)+1为中心上、下256B范围内查表。例4、设(A)=一个BCD码常数,试用查表法获得其相应的ASCII码。
解法II:
MOVCA,@A+PCTAB:DB30H,31H,32H,33HDB34H,35H,36H,37H······解法I:
MOVDPTR,#TABMOVCA,@.A+DPTRTAB:DB30HDB31HDB32H,33H,34H,35H······小结:数据传送类指令有几种类型?是否影响标志位?§3-3算术运算类指令包括:加、减、乘、除;加一、减一。一、加法指令ADDA,Rn;(A)(A)+(Rn)以下类同。ADDA,directADDA,@RiADDA,#data无符号数相加时:若C=1,说明有溢出(其值>255)。带符号数相加时:若OV=D7c⊕D6c=1,说明有溢出。ADDCA,Rn;(A)(A)+(Rn)+(C);以下类同。ADDCA,directADDCA,@RiADDCA,#data上述四条指令多用于多字节数相加。
INCA;(A)(A)+1,以下类同。INCRnINCdirectINC@RiINCDPTR
INCA;(A)(A)+1;以下类同。INCRnINCdirectINC@RiINCDPTR
例1、设(R0)=7FH;(7EH)=40H
执行:INC@R0INCR0INC@R0后,(R0)=7FH;(7EH)=00H;(7FH)=41HDAA;二——十进制调整指令。执行过程中,CPU能根据加法运算后,累加器中的值和PSW中的AC及C标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二——十进制调整。(A3~0)>9时或(AC)=1时,(A3~0)
(A3~0)+6(A7~4)>9或(C)=1时,(A7~4)
(A7~4)+6选择修正值的规则:例2、设(A)=56H为56的压缩的BCD码数,(R3)=67H,(CY)=1
执行ADDCA,R3DAA
结果为:124注意:1)DA指令只能跟在加法指令后面使用;2)调整前参与运算的两数是BCD码数;3)DA指令不能与减法指令配对使用,但可以实现对A中压缩BCD数进行减一操作。
例3、设(A)=30H(压缩BCD码数),执行:ADDA,#99HDAA
后,便实现了30-1=29的操作。
例4、两个4位BCD码相加,一个存放在(31H)(30H);另一个存放在(33H)(32H);和数拟回存在(31H)(30H)中,试编程实现之。解:MOVR0,#30HMOVR1,#32HMOVA,@R0ADDA,@R1DAAMOV@R0,AINCR1MOVA,@R0ADDCA,@R1DAAMOV@R0,AINCR0二、减法指令SUBBA,Rn;(A)(A)-(Rn)-(C),以下类同。SUBBA,directSUBBA,@RiSUBBA,#data注意:减法之前先清零C。
DECA;(A)(A)-1 ,以下类同。DECRnDEC@RiDECdirect例5、设(R0)=7FH,在内RAM中,(7EH)=00H,(7FH)=40H
执行:DEC@R0DECR0DEC@R0
结果为
:(R0)=7EH,(7EH)=0FFH,(7FH)=3FH。
三、乘法和除法指令乘法:MULAB;(A)×(B),积的低8位在A中,积的;高8位在B中;C总为0。
除法:DIVAB;(A)÷(B),商在A中,余数在B中。;若(B)=0,则结果不定,(OV)=1,;(C)=0。
例6、试将A中的二进制数转换为3位BCD码,其中,百位数存放于31H单元,十位数和个位数压缩后存于30H单元中。解:MOVB,#100DIVABMOV31H,AMOVA,#10XCHA,BDIVABSWAPAADDA,BMOV30H,A小结:算术运算类指令都有哪些类型?
§3-4逻辑运算类指令共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。一、单字节逻辑操作指令CLRA;(A)0CPLAA中8位按位求反。
循环左移、右移指令:RLARLCARRARRCA注:左移一位相当于乘2;右移一位相当于除2。
二、双字节逻辑操作指令“与操作”:ANLA,Rn;(A)(A)∧(Rn),以下类同。ANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#data
例1、(P1)=35H,使其高4位输出0,低4位不变。解;ANLP1,#0FH
此做法称为“屏蔽”位。
“或操作”:ORLA,Rn;(A)(A)∨(Rn),以下类同。ORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data例2、将A中的低3位送入P1中,并且保持P1中高5位不变。ANLA,#07HANLP1,#0F8HORLP1,A;(P1)=P17P16P15P14P13A2A1A0这称为“数位组合”。
“异或操作”:XRLA,Rn;(A)(A)⊕(Rn),以下类同。XRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data例3、设(P1)=0B4H=10110100B,执行:
XRLP1,#00110001B
结果按#00110001取反,即:(P1)=10000101B=85H这称为“指定位取反”。
在上述ANL、ORL、XRL操作中,用于端口操作时,无论P0~P3是第一,还是第二操作数,都遵循“读—修改—写”端口锁存器的操作。
小结:1、逻辑操作分为哪两类操作?2、循环移位指令每执行一次,移几位?3、ANL、ORL、XRL指令有哪些使用技巧?
§3-5控制转移类指令作用:改变程序计数器PC的值,从而改变程序执行方向。分为四大类:无条件转移指令;条件转移指令;调用指令;返回指令。一、无条件转移指令LJMPaddr16AJMPaddr11SJMPrelJMP@A+DPTRLJMPaddr16;长跳转指令转移目的地址addr16(PC),0000H~FFFFH,64KB
AJMPaddr11;绝对转移转移目的地址的形成:先(PC)(PC)+2;然后PC15~11不变,PC10~0addr10~064KB=216=25×211=32×2KB转移目的地址与(PC)+2在同一个2KB范围内。
SJMPrel;短转移,相对寻址。转移目的地址=(PC)+2+rel,所以rel=转移目的地址-(PC)-2但,实际使用中常写成SJMPaddr16,汇编时会自动转换成rel。
JMP@A+DPTR;间接转移,散转移指令。转移目的地址=(@A)+(DPTR)本指令不影响标志位,不改变@A及DPTR中的内容。常用于多分支程序结构中,可在程序运行过程中动态地决定程序分支走向。
例1、设A中为键值,试编写按键值处理相应事件的程序段。解:MOVDPTR,#KYEGMOVB,#03HMULABJMP@A+DPTR
………KYEG:LJMPKYEG0LJMPKYEG………比较LJMP、AJMP、SJMP、JMP转移的起点和范围:
LJMPLJMPPC64K
AJMPAJMPPC+2
SJMPSJMPPC+2-128+127
JMPJMP@A+DPTRPCPC+2DPTR256LCALLaddr16;长调用ACALLaddr11;绝对调用
LCALLaddr16;转移范围64KB,不影响标志位。执行中自动完成如下过程:(PC)(PC)+3(SP)(SP)+1((SP))(PC7~0),保护断点地址低字节;(SP)(SP)+2((SP))(PC15~8),保存断点地址高字节;
(PC)addr16,目的地址送PC,转子程序。
二、调用指令LCALL34H56H
MOV
•
•
•
•执行结果:(SP)=09H,(09H)=21H,(08H)=03H,(PC)=3456H
SP07HSPSP08H09H2100H3456H外ROM内RAMPC+3PC2103HPC03H21H例2、设(SP)=07H,(PC)=2100H,子程序首地址为3456H,执行:
LCALL3456HMOVA,20H······转移范围与(PC)+2在同一个2KB内。不影响任何标志位,执行中机器自动完成下列过程:(PC)(PC)+2(SP)(SP)+1((SP))(PC7~0)(SP)(SP)+2((SP))(PC15~8)
(PC10~0)addr10~0 ACALLaddr11:三、返回指令从子程序返回主程序。RET;调用子程序返回;RETI;中断子程序返回。
(PC15
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上饶市广信区人民法院公开招聘劳务派遣工作人员14人备考题库及一套参考答案详解
- 2026福建泉州市丰泽区实验小学(东涂校区)招聘春季校聘教师笔试重点题库及答案解析
- 2025年绍兴市中等专业学校合同制工作人员(融媒体工作技术员)招聘备考题库及参考答案详解一套
- 2025-2026 学年高二 历史 期末冲刺卷 试卷及答案
- 2025江西中赣投设计本部招聘6人【社招】考试核心试题及答案解析
- 2025四川大学华西公共卫生学院华西第四医院 临床护士招聘6人参考笔试题库附答案解析
- 《金融科技支付清算体系在支付清算行业中的支付清算监管挑战与发展趋势分析》教学研究课题报告
- 内江市公安局高新技术开发区分局2025年第三次招聘警务辅助人员备考题库及一套答案详解
- 2026中国农业科学院第一批统一招聘(中国农科院茶叶研究所)笔试重点试题及答案解析
- 2025年农产品深加工产品质量与安全保障报告
- 2025年秋人教版(2024)初中美术七年级上册期末知识点复习卷及答案
- 2025年高校行政面试题及答案
- 调车服务合同范本
- 2025年新《中国传统文化》考试复习题(附答案)
- 行车搬迁改造协议书
- 辽宁省辽西重点高中2025-2026学年高一上学期11月期中考试数学试题(原卷版)
- 甘肃省庆阳市七区2024-2025学年高一上学期期末联考语文试题
- 雨课堂学堂在线学堂云《English for Presentations at International Medical Conferences》单元测试考核答案
- 人教版小升初考试数学试卷(含解析)重庆市渝北区鲁能巴蜀小学2025年
- 2025年福建省综合评标专家库考试题库(二)
- 2024苏州大学辅导员招聘笔试真题及答案
评论
0/150
提交评论