빌드 시키면 위 짤처럼 에러가 뜨는데
교재에 있는 소스코드 그대로 갖다 넣었는데 왜 에러가 뜨는건지 모르겠어
아래가 내가 넣은 소스코드인데 잘못된 부분이 어디야??
void lcd_busy(void)
{
/*
DDRA = 0x00;
do {
PORTC &= 0b00000110;
PORTC |= 0b00000010;
PORTC |= 0b00000100;
} while(PINA & 0x80);
DDRA = 0xff;
*/
_delay_ms(50);
}
void lcd_command(unsigned char cmd)
{
lcd_busy();
PORTA = cmd;
PORTC &= ob00000110;
PORTC &= ob00000101;
PORTC |= ob00000100;
PORTC &= ob00000001;
_delay_us(1);
}
void lcd_init()
{
DDRA = 0xff;
DDRC - DDRC | 0x0f;
_delay_ms(15);
PORTA = 0b00110000;
PORTC &= 0b00000000;
_delay_us(4100);
PORTC &= 0b00000000;
_delay_us(100);
PORTC &= 0b00000000;
lcd_command(0b00111000);
lcd_command(0b00001000);
lcd_command(0b00000001);
lcd_command(0b00000110);
lcd_command(0b00001111);
}
void lcd_data(unsigned char byte)
{
lcd_busy();
PORTC |= 0b00000001;
PORTC &= 0b00000101;
PORTC |= 0b00000100;
_delay_us(50);
PORTA = byte;
_delay_us(50);
PORTC &= 0b00000111;
}
void lcd_string(char *str)
{
int i=0;
while(1) {
if (str[i] == '\0') break;
lcd_data(str[i++]);
}
}
void lcd_display_clear()
{
lcd_command(0b00000001);
}
void lcd_entry_mode(int ID, int S)
{
unsigned char cmd;
cmd = 0b00000100;
if (ID == 1) cmd = cmd | 0b00000010;
if (S == 1) cmd = cmd | 0b00000001;
lcd_command(cmd);
}
void lcd_display_OnOff(int D, int C, int B)
{
unsigned cmd;
cmd = 0b00001000;
if (D == 1) cmd = cmd | 0b00000100;
if (C == 1) cmd = cmd | 0b00000010;
if (B == 1) cmd = cmd | 0b00000001;
lcd_command(cmd);
}
void lcd_cursordisplay_shift(int SC, int RL)
{
unsigned cmd;
cmd = 0b00010000;
if (SC == 1) cmd = cmd | 0b00001000;
if (RL == 1) cmd = cmd | 0b00000100;
lcd_command(cmd);
}
void lcd_display_position(unsigned char row, unsigned char col)
{
unsigned cmd;
cmd = 0b1000000 | ((row-1)*0x40+(col-1));
lcd_command(cmd);
}
이 쉬발놈아 0b가 아니고 ob(알파벳 오 비)잖아 개색갸!!
PORTC &= ob00000110;
호고곡 그런 병신같은 실수를
avr 정식 크로스 컴파일러가 병신인줄 알고 설렜잖아
그냥 코드비젼써라 조언이다
#EQU ob00000110 = 0b00000100;
이렇게 해보세요