基于51单片机的汇编程序:拨码开关控制八位LED实现流水灯
-03-08,51单片机学习笔记
功能
打开K1循环左移,打开K2循环右移,打开K3两侧到中心来回点亮,打开K4单双数位置交替点亮。拨码开关优先级:K1>K2>K3>K4。
视频展示
【用汇编写流水灯:基于51单片机的拨码开关控制八位LED流水灯实验】
开发环境
Keil C51
硬件连接方式
STC89C52RC
外设
描述
P1.0 ~ P1.7
LED1 ~ LED8
八位共阳极发光二极管
P3.4 ~ P3.7
KEY1 ~ KEY4
独立拨码开关
汇编代码
; LED点亮方式:低电平点亮;打开K1循环左移,打开K2循环右移,打开K3两侧到中心来回点亮,打开K4单双数位置交替点亮KEY1BITP3.4KEY2BITP3.5KEY3BITP3.6KEY4BITP3.7ORG 0000HAJMPMAINORG 0030HMAIN:MOVA,#0FEHK1: JB KEY1,K2MOVP1,AACALLDELAY_1SRLASJMPK1K2: JB KEY2,K3MOVP1,AACALLDELAY_1SRRASJMPK2K3:JBKEY3,K4MOV A,#07EH MOVP1,AACALLDELAY_1SJBKEY3,K4MOVA,#0BDHMOVP1,AACALLDELAY_1SJBKEY3,K4MOVA,#0DBHMOVP1,AACALLDELAY_1SJBKEY3,K4MOVA,#0E7HMOVP1,AACALLDELAY_1SJBKEY3,K4MOVA,#0DBHMOVP1,AACALLDELAY_1SJBKEY3,K4MOVA,#0BDHMOVP1,AACALLDELAY_1SJBKEY3,K4SJMPK3K4:JBKEY4,OVERMOVA,#55HMOVP1,AACALLDELAY_1SJBKEY4,OVERMOVA,#0AAHMOVP1,AACALLDELAY_1SJBKEY4,OVERSJMPK4OVER:MOVA,#0FEHAJMPK1DELAY_1S:MOVR5,#20DL1:MOVR6,#100DL0:MOVR7,#248DJNZR7,$;寄存器R7减1,不为零转移到当前地址DJNZR6,DL0 ;寄存器R6减1,不为零转移到DL0DJNZR5,DL1 ;寄存器R5减1,不为零转移到DL1RET ;R7从250减到0时,R6减1,R6从100减到0时,R5减1,R5从20减到0时,子程序返回END
写在最后:
本文仅为个人学习笔记,纰漏之处,欢迎斧正!