Você está na página 1de 7

MICROCONTROLADORES PIC18 COM LINGUAGEM C - UMA ABORDAGEM PRATICA E OBJETIVA

WAGNER DA SILVA ZANCO


1A. EDICAO - 2010

Parte 1 - Microcontrolador PIC18F4520


Captulo 1 - PIC18F4520 - Uma Viso Geral
1.1. Pinagem do PIC18F4520
1.2. Configurao do oscilador
1.2.1. Oscilador cristal/ressonador
1.2.2. Oscilador RC
1.2.3. Oscilador interno
1.2.3.1. OSCTUNE
1.2.4. Oscilador externo
1.2.5. HSPLL
1.2.6. Chaveamento do oscilador
1.2.6.1. OSCCON
1.3. Modos de energia gerenciada (power-managed)
Exerccios
Captulo 2 - Memrias do PIC18F4520
2.1. Memria de programa
2.2. Memria de dados (RAM)
2.2.1. Access Bank
2.3. Memria EEPROM
Exerccios
Captulo 3 - RESET
3.1. Power-on Reset (POR)
3.1.1. Power-up Timer (PWRT)
3.1.2. Oscillator Start-up Timer (OST)
3.1.3. PLL Lock Timer-out
3.2. Funo /MCLR
3.3. Brown-out Reset (BOR)
3.4. Watchdog Timer (WDT)
3.5. Instruo RESET
3.6. Stack Full RESET e Stack Underflow RESET
Exerccios
Captulo 4 - Ports de I/O
4.1. Port A
4.2. Port B
4.3. Port C
4.4. Port D
4.5. Port E
Exerccios
Parte 2 - Linguagem C
Captulo 5 - Compilador MPLABC18
5.1. Assembly versus C
5.2. Configurao do compilador MPLAB C18 na instalao
5.3. Instalao do MPLAB C18
5.4. Criao de projeto no MPLAB IDE para o MPLAB C18
5.4.1. Criao de um arquivo-e em C
5.4.2. Criao de um projeto com o Project Wizard
5.4.3. Adicionar o arquivo-e ao projeto

5.4.4. Configurar a localizao da ferramenta de compilao


5.4.5. Configurar os diretrios de procura da ferramenta de compilao
5.4.6. Compilar o projeto
5.4.7. Remover um arquivo do projeto
5.5. Ativar o MPASM SIM para simular uma aplicao
Exerccios
Captulo 6 - Introduo Linguagem C
6.1. Funo main( )
6.1.1 Outras funes
6.2. Bloco de cdigo
6.3. Tipos de dados
6.4. Identificador
6.5. Variveis
6.5.1 Variveis locais
6.5.2. Parmetros formais
6.5.3. Variveis globais
6.5.4. Qualificadores rom e ram
6.5.5. Qualificadores far e near
6.5.6. Modificador de tipo de acesso const
6.5.7. Modificador de tipo de acesso volatile
6.5.8. Especificadores de tipos de classes de armazenamento
6.5.9. Atribuio de endereo a uma varivel
6.6. Inicializao de variveis e constantes
Exerccios
Captulo 7 - Operadores
7.1. Operador de atribuio
7.1.1. Representao de valores em ponto flutuante
7.1.2. Atribuies mltiplas
7.2. Operadores aritmticos
7.2.1. Operadores de incremento e decremento
7.3. Operadores relacionais
7.4. Operadores lgicos
7.5. Operadores bit a bit
7.6. Operador ?
7.7. Operadores de ponteiros & e *
7.8. Operador cast
7.9. Operador sizeof
7.10. Operador vrgula
7.11. Abreviao de expresses
Exerccios
Captulo 8 - Comandos de Controle
8.1. Comandos de seleo
8.1.1. Comando if
8.1.2. Os ifs aninhados
8.1.3. Comando switch
8.2. Comandos de iterao
8.2.1. Lao for
8.2.2. Lao while
8.2.3. Lao do-while
8.3. Comandos de desvio
8.4. Prottipos de funes
8.5. Comando return
8.6. Comando goto
8.7. Comando break
8.8. Comando continue
Exerccios

Captulo 9 - Vetores e Matrizes


9.1. Inicializao de vetores
9.1.1. Vetor inicializado por uma string
9.2. Ponteiros para vetores
9.2.1. Passagem de vetores como parmetro a uma funo
9.3. Vetor bidimensional (matriz)
9.4. Vetores e matrizes adimensionais
9.4.1. Passagem de matriz como parmetro a uma funo
Exerccios
Captulo 10 - Strings
10.1. Manipulao de strings
10.1.1. Funo strcat()
10.1.2. Funo strcpy()
10.1.3. Funo strlen()
10.1.4. Funo strncmp()
10.1.5. Funo strchr()
10.1.6. Funo strstr()
10.1.7. Funo strlwr()
10.1.8. Funo strupr()
10.1.9. Outras funes que manipulam strings
10.1.10. Funes que manipulam contedo de memria
Exerccios
Captulo 11 - Estruturas de Dados
11.1. Estrutura
11.1.1. Vetor de estruturas
11.2. Passagem de estrutura como parmetro para funes
11.2.1. Passagem de uma estrutura como parmetro para uma funo
11.2.2. Operador seta (->)
11.2.3. Estruturas aninhadas
11.3. Campos de bits
11.4. Unies
11.5. Enumeraes
11.6. Typedef
Exerccios
Captulo 12 - Funes de Sada de Caracteres
12.1. Streams
12.1.1. Variveis globais stdout e stderr
12.2. Funo fprintf()
12.2.1. Caractere flag
12.2.2. Comprimento do campo
12.2.3. Preciso do campo
12.2.4. Especificador de tamanho
12.2.5. Operadores de converso
12.2.6. Caracteres de barra invertida
12.3. Funo fputs()
12.4. Funo printf()
12.5. Funo putc()
12.6. Funo puts()
12.7. Funo sprintf()
12.8. Funo vfprintf()
12.9. Funo vprintf()
12.10. Funo vsprintf()
12.11. Funo _usart_putc
12.12. Funo _user_putc
12.13. Converso de um float em string
Exerccios

Parte 3 - Explorando o PIC18F4520


Captulo 13 - Teclado e LED
13.1. Efetuar a leitura de um boto
13.2. Acionar LEDs
13.3. Teclado matriz
Exerccios
Captulo 14 - Displays Multiplexados
14.1. Display de sete segmentos
14.2. Displays multiplexados
14.2.1. Temporizao dos displays
Exerccios
Captulo 15 - LCD Caractere 16 x 2
15.1. LCD caractere 16 x 2 (16 caracteres x 2 linhas)
15.2. Arquitetura interna de um LCD caractere
15.3. Interfacear um microcontrolador com um LCD caractere
15.4. Inicializao de um LCD caractere
15.5. Como escrever dados no LCD caractere 16 x 2
15.6. Como acessar um LCD caractere
15.6.1. Funo IniciaLCD()
15.6.2. Funo TestPixelsLCD()
15.6.3. Funo EscInstLCD()
15.6.4. Funo EscDataLCD()
15.6.5. Funo EscStringLCD()
15.6.6. Funo EscStringLCD_ROM()
15.6.7. Funo TesteBusyFlag()
15.6.8. Funo Pulse()
15.6.9. Funes de delay
Exerccios
Captulo 16 - Interrupo
16.1. Diretiva #pragma
16.1.1. #pragma tmpdata
16.1.2. #pragma varlocate
16.2. Interrupo
16.2.1. INTCON
16.2.2. INTCON2
16.2.3. INTCON3
16.2.4. PIR1
16.2.5. PIR2
16.2.6. PIE1
16.2.7. PIE2
16.2.8. IPR1
16.2.9. IPR2
16.2.10. RCON
16.2.11. Funo de tratamento de interrupo
16.2.12. Como salvar o contexto
16.3. Interrupo externa
Exerccios
Captulo 17 - Medio de Tempo
17.1. Funes de delay
17.1.1. Funo Delay1TCYx()
17.1.2. Funo Delay10TCYx()
17.1.3. Funo Delay100TCYx()
17.1.4. Funo Delay1kTCYx()
17.1.5. Funo Delay10kTCYx()
17.2. Mdulo Timer0
17.2.1. Mdulo Timer0 configurado como temporizador

17.2.2. T0CON
17.2.3. Mdulo Timer0 configurado como temporizador/contador de 16 bits
17.3. Mdulo Timer1
17.3.1. T1CON
17.3.2. Mdulo Timer1 configurado como temporizador/contador de 16 bits
17.4. Mdulo Timer2
17.4.1. T2CON
17.5. Mdulo Timer3
17.5.1. T3CON
Exerccios
Captulo 18 - Converso A/D
18.1. PCM (Pulse Code Modulation)
18.2. Teorema de Nyquist
18.3. Frequncia de corte do FPB
18.4. Tenso de referncia
18.5. Conversor A/D do PIC18F4520
18.5.1. ADCON0
18.5.2. ADCON1
18.5.3. ADCON2
18.6. Obter o resultado de uma converso
18.7. Requisitos para a aquisio da amostra
18.8. Clock utilizado na converso
18.9. Ciclo de converso
18.9.1. Converso manual
18.9.2. Converso automtica
18.10. Interrupo do conversor A/D
18.11. Conversor A/D no modo Sleep
18.12. Configurao do conversor A/D do PIC18F4520
Exerccios
Captulo 19 - Modulao PWM
19.1. PWM (Pulse Width Modulation)
19.1.1. Duty cycle
19.1.2. Recuperao do nvel DC de um sinal PWM
19.1.3. Gerao do sinal PWM no mdulo CCP1
19.1.4. Perodo do sinal PWM
19.1.5. Ciclo ativo do sinal PWM
19.1.6. Definio do nmero de passos de controle
19.1.7. Definio do tempo correspondente a cada passo (Tp)
Exerccios
Parte 4 - Comunicao de Dados
Captulo 20 - Protocolo I2CTM
20.1. Iniciar e finalizar uma transmisso
20.2. Condio Re-START (Repeated START Condition)
20.3. Endereamento de 10 bits
20.4. Endereo de chamada geral
20.5. Operao Mult-Master (mltiplos mestres)
20.6. Mdulo MSSP implementando o barramento I2C
20.6.1. SSPSTAT (registrador de status)
20.6.2. SSPCON1 (registrador de controle)
20.6.3. SSPCON2 (registrador de controle)
20.7. Configurar o PIC18F4520 como dispositivo mestre
20.8. Verificar se o barramento est livre
20.9. Dispositivo mestre transmite com 7 bits de endereo
20.10. Dispositivo mestre recebe com 7 bits de endereo
20.11. Resistores de pull-up
20.12. Memria EEPROM 24C08

20.12.1. Proteo contra escrita por hardware


20.12.2. Enderear o 24C08
20.12.3. Operao de escrita
20.12.4. Operao de leitura
20.13. Clculo dos resistores de pull-up
Exerccios
Captulo 21 - Protocolo SPITM
21.1. Introduo ao protocolo SPI
21.1.1. SSPSTAT (registrador de status)
21.1.2. SSPCON1 (registrador de controle)
21.2. Operao do modo SPI
21.2.1. Modo mestre
21.2.2. Modo escravo
21.3. Potencimetro digital MCP41010
21.3.1. Modo reostato
21.3.2. Modo potencimetro
21.3.3. Interface SPI
Exerccios
Captulo 22 - Comunicao Serial UART via RS-232
22.1. Bit de paridade
22.2. Taxa de transferncia ou baud rate
22.3. Controle de fluxo
22.4. EUSART
22.4.1. TXSTA
22.4.2. RCSTA
22.4.3. BAUDCON
22.5. Gerador de baud rate
22.6. EUSART em modo assncrono
22.6.1. Transmissor assncrono
22.6.2. Receptor assncrono
22.7. Padro RS-232
22.7.1. Especificao mecnica
22.7.2. Conexo RS-232 Null modem
22.7.3. Conexo RS-232 entre o microcontrolador e o PC
22.7.4. Especificao eltrica
22.7.5. RS-232 driver/receiver (MAX232)
Exerccios
Captulo 23 - Pr-Processamento, Compilao e Linkedio
23.1. Compilao de uma aplicao
23.1.1. Criao de um arquivo biblioteca
23.2. Diretivas de compilao
23.2.1. #if, #else, #elif e #endif
23.2.2. #ifdef, #ifndef e #undef
23.2.3. #include
23.2.4. #define
23.2.5. #line
23.2.6. #error
23.2.7. #pragma
23.3. Macros
23.3.1. Macros predefinidas
23.4. Introduo de instrues em Assembly no C
23.5. Modelos de memria
23.5.1. Stack software
23.6. Set de instrues estendido
23.7. Start-up code
23.7.1. Ativar o modo estendido
23.8. Otimizao de cdigo

23.8.1. Duplicate-string merging


23.8.2. Branch optimizations
23.8.3. Banking optimizer
23.8.4. WREG tracking
23.8.5. Code straightening
23.8.6. Tail merging
23.8.7. Unreachable-code remove
23.8.8. Copy propagation
23.8.9. Redundant-store remove
23.8.10. Dead-code remove
23.8.11. Procedural abstration
23.8.12. Efeitos colaterais da otimizao
Exerccios
Apndice A - Bits de Configurao
Apndice B - Funes Nativas do MPLAB C18
Apndice C - Sumrio dos SFRs do PIC18F4520
Apndice D - Set de Instrues do PIC18F4520
Apndice E - Cdigo ASCII
Apndice F - Especificaes Eltricas do PIC18F4520
Bibliografia
ndice Remissivo