《51单片机应用开发从入门到精通》——2.2 跑马灯实例
本节书摘来自异步社区《51单片机应用开发从入门到精通》一书中的第2章,第2.2节,作者 张华杰,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.2 跑马灯实例
在上一节点亮1只LED的基础上,让我们来看看如何控制多只LED实现跑马灯效果。
2.2.1 硬件电路图
本实例中,硬件电路和上一节的硬件电路相似,为了实现跑马灯,本实例电路连接了8只LED,原理电路图如图2-2所示。
2.2.2 软件程序设计
控制多只LED实现跑马灯效果可以有多种实现方式,下面给出其中两种,请对比这两种实现方式的优劣。
1.程序全貌
首先,使用上节学习的直接寻址位置1指令SETB bit和直接寻址位清0指令CLR bit控制P1口实现跑马灯效果,以下为程序实例。
;-----------------------------------
; 跑马灯实例
;功能:循环轮流点亮8只发光管LED
;-----------------------------------
LED1_PIN EQU P1.0
LED2_PIN EQU P1.1
LED3_PIN EQU P1.2
LED4_PIN EQU P1.3
LED5_PIN EQU P1.4
LED6_PIN EQU P1.5
LED7_PIN EQU P1.6
LED8_PIN EQU P1.7
ORG 0000H ;伪指令,指定程序从0000H开始存放
LJMP MAIN ;跳转指令,程序跳转到MAIN处
ORG 0100H ;伪指令,指定以下程序从0100H开始存放
MAIN:MOV SP,#60H ;给堆栈指针赋初值MOV P1,#0FFH ;给P1赋初值,LED全灭 (1)
LIGHT: CLR LED1_PIN ;清零P1.0,LED1亮 (2)LCALL DELAY ;调延时子程序 (3)SETB LED1_PIN ;置一P1.0,LED1灭 (4)CLR LED2_PIN ;清零P1.1,LED2亮 (5)LCALL DELAY ;调延时子程序 (6)SETB LED2_PIN ;置一P1.1,LED2灭 (7)CLR LED3_PIN ;清零P1.2,LED3亮 (8)LCALL DELAY ;调延时子程序 (9)SETB LED3_PIN ;置一P1.2,LED3灭 (10)CLR LED4_PIN ;清零P1.3,LED4亮 (11)LCALL DELAY ;调延时子程序 (12)SETB LED4_PIN ;置一P1.3,LED4灭 (13)CLR LED5_PIN ;清零P1.4,LED5亮 (14)LCALL DELAY ;调延时子程序 (15)SETB LED5_PIN ;置一P1.4,LED5灭 (16)CLR LED6_PIN ;清零P1.5,LED6亮 (17)LCALL DELAY ;调延时子程序 (18)SETB LED6_PIN ;置一P1.5,LED6灭 (19)CLR LED7_PIN ;清零P1.6,LED7亮 (20)LCALL DELAY ;调延时子程序 (21)SETB LED7_PIN ;置一P1.6,LED7灭 (22)CLR LED8_PIN ;清零P1.7,LED8亮 (23)LCALL DELAY ;调延时子程序 (24)SETB LED8_PIN ;置一P1.7,LED8灭 (25)AJMP LIGHT ;跳转,程序继续 (26)
;延时子程序
DELAY: MOV R7,#10H
DELAY0: MOV R6,#7FH
DELAY1: MOV R5,#7FHDJNZ R5,$DJNZ R6,DELAY1DJNZ R7,DELAY0RET
END
本实例也可使用循环左移指令和循环右移指令来实现跑马灯效果,循环左移指令和循环右移指令的功能见表2-6。
(1)~(26)程序替换为如下程序,运行结果不变。
LIGHT:MOV R0,#08H ;给R0赋初值08H,循环右移8次MOV A,#0FEH ;给A赋初值0FEH,即11111110
LOOP:RR A ;右移1位 MOV P1,A ;输出显示 LCALL DELAY ;调延时子程序 DJNZ R0,LOOP ;循环右移8次SJMP LIGHT ;跳转,程序继续
2.运行结果
该实例的运行结果为8只LED循环轮流点亮。
2.2.3 技巧总结
本实例技巧总结如下:
- 同样的运行结果,使用合适的指令可以大大减少代码量,节省程序空间。
- 循环移位指令的应用——乘除法运算:左移1次 = 无符号数乘2运算,右移1次 = 有符号数除2运算。
《51单片机应用开发从入门到精通》——2.2 跑马灯实例相关推荐
- 《51单片机应用开发从入门到精通》——2.6 中断控制功能的作用
本节书摘来自异步社区<51单片机应用开发从入门到精通>一书中的第2章,第2.6节,作者 张华杰,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.6 中断控制功 ...
- 《51单片机应用开发从入门到精通》——1.1 单片机开发流程
本节书摘来异步社区<51单片机应用开发从入门到精通>一书中的第1章,第1.1节,作者:张华杰 ,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.1 单片机开发流 ...
- 《51单片机应用开发从入门到精通》——2.11 歌曲演奏实例
本节书摘来异步社区<51单片机应用开发从入门到精通>一书中的第2章,第2.11节,作者:张华杰 ,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.11 歌曲演奏 ...
- 51单片机STC 89C52RC进阶 – 两片74HC595D串联实现跑马灯
芯片概述(回忆) STC 89C52RC电气特性 管脚定义 管脚符号 管脚序号 管脚含义 备注 T2/P1.0 ~ P1.7 1 ~ 8 带内部上拉电阻的8位双向I/O口 可输入或输出数据.同时可做定 ...
- 51单片机程序开发入门知识
51单片机在我的理解上来说,就是遵循51指令集工作的芯片.他就像一台超微型的电脑,里面有内存.硬盘.CPU等基本配备. 而他所谓的CPU使用的就是51指令集,他的硬盘就是内置的Flash,他的内存也是 ...
- pythonweb开发-Python Web开发从入门到精通
Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...
- Mac版下实现51单片机进行开发的环境搭建
目录 前言 简单介绍一下51单片机吧 一.安装homebrew 二.内核编译器 sdcc 安装 三.安装CH341驱动 四.烧录程序stcgal的安装 1.python3下载安装并配置环境 2.验证是 ...
- [分享] 新书推荐 -《黑莓(BlackBerry)开发从入门到精通》 | 黑莓时光
今天看到一本刚出版不久的书,<黑莓(BlackBerry)开发从入门到精通>,属于技术类书籍,通过 18 章的内容,介绍了BlackBerry 开发平台简介.BlackBerry 开发平台 ...
- python web 开发教程下载_Python Web开发从入门到精通
Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...
最新文章
- 【Java挠头】Java异常、捕获、处理、throw、throws等绝妙剖析
- java hive 查询语句,使用java连接hive,并执行hive语句详解
- MySQL百一题库_「灵魂拷问」MySQL面试高频一百问(工程师方向)
- .Net Crank性能测试入门
- 最惨2019:超300家创业公司死亡名录
- 没有一款趁手的数据监控软件?试一下NetData不,用了你就绝对离不开他!
- Python numpy基础知识
- 信安从业者认证一览【建议收藏】
- 表达式类型错误oracle,PL/SQL编译错误 - PLS-00382:表达式类型错误
- K8S学习之Statefulset
- Windows程序设计-剪贴板
- 用Websocket聊天完整demo,做笔记用,各位大佬多多指教
- 机器学习笔记 - 使用Keras Tuner进行自动化超参数调整
- 浅谈游戏数据分析---留存篇一-留存折损
- 牛客网剑指offer(Python版)
- SQL Server数据库T-SQL学习
- Golang和HTTPS在网站前端接入里的作用
- 山东大学单片机原理与应用实验 C语言程序实验
- 何海涛算法面试题感悟之四:二元树…
- 哈工大 计算机系统 大作业 2021春