欢迎光临散文网 会员登陆 & 注册

51汇编Proteus仿真教程——5.编写LED流水灯汇编程序

2023-08-27 11:04 作者:电子厂人  | 我要投稿

详细介绍如何使用51汇编的Proteus仿真去实现LED流水灯。此教程只做操作过程,不具体解释每一步具体含义,以极简的方式,通过操作让你实现相关功能
前提条件:

①新建好相关的仿真工程,绘制好相关原理图

②学会了点亮LED

如果不具备以上条件,可以往回看相关教程

1、原理图如下,通过程序控制P0口,让LED间隔一定时间,按照顺序逐个点亮,从而实现流水灯效果。


2、流水灯子程序

;====================================================================

; LED流水灯子程序

; 名称:LEDRUN

; 输入:空

; 输出:空

; 功能:  控制LED像流水一样滚动逐个点亮

;====================================================================

LEDRUN:

MOV  LED ,#01H   ; 点亮第一颗LED

MOV  R0 ,#8    ; LED为8位,设置循环次数位8

LEDRUN1:

MOV  A  ,LED    ; 将LED的值赋给A

LCALL DELAY     ; 调用延时子程序,实现延时

RL  A       ; 将A中的值,循环左移一位

MOV  LED ,A     ; 从新将A的值赋给LED,实现点亮下一颗lLED

DJNZ R0 ,LEDRUN1 ; 将R0中的值减1,并跳转到LEDRUN1。当减到零退出,。(R0为8,即循环8次后退出)

RET

3、具体效果展示

 


4、整体个程序

;====================================================================

; 文件名称:main.asm

; 文件描述:汇编基本程序教程:LED流水灯

; 创建人:lsh  

; 创建日期: 2022.8.21

; 程序版本:1.0

; 完成日期:2022.8.21

;=========================修改记录=====================================

; 修改人:

; 修改内容:

; 修改时间:

;====================================================================

 

$NOMOD51

$INCLUDE (80C52.MCU)

; IO引脚定义

;====================================================================

LED  EQU  P0      ; 定义P0口为LED

;====================================================================

;====================================================================

      org   0000h

      jmp   Start        ; 跳转到程序开始入口

 

;====================================================================

; 主程序

;====================================================================

      org   0100h

Start:

;====================================================================

; 主程序的主循环

;====================================================================

Loop:           ;  程序主循环

LCALL LEDRUN      ;   调用LED流水灯子程序

    AJMP  Loop        ;  跳转到程序主循环开头

 

;====================================================================

;子程序

;====================================================================

; 延时子程序

; 名称:DELAY

; 输入:空

; 输出:空

; 功能:占用cpu,实现延时一段时间

;====================================================================

DELAY:

MOV  R0,#228

DELAY1:

MOV  R1,#20

DELAY2:

MOV  R2,#20

DJNZ R2,$

DJNZ R1,DELAY2

DJNZ R0,DELAY1

RET

;====================================================================

 

;====================================================================

; LED流水灯子程序

; 名称:LEDRUN

; 输入:空

; 输出:空

; 功能:  控制LED像流水一样滚动逐个点亮

;====================================================================

LEDRUN:

MOV  LED ,#01H   ; 点亮第一颗LED

MOV  R0 ,#8    ; LED为8位,设置循环次数位8

LEDRUN1:

MOV  A  ,LED    ; 将LED的值赋给A

LCALL DELAY     ; 调用延时子程序,实现延时

RL  A       ; 将A中的值,循环左移一位

MOV  LED ,A     ; 从新将A的值赋给LED,实现点亮下一颗lLED

DJNZ R0 ,LEDRUN1 ; 将R0中的值减1,并跳转到LEDRUN1。当减到零退出,。(R0为8,即循环8次后退出)

RET

;====================================================================

      END          ;   程序结束

;====================================================================

 

点赞、收藏加关注,下期不迷路!

 

一起学起来,让我们成为更优秀的自己!我们下期不见不散!


51汇编Proteus仿真教程——5.编写LED流水灯汇编程序的评论 (共 条)

分享到微博请遵守国家法律