您的位置:首页 > 其它

LED_1_3(按键多模式控制流水灯)

2017-10-02 15:38 267 查看
测试平台:清翔8051单片机

编译器:Keil5

任务描述:用汇编语言控制一个发光二极管(LED)闪烁

涉及硬件电路原理图:
















程序清单:

;

;  ******************************************************************************

;  * @file    main.asm

;  * @author  Chen Bing

;  * @version V1.0

;  * @date    28-September-2017

;  * @brief   This file provides all the main.asm

;  ******************************************************************************

;  * @attention

;  *

;  * This project code is for personal learning only, and can be freely

;  * transplanted and modified, but this statement must be retained. Any changes

;  * occurred during the transplantOther immeasurable BUG, I am not responsible!!!

;  * No commercial!!!

;  ******************************************************************************

;

;-----------------按键控制流水灯------------------;

;----------------------------------------------------------
ORG 0000H
MOV P1, #0FFH
MOV P3, #0FFH

S1: JB P3.0, S2 ;判断第一个按键是否按下,按下调用XS1
LCALL XS1

S2: JB P3.1, S3
;判断第二个按键是否按下,按下调用XS2
LCALL XS2

S3: JB P3.2, S4
;判断第三个按键是否按下,按下调用XS3
LCALL XS3

S4: JB P3.3, S1
;判断第四个按键是否按下,按下调用XS4
LCALL XS4

SJMP S1;
;执行完后返回重新判断按键

;XS1子程序:利用循环左移指令控制LED从右至左逐个点亮

XS1:MOV A, #0FEH
MOV R2, #8
;循环次数

M1: MOV P1, A
;A通过P1输出
RL A ;A中的数据左移
LCALL DELAY
DJNZ R2, M1
;判断是否到循环次数
RET ;子程序返回

;XS2子程序:利用循环右移指令控制LED从左至右逐个点亮

XS2:MOV A, #7FH
MOV R2, #8

M2: MOV P1, A
RR A ;A中的数据右移
LCALL DELAY
DJNZ R2, M2
RET

;XS3子程序:利用查表指令控制LED无序显示

XS3:CLR A

XSM1: MOV 40H, A
;40H单元暂存所取表格位数,0位开始
 MOV DPTR, #TAB
;DPTR指向数据表格首地址
 
LOOP: MOVC A, @ A+ DPTR ;根据A+DPTR的地址查表取数并保存至A
 MOV P1, A
 LCALL DELAY
 INC 40H
;所取表格位数加一
 MOV A, 40H
;40H单元送至A中
 CJNE A, #08H,LOOP
;判断循环次数是否到8次
 RET
 
TAB:  DB 34H,54H,69H,88H,8AH
 DB 6BH,72H,5CH,9AH,25H
 
;XS4子程序:利用数据传送指令控制LED对称成对熄灭

XS4:MOV R2, #4 ;保存循环次数

M4: MOV P1, #81H
LCALL DELAY
MOV P1, #42H
LCALL DELAY
MOV P1, #24H
LCALL DELAY
MOV P1, #18H
LCALL DELAY
DJNZ R2, M4
RET

DELAY: MOV R7, 0FFH

L1: MOV R6, #0FFH

L2: NOP
NOP
DJNZ R6, L2
DJNZ R7, L1
RET

END

工程截图:









 

 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编语言 单片机