完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我正在用MPLabX汇编编程12F509。PIC应该驱动三个发光二极管,红色、绿色和蓝色,三个不同的频率。两个按钮作为输入,一个用来告诉图片改变频率,另一个用来改变颜色,如果按下超过2秒钟。进入睡眠模式或唤醒画面。程序运行正常,但现在我正在尝试实现另一个特性:第四个引导意志眨眼每20秒,眨眼应该持续1秒,这是程序中的调用振动函数。现在我正在尝试这个特性,不包括其他两个功能,o在测试时我不会按任何按钮,我试图使用timer0来避免使用耗时的例程,所以我已经将预调频器设置为256,并预加载值2的定时器,使其溢出近65m s。w添加了led灯,但是它从不关机……还用模拟器进行测试,并运行到当led灯亮时,秒表46s显示出来,而实际上它亮时是20秒。
|
|
相关推荐
7个回答
|
|
这是发表我的问题的正确论坛吗?我应该把它放在开发工具MPLAB X论坛中吗?对不起,我是Microchip论坛的新手
|
|
|
|
你在一个合适的论坛。然而,Microchip已经严重影响了这些论坛,大多数有经验的用户都离开了。你的问题不是MPLAX X问题,所以不要切换论坛。你没有用任何有意义的方式使用TMR0。您的代码有两个引用:在#293行,用值2初始化它;在181行,将代码读入W,然后立即从子例程中用0重新调入W丢弃它。您的算法完全被停顿了。要处理PIC上的多个输入和输出,而不会像基线PIC12F5xx系列那样中断,您需要实现一个状态机,该状态机在具有三明治延迟的超循环中运行。所有的计时都是通过超环的传递来完成的,为了方便起见,我们称之为“嘀嗒”。勾号必须足够长,以执行循环中的所有指令,但必须足够短,以便时序粒度可以接受。由于内部振荡器是4MHz(+/-2%在常温环境中),PIC12F509每秒可以执行100万条指令。它有1024个字的程序存储器,所以给出1ms的循环周期的三明治延迟是一个合理的最小值。然而,您感兴趣的是上述周期的定时,以及睡眠模式的2秒周期,并且能够使用单字节计数器是有利的,因此使三明治为ELAY 25MS将大大简化你的生活。对于20秒的延迟,您仍然需要一个多字节计数器。使用1:128的预分频器,在循环的前端将TMR0调零,并且检查对于循环尾部的三明治延迟,TMR0>=195是否为TMR0>=195,您将得到一个24960个指令周期的周期,可以很容易地填充到理想的250。00个周期。在循环中,您将有子程序来处理每个按钮、三色LED、振动函数和睡眠/唤醒逻辑。由于基线PICS通过重置退出睡眠,您需要一些额外的启动代码来跳过唤醒时不需要的重新初始化。*超循环中的例程没有一个使用内部延迟或“等待”等待输入。*唯一*允许延迟是夹层延迟+它的填充延迟得到一个25000循环循环。
|
|
|
|
谢谢伊恩的帮助!我对这些术语很陌生,你能给我指出一些好的资源或教程来解释你在说什么吗?再次感谢
|
|
|
|
只考虑频率/颜色变化,断电,这是否是你的意思的好例子?
|
|
|
|
第二个是最接近的,但是将滴答增量移动到控制LEDPsudocode的代码附近:Clear TMR0//start 24960 Tcy三明治delay如果滴答=1HZ_CNT,那么Clear滴答:Toggle LEDIncrement tick如果TMR0<195,则移动到4//等待结束三明治delay36Tcy//padding,用于25000Tcy total loop delayGoto 1在步骤1检查返回断点的总循环时间,使用刺激器秒表和修剪填充,使其尽可能接近25000个周期,然后当您添加更多t时,它将保持循环重复率(+/-从步骤4繁忙等待开始的几个周期抖动)。在循环中问。我已经为三明治延迟做了一些工作代码。TEMP是一个可以在别处使用但会被延迟破坏的临时变量。必须用128-1预分频器为FoSC/4建立TMR0。基数是十进制。一旦添加任务,请注意页面问题。
|
|
|
|
我已经增加了频率和功率/颜色ButoCfRQ=频率的循环重复次数(对于1Hz,它是20)FrQTICK =频率控制的FROQ的次数FRQ=频率ButoFrQSTAT=频率按钮状态在前一个循环Pope=电源ButnPotoStt=电源按钮状态环CPOW=在PIC去睡觉之前的循环数(2秒)PoTiCK =电源控制的循环数不再能发布图像…不知道为什么
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
5188 浏览 9 评论
2009 浏览 8 评论
1933 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3181 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2232 浏览 5 评论
743浏览 1评论
629浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
512浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
642浏览 0评论
538浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 15:11 , Processed in 1.774162 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号