单片机应用技术第四章

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 流程图如图4-5所示。
开始 初始化 循环初值:(A)=01H;(R7)=08H 循环左移一次;延时
(R7)-1
R7
否 (R7)=0?
#00H
是 P1
图4-5 项目实例1循环流程图
结束
15
• 程序如下: ORG 0000H
• 对应的C语言程序如下: #include"reg51.h"
MAIN: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 END
• 对应的C语言程序如下:
#include"reg51.h" sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7;
12
• 程序如下: ORG 0000H LJMP MAIN ORG 0030H
MAIN:MOV P1,#00H MOV P0,#0FFH JNB P0.0,LIANG MOV P1,#00H AJMP JIESHU
LIANG:MOV P1,#0FFH JIESHU:SJMP JIESHU
END
• 对应的C语言程序如下: #include"reg51.h" sbit P0_0=P0^0; void main(void) {
P0=0x0ff; if(P0_0==0)
P1=0x0ff; else P1=0x0; }
13
• 说明:延时子程序的延时实现
• 晶振频率为12MHZ时,一个机器周期为1μs。
指令部分
执行所用时间
DEL1:MOV R1,#100 ;1μs
DEL2:MOV R2,#250 ;1μs DJNZ R2,$ ;(2×250+1)+1μs
对应的C语言程序如下: #include"reg51.h" void main(void) {P1=0x0FF;}
8
• 解决方法二:用置位指令实现P1.0~P1.7引脚输
出高电平。
开始
• 流程图如图4-3 中b)图所示。
程序A
是 条件满足? 否
程序B1
程序B2
程序C 结束
9
• 程序如下: ORG 0000H LJMP MAIN ORG 0030H
void main(void) {
P1_0=1; P1_1=1; P1_2=1; P1_3=1; P1_4=1; P1_5=1; P1_6=1;
P1_7=1;
}
10
2. 若开关SW1闭合,则点亮发光二极管VL0;若 SW1处于打开状态则发光二极管全灭。
分析:从功能要求可以看出,具体的工作结果要靠开关 状态来确定,所以先判断开关状态然后根据不同状态 进入不同的处理程序。
4.1 程序设计基础知识
4.1.1 程序设计基本步骤和方法
1.基本步骤
• (1)分析系统设计任务和要求,确定算法。 • (2)确定系统解决方案的每个步骤,画出流程图。 • (3)根据流程图编写汇编语言程序。
2.常用的流程图符号
• (1)开始和结束符号:椭圆形 • (2)处理任务符号:矩形 • (3)判断符号:菱形 • (4)程序连接符号:圆圈 • (5)程序流向符号:箭头
DJNZ R1,DEL2
; 【(2×250+1)×100 + 1】×1μs=50301μs=50.301ms
RET
;
50301μs+2μs=50303μss=50.303ms
• 因此,这是软件延时50ms的延时子程序,显然延时时 间精度有限。
14
• 3. 发光二极管VL0~VL7依 次点亮1次。
• 分析:依次点亮就是发光二 极管一个接一个的亮,所以 可以先完成一个亮,然后利 用移位指令实现下一个亮; 依次循环这个过程即可。共 8个发光二极管,因此循环 8次。循环次数做为退出循 环的条件。
1.硬件需求分析及元件的确定
• (1)单片机最小系统够用,见图2.1。 晶振选用12MHZ。
• (2)P0口外部电路中要加上拉电阻10kΩ1/8W。 • (3)LED发光管二极管驱动电流为10mA左右,
P1端口的逻辑输出电流为15mA, 所以二极管直接接在P1端口即可。
6
2.硬件电路原理图:
7
4.2.2 软件需求分析及解决方案
图4-1 b)
3
• 3.循环结构 开始
程序A
循环初值
循环体
循环条件修改
是 循环条件满足? 否 程序B
结束
图4-1 c)
开始 程序A
循环初值
循环条件满足? 否 是 循环体
循环条件修改
程序B 结束
4
4.2 并行I/O口基本应用项目实例 ——流水灯花样控制
功能需求:实现单片机控制实现流水灯基本类型
一、功能分析: • 流水灯一般是指演示灯的花样动态显示,基本类型
有全亮、全灭、循环点亮等花样类型。根据要求基 本分为以下三个具体小功能来进行各种花样分析: (1)发光二极管VL0~VL7全亮 (2)若开关SW1处于闭合,则点亮发光二极管VL0 ; 若SW1处于打开状态则发光二极管全灭。 (3)八个发光二极管依次循环点亮。(1)
5
4.2.1 硬件需求分析与硬件电路的确定
1
4.1.1 程序设计基本步骤和方法
3.程序设计基本方法与技巧:
(1)基本方法

模块化程序设计
例如:显示、延时等。
(2)常用技巧

采用循环和子程序
2
4.1.2 程序结构分类
• 1.顺序结构
开始
开始 • 2.分支结构
程序A
程序A 程序B
是 条件满足? 否
程序B1
程序B2
程序C
结束
结束
图4-1 a)
(1)SW1闭合则P0.0=0,对应发光二极管全亮,P1口 送高电平数据#0FFH;
(2)SW1打开则P0.0=1,对应发光二极管全灭,P1口 送低电平数据#00H。 流程图如图4-4所示
11

LIANG #:0FFH送P1
开始 初始化
P0.0=0?
否 #00H送P1
等待实体语句
结束
图4-4项目实例1分支流Fra Baidu bibliotek图
1. VL0~VL7发光二极管全亮
• 分析:要VL0~VL7发光二极管全亮,则需在P1.0~P1.7引 脚输出高电平即可。
• 解决方法一:P1口送立即数#0FFH。
• 程序如下: ORG 0000H LJMP MAIN ORG 0030H
MAIN: MOV A, #0FFH MOV P1, A END
相关文档
最新文档