Apostila Microcontroladores PIC Completa
Autor: Alucinadown Automação | Publicado: 2012-04-02T13:26:00-07:00

recomendo esta apostila!

Conteúdo
1 Introdução 1

1.2 Hardware utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Linguagem C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Ambiente de programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Configuração do gravador ICD2 . . . . . . . . . . . . . . . . . . . . . . . 4
Criação de um novo projeto . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Linguagem C para sistemas embarcados 9
2.1 Indentação e padrão de escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Arquivos .c e .h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Diretivas de compilação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
#include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
#define . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
#ifdef, #ifndef, #else e #endif . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Tipos de dados em C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Representação binária e hexadecimal . . . . . . . . . . . . . . . . . . . . . 16
Modificadores de tamanho e sinal . . . . . . . . . . . . . . . . . . . . . . . 17
Modificadores de acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Modificadores de posicionamento . . . . . . . . . . . . . . . . . . . . . . . 19
Modificador de persistência . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Operações aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7 Função main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Rotinas de tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9 Operações com bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Ligar um bit (bit set) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Desligar um bit (bit clear) . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Trocar o valor de um bit (bit flip) . . . . . . . . . . . . . . . . . . . . . . 28
Verificar o estado de um bit (bit test) . . . . . . . . . . . . . . . . . . . . 29
Criando funções através de define’s . . . . . . . . . . . . . . . . . . . . . 30
2.10 Debug de sistemas embarcados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Externalizar as informações. . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Programação incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Checar possíveis pontos de Memory-leak . . . . . . . . . . . . . . . . . . . 35
Cuidado com a fragmentação da memória . . . . . . . . . . . . . . . . . . 35
Otimização de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Reproduzir e isolar o erro . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
i
2.11 Ponteiros e endereços de memória . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3 Arquitetura de microcontroladores 38
3.1 Acesso à memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 Clock e tempo de instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3 Esquema elétrico e circuitos importantes . . . . . . . . . . . . . . . . . . . . . . . 43
Multiplexação nos terminais do microcontrolador . . . . . . . . . . . . . . 44
3.4 Registros de configuração do microcontrolador . . . . . . . . . . . . . . . . . . . . 45
4 Programação dos Periféricos 47
4.1 Acesso às “portas”do microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2 Configuração dos periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Barramento de Led's . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4 Display de 7 segmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Multiplexação de displays . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5 Leitura de teclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Debounce por software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Arranjo de leitura por matriz . . . . . . . . . . . . . . . . . . . . . . . . . 62
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6 Display LCD 2x16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.7 Comunicação serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.8 Conversor AD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Elementos sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Processo de conversão AD . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.9 Saídas PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Criação da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.10 Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.11 Reprodução de Sons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.12 Interrupção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.13 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5 Arquitetura de desenvolvimento de software 97
5.1 One single loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.2 Interrupt control system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.3 Cooperative multitasking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Fixação de tempo para execução dos slots . . . . . . . . . . . . . . . . . . 104
Utilização do “tempo livre”para interrupções . . . . . . . . . . . . . . . . . 105
6 Anexos 107
6.1 config.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.2 basico.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.3 Instalar gravadores/depuradores de PIC em sistemas x64 . . . . . . . . . . . . . . 110 






&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Download