找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2327|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机汇编学习例程(1)——KEY篇

[复制链接]
跳转到指定楼层
楼主
1.ASM1_KEY:       按键控制LED亮灭,3种情况

  1. /**
  2. ******************************************************************************
  3. *         @file            asm.asm
  4. *         @author          Alex——小白
  5. *         @version         V1.0
  6. *         @date            2019.9.1
  7. *         @brief           3种方法实现KEY to LED
  8. ******************************************************************************
  9. *         @attention        All Rights Reserved  
  10. **/

  11.                 ORG     0030H                        ;程序执行的起始地址                                
  12.                 LJMP          Main                        ;跳转到main函数
  13.                 ORG     0100H                        ;程序跳转到0100H开始执行
  14. ;方法1:
  15.         Main:                                                ;最简单的按键赋值(8个按键)
  16.                 MOV                P1,P0                        ;将P0状态赋给P1
  17.                 SJMP        Main                        ;跳转到main,死循环

  18. ;方法2:
  19. ;        Main:                                                ;P0.0按键控制P1.0的LED(1个按键)
  20. ;                JB                P0.0,Over                ;判断按键是否检测到,若无跳到Main
  21. ;                LCALL        Delay                        ;若有,延时消抖
  22. ;                JB                P0.0,Over                ;再次判断按键是否检测到
  23. ;                JNB                P0.0,[        DISCUZ_CODE_1        ]nbsp;                       ;长按检测,若有则一直死循环
  24. ;                CPL                P1.0                        ;若有按键,则LED状态翻转(CPL表示去反)
  25. ;        Over:
  26. ;                SJMP        Main                        ;跳转到main,死循环
  27.                
  28. ;方法3:
  29. ;        Main:                                                ;P0.0-1按键控制P1.0-1的LED(2个按键)
  30. ;                JB                P0.0,Next                ;判断P0.0按键是否检测到,若无跳到Next
  31. ;                LCALL        Delay                        ;若有,延时消抖
  32. ;                JB                P0.0,Next                ;再次判断按键是否检测到
  33. ;                JNB                P0.0,[        DISCUZ_CODE_1        ]nbsp;                       ;长按检测,若有则一直死循环
  34. ;                CPL                P1.0                        ;若有按键,则LED状态翻转
  35. ;        Next:
  36. ;                JB                P0.1,Over                ;判断P0.1按键是否检测到,若无跳到Over
  37. ;                LCALL        Delay                        ;若有,延时消抖
  38. ;                JB                P0.1,Over                ;再次判断按键是否检测到
  39. ;                JNB                P0.1,[        DISCUZ_CODE_1        ]nbsp;                       ;长按检测,若有则一直死循环
  40. ;                CPL                P1.1                        ;若有按键,则LED状态翻转
  41. ;        Over:               
  42. ;                SJMP        Main                        ;跳转到main,死循环               
  43.                
  44.         Delay:                                                ;t=t1*20=10ms,修改R6的值即可更改时间(不精准)
  45.                 MOV                R6, #014H                ;014H=20
  46.         D1:                                                
  47.                 MOV                R7, #0FAH                ;t1=250*2=500
  48.         D2:               
  49.                 DJNZ        R7, D2                        ;R7=250自减,直到为0跳出循环,双周期
  50.                 DJNZ        R6, D1                        ;R6=020自减,直到为0跳出循环,双周期
  51.                 RET

  52.         END        

复制代码

ASM1_KEY.zip (65.37 KB, 下载次数: 15)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表