我正在寻找一个适用于PIC 16系列的优秀C编译器,适用于Windows.
一些同事使用bknudc,但有些人似乎不喜欢它.显然你不能有效地使用链接器,事实证明最好是在包含文件中设置所有代码.
SDCC看起来不错,但看起来它仍处于测试阶段,并且不易设置或不得不处理.
还有其他一些选择,根据他们自己的最佳选择.我找到了一些讨论这个主题的论坛,似乎没有人互相认同.MikroC,CCS(昂贵),HiTech,BoostC.
我希望得到一些关于什么是好的和什么是坏的真实信息.
如果我做对了,PIC16架构真的不是C友好的吗?是否有编译器让程序员在ANSI C中工作?还有一种设置足够好的调试器的方法吗?
我一直在考虑"继续"进行MCU编程,但问题是我从未使用过任何微控制器或类似产品.据我所知,AVR和PIC是业余爱好者中最常见的微控制器,显然大多数人建议AVR为像我这样的新手,因为它的"C友好架构"(无论这意味着什么),它的C编译器及其大型业余爱好者社区.AVR或PIC或其他任何东西,对我来说并不重要,我希望能够在Linux上用一个好的编译器编写C代码,并最终能够在我的MCU上添加一个LCD屏幕(只是为了输出基本的ASCII字符,也许在这里和那里画几个像素,单色,没什么大的).我不需要任何复杂或极快或甚至大量的记忆,因为我喜欢有限(但不是太有限)的事情,你需要一些创造力来实现目标.我在互联网上环顾四周,但我发现的大多数页面已经有几十年的历史了,并且/或者没有提出我可以购买的任何好的'包'(这将支持上面提到的内容).这就是为什么我问你,希望你能帮助我一点.:)
谢谢,霍法.
我正在使用Visual Studio编写桌面应用程序,我发现它非常用户友好且易于使用.
如果可能,我还想在Visual Studio中编写嵌入代码.例如,是否可以使用C18或任何其他类似的基于C语言生成PIC18Fxxx系列的.hex文件?
当我在MPLAB中运行我的程序时.(项目向导 - > PIC16F877A - > Hi Tech Ansi C编译器 - > RUN)错误[141] C:\ Users\WhyWhy\Desktop\test.c; 1.22无法打开包含文件"16F877A.h":没有这样的文件或目录
我在哪里可以找到16F877A的头文件?
在一个微控制器程序中,我有一些指令,除了默认情况,我想为交换机中的每个案例执行一些指令.但是,我不想为每个案例编写函数调用或使用宏.
因为这适用于以3-7Mhz运行的微控制器,速度和代码空间非常重要.例如:
switch(letter)
{
case a:
ShowApple();
printf("You entered an english letter.");
break;
case b:
ShowBananna();
printf("You entered an english letter.");
break;
...
case z:
ShowZebra();
printf("You entered an english letter.");
break;
default:
printf("You did not enter an english letter. Silly human!");
break;
}
Run Code Online (Sandbox Code Playgroud) 我听说可以使用内置的bootloader和你编写的内核为PIC单片机编写一个操作系统.我也听说它必须是RTOS.
谢谢!
... aaaaand noone提及gcc.如果PIC适合C,谷歌搜索引导我只在论坛上发生火焰战争,并且他们(至少6系列)30指令汇编程序非常容易学习.
gcc是否支持PIC16?
我使用一些 PIC 微控制器和 nRF24L01 无线 RF 模块创建了一个小型无线网络。其中一张 PIC 是 PIC18F46K22,它用作向所有其他 PIC 发送命令的主控制器。所有其他(从)微控制器都是PIC16F1454,到目前为止共有5个。这些从控制器连接到各种设备(主要是灯)。主微控制器用于向这些设备传输命令,例如打开或关闭灯。这些设备还将所连接设备的状态报告回主控制器,然后将其显示在 LCD 屏幕上。整个设置工作得非常好。
\n\n问题是,任何拥有这些廉价 nRF24L01 模块的人都可以简单地监听主控制器发送的命令,然后重复这些命令来控制设备。
\n\n加密命令\xe2\x80\x99不会有帮助,因为这些是简单的指令,如果加密,它们将始终看起来相同,并且不需要解密它就能够重新传输消息。
\n\n那么我该如何在这个系统中实现一定程度的安全性呢?
\n我在函数中尝试了此操作,但在 MPLAB X IDE 中没有看到任何结果。为什么?在哪里可以找到打印的结果?我使用的是 pic32 Curiosity 开发板和 XC32。
int a = 5;
int b = 10;
printf("a = %d\nb = %d\n", a, b);
Run Code Online (Sandbox Code Playgroud)
有什么信息吗?提前致谢!