单片机汇编语言程序设计课件_第1页
单片机汇编语言程序设计课件_第2页
单片机汇编语言程序设计课件_第3页
单片机汇编语言程序设计课件_第4页
单片机汇编语言程序设计课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

单片机汇编语言程序设计汇编语言机器语言(面向机器二进制表示)汇编语言(面向机器助记符表示)高级语言(面向用户类人语言)单片机汇编语言程序设计汇编语言单片机汇编语言程序设计汇编语言的格式标号段操作码段操作数段注释段指令语句伪指令ORG(起始汇编)END(起始汇编)EQU(赋值)DATA(数据地址赋值)DB(定义字节)DWDSBIT单片机汇编语言程序设计汇编语言的格式单片机汇编语言程序设计

[例]

设在内部RAM的BLOCK单元内有一无符号数据块的长度,无符号数据块起始地址是BLOCK+1。试编程求无符号数据块中数据的累加和(不考虑进位的加法之和),并把它存入SUM单元。

单片机汇编语言程序设计[例]设在内部RAM的BLOCK单单片机汇编语言程序设计

解:程序应能对数据块长度作出判断:若它不为零,则求和;若它为零,则不必进行加法。相应程序为:

单片机汇编语言程序设计解:单片机汇编语言程序设计ORG1000HSUMDATA1FHBLOCKDATA20HSTART:MOVR0,#BLOCK;数据块长度地址送R0MOVA,@R0;数据块长度送ACJNEA,#00H,LOOP;若数据块长≠0,则LOOPHERE:SJMP$;若数据块长=0,则结束

LOOP:CLRANEXT:INCR0;修改数据指针

ADDA,@R0;加一个数

DJNZBLOCK,NEXT;若(BLOCK)-1≠0,则NEXTMOVSUM,A;存累加和

SJMPHEREEND单片机汇编语言程序设计ORG1000H程序设计方法1.作程序流程图

根据题意,找出最合理、简便的解决方法并作程序流程图。流程图分粗略和详细两种,粗略流程图给出大致步骤,而详细流程图则给出每一步骤细节。对一些大问题,先给出粗略流程图以得出总体概念,再作详细流程图对每一步骤作具体描述;程序设计方法1.作程序流程图程序设计方法2.存贮单元分配

根据题意合理地分配程序和数据在存贮器中地址。存贮单元分配合理,可使编程简单和避免程序出错。应避免程序区与数据区相互混合、交叉。程序设计方法2.存贮单元分配内部数据存储器结构内部数据存储器00-7FH的结构内部数据存储器结构内部数据存储器00-7FH的结构MCS-51单片机外部存储器使用外部数据存储器寻址范围为64K,包括外部数据存储器和I/O通过数据指针指定外部数据存储器的地址

MOVXA,@DPTRMOVX@DPTR,A采用间接地址指定外部数据存储器的地址

MOVXA,@R0/R1MOVX@R0/R1,AMCS-51单片机外部存储器使用外部数据存储器寻址范围为64程序设计方法3.源程序编制

将流程图中每步所规定的操作用程序语言实现,可选用不同指令,各人所编程序可能不同。程序质量衡量标准为:程序短,占用存贮单元少,运行时间短,而且程序结构合理。程序设计方法3.源程序编制

源程序 标号

操作码

操作数

ORG 4000H MOV A,#00H MOV 30H,A INC A MOV DPTR,#4100H MOVX @DPTR,A INC A INC DPTR MOV A,R2

MOVX @DPTR,A HE: SJMP HE把直接数00H送到内部RAM30H单元中,把直接数01H及02H分别送到外部RAM4000H、4001H单元中。MCS-51单片机程序设计

简单程序设计MCS-51程序时,需注意内部存储器访问和外部存储器访问 源程序把直接数00H送到内部RAM30H单元中,把直接数MCS-51单片机程序设计分支程序常用的指令MCS-51单片机程序设计分支程序常用的指令MCS-51单片机程序设计分支程序在寄存器R2中存有数码0~F,要求将其转换为ASCII码,并存于外部存贮器

4100H单元中

MCS-51单片机程序设计分支程序在寄存器R2中存有数码0~MCS-51单片机程序设计利用散转指令实现多分支程序的方法

将直接转移指令如AJMP、LJMP构成转移表,将此表的首地址装入数据指针DPTR,把标志单元的内容乘以转移指令表所采用的直接转移指令的长度(AJMP为2、LJMP为3),并传送到累加器A中,然后调用JMP@A+DPTR指令实现散转。MCS-51单片机程序设计利用散转指令实现多分支程序的方法MCS-51单片机程序设计

利用地址偏移量表实现多分支程序

适用于各个处理程序的目的地址均在同一页的情形

先将处理程序的目时地址减去表的首地址(应在同一页内,不大于256字节)构成一偏移量表,将表的首地址装入数据指针DPTR,利用查表指令MOVCA,@A+DPTR求出偏移量,然后利用JMP@A+DPTR实现散转。

MCS-51单片机程序设计利用地址偏移量表实现多分支程序MCS-51单片机程序设计利用目的地址表实现多分支程序

将目的地址直接转成目的地址表,然后利用查表的方法根据标志单元的内容求出目的地址,将此地址装入数据指针DPTR,将累加器A清零,再利用JMP@A+DPTR实现散转利用地址偏移量表实现多分支程序,适用于各个处理程序的目的地址均在同一页的情形.MCS-51单片机程序设计利用目的地址表实现多分支程序循环程序将内部RAM的40H~4FH单元置为00H~0FH,

以R2作为循环计数器

MCS-51单片机程序设计

循环程序MCS-51单片机程序设计循环程序把内部RAM40H~4FH的内容传送到外部数据存储器的4100H~410FH单元内。以R2作为循环计数器

MCS-51单片机程序设计

循环程序MCS-51单片机程序设计循环程序将外部数据存储器中4100H~410FH单元置为00H~0FH以内部RAM32H作为循环计数器MCS-51单片机程序设计

循环程序MCS-51单片机程序设计循环程序将4100H~410FH单元的内容传送到4200H开始的单元中。以内部RAM32H作为循环计数器,用30H、31H作为4200H的地址计数器

MCS-51单片机程序设计

循环程序MCS-51单片机程序设计MCS-51单片机程序设计

查表程序在R2寄存器存有数0~9的BCD码,利用查表程序求其平方值,并存于4100H单元中。先将0~9平方值的BCD码存于程序存贮器中,标号为TABLE。MCS-51单片机程序设计查表程序在R2寄存器存有数0~专用系统的程序构成

一个完整的系统程序的结构

专用系统的系统程序必须具备一个完整的结构,保证在系统上电时能自动启动,并根据系统硬件的要求执行一定功能

专用系统的程序构成一个完整的系统程序的结构

专用系统程序设计应注意的问题寻址范围:MCS-51单片机具有64K程序存储器和64K数据存储器的寻址能力。数据存储器和I/O设备统一编址均在64K的范围内。专用系统程序设计应注意的问题寻址范围:

专用系统程序设计应注意的问题复位复位后的程序指针为0000H,系统硬件必须将程序存储器的地址安排在0000H开始的存储器,使其与系统复位后的程序指针保持一致。同时在设计系统程序时,也必须将程序的起始地址安排在0000H开始的单元中。专用系统程序设计应注意的问题复位

专用系统程序设计应注意的问题堆栈的设置堆栈理论上可安排在内部RAM的00H~7FH单元。由于00H~1FH为寄存器组,20H~2FH为位操作单元,此外还需在30H以后的地址安排部分工作单元,因此堆栈通常只能安排在大于30H的内部RAM中。专用系统程序设计应注意的问题

专用系统程序设计应注意的问题堆栈操作采用了在数据压入堆栈时,堆栈指针加大,而数据弹出堆栈时,堆栈指针减小的方法,因此可将堆栈指针设置为在内部RAM中堆栈的最小地址减1。堆栈大小应估计子程序和中断程序使用的数量和数据压入弹出堆栈的数量,以确定堆栈大小。如堆栈估计不足将导致程序无法执行,形成死机。专用系统程序设计应注意的问题

专用系统程序设计应注意的问题中断功能的使用MCS-51单片机采用5个中断:外部中断0、定时器T0中断、外部中断1、定时器T1中断和串行口中断,中断服务程序入口地址分别为

0003H、000BH、

0013H、

温馨提示

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

评论

0/150

提交评论