第四章MCS-51汇编语言程序设计

合集下载

单片机原理及应用教程(C语言版)-第4章 单片机C语言及程序设计

单片机原理及应用教程(C语言版)-第4章 单片机C语言及程序设计

4.3.2 C51变量的存储类型
三、外部存储
外部(存储)变量:用extern声明的变量为外 部变量,是在其它文件定义过的全局变量。 用 extern声明后,便可以在所声明的文件中使用。
需要注意的是:在定义变量时,即便是全局变 量,也不能使用extern修饰。
4.3.2 C51变量的存储类型
四、寄存器存储
动态(存储)变量:用auto定义的为动态变量, 也叫自动变量。
作用范围:在定义它的函数内或复合语句内部 当定义它的函数或复合语句执行时,C51才为 变量分配存储空间,结束时所占用的存储空间释放。 定义变量时,auto可以省略,或者说如果省略 了存储类型项,则认为是动态变量。动态变量一般 分配使用寄存器或堆栈。
“C51”概念:为了与ANSI C区别,把“单片 机C语言”称为“C51”,也称为“Keil C”。
4.1.1 C语言编程的优势
在编程方面,使用C51较汇编语言有诸多优势: 1)编程容易 2)容易实现复杂的数值计算 3)容易阅读与交流 4)容易调试与维护 5)容易实现模块化开发 6)程序可移植性好
本 无符号整型 unsigned int 2字节 0~65535 有符号整型 signed int 2字节 -32768~32767
类 无符号长整型 unsigned long 4字节 0~4294967295
型 有符号长整型 signed long 4字节 -2147483648~2147483647
MCS-51单片机有四个存储空间,分成三类, 它们是片内数据存储空间、片外数据存储空间和 程序存储空间。
MCS-51单片机有更多的存储区域:由于片内 数据存储器和片外数据存储器又分成不同的区域, 所以单片机的变量有更多的存储区域。

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)

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

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

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。

第四章-汇编语言程序的设计

第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。

(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。

在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。

(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。

汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。

①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。

②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。

(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。

)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。

操作数:给指令的操作提供数据或地址。

注释:是对语句或程序段的解释说明。

(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。

冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。

第4章 单片机汇编语言程序设计

第4章  单片机汇编语言程序设计

RO 20HBCMDH BCDL
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21 0011
;完成转换 @R0 ;存数
H22HB0C001D0HBCD 01000L
END
回目录 上页 下页
方法1小结:
以上程序用了8条指令,15个内存字节,执行时间为9个 机器周期。
21 0011BCDH H22H0011BCDL
回目录 上页 下页
程序:
ORG 1000H
MOV R0, #22H ;R0 22H MOV @R0,#0 ; 22H 0 MOV A, 20H ;两个BCD数送A
A
B00C01D01H0BB0CC0D0DHL
XCHD A, @R0 ;BCDL数送22H ORL 22H, #30H ;完成转换
例4-7:设30H单元存放的是一元二次方程ax2+bx+c = 0
根的判别式△= b2 – 4ac的值。
试根据30H单元的值,编写程序,
判断方程根的三种情况。
在31H中存放“0”代表无实根,
存放“1”代表有相同的实根,
存放“2”代表两个不同的实根。
解:△为有符号数,有三种情况,这是一多重分支程序
即小于零,等于零、大于零。
R3
R2
回目录 上页 下页
程序:
ORG 1000H CLR C CLR A SUBB A, R0 MOV R2, A CLR A
SUBB A, R1 MOV R3 , A SJMP $ END
;CY 0
;A 0
;低字节求补
;送R2
;A清零 R3 0000
;高字节求补 0000

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

第4章 MCS-51单片机汇编语言程序设计
开始
程序清单:
送转移地址序号
A,R3 ;取序号 A ;序号乘2 DPTR, #JTAB ;32个子程序 首地址送DPTR JMP @A+DPTR ;根据序号转移 JTAB: AJMP ROUT00 ;32个子程序首地址 AJMP ROUT01 … MP: MOV RL MOV AJMP ROUT31
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
【例4-1】
双字节二进制数求补。
程序说明:对R3(高8位)、R2(低8位)中的二进制定 点数取反加1即可得到其补码。
开始
程序清单:
BINPL:MOV A,R2 CPL A ADD A,#01H MOV R2,A MOV A,R3 CPL A ADDC A,#00H MOV R3,A RET ;低位字节取反 ;加1 ;低位字节补码送R2 ;高位字节取反 ;加进位 ;高位字节补码送R3
散转生成正确偏移号
置换指令地址表首址
转入R3指示的程序
AJMP
……
AJMP
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
3.循环程序
包括:循环初始化、循环处理、循环控制
开始 置初值 循环体 循环结束? Y 循环修改 N 循环体 循环结束? N Y 结束 循环修改 结束 开始 置初值
;调用查表子程序 ; 暂存R1中 ;调查表子程序 ;平方和存A中 ;等待
取第一个数→A 调查表子程序 结果存入R1 取下一个数→A 调查表子程序 两数平方相加 存结果
子程序清单:
SQR: INC A ;加RET占的一个字节 MOVC A,@A+PC ;查平方表 RET TAB: DB 0,1,4,9,16 DB 25,36,49,64,81 END

第4章 MCS-51汇编语言程序设计

第4章 MCS-51汇编语言程序设计

n
第4章 MCS-51汇编语言程序设计
当i=n时,yn+1即为所求n个数据之和y。这种形式的 公式叫递推公式。在用单片机的汇编程序实现时,yi 是一个变量,这可用式(4-3)表示:
0 y 1 i y xi yi i 1 i
in
根据这个公式,可以画出程序框图,如图4.1所示。
第4章 MCS-51汇编语言程序设计
4.3.1 程序总体结构 • MCS-51单片机的汇编程序由主程序、若干个子程序、中 断服务程序等组成。 • 由于MCS-51单片机复位后PC=0000H,也就是程序从程 序存储器的0000H开始执行,由于MCS-51单片机程序存 储器的0003H、000BH、0013H、001BH、0023H分别是 外部中断0、定时器0、外部中断1、定时器1、串行口的中 断入口地址,所以主程序开始的地址一般安排在0030H之 后的程序存储器中。一般在程序存储器的0000H开始放一 条无条件转移指令(AJMP、LJMP、SJMP)转到主程序的 开始处。如果要使用某些中断,则在相应的中断入口地址 也放一条无条件转移指令,多数情况下用LJMP指令,这 是因为使用LJMP指令可使中断服务程序在单片机程序存 储器中的任意位置编写。图4.3是MCS-51单片机的程序总 体结构图。
第4章 MCS-51汇编语言程序设计
2. 汇编 • 汇编语言必须经过机器汇编或人工汇编才能得到相应的机 器程序,即目标程序,以供单片机识别和执行。由于人工 汇编工作量大,容易出错,现已不用。机器汇编一般是在 PC上利用一些汇编软件进行。目前几乎所有的单片机仿 真器配的开发软件都有汇编程序,在源程序编写完成后使 用汇编功能菜单即可进行对源程序汇编。在汇编时若发现 源程序有语法错误或跳转超出范围等情况,系统会将错误 显示给用户。用户在改正错误后,需再对源程序进行汇编, 直到源程序完全没有语法错误。此时汇编程序会生成与其 对应的目标文件。一般情况下是生成HEX(十六进制)和 BIN(二进制)文件。没有语法错误并不等于程序开发成功, 一般来说还要对程序进一步调试、修改,运行无误后,程 序才算最终完成。这时才可将目标文件写入到程序存储器 中。

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

51单片机汇编语言程序设计
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
8
4.1.3 汇编语言的规范
2.伪指令
---伪指令 伪指令ORG 伪指令
MCS-51系列单片机的常用伪指令有 ORG、 MCS-51系列单片机的常用伪指令有:ORG、 系列单片机的常用伪指令有: END、EQU、DB、DW、DS和BIT等 END、EQU、DB、DW、DS和BIT等。
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
9
4.1.3 汇编语言的规范
(2)汇编结束伪指令END 汇编结束伪指令END
格式:[标号:] 格式: 标号:] END [表达式] [表达式 表达式]
---伪指令 伪指令END 伪指令
功能:结束汇编。汇编程序遇到END伪指令后即结束汇 功能:结束汇编。汇编程序遇到END伪指令后即结束汇 编。处于END之后的程序,汇编程序不予处理。 处于END之后的程序 汇编程序不予处理。 之后的程序, ORG 2000H 如: START: MOV A, #00H … END START ;表示标号START开始的程序段结束。 表示标号START开始的程序段结束 开始的程序段结束。
以上伪指令经汇编以后, 以上伪指令经汇编以后,将从 1010H开始的若干内存单元赋值。 1010H开始的若干内存单元赋值。 开始的若干内存单元赋值
23:24
单片机原理与接口技术
中北大学电子科学技术专业
返回目录
12
4.1.3 汇编语言的规范
(5)定义字伪指令 )定义字伪指令DW
[标号:] 标号: DW 16位二进制数表 16位二进制数表
(7)位定义伪指令BIT 位定义伪指令BIT
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章MCS-51汇编语言程序设计重点及难点:单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。

教学基本要求:1、掌握汇编语言程序设计的基本概念;2、掌握伪指令的格式、功能和使用方法;3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法;4、掌握常用汇编语言程序设计步骤和方法。

教学内容§4.1汇编语言程序设计概述一、汇编语言的特点(1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。

(2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。

(3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。

(4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。

二、汇编语言的语句格式[<标号>]:<操作码> [<操作数>];[<注释>]三、汇编语言程序设计的步骤与特点(1)建立数学模型(2)确定算法(3)制定程序流程图(4)确定数据结构(5)写出源程序(6)上机调试程序§4.2伪指令伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。

MCS- 51常见汇编语言程序中常用的伪指令:第四章MCS-51汇编语言程序设计911.ORG (ORiGin)汇编起始地址命令[<标号:>] ORG <地址>2.END (END of assembly)汇编终止命令[<标号:>] END [<表达式>]3.EQU (EQUate)赋值命令<字符名称> EQU <赋值项>4.DB (Define Byte)定义字节命令[<标号:>] DB <8位数表>5.DW (Define Word)定义数据字命令[<标号:>] DW <16位数表>6.DS (Define Stonage )定义存储区命令[<标号:>] DW <16位数表>7.BIT位定义命令<字符名称> BIT <位地址>8.DA TA数据地址赋值命令<字符名称> DATA <表达式>§4.3单片机汇编语言程序的基本结构形式一、顺序程序[例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。

MOV R0 ,# 52H ;被加数的低字节地址MOV R1 ,# 55H ;加数的低字节地址MOV A ,@ R0ADD A ,@ R1 ;低字节相加MOV @ R0 , A ;存低字节相加结果DEC R0DEC R1MOV A ,@ R0ADDC A ,@ R1 ;中间字节带进位相加MOV @ R0 , A ;存中间字节相加结果DEC R0DEC R1MOV A ,@ R0ADDC A ,@ R1 ;高字节带进位相加MOV @ R0 , A ;存高字节相加结果CLR AADDCA , # 00H ;存放进位的单元地址 MOV@ R0 , A ;进位送00H 位保存二、分支程序 1.单分支程序[例4-2] 变量X 存放在V AR 单元内,函数值Y 存放在FUNC 单元中,试按下式的要求给Y 赋值。

⎪⎩⎪⎨⎧<-=>=010001X X X Y本题的程序流程见图4-1(a )。

参考程序:ORG 1000HV AR DA TA 30HFUNC DA TA 31HMOV A , V AR;A ← X JZ DONE;若X=0,则转DONE JNB ACC.7 , POSI;若X>0,则转POSI MOV A , # 0FFH;若X<0,则Y=-1 SJMP DONEPOSI : MOV A , # 01H;若X>0,则Y = 1 DONE : MOVE FUNC , A;存函数值 SJMP $END图4-1 例4-2的分支流程图第四章MCS-51汇编语言程序设计93这个程序的特征是先比较判断,然后按比较结果赋值,这实际是三分支而归一的流程图,因此,至少要用两个转移指令。

初学者很容易犯的一个错误是:漏掉了其中的SJMP DONE 语句,因为流程图中没有明显的转移痕迹。

这个程序也可以按图4-1(b)的流程图来编写,其特征是先赋值,后比较判断,然后修改赋值并结束。

参考程序:ORG 1000HV AR DA TA 30HFUNC DA TA 31HMOV A ,V AR ;A ←XJZ DONE ;若X=0,则转DONEMOV R0 ,# 0FFH ;先设X<0,R0 = FFHJNB ACC.7 ,NEG ;若X<0,则转NEGMOV R0 ,# 01H ;若X>0,R0 = 1 NEG:MOV A ,# 01H ;若X>0,则Y = 1DONE:MOV FUNC , A ;存函数值SJMP $END2.多分支程序图4-2 多分支程序转移三、循环程序循环程序一般由4部分组成:(1)置循环初值,即确立循环开始时的状态。

(2)循环体(工作部分),要求重复执行的部分。

(3)循环修改,循环程序必须在一定条件下结束,否则就要变成死循环。

(4)循环控制部分,根据循环结束条件,判断是否结束循环。

以上4个部分可以有两种组织方式。

[例4-3]从BLOCK单元开始存放一组无符号数,一般称为一个数据块。

数据块长度放在LEN单元,编写一个求和程序,将和存入SUM单元,假设和不超过8位二进制数。

在置初值时,将数据块长度置入一个工作寄存器,将数据块首地址送入另一个工作寄存器,一般称它为数据块地址指针。

每做一次加法之后,修改地址指针,以便取出下一个数来相加,并且使计数器减1。

到计数器减到0时,求和结束,把和存入SUM即可。

参考程序:各单元的地址是任意的。

LEN DA TA 20HSUM DA TA 21HBLOCK DA TA 22HCLR A ;清累加器MOV R2 ,LEN ;数据块长度送R2MOV R1 ,# BLOCK ;数据块首址送Rl LOOP:ADD A ,@R1 ;循环做加法INC R1 ;修改地址指针DJNZ R2 ,LOOP ;修改计数器并判断MOV SUM , A ;存和以上程序在计数器初值不为零时是没有问题的,但若是数据块的长度有可能为零,则将出现问题。

当R2初值为零,减1之后将为FFH,故要做256次加法之后才会停止,显然和题意不符。

若考虑到这种情况,则可按图4-3(b)的方式来编写程序。

在做加法之前,先判断一次R2的初值是否为零。

整个程序仍基本套用原来的形式:CLR A ;清累加器MOV R2 ,LEN ;数据块长度送R2MOV R1 ,# BLOCK ;数据块首址送RlINC R2SJMP CHECKLOOP:ADD A ,@R1 ;循环做加法INC R1 ;修改地址指针CHECK:DJNZ R2 ,LOOPMOV SUM , A ;存和§4.4MCS-51单片机汇编语言程序设计举例一、算术运算程序[例4-4]假定R2、R3和R4、R5分别存放两个16位的带符号二进制数,其中R2和R4的最高位为两数的符号位。

请编写带符号双字节二进制数的加减法运算程序,以BSUB为减法程序入口,以BADD为加法程序入口,以R6、R7保存运算结果。

参考程序:BSUB:MOV A ,R4 ;取减数高字节CPL ACC.7 ;减数符号取反以进行加法MOV R4 , ABADD:MOV A ,R ;取被加数MOV C ,ACC.7MOV F0 , C ;被加数符号保存在F0中XRL A ,R4 ;两数高字节异或第四章MCS-51汇编语言程序设计95MOV C ,ACC.7 ;两数同号CY=0,两数异号CY=1MOV A ,R2CLR ACC.7 ;高字节符号位清“0”MOV R2 , A ;取其数值部分MOV A ,R4CLR ACC.7 ;低字节符号位清“0”MO V R4 , A ;取其数值部分JC JIAN ;两数异号转JIANJIA:MOV A ,R3 ;两数同号进行加法ADD A ,R5 ;低字节相加MOV R7 , A ;保存和MOV A ,R2ADDC A ,R4 ;高字节相加MOV R6 , A ;保存和JB ACC.7 ,QAZ ;符号位为“1”转溢出处理QWE:MOV C ,F0 ;结果符号处理MOV ACC.7, CMOV R6 , ARETJIAN:MOV A ,R3 ;两数异号进行减法CLR CSUBB A ,R5 ;低字节相减MOV R7 , A ;保存差MOV A ,R2SUBB A ,R4 ;高字节相减MOV R6 , A ;保存差JNB ACC.7 ,QWE ;判断差的符号,为“0”转QWE BMP:MOV A ,R7 ;为“1”进行低字节取补CPL AADD A ,#1MOV R7 , AMOV A ,R6 ;高字节取补CPL AADDC A ,# 0MOV R6 , ACPL F0 ;保存在F0中的符号取反SJMP QWE ;转结果符号处理QAZ: ;溢出处理二、数制转换程序[例4-5]在内部RAM的hex单元中存有2位十六进制数,试将其转换为ASCII码,并存放于asc和asc+1两个单元中。

主程序(MAIN):MOV SP ,# 3FHMAIN:PUSH hex ;十六进制数进栈ACALL HASC ;调用转换子程序POP asc ;第一位转换结果送asc单元MOV A ,hex ;再取原十六进制数SW AP A ;高低半字节交换PUSH ACC ;交换后的十六进制数进栈ACALL HASCPOP asc+l ;第二位转换结果送asc+l单元子程序(HASC):HASC:DEC SP ;跨过断点保护内容DEC SPPOP ACC ;弹出转换数据ANL A ,# 0FH ;屏蔽高位ADD A ,# 7 ;修改变址寄存器内容MOVC A ,@A+PC ;查表PUSH ACC ;查表结果进栈INC SP ;修改堆栈指针回到断点保护内容INC SPRET SPASCTAB:DB “0,1,2,3,4,5,6,7”;ASCII码表DB “8,9,A,B,C,D,E,F”三、定时程序有多个定时需要,我们可以先设计一个基本的延时程序,使其延迟时间为各定时时间的最大公约数,然后就以此基本程序作为子程序,通过调用的方法实现所需要的不同定时。

相关文档
最新文档