标题: 单片机初学汇编按键检测,按一下亮再按灭,如此循环,不是很完美,希望抛砖引玉 [打印本页]

作者: 伟哥C51    时间: 2024-3-9 19:41
标题: 单片机初学汇编按键检测,按一下亮再按灭,如此循环,不是很完美,希望抛砖引玉
        ORG  000H
               
KS:        JB        P3.5,$; 测按键
        ACALL        DELAY;  按键延时去抖动
        JB        P3.5,KS;再次测按键
        JNB        P3.5,$; 按键松开否
   ACALL        DELAY;
        MOV   A,P1;     读取P口值
        ANL        A,#001H;取P1.0位
        JNZ        MD;     测试P1.0口非0否,非零跳至MD点灯
        SETB        P1.0;   是0关灯
        ACALL        DELAY2; 延时200毫秒再测按键
        SJMP        KS
MD:        CLR        P1.0
        ACALL        DELAY2; 延时200毫秒再测按键
                        
DELAY:        MOV        R1,#2
LOOP:        MOV        R2,#255
        DJNZ        R2,$
        DJNZ        R1,LOOP
        RET
DELAY2:        MOV        R3,#2
LOOP3:        MOV        R4,#36
LOOP2:        MOV        R5,#255
        DJNZ        R5,$
        DJNZ        R4,LOOP2
        DJNZ        R3,LOOP3
        RET
        END


作者: 21cnsound    时间: 2024-3-10 17:40

MD:        CLR        P1.0
        ACALL        DELAY2; 延时200毫秒再测按键
这里少了一句        SJMP        KS
作者: 伟哥C51    时间: 2024-3-24 14:39
21cnsound 发表于 2024-3-10 17:40
MD:        CLR        P1.0
        ACALL        DELAY2; 延时200毫秒再测按键
这里少了一句         ...

少这句是不是程序不能跳回KS重新开始检测,但是在实验板子上没区别
这条子程序返回语句 ACALL        DELAY2; 延时200毫秒再测按键,执行完主程序下面没有语句了,程序怎么走,单片机是不能停下,就像CRT显像管电子束从上往下,一行一行的往下扫描




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1