完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,我是微控制器的初学者。当我按下开关(RA0)时,我想要一个LED(RC2)闪烁3次。我为这个LED控制器写了一些代码。但是我发现在完成LED闪烁之后我是否仍然按下这个开关。这个LED会一直闪烁到一个循环。我希望LED关闭直到我释放开关。不知道我应该在哪里修改代码?我把开关换成了跳线以防止弹跳,但情况也一样。有人对此有什么建议吗?MOVLB 0x03CLRF ANSECACLVLB B′0000000′1' MOVWF B′0111000′MOVWF B′0000000′1' MOVWF TrISAMEN:MOVLB B′00000000′BCF PORTC,2SW1:BTFSC端口,0 GOTO CVMOVLB 0x01BCF tiSC,2MOVLB 0x00 BSF PORTC,2呼叫Delay10 MMSBF PORTC,2呼叫Delay10MMSBF PORTC,2CHECK:MOVLB 0X01BSF TISSC TXXRILLLA:2Goto SW1
|
|
相关推荐
12个回答
|
|
|
不要只是为了关掉或打开LED而摆弄TRIS寄存器。使用BANKSEL宏优先于手动设置银行寄存器。在LATx寄存器上使用BSF和BCF,而不是PORTx,以避免读-修改-写问题。
|
|
|
|
|
|
谢谢荒山亮的建议。PORTX已替换为LATX寄存器。但没有修复LED闪烁问题。如果我忘记释放开关。LED仍然处于闪烁的循环中。初始:银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞拉银行安塞班班班班班班班B’00111000B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B三重卡三重卡三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角2呼叫德拉YS10MS BSF LATC,2 GTO主检查:BANSEL PORTA BTFSS PORTA,0 GTO检查GOTO SW1
|
|
|
|
|
|
你的程序流程不适合你想做的事情。试着把主回路换成这样:检查开关是否按下。如果开关没有按下,回到步骤1。现在按下开关,使LED闪烁3次。检查开关是否释放。如果开关没有松开,回到步骤4。现在开关被松开,回到步骤1。请确保开关对两个p都已断开。释放和释放。
|
|
|
|
|
|
创建一个用作标志的变量。在第三闪烁之后,设置标志,不要让LED再次打开,如果设置了该标志。当开关被释放,然后清除标志。
|
|
|
|
|
|
创建一个像这里提到的状态机可能是解决问题的最简单的方法。
|
|
|
|
|
|
你好,1和0,我想我已经完成了循环,如果我没有误解你的意思。1.检查开关按下SW1:BanNKSEL PORTABTFSC PORTA,0;检查sw按下GOTO CHECK2。如果没有按下开关,返回步骤1.SW1:BANKSEL PORTABTFSC PORTA,0;sw未按,转到CHECK:GOTO CHECK...银行端口BTFSS端口,0GOTO检查;sw未按,指令跳过转到SW1;返回SW1:3。现在开关被按下,闪烁LED 3次。SW1:银行端口BTFSC端口,0GOTO支票锁存器LATCF LATC,2CALL Delay_10msBCFLATC,2CALL Delay_10msBSFLATC,2GOTO MAIN;闪烁3次,然后去back MAIM:4,检查开关释放。SW1:BANKSEL PORTABTFSC PORTA,0;如果sw被释放,则转到Check:GOTO CHECK5。如果开关未被释放,则返回步骤4。Check:BANKSEL PORTA BTFSS PORTA,0GOTO CHECK;sw未被释放,转到CHECK:进入循环。现在开关被释放,返回步骤1.CH。EK:BosielPoTA BTFSS PATA,0GO检查GOTO SW1;SW被释放,GOTO SW1:等待下一个新闻
|
|
|
|
|
|
确保延迟例程使用的任何寄存器都位于与LATC相同的存储库或公共RAM中,并且您可能想要更长的延迟,因为10ms对于人眼来说太快了,请尝试下面的代码:
|
|
|
|
|
|
谢谢,你的代码组织得很好。我用新的代码替换了我的旧代码,我把延迟时间增加到100ms,但是LED仍然在运行循环。我不知道MCU为什么不能在BTFSS --- Goto SW2区域中保持处理?我正在考虑选择一个中断标志来处理这个问题。
|
|
|
|
|
|
你的开关是如何连接到PIC设备的?就像我在邮局第4号所说的那样,确保开关被取消。发布您的最新代码,包括延迟例程。
|
|
|
|
|
|
RA0与接地开关相连,我用10k欧姆的拉力把RA0拉高到+5V。我试图用跳线来代替开关。但LED仍然闪烁。
|
|
|
|
|
|
你的配置设置在哪里?你禁用了看门狗计时器吗?
|
|
|
|
|
|
谢谢荒山亮和大家。荒山亮,你说得对。当我关闭OntC1中的看门狗时,LED在一个循环中闪烁永远不会发生。我把这两种配置加在下面的包含& lt;p16f1825。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
478 浏览 0 评论
5799 浏览 9 评论
2338 浏览 8 评论
2229 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3534 浏览 3 评论
1132浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1106浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
876浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
480浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 11:12 , Processed in 0.817853 second(s), Total 66, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2122