简介:
详细介绍如何使用Proteus,编写51汇编程序,通过延时实现LED的闪烁,
前提条件:
①安装好Proteus软件,如果不会安装或没有安装包,可以私信联系我,获取安装包和安装教程
②新建好项目工程,绘制好时钟电路
③绘制好LED电路,并学会编写程序点亮LED
④更多操作请看往期精彩内容
1.原理图如下所示,原理图绘制可以观看往期内容。
2. 引脚定义,定义P0口为LED,并跳转到程序入口
; IO引脚定义
LED EQU P0 ; 定义P0口为LED
org 0000h
jmp Start ; 跳转到程序开始入口
3. 主程序:调用延时子程序,不断点亮和熄灭LED,实现LED的闪烁
org 0100h
Start:
Loop: ; 程序主循环
MOV LED,#0FFH ; 点亮LED
LCALL DELAY ; 调用延时子程序,延时一段时间
MOV LED,#0H ; 关闭LED
LCALL DELAY ; 调用延时子程序,延时一段时间
AJMP Loop ; 跳转到程序主循环开头
4. 延时子程序:通过占用CPU达到延时
;==========================================================; 延时子程序
; 名称:DELAY
; 输入:空
; 输出:空
; 功能:占用cpu,实现延时一段时间
;==========================================================DELAY:
MOV R0,#228
DELAY1:
MOV R1,#20
DELAY2:
MOV R2,#20
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
5. 整体程序
;====================================================================
; 文件名称:main.asm
; 文件描述:汇编基本程序教程——LED闪烁
; 创建人:lsh
; 创建日期: 2022.8.14
; 修改人:lsh
; 程序版本:1.0
; 完成日期:2022.8.15
; 修改内容:
; ①编写延时子程序
;====================================================================
$NOMOD51
$INCLUDE (80C52.MCU)
; IO引脚定义
LED EQU P0 ; 定义P0口为LED
org 0000h
jmp Start ; 跳转到程序开始入口
org 0100h
Start:
Loop: ; 程序主循环
MOV LED,#0FFH ; 点亮LED
LCALL DELAY ; 调用延时子程序,延时一段时间
MOV LED,#0H ; 关闭LED
LCALL DELAY ; 调用延时子程序,延时一段时间
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
END ; 程序结束
点赞、收藏加关注,下期不迷路!
一起学起来,让我们成为更优秀的自己!我们下期不见不散!