51汇编按键控制霓虹灯程序设计

  • Post author:
  • Post category:其他


@第一次在这里写博客呀~~我也是最近才学单片机的



51汇编按键控制霓虹灯程序设计


问题描述

:用P2口控制8个LED,实现跑马灯程序,用软件延时实现1秒的扫描周期。

按键K1(P3.0)、K2(P3.1)作为输入。

K1(P3.1)作为跑马灯的启停控制,松开时跑马灯运行,按下时跑马灯熄灭;

K2(P3.0)作为跑马灯的方式选择,松开时跑马灯左移,按下时跑马灯右移。

晶体振荡器频率为12MHz




源码如下

FLAG EQU R7 ;标志位,用于跳过右移结束时多余的延时

ORG 0000H

AJMP BEGIN

ORG 0100H

BEGIN:

MOV P3,#0FFH ;P3口置1

MOV A,#0FEH

MOV R7,#0

LOOP:

MOV P2,A ;左移

RL A

CJNE FLAG,#0,FLAG2 ;K2松开时可以不停留一秒直接转到下一个灯亮

FLAG1:

ACALL DELAY

FLAG2:

MOV FLAG,#0

MOV R0,A

MOV A,P3 ;读入键盘状态

CJNE A,#0FFH,LOOP1 ;判断是否有按键按下 CJNE比较不等跳

MOV A,R0

JMP LOOP ;没有按键按下则等待

LOOP1: ;消除按键抖动

ACALL DELAY_20 ;延时去抖

MOV A,P3 ;重新读入键盘状态

CJNE A,#0FFH,LOOP2 ;非误读则跳转

LJMP LOOP ; 误读情况,继续等待

LOOP2:

MO



版权声明:本文为MISS_FEI_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。