打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机开发基础知识

本段仅针对硬件设计人员和软件设计人员,为了便于对硬件的理解要有一定的汇编语言基础。

折叠总线

我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。

折叠数据地址指令

这三者的本质都是一样的——数字,或者说都是一串'0’和'1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:

1.地址(如MOV DPTR,1000H),即地址1000H送入DPTR。

2.方式字或控制字(如MOV TMOD,#3),3即是控制字。

3.常数(如MOV TH0,#10H)10H即定时常数。

4.实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。

理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。

折叠P0/P2/P3功能

初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上'不能作为通用I/O口使用’也并不是'不能’而是(使用者)'不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。

折叠程序执行过程

单片机在通电复位后8051内的程序计数器(PC)中的值为'0000’,所以程序总是从'0000’单元开始执行,也就是说:在系统的ROM中一定要存在'0000’这个单元,并且在'0000’单元中存放的一定是一条指令。

折叠堆栈

堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的'先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即'PUSH’和'POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动减2,每当执行一次POP指令,SP就(在原来值的基础上)自动加2。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。

折叠开发过程

这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明:

剧照ORG 0000H

LJMP START

ORG 040H

START:

MOV SP,#5FH ;设堆栈

LOOP:

NOP

LJMP LOOP ;循环

END ;结束

折叠单片机指令表

一、传送操作

助记符 代码 说明

MOV A,Rn E8~EF 寄存器A

MOV A,direct E5 direct 直接字节送A

MOV A,@Ri ER~E7 间接RAM送A

MOV A,#data 74 data 立即数送A

MOV Rn,A F8~FF A送寄存器

MOV Rn,direct A8~AF direct 直接字节送寄存器

MOV Rn,#data 78~7F data 立即数送寄存器

MOV direct,A F5 direct A送直接字节

MOV direct,Rn 88~8F direct 寄存器送直接字节

MOV direct1,direct2 85 direct1 direct2 直接字节送直接字节

MOV direct,@Ro 86~87 间接RAM送直接字节

MOV direct,#data 75 direct data 立即数送直接字节

MOV @Ri,A F6~F7 A送间接RAM

MOV @Ri,direct 76~77 direct 直接字节送间接RAM

MOV @Ri,#data 76~77 data 立即数送间接RAM

MOV DPTR,#data16 90 data 15~8 16位常数送数据指针

data7~0

MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮

器字节选A

MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A

MOVX A,@Ri E2~E3 送外部数据(8位地址)送A

MOVX A,@DPTR E0 送外部数据(16位地址)送A

MOVX @Ri,A F2~F3 A送外部数据(8位地址)

MOVX @DPTR,A F0 A送外部数据(16位地址)

PUSH direct C0 direct 直接字节进栈,SP加1

POP direct D0 direct 直接字节退栈,SP减1

XCH A,Rn C8~CF 交换A和寄存器

XCH A,direct C5 direct 交换A和直接字节

XCH A,@Ri C6~C7 交换A和间接RAM

XCH A,@Ri D6~D7 交换A和间接RAM的低位

SWAP A C4

二、算术操作

(A的二个半字节交换)

ADD A,Rn 28~2F 寄存器加到A

ADD A,direct 25 direct 直接字节加到A

ADD A,@Ri 26~27 间接RAM加到A

ADD A,#data 24data 立即数加到A

ADD A,Rn 38~3F 寄存器和进位位加到A

ADD A,direct 35direct 直接字节和进位位加到A

ADD A,@Ri 36~37 间接字节和进位位加到A

ADD A,data 34 data 立即数和进位位加到A

ADD A,Rn 98~9F A减去寄存器和进位位

ADD A,direct 95 direct A减去直接字节和进位位

ADD A,@Ri 36~37 间接RAM和进位位加到A

ADD A,data 34 data 立即数和进位位加到A

SUBB A,Rn 98~9F A减去寄存器和进位位

SUBB A,direct 95 direct A减去直接字节和进位位

SUBB A,@Ri 96~97 A减去间接RAM和进位位

SUBB A,#data 94 data A减去立即数和进位位

INC A 04 A加1

INC Rn 08~0F 寄存器加1

INC direct 05 direct 直接字节加1

INC @Ri 06~07 间接RAM加1

DEC A 14 A减1

DEC Rn 18~1F 寄存器减1

DEC direct 15 direct 直接字节减1

DEC @Ri 16~17 间接RAM减1

INC DPTR A3 数据指针加1

MUL AB A4 A乘以B

DIV AB 84 A除以B

DA A D4 A的十进制加法调整

三、逻辑操作

ANL A,Rn 58~5F 寄存器“与”到A

ANL A,direct 55 direct 直接字节“与”到A

ANL A,@Ri 56~57 间接RAm“与”到A

ANL A,#data 54 data 立即数“与”到A

ANL direct A 52 direct A“与”到直接字节

ANL direct,#data 53 direct data 立即数“与”到直接字节

ORL A,Rn 48~4F 寄存器“或”到A

ORL A,direct 45 direct 直接字节“或”到A

ORL A,@Ri 46~47 间接RAM“或”到A

ORL A,#data 44 data 立即数“或”到A

ORL direct,A 42 direct A“或”到直接字节

ORL direct,#data 43 direct data 立即数“或”到直接字节

XRL A,Rn 68~6F 寄存器“异或”到A

XRL A,direct 65 direct 直接字节“异或”到A

XRL A,@Ri 66~67 间接RAM“异或”到A

XRL A,#data 64 data 立即数“异或”到A

XRL direct A 62 direct A“异或”到直接字节

XRL direct,#data 63 direct data 立即数“异或”到直接字节

CLR A E4 清零

CPL A F4 A取反

RL A 23 A左环移

RLC A 33 A通过进位左环移

RR A 03 A右环移

RRC A 13 A通过进位右环移

四、控制程序转移

ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用

LCALL addr 16 12 addr(15~8) 长子程序调用

addr(7~0)

RET 22 子程序调用返回

RETI addr 11 32 中断调用返回

AJMP addr 11 △1 addr(a7~a6) 绝对转移

LJMP addr 16 02addr(15~8) 长转移

addr(7~0)

SJMP rel 80 rel 短转移,相对转移

JMP @A+DPTR 73 相对于DPTR间接转移

JZ rel 60 rel A为零转移

JNZ rel 70 rel A为零转移

CJNE A,direct,rel B5 direct rel 直接字节与A比较,不等则转移

CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移

CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移

CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移

DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移

DJNZ direct,rel B5 direct rel 直接字节减1,不为零则转移

NOP 00 空操作

五、布尔变量操作

CLR C C3 清零进位

CLR bit C2 清零直接位

SETB C D3 置位进位

SETB bit D2 置位直接位

CPL C B3 进位取反

CPL bit B2 直接位取反

ANL C,bit 82 dit 直接数“与”到进位

ANL C,/bit B0 直接位的反“与”到进位

ORL C,bit 72 bit 直接位“或”到进位

ORL C,/bit A0 bit 直接位的反“或”到进位

MOV C,bit A2 bit 直接位送进位

MOV bit,C 92 bit 进位送直接位

JC rel 40 rel 进位位为1转移

JNC rel 50 rel 进位位为0转移

JB bit,rel 20 bit rel 直接位为1相对转移

JNB bit,rel 30 bit rel 直接位为0相对转移

JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
51单片机指令汇集
51汇编指令
MCS-51系列单片机指令表
单片机指令功能(转)
51单片机指令表
控制转移指令
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服