单片机原理及其应用课件--第四章
合集下载
完美版课件资料单片机原理及应用第四章

确定字符名为确定的位地址(数值地址或符号地 址)值。
例:FLG BIT 00H FAST BIT 20H ┇ CLR FLG SETB FAST ┇
4.4 基本程序结构
4.4.1 顺序程序
顺序程序是指无分支、无循环结构的程序。 其执行流程是依指令在存储器中的存放顺序 进行的。
顺序程序是所有程序设计中最基本、最 简单,应用最多的程序结构。
CJNE A,30H,NE ;若两个数不相等,则转NE
SETB 7FH;若两个数相等,则7FH单元置1
AJMP OVER ;转OVER
NE: CLR 7FH
;7FH单元清零
OVER:SJMP $
[例] 设VAR 单元内有一自变量X,请按如 下条件编程求函数值Y并存入FUNC单元 中。
1 X 0 Y 0 X 0
五、字节数据定义伪指令 DB
格式:[标号:]DB 字节数据表。
功能是从标号指定的地址开始,在ROM中把数据 以字节数的形式存放在存储器单元中。一个数据 占一个存储单元。
例:FIRST: DB 73,04,53,38,00,46 SECON:DB 02H,36H,7AH,34H
六、字数据定义伪指令 DW
MOV R7,#08H ;R7存放循环次数
判断两个数相等的程序流程图
程序如下:
ORG 0100H
MOV DPTR,#2000H;地址指针指2000H单元
MOVX A,@DPTR ;(2000H)→A
MOV R0,A
;A→R0
MOV DPTR,#2001H;地址指针指2001H单元
MOVX A,@DPTR ;(2001H)→A
MOV 30H,R0
MOV A,#0FFH ; 若 X<0 , 则 -1→A , FFH为-1的补码
例:FLG BIT 00H FAST BIT 20H ┇ CLR FLG SETB FAST ┇
4.4 基本程序结构
4.4.1 顺序程序
顺序程序是指无分支、无循环结构的程序。 其执行流程是依指令在存储器中的存放顺序 进行的。
顺序程序是所有程序设计中最基本、最 简单,应用最多的程序结构。
CJNE A,30H,NE ;若两个数不相等,则转NE
SETB 7FH;若两个数相等,则7FH单元置1
AJMP OVER ;转OVER
NE: CLR 7FH
;7FH单元清零
OVER:SJMP $
[例] 设VAR 单元内有一自变量X,请按如 下条件编程求函数值Y并存入FUNC单元 中。
1 X 0 Y 0 X 0
五、字节数据定义伪指令 DB
格式:[标号:]DB 字节数据表。
功能是从标号指定的地址开始,在ROM中把数据 以字节数的形式存放在存储器单元中。一个数据 占一个存储单元。
例:FIRST: DB 73,04,53,38,00,46 SECON:DB 02H,36H,7AH,34H
六、字数据定义伪指令 DW
MOV R7,#08H ;R7存放循环次数
判断两个数相等的程序流程图
程序如下:
ORG 0100H
MOV DPTR,#2000H;地址指针指2000H单元
MOVX A,@DPTR ;(2000H)→A
MOV R0,A
;A→R0
MOV DPTR,#2001H;地址指针指2001H单元
MOVX A,@DPTR ;(2001H)→A
MOV 30H,R0
MOV A,#0FFH ; 若 X<0 , 则 -1→A , FFH为-1的补码
《单片机原理及应用》(张才华)811-8课件 第4章 中

Байду номын сангаас
• 4.1 中断基础知识
• 4.1.1 什么是中断
•
单片机的中断是指在正常执行某一程序过程中,由于内部或
外部的突发事件,CPU暂停执行此程序而转去处理突发事件(即
执行突发事件的中断服务程序),事件处理结束后返回主程序断
点处(被中断的下一条指令)继续执行。中断处理过程如图4-1所
示。
图4-1 中断处理过程示意图
图4-3 中断处理过程
• 4.3 中断应用实例
• 【例4-2】利用单片机的外部中断0响应按键开关的按键信号, 当有按键按下时,单片机响应中断,并使内部某变量加1,硬件电 路如图4-4所示。
图4-4 单片机外部中断检测按键电路图
• 4.1.2 为什么要引入中断机制
•
若单片机采用顺序结构运行,由于采用查询方式,CPU将不
停的检测外设信号的变化情况,占用了大量的CPU时间,效率很
低。引入中断机制后,CPU在执行某一程序的过程中,当CPU系统
内、外发生紧急情况时,可以要求CPU终止原工作的执行,转去
执行相应的紧急事件,待处理结束后,再回到原来被中断的地方
继续执行被打断的工作。
• 4.1.3 中断的优先级与嵌套
• 4.2 MCS-51的中断结构与控制
• 4.2.1 MCS-51的中断源及中断结构
• (一)中断源
•
向CPU发出中断请求的信号称为中断源。
• (二)中断结构
•
MCS-51系列单片机的中断系统结构如图4-2所示。
• 1.TCON中的中断标志位
• 2.SCON中的中断标志位 • 3.中断允许控制寄存器IE
• 4.中断优先级控制寄存器IP
图4-2 MCS-51中断结构
• 4.1 中断基础知识
• 4.1.1 什么是中断
•
单片机的中断是指在正常执行某一程序过程中,由于内部或
外部的突发事件,CPU暂停执行此程序而转去处理突发事件(即
执行突发事件的中断服务程序),事件处理结束后返回主程序断
点处(被中断的下一条指令)继续执行。中断处理过程如图4-1所
示。
图4-1 中断处理过程示意图
图4-3 中断处理过程
• 4.3 中断应用实例
• 【例4-2】利用单片机的外部中断0响应按键开关的按键信号, 当有按键按下时,单片机响应中断,并使内部某变量加1,硬件电 路如图4-4所示。
图4-4 单片机外部中断检测按键电路图
• 4.1.2 为什么要引入中断机制
•
若单片机采用顺序结构运行,由于采用查询方式,CPU将不
停的检测外设信号的变化情况,占用了大量的CPU时间,效率很
低。引入中断机制后,CPU在执行某一程序的过程中,当CPU系统
内、外发生紧急情况时,可以要求CPU终止原工作的执行,转去
执行相应的紧急事件,待处理结束后,再回到原来被中断的地方
继续执行被打断的工作。
• 4.1.3 中断的优先级与嵌套
• 4.2 MCS-51的中断结构与控制
• 4.2.1 MCS-51的中断源及中断结构
• (一)中断源
•
向CPU发出中断请求的信号称为中断源。
• (二)中断结构
•
MCS-51系列单片机的中断系统结构如图4-2所示。
• 1.TCON中的中断标志位
• 2.SCON中的中断标志位 • 3.中断允许控制寄存器IE
• 4.中断优先级控制寄存器IP
图4-2 MCS-51中断结构
《单片机原理与应用》全套课件 387p

~2 20 V
R4 1 0KΩ
+ C4
晶闸管 智能模块
5 4 3 2 1
+ OUT -
IN
1 00 μF
+12 V
(晶振电路、电源电路省略)
《单片机原理与应用》
课程简介:“单片机原理及应用 ”是一门实践性、
应用性很强的技术基础课,通过本课程的学习,使学 生较好地掌握MCS-51系列单片微型计算机的基本结构、 工作原理、接口技术和应用等方面的知识。掌握单片 机应用系统的设计和应用程序的设计方法,学习单片 机应用于工业测控等方面的基本技术。并通过实践环 节的学习,学会单片机应用系统的设计和调试方法。 为将来从事自动测控技术、智能电器、电子、检测等 工业领域相关工作,进行各种智能化电子产品的设计 和研发等提供技术准备,奠定坚实的技术基础。
AM PL IFE R
火 线
5V
5 0KΩ
独石电容
1 04
P 2 .0
3 4 BUT T E N J5 1 3 4 BUT T E N J6 1 3 4 BUT T E N J7 1 3 4 BUT T E N J8 1
独石电容
2
独石电容
1 04 1 04
P 2 .1
3 4 BUT T E N J9 1 3 4 BUT T E N J1 0 1 3 4 BUT T E N J1 1 1 3 4 BUT T E N J1 2 1
P 3 .3
1 3 P3. 3 (INT 1 ) (A1 5) P2. 7 2 8 1 4 P3. 4 (T 0 ) 1 5 P3. 5 (T 1 ) 1 6 P3. 6 (W R) 1 7 P3. 7 (RD) 1 8 XT AL 2 1 9 XT AL 1 2 0 GND IAP&ISP (A1 4) P2. 6 2 7 (A1 3) P2. 5 2 6 (A1 2) P2. 4 2 5 (A1 1) P2. 3 2 4 (A1 0) P2. 2 2 3 (A9 ) P2. 1 2 2 (A8 ) P2. 0 2 1
单片机原理与应用课件单片机原理与应用第四章

•
汇编程序遇到END 伪指令后即结束汇编。处于END 之后的程序,汇
编程序将不处理。
(3)字节数据定义伪指令DB
•
格式为:
• [标号:] DB 字节数据表 • • 功能是从标号指定的地址单元开始,在程序存储器中定义字节数据。 • DB “Hello World” • DB –2,–4,–6,5,10,18
机汇编语言的指令语句格式为: • [标号:] 指令助记符 [操作数1] [操作数2] [操作数3] [;注释]
• LOOP:MOV A,# 7FH ;A←7FH
• 一、标号 • 标号是指令语句的符号地址,用于引导对该语句的非顺序访问,通常可以
作为转移指令的操作数。
• 标号不能使用保留字,如指令助记符、寄存器符号名称、伪指令等; • 标号位于语句的开头位置,由字母、数字或其它特定字符组成,以字母开
用途
#include 包含一个源代码文件
#define 定义宏
#undef 取消已定义的宏
#if
如果给定条件为真,则编译下面代码
#elif
#endif #ifdef
如果前面的#if给定条件不为真,而当前条件为真 ,则编译下面代码 结束一个#if……#else条件编译块
如果宏已经定义,则编译下面代码
#ifndef #error
• 1.C51源程序的编辑 • #include<reg51.h> • #define LED P1 • unsigned int m; • void delay_ms(void); • void delay_us(void); • ... ...
//预处理命令,用于包含头文件,宏定义等
//全局变量说明 //函数1声明
单片机原理及应用——C51编程+Proteus仿真(第3版)课件第4章-keil与Proteus的使

图4-20 hex文件生成的提示信息
35
占用程序存储器共89字节。最后生成的.hex文件名为“流水灯.hex”,至 此,整个程序编译过程就结束了,生成的.hex文件就可在后面介绍的 Proteus环境下进行虚拟仿真时,装入单片机运行。
下面对用于编译、连接时的快捷按钮
与 作简要说明:
(1) 用于编译正在操作的文件。。
这些图标大多数是与菜单栏命令【Debug】下拉菜单中的各项子命令是 相对应的,只是快捷按钮图标要比下拉菜单使用起来更加方便快捷。
24
图4-15与图4-16中常用的快捷按钮图标的功能介绍图4-14中各个窗口的开与关。
25
(2)各调试功能的快捷按钮
片机可以运行的二进制文件(.hex格式文件),文件的扩展名为.hex。 (2)Select Folder for objects—选择最终的目标文件所在的文件夹,默认
与项目文件在同一文件夹中,通常选默认。 (3)Name of Executable—用于指定最终生成的目标文件的名字,默认与
项目文件相同,通常选默认。
(2) 按钮—用于编译修改过的文件,并生成相应的目标程序(.hex文 件),供单片机直接下载。
(3) 按钮—用于重新编译当前项目中的所有文件,并生成相应的目标 程序(.hex文件),供单片机直接下载。主要用在当项目文件有改动时 ,来全部重建整个项目。
36
因为一个项目不止一个文件,当有多个文件时,可用本按钮进行编译。 用C51编写的源代码程序不能直接使用,一定要对该源代码程序编译,生
窗口会出现一个空白的文件编辑画面,用户可在这里输入编写的程序源 代码。
11
(2)单击图4-1中快捷按钮
图4-7 建立新文件
(2)单击图4-1中快捷按钮 ,保存用户程序文件,这时会弹出如图4-8 所示窗口。,保存用户程序文件,这时会弹出如图4-8所示窗口。
35
占用程序存储器共89字节。最后生成的.hex文件名为“流水灯.hex”,至 此,整个程序编译过程就结束了,生成的.hex文件就可在后面介绍的 Proteus环境下进行虚拟仿真时,装入单片机运行。
下面对用于编译、连接时的快捷按钮
与 作简要说明:
(1) 用于编译正在操作的文件。。
这些图标大多数是与菜单栏命令【Debug】下拉菜单中的各项子命令是 相对应的,只是快捷按钮图标要比下拉菜单使用起来更加方便快捷。
24
图4-15与图4-16中常用的快捷按钮图标的功能介绍图4-14中各个窗口的开与关。
25
(2)各调试功能的快捷按钮
片机可以运行的二进制文件(.hex格式文件),文件的扩展名为.hex。 (2)Select Folder for objects—选择最终的目标文件所在的文件夹,默认
与项目文件在同一文件夹中,通常选默认。 (3)Name of Executable—用于指定最终生成的目标文件的名字,默认与
项目文件相同,通常选默认。
(2) 按钮—用于编译修改过的文件,并生成相应的目标程序(.hex文 件),供单片机直接下载。
(3) 按钮—用于重新编译当前项目中的所有文件,并生成相应的目标 程序(.hex文件),供单片机直接下载。主要用在当项目文件有改动时 ,来全部重建整个项目。
36
因为一个项目不止一个文件,当有多个文件时,可用本按钮进行编译。 用C51编写的源代码程序不能直接使用,一定要对该源代码程序编译,生
窗口会出现一个空白的文件编辑画面,用户可在这里输入编写的程序源 代码。
11
(2)单击图4-1中快捷按钮
图4-7 建立新文件
(2)单击图4-1中快捷按钮 ,保存用户程序文件,这时会弹出如图4-8 所示窗口。,保存用户程序文件,这时会弹出如图4-8所示窗口。
单片机原理及应用课件(第4讲)

Author: Zhanghaitao E_mail: zht_sir@
21
第4章 MCS-51单片机汇编语言程序设计
§4-7 数制转换程序
常见的数制转换主要有二进制数与十进制数之间的转换, 二进制与十六进制之间的转换
1.二进制数转换为十进制数
4.20 将R3中的二进制数转换为非压缩BCD数,存放在片 内R0指向的单元,结果放在60H开始的单元中。
13
第4章 MCS-51单片机汇编语言程序设计
例:
课堂练习: 9、设计一个将十六进制数转换成ASCII码的子 程序。设十六进制数存放在R0的低4位,要 求转换后的ASCII码送回R0中。 10、设片内RAM中以20H开始的单元,连续存 放10个非压缩BCD码,试将其转换成ASCII 码,存放到片内以50H开始的单元中。
Author: Zhanghaitao E_mail: zht_sir@
10
第4章 MCS-51单片机汇编语言程序设计
例:
课堂练习: 6、10个数,去掉一个最大值、一个最小值, 求剩余8个数的平均值。 7、试编程把以2000H为首地址的连续50个单 元的内容按升序排列,存放到以3000H为首 地址的存储区中。
E_mail: zht_sir@
20
第4章 MCS-51单片机汇编语言程序设计
§4-6 算术逻辑处理程序
4.除以2的倍数的处理
4-18. 假设自P0口输入8个数据,已经存在片内RAM60H开 始的单元中,求出这八个数据平均值,并将商放在R3、 R4中。
5.双字节无符号整数相乘
4-19. 设被乘数已经在R5、R4中,乘数已在R3、R2中,4 个字节的乘积存放在ADR指出的片内RAM的连续4个单 元中,地地址存放积得低位。
21
第4章 MCS-51单片机汇编语言程序设计
§4-7 数制转换程序
常见的数制转换主要有二进制数与十进制数之间的转换, 二进制与十六进制之间的转换
1.二进制数转换为十进制数
4.20 将R3中的二进制数转换为非压缩BCD数,存放在片 内R0指向的单元,结果放在60H开始的单元中。
13
第4章 MCS-51单片机汇编语言程序设计
例:
课堂练习: 9、设计一个将十六进制数转换成ASCII码的子 程序。设十六进制数存放在R0的低4位,要 求转换后的ASCII码送回R0中。 10、设片内RAM中以20H开始的单元,连续存 放10个非压缩BCD码,试将其转换成ASCII 码,存放到片内以50H开始的单元中。
Author: Zhanghaitao E_mail: zht_sir@
10
第4章 MCS-51单片机汇编语言程序设计
例:
课堂练习: 6、10个数,去掉一个最大值、一个最小值, 求剩余8个数的平均值。 7、试编程把以2000H为首地址的连续50个单 元的内容按升序排列,存放到以3000H为首 地址的存储区中。
E_mail: zht_sir@
20
第4章 MCS-51单片机汇编语言程序设计
§4-6 算术逻辑处理程序
4.除以2的倍数的处理
4-18. 假设自P0口输入8个数据,已经存在片内RAM60H开 始的单元中,求出这八个数据平均值,并将商放在R3、 R4中。
5.双字节无符号整数相乘
4-19. 设被乘数已经在R5、R4中,乘数已在R3、R2中,4 个字节的乘积存放在ADR指出的片内RAM的连续4个单 元中,地地址存放积得低位。
精品课件-单片机原理及应用系统设计-第4章

;
PUSH
DPL
;
保护现场, 将主程序中
; DPTR的低八位放入堆
MOV
DPTR, #TABLE
; 在子程
第四章 单片机程序设计语言
恢复现场,
MOVC A, @A+DPTR
POP
DPL
将主程序中DPTR
; ;
;的低八位从堆栈中弹出
POP 场, 将主程序中DPTR
DPH
; 恢复现
;的高八位从堆栈中弹出
图 4-8 循环程序的典型形式
第四章 单片机程序设计语言
【例 4-4】 冒泡程序。假设有N个数, 它们依次存放 于LIST地址开始的存储区域中, 将N个数比较大小后, 使它 们按照由小到大的顺序排列,
编写该程序的方法: 依次将相邻两个单元的内容作比较, 即第一个数和第二个数比较,第二个数和第三个数比 较, ……, 如果符合从小到大的顺序则不改变它们在内存 中的位置,否则交换它们之间的位置。如此反复比较, 直到 数列排序完成为止。
LJMP MAIN
;
MAIN: MOV A, X
XRL A, Y
; (X)与(Y)进行异或操作
JB ACC.7, NEXT1
; 累加器A的第7位
为1, 两个数
;符号不同, 转移到
第四章 单片机程序设计语言
MOV
CJNE
转移到NEQUAL
CLR
P1.0置0
S
MOV DXCE1COUNTER, #00H
; 将DXCE1COUNTER赋值为0
而如下的注释则给出了额外有用的信息:
JNZ PC Comm_Err
;
第四章 单片机程序设计语言
(2) 注释应与其描述的代码相近, 对单条语句的注释应 放在其上方或右方相邻位置, 不可放在下面, 如放于上方
单片机原理与应用技术(第2版)电子课件第4章

2、中断申请的撤除 3) 外部中断请求的撤除
外部中断可分为边沿触发型和电平触发型。
对于边沿触发的外部中断或,CPU在响应中断后,由硬件 自动清除其中断标志位IE0或IE1,无需采取其他措施。
对于电平触发的外部中断,其中断请求撤除的方法较为 复杂,只有通过硬件配合相应软件的方式 。
4.2 中断程序设计
2、编程举例 例4.2 用C语言对例4.1重新编程。
解:编程如下:
4.3 定时/计数器
4.3.1 定时/计数器的结构
8051单片机内部有两个 16 位的可编程定时/计数器,称为定时器0 (T0) 和定时器1(T1),可编程选择其用作定时器或计数器,其逻辑结构如图。
例4.1 在图4.3中,P1.4~P1.7接有 4个发光二极管,P1.0~P1.3接有4 个开关,消抖电路用于产生中断请 求信号,消抖电路的开关来回拨动 一次将产生一个下降沿信号,通过 向CPU申请中断,要求:初始发光 二极管全黑,每中断一次,P1.0~ P1.3所接的开关状态反映到发光二 极管上,且要求开关合上时对应发 光二极管亮。
机系统内、外的某种原因,当出现CPU以外的某种情况时,由 服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程 序的执行而转去执行相应的处理程序,待处理程序执行完毕后,
再返回继续执行原来被中断的程序。
2、中断的特点 ◆ 分时操作 ◆ 实时处理 ◆ 故障处理 3、中断系统的功能 ◆ 实现中断响应和中断返回 ◆ 实现优先权排队 ◆ 实现中断嵌套
第4章 中断系统、内部定时/计数器
• 4.1 中断系统 • 4.2 中断程序设计 • 4.3 定时/ • 4.4 定时/计数器的编程举例 • 小结
4.1 中断系统
4.1.1 中断系统概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
单片机原理及其应用
扬州大学
4.2 汇编语言程序设计
4.2.1 汇编语言程序设计步骤
4.2.2 汇编语言程序的汇编
4.2.3 顺序程序 4.2.4 分支程序 4.2.5 循环程序 4.2.6 子程序
4.2.7 查找程序
4.2.8 码制转换程序
4.2.9 程序举例
13
单片机原理及其应用
扬州大学
4.2.1 汇编语言程序设计步骤
11
单片机原理及其应用
扬州大学
ORG 1600H ABC: DW 1234H, 4567H (1600h 12H 34H 45H 67H)
5.DS :定义存储区命令 从指定的地址单元开始,保留一定数量存储单元。 ORG 1000H BASE: DS 50H 6.BIT:位定义命令 赋字符名为某个位地址值。 EA: BIT 0AFH 7.END:汇编结束命令 告知汇编程序源程序结束
1000H A, 40H ; 取数 A, #0,NZEAR ; 非零,转 NEGT ;(A)=0,转存结果 ACC.7,POSI ; (A)>0,转 A, #81H(原码); A ← -1 NEGT A,#1H ;A←1 41H,A ; 存结果 $ ; 暂停
27
单片机原理及其应用
扬州大学
3.多向分支程序设计举例
7
单片机原理及其应用
扬州大学
2.汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令) 组成的。汇编语言一般由四部分组成。 其典型的汇编语句格式如下:
标号: 操作码 START: MOV 操作数 A,30H ;注释 ;A←(30H)
8
单片机原理及其应用
扬州大学
MOV A, #0 ; 赋初值 (4-1) (p.69) MOV R1, #10 ;计数器赋初值 MOV R2, #00000011B LOOP: ADD A, R2 ;累加 DJNZ R1, LOOP HERE: SJMP HERE 标号:即符号地址,需要时加上。标号后加冒号;标号由 字母开头(1-8字符),标号不能与指令助记符、预定 义符号相同。 操作数:数值操作数,根据需要可用16进制 (后缀H)、10 进制、二进制 (后缀B) 表示。16进制数以A~F开头时, 前面要加’0’。 $符号的使用:程序最后一句可用 SJMP $ 代替。 注释:以分号开头,根据需要对于指令的作用加以解释。 9 START:
单片机原理及其应用
扬州大学
2.EQU :赋值命令 给标号赋予一个确定的数值。其它语句可以引用这 个标号 TTY: EQU 1080H
3.DB :定义数据字节命令 把数据以字节的形式存放在连续存储单元中。 ORG 1500H HERE: DB 56H,0A7H,35,‘A’ (1500h 56H A7H 23H 41H) 4.DW :定义数据字命令 按字的形式把数据存放在连续存储单元中。
17
单片机原理及其应用
扬州大学
4.2.3 顺序程序
顺序程序是一种最简单,最基本的程序。 特点:程序按编写的顺序依次往下执行每一 条指令,直到最后一条。 【例4.1】 将30H单元内的两位BCD码拆开并 转换成ASCII码,存入RAM两个单元中(低位 在31H,高位在32H)。 程序流程如图4-1所示。
扬州大学
【例4.5】(4-14)根据(31H 30H)的内容决定程序流向 (31H)<80 (p.90) JMP6: MOV DPTR,#TAB6 ; 转移指令表首地址 MOV A,30H ; 取低字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成低字节转移偏移量 MOV R3, A ; 暂存 MOV A, B ; A←低字节偏移量高8位 ADD A, DPH MOV DPH, A ; 加到DPH中 MOV A, 31H ; 取高字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成高字节转移偏移量 ADD A, DPH ; 加入DPH MOV DPH, A
21
开始
取数据X 求X2 暂存X2 取数据Y 求Y2 求X2+Y2 保存平方和
结束
图4-州大学
参考程序如下: ORG 2000H MOV A,30H MOV B,A MUL AB MOV R1,A MOV A,31H MOV B,A MUL AB ADD A,R1 MOV 32H,A SJMP $ END
1.分析问题 完成什么任务,解决什么问题;已知的数据,运算 精度和速度; 2.确定算法 用何种方法解决问题;多个算法的比较;怎样组织 数据;
3.设计程序流程图 把算法和解决问题的步骤具体化;通过流程图掌握 程序的总体结构;
14
单片机原理及其应用
扬州大学
4.分配内存单元和I/O端口地址 片内RAM划分:工作寄存器组;堆栈区;其它暂 存区和缓冲区等;片外RAM; 确定各I/O端口的地址 5.编写汇编语言源程序 按流程图编写源程序;程序通常由主程序、子程 序、中断服务程序等构成。 6.调试程序 对程序的各个部分分别调试;有些还要与硬件系 统连接后调试; 切记:编程不易,调试更难。 15 只有掌握了程序的调试、测试才算会编程。
单片机原理及其应用
扬州大学
4.1.3 伪指令
用汇编语言编写的程序必须经汇编(翻译)成机 器代码,单片机才可运行它。为了控制汇编程序如何 完成源程序的汇编过程并产生目标程序,需要在源程 序中加入汇编控制命令,即伪指令。 1.ORG :汇编起始地址命令 用来说明ORG指令以下程序段在存储器中存放的起 始地址。 例如 ORG 1000H START: MOV A,#20H MOV B,#30H ┇ 一个程序中可多次使用ORG指令,地址要由小到大 排列。 10
┇
; 转移指令表首地址 取分支转移参量送A 乘数3送B (3字节指令) 形成转移偏移量 暂存偏移量低8位 A←偏移量高8位 加到DPH中 取回偏移量低8位 分支跳转[PC ← (A)+(DPTR)]
TAB5: LJMP LJMP
┇
PRG0 PRG1
; 转移指令表
LJMP
PRGn
29
单片机原理及其应用
条件满足?
N
条件满足?
N B
Y A (a) A (b) K=? K=0 K=1 … K=n A0 A1 …… An
Y
(c)
图4-3 分支程序结构流程图
24
单片机原理及其应用
扬州大学
分支程序的设计要点如下: (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 2.双向分支程序设计举例 【例4.3】(4-12) 求符号函数的值 (p.88)
【例4.4】(4-13) 根据R2的值转向n个分支程序。(p.90) (R2)=0,转向PRG0; (R2)=1,转向PRG1;
┇
(R2)=n,转向PRGN; 解:利用JMP @A+DPTR 指令直接给PC赋值,使程 序实现转移。
28
单片机原理及其应用
扬州大学
参考程序如下: JMP6: MOV DPTR,#TAB5 MOV A,R2 ; MOV B,#3 ; MUL AB ; MOV R6, A ; MOV A, B ; ADD A, DPH MOV DPH, A ; MOV A, R6 ; JMP @A+DPTR ;
单片机原理及其应用
扬州大学
单片机原理接口及其应用
(Principle and Application of Single Chip Microcomputer)
1
单片机原理及其应用
扬州大学
第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章
概述 MCS-51单片机硬件结构 MCS-51寻址方式和指令系统 MCS-51汇编程序设计 中断系统 定时器/计数器及串行口 存储器扩展 接口电路扩展 应用举例
;取数 ;取低4位 ;转换成ASCII码 ;保存结果 ;取数 ;高4位与低4位互换 ;取低4位(原来的高4位) ;转换成ASCII码 ;保存结果
20
单片机原理及其应用
扬州大学
【例4.2】 设X、Y两个小于10的整数分别存于片内 30H、31H单元,试求两数的平方和并将结果存于 32H单元。
解:两数均小于10,故两数的平方和可存放于一个 字节,可利用乘法指令求平方。 程序流程如图4-2所示。
Y= 1 0 -1 X>0 X=0 X<0
解:X为有符号数,存在40H单元。Y存在41H单元。 程序流程如图4-4所示。
25
单片机原理及其应用
扬州大学
图4-4 例4.3程序流程图
26
单片机原理及其应用
扬州大学
参考程序如下: ORG MOV CJNE AJMP NZEAR: JNB MOV AJMP POSI: MOV NEGT: MOV SJMP END
30
单片机原理及其应用
扬州大学
MOV A , R3 JMP @A+DPTR ┇ TAB6: LJMP PRG0 LJMP PRG1 ┇ LJMP PRGn
18
开始 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 结束
图4-1 拆字程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H ANL A,#0FH ADD A,#30H MOV 31H,A MOV A,30H SWAP A ANL A,#0FH ADD A,#30H MOV 32H,A SJMP $ END
2
单片机原理及其应用
扬州大学
第4章 MCS-51汇编程序设计
4.1 汇编语言基本概念
4.2 汇编语言程序设计
单片机原理及其应用
扬州大学
4.2 汇编语言程序设计
4.2.1 汇编语言程序设计步骤
4.2.2 汇编语言程序的汇编
4.2.3 顺序程序 4.2.4 分支程序 4.2.5 循环程序 4.2.6 子程序
4.2.7 查找程序
4.2.8 码制转换程序
4.2.9 程序举例
13
单片机原理及其应用
扬州大学
4.2.1 汇编语言程序设计步骤
11
单片机原理及其应用
扬州大学
ORG 1600H ABC: DW 1234H, 4567H (1600h 12H 34H 45H 67H)
5.DS :定义存储区命令 从指定的地址单元开始,保留一定数量存储单元。 ORG 1000H BASE: DS 50H 6.BIT:位定义命令 赋字符名为某个位地址值。 EA: BIT 0AFH 7.END:汇编结束命令 告知汇编程序源程序结束
1000H A, 40H ; 取数 A, #0,NZEAR ; 非零,转 NEGT ;(A)=0,转存结果 ACC.7,POSI ; (A)>0,转 A, #81H(原码); A ← -1 NEGT A,#1H ;A←1 41H,A ; 存结果 $ ; 暂停
27
单片机原理及其应用
扬州大学
3.多向分支程序设计举例
7
单片机原理及其应用
扬州大学
2.汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令) 组成的。汇编语言一般由四部分组成。 其典型的汇编语句格式如下:
标号: 操作码 START: MOV 操作数 A,30H ;注释 ;A←(30H)
8
单片机原理及其应用
扬州大学
MOV A, #0 ; 赋初值 (4-1) (p.69) MOV R1, #10 ;计数器赋初值 MOV R2, #00000011B LOOP: ADD A, R2 ;累加 DJNZ R1, LOOP HERE: SJMP HERE 标号:即符号地址,需要时加上。标号后加冒号;标号由 字母开头(1-8字符),标号不能与指令助记符、预定 义符号相同。 操作数:数值操作数,根据需要可用16进制 (后缀H)、10 进制、二进制 (后缀B) 表示。16进制数以A~F开头时, 前面要加’0’。 $符号的使用:程序最后一句可用 SJMP $ 代替。 注释:以分号开头,根据需要对于指令的作用加以解释。 9 START:
单片机原理及其应用
扬州大学
2.EQU :赋值命令 给标号赋予一个确定的数值。其它语句可以引用这 个标号 TTY: EQU 1080H
3.DB :定义数据字节命令 把数据以字节的形式存放在连续存储单元中。 ORG 1500H HERE: DB 56H,0A7H,35,‘A’ (1500h 56H A7H 23H 41H) 4.DW :定义数据字命令 按字的形式把数据存放在连续存储单元中。
17
单片机原理及其应用
扬州大学
4.2.3 顺序程序
顺序程序是一种最简单,最基本的程序。 特点:程序按编写的顺序依次往下执行每一 条指令,直到最后一条。 【例4.1】 将30H单元内的两位BCD码拆开并 转换成ASCII码,存入RAM两个单元中(低位 在31H,高位在32H)。 程序流程如图4-1所示。
扬州大学
【例4.5】(4-14)根据(31H 30H)的内容决定程序流向 (31H)<80 (p.90) JMP6: MOV DPTR,#TAB6 ; 转移指令表首地址 MOV A,30H ; 取低字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成低字节转移偏移量 MOV R3, A ; 暂存 MOV A, B ; A←低字节偏移量高8位 ADD A, DPH MOV DPH, A ; 加到DPH中 MOV A, 31H ; 取高字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成高字节转移偏移量 ADD A, DPH ; 加入DPH MOV DPH, A
21
开始
取数据X 求X2 暂存X2 取数据Y 求Y2 求X2+Y2 保存平方和
结束
图4-州大学
参考程序如下: ORG 2000H MOV A,30H MOV B,A MUL AB MOV R1,A MOV A,31H MOV B,A MUL AB ADD A,R1 MOV 32H,A SJMP $ END
1.分析问题 完成什么任务,解决什么问题;已知的数据,运算 精度和速度; 2.确定算法 用何种方法解决问题;多个算法的比较;怎样组织 数据;
3.设计程序流程图 把算法和解决问题的步骤具体化;通过流程图掌握 程序的总体结构;
14
单片机原理及其应用
扬州大学
4.分配内存单元和I/O端口地址 片内RAM划分:工作寄存器组;堆栈区;其它暂 存区和缓冲区等;片外RAM; 确定各I/O端口的地址 5.编写汇编语言源程序 按流程图编写源程序;程序通常由主程序、子程 序、中断服务程序等构成。 6.调试程序 对程序的各个部分分别调试;有些还要与硬件系 统连接后调试; 切记:编程不易,调试更难。 15 只有掌握了程序的调试、测试才算会编程。
单片机原理及其应用
扬州大学
4.1.3 伪指令
用汇编语言编写的程序必须经汇编(翻译)成机 器代码,单片机才可运行它。为了控制汇编程序如何 完成源程序的汇编过程并产生目标程序,需要在源程 序中加入汇编控制命令,即伪指令。 1.ORG :汇编起始地址命令 用来说明ORG指令以下程序段在存储器中存放的起 始地址。 例如 ORG 1000H START: MOV A,#20H MOV B,#30H ┇ 一个程序中可多次使用ORG指令,地址要由小到大 排列。 10
┇
; 转移指令表首地址 取分支转移参量送A 乘数3送B (3字节指令) 形成转移偏移量 暂存偏移量低8位 A←偏移量高8位 加到DPH中 取回偏移量低8位 分支跳转[PC ← (A)+(DPTR)]
TAB5: LJMP LJMP
┇
PRG0 PRG1
; 转移指令表
LJMP
PRGn
29
单片机原理及其应用
条件满足?
N
条件满足?
N B
Y A (a) A (b) K=? K=0 K=1 … K=n A0 A1 …… An
Y
(c)
图4-3 分支程序结构流程图
24
单片机原理及其应用
扬州大学
分支程序的设计要点如下: (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 2.双向分支程序设计举例 【例4.3】(4-12) 求符号函数的值 (p.88)
【例4.4】(4-13) 根据R2的值转向n个分支程序。(p.90) (R2)=0,转向PRG0; (R2)=1,转向PRG1;
┇
(R2)=n,转向PRGN; 解:利用JMP @A+DPTR 指令直接给PC赋值,使程 序实现转移。
28
单片机原理及其应用
扬州大学
参考程序如下: JMP6: MOV DPTR,#TAB5 MOV A,R2 ; MOV B,#3 ; MUL AB ; MOV R6, A ; MOV A, B ; ADD A, DPH MOV DPH, A ; MOV A, R6 ; JMP @A+DPTR ;
单片机原理及其应用
扬州大学
单片机原理接口及其应用
(Principle and Application of Single Chip Microcomputer)
1
单片机原理及其应用
扬州大学
第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章
概述 MCS-51单片机硬件结构 MCS-51寻址方式和指令系统 MCS-51汇编程序设计 中断系统 定时器/计数器及串行口 存储器扩展 接口电路扩展 应用举例
;取数 ;取低4位 ;转换成ASCII码 ;保存结果 ;取数 ;高4位与低4位互换 ;取低4位(原来的高4位) ;转换成ASCII码 ;保存结果
20
单片机原理及其应用
扬州大学
【例4.2】 设X、Y两个小于10的整数分别存于片内 30H、31H单元,试求两数的平方和并将结果存于 32H单元。
解:两数均小于10,故两数的平方和可存放于一个 字节,可利用乘法指令求平方。 程序流程如图4-2所示。
Y= 1 0 -1 X>0 X=0 X<0
解:X为有符号数,存在40H单元。Y存在41H单元。 程序流程如图4-4所示。
25
单片机原理及其应用
扬州大学
图4-4 例4.3程序流程图
26
单片机原理及其应用
扬州大学
参考程序如下: ORG MOV CJNE AJMP NZEAR: JNB MOV AJMP POSI: MOV NEGT: MOV SJMP END
30
单片机原理及其应用
扬州大学
MOV A , R3 JMP @A+DPTR ┇ TAB6: LJMP PRG0 LJMP PRG1 ┇ LJMP PRGn
18
开始 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 结束
图4-1 拆字程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H ANL A,#0FH ADD A,#30H MOV 31H,A MOV A,30H SWAP A ANL A,#0FH ADD A,#30H MOV 32H,A SJMP $ END
2
单片机原理及其应用
扬州大学
第4章 MCS-51汇编程序设计
4.1 汇编语言基本概念
4.2 汇编语言程序设计