Atmega16 [预期;在数字常量之前] 将输出名称与数字一起使用时
Atmega16 [expected ; before numeric constant] when using output names with numbers
我正在尝试使用 Atmega16 IC 打开其输出引脚 PORTC1 以使 LED 闪烁 500 毫秒。在 AtmelStudio7 中使用以下代码会出现错误 "expected ; before numeric constant",当我单击该错误时,它会将我指向数字 1 和 "PORTC." 之间的 space。我想,编译器不理解我想要 "point to pin C number 1" 并认为“1”去别的地方。请指出我正确的方向。不起作用并显示错误的代码:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC.1 |= 1>>0;
PORTC.1 &= ~(1>>0);
while (1)
{
PORTC.1 |= (1>>0);
_delay_ms(500);
PORTC.1 &= ~(1>>0);
_delay_ms(500);
}
}
但是,当我使用引脚 0(仅 DDRC、端口而不添加数字)时,它工作正常。工作代码示例:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC |= 1>>0;
PORTC &= ~(1>>0);
while (1)
{
PORTC |= (1>>0);
_delay_ms(500);
PORTC &= ~(1>>0);
_delay_ms(500);
}
}
这里的区别是"DDRC"和"PORTC"有效,但是使用"DDRC.1"和"PORTC.1"无效,显示以下错误"expected ; before numeric constant"。
在此先感谢您的帮助!
要将特定的 GPIO 引脚设置为输出,您应该使用这种方法:
DDRD |= 1 << pin_number;
DDRD |= 1 << 1; //Shift 1 for 1 bit = PD1 pin set to output.
同样的方法适用于所有寄存器。
要清除位:
DDRD &= ~(1 << pin_number);
DDRD &= ~(1 << 1); //Set PD1 to input
PORTC.1
不是有效的 C 语句,这就是您出现错误的原因。
我正在尝试使用 Atmega16 IC 打开其输出引脚 PORTC1 以使 LED 闪烁 500 毫秒。在 AtmelStudio7 中使用以下代码会出现错误 "expected ; before numeric constant",当我单击该错误时,它会将我指向数字 1 和 "PORTC." 之间的 space。我想,编译器不理解我想要 "point to pin C number 1" 并认为“1”去别的地方。请指出我正确的方向。不起作用并显示错误的代码:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC.1 |= 1>>0;
PORTC.1 &= ~(1>>0);
while (1)
{
PORTC.1 |= (1>>0);
_delay_ms(500);
PORTC.1 &= ~(1>>0);
_delay_ms(500);
}
}
但是,当我使用引脚 0(仅 DDRC、端口而不添加数字)时,它工作正常。工作代码示例:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRC |= 1>>0;
PORTC &= ~(1>>0);
while (1)
{
PORTC |= (1>>0);
_delay_ms(500);
PORTC &= ~(1>>0);
_delay_ms(500);
}
}
这里的区别是"DDRC"和"PORTC"有效,但是使用"DDRC.1"和"PORTC.1"无效,显示以下错误"expected ; before numeric constant"。 在此先感谢您的帮助!
要将特定的 GPIO 引脚设置为输出,您应该使用这种方法:
DDRD |= 1 << pin_number;
DDRD |= 1 << 1; //Shift 1 for 1 bit = PD1 pin set to output.
同样的方法适用于所有寄存器。
要清除位:
DDRD &= ~(1 << pin_number);
DDRD &= ~(1 << 1); //Set PD1 to input
PORTC.1
不是有效的 C 语句,这就是您出现错误的原因。