aula 08 - portas de entrada e sada - parte i

19
   

Upload: rudney-grego

Post on 21-Jul-2015

170 views

Category:

Documents


0 download

TRANSCRIPT

O PIC18F4520 possui quatro portas de E/S com 8 bits cada e uma com 4 bits, so elas:PORTA (RA7:RA0)PORTB (RB7:RB0)PORTC (RC7:RC0) PORTC (RC7:RC0)PORTD (RD7:RD0)PORTE (RE3:RE0)Cada porta de E/S possui basicamente trs registradores SFRs para o seu controle:Registradores TRIS:Controla a direo de cada pino da porta; Registradores PORT: Registradores PORT:Controla a leitura/escrita em cada pino da porta; Registradores LAT:Funcionam de forma praticamente idntica ao aosregistradores PORT, mas com a diferena de que a leiturade um registrador LAT retorna o ltimo valor escrito nele eno o estado externo do pino;Utilizadonos casos emqueacargaexternaligadaaopinopossui uma capacitncia muito elevada ou velocidades de clockelevadas que causam alteraes indesejadas;Cada bit de cada PORT est associado aorespectivo pino do PIC;Cadapinopodeserconfiguradocomoentradaou sada independente dos demaisEnto, fazer determinado pino Ento, para fazer com que um determinado pinodeumdosPORTsfuncionecomoentradaousadanecessrioconfigurar osFSRsTRISX(para PORTX)Para igual a 0, 1, 2, 3, 4, 5, 6 e 7:Bit n (R/W): TRISBn : Configura o pino como entrada ou sada1 = configurado como entrada0 = configurado como sadaOspinosRA6eRA7somultiplexadoscomooscilador. Suaconfigurao como pino de E/S depende do bit de configurao"Oscillator";Para n igual a 0, 1, 2, 3, 4, 5, 6 e 7: Para n igual a 0, 1, 2, 3, 4, 5, 6 e 7:Quando RAn configurado como entrada:Bit n (R): RAn1 = Nvel lgico 1 lido no pino de entrada0 = Nvel lgico 0 lido no pino de entradaQuando RAn configurado como sada:Bit n (R/W): RAn1 = Nvel lgico 1 colocado no pino de sada0 = Nvel lgico 0 colocado no pino de sadaPara configurar os bits RA3:RA0 como E/S digital, preciso setaros quatro bits menos significativos do registrador ADCON1 (SFR do perifrico do mdulo conversor A/D)Os pinos RA5 e RA6 dependemdos bits de configurao"Oscillator" para funcionar como E/S;Exemplo 1Exemplo 2Exemplo 3Exemplo 4Seta o bit 0 do TRISBTRISBbits.TRISB0 = 1; // Configura RB0 como entradaA leitura do estado do pino pode ser feita atravs da linha de cdigo: linha de cdigo:if (PORTBbits.PORTB0){}Podemos criar smbolos para simplificar o acesso aos pinos com a diretiva #define:#define BOTAOPORTBbits.PORTB0Seta o bit 0 do TRISB Seta o bit 0 do TRISBTRISBbits.TRISB0 = 1; // Configura RB0 como entradaA leitura do estado do pino pode ser feita atravs da linha de cdigo:if (BOTAO){}Seta o bit 0 do TRISBTRISBbits.TRISB0 = 0; // Configura RB0 como sadaA escrita do pino pode ser feita atravs da linha de cdigo: cdigo:PORTBbits.PORTB0 = 1; // Coloca RB0 em nvel lgico altoPORTBbits.PORTB0 = 0; // Coloca RB0 em nvel lgico baixoPodemos criar smbolos para simplificar o acesso aos pinos com a diretiva #define:#define LED1PORTBbits.PORTB0Seta o bit 0 do TRISB Seta o bit 0 do TRISBTRISBbits.TRISB0 = 0; // Configura RB0 como sadaA leitura do estado do pino pode ser feita atravs da linha de cdigo:LED1 = 1; // Coloca RB0 em nvel lgico altoLED1 = 0; // Coloca RB0 em nvel lgico baixoIntroduo a Linguagem CIntroduo a Linguagem C para PIC - Parte II