私はAtmega16 ICを使用して、出力ピンPORTC1を開いて500ms間LEDを点滅させようとしています。 AtmelStudio7で次のコードを使用すると、エラーが発生しました。エラーをクリックすると、数値1と "PORTC"の間のスペースを指しています。私は、コンパイラは理解していないと思います。「Cのピン1を指し示したい」と思って、「1」が別のところに行くと思います。どうぞ、私を正しい方向に向けるようにしてください。仕事とエラーが表示されませんコード:Atmega16 [期待値;前の数値定数]
#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ピンを設定するには
これは、値がマイクロコントローラのPORTCのレジスタアドレスと等しいマクロであり、これはまた、PORTCがuCのPORTCのビットフィールドを含む構造体または共用体でないことを意味します。 – Gaurav
'DDRC.n | = 1 >> >> 0の代わりに' DDRC | = 1 << n'などを使う必要があります( '>>'はあなたの例でも間違っています) – Ctx
助けてくれました。ありがとうございました!正しい方法はこれです DDRC | = 1 << n、 "n"はICのポート番号です –