anteriormente uma variavel chamada keypadPort que define o PORT onde sera conectado o nosso hardware do teclado. char keypadPort at PORTD; Keypad_Key_Press() Efetua a leitura de uma tecla pressionada, retornando o valor da tecla (1 16) ou 0 caso nenhuma tecla seja pressionada. Keypad_Key_Click() Efetua a leitura de uma tecla pressionada, retornando o valor da tecla (1 16) ou 0 caso nenhuma tecla seja pressionada, porem e uma funcao com propriedades de bloqueio, ou seja, quando chamada, aguarda o pressionamento da tecla, bloqueando o processo do programa durante a espera do pressionamento da tecla. Notem que esta biblioteca do MikroC PRO, embora nos ajude a interfacear o teclado nao retorna o valor direto das teclas e sim a posicao dela na matriz. Vejamos como ficou o nosso codigo completo utilizando o compilador MikroC PRO. /****************************************************************************** JL Audio www.esquemas .org Data: 04/2012Autor: Jean CarlosProjeto: Teclado MatricialMicroprocessador: PIC18F4550Clock do processador: 48MHzEstacao de desenvolvimento: PK2Lab V 1.1Compilador: MikroC PRO V 4.60.0.0Versao atual: 1.0Descricao: Implementacao de leitura de teclado matricial na placa PK2Lab, atraves de biblioteca do MikroC PRO. *******************************************************************************/// Inicializacao do teclado no PORTD char keypadPort at PORTD; // Configuracao do LCD da placa PK2Lab V.1.1 sbit LCD_RS at RB2_bit;sbit LCD_EN at RB3_bit;sbit LCD_D4 at RB4_bit;sbit LCD_D5 at RB5_bit;sbit LCD_D6 at RB6_bit;sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB2_bit;sbit LCD_EN_Direction at TRISB3_bit;sbit LCD_D4_Direction at TRISB4_bit;sbit LCD_D5_Direction at TRISB5_bit;sbit LCD_D6_Direction at TRISB6_bit;sbit LCD_D7_Direction at TRISB7_bit; //******************************************************************************// Variaveis Globais char tecla, tecla_antiga = 0; //******************************************************************************// Rotinas Auxiliares //******************************************************************************//Rotina Principal void main(){TRISA = 0b00000000;PORTA = 0b00000000;TRISB = 0b00000000;PORTB = 0b00000000;TRISC = 0b00000000;PORTC = 0b00000000;PORTD = 0b00000000;TRISE = 0b00000000;PORTE = 0b00000000;ADCON1 = 0X0F; // Entradas digitais. Keypad_Init(); // Inicializa o Teclado Matricial Lcd_Init();Lcd_Cmd(_Lcd_Cursor_Off);Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"*** PK2Lab ***");Lcd_Out(2,2,"Tecla Press:");Delay_ms(100); while(1){tecla = Keypad_Key_Press(); // Efetua leitura do teclado if(tecla != 0){ switch (tecla) // Efetua conversao para impressao { case 1: tecla = 49; break; // 1 case 2: tecla = 50; break; // 2 case 3: tecla = 51; break; // 3 case 4: tecla = 65; break; // A case 5: tecla = 52; break; // 4 case 6: tecla = 53; break; // 5 case 7: tecla = 54; break; // 6 case 8: tecla = 66; break; // B case 9: tecla = 55; break; // 7 case 10: tecla = 56; break; // 8 case 11: tecla = 57; break; // 9 case 12: tecla = 67; break; // C case 13: tecla = 42; break; // * case 14: tecla = 48; break; // 0 case 15: tecla = 35; break; // # case 16: tecla = 68; break; // D } if(tecla != tecla_antiga) // Atualiza a ultima tecla pressionada { tecla_antiga = tecla; } Lcd_Chr(2,15,tecla); // Imprime a tecla pressionada no LCD}}//while(1)}//main Abaixo o video do projeto funcionando! Bom projetos a todos e ate a proxima!