完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
嘿,各位,祝大家新年快乐。我目前正在与UART1和UART2一起工作在PIC24F(PIC24FJ64 GA202)上。我不使用中断。我在我的代码中得出一个逻辑决定,我想测试信用卡是否被卡在磁卡读卡器中,或者是否在LCD电阻触摸屏上按下了“软”按钮。LCD与UART1通信,磁卡阅读器与UART2通信,所以我测试:这不起作用。无论是UrxDA标志都清晰得很快,当我测试它们是否清晰或设置时,它们已经很清楚了,或者我的逻辑完全错了。有什么建议吗?蒂雅,尼尔
|
|
相关推荐
18个回答
|
|
|
我不明白为什么很少用“.()”而不是“if()”进行测试,或者为什么要测试其中之一是否清楚。这不是你的代码所做的。
|
|
|
|
|
|
亲爱的RICE,我再次试图回答论坛,我不能这样做。我不知道为什么。——尼尔
|
|
|
|
|
|
文档说URXDA一直保持设置,直到从相应的UnRXREG读取数据。如果最终设置了两个数据可用位,那么上面的代码将永远不能测试是否设置了两个可用位。
|
|
|
|
|
|
您的代码可能包含触发该论坛防火墙的魔术序列之一。尝试将文件添加为附件,而不是将其粘贴到您的邮件中。
|
|
|
|
|
|
亲爱的RIC,“If()”测试将在第一次失败后继续执行程序。我希望我的程序等待和投票的URXDA位。因此,我使用“Wh()”。在这一点上,我已经尝试了100种不同的方法来做这件事。U2稳定。我的代码通过这个测试。这几乎就像U1Stest.UrxDA被设置。这是一个只读位,所以我不知道如何清除它。在接收缓冲区中还有什么东西不允许它清除吗?我如何确定这个?蒂亚——尼尔
|
|
|
|
|
|
难道你不想做一些类似的事情吗?.((No_data_from_Card_Reader).(No_data_from_Touchscreen)); //什么都不做,直到有东西进来。//现在测试数据来自何处并相应地采取行动。
|
|
|
|
|
|
亲爱的戴夫,这不是我当时的测试吗?U2稳定。“UxStest.UrxDA”;“正在测试吗?”蒂雅,尼尔
|
|
|
|
|
|
不,注意(No.DATAAOFFASKCARD读取器)等于!U1RXDA(No.DATAAOFAX触摸屏)等于!U2RXDASO您的测试是((No.DaaAdAfthKaultRead)或(No.DaDaaFix触摸屏));问候,戴夫
|
|
|
|
|
|
亲爱的戴夫,OR的真相表不是意味着:A A|B 0|0 010 10 1 11 1 1所以如果一个或另一个是真的,那么A|B是真的吗?蒂雅,尼尔
|
|
|
|
|
|
它会像…
|
|
|
|
|
|
尼尔:考虑下面的建议:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------)等于!U1RXDA(No.DATAAOFAX触摸屏)等于!U2RXDAA的等价表达式如下:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------d_Reader)等于U1RXDA(Data_from_Touchscreen)等于U2RXDA(Data_from_Touchscreen)两者将停留在“空循环”中,直到有UART的输入,它们都不做任何事情。都不等同于您的表达式。注意,为了便于“一目了然”验证,我总是用分号表示“空”。y循环”在与.()表达式分开的一行上,以确保我能够看到它是有意的。如果把它放在同一行上,那么很容易错过分号。更少的U1RXDA和U2RXDA都表示已经接收到数据(在这种情况下,它将永远停留在循环中)。
|
|
|
|
|
|
或者…你可以简单地沿着这些线组织程序流程:问候,戴夫
|
|
|
|
|
|
逻辑有自己的算术:不是(A或B)=(不是A)和(不是B)
|
|
|
|
|
|
尼尔,你的逻辑问题已经被其他人解释过了。你需要回顾一下布尔逻辑的用法。关于“只读”位。这是由VEGPETE在POST第4章中解释的。清除RXDA标志的唯一方法是读取相关的RXRG。
|
|
|
|
|
|
亲爱的戴夫、里克、提姆、诺斯盖尔和Pete,我想我终于明白了为什么我无法从我那浓密的头颅里得到这种逻辑。虽然这些年来我能征服很多东西,但有时我会被一些最基本的东西挂断。我的挂断基本上是真的条件是0,假条件是1。我想看看这两个条件是否都是1,但1是错误的条件。使用OR运算符是错误的,因为U1和U2上的URXDA都是零值。因此,如果这两个方案都是正确的,那么程序的执行将继续下去。我需要放大器和放大器来继续while循环,直到真(0)&和;真(0)变为false & &;true,true &&;false,或true &&;true。真的很大的精神困扰我。谢谢。我知道,在试图解决这个逻辑问题的过程中,我可能已经尝试了你的使用和&和……的建议,而这不起作用……在某个时候,我只是开始猜测……不喜欢这样做。断点后,我终于想出了U2Stest.UrxDA是1的DE。故障。所以我试着冲洗U2RXRG,但是我仍然不能得到U2Stest.UrxDA为0。我已经尝试读取U2RXRG 5次以从缓冲器中删除任何/所有数据。这是行不通的。还有其他建议吗?谢谢大家的帮助,TIA,尼尔
|
|
|
|
|
|
不,不是。别的事情还在进行。你确定数据不是一直都在,所以你测试的时候会重新设定吗?
|
|
|
|
|
|
亲爱的荒山亮,是的。因此,我已经通过执行byte=U1RXREG和byte=U2RXREG弹出两个U1和U2缓冲区;现在,当我使用断点并仔细监视U1和U2的URXDA时,我发现它们都是零。现在看来:只有信用卡刷卡或软按压……不是两者都是。TIA,尼尔。
|
|
|
|
|
|
UART2信号是如何产生的?我猜是当有人刷卡时,你会从信用卡阅读器那里得到一系列数据。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
501 浏览 0 评论
5811 浏览 9 评论
2350 浏览 8 评论
2237 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3543 浏览 3 评论
1159浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1120浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
888浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
501浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 12:58 , Processed in 1.214445 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1119