Ola,
Gilliard, eu também não trabalho com MikroC, mas procurando na net sobre o assunto, tem algumas coisas que seria interessante vc olhar:
- Nesse seu último código, o TRISB=0 não existe mais. Não seria necessário incluir?
- if (Button(&PORTD, 3, 50, 0)) - Porque vc usou 50milisegundos? Nos exemplos que achei, eles usam apenas 1. E o porque você está verificando em 0 o último parametro? Pelo o que eu entendi no manual, se vc quer verificar se está pressionado, você tem que usar 1. Tente checkar isso.
- Você não está usando conversor AD né? Então não seria correto usar isso:
- Código: Selecionar todos
ADCON1 = 0b00000000; //Todos os pinos digital
- Pelo o que eu entendi, vc está deixando td sempre setado para 1 e a hora de checkar vc verifica se o botão não tem energia. Caso nào tenha, é o botão pressionado. Tem certeza que é assim? Eu achava que era td setado para 0 e dai a cada coluna vc habilitava para 1 e verificava se naquela coluna tinha algum botão pressionado, com valor lógico 1.
- E o que exatamente está acontecendo? Você disse que não tá funcionando após o menu(). Mas exatamente o que acontece? Você tem a mensagem: "Aguardando Digito..." aparecendo? Se sim, não tem como você imprimir o valor de tecla depois do Delay_ms(20), para ver o que está vindo de tecla?
Acho que o código seria + - assim:
- Código: Selecionar todos
Lcd_custom_out(1,1,"Aguardando Digito..."); // deixa a palavra "Aguardando Digito..." no LCD
Delay_ms(20);
//-------------------------------
while (tecla==0) tecla=teclado(); // Aguarda algo ser digitado
Lcd_custom_Cmd(Lcd_Clear); // Limpa o LCD 16x2 //
Lcd_Custom_Chr(1,1, tecla); //Imprimi tecla pressionada
Delay_ms(5000); //5 segundos de delay.
if(tecla=='1'){ // Se for digitado 1
Se nem o LCD está funcionando, eu te aconselho a começar a verificar o LCD, usando um exemplo bem simples:
- Código: Selecionar todos
char *text = "mikroElektronika";
void main() {
TRISB = 0; // PORTB is output
Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,2,0,3); // Initialize LCD on PORTB
Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Turn off cursor
Lcd_Custom_Out(1, 1, text); // Print text at LCD
}
Depois avisa o que acabou acontecendo com esse seu problema!
[]'s