Salve, brasilma!
As dicas estão corretas. Ponto e vírgula finaliza um comando no C, então, se a sua expressão tem que deslocar bits pra esquerda, a codificação que o xultz citou é a correta. Se bem que, dependendo das precedências, talvez nem os parênteses sejam necessários. Precisa ver o mapa de precedências.
Seu problema maior é como o barboza citou, sinal de igualdade no DEFINE.
O correto é como ele citou ou então, não precisa nem dos parênteses:
- Código: Selecionar todos
#define GLCD_X_ADDR 0xB8
É só tirar o sinal de igual. O espaço em branco, entre a macro e a atribuição, é que define o valor da macro.
Vendo agora, tem mais alguns problemas tb, ehehehehehee
- Código: Selecionar todos
#define GLCD_X_ADDR = 0xB8
void glcd_data (uint8_t); // AQUI VC DEFINE UM PARÂMETRO DE ENTRADA, MAS, NÃO ESPECIFA O NOME DA VARIÁVEL!
void GLCD_CLEAR (void)
{
uint8_t base_X;
uint8_t base_Y;
glcd_data = GLCD_X_ADDR || base_X; << erro
}
E, afinal, glcd_data é uma variável ou é uma função?
Se for uma função, vai devolver algum dado?
Se glcd_data for uma variável, a declaração poderia ser:
- Código: Selecionar todos
unsigned char glcd_data;
Quem é a variável global? Diz aí!
Se vc for fazer uma função pra calcular esse parâmetro, e ele for usado em somente um processo, o melhor a fazer é uma função que devolva esse parâmetro, não usar uma variável global.
Vc usa somente dentro da função que utiliza o dado, e depois da função executada, a memória usada é liberada.
[]'s