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

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:
MOV A,R0 ;用于K1按下之后恢复原来状态
RR A
JNB P3.1,K1 ;K1按下跳转至K1
JNB P3.0,K2 ;K2按下跳转至K2
LJMP BEGIN

K1:
MOV P2,#0FFH
JNB P3.1,$ ;按下则保持原理状态(即熄灭)
LJMP LOOP

K2:
RR A ;右移一位
MOV P2,A
ACALL DELAY
JNB P3.0,K2 ;按下则继续右移
MOV FLAG,#1
LJMP LOOP ;不按下时继续左移

DELAY_20: ;9ms延时,去抖时用
MOV R1,#9
LP1:ACALL DE1
DJNZ R1,LP1
RET
DE1:
MOV R5,#250
DE2:
NOP
NOP
DJNZ R5,DE2
RET

DELAY: ;1秒延时
MOV R1,#250
DE5:
ACALL DE3
ACALL DE3
ACALL DE3
ACALL DE3
DJNZ R1,DE5
RET
DE3:
MOV R5,#250
DE4:
NOP
NOP
DJNZ R5,DE4
RET
END

51汇编按键控制霓虹灯程序设计相关推荐

  1. 【Proteus仿真】51单片机+按键控制步进电机驱动+LCD1602显示

    [Proteus仿真]51单片机+按键控制步进电机驱动+LCD1602显示 Proteus仿真 在Proteus当中,步进电机选取的不同,接线的顺序不同,为了避免在接线出错,将里面的两种步进电机都选择 ...

  2. 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...

  3. 51单片机 按键控制LED流水灯模式

    本章博客实现按键控制LED流水灯模式的功能 1.将之前文件中Delay.c.h复制过来,进行添加 2.模块化编程 3.main.c #include <REGX52.H> #include ...

  4. 51单片机按键控制数码管0~9_(51单片机)课设项目1-按键控制步进电机转向、转速、启停。...

    总体设计方案 硬件部分实现电机转动和数码管显示,包括控制开关模块.电机转动模块.数码管显示模块.软件部分实现对步进电机的控制功能,主要设计思想通过控制程序的开关来控制电机的转动启停.方向.速度.电源驱 ...

  5. 51单片机—按键控制点阵显示

    名称:按键控制 8X8LED 点阵屏显 示图形 说明:每次按下 K1 时,会使 8X8LED 点阵屏循环显示不同图形.本例同时使用外部中断和定 时中断 #include"reg52.h&qu ...

  6. 51单片机按键控制流水灯

    1.按键的使用 <1>独立按键的原理图 按键所对应的引脚为P3的0.1.2.3引脚口,并且这里总共有四个独立按键,它们公共的一段都接到了GND电源的负极.这样我们就知道按键上电的默认电平为 ...

  7. 51单片机按键控制数码管0~9_51单片机外部中断

    前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...

  8. 51单片机按键控制输出pwm的占空比

    之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机.这样做的话不但麻烦.效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯 ...

  9. 51单片机按键控制数码管0~9_AT89C51单片机数字电子钟的设计

    一. 设计目的与要求 设计目的:通过设计,培养运用已学知识解决实际问题的能力.查阅资料的能力.自学能力和独立分析问题.解决问题的能力和能通过独立思考. 设计要求:设计一个时.分可调的数字电子钟.断电后 ...

最新文章

  1. 【复盘】升级打怪第一关,冲啊!
  2. Nature:全球表层土微生物组群落结构和功能
  3. 动物界的再生一个故事
  4. Webserver管理系列:11、注意默认的隐含共享
  5. 哈尔滨工业大学计算机学院官网,哈尔滨工业大学计算机学院 唐好选 tanghx@hope.hit...
  6. java的linux执行的shell
  7. 那个傻子的网站突然打不开虚拟光驱
  8. 大公司or小公司,我该怎么选?
  9. Profile配置和加载配置文件
  10. Vue之设置背景图片
  11. C++编程语言中类对象的赋值与复制介绍(一)
  12. idea非活动变更列表中的文件被修改,IntellJ IDEA中的更改列表是什么?一个变化列表比较什么?寻求准确的解释...
  13. 使用病毒数据库离线更新包
  14. 水泥电阻,常用电阻 阻值表
  15. ubuntu linux 批量删除文件
  16. 3ds Max 文件修改版本工具
  17. win11怎么更改图片格式 Windows11更改图片格式的步骤方法
  18. python实现12306抢票,春节不用担心买不到票回家了
  19. 智力题:13 个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球?
  20. android studio如何连接到MUMU模拟器

热门文章

  1. 从零开始的AI绘画:MidJourney带你掌握AI绘画的基础和高级技巧
  2. latex极限符号怎么打_LaTeX常用篇(二)---上下标/分式/根式/求和/连乘/极限/积分/希腊字母...
  3. Prophet中文文档
  4. css3 卡片亮光_9种纯CSS3人物信息卡片动态展示效果
  5. 代码随想录算法训练营day07| 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
  6. 代码随想录算法训练营第七天 | 454.四数相加II ,383. 赎金信 ,15. 三数之和,18. 四数之和
  7. 【Linux系列】添加系统调用
  8. c语言tchar转char,CString、TCHAR*、char*转换
  9. 买一个密码只需55美分 网络安全真是浮云?
  10. mysql批量更新语句