问题标签 [c18]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3000 浏览

bit-manipulation - PIC C18:从一个字节中读取位

我有一个非常基本的问题。但是,无论我尝试过什么,我都无法成功实现这一点。

我有一个移位寄存器(74LS164)连接到 PIC18F2550,硬件配置如下:

LED 连接到 74LS164 的输出引脚以查看其状态。我有一个 8 位变量声明为unsigned char. 我想将此变量的位发送到移位寄存器。移位寄存器具有内部触发器,其输出命名为 Q0-Q7。第一个发送的位加载到 Q0,当您发送第二个位时,前一个 Q0 移动到 Q1,新发送的位到达 Q0,并且在您发送后续位时如此继续。发送完成后,变量的 LSB 应该在移位寄存器的 Q0 上,MSB 会在 Q7 上。

我的代码是这样的(语言是 C18):

上面的代码没有按我的意愿运行。当我运行它时,所有的 LED 都会亮起,就好像我已经加载0b11111111ucRegister变量中一样。

但是,以下一个效果很好:

我的代码有什么问题?我认为错误最有可能在线上SCLCD_DATA = ((ucRegister & 0b10000000) == 0b10000000) ? 1 : 0;,但无论我怎么看,它对我来说都很好。我的代码有什么问题?

任何帮助将不胜感激。

0 投票
3 回答
1980 浏览

embedded - PIC C18:将双精度转换为字符串

我正在使用 PIC18F2550。使用 C18 语言对其进行编程。
我需要一个将双精度转换为字符串的函数,如下所示:

在主程序中这样调用:

0 投票
4 回答
22817 浏览

c - 以 4 个单字节解析 IP 地址字符串

我正在使用 C 语言在 MCU 上编程,我需要将包含 IP 地址的以空字符结尾的字符串解析为 4 个单字节。我用 C++ 做了一个例子:

此代码在新行中的每个字节打印 192、168、0 和 1。现在我需要单个 char 中的每个字节,例如 char byte1、byte2、byte3 和 byte4,其中 byte1 包含 1,byte4 包含 192... C。 :(

0 投票
1 回答
912 浏览

c - C18:在代码中表示 LONG 和 FLOAT 常量

long代码中的和数字是否需要特殊表示float

在使用 C/C++ 进行计算机编程时,我们f在一个类型化的常数后面加上一个字母,float以区别于double类型。在 C18 语言中,我们应该/必须做同样的事情吗?

长款呢?

0 投票
2 回答
283 浏览

c - C18:未使用的库函数会占用 EPROM 中的空间吗?

图书馆.h

主程序

我有一个库文件,其中包含很多函数定义。由于未使用的库函数,生成的机器代码大小会增加吗?或者编译器会通过忽略那些未使用的函数来优化代码吗?

IDE:MPLAB 8.43
编译器:MCC18 3.34
PIC:18F2550

0 投票
0 回答
734 浏览

c - Microchip C18裸函数

有人知道在 C18 编译器上声明裸函数的方法吗?

裸函数是指没有任何结语和序言的函数。

在 gcc 中我使用:

也许是一个#pragma 或一些技巧来获得相同的结果......??

谢谢!

0 投票
4 回答
2051 浏览

c - 为什么这个 C 宏会导致语法错误?

这是我第一次在 C 中使用宏,我试图用宏替换我通常放入函数中的大部分代码。这是一个经常使用的中断的一部分,因此我需要尽可能地优化它。阅读文档后,我发现编译器不支持函数内联,我想避免函数调用开销。

代码本身将数据发送到串行输入并行输出移位寄存器,据我所知,没有更短的方法可以编写我需要的代码。

我正在使用 C18 编译器版本 3.41 和 MPLAB X IDE。

所以这是我以函数形式使用的代码:

我已经把函数变成了这个宏:

那么我做错了什么?

更新:我删除了评论,现在在不同的位置出现语法错误。

0 投票
1 回答
1446 浏览

usb - Microchip PIC (MPLAB/C18) 的 USB HID 代码中的链接器错误

我正在尝试为基本的 USB HID 功能编译一些代码。我正在使用带有 MPLAB 8.43 和 Microchip C18 编译器的 PIC18F14K50。

我正在使用 Microchip 网站上的一些标准文件。这是我的 C 文件这是我的头文件

构建时出现以下错误:

执行:"C:\Program Files\Microchip\mplabc18\v3.40\bin\mplink.exe" /p18F14K50 /l"C:\MCC18\lib" /k"C:\MCC18\bin\LKR" "usb_function_hid. o" "usb_device.o" "enumeration.o" "usb_descriptors.o" /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.cof" /M" C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.map" /W

MPLINK 4.40,链接器

设备数据库版本 1.3

版权所有 (c) 1998-2011 Microchip Technology Inc.

错误 - 在文件“./usb_function_hid.o”中找不到符号“HIDDescriptor1”的定义。

错误:1

链接步骤失败。

HIDDescriptor1符号出现在代码中的 2 个位置:C 文件的 PasteBin 行 173 和头文件的 PasteBin 行 356。

此代码直接来自 Microchip。我不确定为什么它不会链接。我认为要么它是为另一个版本的编译器设计的,要么我缺少一些外部依赖项,或者我缺少一些编译器/链接器开关。

关于我需要做什么来构建它的任何想法?

0 投票
2 回答
34827 浏览

include - 在 MPLAB X IDE 中使用外部头文件

我有一个包含一些 .h 和 .c 文件的文件夹,我想在我的项目中使用头文件。

我已经使用“添加现有项目”将它们包含在我的项目的“头文件”文件夹中,但是当我尝试“#include”它们时,编译器(mplabc18\v3.41)说“无法找到文件 xyz.h”

那么,我应该怎么做才能使用这些文件而不将它们复制到项目文件夹中?

0 投票
2 回答
2171 浏览

c - C18 Microchip 编译器和 strcmp 函数

我想比较两个字符串:

第一个字符串在我的 main 上方声明:

当我想与 const 字符串进行比较时,我输入了以下行:

该函数从不返回零,解决方案和正确的类型转换是什么?strcmp 是同样的问题!