SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Leitura de teclas e teclado matricial

Prof.MSc.Rodrigo Maximiano Antunes de Almeida

           Universidade Federal de Itajubá


         rodrigomax@unifei.edu.br




                  ELT024    Leitura de teclas e teclado matricial
Display de 7 segmentos




      Revisão




      ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos
                     Multiplexação dos displays




• Multiplexar: Consiste em combinar diversos sinais num único
  canal de transmissão
• Vantagens
    • Redução de custos com cabeamento e tamanho de placa
    • Utilização de uma quantitade maior de dispositivos que saídas
       disponíveis
• Desvantagens
    • Perda de tamanho de banda devido a efeitos de overhead
    • Discretização do tempo no acionamento dos dispositivos
    • Aumento da complexidade do sistema




                          ELT024    Leitura de teclas e teclado matricial
Display de 7 segmentos




      ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos
                           Multiplexação dos displays




Rotina para acionar displays de 7 segmentos multiplexados:
  1   colocar no barramento de dados o valor a ser mostrado no
      display X
  2   ligar o display X através da linha de comando
  3   esperar um tempo adequado para evitar flicker
  4   desligar o display
  5   escolher o próximo display (X+1)
  6   voltar ao passo 1




                                ELT024    Leitura de teclas e teclado matricial
Atenção




ATENÇÃO




 ELT024   Leitura de teclas e teclado matricial
Atenção




É sério, cai na prova!




       ELT024   Leitura de teclas e teclado matricial
Atenção




Cai MESMO!




  ELT024   Leitura de teclas e teclado matricial
Variáveis globais-locais


  • Armazenamento de dados dentro de uma biblioteca
      • Usado sempre que for necessário passar valores entre funções
        dentro de um mesmo arquivo ou armazenar valores que não
        podem ser perdidos ao longo da execução do programa. Ex: o
        display que está atualmente ligado
      • É feito através de variáveis "globais-locais"1
      • As variáveis devem possuir o atributo static
      • Usar sempre o menor tamanho possível pois estas variáveis são
        alocadas permanentemente, reduzindo a memória RAM
        disponível.
      • Devem ser inicializadas dentro da função principal da biblioteca



   1
     Global dentro do escopo da biblioteca, local pois não pode ser acessada
fora do arquivo
                               ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas




Leitura de Teclas




     ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos
                  Criação da biblioteca disp7seg




• Criação de um circuito para entrada de informação digital
    • A saída deve possuir apenas dois estados
    • O consumo de energia deve ser o mínimo possível
    • As tensões devem ser compatíveis com o circuito (TTL,
       CMOS, etc...)




                         ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                           Circuito básico



Exemplo Eletrônico




                     http://www.scienceprog.com/how-does-tri-state-buffers-
                               work/




                          ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                          Circuito básico



Exemplo Eletro-mecânico




                 http://www.labbookpages.co.uk/electronics/debounce.html -
                        Dr. Andrew Greensted




                          ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                           Debounce




• Problema de bouncing
    • Causado pela oscilação mecânica da chave
    • Pode gerar acionamentos indevidos no sistema
• Soluções
    • Via hardware através de circuito dedicado
    • Via software através de confirmação temporal




                        ELT024   Leitura de teclas e teclado matricial
Leitura de Teclas
                              Debounce

                      Circuito com bouncing




http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted

                           ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                            Debounce




• Debounce por hardware
    • Não gasta processamento
    • Protege o circuito contra surtos
    • Auxilia na estabilidade do sistema pois funciona como filtro
    • Gera delay de R × C na resposta




                         ELT024   Leitura de teclas e teclado matricial
Leitura de Teclas
                      Debounce




http://www.ikalogic.com/debouncing.php - Ibrahim Kamal




                   ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                              Debounce

               Circuito sem bouncing - debounce




http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted
                             (modificado)
                           ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                                Debounce




• Debounce por software
    • Consome tempo e recurso do processador
    • Não necessita de hardware ($$$) extra
    • Gera delay de acordo com a rotina desenvolvida
    • É preciso conhecer aproximadamente o tempo de estabilização
      da chave
• Ex: Para debounce de 150 (µs) = 300 ciclos de clock 2




2
    Um PIC com cristal de 8MHz tem cada ciclo com duração de 0,5 (µs)
                             ELT024   Leitura de teclas e teclado matricial
Leitura de Teclas
                                  Debounce
1    void main(void) {
2        unsigned char valTemp, valAtual, tempo;
3        //inserir as configurações necessárias aqui
4        for(;;){
5            while(valAtual==PORTB);     //aguarda uma mudança na porta B
6            valTemp = PORTB;            //na mudança, aguarda um tempo
7            tempo = 22;
8            while (tempo > 0) {
9                if (valTemp == PORTB) { // se não mudar continua a contar
10                   tempo--;
11               } else {
12                   valTemp = PORTB;    // se mudar, atualiza e reinicia
13                   tempo = 22;
14               }
15           }
16           valAtual = valTemp;         //valor atualizado;
17           //Aqui a variável está pronta para ser usada
18       }
19   }
                               ELT024   Leitura de teclas e teclado matricial
Leitura Matricial




Leitura Matricial




     ELT024   Leitura de teclas e teclado matricial
Leitura Matricial
                              Introdução


  • Para cada tecla inserida no projeto, do modo apresentado até
      agora, é necessário um terminal de I/O no microcontrolador
  • Projetos que exigem muitos terminais são mais caros por
      vários motivos
        • O encapsulamento pode gerar até 10% de diferença no preço             3

        • O processo de inserção e soldagem de compontentes é mais
          caro 4
        • O tamanho e complexidade da placa aumenta (quantidade da
          camadas, roteamento, etc...)
  • Para entradas digitais tipo teclado existe uma alternativa:
      Leitura por varredura matricial
  3
   PIC18F4550 TQFP = US$4,42, DIP = US$7,00
  4
   Geralmente componentes com muitos terminais tem encapsulamento
SMD/QFP ou BGA
                            ELT024      Leitura de teclas e teclado matricial
Leitura Matricial
   Circuito básico




   ELT024   Leitura de teclas e teclado matricial
Leitura Matricial
                        Vantagens e Desvantagens




  • Na leitura por varredura matricial temos:
      • Aumento da quantidade de chaves que podem ser lidas                    5

      • Aumento da complexidade do software
      • Atraso na detecção de eventos (devido à varredura)




   5
    Para N terminais disponíveis no microcontrolador, temos um aumento de N
chaves para ( N )2 chaves
              2
                             ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                               Configurações

1    void main(void)
2    {
3        unsigned char i,j;
4    //armazena valor de cada chave
5        unsigned char chave[4][4] =    {{0,0,0,0},{0,0,0,0},
6                                        {0,0,0,0},{0,0,0,0}};
7    //habilita pull-up interno
8        BitClr(INTCON2,0);
9    //apenas AN0 é analógico, os demais são digitais
10       ADCON1 = 0b00001110;
11   //os 4 últimos bits são entradas, os 4 primeiros saídas
12       TRISB = 0xF0;
13       TRISD = 0x00;
14       for(;;)
15       {
16          //processo de varredura
17       }
18   }
                               ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                               Processo de Varredura

1    //processo de varredura
2
3    for(i = 0; i < 4; i++){
4        PORTB = 0xff;                     //liga todas as colunas
5        for(j = 0; j < 100; j++);
6        BitClr(PORTB,i);                  //desliga coluna a ser testada
7        for(j = 0; j < 100; j++);         //gasta tempo (garantir estabilidade)
8        for(j = 0; j < 4; j++){
9            if (!BitTst(PORTB,j+4)){      //realiza o teste para cada bit
10               chave[i][j] = 1;          //atualiza a matriz
11               BitSet(PORTD,j+4*i);      //mostra na porta D
12           }else{
13               chave[i][j] = 0;
14               BitClr(PORTD,j+4*i);
15           }
16       }
17   }

                                  ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                      Processo de Varredura




Atenção
O código não apresenta debounce em software para as teclas. Além
disso a operação com matriz gasta muito processamento e memória.
Para minimizar estes gastos podemos representar cada chave como
um bit numa variável.
A operação de debounce será apresentada nas funções a seguir.




                         ELT024   Leitura de teclas e teclado matricial
Leitura Matricial
                     Criação da biblioteca teclado


Funções necessárias para a criação de uma biblioteca que realiza a
leitura de um teclado matricial e disponibiliza as teclas
pressionadas:
   • Inicialização()
      • Configura os terminais de acionamento e de leitura
  • Debounce()
      • Realiza a leitura das teclas (varredura)
      • Realiza o debounce dos valores
      • Armazena internamente as teclas pressionadas
  • LerTeclas()
      • Retorna uma variável unsigned int
      • Cada bit desta variável representa uma tecla
      • 0 = desligado, 1 = pressionado


                           ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                         Criação da biblioteca teclado

1    #include "teclado.h"
2    #include "basico.h"
3    static unsigned int valor = 0x0000;
4    static unsigned char tempo;
5    void InicializaTeclado(void)
6    {
7        TRISB = 0xF0;        //quatro entradas e quatro saídas
8        BitClr(INTCON2,0);   //habilita pull-up
9        ADCON1 = 0b00001110; //apenas AN0 é analógico
10       SPPCFG = 0x00;       //a porta B não opera como paralela
11       tempo = 10;          //tempo para debounce
12   }
13
14   unsigned int LerTeclas(void)
15   {
16       return valor;
17   }

                               ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                         Criação da biblioteca teclado

1    void DebounceTeclas(void){
2        unsigned char i,j;
3        unsigned int valorNovo = 0x0000;
4        unsigned int valorAntigo = 0x0000;
5        for(i = 0; i < 4; i++){
6            PORTB |= 0x0F;         //desliga todas as colunas
7            BitClr(PORTB,(i));     //liga a coluna correspondente
8            for(j=0;j<100;j++);    //gasta tempo (estabilidade)
9            for(j = 0; j < 4; j++){//teste para cada bit, atualiza a variáve
10               if (!BitTst(PORTB,j+4)){
11                   BitSet(valorNovo,(i*4)+j);
12               }else{
13                   BitClr(valorNovo,(i*4)+j);
14               }
15           }
16       }
17       //continua

                               ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                         Criação da biblioteca teclado




18       //rotina de debounce
19       //a cada chamada o tempo é decrementado em 1un.
20       if (valorAntigo == valorNovo){
21           tempo --;
22       }else{
23           tempo = 10;
24           valorAntigo = valorNovo;
25       }
26       if (tempo == 0){
27           valor = valorAntigo;
28       }
29   }




                               ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                                   Header




    Header
1   #ifndef TECLADO_H
2       #define TECLADO_H
3
4       unsigned int LerTeclas(void);
5       void DebounceTeclas(void);
6       void InicializaTeclado(void);
7   #endif //TECLADO_H




                               ELT024   Leitura de teclas e teclado matricial
Leitura Matricial
                              Uso da Biblioteca

     Exemplo de uso da biblioteca
1    #include "basico.h"
2    #include "config.h"
3    #include "teclado.h"
4
5    //inicio do programa
6    void main(void)
7    {
8        InicializaTeclado();
9        TRISD = 0x00;    //Configura a porta D como saída
10       PORTD = 0xFF;    //desliga todos os leds
11       while (1==1)
12       {
13           DebounceTeclas();
14           PORTD = LerTeclas();
15       }
16   }

                               ELT024   Leitura de teclas e teclado matricial

Mais conteúdo relacionado

Mais procurados

Usb 3.0 technology mindshare
Usb 3.0 technology mindshareUsb 3.0 technology mindshare
Usb 3.0 technology mindshareNguyen Nhat Han
 
Design and Implementation of an Advanced DMA Controller on AMBA-Based SoC
Design and Implementation of an Advanced DMA Controller on AMBA-Based SoCDesign and Implementation of an Advanced DMA Controller on AMBA-Based SoC
Design and Implementation of an Advanced DMA Controller on AMBA-Based SoCRabindranath Tagore University, Bhopal
 
E book proteus library
E book   proteus libraryE book   proteus library
E book proteus libraryDaniel Sanchez
 
SharePoint 2013 Einführung und Anwenderschulung
SharePoint 2013 Einführung und AnwenderschulungSharePoint 2013 Einführung und Anwenderschulung
SharePoint 2013 Einführung und AnwenderschulungLocatech IT Solutions GmbH
 
DDR4 Memory Compliance Testing Barbara Aichinger FuturePlus Systems
DDR4 Memory Compliance Testing   Barbara Aichinger FuturePlus SystemsDDR4 Memory Compliance Testing   Barbara Aichinger FuturePlus Systems
DDR4 Memory Compliance Testing Barbara Aichinger FuturePlus SystemsBarbara Aichinger
 
Intel microprocessor history
Intel microprocessor historyIntel microprocessor history
Intel microprocessor historyRamzi Alqrainy
 
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجةكتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجةجامعة القدس المفتوحة
 
Sd sdio specsv1
Sd sdio specsv1Sd sdio specsv1
Sd sdio specsv1borderj
 
Accurate Synchronization of EtherCAT Systems Using Distributed Clocks
Accurate Synchronization of EtherCAT Systems Using Distributed ClocksAccurate Synchronization of EtherCAT Systems Using Distributed Clocks
Accurate Synchronization of EtherCAT Systems Using Distributed ClocksDesign World
 
17750519.ppt
17750519.ppt17750519.ppt
17750519.pptNabilLr1
 
Designing memory controller for ddr5 and hbm2.0
Designing memory controller for ddr5 and hbm2.0Designing memory controller for ddr5 and hbm2.0
Designing memory controller for ddr5 and hbm2.0Deepak Shankar
 
The iot academy_embeddedsystems_training_circuitdesignpart3
The iot academy_embeddedsystems_training_circuitdesignpart3The iot academy_embeddedsystems_training_circuitdesignpart3
The iot academy_embeddedsystems_training_circuitdesignpart3The IOT Academy
 
Manual spark usina 150 a 200a-250a slim
Manual spark usina 150 a 200a-250a slimManual spark usina 150 a 200a-250a slim
Manual spark usina 150 a 200a-250a slimGustavo Leal
 
Comparision between Core i3,i5,i7,i9
Comparision between Core i3,i5,i7,i9 Comparision between Core i3,i5,i7,i9
Comparision between Core i3,i5,i7,i9 ShriyaGautam3
 

Mais procurados (20)

Usb 3.0 technology mindshare
Usb 3.0 technology mindshareUsb 3.0 technology mindshare
Usb 3.0 technology mindshare
 
Design and Implementation of an Advanced DMA Controller on AMBA-Based SoC
Design and Implementation of an Advanced DMA Controller on AMBA-Based SoCDesign and Implementation of an Advanced DMA Controller on AMBA-Based SoC
Design and Implementation of an Advanced DMA Controller on AMBA-Based SoC
 
E book proteus library
E book   proteus libraryE book   proteus library
E book proteus library
 
SharePoint 2013 Einführung und Anwenderschulung
SharePoint 2013 Einführung und AnwenderschulungSharePoint 2013 Einführung und Anwenderschulung
SharePoint 2013 Einführung und Anwenderschulung
 
DDR4 Memory Compliance Testing Barbara Aichinger FuturePlus Systems
DDR4 Memory Compliance Testing   Barbara Aichinger FuturePlus SystemsDDR4 Memory Compliance Testing   Barbara Aichinger FuturePlus Systems
DDR4 Memory Compliance Testing Barbara Aichinger FuturePlus Systems
 
Intel microprocessor history
Intel microprocessor historyIntel microprocessor history
Intel microprocessor history
 
AMD vs Intel
AMD vs Intel AMD vs Intel
AMD vs Intel
 
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجةكتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
 
Sd sdio specsv1
Sd sdio specsv1Sd sdio specsv1
Sd sdio specsv1
 
Accurate Synchronization of EtherCAT Systems Using Distributed Clocks
Accurate Synchronization of EtherCAT Systems Using Distributed ClocksAccurate Synchronization of EtherCAT Systems Using Distributed Clocks
Accurate Synchronization of EtherCAT Systems Using Distributed Clocks
 
08 - Circuit Protector - Fuji Electric
08 - Circuit Protector - Fuji Electric08 - Circuit Protector - Fuji Electric
08 - Circuit Protector - Fuji Electric
 
17750519.ppt
17750519.ppt17750519.ppt
17750519.ppt
 
Designing memory controller for ddr5 and hbm2.0
Designing memory controller for ddr5 and hbm2.0Designing memory controller for ddr5 and hbm2.0
Designing memory controller for ddr5 and hbm2.0
 
Chapter 5 c
Chapter 5 cChapter 5 c
Chapter 5 c
 
The iot academy_embeddedsystems_training_circuitdesignpart3
The iot academy_embeddedsystems_training_circuitdesignpart3The iot academy_embeddedsystems_training_circuitdesignpart3
The iot academy_embeddedsystems_training_circuitdesignpart3
 
I2C introduction
I2C introductionI2C introduction
I2C introduction
 
Microsd card spec
Microsd card specMicrosd card spec
Microsd card spec
 
Pcie basic
Pcie basicPcie basic
Pcie basic
 
Manual spark usina 150 a 200a-250a slim
Manual spark usina 150 a 200a-250a slimManual spark usina 150 a 200a-250a slim
Manual spark usina 150 a 200a-250a slim
 
Comparision between Core i3,i5,i7,i9
Comparision between Core i3,i5,i7,i9 Comparision between Core i3,i5,i7,i9
Comparision between Core i3,i5,i7,i9
 

Semelhante a Leitura de teclas com arranjo matricial

Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCDRodrigo Almeida
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduinoRui Alves
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFengelrfs
 
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.brManual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.brLojaTotalseg
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registrosRodrigo Almeida
 
Aula 07 8 periféricos de um
Aula 07  8 periféricos de umAula 07  8 periféricos de um
Aula 07 8 periféricos de umMarcos Basilio
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelPablo Mariano
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfMicaelMarques13
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Arquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoArquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoElaine Cecília Gatto
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 

Semelhante a Leitura de teclas com arranjo matricial (20)

Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCD
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduino
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
 
MIPS Pipeline
MIPS Pipeline MIPS Pipeline
MIPS Pipeline
 
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.brManual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
 
Aula 07 8 periféricos de um
Aula 07  8 periféricos de umAula 07  8 periféricos de um
Aula 07 8 periféricos de um
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgel
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdf
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Pic aula1
Pic   aula1Pic   aula1
Pic aula1
 
PROCESSADOR.pptx
PROCESSADOR.pptxPROCESSADOR.pptx
PROCESSADOR.pptx
 
Arquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoArquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógico
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 

Mais de Rodrigo Almeida

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Rodrigo Almeida
 
Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19Rodrigo Almeida
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenhariasRodrigo Almeida
 
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Rodrigo Almeida
 
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Rodrigo Almeida
 
Cryptology - Antônio Lacerda
Cryptology - Antônio LacerdaCryptology - Antônio Lacerda
Cryptology - Antônio LacerdaRodrigo Almeida
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Rodrigo Almeida
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de driversRodrigo Almeida
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporaisRodrigo Almeida
 
Definição de processos
Definição de processosDefinição de processos
Definição de processosRodrigo Almeida
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersRodrigo Almeida
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosRodrigo Almeida
 
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusSegurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusRodrigo Almeida
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosRodrigo Almeida
 
Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorRodrigo Almeida
 

Mais de Rodrigo Almeida (20)

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015
 
Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenharias
 
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
 
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
 
Cryptology - Antônio Lacerda
Cryptology - Antônio LacerdaCryptology - Antônio Lacerda
Cryptology - Antônio Lacerda
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de drivers
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporais
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
 
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusSegurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virus
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
 
Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontrolador
 

Último

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Leitura de teclas com arranjo matricial

  • 1. Leitura de teclas e teclado matricial Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajubá rodrigomax@unifei.edu.br ELT024 Leitura de teclas e teclado matricial
  • 2. Display de 7 segmentos Revisão ELT024 Leitura de teclas e teclado matricial
  • 3. Display de 7 segmentos Multiplexação dos displays • Multiplexar: Consiste em combinar diversos sinais num único canal de transmissão • Vantagens • Redução de custos com cabeamento e tamanho de placa • Utilização de uma quantitade maior de dispositivos que saídas disponíveis • Desvantagens • Perda de tamanho de banda devido a efeitos de overhead • Discretização do tempo no acionamento dos dispositivos • Aumento da complexidade do sistema ELT024 Leitura de teclas e teclado matricial
  • 4. Display de 7 segmentos ELT024 Leitura de teclas e teclado matricial
  • 5. Display de 7 segmentos Multiplexação dos displays Rotina para acionar displays de 7 segmentos multiplexados: 1 colocar no barramento de dados o valor a ser mostrado no display X 2 ligar o display X através da linha de comando 3 esperar um tempo adequado para evitar flicker 4 desligar o display 5 escolher o próximo display (X+1) 6 voltar ao passo 1 ELT024 Leitura de teclas e teclado matricial
  • 6. Atenção ATENÇÃO ELT024 Leitura de teclas e teclado matricial
  • 7. Atenção É sério, cai na prova! ELT024 Leitura de teclas e teclado matricial
  • 8. Atenção Cai MESMO! ELT024 Leitura de teclas e teclado matricial
  • 9. Variáveis globais-locais • Armazenamento de dados dentro de uma biblioteca • Usado sempre que for necessário passar valores entre funções dentro de um mesmo arquivo ou armazenar valores que não podem ser perdidos ao longo da execução do programa. Ex: o display que está atualmente ligado • É feito através de variáveis "globais-locais"1 • As variáveis devem possuir o atributo static • Usar sempre o menor tamanho possível pois estas variáveis são alocadas permanentemente, reduzindo a memória RAM disponível. • Devem ser inicializadas dentro da função principal da biblioteca 1 Global dentro do escopo da biblioteca, local pois não pode ser acessada fora do arquivo ELT024 Leitura de teclas e teclado matricial
  • 10. Leitura de Teclas Leitura de Teclas ELT024 Leitura de teclas e teclado matricial
  • 11. Display de 7 segmentos Criação da biblioteca disp7seg • Criação de um circuito para entrada de informação digital • A saída deve possuir apenas dois estados • O consumo de energia deve ser o mínimo possível • As tensões devem ser compatíveis com o circuito (TTL, CMOS, etc...) ELT024 Leitura de teclas e teclado matricial
  • 12. Leitura de Teclas Circuito básico Exemplo Eletrônico http://www.scienceprog.com/how-does-tri-state-buffers- work/ ELT024 Leitura de teclas e teclado matricial
  • 13. Leitura de Teclas Circuito básico Exemplo Eletro-mecânico http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted ELT024 Leitura de teclas e teclado matricial
  • 14. Leitura de Teclas Debounce • Problema de bouncing • Causado pela oscilação mecânica da chave • Pode gerar acionamentos indevidos no sistema • Soluções • Via hardware através de circuito dedicado • Via software através de confirmação temporal ELT024 Leitura de teclas e teclado matricial
  • 15. Leitura de Teclas Debounce Circuito com bouncing http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted ELT024 Leitura de teclas e teclado matricial
  • 16. Leitura de Teclas Debounce • Debounce por hardware • Não gasta processamento • Protege o circuito contra surtos • Auxilia na estabilidade do sistema pois funciona como filtro • Gera delay de R × C na resposta ELT024 Leitura de teclas e teclado matricial
  • 17. Leitura de Teclas Debounce http://www.ikalogic.com/debouncing.php - Ibrahim Kamal ELT024 Leitura de teclas e teclado matricial
  • 18. Leitura de Teclas Debounce Circuito sem bouncing - debounce http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted (modificado) ELT024 Leitura de teclas e teclado matricial
  • 19. Leitura de Teclas Debounce • Debounce por software • Consome tempo e recurso do processador • Não necessita de hardware ($$$) extra • Gera delay de acordo com a rotina desenvolvida • É preciso conhecer aproximadamente o tempo de estabilização da chave • Ex: Para debounce de 150 (µs) = 300 ciclos de clock 2 2 Um PIC com cristal de 8MHz tem cada ciclo com duração de 0,5 (µs) ELT024 Leitura de teclas e teclado matricial
  • 20. Leitura de Teclas Debounce 1 void main(void) { 2 unsigned char valTemp, valAtual, tempo; 3 //inserir as configurações necessárias aqui 4 for(;;){ 5 while(valAtual==PORTB); //aguarda uma mudança na porta B 6 valTemp = PORTB; //na mudança, aguarda um tempo 7 tempo = 22; 8 while (tempo > 0) { 9 if (valTemp == PORTB) { // se não mudar continua a contar 10 tempo--; 11 } else { 12 valTemp = PORTB; // se mudar, atualiza e reinicia 13 tempo = 22; 14 } 15 } 16 valAtual = valTemp; //valor atualizado; 17 //Aqui a variável está pronta para ser usada 18 } 19 } ELT024 Leitura de teclas e teclado matricial
  • 21. Leitura Matricial Leitura Matricial ELT024 Leitura de teclas e teclado matricial
  • 22. Leitura Matricial Introdução • Para cada tecla inserida no projeto, do modo apresentado até agora, é necessário um terminal de I/O no microcontrolador • Projetos que exigem muitos terminais são mais caros por vários motivos • O encapsulamento pode gerar até 10% de diferença no preço 3 • O processo de inserção e soldagem de compontentes é mais caro 4 • O tamanho e complexidade da placa aumenta (quantidade da camadas, roteamento, etc...) • Para entradas digitais tipo teclado existe uma alternativa: Leitura por varredura matricial 3 PIC18F4550 TQFP = US$4,42, DIP = US$7,00 4 Geralmente componentes com muitos terminais tem encapsulamento SMD/QFP ou BGA ELT024 Leitura de teclas e teclado matricial
  • 23. Leitura Matricial Circuito básico ELT024 Leitura de teclas e teclado matricial
  • 24. Leitura Matricial Vantagens e Desvantagens • Na leitura por varredura matricial temos: • Aumento da quantidade de chaves que podem ser lidas 5 • Aumento da complexidade do software • Atraso na detecção de eventos (devido à varredura) 5 Para N terminais disponíveis no microcontrolador, temos um aumento de N chaves para ( N )2 chaves 2 ELT024 Leitura de teclas e teclado matricial
  • 25. Leitura Matricial Configurações 1 void main(void) 2 { 3 unsigned char i,j; 4 //armazena valor de cada chave 5 unsigned char chave[4][4] = {{0,0,0,0},{0,0,0,0}, 6 {0,0,0,0},{0,0,0,0}}; 7 //habilita pull-up interno 8 BitClr(INTCON2,0); 9 //apenas AN0 é analógico, os demais são digitais 10 ADCON1 = 0b00001110; 11 //os 4 últimos bits são entradas, os 4 primeiros saídas 12 TRISB = 0xF0; 13 TRISD = 0x00; 14 for(;;) 15 { 16 //processo de varredura 17 } 18 } ELT024 Leitura de teclas e teclado matricial
  • 26. Leitura Matricial Processo de Varredura 1 //processo de varredura 2 3 for(i = 0; i < 4; i++){ 4 PORTB = 0xff; //liga todas as colunas 5 for(j = 0; j < 100; j++); 6 BitClr(PORTB,i); //desliga coluna a ser testada 7 for(j = 0; j < 100; j++); //gasta tempo (garantir estabilidade) 8 for(j = 0; j < 4; j++){ 9 if (!BitTst(PORTB,j+4)){ //realiza o teste para cada bit 10 chave[i][j] = 1; //atualiza a matriz 11 BitSet(PORTD,j+4*i); //mostra na porta D 12 }else{ 13 chave[i][j] = 0; 14 BitClr(PORTD,j+4*i); 15 } 16 } 17 } ELT024 Leitura de teclas e teclado matricial
  • 27. Leitura Matricial Processo de Varredura Atenção O código não apresenta debounce em software para as teclas. Além disso a operação com matriz gasta muito processamento e memória. Para minimizar estes gastos podemos representar cada chave como um bit numa variável. A operação de debounce será apresentada nas funções a seguir. ELT024 Leitura de teclas e teclado matricial
  • 28. Leitura Matricial Criação da biblioteca teclado Funções necessárias para a criação de uma biblioteca que realiza a leitura de um teclado matricial e disponibiliza as teclas pressionadas: • Inicialização() • Configura os terminais de acionamento e de leitura • Debounce() • Realiza a leitura das teclas (varredura) • Realiza o debounce dos valores • Armazena internamente as teclas pressionadas • LerTeclas() • Retorna uma variável unsigned int • Cada bit desta variável representa uma tecla • 0 = desligado, 1 = pressionado ELT024 Leitura de teclas e teclado matricial
  • 29. Leitura Matricial Criação da biblioteca teclado 1 #include "teclado.h" 2 #include "basico.h" 3 static unsigned int valor = 0x0000; 4 static unsigned char tempo; 5 void InicializaTeclado(void) 6 { 7 TRISB = 0xF0; //quatro entradas e quatro saídas 8 BitClr(INTCON2,0); //habilita pull-up 9 ADCON1 = 0b00001110; //apenas AN0 é analógico 10 SPPCFG = 0x00; //a porta B não opera como paralela 11 tempo = 10; //tempo para debounce 12 } 13 14 unsigned int LerTeclas(void) 15 { 16 return valor; 17 } ELT024 Leitura de teclas e teclado matricial
  • 30. Leitura Matricial Criação da biblioteca teclado 1 void DebounceTeclas(void){ 2 unsigned char i,j; 3 unsigned int valorNovo = 0x0000; 4 unsigned int valorAntigo = 0x0000; 5 for(i = 0; i < 4; i++){ 6 PORTB |= 0x0F; //desliga todas as colunas 7 BitClr(PORTB,(i)); //liga a coluna correspondente 8 for(j=0;j<100;j++); //gasta tempo (estabilidade) 9 for(j = 0; j < 4; j++){//teste para cada bit, atualiza a variáve 10 if (!BitTst(PORTB,j+4)){ 11 BitSet(valorNovo,(i*4)+j); 12 }else{ 13 BitClr(valorNovo,(i*4)+j); 14 } 15 } 16 } 17 //continua ELT024 Leitura de teclas e teclado matricial
  • 31. Leitura Matricial Criação da biblioteca teclado 18 //rotina de debounce 19 //a cada chamada o tempo é decrementado em 1un. 20 if (valorAntigo == valorNovo){ 21 tempo --; 22 }else{ 23 tempo = 10; 24 valorAntigo = valorNovo; 25 } 26 if (tempo == 0){ 27 valor = valorAntigo; 28 } 29 } ELT024 Leitura de teclas e teclado matricial
  • 32. Leitura Matricial Header Header 1 #ifndef TECLADO_H 2 #define TECLADO_H 3 4 unsigned int LerTeclas(void); 5 void DebounceTeclas(void); 6 void InicializaTeclado(void); 7 #endif //TECLADO_H ELT024 Leitura de teclas e teclado matricial
  • 33. Leitura Matricial Uso da Biblioteca Exemplo de uso da biblioteca 1 #include "basico.h" 2 #include "config.h" 3 #include "teclado.h" 4 5 //inicio do programa 6 void main(void) 7 { 8 InicializaTeclado(); 9 TRISD = 0x00; //Configura a porta D como saída 10 PORTD = 0xFF; //desliga todos os leds 11 while (1==1) 12 { 13 DebounceTeclas(); 14 PORTD = LerTeclas(); 15 } 16 } ELT024 Leitura de teclas e teclado matricial