第五章 MCS-51系列单片机汇编语言程序设计

合集下载

MCS-51单片机程序设计

MCS-51单片机程序设计

+1
,当X>0
Y= 0
,当X=0
开始
-1
,当X<0
X=0
N
程序流程框图如图4.1所示。 Y
Y←0
X>0 Y
Y←1
N Y←-1
结束
程序如下: ORG
MOV CJNE MOV AJMP MP1: JB MOV LJMP MP2: MOV HERE: SJMP
1000H A,R0 A,#00H,MP1 R1,#00H HERE ACC.7 MP2 R1,#01H HERE R1,#0FFH HERE
1000H DPTR,#2000H DPL DPH DPTR,#3000H R2,DPL R3,DPH
;源数据区首地址 ;源首址暂存堆栈
;目的数据区首地址 ;目的首址暂存寄存器
LOOP:
POP POP MOVX INC PUSH PUSH MOV MOV MOVX MOV MOV DJNZ SJMP
;源数据区首地址 ;目的数据区首地址 ;循环次数 ;取数据 ;数据传送 ;源地址加1 ;目的地址加1 ;循环控制 ;结束
例4.8 外部RAM之间的数据传送程序。
把外部RAM 2000H开始单元中的数据传送到外部RAM 3000H开始的单 元中,数据个数在内部RAM的35H单元中。
START:
ORG MOV PUSH PUSH MOV MOV MOV
K=?
K=0
K=1
转向 0 分支 转向 1 分支
K= n-1
K=n
转向 n-1 分支 转向 n 分支
例4.5 设内部RAM的30H单元有一个数,根据该数值的不同 转移到不同的程序段进行处理,设数值的范围为0~10的 无符号数。

单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统

单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统

5.2.5 中断允许控制
例5-1 假设允许INT0、INT1、T0、T1中断,试 设置IE的值。 (2)汇编语言程序 按字节操作: MOV IE,#8FH 按位操作: SETB EX0 ;允许外部中断0中断 SETB ET0 ;允许定时器/计数器0中断 SETB EX1 ;允许外部中断1中断 SETB ET1 ;开定时器/计数器1中断 SETB EA ;开总中断控制位
IP (B8H)
D7 —
D6 D5 D4 D3 D2 D1 D0 — PT2 PS PT1 PX1 PT0 PX0
PT2:定时器/计数器T2的中断优先级控制位 PT2设置1则T2为高优先级,PT2设置0则T2为 低优先级。 后面各位均是如此,设置1为高优先级,设置0 为低优先级,不再一一赘述。 PS:串行口的中断优先级控制位。 PT1:定时器/计数器1的中断优先级控制位。 PX1:外部中断1的中断优先级控制位。 PT0:定时器/计数器0的中断优先级控制位。 PX0:外部中断0的中断优先级控制位。
5.2.4 中断请求标志
4.定时器/计数器T2中断请求标志
T2CON D7 D6 D5 (C8H) TF2 EXF2 D4 D3 D2 D1 D0
EXF2:定时器/计数器2的外部触发中断请求标志 位。T2以自动重装或外部捕获方式定时、计数,当 T2EX(P1.1)引脚出现负跳变时,TF2由硬件置1, 向CPU请求中断,CPU响应中断后,EXF2不会被硬 件清0,需要在程序中以软件方式清0。
5.2.3 外中断触发方式
TCON格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0=1,外中断0为下降沿触发 CPU在每一个机器周期的S5P2期间对P3.2引 脚采样,若上一个机器周期检测为高电平,紧挨着 的下一个机器周期为低电平,则使IE0置1。 IT1:外中断1触发方式控制位。功能同IT0

51单片机汇编语言程序设计

51单片机汇编语言程序设计

51单片机汇编语言程序设计1.题目:数码管显示1~72.题目分析本实验将要求51单片机采用汇编程序来实现以上程序,我们首先要对51单片机进行硬件电路设计,然后编写相应的汇编程序3.硬件电路4.程序设计;-------------------------------------------------------------------------------;选择P1口作为数码管位选;-------------------------------------------------------------------------------org 0hmov p1,h ;启动P1作为数码管位选again: m ov p2,Fh ;0000 0011 1111 显示数字1sjmp againmov p2,h ;0000 0110 显示数字2sjmp againmov p2,Bh ;0101 1011 显示数字3sjmp againmov p2,Fh ;0100 1111 显示数字4sjmp againmov p2,h ;0110 0110 显示数字5sjmp againmov p2,Dh ;0110 1101 显示数字6sjmp againmov p2,dh ;0111 1101 显示数字7sjmp againend5.程序流程本汇编程序的程序流程如下:1)将P1口设置为数码管的位选;2)通过P2口设置相应的数字,P2口的值将会根据数字的不同而不同,以便实现将不同的数字显示到数码管上;3)循环2步骤,不断刷新P2口的值,从而实现数字的不断变化,从而实现将1-7数字在数码管上循环显示。

第5章-MCS-51单片机中断系统-PPT

第5章-MCS-51单片机中断系统-PPT
CPU在每一个机器周期得S5P2期间对P3、 3引脚采样,若P3、3为低电平,则使IE1置1,否 则IE1清0。
5、2、2 MCS-51单片机得中断源
IT1=1,外中断1为下降沿触发 采样:CPU在每一个机器周期得S5P2期间 对P3、3引脚采样,若上一个机器周期检测为 高电平,紧挨着得下一个机器周期为低电平,则 使IE1置1。 IT0:外中断0触发方式控制位。
CPU主要就是通过标志寄存器、控制 寄存器、优先级寄存器对中断源进行管
5、2、2 MCS-51单片机得中断源
(1)与中断标志相关得SFR
主要有:定时器/计数器T0、T1控制寄 存器TCON
串行口控制寄存器SCON 定时器/计数器2控制寄存器T2CON(第 6章介绍) (2)中断控制寄存器:TCON、IE (3)中断优先级寄存器:IP
DMA释放总线:当一批数据传送后, DMA控制器再向CPU发出“结束总线请 求”,CPU响应请求,收回总线使用权。
DMA方式速度高、效率高,可以与CPU 并行工作。
5、1、2 中断得相关概念
1、中断得概念
CPU在正常运行得时候, 外部或者内部发生了请求 CPU迅速去处理得事件,CPU 暂时中断当前得程序,去处理 所发生得事件,处理完事件后, 再返回到原来被中断得程序 继续运行。此过程称为中断。
图5-3 定时器得控制寄存器
TCON可位寻址。复位后TCON=00H。 TF1(TCON、7):T1溢出标志位
当T1计满溢出时,由内部硬件置位; 中断响应后自动清 0。
5、2、2 MCS-51单片机得中断源
TF0:T0溢出标志位 功能同TF1。
IT1:外中断1触发方式设置位 IT1=0,外中断1为低电平触发
5、1、1 微机得输入/输出方式

MCS-51 汇编语言程序设计

MCS-51 汇编语言程序设计

1. 分支程序设计
结构特点:不一定按指令的先后顺序依次运
行程序,程序的流向有两个或两个以上分支, 根据指定条件选择程序的流向。
P3.4=0? N
点亮所有二极管
Y
二极管交叉点亮
2. 分支程序的典型实例

实例:已知30H单元中有一变量X,要求编写 一程序按下述要求给Y赋值,结果存入31H单 元。
3. 8051汇编指令格式中,地址和数据的区别符号为( )。 A. 冒号 B. 分号 C. 逗号 D. 井号
4. 散转指令是单片机指令系统中专为散转操作提供的无条件 转移指令,指令格式如下: A. JMP @A+DPTR B. LJMP 标号 C. AJMP 标号 D. SJMP 标号
5. MCS-51系列单片机存储器结构的特点之一是存在着四种 物理存储空间,即片内RAM、片外RAM、片内ROM和片外ROM, 不同的物理存储空间之间的数据传送一般以( )作为数据传 输的中心。 A. 累加器A B. PSW C. PC D. RAM 6.分析下面程序段,累加器 A 中的内容为() 。 ORG 0000H MOV 30H,#45H MOV R0,#30H MOV A,#30H XCHD A,@R0 SJMP $ END A. 45H B. 35H C. 30H D. 34H
例4.6:编程实现P1口连接的8个LED显示方式如 下:从P1.0到P1.7的顺序,依次点亮其连接 的LED。


16位地址数 DPTR
+
ቤተ መጻሕፍቲ ባይዱ
A
PC
例: 根据R7的内容,转向各自对应的操作程
序 (R7= 0,转入OPR0;R7= 1,转入OPR1…R7= n,转入OPRn)

《单片机原理及应用》课后习题答案

《单片机原理及应用》课后习题答案
2.12 ALE信号有何功用?一般情况下它与机器周期的关系如何?在什么条件下ALE信号可用作外部设备的定时信号。
答案:ALE是地址锁存使能信号,是机器周期的二倍。当不使用单字节双周期的指令,如MOVX类指令时,可以作为外部设备的定时信号。
2.13 有那几种方法能使单片机复位?复位后各寄存器的状态如何?复位对内部RAM有何影响?
2.6 8051如何确定和改变当前工作寄存器组?
2.7 MCS-51单片机的程序存储器中0000H、0003H、000BH、0013H、001BH和0023H这几个地址具有什么特殊的功能?
2.8 8051单片机有哪几个特殊功能寄存器?可位寻址的SFR有几个?
2.9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?
TH1、TL1、TH0、TL0的内容为00H,定时器/计数器的初值为0。
(TMOD)=00H,复位后定时器/计数器T0、T1为定时器方式0,非门控方式。
(TCON)=00H,复位后定时器/计数器T0、T1停止工作,外部中断0、1为电平触发方式。
(T2CON)=00H,复位后定时器/计数器T2停止工作。
可位寻址的SFR有11个。
2.9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?
答案:PSW—程序状态字。主要起着标志寄存器的作用。常用标志位及其作用如下:
Cy——进(借)位标志,其主要作用是保存算术运算的进或借位并在进行位操作时做累加器。
在执行某些算术和逻辑指令时,可以被硬件或软件置位或清零。在算术运算中它可作为进位标志,在位运算中,它作累加器使用,在位传送、位与和位或等位操作中,都要使用进位标志位。
2.14 MCS-51的时钟振荡周期、机器周期和指令周期之间有何关系?

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言单片机C51汇编语言单片机(C51)是指一种集成电路上只包含一个集中式控制器的微处理器,具有完整的CPU指令集、RAM、ROM、I/O接口等功能。

汇编语言是一种低级语言,是用于编写单片机指令的一种语言。

汇编语言能够直接操作单片机的寄存器和输入/输出端口,因此在嵌入式系统的开发中非常重要。

本文将介绍单片机C51的汇编语言编程。

一、了解单片机C51单片机C51是目前应用最广泛的一种单片机系列,广泛用于各种电子设备和嵌入式系统的开发。

C51指的是Intel公司推出的一种基于MCS-51架构的单片机。

该系列单片机具有较高的性能和低功耗的特点,可用于各种控制和通信应用。

二、汇编语言的基本概念汇编语言是一种低级语言,与机器语言紧密相关。

它使用助记符来代替机器指令的二进制表示,使程序的编写更加易读。

在单片机C51汇编语言中,每一条汇编指令都对应着特定的机器指令,可以直接在单片机上执行。

三、汇编语言的基本指令在单片机C51汇编语言中,有一些基本的指令用于控制程序的执行和操作寄存器。

以下是一些常用的指令:1. MOV指令:用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。

2. ADD指令:用于将两个操作数相加,并将结果存储到目的寄存器中。

3. SUB指令:用于将第一个操作数减去第二个操作数,并将结果存储到目的寄存器中。

4. JMP指令:用于无条件跳转到指定的地址。

5. JZ指令:用于在条件为零时跳转到指定的地址。

6. DJNZ指令:用于将指定寄存器的值减一,并根据结果进行跳转。

四、编写单片机C51汇编程序的步骤编写单片机C51汇编程序需要按照以下步骤进行:1. 确定程序的功能和目标。

2. 分析程序的控制流程和数据流程。

3. 设计算法和数据结构。

4. 编写汇编指令,实现程序的功能。

5. 调试程序,并进行测试。

六、实例演示以下是一个简单的单片机C51汇编程序的示例,用于实现两个数的相加,并将结果输出到LED灯上:org 0H ; 程序的起始地址为0mov a, 05H ; 将05H赋值给累加器mov b, 07H ; 将07H赋值给B寄存器add a, b ; 将A寄存器和B寄存器的值相加mov P1, a ; 将相加结果输出到P1口end ; 程序结束在这个例子中,首先将05H赋值给累加器A,然后将07H赋值给B寄存器,接着使用ADD指令将A和B的值相加,将结果存储到累加器A中,最后将累加器A的值输出到P1口。

单片机原理及应用(第3版)参考答案

单片机原理及应用(第3版)参考答案

单片机原理及应用(第3版)参考答案《单片机原理及应用(第3版)》习题参考答案姜志海黄玉清刘连鑫编著电子工业出版社目录第1章概述 ............................................................. 2 第2章 MCS,51系列单片机硬件结构 . (5)第3章 MCS,51系列单片机指令系统 .......................................10 第4章 MCS,51系列单片机汇编语言程序设计 ............................... 13 第5章 MCS,51系列单片机硬件资源的应用 ................................. 18 第6章 MCS,51系列单片机并行扩展接口技术 ............................... 23 第7章 MCS,51系列单片机串行总线扩展技术 ............................... 28 第8章单片机应用系统设计 . (30)第1章概述1(简述微型计算机的结构及各部分的作用微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成。

运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序;输出设备将计算机的处理结果用数字、图形等形式表示出来。

通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。

由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(Central Process Unit)。

2(微处理器、微型计算机、微型计算机系统有什么联系与区别,微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。

MCS-51单片机应用设计课后答案

MCS-51单片机应用设计课后答案

第一章单片机概述1.2除了单片机这一名称之外,单片机还可称为(微控制器)和(嵌入式控制器)。

1.3单片机与普通计算机的不同之处在于其将(微处理器)、(存储器)和(各种输入输出接口)三部分集成于一块芯片上。

4、单片机的发展大致分为哪几个阶段?答:单片机的发展历史可分为四个阶段:第一阶段(1974年----1976年):单片机初级阶段。

第二阶段(1976年----1978年):低性能单片机阶段。

第三阶段(1978年----现在):高性能单片机阶段。

第四阶段(1982年----现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段1.5单片机根据其基本操作处理的位数可分为哪几种类型?答:单片机根据其基本操作处理的位数可分为:1位单片机、4位单片机、8位单片机、16位单片机和32位单片机。

1.6 MCS-51系列单片机的基本芯片分别为哪几种?它们的差别是什么?答:基本芯片为8031、8051、8751。

8031内部包括1个8位cpu、128BRAM,21个特殊功能寄存器(SFR)、4个8位并行I/O口、1个全双工串行口,2个16位定时器/计数器,但片内无程序存储器,需外扩EPROM芯片。

8051是在8031的基础上,片内又集成有4KBROM,作为程序存储器,是1个程序不超过4KB 的小系统。

8751是在8031的基础上,增加了4KB的EPROM,它构成了1个程序小于4KB的小系统。

用户可以将程序固化在EPROM中,可以反复修改程序。

1.7 MCS-51系列单片机与80C51系列单片机的异同点是什么?答:共同点为它们的指令系统相互兼容。

不同点在于MCS-51是基本型,而80C51采用CMOS 工艺,功耗很低,有两种掉电工作方式,一种是CPU停止工作,其它部分仍继续工作;另一种是,除片内RAM继续保持数据外,其它部分都停止工作。

1.8 8051与8751的区别是(C)(A)内部数据存储单元数目的不同(B)内部数据存储器的类型不同(C)内部程序存储器的类型不同(D)内部的寄存器的数目不同1.9在家用电器中使用单片机应属于微型计算机的(B)(A)辅助设计应用(B)测量、控制应用(C)数值计算应用(D)数据处理应用1.10说明单片机主要应用在哪些领域?答:单片机主要运用领域为:工业自动化;智能仪器仪表;消费类电子产品;通信方面;武器装备;终端及外部设备控制;多机分布式系统。

MCS51单片机指令系统与汇编语言程序设计

MCS51单片机指令系统与汇编语言程序设计

MCS51单片机指令系统与汇编语言程序设计MCS-51是一种非常常见的8位单片机系列,该系列包括了多种型号的单片机,如Intel 8051、8031、8052等。

MCS-51单片机指令系统是一组用于驱动该系列单片机的指令集,汇编语言程序设计是利用这些指令来编写程序。

MCS-51单片机指令系统包含了多种指令,可以执行诸如数据传输、算术逻辑运算、控制和数据访问等功能。

这些指令通过各种不同的寻址模式来操作数据,包括立即寻址、寄存器寻址、直接寻址、间接寻址和寄存器间接寻址等。

不同的寻址模式和指令组合可以实现不同的功能。

汇编语言程序设计通过将人类可读的汇编指令翻译成机器可执行的二进制指令来编写程序。

在MCS-51单片机中,汇编指令由操作码和操作数组成。

操作码指定了所执行的操作,如数据传输、算术运算或控制指令。

操作数则指定了指令要操作的数据。

下面以一个简单的例子来说明MCS-51单片机指令系统和汇编语言程序设计的基本原理。

假设我们要编写一个程序,将两个寄存器中的数据相加,并将结果存储到第三个寄存器中。

首先,我们需要将第一个寄存器的值加载到累加器A中,这可以通过MOV指令实现。

MOV指令的操作码为01,操作数为两个寄存器的地址。

例如,MOVA,R0将R0的值加载到A中。

接下来,我们需要将第二个寄存器的值加载到B寄存器中,同样可以使用MOV指令。

MOVB,R1将R1的值加载到B中。

然后,我们可以使用ADD指令将A和B中的值相加,并将结果存储到A中。

ADD指令的操作码为04,操作数为A的地址。

例如,ADDA将累加器中的值与A寄存器中的值相加,并将结果存储到A中。

最后,我们可以使用MOV指令将A中的结果移动到第三个寄存器中,例如,MOVR2,A将A的值移动到R2中。

通过组合使用这些指令,我们可以实现将两个寄存器中的值相加并存储到第三个寄存器中的功能。

总结来说,MCS-51单片机指令系统和汇编语言程序设计是一种用于编程控制该系列单片机的方式。

C51单片机汇编语言程序设计

C51单片机汇编语言程序设计

C51单片机汇编语言程序设计一、二进制数与十六进制数之间的转换1、数的表达方法为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。

2、二进制数与十六进制数对应表二进制十六进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制89ABCDEF3、二进制数转换为十六进制数转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。

例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再写出对应的十六进制数即可。

0101000011011000111150D8F答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。

100111109E答案:10011110B=9EH4、十六进制数转换为二进制数转换方法为:将每1位十六进制数转换为4位二进制数。

例:将(8A)16转化为二进制数解:将每位十六进制数写成4位二进制数即可。

8A10001010答案:(8A)16=(10001010)2例:将6BH转化为二进制数解:将每位十六进制数写成4位二进制数即可。

6B01101011答案:6BH=01101011B二、计算机中常用的基本术语1、位(bit)计算机中最小的数据单位。

由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。

2、字节(Byte,简写为B)8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长两个字节构成一个字,2B=1Word。

字长是指单片机一次能处理的二进制数的位数。

如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。

MCS-51汇编语言程序设计

MCS-51汇编语言程序设计
20
判断正误
ORG 0000 LEN1 DATA 31H LEN2 EQU 32H MOV A, LEN1+1 MOV B,LEN2+1 MOV R1,#LEN1 MOV R2,#LEN2 MOV R2,#LEN2+LEN1 ;CNT1 DATA R5 CNT2 EQU R6 ;CNT EQU ADD MOV R3,#LEN1+1 MOV R4,#LEN2+1 MOV DPTR,#TOEND TOEND:SJMP $ LEN1 DATA 31H LEN2 EQU 32H END
用汇编语言与用高级语言进行程序设计很相似。对于比 较复杂的问题可以先根据题目的要求作出流程图,然后 再根据流程图来编写程序。对于比较简单的问题则可以 不作流程因而直接编程。 两者的差别还是很大的。一个很重要的差别就在于用汇 编语言编程时,对于数据的存放位置,以及工作单元的 安排等都要由编程者自己安排。而用高级语言编程时, 这些问题都是由计算机安排的,编程者则不必过问。 主要知识点:顺序程序;分支程序;循环程序; 查表程序;子程序;运算程序 ;
6
基本语法规则3
对于直接地址direct,有多种选择: (1)直接数据地址(各种进制),如MOV A、30H等; (2)标号地址,如MOV A,SUM等, SUM应该在程序中 某处加以定义; (3)带有加减的表达式,设SUM为已定义的标号地址, 如MOV A,SUM十13; (4)特殊功能寄存器名,如MOV A,P2等。
24
程序框架
1. ORG 0000H 2. LJMP MAIN
;跳转至主程序
中断入口地址
3. ORG 0003H 4. LJMP INT0_INT ;跳转至外部中断0的中断服务程序

MCS—51单片机汇编语言程序IDE设计与实现

MCS—51单片机汇编语言程序IDE设计与实现

MCS—51单片机汇编语言程序IDE设计与实现作者:常冠宇丁栋来源:《数字技术与应用》2013年第05期摘要:单片机IDE是单片机开发必不可少的工具,目前的单片机IDE主要由国外的几大开发公司设计,本文使用VC++作为开发工具,设计出适用于MCS-51单片机汇编语言程序的IDE。

关键词:MCS-51 单片机汇编 IDE 编译器中图分类号:TP313 文献标识码:A 文章编号:1007-9416(2013)05-0029-011 单片机简介1.1 单片机介绍单片机是一种集成电路芯片,它将CPU、RAM、ROM、I/O接口、中断系统等等功能集成到一块硅片上,构成一个微型计算机系统,所以单片机也叫做微控制器。

在工业控制领域中,单片机具有非常重要的地位。

MCS-51单片机是一种8位单片机,虽然目前已经有32位单片机的出现,但8位单片机在很多行业中仍在被广泛使用,其性能较之以前也有巨大的提升。

1.2 单片机发展方向单片机发展有两个方向:(1)改进集成电路工艺,提高芯片速度。

(2)根据不同领域需要,在保留基本外设装置和公共指令的基础上,将不同的外设装置集成到芯片中。

(3)MCS-51单片机指令。

MCS-51单片机的指令系统功能强、指令短、执行的速度也快,一共有111条指令以及8条伪指令,可以从功能上将其划分为数据传送、逻辑操作、算术操作、程序移位操作等四大类;空间属性上来分,分为单字节指令、双字节指令和三字节指令;时间属性上来分,分为单机器周期指令、双机器周期指令和四机器周期指令。

MCS-51单片机的指令由操作码和操作数组成,操作数又有无操作数、单操作数、双操作数三种情况。

格式如下:【标号:】操作码助记符【目的操作数】【,源操作数】【.注释】。

伪指令不用计算机做任何操作,只是帮助汇编,不影响程序执行。

2 IDE简介2.1 IDE介绍IDE(Integrated Development Environment,集成开发环境),包括代码编辑器、编译器、调试器、用户界面等,是用于编程语言开发的应用程序。

51单片机汇编程序

51单片机汇编程序

51单片机汇编程序1. 简介51单片机是一种常用的8位单片机芯片,具有广泛的应用领域。

51单片机的编程语言主要有汇编语言、C语言和底层汇编语言。

本文主要介绍51单片机的汇编程序。

2. 汇编程序基础2.1 寄存器51单片机的CPU有4个8位寄存器(A、B、DPTR、PSW)和一个16位寄存器(PC)。

在汇编程序中,我们可以使用这些寄存器来进行各种操作。

•A寄存器(累加器):用于存储数据和进行算术运算。

•B寄存器:辅助寄存器,可用于存储数据和进行算术运算。

•DPTR寄存器:数据指针寄存器,用于存储数据存取的地址。

•PSW寄存器:程序状态字寄存器,用于存储程序运行状态信息。

•PC寄存器:程序计数器,用于存储当前执行指令的地址。

2.2 指令集51单片机的指令集包含了多种汇编指令,可以用来进行数据操作、算术运算、逻辑运算、控制流程等。

常用的汇编指令有:•MOV:数据传送指令。

•ADD、SUB:加法和减法运算指令。

•ANL、ORL、XRL:逻辑运算指令。

•MOVX:外部RAM的读写指令。

•CJNE、DJNZ:条件分支指令。

•LCALL、RET:函数调用和返回指令。

2.3 编写一个简单的汇编程序下面是一个简单的汇编程序示例,用于将A寄存器中的数据加1,并将结果存储到B寄存器中。

ORG 0x0000 ; 程序的起始地址MOV A, #0x01 ; 将A寄存器赋值为1ADD A, #0x01 ; 将A寄存器加1MOV B, A ; 将A寄存器的值传送到B寄存器END ; 程序结束在上面的示例中,ORG指令用于指定程序的起始地址,MOV 指令用于将A寄存器赋值为1,ADD指令用于将A寄存器加1,MOV指令用于将A寄存器的值传送到B寄存器,END指令用于标记程序结束。

3. 汇编语言的应用51单片机的汇编语言广泛应用于各种嵌入式系统中,包括智能家居、工业自动化、仪器仪表等领域。

汇编程序具有以下特点:•程序执行效率高:由于汇编语言直接操作硬件,可以精确控制程序的执行流程,提高程序的执行效率。

《新编MCS-51单片机应用设计》第三版 (张毅刚 彭喜元 著)-阳光大学生网

《新编MCS-51单片机应用设计》第三版 (张毅刚 彭喜元 著)-阳光大学生网

欢迎光临阳光大学生网,提供最全面的大学生课后习题答案和复习试题免费下载,/阳光大学生网我们希望呵护您的眼睛,关注您的成长,给您一片绿色的环境,欢迎加入我们,一起分享大学里的学习和生活感悟,免费提供:大学生课后答案,大学考试题及答案,大学生励志书籍。

第一章单片机概述1.2除了单片机这一名称之外,单片机还可称为(微控制器)和(嵌入式控制器)。

1.3单片机与普通计算机的不同之处在于其将(微处理器)、(存储器)和(各种输入输出接口)三部分集成于一块芯片上。

4、单片机的发展大致分为哪几个阶段?答:单片机的发展历史可分为四个阶段:第一阶段(1974年----1976年):单片机初级阶段。

第二阶段(1976年----1978年):低性能单片机阶段。

第三阶段(1978年----现在):高性能单片机阶段。

第四阶段(1982年----现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段1.5单片机根据其基本操作处理的位数可分为哪几种类型?答:单片机根据其基本操作处理的位数可分为:1位单片机、4位单片机、8位单片机、16位单片机和32位单片机。

1.6MCS-51系列单片机的基本芯片分别为哪几种?它们的差别是什么?答:基本芯片为8031、8051、8751。

8031内部包括1个8位cpu、128BRAM,21个特殊功能寄存器(SFR)、4个8位并行I/O 口、1个全双工串行口,2个16位定时器/计数器,但片内无程序存储器,需外扩EPROM芯片。

8051是在8031的基础上,片内又集成有4KBROM,作为程序存储器,是1个程序不超过4KB的小系统。

8751是在8031的基础上,增加了4KB的EPROM,它构成了1个程序小于4KB的小系统。

用户可以将程序固化在EPROM中,可以反复修改程序。

1.7MCS-51系列单片机与80C51系列单片机的异同点是什么?答:共同点为它们的指令系统相互兼容。

不同点在于MCS-51是基本型,而80C51采用CMOS 工艺,功耗很低,有两种掉电工作方式,一种是CPU停止工作,其它部分仍继续工作;另一种是,除片内RAM继续保持数据外,其它部分都停止工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初始化 指定工作寄存器区
取第一个加数 加第二个加数 十进制调整 保存结果 图5-1 例1的程序流程图
13
2.分支结构程序设计 在实际应用中,不可能所有程序都是直线运行的, 相反,多数情况都需要根据不同的条件进行不同的 处理,这就会使程序跳转到不同位置去执行,这种 结构的程序称为分支结构程序。MCS-51单片机中条 件转移指令、比较转移指令、位转移指令等都可实 现程序分支。
3.循环结构程序设计
循环程序是指一段反复执行的程序。在许多问题中, 需多次执行一段完全相同的程序,只是参加运算(或处 理过程)的操作数不同。这时就可以采用循环程序结构。 循环程序可以缩短程序,减少程序所占的内存空间。一 般情况下,循环程序包括下面几部分: (1)循环体:需要多次执行的程序的主体。 (2)循环控制:对循环次数进行计数,判断循环结束的 条件。 (3)循环初值:包括循环次数、循环体中工作单元的初 值等。
汇编 汇编语言源程序
反汇编
机器语言目标程序
9
5.4 MCS-51单片机汇编语言程序设计实例 5.4.1 汇编语言程序设计步骤及程序质量评价标准
1.汇编语言程序设计步骤 用汇编语言编写程序,一般可按如下步骤进行: (1)建立数学模型 (2)确定算法 (3)制订程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序
25
【例17】使P1口所接8 个发光二极管循环点亮, 每点亮一个发光二极管, 调用一次延时子程序。 设主频fosc=12MHz,延 时时间为20ms
主程序流程图 26
子程序流程图
源程序清单: START: START1:
START2:
DELAY:
DELAY1:
ORG 0000H AJMP START ORG 0040H MOV A,#1 MOV P1,A ACALL DELAY CJNE A,#80H,START2 AJMP START RL A AJMP START1 PUSH R2 PUSH R3 CLR PSW.4 CLR PSW.3 MOV R2,#100 MOV R3, #7 DJNZ R3,$ DJNZ R2,DELAY1 POP R3 POP R2 RET END
4
5.定义空间伪指令 格式:标号:DS 数据或字符表达式 其中标号为可选项。从指定单元开始,由数据或表达式确定 保留若干个字节内存空间备用。 例如: ORG 8000H BUF:DS 08H DB 50H,8FH 即:8000H~8007H单元保留备用 (8008H)=50H (8009H)=8FH 以上DB、DW、DS伪指令只对程序存储器起作用。
23
6.子程序设计 在实际应用中,有时一段相同功能的程序可能在多处用 到,这时可将这段程序编写成子程序,用到它的地方写一条 子程序调用指令,即可插入该段程序的执行。编得好的子程 序可供不同的人在许多程序中调用,即具有通用性,这样的 子程序越多,我们编程越方便,有利于缩短应用系统的研制 周期。通用的子程序要求有子程序文件,它包含的主要内容 有:子程序名,子程序功能,入口参数,出口参数。
6
8.数据地址赋值伪指令
格式:字符名称 DATA 数据或表达式 此命令把一个数据地址或代码地址赋予标号段规 定的字符名称。 例如:INDEXJ DATA 6369H 定义了INDEXJ这个字符名称的地址为6369H,主 要用于程序的模块式调试。 9.位地址符号命令
格式:字符名称 BIT 位地址 该命令把位地址赋予标号段的字符名称。 例如:A1 BIT P1.0 A2 BIT P1.1
子程序与主程序的接口是:在主程序中执行程序调用指 令“LCALL 子程序名”或“ACALL 子程序名”,在子程序最 后执行返回指令RET。
24
子程序的执行过程: 保护断点(PC值入栈,由调用指令自动完成); 保护现场(可放在主程序中,也可放在子程序中。若放在主程 序中,则应安排在调用指令之前); 传递参数(需要传递参数时,就有这一步骤,不需传递参数时 就没有这一步骤); 具体处理(这是子程序的主体,即实现子程序功能的程序段); 返回参数(需要返回参数时,就有这一步骤,不需返回参数时 就没有这一步骤); 恢复现场(若保护现场是在主程序中,则恢复现场也在主程序 中,且安排在调用指令之后。若保护现场是在子程序中,则恢 复现场也应在子程序中); 恢复断点(PC值出栈,由返回指令自动完成)。
15
【例5】单字节十 六进制数转换为ASCⅡ 码。设被转换的数在B 中,转换后的ASCⅡ码 放在R7R6中。
ห้องสมุดไป่ตู้
源程序清单:设程序起始地址为2000H ORG 2000H MAIN: MOV A,B ;取被转换数据 SWAP A ;取高4位 ANL A,#OFH SUBB A,#0AH ;高4位〈0AH吗? JC L1 ;是,转L1 ADD A,#7 ;否,加7 L1: ADD A,#30H ;加30H ADD A,#0AH ;原来减掉0AH,再加回来 MOV R7,A ;保存高4位对应的 MOV A,B ;转换低4位 ANL A,#OFH SUBB A,#0AH JC L2 ADD A,#7 L2: ADD A,#30H ADD A,#0AH MOV R6,A ;保存低4位对应的ASCⅡ码 17 END
12
【例1】两个1位十进制数相加,结果存于工作寄存器 R6、R4中。设两个加数分别在工作寄存器R0和R2中。 源程序清单: ORG 1000H MAIN: CLR PSW.4 CLR PSW.3 MOV A,R0 CLR R6 CLR C ADD A,R2 DA A MOV R4,A CLR A ADDC A,#0 MOV R6,A END
7
5.3 MCS-51单片机汇编语言 源程序格式及上机过程 5.3.1 源程序格式 ORG ×××× SJMP(或AJMP或LJMP) 主程序名 ORG ×××× 主程序名: 主程序 …… 子程序名: 子程序 …… RET 中断服务程序名:中断服务程序 …… RETI END
8
5.3.2 MCS-51单片机汇编语言上机过程
5.散转程序设计 散转程序是一种并行多分支程序,它根据系统的某种 输入或运算结果,分别转向各个处理程序。与分支程序不同 的是,散转程序多采用指令:JMP @A+DPTR,根据输入或 运算结果,确定A或DPTR的内容,直接跳转到相应的分支程 序中去。而分支程序一般是采用条件转移指令或比较转移指 令实现程序的跳转。散转程序的基本结构如图所示。
3.操作数项 操作数可以是数字,可以是地址, 。操作数又可 分为目的操作数和源操作数两种,二者之间用逗号分 开。另外,汇编语言语句中,有的有一个操作数,有 的有两个操作数,有的有三个操作数,有的有多个操 作数,有的没有操作数,而有的操作数是隐含的。 4.注释 以分号开头,计算机在汇编时对这部分不予处理, 是程序员对指令操作的解释,可有可无。
3
3.定义字节伪指令 格式:标号:DB X1,X2,…,Xi,…Xn 其中标号为可选项,Xi为8位数据或ASCⅡ码。 例如: ORG 1000H TAB: DB 01H,02H 则 (1000H)=01H,(1001H)=02H 4.定义双字节伪指令 格式:标号:DW X1,X2,…,Xi,…Xn 其中称号为可选项,Xi为双字节数据。 例如: ORG 2000H HETAB: DW 2546H,0178H 则 (2000H)=25H ,(2001H)=46H (2002H)=01H ,(2003H)=78H
14
【例4】求单字节带符号数的补码。设该单字节 数在累加器A中,求出的补码存于寄存器B中。 源程序清单: ORG BEGIN: J NB MOV MOV CPL ADD MOV MOV L1: MOV END 0200H ACC.7,L1 C,ACC.7 00H,C A A,#1 C,00H ACC.7,C B,A
20
4.查表程序设计
所谓查表就是把用某种方式获得的结果数 据编制成数据表,存放于存储器的某个区 域,在程序中用MOVC A,@A+PC或 MOVC A,@A+DPTR指令从数据表中取出 需要的数据,这样一种类型的程序,称为 查表程序。
21
【例10】代码转换是查表程序的 典型应用之一。本例要求将一位十 六进制数转换成ASCⅡ码。设被转 换的十六进制数在R0中,转换以后 的ASCⅡ码存放在R1中。 程序清单:设程序起始地址为0000H。 ORG 0000H LJMP MAIN ORG 0060H MAIN: MOV A ,R0 ANL A,#OFH MOV DPTR,#TAB MOVC A,@A+DPTR MOV R1,A ORG 0100H TAB: DB ‘123456789ABCDEF’ END
5
6.单字节数据赋值伪指令 格式: X EQU n X为用户定义的符号名,n为常数、工作寄存器或特 殊功能寄存器,为单字节数据。 该伪指令将n的值赋给符号名X。X可用于指令中, 作为单字节操作数,包括立即数和直接地址direct。 7.双字节数据赋值伪指令 格式:y EQU n y为用户定义的符号名,n为双字节常数。 该伪指令将n的值赋给符号名y。 y 可作为指令中双单字节操作数,或转移指令中的 目的地址。 用EQU定义的符号名必须先定义后使用。
第五章 MCS-51系列单片机汇编语言程序设计 5.1 MCS-51系列单片机汇编语言语句格式 汇编语言的语句由四部分构成:名字项,操作码项,操 作数项,注释项。 1.名字项 名字项就是我们常说的标号,标号是该指令的符号地址, 可根据需要设定。标号必须以字母开始,以冒号结束,所用 字符一般不超过8个(视汇编语言版本不同而异)。系统中 保留使用的字符或字符组不能用作标号。标号在每条语句中 是任选项,即需要时才设定。 2.操作码项 这一项对于汇编指令语句而言是指令的助记符,如MOV。 对伪指令语句而言是指令的定义符,如DB。操作码是汇编语 言程序每一句所必须的部分,它决定语句的操作性质。操作 码与操作数之间用空格分开。 1
相关文档
最新文档