交通电子控制技术讲 解 高华 联系电话_第1页
交通电子控制技术讲 解 高华 联系电话_第2页
交通电子控制技术讲 解 高华 联系电话_第3页
交通电子控制技术讲 解 高华 联系电话_第4页
交通电子控制技术讲 解 高华 联系电话_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

交通电子控制技术讲解:高华联系电话-mail:hy_gh@126.com第四讲单片机编程基础单片机控制程序概述单片机应用系统是软件、硬件相结合的应用系统硬件电路板控制程序单片机控制程序:是符合一定语法规范要求的、对单片机内部及外部资源进行操作的命令的集合。程序中用到的命令和语法合称为编程语言

单片机控制程序概述计算机(单片机)程序就是用编程语言书写的“文章”单片机程序基本要求:

1.

单片机能够理解和执行

2.编程人员易于看懂和理解

单片机能够理解的语言:单片机控制程序概述二进制代码:01011101B编程人员能够理解的语言:汇编语言:低级语言高级语言:C语言.......人类容易理解计算机理解不了MOVR0,#03HR0=3if(r3=1)r0=3elser0=4

单片机常用的编程语言汇编语言:执行效率高,能够清楚描述单片机内部的每一个动作,便于查找程序存在的功能性和逻辑错误。但编程人员记忆和理解相对困难C语言:编程人员记忆和理解相对容易。但不能清晰描述单片机内部的动作,不便于分析和查找程序中的功能性错误汇编程序示例

单片机编程语言程序设计

ORG0000HAJMPMAIN

ORG0200HMAIN:MOVP1,#08H;P1.3输出高电平

NOPNOPMOVP1,#00H;P1.3输出低电平

END

MCS—51单片机汇编语言指令的标准格式如下:[标号:

]操作码[目的操作数],[源操作数][;注释]例如:LOOP:ADDA,#10H;(A)←(A)+10H

(1)方括号[]表示该项是可选项,可有可无。

(2)标号是用户设定的符号,它实际代表该指令所在的地址。标号必须以字母开头,其后跟1~8个字母或数字,并以“:”结尾。

编程语言程序语句格式

(3)操作码是用英文缩写的指令功能助记符。它确定了本条指令完成什么样的操作功能。如:ADD表示加法操作。任何一条指令都必须有该助记符项,不得省略。

(4)目的操作数提供操作的对象,并指出一个目标地址,表示操作结果存放单元的地址,它与操作码之间必须以一个或几个空格分隔。如上例中A表示操作对象是累加器A的内容,并指出操作结果又回送A存放。

(5)源操作数指出的是一个源地址(或立即数),表示操作的对象或操作数来自何处。它与目的操作数之间要用“,”号隔开。(6)注释部分是在编写程序时,为了增加程序的可读性,由用户拟写对该条指令或该段程序功能的说明。它以分号“;”开头,可以用中文、英文或某些符号来表示,显然它不存入计算机,只出现在源程序中。

(1)Ri和Rn:R表示当前工作寄存器区中的工作寄存器,i表示0或1,即R0和R1。n表示0~7,即R0~R7,当前工作寄存器的选定是由PSW的RS1和RS0位决定的。

指令中常用符号

(2)#data:#表示立即数,data为8位常数。#data是指包含在指令中的8位立即数。

(3)#data16:包含在指令中的16位立即数。

(4)rel:相对地址,以补码形式表示的地址偏移量,范围为-128~+127,主要用于无条件相对短转移指令SJMP和所有的条件转移指令中。

(5)addr16:16位目的地址。目的地址可在全部程序存储器的64KB空间范围内,主要用于无条件长转移指令LJMP和子程序长调用指令LCALL中。

(6)addr11:11位目的地址。目的地址应与下条指令处于相同的2KB程序存储器地址空间范围内,主要用于绝对转移指令AJMP和子程序绝对调用指令ACALL指令中。

(7)direct:表示直接寻址的地址,即8位内部数据存储器RAM的单元地址(0~127/255),或特殊功能寄存器SFR的地址。对于SFR可直接用其名称来代替其直接地址。

(8)bit:内部数据存储器RAM和特殊功能寄存器SFR中的可直接寻址位地址。

(9)@:间接寻址寄存器或基地址寄存器的前缀,如@Ri,@DPTR,表示寄存器间接寻址。

(10)(X):表示X中的内容。

(11)((X)):表示由X寻址的单元中的内容,即(X)作地址,该地址的内容用((X))表示。

(12)/和→符号:/表示对该位操作数取反,但不影响该位的原值。→表示指令操作流程,将箭头一方的内容,送入箭头另一方的单元中去。

MCS-51单片机常用指令

MCS—51单片机汇编语言语句的标准格式如下:[标号:

]操作码[目的操作数][,源操作数][;注释]单片机的指令

指令:计算机(单片机)能够理解和执行的命令例如:MOVR0,#02H指令:计算机能够直接理解并执行的操作命令;汇编语言程序相关的几个概念:MCS-51单片机常用指令语句:按照规定格式书写的指令称为语句程序:能够实现一定功能的、符合相应规范的语句的集合(罗列)。编程语言:能够实现一定功能的、符合相应规范的语句的集合(罗列)。指令:计算机能够直接理解并执行的操作命令;汇编语言程序相关的几个概念:MCS-51单片机常用指令语句:按照规定格式书写的指令称为语句程序:能够实现一定功能的、符合相应规范的语句的集合(罗列)。编程语言:基本语句和书写规则合起来称为编程语言。MOVR1,#05HMCS-51单片机常用指令目的操作数助记符:帮助我们记忆命令的符号

比如:MOV,ADD,DEC......

操作数:命令操作所需要的数据

源操作数

助记符MCS-51单片机常用指令MCS—51单片机指令系统分为数据传送类指令算术运算类指令逻辑运算及移位类指令控制转移类指令和位操作指令

5大类,共计111条指令。表3―2数据传送类指令助记符与操作思考题(1)单片机控制系统主要由哪两部分组成?(2)MCS-51单片机常用的编程语言有哪些?(3)MCS-51单片机汇编语言语句由哪几部分组成?(4)MCS-51单片机汇编语言指令由哪几部分组成?汇编语言指令的寻址方式单片机的操作指令是对相关数据(操作数)进行传送、运算等操作指令如何找到需要操作的数据?(指令到哪儿能找到需要操作的数据?)MCS-51单片机可以有多种寻找操作数的方式

指令寻找操作数的方式称为寻址方式汇编语言指令的寻址方式序号寻址方式指令举例使用的存储器空间1立即寻址MOVR0,#30H程序存储器2直接寻址MOVR0,30H内部RAM(00H~FFH)、SFR、程序存储器3寄存器寻址MOVA,R0R0~R7,SFR4寄存器间接寻址MOVA,@R0内部RAM(00H~FFH)外部RAM5相对寻址JZ06H程序存储器6变址寻址MOVCA,@A+DPTR程序存储器7位寻址SETBCY内部RAM的位寻址区外部RAMMCS-51单片机部分常用指令介绍一、数据传送指令

把数据从一个存贮地址(源地址)传送到另一个存储地址(目的地址)MOVA,#30H;A=30HMOVA,30H;A=?MOV30H,#20H

20HMOVR0,#30HMOV@R0,#20HMOVA,30H;A=?

20HMCS-51单片机部分常用指令介绍一、数据传送指令

外部数据传送指令MOVXA,@DPTR;(A)←((DPTR))

MOVXA,@Ri;(A)←((Ri))

MOVX@DPTR,A;((DPTR))←(A)

MOVX@Ri,A;((Ri))←(A)

寻址方式?

例如:设外部RAM(0203H)=FFH,分析以下指令执行后的结果。MOVDPTR,#0203H;(DPTR)←0203HMOVXA,@DPTR;(A)←((DPTR))MOV30H,A;(30H)←(A)MOVA,#0FH;(A)←0FHMOVX@DPTR,A;((DPTR))←(A)执行结果为:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。

程序存储器数据传送指令(主要用于程序存储器中的数据查表操作)MOVCA,@A+DPTR;(A)←((A)+(DPTR))MOVCA,@A+PC;(PC)←(PC)+1,(A)←((A)+(PC))寻址方式?MCS-51单片机部分常用指令介绍例1:在外部ROM/EPROM中,从2000H单元开始依次存放0~9的平方值:0、1、4、9、…、81,要求依据累加器A中的值(0~9)来查找所对应的平方值

MOVDPTR,#2000H;(DPTR)←2000HMOVA,#09H;(A)←09HMOVCA,@A+DPTR;(A)←((A)+(DPTR))执行结果:(DPTR)=2000(A)=51H(81的十六进制数)。

算术运算指令加法指令:ADD,ADDC减法指令:SUBB乘法指令:MUL除法指令:DIVMCS-51单片机部分常用指令介绍ADDA,#dataSUBBA,#dataMULABDIVAB

两条比较有用的算术运算指令加1指令:INC减1指令:DEC

MCS-51单片机部分常用指令介绍

这两条指令常被用来控制循环的次数

转移指令无条件转移指令:LJMPaddr16

AJMPaddr11SJMPrelJMP@A+DPTR累加器判零转移指令:JZrelJNZrelJCrelJNCrel

MCS-51单片机部分常用指令介绍转移指令实现程序中向前、向后的跳转是构成分支程序和循环程序的基础

转移指令比较转移转移指令:CJNEA,#data,relCJNEA,direct,relCJNE@Ri,#data,relCJNERn,#data,rel减1条件转移指令:DJNZdirect,relDJNZRn,relMCS-51单片机部分常用指令介绍转移指令实现程序中向前、向后的跳转是构成分支程序和循环程序的基础

位操作指令置位指令:SETBbitSETBC清位指令:CLRbitCLRCMCS-51单片机部分常用指令介绍直接对某一位进行操作的指令称为位操作指令位操作指令常用于直接操作某个单片机的管脚输出高电平或低电平,或者设置和清除某个标志位。

子程序调用和返回指令在单片机汇编程序中,常将需要多次反复

使用的代码段定义为子程序,以减少程序代码的长度和程序执行的效率。定义好的子程序可在其他程序段中需要使用的地方通过子程序调用指令进行调用。

MCS-51单片机部分常用指令介绍子程序返回指令:RETRETI

长调用指令:LCALLaddr16;

绝对调用指令:ACALLaddr11;

伪指令(1)设置目标程序起始地址伪指令ORG。格式:[标号:]ORG16位地址MCS-51单片机部分常用指令介绍在汇编源程序的过程中,还有一些指令不要求计算机进行任何操作,也没有对应的机器码,不产生目标程序,不影响程序的执行,仅仅是能够帮助汇编进行的一些指令,称之为伪指令。(2)结束汇编伪指令END。格式:[标号:]END(3)定义字节伪指令DB。格式:[标号:]DB项或项表顺序结构程序

顺序结构程序是指程序的执行按照代码出现的先后顺序依次执行的一种程序结构。

MCS-51单片机典型程序编制方法

顺序结构顺序结构程序

例1:试编制一段程序,在P1.0~P1.7管脚依次输出高电平MCS-51单片机典型程序编制方法

ORG0000H

LJMPSTARTORG0100HSTART:MOVP1,#00000000BMOVP1,#00000001BMOVP1,#00000010B.........MOVP1,#10000000BEND指令执行顺序分支结构程序

分支结构程序是指程序执行过程中会根据某项条件的不同执行不同代码段一种程序结构。

MCS-51单片机典型程序编制方法

分支程序结构分支结构程序

试编制一段程序,如果P1.0管脚输入的是低电平,在P1.1~P1.7管脚依次输出高电平,如果P1.0管脚输入的是高电平,在P1.7~P1.1管脚依次输出高电平。MCS-51单片机典型程序编制方法

分析:该程序要求根据P1.0管脚输入的信号电平状态,控制P1口其他管脚输出高电平的顺序。

由于P1.0管脚存在高电平和低电平两种可能的状态,因此程序中就会有两个不同的分支。MCS-51单片机典型程序编制方法

ORG0000H

LJMPSTARTORG0100HSTART:MOVP1,#00000000BSETBP1.0MOVC,P1.0

JNCLOW_FIRSTSETBP1.7SETBP1.6SETBP1.5SETBP1.4SETBP1.3

SETBP1.2SETBP1.1

SJMPQUITLOW_FIRST:SETBP1.1SETBP1.2SETBP1.3SETBP1.4SETBP1.5SETBP1.6SETBP1.7

QUIT:

END

循环结构程序

在实际的控制程序中,可能存在某段代码需要反复执行多遍,此时就可以采用循环程序结构MCS-51单片机典型程序编制方法

循环结构(a)当型循

温馨提示

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

评论

0/150

提交评论