完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大家好,我对论坛是全新的,在很大程度上,电子产品作为一个整体。我正在尝试用带有MPLAB的HITCHC库在我的PIC18F1320上设置USART,我遇到了一个问题,关于将一个字符写到我的串行线路并在我的终端上接收它。一个MX222集成电路的TX。问题是,在使用OpenUSART(...)命令初始化USART之后,我能够发送数据,但只有在putsUSART()命令内部写入字符串时才能发送数据。例如:char rec;OpenUSART(USART_TX_INT_OFF&USART_RX_INT_OFF&USART_ASYNCH_MODE&USART_EIGHT_BIT&USART_CONT_RX&USART_BRGH_HIGH,(1){.(!DATARDYSOART());BusyUSART());putsUSART(rec);}现在,如果我改为使用命令putsUSART("Hello, World"),那么它将向我的终端打印Hello, World没有问题。但是,尝试使用char rec接收从我的终端发送的字符,然后尝试输出该字符将根本不起作用。我一直在到处寻找这个问题。就像我说的,我对这个东西很陌生,所以我可能遗漏了一些显而易见的东西,它应该很突出,不过我在线程中看到的只是看起来像我的代码,但他们说它们是有效的。我已经搜索了所有的HiTeC C的图书馆参考手册,它看起来就像代码应该如何使用。即使我删除了整个接收比特部分,我仍然不能设置char ReC=“Hello,Word”。我知道WriteUSART只应该发送一个字节,而putsUSART通过继续使用WriteUSART发送一个空终止字符串。我还知道putsUSART从程序内存中读取char,而putrsUSART从rom中读取char,所以我知道这不是正确的命令。我感觉我已经给出了我所知道的所有要提供的信息,所以如果您需要其他帮助,请让我知道如何帮助我!这让我疯狂了一个星期,试图了解我可能做错了什么。我知道serial是有效的,因为我可以每次发送一个随机字符串(所以波特是正确的,所有的设置看起来都很好),但我显然缺少一些东西。非常感谢您的任何帮助!
|
|
相关推荐
13个回答
|
|
|
Puths-()样式函数通常需要一个NUL终止字符串作为参数。请注意,您正在传递一个字符。对于这个练习,我建议制作“REC”一个2字符数组,确保ReC(1)为0,并将RCREG分配给ReC(0)。
|
|
|
|
|
|
是的,而且,()通常有“忙等待”合并-而写()和PcC.()没有。
|
|
|
|
|
|
如前所述,您误用了PutsAuto():这行没有引起编译器警告吗?程序内存"IS"rom"。这些函数名是旧C18编译器的一个延续,您总是需要指定字符串是在ROM中还是在RAM中。XC8更智能,您可以使用putsUSART处理所有内容,编译器会进行排序。在ROM中,PuTrSuxAtter()函数可能会更高效一些。
|
|
|
|
|
|
非常感谢你的回复!为了用输入值(从RCREG读取)在位置0填充char数组,然后用0在位置1填充char数组,我使用了几种方法,以便传递nul-.ion。不幸的是,我仍然无法让它工作。我相信在HITECH C中,nul-.ion是由putsUSART()函数发送的,因为当我使用该命令并查看终端上的输出时,无论我是否添加了nul-.ion,都会跟随nul-.ion。我对编程知识一窍不通,尽管我花了很多时间试图弄清楚这一点,但我唯一的答案就是继续寻找和尝试。最后,我将找出阻止我通过串行发送存储信息的原因。最终,这是我唯一的问题!我可以发送数据,我相信有机会我甚至可以接收它,但是我不能得到存储的信息发送!感谢DarioG和RIC提供额外的输入。我曾尝试使用PUTRS,也没有这样的运气。这只是一个普遍缺乏编程知识的问题!
|
|
|
|
|
|
我们可以进一步建议,如果你告诉我们你的代码现在看起来…
|
|
|
|
|
|
我不太清楚如何正确地发布代码,所以请原谅我只是把它放在帖子里!目前,我正在尝试使用这段代码:include
|
|
|
|
|
|
我发现了一个叫做PIC18模拟器IDE的简洁的小程序,它在你的计算机上模拟你的微控制器,当我把我的代码装入这个程序并使用内置的硬件USART工具时,我的程序就完美无缺地工作了!也许这个问题不是我的代码而是我的电路?!
|
|
|
|
|
|
可能你打算:OcCONBITS.IrCF=0XB111;
|
|
|
|
|
|
可能你打算:OcCONBITS.IrcC0xB111;尝试0xB111产生奇怪的结果,但是0B111仍然工作。不幸的是,它也解决不了我的问题!
|
|
|
|
|
|
一般来说,我建议不要使用模拟器,因为它们通常只提供另一层bug。虽然您可能正确(在本例中)故障在于您的硬件,但至少您知道并且能够检查和理解这一点。
|
|
|
|
|
|
一般来说,我建议不要使用模拟器,因为它们通常只提供另一层bug。虽然您可能正确(在本例中)故障在于您的硬件,但至少您知道并且能够检查和理解。我当然不会把模拟器正确地工作作为这里的最终全部答案,我确实认为这在识别代码至少告诉处理器做我想让它做的事方面是有用的!我不太确定我的错误在哪里,但是随着我发现的每一条信息,我感觉我越来越近了!
|
|
|
|
|
|
实际上,您可能已经逃脱了:OSCCONbits.IRCF=111;纯属偶然。你已经明白了。
|
|
|
|
|
|
可以!我终于取得了一些进展!这个问题是特别涉及您所指出的ric,但它与我的USART的不正确初始化有关!根据数据表引脚RB1和RB4(TX/RX)需要设置为数字,因为它们是默认模拟。当使用内置函数OpenUSART()时,我完全忽略了确保这些引脚是数字化的,而当我使用自己的usart初始化时,我使用的是ADCON1=1;这显然是不起作用的!将其转换为ADCON1= 0B11111111;将所有引脚切换到数字解决了问题。现在我可以在我的电脑终端发送和接收字符。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:52 , Processed in 0.991211 second(s), Total 96, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1061