第5章80C51单片机汇编语言程序设计
单片机原理及应用 第五章 80C51单片机的程序设计
![单片机原理及应用 第五章 80C51单片机的程序设计](https://img.taocdn.com/s3/m/fbdc1a68844769eae009ed71.png)
; (R0) ← 0 ; (R1) ← 0 ; (R2) ← 0 ; (R3) ← 0 ; (P1) ← 0 ; (R4) ← 0FFH ; (R5) ← 0FFH ; (30H) ← 0 ; (40H) ← 0 ; 结束
例2:将R3与R5内容互换,R4与35H单元内容互换,程序段 如下
XCHR:XCH XCH XCH XCH XCH XCH
MOV R0, #addr1 ;被乘数低字节地址送R0
MOV R1, #addr3 ; 乘数低字节地址送R1
MOV A, @R0 ;被乘数低字节内容送A
MOV B, @R1 ;乘数低字节内容送B
MUL AB
;低字节内容AL*BL
MOV R7,A
;积的最低字节RES0存入R7中
MOV R2,B
;高字节HLL送R2
INC R0
;指向被加数高位字节
INC R1
;指向加数高位字节
MOV A,@R0
;被加数高位字节送A
ADDC A,@R1
;高字节数相加
MOV @R0,A
;高字节数和存addr2中
POP ACC
;恢复A原内容
例2. 双字节乘法
内部RAM中 被乘数:addr1(低位字节),addr2(高位字节) 乘数: addr3(低位字节),addr4(高位字节) 乘积:由低到高 addr1,addr2,addr3,addr4
对P1口清“0”,片内RAM中30H、40H单元清“0”。
ORG 1000H MOV R0,#00H MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV P1,#00H MOV R4,#0FFH MOV R5,#0FFH MOV 30H,#00H MOV 40H,#00H
80C51汇编语言程序设计
![80C51汇编语言程序设计](https://img.taocdn.com/s3/m/b4e10195ba0d4a7302763a75.png)
将实际问题转化为计算机处理的程序算法 算法比较与优化(内存需求与运行速度)
三、流程描述
流程图符号
开始或结束符号
判断分支符号
工作任务符号
程序连接符号
程序流向符号
程序流向符号
“超级循环”框架
开始 初始化
循环扫描、处理
4.1.2 程序编制的方法和技巧
一、强化模块观念
程序模块(主程序模块、各种子程序模块) 模块化优点:分块设计、便于阅读、调试方便
本章学习目标 :
了解汇编语言的特点,明确程序设计的基本思 路 熟悉汇编语言的语句结构,能正确书写汇编语 言程序 理解伪指令的功能,能正确使用80C51常用伪指 令 熟悉几种基本的程序结构 能读懂教材中的程序实例,学会编写同等难度 的应用程序
单片机应用系统由硬件系统和应用程序构成
应用程序设计方法
汇编语言 高级语言
二进制(B) 十进制(D或省略D) 十六进制(H),注意A~F开头时要加“0” ASCII码,如 ‘A’,‘1245’ (2)符号:符号名、标号或“$”(PC的当前值) (3)表达式:由运算符和数据构成(见表4.1)Βιβλιοθήκη 四、注释英文分号“;”开头
表4.1
程序设计实例引入
❖ 实例 假设一个班有50个人, 共有3门选修课: ➢ 计算机算法 ➢ 服装CAD设计 ➢ 德语 请找出: ➢ 同时选了三门课的同学;
问题的解决
❖ 第一步 如何在计算机中表示选修某门课的所有同学
计算机算法
5
学生的学号
12
23
25
29
39
服装CAD设计
2 25 39
选修这门人数 德语 4 12 25 29 39
这个过程实际上是设计数据结构的问题
第五章80C51单片机的程序设计
![第五章80C51单片机的程序设计](https://img.taocdn.com/s3/m/e2ac46c958f5f61fb7366650.png)
第五章80C51单片机的程序设计
(2) 数据说明伪指令 作用是把数据存入指定的存储单元。 ① 定义字节伪指令指令 (<标号>) DB <表达式或表达式表> 其含义是将表达式或表达式表所表示的数据或数据 串存入从标号开始的连续存储单元中。标号为可选 项,它表示数据存储单元地址。表达式或表达式表 是指一个字节或用逗号分开的字节数据。例如: FIRST DB 73,04,53,38,00,46 SECON DB 02,36,48,75,34,46,97,08 表示字节串数据存入由 FIRST 和 SECON 标号为起始 地址的连续存储器单元中。
第五章80C51单片机的程序设计
3。汇编语言是计算机能提供给用户的最快 而又最有效的语言 , 也是能利用计算机所有 硬件特性并能直接控制硬件的唯一语言 . 因 而 , 在对于程序设计的空间和时间要求很高 的场合 ,汇编语言是必不可或缺的 . 很多需要 直接控制硬件的应用场合 , 则是非汇编语言 不可. 因此对设计者的要求较高 ,要求具有 “软硬结合”功底 . 在一定程度上可以说掌 握汇编语言是学习单片机的基本功.
第五章80C51单片机的程序设计
ORG START: MOV MOV MOV MOV MOV MOV MOV MOV M0V END 1000H R0,#00H R1,#00H R2,#00H R3,#00H P1,#00 R4,#0FFH R5,#0FFH 30H,#00H 40H,#00H ;结束 ;(R0)←0 ;(R1)←0 ;(R2)←0 ;(R3)←0 ;(P1)←0 ;(R4)←0FFH ;(R5)←0FFH ;(30H)←0 ;(40H)←0
第五章 80C51单片机的程序设计
![第五章 80C51单片机的程序设计](https://img.taocdn.com/s3/m/835e59df6f1aff00bed51e55.png)
10
ORG 8000H START:MOV A,#30H … … 此时规定该段程序的机器码从地址8000H单元开 始存放。 在每一个汇编语言源程序的开始,都要设置一条 ORG伪指令来指定该程序在存储器中存放的起始位置。 若省略ORG伪指令,则该程序段从0000H单元开始存 放。在一个源程序中,可以多次使用ORG伪指令规定 不同程序段或数据段存放的起始地址,但要求地址值 由小到大依序排列,不允许空间重叠。
4
3、操作数 操作数用于给指令的操作提供数据或地址。在一条 汇编语句中操作数可能是空缺的,也可能包括一项, 还可能包括两项或三项。各操作数间以逗号分隔。操 作数字段的内容可能包括以下几种情况: (1)工作寄存器名; (2)特殊功能寄存器名; (3)标号名; (4)常数; (5)符号“$”,表示(PC本); (6)表达式。
7、位地址符号定义伪指令 BIT 格式为: 符号名 BIT 位地址表达式 功能是将位地址赋给指定的符号名。其中, 位地址表达式可以是绝对地址,也可以是符 号地址。 例如: ST BIT P1.0 将P1.0的位地址赋给符号名ST,在其后的编 程中就可以用ST来代替P1.0。
18
二、汇编语言程序设计
15
5、空间定义伪指令 DS [标号:] DS 表达式 功能是从标号指定的地址单元开始,在程序存 储器中保留由表达式所指定的个数的存储单元 作为备用的空间,并都填以零值。例如: ORG 3000H BUF:DS 50 … … 汇编后,从地址3000H开始保留50个存储单元 作为备用单元。
单片机实用教程_5 89C51单片机汇编语言程序设计
![单片机实用教程_5 89C51单片机汇编语言程序设计](https://img.taocdn.com/s3/m/86ea44d7a58da0116c1749d6.png)
;除以100得百位数
;余数除以10得十位数 ;余数为个位数
5.4.2 分支结构程序设计 程序分支是通过条件转移指令实现的,满足条件 则进行程序转移,不满足条件就顺序执行程序。 分支程序又分为单分支和多分支结构。 通过条件判断实现单分支程序转移的指令有: JZ、JNZ、CJNE、DJNZ等。 以位状态作为条件进行程序分支的指令有: JC、JNC、JB、JNB、JBC等。 完成0, 1, 正, 负以及相等,不等作为条件判断。 多分支程序根据条件判断,分别转移去执行不 同的程序,有散转指令“JMP @A+DPTR” 。
第5章 89C51单片机 汇编语言程序设计
汇编语言进行程序设计是面向过程 设计的典型方法,也是程序设计最基本 的能力体现。本章介绍89C51汇编语言 程序设计的方法和一些实用程序。
5.1 汇编语言语句的类型和组成 5.1.1 汇编语言
汇编语言: 用指令的助记符、符号地址、标号等符 号书写程序的编程语言。 源程序: 用汇编语言编写的程序为汇编语言源程序.
[标号:] 操作码 [目的操作数, 源操作数] [;注释]
其中: 方括号[ ]的部分为可选项, 可有可无, 随指令而异. 字段之间要用分隔符(空格,冒号,逗号,分号)分开.
⑴. 标号
标号位于语句的开始, 代表该语句的地址(符号地址) 标号由1-8个字母和数字组成, 由字母打头, 以冒号结 尾。不能使用指令助记符、寄存器名、伪指令等。 每个语句标号可用可不用。转移指令可以标号作为 指令的目标地址, 汇编中自动计算出转移的偏移量。 标号可以用赋值伪指令来赋值。
ORG 0000H LJMP CMPT ORG 1000H CMPT: MOV A,30H JNB ACC.7,NCH MOV C,ACC .7 CPL A ADD A,#1 MOV ACC.7,C NCH: MOV 31H,A SJMP $ END
(05)第五章 80C51单片机的程序设计(1)
![(05)第五章 80C51单片机的程序设计(1)](https://img.taocdn.com/s3/m/4ffd861152d380eb62946d9e.png)
3. 高级语言
比汇编语言易学、易懂,具有通用性强、易于 比汇编语言易学、易懂,具有通用性强、 移植等优点。高级语言的语句功能强, 移植等优点。高级语言的语句功能强,它的一 条语句往往相当于许多条汇编指令,不易精确 条语句往往相当于许多条汇编指令, 掌握,故在高速实时控制中一般是不适用的。 掌握,故在高速实时控制中一般是不适用的。 和汇编语言相比, 和汇编语言相比,用C语言这样的高级语言有很 多优势。 80C51的基本结构无须过多了解, 的基本结构无须过多了解 多优势 。 对 80C51 的基本结构 无须过多了解 , 不必了解处理器的指令集。 不必了解处理器的指令集。寄存器的分配和数 据的寻址都由编译器去完成。 据的寻址都由编译器去完成。程序拥有正式的 结构,并能被分成多个单独的子函数。 结构,并能被分成多个单独的子函数。
在目前单片机的开发应用中,经常采用C 在目前单片机的开发应用中,经常采用C语言和汇编语 言共同编写程序。 言共同编写程序 。 要想很好地掌握和应用单片机首先 要掌握汇编语言。 要掌握汇编语言。 一般用汇编语言编写与硬件有关的部分程序, 一般用汇编语言编写与硬件有关的部分程序,用C语言 编写与硬件无关的运算部分程序, 编写与硬件无关的运算部分程序 , 充分发挥两种语言 的长处,可以提高开发效率。 的长处,可以提高开发效率。
程序设计结构化。 程序设计结构化。
采用结构化方式的程序设计已成为软件工作的重要原理。 采用结构化方式的程序设计已成为软件工作的重要原理 。 它 使得程序结构简单清晰,易读写、调试方便、生成周期短、 使得程序结构简单清晰 , 易读写 、 调试方便 、 生成周期短 、 可靠性高等特点。 可靠性高等特点。 根据结构化程序设计的观点, 根据结构化程序设计的观点 , 功能复杂的程序结构可采用三 种基本控制结构,即顺序结构、选择结构和循环结构来组成。 种基本控制结构 , 即顺序结构 、 选择结构和循环结构来组成 。
MSC51-5_80C51单片机的程序设计
![MSC51-5_80C51单片机的程序设计](https://img.taocdn.com/s3/m/789d91ed4afe04a1b071ded6.png)
3、BCD码转换成二进制数
4、将二进制转换成压缩BCD码
例:在内部RAM的BINB开始的 在内部 的 开始的 单元中存放一个16位二进制无符 单元中存放一个 位二进制无符 号数,将其化成压缩BCD码,存 号数,将其化成压缩 码 于R5~R3中,试编程。 中 试编程。 BTOD: CLR A MOV R3,A MOV R4,A MOV R5,A MOV R2,#16 BTOD1: MOV A,BINB ADD A,BINB MOV BINB,A MOV A,BINB+1
汇 编 源程序
汇编 程序
连接 程序
调试 程序
(二)汇编语言语句的种类和格式 1、语句的三种类型 程序段说明伪指令ORG 指令语句: ORG 1000H 例: 指令语句:汇编时,一条指令 产生一个目标代码 #12H START: MOV A,
3、伪指令语句 等值伪指令EQU和DL: 例:DDR EQU 1020H(不可改)
28
ADDC A,BINB+1 MOV BINB+1,A MOV A,R3 ADDC A,R3 DA A MOV R3,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R5 ADDC A,R5 DA A MOV R5,A DJNZ R2,BTOD1;R2非零循环 非零循环 RET
INC INC MCSTR2: RET
R0 DPTR
SJMP MCSTR1 CSTR: DB ‘HELLO’,0 说明: 1、伪指令DB定义字符串,最后 一个字节为标志NULL。 2、由DPTR寻址源串,用MOVC 指令取代码段中的数据。 3、R0为目的串指针,寻址内部 RAM。 思考题: 思考题:如何将代码段中的字 符串传递到外部RAM中? 中 符串传递到外部
单片机原理及接口技术 李全利 第三版 课后答案 xt4
![单片机原理及接口技术 李全利 第三版 课后答案 xt4](https://img.taocdn.com/s3/m/0b99c1ea6f1aff00bed51eb9.png)
章4 80C51的汇编语言程序设计1.80C51单片机汇编语言有何特点?答:汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。
它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。
但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。
2.利用80C51单片机汇编语言进行程序设计的步骤如何?答:一、任务分析首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。
然后对系统的运行环境进行调研。
这是应用系统程序设计的基础和条件。
二、算法设计经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。
并对各种算法进行分析比较,并进行合理的优化。
三、流程描述程序的总体构建。
先要确定程序结构和数据形式,资源分配和参数计算等。
然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。
应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。
流程图可以分为总流程图和局部流程图。
总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。
3.常用的程序结构有哪几种?特点如何?答:顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的;分支程序:可以改变程序的执行顺序;循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。
4.子程序调用时,参数的传递方法有哪几种?利用累加器或寄存器;利用存储器;利用堆栈。
5.什么是伪指令?常用的伪指令功能如何?答:伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。
常用的伪指令包括:ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址;END,功能是结束汇编;DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据;DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间;EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名;BIT,功能是将位地址赋给指定的符号名。
第4章 80C51单片机汇编语言程序设计(新)
![第4章 80C51单片机汇编语言程序设计(新)](https://img.taocdn.com/s3/m/b474363d6294dd88d1d26b7b.png)
(1003H)=78H,
(100AH)=-2=0FEH
(1004H)=35H(5的ASCII码),
7
定义数据字命令 DW (Define Word)
在程序存储器中定义16位的数据字。
存放时,数据字的高8位在低地址,低8位在后
高地址。
DW
通常,DB用来定义<数Y1据,Y,2,D…W,Y用n>来定义地址。
机器编辑→交叉汇编→串行传送
*.ASM
地址 8000
8002
机器码 7820
7F07
标号 助记符指令
SORT: MOV R0,#20H
MOV 3
编辑、汇编
编辑:
编写程序的过程称为编辑。 机器编辑指借助于微型机进行单片机的程序设计,通常都是使用编
辑软件进行源程序的编辑。 编辑完成后,生成一个由汇编指令和伪指令构成的扩展名
一般用汇编语言编写的程序需要 预留存放数据的空间用伪指令定义好
然后编写程序代码 最后用原地踏步或返回起始位置循环作为结束。
【例】程序格式如下:
ORG … … SJMP $ END
14
汇编语言程序的基本结构形式
分支结构
使用条件转移指令对程序的执行结果进行判断
教学内容及要求
教学内容
汇编语言程序的基本结构形式、子程序结构形式 80C51单片机汇编语言伪指令 80C51单片机汇编语言程序设计举例
教学要求
掌握顺序结构程序、分支程序、循环程序和子程序等 结构程序的设计等
熟悉单片机汇编程序常用的伪指令 了解汇编语言程序的格式
汇编语言源程序的编辑和汇编
[<标号:>] DS <16位数表>
【例】ADDRTAB:DS 20 ;从标号ADDRTAB代表的地址开始,预留20个 ;连续的地址单元。
单片机汇编语言程序设计
![单片机汇编语言程序设计](https://img.taocdn.com/s3/m/534f33c96bd97f192379e91c.png)
6.定义空间指令DS
指令格式:
地址
ROM
[标号:]DS <表达式>
2000H
说明:DS伪指令是定义存储区,即从标
2001H 号指定的单元开始保留表达式所代表的
存储单元数。
2002H
【例】
2003H
ORG 2000H
单片机汇编语言程序设计
单片机汇编语言程序设计
1.1 源程序的编辑与汇编
1.源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用
的汇编命令(即伪指令),例如: ORG 0040H MOV A,#7FH MOV R1,#44H END
这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程 序的起止位置。编辑好的源程序应以.ASM扩展名存盘,以备汇编程序调 用。
这里使用的“字符名称”不是标号,不能用“:”来隔分隔符;其 中的“项”可以是一个数值,也可以是一个已经有定义的名字或可以求 值的表达式。该指令的功能是将一个数或特定的汇编符号赋予规定的字 符名称。用EQU指令赋值的字符名称可以用做数据地址、代码地址、位 地址或直接当做一个立即数使用。因此,给字符名称所赋的值可以是8 位二进制数,也可以是16位二进制数。
置循环初值
置循环初值
循环体
N 循环条件? Y
循环条件? Y
N 循环体
(a)先处理后判断方式
(b)先判断后处理方式
4.子程序结构 在汇编语言程序设计时,通过循环程序可以解决连续重复执行同
一程序段的问题,而对于不连续重复执行同一程序段的问题,为避免 重复编制程序,节省程序代码所占的存储空间,可将其编制成独立的 程序即子程序,在需要的位置采用特定的指令调用该子程序,执行后 再返回到调用位置继续执行后序程序指令。子程序调用是实现I/O操 作的重要方法。
80C51的汇编语言程序设计
![80C51的汇编语言程序设计](https://img.taocdn.com/s3/m/6cd7731efab069dc51220198.png)
.M51
映像文件
仿真调试
写入芯片
2021/6/4
10
MCS-51单片机汇编语言,包含两类不同性质的指令。
(❖1)基本指令(指令性语句):即指令系统中的指令。它们 都❖是机器能够执行的指令,每一条指令都有对应的机器码。 源程序的主要功能都是由指令性语句完成。
(2)伪指令(指示性语句):汇编时用于控制汇编的指令。 它们都是机器不执行的指令,无机器码。
MOV DPTR,STRT
标号为符号地址其值为8000H
2021/6/4
12
ORG 8000H START:MOV A,#30H
MOV R2,#20H ORG 8001H MOV A,#40H
结束汇编伪指令END END
该伪指令位于源程序的最后一行。
2021/6/4
13
定义字节数据表伪指令DB
1000H FEH
之间用逗号隔开。使用方法与DB类同。
大端模式
ORG 1400H DATA1:DW 324AH,3CH
……
2021/6/4
15
定义常值为符号名伪指令EQU
符号名 EQU 常值表达式
符号名可代表: ❖地址 ❖常数 ❖段名 ❖字符串 ❖寄存器名 ❖位名
比较:标号只能是地址
LEN EQU SUM EQU BLOCK EQU
SWAP A MOV 41H,A
;取数 ;屏蔽高4位 ;存低4位 ;再取 ;屏蔽低4位 ;高低4位交换 ;存高4位
01010110B 56H
01010110B 56H
——∧——0—0—00—1—11—1—B———0F—H—— 00000110B 06H
——∧——1—11—1—0—00—0—B———F—0—H—— 01010000B 50H
80C51单片机汇编语言程序设计PPT
![80C51单片机汇编语言程序设计PPT](https://img.taocdn.com/s3/m/fa475eb1783e0912a3162a41.png)
BRn: …
(2)通过转移指令表实现程序多分支
MOV A, n
RL A
;分支序号值乘以2
MOV DPTR, #BRTAB;转移指令表首址
JMP A+DPTR
BRTAB: AJMP BR0
;转分支程序0
AJMP BR1
;转分支程序1
BR0: … BR1: …
AJMP BR127
;转分支程序127 ;分支程序
;若(CY)=1,表明Ta<T54,转升温处理程序
FH: RET
;若T55≥Ta≥T54,则返回主程序
例:已知:127≥X≥-128,求Y。设X,Y分别存放在外部 RAM 1000H和2000H单元中。
解:(1)分析任务:解方程 (2)算法:控制转移 (3)程序结构:多分支
1
x0
y
1
x0
0
x0
EQU
1000H;
EQU
2000H;
1000H
DPTR, #XAD ;数据X的地址送数据指针DPTR
A,
DPTR; A←取数据X
SAV;
X=0转SAV
ACC.7, NEG; X<0转NEG,否则,X>0
A,
#01H;
SAV;
A,
#0FFH; (0FFH为-1补码)
DPTR, #BUF; 数据Y的地址送数据指针DPTR
DEC R0
DEC R1
MOV A, R0 ADDC A, R1;高字节带进位相加 MOV R0, A ;存高字节相加结果
CLR A ADDC A, #00H;进位送00H位保存 MOV R0, #20H;存放进位的单元地址
MOV R0, A
4.2.2 分支程序结构
第五章 80C51单片机的程序设计
![第五章 80C51单片机的程序设计](https://img.taocdn.com/s3/m/c094ed325a8102d276a22ff6.png)
其含义是标号等值于表达式,这里的标号和表达式 是不可少的。如 TTY EQU 1008H 又如: LOOP EQU TTY TTY已经赋值,那么LOOP=TTY 他们可以互换 用EQU给一个标号赋值后,在整个程序中该标号的 值固定不变,若需改变需用伪指令DL重新定义。
4.定义标号值伪指令DL DL和EQU 虽都是将表达式值赋予标号,但两 者有区别,就是DL可在同一源程序中给同一标号 赋予不同的值,而EQU不能。 5. 数据说明伪指令 数据说明伪指令的作用是把数据存入指定的存 储单元。 ①定义字节伪指令DB 标号 DB 表达式或表达式表 其含义是将表达式或表达式表表示的数据或数 据串存入从标号开始的连续存储单元中
用MOVC A, @A+DPTR指令实现
EGA COUNT ORG 1000H EQU 50H EQU 60H MOV COUNT,#00H MOV A , #00H MOV DPTR ,#ALPT PUST A MOVC A , @A+DPRT CJNE A , EGA , NF SJMP LAST POP A INC A INC COUNT SJMP LOOP INC COUNT RET END ORG 1100H DB‘A’,‘B’,…,‘Y’,‘Z’
• 基本思路是:先取出两 个数的低位字节相加, 将和存入40H,进位位 在CY中,然后再取出两 个数的高位字节,两个 高字节数和低位字节的 进位相加,和存入41H 单元。 • 由于在两次取数和存结 果时都要变化地址,且 地址是连续的,用地址 指针比较方便。所以用 R0指示被加数地址、R1 指示加数地址
01 04 09
偏移量=表首地址-(查表指令下一条指令地址) =1004H - 1003H =01H
单片机原理及应用 第五章 80C51单片机的程序设计
![单片机原理及应用 第五章 80C51单片机的程序设计](https://img.taocdn.com/s3/m/313457778e9951e79b89274d.png)
2.多分支选择结构 多分支选择结构 (1)结构类型 结构类型 (2)结构程序 结构程序 例如, 例如,由40H单元中动态运行结果值来选择 单元中动态运行结果值来选择 分支程序,其对应关系如: 分支程序,其对应关系如: (40H)=0,转处理程序 ,转处理程序0 (40H)=1,转处理程序 ,转处理程序1 ﹕ ﹕ (40H)=n,转处理程序 ,转处理程序n
ADDC 节 MOV CLR MOVC MOV CLR INC MOVC MOV RET
A,R4 ,
;DPH+查表参数高位字 查表参数高位字
DPH,A , 相加和存DPH ;相加和存 A ;清A A,@A+DPTR ;查表,读第一字节 查表, , R4,A 第一字节存入R4 , ;第一字节存入 A ;清A DPTR ;(DPTR)+1 ;( ) A,@A+DPTR ;查表,读第二字节 查表, , R5,A 第二字节存入R5 , ;第二字节存入 ;返回
TBPC2:DW 1230,1540,…;最大允许 : , , ; 额 定值 DW 2340,2430,…; , , ; DW 3210,3320,…; , , ; 设表中有1024个元素,每个元素为两个 个元素, 例2.设表中有 设表中有 个元素 字节,则表格总长为2048个字节。现按 个字节。 字节,则表格总长为 个字节 现按R4 和R5的内容从表格中查出对应的数据元素 的内容从表格中查出对应的数据元素 值,送存R4和R5中。程序如下: 送存 和 中 程序如下: TBDP1:MOV DPTR,#addr16 ;表格首 : , 地 址值送 DPTR
ljmploop0ljmploop1ljmploopn当分支数超过256个时则需用两个字节单元来存放选择参量并需对选择参量的高位字节进行处理即把它加到dph中去
(05)第五章 80C51单片机的程序设计(4)
![(05)第五章 80C51单片机的程序设计(4)](https://img.taocdn.com/s3/m/e2d427ef4afe04a1b071de99.png)
第 4讲Βιβλιοθήκη 15.3 C语言及其程序设计
① ② ③
语言简洁、紧凑,使用方便、灵活。 语言简洁、紧凑,使用方便、灵活。 运算符丰富。 运算符丰富。 数据结构丰富。 数据结构丰富 。 具有现代化语言的各种数据 结构。 结构。 可进行结构化程序设计。 可进行结构化程序设计。 可以直接对计算机硬件进行操作。 可以直接对计算机硬件进行操作。 生成的目标代码质量高,程序执行效率高。 生成的目标代码质量高,程序执行效率高。 可移植性好。 可移植性好。
现在支持MCS-51系列单片机的 语言编译器(C51) 现在支持MCS-51系列单片机的C语言编译器(C51) 系列单片机的C 有很多种, C语言目前最为流行 语言目前最为流行。 有很多种, Keil C语言目前最为流行。
3
5.3.1 Keil C语言
Keil C的语法规定、程序结构及程序设计方法都与标准的C语言程 C的语法规定 程序结构及程序设计方法都与标准的C 的语法规定、 序设计相同, C程序与标准的 程序在以下几个方面不一样: 程序与标准的C 序设计相同,但Keil C程序与标准的C程序在以下几个方面不一样: Keil C中定义的库函数和标准C语言定义的库函数不同。标准C C中定义的库函数和标准 语言定义的库函数不同。标准C 中定义的库函数和标准C ① 语言定义的库函数是按通用微型计算机来定义的, C中 语言定义的库函数是按通用微型计算机来定义的,而Keil C中 的库函数是按MCS-51单片机相应情况来定义的 单片机相应情况来定义的; 的库函数是按MCS-51单片机相应情况来定义的; ② Keil C中的数据类型与标准C的数据类型也有一定的区别,在 C中的数据类型与标准 的数据类型也有一定的区别, 中的数据类型与标准C Keil C中还增加了几种针对MCS-51单片机特有的数据类型; C中还增加了几种针对 中还增加了几种针对MCS-51单片机特有的数据类型; 单片机特有的数据类型 Keil C变量的存储模式与标准C中变量的存储模式不一样,Keil C变量的存储模式与标准 变量的存储模式与标准C 变量的存储模式不一样, ③ C中变量的存储模式是与MCS-51单片机的存储器紧密相关; 中变量的存储模式是与MCS-51单片机的存储器紧密相关 单片机的存储器紧密相关; Keil C与标准C在函数使用方面也有一定的区别, Keil C中有专 C与标准 在函数使用方面也有一定的区别, 与标准C C中有专 ④ 门的中断函数。 门的中断函数。 扩展关键字( 19个 ⑤ 扩展关键字(共19个):
《单片机应用技术》教学大纲
![《单片机应用技术》教学大纲](https://img.taocdn.com/s3/m/c87c686a1ed9ad51f01df252.png)
课程编号:064083课程名称:单片机应用技术(Application Technique of Single Chip Microcomputer)《单片机应用技术》教学大纲课程类别(专业基础课)适用专业电子信息工程、电子科学与技术专业及其相近专业开课学期 4 学分 4 总学时64 理论学时48与其他课程的联系:先修电路分析,模拟电路,数字电路,C语言建议教材何立民主编,张俊谟《单片机中级教材----原理与应用》,北京航空航天大学出版社,2006年主要参考书[1] 李鸿编著,《单片机原理及应用》,湖南大学出版社,2004年。
[2] 马家辰等编著,《MCS--51单片机原理及接口技术》,哈尔滨工业大学出版社,1998年。
[3] 诏俊杰等编著,《微型计算机原理与应用》,高等教育出版社,1993年。
[4] 周航慈著,《单片机程序设计基础》,北京航空航天大学出版社,2001年。
[5] 刘昌华编,《8051单片机的C语言应用程序设计与实践》,国防工业出版社,2008年。
一、课程的性质、地位和任务《单片机应用技术》课程是通信和电子信息工程类专业的一门重要课程。
单片机由于体积小、功能强、价格低,可广泛地箝入到诸如高档玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通信设备中,成为现代电子系统中最重要的智能化部件。
它也是电子类专业的必修专业限选课程,其实验教学不单独开课。
本课程的主要内容包括化学单片机指令系统、功能单元、程序设计、系统扩展、典型外围接口技术(打*内容不作统一要求)。
本课程的教学目的是:使学生掌握止前最流行的80C51单片机的结构、原理、以及较简单的单片机应用系统的设计方法,培养学生分析问题和解决问题的能力,为今后从事电子系统设计、电子技术开发打下良好的基础。
本课程的教学要求是:本课程是一门理论性和实践性均很强的课程,力求做到精选内容、保证基础和重点、加强概念、注重实用,面向电子技术的新发展,联系实际、配合实验与实践学环节,确保教学的效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)8
功能: 把 8 位二进制数表依次存入从标号开始的连续 的存储单元中。 标号区段可有可无,DB指令之后的 8 位二进制数 表是字节常数或用逗号隔开的字节串,也可以是用引
号括起来的ASCII码字符串
2018/7/11 第5章 汇编语言程序设计简介
例:
ORG 2000H
MOV SP, #60H
MOV R0, #2FH
MOV R2, # 0FFH
ORG伪指令说明其后面程序的目标代码在存储器
中存放的起始地址是2000H,
存储器地址
2000H
2003H
2018/7/11
75 81 60
78 2F
第5章 汇编语言程序设计简介 2005H 7A FF
DS 定义存储空间命令
格式:DS 表达式 功能:在汇编时,从指定地址开始保留DS之后表达式 的值所规定的存储单元以备后用。 例如:ORG 1000H DS DB 08H 30H,8AH
汇编后,从1000H保留8个单元,然后从1008H按DB命令 给内存赋值, 即(1008H)=30H
2018/7/11
2018/7/11 第5章 汇编语言程序设计简介
5.1.2 汇编语言语句的种类和格式
1. 指令种类 (1)指令语句 每一条指令语句在汇编时都产生一个指令代码— —机器码。 (2)伪指令语句 伪指令语句是为汇编服务的。在汇编时没有机器 代码与之对应。伪指令语句是控制汇编程序如何 完成汇编工作的指示,包括控制汇编程序的输入/ 输出,定义数据和符号,条件汇编,分配存储空 间等。这些指示信息就是伪指令。
2018/7/11 第5章 汇编语言程序设计简介
2.伪指令
伪指令 是 对汇编过程 起控制作用,但本身并没有对 应的机器代码的指令。
(1)汇编起始指令
指令格式为:
ORG
ORG nn
该指令的作用是指明后面的程序或数据块的起始地址 ,
它总是出现在每段源程序或数据块的开始。 式中, nn为 16
位地址, 汇编时nn确定了此语句后面第一条指令或第一个数 据的地址,此后的源程序或数据块就依次连续存放在以后的地 址内, 直到遇到另一个ORG指令为止。
2018/7/11 第5章 汇编语言程序设计简介
(5)汇编结束指令END
指令格式: [标号:] END
格式中标号以及END后面的地址或标号可有可无。
功能: 提供汇编结束标志。汇编程序遇到 END后就 停止汇编, 对 END以后的语句不予处理, 故 END应放在 程序的结束处。
一个字节)。
2018/7/11
(一个 ASCII字符相当于
第5章 汇编语言程序设计简介
例:ORG 1000H BUF1: DB 38H, 7FH, 80H
BUF2: DB 45H, 66H
ORG 伪指令指定了标号 BUF1 的地址为 1000H, 而 DB伪指令是将其后的二进制数表38H, 7FH, 80H依次存 放在1000H, 1001H, 1002H 3 个连续单元之中, BUF2也 是一个标号 , 其地址与前一条伪指令连续 , 即 1003H, 1004H地址单元中依次存放 45H, 66H。
的值则为02H。
2018/7/11
第5章 汇编语言程序设计简介
例:分析下段程序,试求2008H~200FH 单元的内容 ORG 2000H DS 08H DB 30H ,8AH ,10 , ‘B’ DW 54H ,1F80H
(2008H)=30H (2009H)=8AH (200AH)=0AH (200BH)=42H (200CH)=00H (200DH)=54H (200EH)=1FH (200FH)=80H
(1009H)=8AH
第5章 汇编语言程序设计简介
BIT 位地址符号命令
• 格式:字符名 BIT 位地址 • 功能:把BIT后的位地址值赋给字符名。其中字符名不 是标号,其后没有冒号,但字符名是必须的。 例如:A1 BIT P1.0
A2
BIT
02H
• 汇编后,P1口第0位的位地址90H就赋给了A1,而A2
2018/7/11 第5章 汇编语言程序设计简介
DW 定义字命令
ORG 1500H TABLE:DW 7234H,8AH,10H ┇ 经汇编后(1500H)=72H, (1501H)=34H, (1502H)=00H, (1503H)=8AH, (1504H)=00H, (1505H)=10H,
2018/7/11 第5章 汇编语言程序设计简介
(2)等值指令EQU
指令格式: 字符名称 EQU
例: PA8155 EQU 8001H ;即给标号PA8155赋值为8001H
使指令中的字符名称等价于给定的数字或汇编符号。
如果在程序中要多次使用到某一地址 , 由 EQU 指令将 其赋值给一个字符名称, 一旦需要对其进行变动 , 只要改 变EQU命令后面的数字即可。 注意:由 EQU等值的字符名称必须先赋值后使用 , 且在 同一个源程序中, 同一个标号只能赋值一次。
2018/7/11 第5章 汇编语言程序设计简介
(4)定义字指令DW
指令格式: [标号:] DW 16 该指令的功能与 DB相似, 区别仅在于从指定地址开 始存放的是指令中的 16 位数据, 而不是字节串。每个 16 位数据要占两个存储单元, 高8 位先存, 低 8 位后存, 这和
MCS -51指令中的16位数据存放顺序是一致的。
第5章 汇编语言程序设计简介
5.1 单片机程序设计语言概述 5.2 汇编语言基本结构
2018/7/11
第5章 汇编语言程序设计简介
第5章 汇编语言程序设计简介
5.1 单片机程序设计语言概述
2018/7/11
第5章 汇编语言程序设计简介
5.1.1 单片机常用的三种程序设计语言
• 机器语言 指直接用机器码编写程序、能够被计算机直接执 行的语言。 • 汇编语言 指用指令助记符代替机器码的编程语言 • 高级语言 广泛应用的高级语言是C语言,每当有新型单片 机推出时,都有相配套的C编译器加以支持。高 级语言编写程序的缺点是实时性不高,结构不紧 凑,编译后占用存储空间比较大,这一点在存储 器有限的单片机应用系统中没有优势。