单片机课件第四章
合集下载
单片机讲稿第四章精品PPT课件
振荡器脉冲
机器周期脉冲 Tcy
光源
光接
收器
定时器/计数器有四种工作方式,由工作方式控制寄存器 TMOD和控制寄存器TCON设定。
(1)工作方式控制寄存器 TMOD
M1 M0 00 01 1 13 位定时器 /计数器(TH 的 8 位和 TL 的低 5 位 ) 16 位定时器/计数器 (TH 的 8 位和 TL 的 8位 ) 自动重装入初值的 8 位定时器/计数器 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作
第四章 单片机的定时器/计数器和中 断系统
4.1 单片机的定时器/计数器
定时器/计数器的结构与应用
MCS - 51单片机的内部结构
计数脉冲输入
时钟源
4K ROM (EPROM)
SFR, 128 字节RAM
定时器/计 数器0、1
CPU
并行I / O 接口 P0 P1 P2 P3
串行接口
中断系 统
定时器/计数器是MCS-51单片机的重要功能模块之一。 在检测、控制及智能仪器等应用中,常用定时器做实时时钟, 实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲, 驱动步进电动机一类的电气机械。计数器主要用于外部事件 计数。
Y P1.0取反 TH0,TL0赋初值
程序流程框图
2、方式 1
T0或T1 构成16位定时器或计数器 ● 如希望T0工作于方式1定时时,TMOD设为如下命令字
000 1 ● 如希望T0工作于方式1计数时,TMOD设为如下命令字
010 1
● 同样在定时器/计数器T0、 T1 定时或计数前,在相应的寄存 器TH0、TL0, TH1、TL1中要赋予初值。
运行。其结构机器如周下期:
机器周期脉冲 Tcy
光源
光接
收器
定时器/计数器有四种工作方式,由工作方式控制寄存器 TMOD和控制寄存器TCON设定。
(1)工作方式控制寄存器 TMOD
M1 M0 00 01 1 13 位定时器 /计数器(TH 的 8 位和 TL 的低 5 位 ) 16 位定时器/计数器 (TH 的 8 位和 TL 的 8位 ) 自动重装入初值的 8 位定时器/计数器 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作
第四章 单片机的定时器/计数器和中 断系统
4.1 单片机的定时器/计数器
定时器/计数器的结构与应用
MCS - 51单片机的内部结构
计数脉冲输入
时钟源
4K ROM (EPROM)
SFR, 128 字节RAM
定时器/计 数器0、1
CPU
并行I / O 接口 P0 P1 P2 P3
串行接口
中断系 统
定时器/计数器是MCS-51单片机的重要功能模块之一。 在检测、控制及智能仪器等应用中,常用定时器做实时时钟, 实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲, 驱动步进电动机一类的电气机械。计数器主要用于外部事件 计数。
Y P1.0取反 TH0,TL0赋初值
程序流程框图
2、方式 1
T0或T1 构成16位定时器或计数器 ● 如希望T0工作于方式1定时时,TMOD设为如下命令字
000 1 ● 如希望T0工作于方式1计数时,TMOD设为如下命令字
010 1
● 同样在定时器/计数器T0、 T1 定时或计数前,在相应的寄存 器TH0、TL0, TH1、TL1中要赋予初值。
运行。其结构机器如周下期:
MCS51单片机原理课件(第四章)
各个中断源在程序存储器中的中断入口地址如下: 中断源 入口地址(ROM中) INT0(外部中断0) 0003H TF0(T0中断) 000BH INT1(外部中断1) 0013H TFl(T1中断) 001BH RI/TI(串行口中断) 0023H
比如对于外部中断1的响应,系统自动产生 的长调用指令为: LCALL 0013H 由于各个中断入口地址相隔甚近,不便于存放各 个较长的中断服务程序,故通常在中断入口地址 开始的二三个单元中,安排一条转移类指令,以 转入到安排在那儿的中断服务程序。 比如对外中断1的响应,我们可以在ROM中地址 为0013H的单元中放入一条长调用指令: LCALL 3000H(转移到用户所编制的中断服务 程序中去
单片机在每个机器周期的S5P2期间,顺序采样每 个中断源,CPU在下一个机器周期S6期间按优先 级顺序查询中断标志,如查询到某个中断标志为 1,将在再下一个机器周期S1期间按优先级进行 中断处理。 中断得到响应后自动清除中断标志,由硬件将程 序计数器PC内容压入堆栈保护,然后将对应的中 断地址装入程序计数器PC,使程序转向中断向量 地址单元中去执行相应的中断服务程序。
8DH 8BH 8AH 89H 88H
IT0和IT1 选择外部中断请求INT0和INT1为跳沿触 发或电平触发方式的控制位 其值为1:下降沿触发 为0:电平触发 IE0和IE1 外部中断INT0和INT1的中断请求标志位 TF0和TF1 51片内定时器/计数器T0和T1的中断请 求标志位。当T0、T1的最高位产生溢出时将向 CPU申请中断。
ORG 中断入口地址
LJMP INT
MAIN: 主程序 INT: 中断程序
中断服务程序的流程
单片机第4章课件
24
单片机原理与应用
(5)绘制程序流程图
程序流程图是用规定的图形 符号配以文字说明来表示算法或 处理问题的步骤,它具有直观、 易懂的特点,是程序结构设计的 有力工具。
25
单片机原理与应用
程序流程图符号
常用的程序流程图符号如图4-2所示。
图4-2 常用的程序流程图符号
26
单片机原理与应用
程序流程图符号说明:
5
单片机原理与应用
1.起始汇编伪指令
指令格式:ORG 表达式 指令功能:用于向汇编程序说明下面紧接的 程序段或数据段从表达式指定的起始地址开 始存放。表达式通常为十六位地址或自定义 的标号地址。 通常每一个汇编语言源程序的开始,都 要 设 置 一 条 ORG 伪 指 令 来 指 定 该 程 序 在 ROM中存放的起始位置。可以在源程序中使 用多条ORG伪指令来规定不同程序段或数据 段存放的起始地址,但要求地址值由小到大 顺序排列,不允许空间重叠。
139
DB 0FEH, 06H, 20H, 00H, 0FFH, 06H, 20H, 15H
DB 0EFH, 06H, 25H, 00H, 0FFH, 06H, 40H, 00H ……
15
单片机原理与应用
说明:
编号为 135的 DB伪指令的功能是指示汇编 程序从上一条指令(RET)存放完成后的下一 个 ROM 单元开始,依次存入 10 个字形码。该 条伪指令一行写不下,所以分成两条 DB 伪指 令来书写; 编号为 138的 DB伪指令的功能则是从它上 一条ORG伪指令指定的1010H单元开始,依次 存入数据表中的控制码。表项较多,所以用多 条DB伪指令来书写。
DATA: DW …… 0759H 3295H, 2800H, 0BDH,
单片机原理与应用课件单片机原理与应用第四章
•
汇编程序遇到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声明
(单片机完整课件PPT)第四章
访问 SFR 的 数据类型
例:
bit a1; unsigned char a2; unsigned int a3; unsigned char *a4; unsigned int *a5; a1=0; //位a1为0 a2=0x20; //字节变量a2=20h a3=0x1234; //整型(字)变量a3=1234h a4=0x30; //a4指向内RAM30h单元 a5=0x2000; //a5指向外RAM2000h单元
注意:
Unsigned char code a[10]={0,1,4,9,16,25,36,49,64,81}; Main() {unsigned char x,y; x=3; y=a[x];
a[3]=5;
定义表格数据, 存放在ROM里
}
Unsigned char a[10]={0,1,4,9,16,25,36,49,64,81}; Main() {unsigned char x,y; x=3; y=a[x]; a[3]=5; }
单片机原理与应用技术
厦门理工学院电子与电气工程系 陈志英
第四章 单片机C语言程序设计
4.1 C51的一般格式 4.2 51单片机的C51定义 4.3 C51程序设计简单举例
4.1 C51的一般格式
C程序(.C) 汇编程序(.ASM) 指令代码(.BIN)
C编译器 汇编器
C编译器
C51
FRANKLIN C51 KEIL C51 格式基本相同,可以兼容
数 据 类 型 data/idata/pdata 指针型 code/xdata 通用指针 sbit SFR SFR16
长度/位 8 16 24 1 8 16
字节数 1 2 3 — 1 2
单片机51第四章PPT
C语言指令集
C语言编写的指令集,每条指令对应一个C语言函数或语句,如mov(a, data)表示 将立即数data送入变量a。
04 单片机51的编程语言
CHAPTER
汇编语言
汇编语言是低级语言,与硬件 紧密相关,可以直接控制硬件
。
汇编语言执行速度快,适用于 对速度要求高的场合。
汇编语言代码可读性差,编写 和维护困难。
在此添加您的文本16字
特点
在此添加您的文本16字
8位处理器,运算速度快。
在此添加您的文本16字
丰富的指令集,支持多种寻址方式。
在此添加您的文本16字
内部集成多种功能模块,如ADC、DAC、PWM等。
在此添加您的文本16字
可通过外部扩展实现更多功能。
单片机51的应用领域
智能仪表
用于各种工业自动化仪表的测 量和控制。
在关键位置设置断点,暂停程序的执行, 检查程序状态。
06 单片机51的应用实例
CHAPTERLED闪烁程序总结词实现LED灯的闪烁功能
详细描述
通过单片机51的IO口控制LED灯的亮灭,实现LED灯的闪烁效果。具体实现方 法包括使用定时器中断或延时函数,控制LED灯的亮灭时间,以达到闪烁效果。
数码管显示程序
存储器
程序存储器
用于存储程序代码,包括指令和数据。
数据存储器
用于存储数据,包括工作寄存器和堆栈。
特殊功能寄存器
用于控制单片机各个部分的工作状态和参数设置。
输入/输出接口
输入接口
接收外部信号或数据,并将其转换为单片机可以处理的电平信号。
输出接口
将单片机处理后的电平信号输出到外部设备或电路。
输入/输出端口
C语言编写的指令集,每条指令对应一个C语言函数或语句,如mov(a, data)表示 将立即数data送入变量a。
04 单片机51的编程语言
CHAPTER
汇编语言
汇编语言是低级语言,与硬件 紧密相关,可以直接控制硬件
。
汇编语言执行速度快,适用于 对速度要求高的场合。
汇编语言代码可读性差,编写 和维护困难。
在此添加您的文本16字
特点
在此添加您的文本16字
8位处理器,运算速度快。
在此添加您的文本16字
丰富的指令集,支持多种寻址方式。
在此添加您的文本16字
内部集成多种功能模块,如ADC、DAC、PWM等。
在此添加您的文本16字
可通过外部扩展实现更多功能。
单片机51的应用领域
智能仪表
用于各种工业自动化仪表的测 量和控制。
在关键位置设置断点,暂停程序的执行, 检查程序状态。
06 单片机51的应用实例
CHAPTERLED闪烁程序总结词实现LED灯的闪烁功能
详细描述
通过单片机51的IO口控制LED灯的亮灭,实现LED灯的闪烁效果。具体实现方 法包括使用定时器中断或延时函数,控制LED灯的亮灭时间,以达到闪烁效果。
数码管显示程序
存储器
程序存储器
用于存储程序代码,包括指令和数据。
数据存储器
用于存储数据,包括工作寄存器和堆栈。
特殊功能寄存器
用于控制单片机各个部分的工作状态和参数设置。
输入/输出接口
输入接口
接收外部信号或数据,并将其转换为单片机可以处理的电平信号。
输出接口
将单片机处理后的电平信号输出到外部设备或电路。
输入/输出端口
精品课件-单片机原理及应用系统设计-第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) 注释应与其描述的代码相近, 对单条语句的注释应 放在其上方或右方相邻位置, 不可放在下面, 如放于上方
单片机课件-第四章
数据类型
理解并掌握C语言中的基本数据类型, 如int、char、float等。
控制结构
掌握C语言中的控制结构,如if语句、 switch语句等。
函数
了解和掌握函数的定义、声明和调用。
汇编语言与C语言的混合编程
混合编程的必要性
理解混合编程在单片机开 发中的重要性,如提高开 发效率、降低开发难度等。
混合编程的方法
常用指令集
单片机常用的一些基本指令集包括MOV、 ADD、SUB、INC、DEC、CMP等。
01
ADD指令用于将两个数相加并将结果存储 在目标地址中;
03
02
MOV指令用于将一个数据从一个地址移动到 另一个地址;
04
SUB指令用于从源地址中的值减去目标地 址中的值;
INC和DEC指令分别用于增加和减少目标 地址中的值;
算术运算指令用于实现加、减、乘、除 等算术运算,如ADD、SUB、MUL、 DIV等。
逻辑运算指令用于实现与、或、非等逻 辑运算,如AND、OR、XOR等。
指令格式与寻址方式
01
单片机的指令格式一般包括操作 码和操作数两部分,操作码指定 要执行的操作类型,操作数指定 要操作的数据或数据地址。
02
寻址方式用于确定操作数的有效 地址,不同的寻址方式对应不同 的地址确定方式。
单片机概述
单片机的定义与特点
定义
单片机是一种集成电路芯片,它集成 了中央处理器、存储器、输入输出接 口等计算机的主要部件,形成一个完 整的微型计算机系统。
特点
单片机具有体积小、重量轻、功耗低 、可靠性高、价格便宜等特点,广泛 应用于智能仪表、智能家居、智能机 器人等领域。
单片机的应用领域
单片机原理与应用技术(第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 中断系统概述
单片机课件第4章
2. 设计程序
MOV TMOD , #00H;设定T0的工作方式 SETB TR0;启动T0工作 LOOP: MOV TH0 , #0F0H;给定时器T0送初值 MOV TL0 , #0CH LOOP1: JNB TF0 , $;$为当前指令指针地址 CLR TF0 CPL P1.0 SJMP LOOP
4.4.3 方式2的应用
【例4-3】 用定时器T1产生500us的定时。由P1.0 输出周期为1ms的方波(设时钟频率为6MHZ)。 1ms的方波,可用定时器产生500us的定时,每 隔500us改变一次P1.0的电平。
1. 确定计数初值 由于时钟频率为6MHZ,所以,机器周期 为:12/fosc=2µs t=(28-T1初值) 机器周期
由于时钟频率为6MHZ,所以,机器周期 为:12/fosc=2µs t=(213-T0初值) 机器周期 当t=1ms时,(213-T0初值) 2 10-6=1 10-3 解得: T0初值=7692=1111000001100B
高8位11110000B=0F0H赋给TH0, 低5位01100B=0CH赋给TL0。
2. TF1:定时器T1溢出标志位。当定时器T1溢出时, 由硬件自动使TF1置1,并向CPU申请中断。 CPU响应中断后,自动对TF1清零。TF1也可 以用软件查询和清零。
3. TF0:定时器T0溢出标志位。功能与TF1相同。 4. TR0:定时器T0运行控制位。功能与TR1相同。
IE1: 外部中断1请求标志位。 IT1: 外部中断1触发方式控制位。 IE0: 外部中断0请求标志位。 IT0: 外部中断0触发方式控制位。
当t= 500us时,(28-T1初值) 2 10-6=500 10-6
解得: T1初值=06H 06H赋给TL1, 06H同时赋给TH1。
单片机第四章课件
470 L7
2
1
20P
19 18
XTAL1 XTAL2
GND 20P +5V + 4.7u 9
RESET
1k INT0 MCS-51
图4-2
二、并行口基本知识 MCS—51系列单片机芯片内部集成有四个并行I/O口(P0~ P3),共32条I/O线,每一个I/O线都能独立地用作输入或输 出。8位同时使用可实现8位数据同时传送。 (一)并行I/O口的功能 1.P0~P3口的第一功能: 作通用输入/输出口,用于连接外部设备。 2.P0、P2、P3口的第二功能 P0、P2口用于扩展外部总线
图4-3 MCS—51单片机片外三总线的扩展方法
P3口引 脚 P3.0 P3.1 P3.2 P3.3
第二功能 RXD(串行口输入端) TXD(串行口输出端) (外部中断0输入)
P3口 引脚 P3.4 P3.5
第二功能
T0(定时器0外部输入)
T1(定时器1外部输入) (外部数据存储器写脉冲输出)
INT 0
+5V
10K 10K
20P
19 18
XTAL1 XTAL2
K1 K2
GND 20P
+5V 4.7u 9 RESET
2.流水灯控制 (P1口接 个发光二极管 每隔 秒轮流点亮一个 流水灯控制 口接8个发光二极管 每隔0.1秒轮流点亮一个 口接 个发光二极管,每隔 发光二极管。) 发光二极管。
+5V 470 L0 2 1 1 2 3 4 5 6 7 8 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 ALE
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y=x+5
2016/1/27
30
ORG 1000H START:MOV A,30H JZ NEXT ;x=0,转移 ANL A,#80H ;保留符号位 JZ ED ;x>0,转移 MOV A,#05H ;x<0,不转移 ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED:SJMP $
;高4位BCD码转换位ASCII码
2016/1/27
23
例:设两个16位数据分别存在23H、22H和33H、 32H单元,求二者之和,并送入43H和42H单元。
2016/1/27
24
4.2.2
分支程序
分支程序可根据要求无条件或条件地改变程序执行 流向。编写分支程序主要在于正确使用转移指令。分支 程序有:单分支结构、双分支结构、多分支结构(散转)
2016/1/27
6
4.1.2
编制程序的步骤
1.任务分析(硬件、软件系统分析)
2.确定算法和工作步骤; 3.程序总体设计和流程图绘制 关于流程图符号: 开始、结束----圆角矩形 工作任务----矩形 判断分支----菱形 程序流向---程序连接---2016/1/27
开始
结束
7
4. 分配内存,确定程序与数据区存放地址; 5. 编写源程序; 6. 调试、修改,最终确定程序。
2016/1/27
47
例 在P1.0脚产生20ms的方波信号。(利用子程序)
2016/1/27
48
2016/1/27
49
4.2.5 查表程序
用于查表的指令有两条: ⑴ MOVC A,@A+DPTR ⑵ MOVC A,@A+PC
当用DPTR作基址寄存器时,查表的步骤分三步: ① 基址值(表格首地址)→DPTR; ② 变址值(表中要查的项与表格首地址之间的 间隔字节数)→A; ③ 执行MOVC A,@A+DPTR。
2016/1/27
37
DEL: MOV R7,#200 DEL1:MOV R6,#123 NOP DJNZ R6,$ DJNZ R7,DEL1 RET
;1MC ;1MC ;1MC ;2MC ;2MC ;2MC
延时时间:t=1+200[(1+1+2*123)+2]+2 ≈50000us=50ms
2016/1/27 38
A+30HA
A(22H)
2016/1/27
结束
22
源程序
ORG 2000H MOV R0,#21H MOV @R0,#0 MOV A,20H XCHD A,@R0 ORL 21H,#30H SWAP A ORL A,#30H MOV 22H,A END
;清21H单元
;低4位BCD码送21H单元, ;低4位BCD码转换位ASCII码
子程序
所谓调用子程序,暂时中断主程序的执行,而 转到子程序的入口地址去执行子程序。
LCALL SUB
RET
图 子程序的调用与返回
2016/1/27 41
子程序设计优点: ① 提高编程效率; ② 程序逻辑结构简单,便于阅读; ③ 缩短程序长度,节省存储空间 ④ 使程序模块化、通用化,便于交流共享资源 ⑤ 便于按照某种功能调试。
2016/1/27 33
4.2.3
循环程序
循环程序一般由: 初始化部分 循环体部分--处理部分、修改部分、控制部分 结束部分 其结构一般有两种: 先进入处理部分,再控制循环 • 至少执行一次循环体 先控制循环,再进入处理部分 • 循环体是否执行,取决于判断结果。
2016/1/27 34
开始 设置循环初值 循环处理
2016/1/27 50
【例】 要求将30H中的显示数字转换为显示字段码 并通过P1口输出。已知共阴字段码表首址为TABD。
2016/1/27 43
LCALL A LCALL B
RET
RET
图 子程序的嵌套调用与返回
2016/1/27
44
2016/1/27
45
例:将20H单元开始存放的10个数据每隔2ms,从P1 口输出。
2016/1/27
46
例 内部RAM 20H单元开始存有8个数,试找出其 中最大的数,送入MAX单元。(利用子程序)
注:表达式必须为16位地址值。程序中可以有多条ORG语句, 但定义的起始地址既不要交叉,也不要重叠必须从小地址向 大地址分配程序所占空间。
2016/1/27
12
END
程序结束伪指令
注:一定放在程序末尾!
EQU 格式: 例: AA K1
2016/1/27
赋值伪指令 字符名称 EQU 30H EQU 40H MOV A,AA MOV A,K1 EQU 数值或汇编符号
2016/1/27
42
子程序设计时注意事项: 1. 给子程序赋一个名字。实际为入口地址代号。 2. 要能正确传递参数: 入口条件:子程序中要处理的数据如何给予。 出口条件:子程序处理结果如何存放。 (寄存器、存储器、堆栈方式) 3. 保护与恢复现场: 保护现场:压栈指令PUSH 恢复现场:弹出指令POP 4. 子程序可以嵌套
2016/1/27
8
4.1.3
方法技巧
1. 模块化设计(按功能分:显示、打
印、输入、发送等)
2. 尽量采用循环及子程序结构(节省内存)
2016/1/27
9
4.1.4
汇编语言的规范
1. 汇编语言源程序由以下两种指令构成
汇编语句(指令语句) 伪指令(指示性语句)
2. 汇编语句的格式:
标号: 操作码 操作数 ;注释
2016/1/27
16
4.2 简单程序设计
程序结构一般采用以下三种基本控制结构,即顺序结构、分 支结构和循环结构来组成,再加上使用广泛的子程序及查表程序, 共有五种基本结构。
2016/1/27
17
4.2.1 顺序结构程序设计
顺序结构是按照逻辑操作顺序,从某一条指令开始逐条 顺序执行,直至某一条指令为止。 也称为简单程序或直线 程序。 Ø 特点: 从第一条指令开始依次执行每一条指令,直到程 序执行完毕,中间没有转移指令,没有分支。 只有一个入口一个出口。
DW 从指定单元开始定义(存储)若干个字的数据 或ASCII码字符。 格式:DW 字常数或ASCII字符 例: ORG DW DW 2000H 1234H,’B’ 0AH,20
15
2016/1/27
BIT 位地址符号指令。 把位地址赋于规定的字符名称。 格式:字符名称 例: ABC QQ BIT BIT P1.1 P3.2 BIT 位地址
第四章 汇编语言程序设计
通过前面的学习,我们已经了解了单片机内部的 结构,MCS-51指令系统的寻址方式、各类指令的格式 及功能。 下面我们就是要如何利用MCS-51的指令系统,来 编写高效、充分利用其特点的程序。
2016/1/27
1
§4.1
4.1.1
概述
程序设计语言
1. 机器语言
2. 汇编语言
3. 高级语言
2016/1/27 31
例已知电路如图所示,要求实现:
①
S0单独按下, 红灯亮,其余灯灭; ② S1单独按下, 绿灯亮,其余灯灭; ③ 其余情况, 黄灯亮。
2016/1/27
32
解:程序如下 SGNL:ANL P1,#11100011B;红绿黄灯灭 ORL P1,#00000011B;置P1.0、P1.1输入态, P1.5~P1.7状态不变 SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判S1 JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮 YELW:SETB P1.4 ;黄灯亮 CLR P1.2 ;红灯灭 CLR P1.3 ;绿灯灭 SJMP SL0 ;转循环 SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮 GREN:SETB P1.3 ;绿灯亮 CLR P1.2 ;红灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 RED: SETB P1.2 ;红灯亮 CLR P1.3 ;绿灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环
例、设在片外RAM中的TAB处开始有一个ASCII 码字符串,该字符串以0结束,编程将它们从P1口输 出.
2016/1/27
39
例、设在片外RAM中的2000H单元处开始有一个数据块, 数据块长度100,试统计正数、负数及零的个数,分别存在 30H、32H和32H单元。
2016/1/27
40
4.2.4
条件成立?
N Y N 条件成立? Y
程序段A 程序段A
程序段A
下条指令
单分支结构
2016/1/27
双分支结构
25
0 1 程序段0 程序段1
K=?
n 程序段n
多分支结构
2016/1/27
26
例、已知X、Y均为8位二进制有符号数,分别存 在30H.31H中,试编制能实现下列符号函数的程 序:
2016/1/27
数据表示形式: 二进制(B)、十六进制(H)、十进制(D或省略)、 ASCII码(以单引号标识)
2016/1/27 10
3.伪指令:控制汇编用的特殊指令,这些指令不属 于指令系统,不产生机器代码。
2016/1/27
11
常用的伪指令
ORG 汇编起始地址
格式:ORG 表达式 如:ORG 0000H
; (30H)→A ;(40H)→A
13
DB 从指定单元开始定义(存储)若干个字节的数 据或ASCII码字符,常用于定义数据常数表。