找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 313|回复: 2
收起左侧

单片机初学汇编按键检测,按一下亮再按灭,如此循环,不是很完美,希望抛砖引玉

[复制链接]
ID:1110890 发表于 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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1001436 发表于 2024-3-10 17:40 | 显示全部楼层

MD:        CLR        P1.0
        ACALL        DELAY2; 延时200毫秒再测按键
这里少了一句        SJMP        KS
回复

使用道具 举报

ID:1110890 发表于 2024-3-24 14:39 | 显示全部楼层
21cnsound 发表于 2024-3-10 17:40
MD:        CLR        P1.0
        ACALL        DELAY2; 延时200毫秒再测按键
这里少了一句         ...

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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