×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-06-17 发布时间:
|

1.ASM1_KEY:按键控制LED亮灭,3种情况

/**

******************************************************************************

*         @file            asm.asm

*         @author          Alex——小白

*         @version         V1.0

*         @date            2019.9.1

*         @brief           3种方法实现KEY to LED

******************************************************************************

*         @attention        All Rights Reserved  

**/


                ORG     0030H                        ;程序执行的起始地址                                

                LJMP          Main                   ;跳转到main函数

                ORG     0100H                        ;程序跳转到0100H开始执行

;方法1:

        Main:                                        ;最简单的按键赋值(8个按键)

                MOV                P1,P0             ;将P0状态赋给P1

                SJMP        Main                     ;跳转到main,死循环


;方法2:

;        Main:                                 ;P0.0按键控制P1.0的LED(1个按键)

;                JB                P0.0,Over   ;判断按键是否检测到,若无跳到Main

;                LCALL        Delay            ;若有,延时消抖

;                JB                P0.0,Over   ;再次判断按键是否检测到

;                JNB                P0.0,[        DISCUZ_CODE_1        ]nbsp;                       ;长按检测,若有则一直死循环

;                CPL                P1.0       ;若有按键,则LED状态翻转(CPL表示去反)

;        Over:

;                SJMP        Main              ;跳转到main,死循环

                

;方法3:

;        Main:                                 ;P0.0-1按键控制P1.0-1的LED(2个按键)

;                JB                P0.0,Next   ;判断P0.0按键是否检测到,若无跳到Next

;                LCALL        Delay            ;若有,延时消抖

;                JB                P0.0,Next   ;再次判断按键是否检测到

;                JNB                P0.0,[        DISCUZ_CODE_1        ]nbsp;                       ;长按检测,若有则一直死循环

;                CPL                P1.0       ;若有按键,则LED状态翻转

;        Next:

;                JB                P0.1,Over   ;判断P0.1按键是否检测到,若无跳到Over

;                LCALL        Delay            ;若有,延时消抖

;                JB                P0.1,Over   ;再次判断按键是否检测到

;                JNB                P0.1,[        DISCUZ_CODE_1        ]nbsp;                       ;长按检测,若有则一直死循环

;                CPL                P1.1       ;若有按键,则LED状态翻转

;        Over:                

;                SJMP        Main              ;跳转到main,死循环                

                

        Delay:                                 ;t=t1*20=10ms,修改R6的值即可更改时间(不精准)

                MOV                R6, #014H                ;014H=20

        D1:                                                

                MOV                R7, #0FAH                ;t1=250*2=500

        D2:                

                DJNZ        R7, D2             ;R7=250自减,直到为0跳出循环,双周期

                DJNZ        R6, D1             ;R6=020自减,直到为0跳出循环,双周期

                RET


        END        

关键字:51单片机  汇编  KEY篇 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM中断源之定时器中断