单片机 一纸开材料.docx

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

单片机 一纸开材料.docx

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

单片机 一纸开材料.docx

单片机一纸开材料

Chap1

8051/8031系列CPU管脚:

P0(39~32),8位双向三态I/O口,有较大的负载能力。

①8051不带片外存储器时,为通用I/O口,传送输入/输出数据。

②带片外存储器并访问时,先传送低8位地址后传送数据。

P1(1~8),8位准双向I/O口,用于传送输入/输出数据。

8位准双向I/O口。

P2(21~28),①8051不带片外存储器时,为通用I/O口,传送输入/输出数据。

②带片外存储器并访问时,传送高8位地址。

P3(10~17),8位准双向I/O口。

可作普通I/O口和专用口。

P3.0——RXD(串行输入口)

P3.1——TXD(串行输出口)

P3.2——INT0(外部中断0)

P3.3——INT1(外部中断1)

P3.4——T0(定时器0外部输入)

P3.5——T1(定时器1外部输入)

(两个16位可编程定时/计数器,分别由两个8位寄

存器拼装而成。

最大计数值为216-1,即65535。

P3.6——WR(外部数据存储器写控制)

P3.7——RD(外部数据存储器读控制)

XTAL1(19):

振荡器输入端(单片机内部反向放大器的输入端)

XTAL2(18):

振荡器输出端(单片机内部反向放大器的输出端)

ALE/PROG(30):

外部存储器地址锁存允许/编程线访问外部存储器,CPU在P0口输出片外存储器低8位地址的同时,在该线上输出一个高电平脉冲,其下降沿用于控制地址锁存;不访问片外存储器时,CPU自动在该线上输出可用作外部时钟源的脉冲序列,频率为振荡器频率的1/6。

EA/VPP(31):

允许访问片外程序存储器/编程电源线

EA接高电位,访问内部程序存储器

EA接低电位,访问外部程序存储器

PSEN(29):

片外ROM选通线。

RST/VPD(9):

复位/备用电源线。

复位时高电位有效。

程序状态寄存器(ProgramStatusWord):

PSW是一个8位标志寄存器,用来存放指令执行后的有关状态。

PSW的格式:

P——奇偶标志位(1为双P=0)AC——半进位位

OV——溢出标志位Cy——进位位F0——用户标志位(用户根据程序执行的需要通过传送指令确定)RS1,RS0——寄存器选择位(用于决定8051的8个8位工作寄存器R0~R7在RAM中的实际物理地址)

RS1,RS0对工作寄存器的选择

IP——中断优先级寄存器

IE——中断允许寄存器

TMOD——计数器方式寄存器

TCON——计数器控制寄存器

SCON——串行口控制寄存器

SBUF——串行口数据缓冲器

PCON——电源控制寄存器

存储器分类

/EA=1/EA=0

程序存储器:

内部(/EA=1,),4K;外部(/EA=0),/PSEN=0,60K;

地址:

0000H—FFFFH,64K单元;使用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;(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

·对PSW标志位均有影响;

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

·两个带符号数相减,运算结果是否溢出应判断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;A×B=BA,形成标志

对标志位的影响:

Cy=0;

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

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

DIVAB;A÷B=A…B,形成标志

对标志位的影响:

Cy=0;

执行过程中,若发现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;PC15~PC8←(SP),SP←SP-1,

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

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

(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项或项表

DB:

定义存储空间

[标号:

]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

MOVA,R0;A←项数

ANLA,#0FH;屏蔽高4位

ADDA,#data;A←A+data

MOVCA,@A+PC;查表

MOVR0,A;存结果

SJMP$

ASCTAB:

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

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

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