完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
Hello @ ALL,我使用XC8编译器1.33 PRO,并希望使用PICTF函数在StiDO.H中使用PIC18F46K80。编译器创建警告(759)表达式,在doprnt.c行542.IfI编译标准模式或自由模式中的代码时,没有出现警告。不幸的是,在每个编译器模式中,代码没有调用函数putch()。n其他线程,并尝试了工作区设置NVMCON1寄存器,但用PIC18F46K80不工作。没有寄存器NVMCON1。我还阅读了PIC18F46K80的勘误表,但是没有解决办法来解决这些问题。我的编码是:include
|
|
相关推荐
16个回答
|
|
|
你好,谢谢你的回复。我读了这些线程,看起来你是对的,但我没有得到它的工作,我很抱歉。我创建了POWUPUP。作为汇编文件放在我的项目的源目录中。在Project属性中的“预处理和消息”选项类别中,选中复选框“PrimeProtoServices文件”,但编译器创建错误“Buff/Deule/ProtoePoopUp.Pr:25947:错误:(800)未定义的符号“NVMCON1”。如果我在项目中放置链接器选项+NVMReg,G&T.XC8链接器&附加选项-gt;ErraTATE框:编译器抛出错误“错误:(923)未知子选项“nvMrg”。对不起,如果我做了愚蠢的事情,但我看不出真正的解决办法。我使用PIC18F46K80。最好的问候。
|
|
|
|
|
|
我记得很差,或者勘误表只适用于“47 K”图片吗?
|
|
|
|
|
|
是的,这个线程似乎证实了HTTP://www. McCHIP.COM/FUMMS/M96517ASPX
|
|
|
|
|
|
但这是K40问题,而不是K80问题。出于某种原因,OP认为K80上的编码问题可以通过实现K40特定的补丁来解决,并且它甚至不会编译,因为K80没有令人不快的寄存器。出去。
|
|
|
|
|
|
看来你是对的。但是WTF是不是错了呢?好——我唯一不确定的另一件事是:XC8手册中的示例显示了在首次调用printf()之前定义的putch()函数。因此可以得出结论,要么函数体本身,要么至少putch()的原型必须在第一次调用printf()之前可用。@romartin在文件的顶部加上“extern void putch(char Zeichen)”——跟在#include.(或者把它放入您自己的include文件中。)如果编译器抱怨(对此不确定),您可以删除关键字“ext.”。
|
|
|
|
|
|
我也在考虑“优化掉”或者,在引导时执行得太快,因此不会被注意到:这就是为什么总是处于*内部*循环,并且可能在引导时有100mS或更多的延迟的原因……
|
|
|
|
|
|
“CiZigaGe看起来更像是一些“不可用的”,因此不称为“”,至少他说“不叫”。虽然这些问题总是有问题的,PICkit似乎只用于编程,很少用于调试。
|
|
|
|
|
|
您好,谢谢您的评论。我将语句“extern void put c h(char Zeichen);”放在main.h头文件中,该文件包含在main.c文件的顶部。编译器接受此行,但结果与以前相同。当我编译代码并且void putch(char Zeichen)函数不工作时,我总是看到消息“C:Program Files(x86)Micro.xc8v1.33source.doprnt.c:542:warning:(759)表达式不生成代码”。也许是因为它被优化了吗????WriteLCD(char Zeichen)的功能如下:无效的WriteLCD(char Zeichen){Write23S17(OLATB,Zeichen){Write23S17(OLATB,Zeichen);//Schrei的Zeichen“Zeichen”auf显示写23S17(OLATA,0XC0,OLATA,0xC0);//位6(E)=1元位6(E)=1元位7(6(E)=1元位7(1元位7(1元位7(RS)=1元位7(1元位7(1元位7(RS)=1元位7(1元位7(RS)=1元位7(RS)=1元位7(1元位7_u._us(500);}它适用于我。如果我把它称为LCD显示立即显示字符值,请不要怀疑代码。它是为PICDEM PIC18探险者演示板编写的,安装了MCP 23 S17来控制车载LCD。_u._us(500)在PLIB库中,并且是必需的,因为如果不读取它的忙标志,则显示需要更长的时间。演示板的硬件设计不是用于读取显示端口:-(最好的问候)
|
|
|
|
|
|
我还是会尝试
|
|
|
|
|
|
你不需要一个原型,因为你的代码不调用它;编译器的库代码正在调用它。图书馆代码有必要的原型。我已经看到了来自DOPRTN.C的警告,在更高的警告级别。您可能希望将警告级别降低到“0”,以减少无意义的警告。您没有使用编译器的当前版本是否有原因?你是否在你的程序中设置了一个断点,看看你是否真的到达那里?
|
|
|
|
|
|
职业模式总是给我一个理由。
|
|
|
|
|
|
类似地,可以创建putc:int lcd_snaps.(._t*.,int(*funcputc)(char))、//用于调试、缓冲区快照和bitmaplcd_snaps.(R1,lcd_putc);lcd_snaps.(R1,putch);lcd_snaps.(R1,slave_putc);//2.4GHzuartint lcd_snaps.(._t*.,int(*funcputc)(char)){re re re re re打开函数PultCc(“a”);}尝试这个。TXREG=c;}你不需要像jtemples所说那样的原型。比如,当你调用delay和delay时,希望得到一些freq.def.printf,将调用基函数putch放在stdout上。
|
|
|
|
|
|
你必须创建PoCH,这正是他在邮政编码1中显示的代码。
|
|
|
|
|
|
感谢上次的回复。@jtemples:我仍然使用编译器1.33,因为我有几年前HPA结束的PRO。同时,我已经实现了HPA,所以我可以使用编译器1.42。新版本似乎没有出现这个问题。因此我放弃当前的问题,继续使用1.42。我希望这对你没关系;-最后,我想再次感谢大家的大力支持。
|
|
|
|
|
|
嗨@all,很抱歉,但是我想再次请求你的帮助,因为我对这个话题有了新的结果。我现在使用XC8 1.42Pro,并且当前的问题没有消失。我尝试用我的ICD3调试代码,我发现调用函数Cuh()只在调试代码的时候调用。如果我在putch()函数中放置一个断点,它就会对每个字符停止,并将其写入LCD。在该文件中,我切换所有代码保护位和表读取位和表写入位关闭。如果我将使用调试器,MPLAB告诉我,所有的位都被设置,调试器不能使用这个位集。因此,MPLAB将在开始之前禁用所有这些位。我对这些消息很无奈。如果有人能再帮我一把,我会很高兴。
|
|
|
|
|
|
听起来那个文件中的设置没有被你的项目使用。你把头文件包括在你的C文件中了吗?通常我只是把配置设置放在Meal.C文件的开始,因为它们只会出现在C文件中。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1098浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:21 , Processed in 1.012071 second(s), Total 103, Slave 86 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2551