Your SlideShare is downloading. ×
Acessando os periféricos de um microcontrolador
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Acessando os periféricos de um microcontrolador

1,508
views

Published on

Programação dos Periféricos, Acesso às portas do microcontrolador, Configuração dos periféricos e o Barramento de Led's

Programação dos Periféricos, Acesso às portas do microcontrolador, Configuração dos periféricos e o Barramento de Led's

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,508
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Programa¸c˜ao dos Perif´ericos Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajub´a rodrigomax@unifei.edu.br ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 1 / 27
  • 2. Arquitetura de Microcontroladores Esquema el´etrico e circuitos importantes ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 2 / 27
  • 3. Arquitetura de Microcontroladores Multiplexa¸c˜ao nos terminais do microcontrolador Ex: o oitavo terminal do PIC18F4550. Pode ser configurado como terminal: de entrada ou sa´ıda referente ao primeiro bit da porta E (RE0) de leitura anal´ogica pertencente ao quinto conversor anal´ogico - digital (AN5) utilizado para enviar um clock externo de comunica¸c˜ao paralela (CK1SPP) ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 3 / 27
  • 4. Arquitetura de Microcontroladores Registros de configura¸c˜ao do microcontrolador Registros de configura¸c˜ao do microcontrolador ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 4 / 27
  • 5. Arquitetura de Microcontroladores Esquema el´etrico e circuitos importantes ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 5 / 27
  • 6. Arquitetura de Microcontroladores Registros de configura¸c˜ao do microcontrolador 1 // c o n f i g . h 2 #ifndef CONFIG_H 3 #define CONFIG_H 4 // P l l d e s l i g a d o 5 code char at 0x300000 CONFIG1L = 0x01 ; 6 // O s c i l a d o r c/ c r i s t a l ext erno HS 7 code char at 0x300001 CONFIG1H = 0x0C ; 8 // Watchdog c o n t r o l a d o por s o f t w a r e 9 code char at 0x300003 CONFIG2H = 0x00 ; 10 // Sem programa¸c˜ao em baixa tens˜ao 11 code char at 0x300006 CONFIG4L = 0x00 ; 12 #endif //CONFIG H ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 6 / 27
  • 7. Programa¸c˜ao dos Perif´ericos Programa¸c˜ao dos Perif´ericos . . . In theory, there is no difference between theory and practice; In practice, there is. Chuck Reid ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 7 / 27
  • 8. Programa¸c˜ao dos Perif´ericos Perif´ericos dispon´ıveis Sa´ıda Barramento de Led’s Display de 7 segmentos Display LCD 2x16 Sa´ıdas PWM Entrada Teclado 4*4 Conversor AD Outros Serial RS232 Tratador de Interrup¸c˜oes Watchdog ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 8 / 27
  • 9. Programa¸c˜ao dos Perif´ericos Barramento de Leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 9 / 27
  • 10. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 10 / 27
  • 11. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador O microcontrolador PIC 18F4550 possui 5 portas PORTA: bidirecional com 7 bits PORTB: bidirecional com 8 bits PORTC: bidirecional com 7 bits PORTD: bidirecional com 8 bits PORTE: 3 bits bidirecionais e 1 bit apenas entrada ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 11 / 27
  • 12. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Bit número PORTB 0 Terminal Físico 33 1 34 2 35 3 36 4 37 5 38 6 39 7 40 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 12 / 27
  • 13. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 37 Trisb:4 Leitor Gravador 4Trisb:4 = 1 = 0 = 0 = 1 < 2volts = 0 > 3volts = 1 PORTB Abrir datasheet do PIC18f4550 na pagina 110. ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 13 / 27
  • 14. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Porta Endere¸co dos dados Endere¸co de configura¸c˜ao (TRIS) PORTA 0xF80 0xF92 PORTB 0xF81 0xF93 PORTC 0xF82 0xF94 PORTD 0xF83 0xF95 PORTE 0xF84 0xF96 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 14 / 27
  • 15. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // i n i c i o do programa 2 void main ( void ) 3 { 4 // d e f i n i m o s como : 5 // ( unsigned char ) p o i s os 8 b i t s representam v a l o r e s 6 // ( v o l a t i l e ) as v a r i ´a v e i s podem mudar a qualquer momento 7 // ( near ) i n d i c a que o r e g i s t r o e s t a na mem´oria de dados 8 v o l a t i l e near unsigned char ∗PORTD = 0xF83 ; 9 v o l a t i l e near unsigned char ∗TRISD = 0xF95 ; 10 // configurando todos os pinos como s a´ı d a s 11 // 0 = s a´ı d a ( Output ) 12 // 1 = entrada ( Input ) 13 ∗TRISD = 0b00000000 ; 14 // l i g a apenas os quatro ´u l t i m o s l e d s 15 ∗PORTD = 0b11110000 ; 16 //mant´em o sistema l i g a d o i n d e f i n i d a m e n t e 17 f o r ( ; ; ) ; 18 } ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 15 / 27
  • 16. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // d e f i n e s para p o r t a s de entrada e s a´ı d a 2 #define PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 ) 3 #define TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 ) 4 // i n i c i o do programa 5 void main ( void ) 6 { 7 // configurando todos os pinos como s a´ı d a s 8 TRISD = 0b00000000 ; 9 // l i g a apenas os quatro ´u l t i m o s l e d s 10 PORTD = 0b11110000 ; 11 //mant´em o sistema l i g a d o i n d e f i n i d a m e n t e 12 f o r ( ; ; ) ; 13 } ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 16 / 27
  • 17. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Vantagens no uso dos #defines Utiliza¸c˜ao n˜ao requer uso do *, pois j´a est´a incluso no define Economiza mem´oria ram. Criando uma vari´avel ´e necess´ario reservar um espa¸co para armazenar o valor do ponteiro. A defini¸c˜ao pode ser feita em apenas um arquivo do tipo header. Os outros arquivos que precisem utilizar estas defini¸c˜oes devem apenas incluir este header. A mudan¸ca de arquitetura ´e mais simples. Criando apenas um arquivo com os defines ´e mais simples migrar o c´odigo de uma arquitetura para outra. Aten¸c˜ao O tamanho do programa final est´a intimamente ligado ao compilador utilizado. Dependendo das otimiza¸c˜oes que s˜ao (ou n˜ao) realizadas, o programa pode ficar maior com o uso dos defines. ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 17 / 27
  • 18. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // b a s i c o . h 2 // fun¸c˜oes de b i t 3 #define BitSet ( arg , bit ) (( arg ) |= (1<<bit ) ) 4 #define BitClr ( arg , bit ) (( arg ) &= ˜(1<<bit ) ) 5 #define BitFlp ( arg , bit ) (( arg ) ˆ= (1<<bit ) ) 6 #define BitTst ( arg , bit ) (( arg ) & (1<<bit ) ) 7 8 // d e f i n e s para r e g i s t r o s e s p e c i a i s 9 #define PORTA (∗( v o l a t i l e near unsigned char ∗) 0xF80 ) 10 #define PORTB (∗( v o l a t i l e near unsigned char ∗) 0xF81 ) 11 #define PORTC (∗( v o l a t i l e near unsigned char ∗) 0xF82 ) 12 #define PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 ) 13 #define PORTE (∗( v o l a t i l e near unsigned char ∗) 0xF84 ) 14 15 #define TRISA (∗( v o l a t i l e near unsigned char ∗) 0xF92 ) 16 #define TRISB (∗( v o l a t i l e near unsigned char ∗) 0xF93 ) 17 #define TRISC (∗( v o l a t i l e near unsigned char ∗) 0xF94 ) 18 #define TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 ) 19 #define TRISE (∗( v o l a t i l e near unsigned char ∗) 0xF96 ) ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 18 / 27
  • 19. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // b a s i c o . h 2 #define INTCON (∗( v o l a t i l e near unsigned char ∗) 0xFF2 ) 3 #define INTCON2 (∗( v o l a t i l e near unsigned char ∗) 0xFF1 ) 4 #define PIE1 (∗( v o l a t i l e near unsigned char ∗) 0xF9D ) 5 #define PIR1 (∗( v o l a t i l e near unsigned char ∗) 0xF9E ) 6 7 #define TMR0L (∗( v o l a t i l e near unsigned char ∗) 0xFD6 ) 8 #define TMR0H (∗( v o l a t i l e near unsigned char ∗) 0xFD7 ) 9 #define T0CON (∗( v o l a t i l e near unsigned char ∗) 0xFD5 ) 10 11 #define SPPCON (∗( v o l a t i l e near unsigned char ∗) 0xF65 ) 12 #define SPPCFG (∗( v o l a t i l e near unsigned char ∗) 0xF63 ) 13 14 #define ADCON2 (∗( v o l a t i l e near unsigned char ∗) 0xFC0 ) 15 #define ADCON1 (∗( v o l a t i l e near unsigned char ∗) 0xFC1 ) 16 #define ADCON0 (∗( v o l a t i l e near unsigned char ∗) 0xFC2 ) 17 #define ADRESL (∗( v o l a t i l e near unsigned char ∗) 0xFC3 ) 18 #define ADRESH (∗( v o l a t i l e near unsigned char ∗) 0xFC4 ) ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 19 / 27
  • 20. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1 // b a s i c o . h 2 #define RCSTA (∗( v o l a t i l e near unsigned char ∗) 0xFAB ) 3 #define TXSTA (∗( v o l a t i l e near unsigned char ∗) 0xFAC ) 4 #define TXREG (∗( v o l a t i l e near unsigned char ∗) 0xFAD ) 5 #define RCREG (∗( v o l a t i l e near unsigned char ∗) 0xFAE ) 6 #define SPBRG (∗( v o l a t i l e near unsigned char ∗) 0xFAF ) 7 #define SPBRGH (∗( v o l a t i l e near unsigned char ∗) 0xFB0 ) 8 #define BAUDCON (∗( v o l a t i l e near unsigned char ∗) 0xFB8 ) 9 #define RCON (∗( v o l a t i l e near unsigned char ∗) 0xFD0 ) 10 11 #define WDTCON (∗( v o l a t i l e near unsigned char ∗) 0xFD1 ) 12 13 #define T2CON (∗( v o l a t i l e near unsigned char ∗) 0xFCA ) 14 #define PR2 (∗( v o l a t i l e near unsigned char ∗) 0xFCB ) 15 #define CCP2CON (∗( v o l a t i l e near unsigned char ∗) 0xFBA ) 16 #define CCPR2L (∗( v o l a t i l e near unsigned char ∗) 0xFBB ) 17 #define CCP1CON (∗( v o l a t i l e near unsigned char ∗) 0xFBD ) 18 #define CCPR1L (∗( v o l a t i l e near unsigned char ∗) 0xFBE ) 19 20 // fun¸c˜ao para limp ar o watchdog 21 #define CLRWTD () _asm CLRWDT _endasm ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 20 / 27
  • 21. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 21 / 27
  • 22. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos Term. Descri¸c˜ao Configurar como Fun¸c˜ao 2 RA0/AN0 AN0 Potenciˆometro / Sen- sor de Temperatura 4 RA2/AN2/VREF-/CVREF RA2 Display 2 7 RA5/AN4/SS/C2OUT RA5 Display 1 8 RE0/AN5/CK1SPP RE0 RS-LCD / Display 3 9 RE1/AN6/CK2SPP RE1 EN-LCD 10 RE2/AN7/OESPP RE2 RW-LCD / Display 4 13 OSC1/CLKI OSC1 Cristal 14 OSC2/CLKO/RA6 OSC2 16 RC1/T1OSI/CCP2/UOE CCP2 Aquecedor 17 RC2/CCP1/P1A CCP1 Ventilador / Buzzer 19 RD0/SPP0 RD0 Barramento de dados para o LCD/7seg/Led 20 RD1/SPP1 RD1 21 RD2/SPP2 RD2 22 RD3/SPP3 RD3 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 22 / 27
  • 23. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos Term. Descri¸c˜ao Configurar como Fun¸c˜ao 25 RC6/TX/CK TX/RC6 RS232/I2C 26 RC7/RX/DT/SDO RX RS232 27 RD4/SPP4 RD4 Barramento de dados para o LCD / 7seg / Led 28 RD5/SPP5/P1B RD5 29 RD6/SPP6/P1C RD6 30 RD7/SPP7/P1D RD7 33 RB0/AN12/INT0/SDI/SDA RB0/SDA Sa´ıdas para alimenta¸c˜ao do teclado, 0 e 1 para I2C 34 RB1/AN10/INT1/SCK/SCL RB1/SCL 35 RB2/AN8/INT2/VMO RB2 36 RB3/AN9/CCP2/VPO RB3 37 RB4/AN11/KBI0/CSSPP RB4 Entradas para leitura do teclado 38 RB5/KBI1/PGM RB5 39 RB6/KBI2/PGC RB6 40 RB7/KBI3/PGD RB7 ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 23 / 27
  • 24. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos 1 TRISA = 0b00000010 ; // c o n f i g . os t e r m i n a i s como entrada e s a´ı d a 2 ADCON1 = 0b00001110 ; // apenas o p r i m e i r o t e r m i n a l ´e a n a l ´o g i c o 3 4 TRISB = 0b11110000 ; // c o n f i g . os t e r m i n a i s como entrada e s a´ı d a 5 INTCON = 0b11000101 ; // c o n f i g . com i n t e r r u p ¸c ˜a o h a b i l i t a d a 6 INTCON = 0b00000000 ; // c o n f i g . sem i n t e r r u p ¸c ˜a o 7 INTCON2 = 0b00000001 ; 8 SPPCFG = 0b00000000 ; //RB0−4 c o n t r o l a d o s p e l a porta B 9 10 TRISC = 0b10000000 ; // t e r m i n a i s s˜ao sa´ıdas , s´o RC7 ´e entrada 11 CCP1CON = 0b00001100 ; // c o n f i g . o 2o t e r m i n a l como PWM 12 CCP2CON = 0b00001100 ; // c o n f i g . o 3o t e r m i n a l como PWM 13 TXTA = 0b00101100 ; // c o n f i g . a t r a n s m i s s˜a o de dados da s e r i a l 14 RCSTA = 0b10010000 ; // c o n f i g . a recep¸c˜ao de dados da s e r i a l 15 BAUDCON = 0b00001000 ; // c o n f i g . sistema de v e l o c i d a d e da s e r i a l 16 SPBRGH = 0b00000000 ; // c o n f i g . para 56k 17 SPBRG = 0b00100010 ; // c o n f i g . para 56k 18 19 TRISD = 0b00000000 ; // c o n f i g . os t e r m i n a i s como s a´ı d a 20 21 TRISE = 0b00000000 ; // c o n f i g . os t e r m i n a i s como s a´ı d a ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 24 / 27
  • 25. Programa¸c˜ao dos Perif´ericos Barramento de Leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 25 / 27
  • 26. Programa¸c˜ao dos Perif´ericos Barramento de Leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 26 / 27
  • 27. Programa¸c˜ao dos Perif´ericos Barramento de Leds Biblioteca de acesso aos leds: Inicializa¸c˜ao do dispositivo Armazenamento de vari´aveis internas (endere¸cos) Escrita/Leitura do estado dos leds ELT024 Programa¸c˜ao dos Perif´ericos rodrigomax@unifei.edu.br 27 / 27