单片机 一纸开材料Word文件下载.docx

上传人:b****1 文档编号:461708 上传时间:2023-04-29 格式:DOCX 页数:56 大小:1.23MB
下载 相关 举报
单片机 一纸开材料Word文件下载.docx_第1页
第1页 / 共56页
单片机 一纸开材料Word文件下载.docx_第2页
第2页 / 共56页
单片机 一纸开材料Word文件下载.docx_第3页
第3页 / 共56页
单片机 一纸开材料Word文件下载.docx_第4页
第4页 / 共56页
单片机 一纸开材料Word文件下载.docx_第5页
第5页 / 共56页
单片机 一纸开材料Word文件下载.docx_第6页
第6页 / 共56页
单片机 一纸开材料Word文件下载.docx_第7页
第7页 / 共56页
单片机 一纸开材料Word文件下载.docx_第8页
第8页 / 共56页
单片机 一纸开材料Word文件下载.docx_第9页
第9页 / 共56页
单片机 一纸开材料Word文件下载.docx_第10页
第10页 / 共56页
单片机 一纸开材料Word文件下载.docx_第11页
第11页 / 共56页
单片机 一纸开材料Word文件下载.docx_第12页
第12页 / 共56页
单片机 一纸开材料Word文件下载.docx_第13页
第13页 / 共56页
单片机 一纸开材料Word文件下载.docx_第14页
第14页 / 共56页
单片机 一纸开材料Word文件下载.docx_第15页
第15页 / 共56页
单片机 一纸开材料Word文件下载.docx_第16页
第16页 / 共56页
单片机 一纸开材料Word文件下载.docx_第17页
第17页 / 共56页
单片机 一纸开材料Word文件下载.docx_第18页
第18页 / 共56页
单片机 一纸开材料Word文件下载.docx_第19页
第19页 / 共56页
单片机 一纸开材料Word文件下载.docx_第20页
第20页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机 一纸开材料Word文件下载.docx

《单片机 一纸开材料Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机 一纸开材料Word文件下载.docx(56页珍藏版)》请在冰点文库上搜索。

单片机 一纸开材料Word文件下载.docx

使用MOVC指令

数据存储器:

内部RAM(00H—7FH,低128B;

80H—FFH,高128B)

外部RAM(0000H——FFFFH,64K单元)

控制信号:

/RD或/WR有效(=0)

使用计数器:

DPTR

使用指令:

内部RAM用MOV;

外部RAM用MOVX

程序存储器和数据存储器使用独立的两个地址空间。

由/PSEN和/RD(/WR)区分。

程序存储器ROM

存放程序代码和表格数据,64KB,地址指针是16位PC。

注意6个特殊的单元:

0000H-0002H单元:

上电时,程序计数器PC所指向的单元;

0003H-000AH单元:

外部中断/INT0的入口地址;

000BH-0012H单元:

定时器T0的溢出中断入口地址;

0013H-001AH单元:

外部中断/INT1的入口地址;

001BH-0022H单元:

定时器T1的溢出中断入口地址;

0023H-002AH单元:

串行口接收、传送的中断入口地址。

注:

中断响应后,由硬件控制PC自动转到各中断区的首地址。

但每个中断区只有8个单元,无法放置完整的中断处理子程序,编程时必须在中断入口区放置一条无条件转移指令,将程序引导到真正的中断处理程序的实际入口位置。

复位操作

复位是单片机的初始化操作。

复位的主要功能:

把PC初始化为0000H,使CPU从0000H单元开始执行程序;

当程序运行出错或操作错误系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。

除PC之外,复位操作还对其它一些寄存器有影响,但复位不影响内部RAM状态。

复位后的内部寄存器状态

Chap2

寻址方式

立即寻址:

·

指令码中直接含有操作数本身(立即数)

立即数可以是8位或16位

立即数通常用#data或#data16表示

立即数只能作为源操作数

立即数同操作码一起存放在程序存储器中

MOVA,#3BH;

A←3BH

MOVDPTR,#1828H;

DPTR←#1828H

直接寻址:

指令码中含有操作数地址(8位二进制数);

可用于直接寻址的存储空间是:

片内RAM的低128字节和特殊功能寄存器SFR;

直接寻址通常用direct(操作数所在存储单元的物理地址)表示;

MOV40H,A;

(40H)←A

对片内高128B的RAM,direct既可以使用SFR的物理地址,也可以用SFR的名称符号。

MOVA,81H;

A←(81H)

MOVA,SP;

A←SP,可读性好

3、寄存器寻址:

操作数在R7-R0,A,B,AB,DPTR中,指令码中含有该操作数的寄存器号;

操作数位于片内RAM中

MOVA,Rn;

(A)←(Rn)

4、寄存器间接寻址:

指令码中含有存放该操作数地址的寄存器号;

间址寄存器采用@R0,@R1,@DPTR表示;

@R0,@R1用于对片内RAM和外部RAM(0000H~00FFH)寻址,@DPTR的寻址范围是片外ROM/RAM的全部64KB区域;

寄存器间址指令不能用于寻址SFR

MOVA,@R0;

A←((R0))

5、变址寻址:

指令码中隐含有作为基地址寄存器用的数据指针DPTR或程序计数器PC(存放基地址);

指令码中也隐含有累加器A(A中存放地址偏移量,00H~FFH范围内的无符号数);

寻址空间是程序存储器。

MOVCA,@A+PC;

A←(A+PC)

MOVCA,@A+DPTR;

A←(A+DPTR)

6、相对寻址:

相对转移指令的指令码中含有相对地址偏移量;

相对转移指令分为:

短转移指令和长转移指令(分别为双字节和三字节);

PC的当前值+相对地址偏移量rel=下一条要执行指令的地址;

PC的当前值是指相对转移指令从程序存储器中取出后的PC值。

2000H8054HSJMPrel;

PC←PC+2+rel

7、位寻址:

位寻址指令的指令码中含有位地址;

位寻址指令中位地址用bit表示(字节地址direct);

位寻址区:

片内RAM位寻址区20H~2FH和11个SFR;

MOVC,7FH;

Cy←(7FH)

MOVC,2FH.7;

Cy←(7FH)

MOVC,ACC.7;

Cy←ACC.7

A1BIT7FH——位地址赋值伪指令

MOVC,A1;

Cy←2FH.7,A1为符号位地址

1、数据传送指令(28条)此类指令不影响Cy,AC,OV标志,只影响奇偶标志P。

片内RAM单元之间的数据传送指令(15条)指令的源操作数和目的操作数地址都在单片机内部,是片内RAM或SFR的地址。

(1)立即寻址型传送指令

MOVA,#data;

A←data

MOVRn,#data;

Rn←data

MOV@Ri,#data;

(Ri)←data

MOVdirect,#data;

direct←data

(2)直接寻址型传送指令:

指令操作码中至少含有一个操作数的直接地址。

MOVA,direct;

A←(direct)

MOVdirect,A;

direct←A

MOVRn,direct;

Rn←(direct)

MOV@Ri,direct;

(Ri)←(direct)

MOVdirect2,direct1;

direct2←(direct1)

目的存储单元有累加器A、工作寄存器和片内

RAM单元(包括SFR的字节地址)。

(3)寄存器寻址型传送指令

MOVA,Rn;

A←Rn

MOVRn,A;

Rn←A

MOVdirect,Rn;

direct←Rn

(4)寄存器间址型传送指令

MOVA,@Ri;

A←(Ri)

MOV@Ri,A;

(Ri)←A

MOVdirect,@Ri;

direct←(Ri)

外部数据传送指令(外部RAM/ROM)(13条)

(5)16位数传送指令

MOVDPTR,#data16;

DPTR←data16

16位立即数是外部RAM/ROM的地址,其高8位送入DPH,低8位送入DPL。

(6)外部ROM的字节传送指令(查表指令)

MOVCA,@A+DPTR;

A←(A+DPTR)远程查表

MOVCA,@A+PC;

PC←PC+1,A←(A+PC)近程查表

(7)外部RAM的字节传送指令:

实现外部RAM和累加器A之间的数据传送。

MOVXA,@Ri;

A←(Ri)

MOVX@Ri,A;

MOVXA,@DPTR;

A←(DPTR)

MOVX@DPTR,A;

(DPTR)←A

前面两条指令访问外部RAM:

0000H~00FFH

后面两条指令访问外部RAM:

0000H~FFFFH

(8)堆栈操作指令

PUSHdirect;

SP←SP+1,(SP)←(direct)

POPdirect;

direct←(SP),SP←SP-1

堆栈操作指令是直接寻址指令,书写格式为:

PUSHACC

PUSH00H

POPACC

POP00H

弹出指令不会改变堆栈区存储器单元中的内容。

(9)数据交换指令

XCHA,Rn;

A↔Rn

XCHA,direct;

A↔(direct)

XCHA,@Ri;

A↔(Ri)

XCHDA,@Ri;

A3~0↔(Ri)3~0

只是将累加器A中的内容和片内RAM单元内容相互交换。

2、算术运算指令(24条)

加法指令(13条)

(1)不带Cy加法指令

ADDA,Rn;

A←A+Rn

ADDA,Direct;

A←A+(Direct)

ADDA,@Ri;

A←A+(Ri)

ADDA,#data;

A←A+data

对PSW标志位均有影响;

计算机总是按带符号数法则运算,产生PSW标志位。

两个带符号数相加,运算结果是否溢出应判断OV标志位。

(2)带Cy加法指令

ADDCA,Rn;

A←A+Rn+Cy

ADDCA,Direct;

A←A+(Direct)+Cy

ADDCA,@Ri;

A←A+(Ri)+Cy

ADDCA,#data;

A←A+data+Cy

Cy——指令执行前的Cy值。

常用于多字节无符号数的加法运算

(3)加1指令:

只影响奇偶校验标志位

INCA;

A←A+1

INCRn;

Rn←Rn+1

INCDirect;

Direct←(Direct)+1

INC@Ri;

(Ri)←(Ri)+1

INCDPTR;

DPTR←DPTR+1

减法指令(8条)

(4)带Cy减法指令

SUBBA,Rn;

A←A–Rn-Cy

SUBBA,Direct;

A←A-(Direct)-Cy

SUBBA,@Ri;

A←A-(Ri)-Cy

SUBBA,#data;

A←A–data-Cy

两个带符号数相减,运算结果是否溢出应判断OV标志位。

(5)减1指令:

DECA;

A←A-1

DECRn;

Rn←Rn-1

DECDirect;

Direct←(Direct)-1

DEC@Ri;

(Ri)←(Ri)-1

(6)十进制调整指令(1条)

DAA;

若AC=1或A3~A0>

9,则A←A+06H

若Cy=1或A7~A4>

9,则A←A+60H

通常紧跟在加法指令后使用,对A中的操作数进行十进制调整。

专用于实现BCD运算。

(7)乘法、除法指令(2条)

MULAB;

B=BA,形成标志

对标志位的影响:

Cy=0;

若B不等于0,则OV=1,否则OV=0;

P由A中1的奇偶性确定。

DIVAB;

B=A…B,形成标志

执行过程中,若发现B等于0,则OV=1;

P由A中1的奇偶性确定。

3、逻辑运算指令(25条)

(1)逻辑与运算指令

ANLA,Rn;

A←A∧Rn

ANLA,direct;

A←A∧(direct)

ANLA,@Ri;

A←A∧(Ri)

ANLA,#data;

A←A∧data

ANLdirect,A;

direct←(direct)∧A

ANLdirect,#data;

direct←(direct)∧data

(2)逻辑或运算指令

ORLA,Rn;

A←A∨Rn

ORLA,direct;

A←A∨(direct)

ORLA,@Ri;

A←A∨(Ri)

ORLA,#data;

A←A∨data

ORLdirect,A;

direct←(direct)∨A

ORLdirect,#data;

direct←(direct)∨data

(3)逻辑异或运算指令

XRLA,Rn;

A←A⊕Rn

XRLA,direct;

A←A⊕(direct)

XRLA,@Ri;

A←A⊕(Ri)

XRLA,#data;

A←A⊕data

XRLdirect,A;

direct←(direct)⊕A

XRLdirect,#data;

direct←(direct)⊕data

例:

ANLA,#0FH;

高四位清零,低四位不变

ORLA,#0FH;

高四位不变,低四位置1

XRLA,#0FH;

高四位不变,低四位求反

(4)累加器A清零和取反指令

CLRA;

A←0

CPLA;

A←A

(5)移位指令

RLA;

A7←A6←…..←A0←A7

RRA;

A0→A7→…..→A1→A0

RLCA;

CY←A7←A6←…..←A0←CY

RRCA;

CY→A7→…..→A0→CY

SWAPA;

高4位和低4位交换指令

4、控制转移指令(17条)

(1)无条件转移指令

LJMPaddr16;

PC←addr16

长转移指令:

64K范围内转移指令

AJMPaddr11;

PC←PC+2,PC10~PC0←addr11

绝对转移指令:

2K范围内转移指令

SJMPrel;

PC←PC+2,PC←PC+rel

短转移指令:

-126-129范围内转移指令,rel的取值范围-128-127

JMP@A+DPTR;

PC←A+DPTR

间接转移指令:

变址转移指令,目标转移地址的基地址送入DPTR

(2)条件转移指令

累加器A判零转移指令

JZrel;

若A=0,则PC←PC+2+rel,

否则PC←PC+2

JNZrel;

注意:

都是双字节相对转移指令,rel为相对地址偏移量。

(3)比较不相等转移指令

CJNEA,#data,rel;

若A=data,则PC←PC+3

若A不等于data,则PC←PC+3+rel,形成Cy标志。

CJNEA,direct,rel;

CJNERn,#data,rel;

CJNE@Ri,#data,rel;

指令的相对转移范围为-125~+130

(4)减1非零转移指令

DJNZRn,rel;

若Rn-1不等于0,则PC←PC+2+rel

若Rn-1=0,则PC←PC+2

DJNZdirect,rel;

若,(direct)-1不等于0,则PC←PC+3+rel

若,(direct)-1=0,则PC←PC+3

注意:

条件转移指令均为相对转移指令,因此指令的转移范围十分有限。

(5)短调用指令

ACALLaddr11;

PC←PC+2

SP←SP+1,(SP)←PC7~PC0

SP←SP+1,(SP)←PC15~PC8

PC10~0←addr11

(1)短调用指令也称为绝对调用指令;

(2)本调用指令应与被调用子程序起始地址在

同一个2KB范围内。

(6)长调用指令

LCALLaddr16;

PC←PC+3

SP←SP+1,(SP)←PC7~PC0

SP←SP+1,(SP)←PC15~PC8

PC15~0←addr16

本调用指令是一个64KB范围内调用指令。

(7)一般子程序返回指令

RET;

PC15~PC8←(SP),SP←SP-1,

PC7~PC0←(SP),SP←SP-1

(8)中断子程序返回指令

RETI;

在返回断点的同时,释放中断逻辑,接受新的中断请求。

(9)空操作指令:

NOP;

PC←PC+1

5、布尔变量操作指令(17条)

(1)位传送指令

MOVC,bit

MOVbit,C

其中:

C为PSW中的Cy;

bit为布尔变量的位地址。

这组指令的其中一个操作数必须是进位标志C,另一个可以是位地址。

(2)位置位和复位指令

位置位指令(置1)

SETBC;

1→Cy

SETBbit;

1→(bit)

位复位指令(清0)

CLRC;

0→Cy

CLRbit;

0→(bit)

(3)位逻辑运算指令

位逻辑“与”指令

ANLC,bit;

(C)∧(bit)→C

ANLC,/bit;

(C)∧/(bit)→C

位逻辑“或”指令

ORLC,bit;

(C)∨(bit)→C

ORLC,/bit;

(C)∨/(bit)→C

位逻辑“非”指令

CPLC;

/(C)→C

CPLbit;

/(bit)→bit

(4)位条件转移指令

累加器cy状态判断转移指令

JCrel;

若Cy=1,则(PC)+2+rel→PC

若Cy=0,则(PC)+2→PC

JNCrel;

若Cy=0,则(PC)+2+rel→PC

若Cy=1,则(PC)+2→PC

位状态判断转移指令

JBbit,rel;

若(bit)=1,则(PC)+3+rel→PC

若(bit)=0,则(PC)+3→PC

JNBbit,rel;

若(bit)=0,则(PC)+3+rel→PC

若(bit)=1,则(PC)+3→PC

JBCbit,rel;

若(bit)=1,则(PC)+3+rel→PC,0→bit

若(bit)=0,则(PC)+3→PC

6、伪指令——是在机器汇编时供汇编程序识别和执行的命令,用于对汇编的过程进行控制。

ORG指令代码存储起始地址

ORG2000H

START:

MOVA,#64H

END

END:

结束汇编伪指令

每个源程序只能有一个END,且在程序的末尾。

EQU等值(赋值)语句

字符名称EQU数据或汇编符

DAPORTEQU0C010H

注:

先定义后使用,定义字符名称不能在表达式中使用。

DATA数据地址赋值语句

字符名称DATA表达式

AADATA35H

表达式可为数据或地址,也可包含已定义的“字符名称”,但不能是汇编符号。

DB:

定义字节

[标号:

]DB项或项表

把“项或项表”中的数据依次存放到以左边标号为起始地址的存储单元中

DW:

定义双字节数(字)(高8位放低地址单元)

[标号:

]DW项或项表

定义存储空间

]DS表达式

从标号地址开始预留一定数量的内存单元

BIT:

位地址赋值

字符名称BIT位地址

汇编语言程序设计

1.查表程序设计

DPTR作基址的查表指令

MOVCA,@A+DPTR;

A←(A+DPTR)

步骤:

(1)DPTR←所查表的始址

(2)A←所查表的项数

(3)执行查表指令

PC作基址的查表指令

MOVCA,@A+PC;

A←(A+PC)

(1)A←所查表的项数

(2)查表指令前应放如下指令:

ADDA,#data

其中,data=查表指令到表始址间的指令字节数

(3)执行查表指令

已知R0中有1个0-F的数,编程将其变换成ASCII码。

求解:

(1)采用DPTR作基址

ORG3000H

MOVDPTR,#ASCTAB;

DPTR←ASCTAB

MOVA,R0;

A←项数

ANLA,#0FH;

屏蔽高4位

MOVCA,@A+DPTR;

A←结果

MOVR0,A;

送回R0

SJMP$

ASCTAB:

DB‘0’,‘1’…,‘9’

DB‘A’,‘B’…,‘F’

END

2)采用PC作基址

ORG1000H

ADDA,#data;

A←A+data

MOVCA,@A+PC;

查表

存结果

END

data=查表指令和表始址间的指令字节数=03H

2.

子程序设计

子程序始址应以子程序任务定名

例如:

延时程序可用DELAY

参数传递

入口参数:

子程序所需的原始数据,如SIN(X)中的X

出口参数:

子程序执行后的结果数据,如SIN(0.5)的值

参数传递方法:

(1)R0-R7,A,B…等,放参数本身

(2)Rn,A,B…等,放参数地址

(3)堆栈传送参数

(4)位地址传送参数

主程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2