lzh电子论坛

欢迎来到lzh电子论坛:
如果您对电子技术感兴趣就加入我们吧!在这里互相交流互相学习!主要讨论的方向有:单片机,ARM,PCB板设计,FPGA,汇编,C/C++等方面。
-----lzh电子论坛
lzhbbs.forumotion.com
lzh电子论坛

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

欢迎访问lzh电子论坛。可通过【谷歌,SOSO,搜狗】搜索“lzh电子论坛”直接进入论坛。点击了解论坛详细制度


    汇编语言中等待按键松手的程序 求大神指教

    分享
    avatar
    xufenglei
    中级会员
    中级会员

    帖子数 : 34
    威望 : 2
    注册日期 : 13-09-15

    汇编语言中等待按键松手的程序 求大神指教

    帖子 由 xufenglei 于 2013-10-05, 10:20 pm

    本程序虽然消抖
    但是松开按键的程序  没有写成功 
    求大神指教  现象时按下按键后没有反应但是把松手的程序
    去掉之后灯有反应
    见附件

    点击下载:独立按键与LED显示.zip
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 26

    回复: 汇编语言中等待按键松手的程序 求大神指教

    帖子 由 Admin 于 2013-10-05, 11:28 pm

    家里木有网,围观高手来解答
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 26

    回复: 汇编语言中等待按键松手的程序 求大神指教

    帖子 由 Admin 于 2013-10-06, 11:15 am

    我觉得如果用汇编写就不要建立.c文件了,就建立汇编的.asm文件好一些。IO和变量的定义放在.INC文件里。
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 26

    回复: 汇编语言中等待按键松手的程序 求大神指教

    帖子 由 Admin 于 2013-10-06, 11:34 am

    是你程序的逻辑上有问题  ,先处理键值然后等待释放,帮你把程序改为这样了,你对着看看: 


    SWITCH_CASES:
        
                JNB     S1, PROCESS_S1;
                JNB     S2, PROCESS_S2;
                JNB     S3, PROCESS_S3;
                JNB     S4, PROCESS_S4;
                JMP     INITIAL
        PROCESS_S1:
                MOV   LED_PORT,#55H;
               JMP   LOOP_WAIT
        PROCESS_S2:
                MOV   LED_PORT,#00H;
               JMP   LOOP_WAIT      
        PROCESS_S3:
                MOV   LED_PORT,#0F0H;
               JMP   LOOP_WAIT           ;//跳到释放
        PROCESS_S4:
                MOV   LED_PORT,#0fH;
        LOOP_WAIT:                         ;//等待按键松手
                MOV   A,KEY_PORT;
                CJNE  A,#0FFH,LOOP_WAIT; 
       JMP   INITIAL
    avatar
    xufenglei
    中级会员
    中级会员

    帖子数 : 34
    威望 : 2
    注册日期 : 13-09-15

    回复: 汇编语言中等待按键松手的程序 求大神指教

    帖子 由 xufenglei 于 2013-10-06, 12:26 pm

    逻辑上确实有问题。      如果松手之后JNB的指令    就永远不执行了
    但是有一点如果改成上面,那么你按键一按下灯就亮了,而不是松手之后再亮。
    我认为程序可以这样改。

       ;/********************************************************
        ;           以下是处理按键按下的函数
        ;********************************************************/
        SWITCH_CASES:
                JNB     S1, PROCESS_S1;
                JNB     S2, PROCESS_S2;
                JNB     S3, PROCESS_S3;
                JNB     S4, PROCESS_S4;
                JMP     INITIAL
        PROCESS_S1:
                ACALL   WAIT            ;//等待按键松手
                MOV   LED_PORT,#55H;
                JMP   INITIAL
        PROCESS_S2:
                ACALL   WAIT            ;//等待按键松手
                MOV   LED_PORT,#00H;
                JMP   INITIAL       
        PROCESS_S3:
                ACALL   WAIT            ;//等待按键松手
                MOV   LED_PORT,#0F0H;
                JMP   INITIAL
        PROCESS_S4:
                 ACALL   WAIT            ;//等待按键松手
                MOV   LED_PORT,#0fH;
                JMP   INITIAL 
       ;/*******************************************************   
       ;     这是等待按键松开的程序               
       ;*********************************************************/
        WAIT:
                LOOP_WAIT:                         ;//等待按键松手
                MOV   A,KEY_PORT;
                CJNE  A,#0FFH,LOOP_WAIT;
                RET                                ;
    已经经过验证是对的
    avatar
    xufenglei
    中级会员
    中级会员

    帖子数 : 34
    威望 : 2
    注册日期 : 13-09-15

    回复: 汇编语言中等待按键松手的程序 求大神指教

    帖子 由 xufenglei 于 2013-10-06, 12:40 pm

    还有另外一个问题,我认为c与汇编混合好一些。如果只用asm文件,能否像C一样模块化编程?
    现将改好之后的代码上传。 总之要要谢谢大家帮我解决问题。

    点击下载:独立按键与LED显示.zip

      目前的日期/时间是2018-11-20, 2:24 am