我正在尝试使用 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 语句,这就是您出现错误的原因。