单片机原理与应用实验——按键控制(汇编)

(基于51核的STC12C5A60S2,keil uvision5 mdk 5.25 编译)

 

 

LED1 BIT P2.4
LED2 BIT P2.5
LED3 BIT P2.6
LED4 BIT P2.7

KEY1 BIT P3.2
KEY2 BIT P3.4

BEEP BIT P1.0


DelayTimes_100MS EQU 6FH            ; 将地址6FH用伪指令命名为DelayTimes_100MS 
KEY1_State	DATA  69H	 	; 将地址69H用伪指令命名为KEY1_State
 
    CLR BEEP
    SETB LED1
    SETB LED2
    SETB LED3
    SETB LED4

LOOP:
    JB KEY1,KEY_OFF
    MOV DelayTimes_100MS,#4         ;按键去抖
    LCALL Delay100MS

KEY_ON:
    MOV A,KEY1_State
    RL A
    ADD A,KEY1_State
    MOV  DPTR, #KEY1_Flash       
    JMP    @A+DPTR
KEY1_Flash:
    LJMP KEY1_Flash0    ;0
    LJMP KEY1_Flash1    ;3
    LJMP KEY1_Flash2    ;6
    LJMP KEY1_Flash3    ;9
    LJMP KEY1_Flash4    ;12
        
KEY1_Flash0:
    CLR LED1
    SETB LED2
    SETB LED3
    SETB LED4
    INC KEY1_State
    AJMP LOOP

KEY1_Flash1:
    CLR LED1
    CLR LED2
    SETB LED3
    SETB LED4
    INC KEY1_State
    AJMP LOOP

KEY1_Flash2:
    CLR LED1
    CLR LED2
    CLR LED3
    SETB LED4
    INC KEY1_State
    AJMP LOOP

KEY1_Flash3:
    CLR LED1
    CLR LED2
    CLR LED3
    CLR LED4
    INC KEY1_State
    AJMP LOOP

KEY1_Flash4:
    SETB LED1
    SETB LED2
    SETB LED3
    SETB LED4
    MOV KEY1_State,#0
    AJMP LOOP

KEY_OFF:
    AJMP LOOP 





Delay100MS:                
       		MOV R7,DelayTimes_100MS  
                
Delay100MS_1:        MOV R6,#10
Delay100MS_2:        MOV R5,#150
Delay100MS_3:        MOV R4,#200
Delay100MS_4:        DJNZ R4, Delay100MS_4
                                DJNZ R5, Delay100MS_3
                                DJNZ R6, Delay100MS_2
                                DJNZ R7, Delay100MS_1
RET                        ;子程序返回 


END

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值