PIC18 IO-Port noobie与XC8有关

问题描述 投票:0回答:2

我在AVR工作多年,用PIC18F46K42开始我的第一个PIC项目。使用实际的MPLAB v5.15和XC8编译器v2.05(设置为C99标准)。 (在微芯片论坛上注册几天不起作用......)

现在我有一个基本的问题,让一个简单的IO端口访问工作:

首先将RC6设置为输出:

TRISC = 0b10111111; 

现在尝试读取IO-Port RC6:

uint8_t LEDstate = PORTCbits_t.RC6; // auto completition of PORTC.. command by xc8

=>编译错误:意外类型名称'PORTCbits_t':预期表达式

在许多教程中发布的命令“PORTCbits.RC6,没有”_t“根本无法被编译器识别

然后尝试写入IO-Port RC6:

LATCbits_t.LATC6 = 0; // auto completition of LATC.. command by xc8

=> compinling错误:期望的标识符或'('

命令“LATCbits.LATC6,没有”_t“,也发表在许多教程中,编译器根本无法识别

阅读xc8手册和数据表并没有什么帮助...我想,我错过了这个IDE /编译器的基本功能。也许在设置中......

任何文件的想法或建议都非常感谢!!

非常感谢!!

pic mplab xc8
2个回答
0
投票

您可能需要考虑使用MCC(MPLAB代码配置器)。它将使外设更容易 - 即使只是简单的引脚I / O.

它还可以更轻松地跟踪您的资源。

您可以为引脚创建别名,然后MCC将为您提供干净的宏,如:

#define LEDState_SetHigh()            do { LATCbits.LATC6 = 1; } while(0)

1
投票

..._t错了,这是一个类型定义。看看部分标题(pic18lf46k42.h),第46579行。在下一行定义的实际端口结构称为PORTCbits。为了识别此名称,您需要在源代码中使用#include <xc.h>,并确保在MPLAB项目中设置了正确的部分。

我一直在使用这种表示法,它始终有效,因为引脚存在且满足上述两个条件。例:

https://github.com/felis/stirrer/blob/f-desk/board_control/code/stirrer/bsp.h#L58

© www.soinside.com 2019 - 2024. All rights reserved.