C语言 Atmega16 [预期;在数字常量之前] 使用带有数字的输出名称时



我正在尝试使用 Atmega16 IC 打开其输出引脚 PORTC1 以闪烁 LED 500 毫秒。 在 AtmelStudio7 中使用以下代码会给出错误"预期 ;在数字常量之前",当我单击错误时,它将我指向数字 1 和"PORTC"之间的空格。我想,编译器不明白,我想"指向引脚 C 编号 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,PORT 不添加数字)时,它工作正常。工作代码示例:

#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"不起作用,显示以下错误"预期;在数字常量之前"。提前感谢任何帮助!

若要将特定的 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 语句,这就是您出现错误的原因。

最新更新