完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我用PIC16F1789制作了一个实时时钟,并且我编写了一个例程以便通过使用4x4键盘并选择相应的数字(0-9)来改变/修改时间(hh:mm:ss)和日期(dd:mm:yy)。用下面的代码计算小时、分钟、秒等的第二位数字(见附件)。不幸的是,我不能在这里直接粘贴代码。我收到一条令人讨厌的消息“访问被拒绝”。如果时间格式是12h’(而不是24H’),那么很明显,小时不能具有值“00”。因此,我设置了一个检查条件,如果时间格式是12小时,输入的数字表示小时,已经按下的第一个数字是“0”,而当前按下的键又是“0”,则不做任何事情,然后在“.”循环的开始处再次进行等待新键而不是其他键“0”。我已经用PIC测试过这个代码,我发现它工作得很好(我的意思是,如果你按“0”来显示小时对的第二个数字,它什么也做不了,它正在等待另一个键)。但是,不幸的是,有时这个条件不像预期的那样工作,它接受“0”作为th键。e第二个数字。顺便说一下,为了检测4x4键盘上按下了哪个键,我每隔3msec输入ISR轮询一下键盘。经过分析,我意识到如果程序偶然进入ISR,当PC在NOP()时,按下的键是e'0',然后绕过上面的检查,小时对的第二个数字被接受为'0'。因此,我的问题是,我们如何能预测这样的情况,以及我们如何能防止程序在非期望的点进入ISR?
|
|
相关推荐
6个回答
|
|
支票不会被绕过。你只要在检查完毕后拿到你的钥匙。通常你会有一个很短的程序,等待一个钥匙,也许做一些退票,然后一旦你拿到你的钥匙,你就把它存放在某个地方并分析它是什么。一旦完成此操作,您就返回等待下一个键。在分析期间不会用新的键来更新存储的值。而且,由于您正在轮询,所以可能并不需要中断。
|
|
|
|
只是一个想法,但你想过用旋转编码器来设置时间/警报吗?
|
|
|
|
你是对的。支票刚办完后,我就得到了按下键。具有密钥实际值的变量是ISR中计算的“valid_key”(ISR每3msec检查密钥的组合已被激活,并且如果组合稳定超过10msec,则将该密钥存储在“valid_key”变量中。ys被按下,这个变量有一个虚拟值(在我的代码中是DEL字符的HEX值)。因此,在检查完成之前,是“valid_key=DELchar”,但是在检查完成之后,程序进入ISR并读取valid_key,它碰巧具有值“valid_key=zeroHE”。X”。当这种情况发生时,我的检查就是说,不再有效了。有没有方法或技巧来克服这种情况?这是我要实施的下一件事。顺便问一下,你们有没有关于旋转编码器的信息(布线、与PIC的接口、工作原理、样本代码等)?
|
|
|
|
当然。制作副本:然后分析副本,而不是原件,这样在分析过程中不会改变。
|
|
|
|
你可以在这个论坛上找到很多代码,比如说:HTTPS://www. GoGoL.I/Stand?hl=it&as_sitesearch=www.micro..com%2Ffor.&q=encoder&btnG=Cerca+con+Google&meta=&gws_rd=ssl如果选择了PIC,您将使用QEI模块,或者使用以1KHz运行的定时中断来轮询编码器线路。
|
|
|
|
或者改变通知。你可以使用弱上拉和3个盖子(100n)。你可以跳过时间直接显示到液晶显示器上。这将解决你12/24小时的问题,你可以创建一个菜单。6个状态是可能的。
|
|
|
|
只有小组成员才能发言,加入小组>>
5129 浏览 9 评论
1984 浏览 8 评论
1914 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3149 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2212 浏览 5 评论
698浏览 1评论
586浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
467浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
603浏览 0评论
495浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-3 01:20 , Processed in 1.142539 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号