打印

为什么判断是否按键被按下语句要放在延时子程序中呢?

[复制链接]
2332|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
花千骨|  楼主 | 2013-12-22 11:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;控制LED1与LED2间隔500ms交替发光,当按下K1并不松开时,变为间隔200ms交替发光,松开则回到原来的频率        
                ORG 00H
START:       
                MOV P1,0FFH                       
                ;JNB P1.0,FLASH               
                CLR        P0.0                                
                SETB P0.1                
                CALL DELAY1
                SETB P0.0
                CLR P0.1
                CALL DELAY1
                JMP START

FLASH:       
                CLR        P0.0                                
                SETB P0.1                
                CALL DELAY2
                SETB P0.0
                CLR P0.1
                CALL DELAY2

;延时子函数1,延时500ms
DELAY1:                                         
                ;JNB P1.0,FLASH               
                MOV R1,#50
D1:               
                ;JNB P1.0,FLASH
                MOV R2,#20
D2:                MOV R3,#248
                JNB P1.0,FLASH                       
                                       
                DJNZ        R3,$
                DJNZ        R2,D2
                DJNZ        R1,D1
                RET
;延时子函数2,延时200ms
DELAY2:
                MOV        R1,#20
D3:                MOV         R2,#20
D4:                MOV        R3,#248
                DJNZ        R3,$
                DJNZ        R2,D4
                DJNZ        R1,D3
                RET
                END
将JNB P1.0,FLASH语句放在延时子程序中的那三个地方都是可以达到效果的,放在主函数中则不行,自己也有些猜想,可是还是不知道具体该怎么正确的解释这种现象,求高手指教,非常感谢!

相关帖子

沙发
gx_huang| | 2013-12-22 18:26 | 只看该作者
放在主程序里,每个延时周期内,只能检测按键一次,反应比较慢。
放在延时程序里,检测时间间隔比较短,反应快。
你还不明白?
另外,作为程序通用性考虑,延时程序应该是一个带参数的标准函数。
500毫秒、200毫秒是独立的函数,难道其它地方需要300毫秒,你还编一个函数?

使用特权

评论回复
板凳
cjf512| | 2013-12-22 19:50 | 只看该作者
考虑一下放在不同的位置后,一个周期下来的执行次数 就可以明白。
另外初学者对历程可以多思考 做自己的修改,比如延时程序,做个带参数的100ms等等
刚学习模仿很重要,但是同时要学会思考!
个人意见!

使用特权

评论回复
地板
花千骨|  楼主 | 2013-12-26 21:06 | 只看该作者
嗯..因为后来自己弄懂了所以几天没来了,还是感谢两位的热心解答,谢谢,希望以后还能得到您的帮助!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝