Microcontroladores PIC - Entradas e saídas Digitais

17.294 visualizações

Publicada em

Entradas e saídas digitais nos microcontroladores PIC com compilador mikroC

Publicada em: Tecnologia
0 comentários
7 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
17.294
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3.084
Ações
Compartilhamentos
0
Downloads
296
Comentários
0
Gostaram
7
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Microcontroladores PIC - Entradas e saídas Digitais

  1. 1. Microcontroladores PIC Portas de Entrada/Saída Digital Fábio Souza
  2. 2. Interface com circuitos externo • A interface com circuitos externos é feitas através de pinos que são agrupados em PORTs.
  3. 3. PORTX • OS PORTs são agrupados em até 8 pinos (bits) e são denominados: PORTA, PORTB, PORTC .... Conforme a quantidade de pinos que o microcontrolador apresenta.
  4. 4. Pinos de I/O no PIC16F84 • O PIC16F84 possui 2 PORTs : • PORTA • PORTB Os PORTs estão divididos da seguinte forma: PORTA: RA0 RA1 RA2 RA3 RA4 PORTB: RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7
  5. 5. Configuração • Os pinos de I/O podem ser configuradas como entrada ou saída conforme a necessidade do hardware. C1 R2 10k 22p X1 C2 22p BT1 U1 CRYSTAL 16 15 4 OSC1/CLKIN OSC2/CLKOUT MCLR RA0 RA1 RA2 RA3 RA4/TOCKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 R1 10k PIC16F84 17 18 1 2 3 6 7 8 9 10 11 12 13 R3 330R D1 LED-GREEN
  6. 6. Registradores para configuração • Para definir se um pino será utilizado como entrada ou saída utiliza-se o registrador TRISX. • No PIC16F84 • TRISA • TRISB
  7. 7. Entrada ou Saída? • Configurando: • Entrada -> bit = 1; • Saída -> bit = 0
  8. 8. Escrita em pino • Para escrita, o pino correspondente deve estar configurado como saída no registrador TRISX correspondente. • A escrita é é feita através do registrador PORTX correspondente. • Exemplo: PORTA -> PIC16F84A
  9. 9. Exemplo: Acionando um LED • LED apagado: 0V RB7 = 0; Ou TRISB =0b00000000; • LED aceso: 5V RB7 = 1; Ou TRISB =0b10000000;
  10. 10. Leitura de nível lógico no pino • Para leitura, o pino correspondente deve estar configurado como entrada no registrador TRISX correspondente. • A leitura é feita através do registrador PORTx. • Exemplo: PORTA -> PIC16F84A
  11. 11. Exemplo: Leitura de tecla com resistor de pull-up • Tecla solta • Tecla pressionada RA0 = 1; Ou PORTA = 0bXXXXXXX1; 5V RA0 = 0; Ou PORTA = 0bXXXXXXX0; 0V
  12. 12. Acionamento de pino na linguagem C • Configuração ENTRADA/SAÍDA TRISX = 0b00000000;//configura todos os pinos como saída • Acionando um PINO: PORTX.RXY = 0; PORTX.RXY = 1; //coloca nível 0 no pino //coloca nível 1 no pino • Acionando mais de um PINO: PORTX = 0b10100101;//aciona PORTX inteiro de uma vez X: A, B, C , D... Conforme PORTs Y: 0,1,2,3.... Conforme pinos
  13. 13. Exemplo – Pisca LED void main() { TRISB = 0b00000000; PORTB = 0; while(1){ PORTB.RB7 = 1; Delay_ms(1000); PORTB.RB7 = 0; Delay_ms(1000); } } //configura todos os pinos do PORTB como saída //desliga todos os pinos do PORTB //loop infinito //liga led //aguarda 1 seg //desliga led //aguarda 1 seg //repete ciclo
  14. 14. Leitura de pino em linguagem C • Configuração ENTRADA/SAÍDA TRISX = 0b00000000;//configura todos os pinos como saída • Lendo um PINO: valor_booleano = PORTX.RXY; //atribui o valor do pino a uma variável booleana Valor_inteiro = PORTX; //atribui o valor do port todo a uma variável int if(PORTX.RXY == 0) //verifica o valor do pino e toma uma ação de verdadeiro { } while(PORTX.RXY == 0); //enquanto pino em nível 0 fica no loop
  15. 15. Exemplo – Leitura de Tecla void main() { TRISA.B0 = 1; TRISB.B7 = 0; while(1) { if(PORTA.RA0 == 0) { PORTB.RB7 = 1; } else { PORTB.RB7= 0; } } } //configura pino RA0 como entrada //Configura pino RB7 como saída //loop infinito //se tecla pressionada //liga led //se tecla solta //desliga led

×