我在AVR工作多年,用PIC18F46K42开始了我的第一个PIC项目。使用实际的MPLABv5.15和XC8编译器v2.05 (设置为C99标准)。(在microchip论坛上注册在几天内不起作用...)
现在,我遇到了一些基本问题,无法让简单的IO端口访问正常工作:
首先将RC6设置为输出:
TRISC = 0b10111111; 现在正在尝试读取IO端口RC6:
uint8_t LEDstate = PORTCbits_t.RC6; // auto completition of PORTC.. command by xc8=>编译错误:意外的类型名称'PORTCbits_t':需要表达式
编译器根本无法识别在许多教程中发布的命令"PORTCbits.RC6“,但没有"_t”
然后尝试写入IO端口RC6:
LATCbits_t.LATC6 = 0; // auto completition of LATC.. command by xc8=>编译错误:需要标识符或'(‘
编译器根本无法识别命令"LATCbits.LATC6“,但没有"_t”,该命令也在许多教程中发布
阅读xc8手册和数据手册并没有真正的帮助...我想,我在这个IDE /编译器中遗漏了一些基本的东西。也许在设置中..。
非常感谢您对文档的任何想法或建议!
非常感谢!
发布于 2019-05-18 05:29:41
您可能需要考虑使用MCC (MPLAB Code Configurator)。这将使使用外围设备变得更容易-即使是简单的引脚I/O。
它还可以更容易地跟踪您的资源。
您可以为引脚创建别名,然后MCC将为您提供干净的宏,如下所示:
#define LEDState_SetHigh() do { LATCbits.LATC6 = 1; } while(0)发布于 2019-04-25 02:00:42
..._t是错误的,它是一个类型定义。看一下部件标题(pic18lf46k42.h),第46579行。在下一行定义的实际端口结构称为PORTCbits。为了识别这个名称,您需要在源代码中输入#include <xc.h>,并确保在MPLAB项目中设置了正确的部分。
我一直在使用这个符号,它总是有效的,假设引脚存在,并且满足上述两个条件。示例:
https://github.com/felis/stirrer/blob/f-desk/board_control/code/stirrer/bsp.h#L58
发布于 2019-09-26 23:02:40
正如奥列格所提到的,..._t是不正确的。将这一行改为下面的一行,它将不会出现任何问题。
uint8_t LEDstate = PORTCbits.RC6; // auto completition of PORTC.. command by xc8我刚刚在你的芯片上尝试了下面的代码,它编译起来没有任何问题。
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <stdint.h>
int main(int argc, char** argv) {
uint8_t LEDstate = PORTCbits.RC6; // auto completition of PORTC.. command by xc8
return (EXIT_SUCCESS);
}https://stackoverflow.com/questions/55835445
复制相似问题