Buscar

O tratado da linguágem C

Prévia do material em texto

THE RED BOOK 
 
Tratado da Linguagem 
 
 
 
 
 
 
 
 
 
C 
 
Engenharia Elétrica 
Engenharia Eletrônica 
Engenharia de Computadores 
Engenharia de Automação e Controle 
 
COCIAN, L.F.E 
BRUSAMARELLO, V.J. 
LORENZI, C.R. 
Co
m
pu
ta
do
re
s P
es
so
ai
s 
M
ic
ro
co
nt
ro
la
do
re
s I
nt
el
 
80
51
 e
 M
ic
ro
ch
ip
 P
IC
 
LUIS FERNANDO ESPINOSA COCIAN 
Engenheiro Eletricista, ME.. – Professor do Curso de Engenharia Elétrica da Universidade Luterana do Brasil 
VALNER JOÃO BRUSAMARELLO 
Engenheiro Eletricista , Dr... - Professor do Curso de Engenharia Elétrica da Universidade Luterana do Brasil 
CÍCERO RENATO LORENZI 
Engenheiro Eletricista , Esp... – Diretor de Tecnologia da Mater Matris Technae Ltda.. 
LEONICE LESINA ESPINOSA 
Licenciada em Letras. 
Revisão Lingüística 
 
TTrraattaaddoo ddaa 
LLiinngguuaaggeemm 
CC 
EEnnggeennhhaarriiaa EEllééttrriiccaa 
EEnnggeennhhaarriiaa EElleettrrôônniiccaa 
EEnnggeennhhaarriiaa ddee CCoommppuuttaaddoorreess 
EEnnggeennhhaarriiaa ddee AAuuttoommaaççããoo ee CCoonnttrroollee 
 
 
L U I S F E R N A N D O E S P I N O S A C O C I A N 
V A L N E R J O A O B R U S A M A R E L L O 
C Í C E R O R E N A T O L O R E N Z I 
 
 
TTTrrraaatttaaadddooo dddaaa LLLiiinnnggguuuaaagggeeemmm CCC 
EEEnnngggeeennnhhhaaarrriiiaaa EEElllééétttrrriiicccaaa 
EEEnnngggeeennnhhhaaarrriiiaaa EEEllleeetttrrrôôônnniiicccaaa 
EEEnnngggeeennnhhhaaarrriiiaaa dddeee CCCooommmpppuuutttaaadddooorrreeesss 
EEEnnngggeeennnhhhaaarrriiiaaa dddeee AAAuuutttooommmaaaçççãããooo eee CCCooonnntttrrrooollleee 
 Tratado da Linguagem C - Engenharia Eletrônica 
Miguel Tostes, 101 • Canoas, RS. Brasil 
Telefone (51) 477 4000 • Fax (51) 477 1313 
www.ulbra.br
 
 
PPrreeffáácciioo 
A maioria dos livros de programação em linguagem C, enfoca os temas dos seus 
capítulos, no conhecimento básico da linguagem, as palavras chaves e em exemplos simples 
de processamento da informação. Estes livros têm como público alvo, pessoas que 
desejam obter somente uma noção básica da linguagem. Por causa disto são muito 
deficientes no que se refere à especificação e planejamento de projetos de software e ao 
acesso ao hardware, temas de conhecimento indispensável para engenheiros e técnicos da 
área eletroeletrônica, que trabalham no desenvolvimento de sistemas de aquisição de dados, 
de controle automático, de comunicação de dados e de processamento digital de sinais. 
Esta grande lacuna existente de livros de programação que enfatizem o controle do 
hardware, motivou a recopilação de idéias e projetos elaborados ao longo dos anos nas 
salas de aula, de forma a repassar esta informação aos técnicos e engenheiros que estão 
iniciando a aprendizagem da linguagem. 
A linguagem de programação C é padronizada, mas pode diferir em alguns pontos 
quando for utilizada em compiladores para plataformas diferentes de software e hardware. 
Nestes casos deverão ser estudadas as modificações a serem efetuadas, no código fonte 
gerado por cada compilador. 
Este livro aborda a programação utilizando como hardware um PC IBM 
compatível com sistema operacional MSDOS® e Windows®, compiladores TurboC® da 
Borland Inc.(Inprise Inc.) e Microsoft Visual C++® da Microsoft Inc. Também são 
mostrados alguns exemplos utilizando os compiladores Franklin C® (Keil para a família de 
microcontroladores 8051) e PCW (CCS para microcontroladores PIC da Microchip). 
Os exemplos de programação foram escolhidos de forma que estejam adequados 
ao escopo deste livro. Nos anexos foi colocada a informação referente às portas de 
comunicação do PC, chips de suporte e outras informações consideradas relevantes. 
Alguns problemas requerem pequenas montagens em hardware, cuja implementação 
também é mostrada através de diagramas esquemáticos. 
Este livro contém informação suficiente para uma disciplina de um semestre, 
apresentando exercícios de programação no final de cada capítulo. 
 
 
SSuummáárriioo 
1. INTRODUCÃO ..................................................................................................................................1 
1.1. POR QUE ESTUDAR A LINGUAGEM C ? ...........................................................................................1 
1.2. QUANDO ESTA LINGUAGEM FICARÁ OBSOLETA ? ..........................................................................2 
1.3. BREVE HISTÓRIA DA LINGUAGEM C..............................................................................................2 
2. OS COMPUTADORES .....................................................................................................................4 
2.1. O QUE SÃO OS COMPUTADORES ? ..................................................................................................4 
2.2. COMO OS COMPUTADORES FUNCIONAM ?......................................................................................4 
2.3. TIPOS DE COMPUTADORES ............................................................................................................4 
2.4. SOFTWARE BÁSICO E O SISTEMA OPERACIONAL...........................................................................5 
2.4.1. A Memória ............................................................................................................................6 
2.4.2. Os Barramentos....................................................................................................................7 
2.5. A UNIDADE CENTRAL DE PROCESSAMENTO - CPU.......................................................................7 
2.6. PROGRAMAS DE COMPUTADOR .....................................................................................................9 
2.7. LINGUAGENS DE PROGRAMAÇÃO ................................................................................................10 
2.7.1. A Linguagem de Máquina...................................................................................................10 
2.7.2. A Linguagem Assembly.......................................................................................................11 
2.7.3. Linguagens de Alto-Nível ...................................................................................................11 
2.7.4. Linguagens Orientadas a Objetos ......................................................................................12 
2.7.5. Algoritmos ..........................................................................................................................12 
2.7.6. Exemplos de Codificação de Instruções .............................................................................13 
2.8. CONCLUSÕES...............................................................................................................................14 
3. A CODIFICAÇÃO DA INFORMAÇÃO .......................................................................................15 
3.1. SISTEMAS DE NUMERAÇÃO .........................................................................................................16 
3.1.1. Valores de acordo com a Posição ......................................................................................17 
3.1.2. Sistema Binário ..................................................................................................................18 
3.1.3. Formatos Binários..............................................................................................................20 
3.2. ORGANIZAÇÃO DOS DADOS.........................................................................................................20 
3.2.1. Bits......................................................................................................................................21 
3.2.2. Nibbles................................................................................................................................213.2.3. Bytes ...................................................................................................................................22 
3.2.4. Words..................................................................................................................................22 
3.2.5. Double Words .....................................................................................................................22 
3.2.6. Números com Ponto Flutuante ...........................................................................................22 
3.3. O SISTEMA DE NUMERAÇÃO HEXADECIMAL...............................................................................23 
3.4. OPERAÇÕES LÓGICAS..................................................................................................................25 
3.5. OPERAÇÕES LÓGICAS EM NÚMEROS BINÁRIOS E CADEIAS DE BITS ............................................28 
3.6. NÚMEROS COM SINAL E SEM SINAL.............................................................................................28 
3.7. EXTENSÃO DE SINAL E DE ZEROS................................................................................................30 
3.8. A CODIFICAÇÃO ASCII...............................................................................................................32 
3.8.1. O Grupo Padrão de Caracteres .........................................................................................32 
4. PROJETO DE SISTEMAS DE SOFTWARE ...............................................................................38 
4.1. TOP DOWN ..................................................................................................................................39 
4.1.1. Estilo...................................................................................................................................39 
4.1.2. Abstração............................................................................................................................39 
4.1.3. Formalismo.........................................................................................................................40 
4.1.4. O Projeto em Top-Down.....................................................................................................40 
4.2. ALGORITMOS...............................................................................................................................41 
4.3. FLUXOGRAMAS ...........................................................................................................................41 
4.4. COMPONENTES BÁSICOS DE UM PROGRAMA ...............................................................................42 
 
 
4.5. PROCEDIMENTO GERAL...............................................................................................................43 
4.5.1. Compilação.........................................................................................................................43 
5. FUNDAMENTOS DA LINGUAGEM C........................................................................................45 
5.1. CARACTERÍSTICAS DA LINGUAGEM C .........................................................................................45 
5.2. PONTOS POSITIVOS DA LINGUAGEM............................................................................................45 
5.3. PONTOS NEGATIVOS....................................................................................................................46 
5.4. O PADRÃO ANSI C.....................................................................................................................47 
5.5. PALAVRAS RESERVADAS DA LINGUAGEM C ...............................................................................47 
5.6. ESTRUTURA DE UM PROGRAMA EM C..........................................................................................47 
5.7. CONJUNTO DE CARACTERES ........................................................................................................48 
5.8. COMENTÁRIOS ............................................................................................................................48 
5.9. DIRETIVAS DE COMPILAÇÃO .......................................................................................................49 
5.10. DECLARAÇÃO DE VARIÁVEIS ..................................................................................................49 
5.11. UMA INTRODUÇÃO ÀS ENTRADA E SAÍDA DE DADOS..............................................................50 
5.11.1. Caracteres ..........................................................................................................................50 
5.11.2. As Strings............................................................................................................................51 
5.11.3. printf ...................................................................................................................................53 
5.11.4. scanf....................................................................................................................................53 
5.12. UMA INTRODUÇÃO AOS COMANDOS DE CONTROLE DE FLUXO ...............................................54 
5.12.1. if..........................................................................................................................................54 
5.12.2. for .......................................................................................................................................55 
5.13. UMA BREVE INTRODUÇÃO ÀS FUNÇÕES..................................................................................57 
5.13.1. Os Argumentos ...................................................................................................................57 
5.13.2. O Retorno de Valores .........................................................................................................59 
5.14. PRIMEIROS PASSOS..................................................................................................................60 
5.15. EXERCÍCIOS.............................................................................................................................66 
5.16. AVALIAÇÃO ............................................................................................................................66 
6. ELEMENTOS DA LINGUAGEM..................................................................................................68 
6.1. TOKENS DA LINGUAGEM C..........................................................................................................68 
6.1.1. Caracteres de Espaço em Branco.......................................................................................68 
6.1.2. Comentários em C ..............................................................................................................69 
6.1.3. Avaliação dos Tokens .........................................................................................................70 
6.2. KEYWORDS .................................................................................................................................71 
6.3. IDENTIFICADORES .......................................................................................................................71 
6.3.1. Caracteres Multibyte e Caracteres Longos ........................................................................72 
6.3.2. Trigraphs ............................................................................................................................72 
6.4. CONSTANTES...............................................................................................................................73 
6.4.1. Constantes de Ponto Flutuante...........................................................................................73 
6.4.2. Constantes Inteiras .............................................................................................................746.4.3. Constantes Caractere .........................................................................................................75 
6.4.4. Strings Literais ...................................................................................................................77 
6.5. CARACTERES ESPECIAIS E PONTUAÇÃO ......................................................................................78 
6.6. EXERCÍCIOS.................................................................................................................................78 
7. ESTRUTURA DE UM PROGRAMA ............................................................................................81 
7.1. ARQUIVOS FONTE E PROGRAMAS FONTE ....................................................................................81 
7.1.1. Diretivas de Pré-Processador ............................................................................................81 
7.1.2. Pragmas..............................................................................................................................82 
7.1.3. Declarações e Definições ...................................................................................................82 
7.1.4. Declarações e Definições de Funções ................................................................................83 
7.1.5. Blocos .................................................................................................................................83 
7.2. A FUNÇÃO MAIN E A EXECUÇÃO DO PROGRAMA ........................................................................83 
7.2.1. Os Argumentos argc e argv ................................................................................................84 
7.2.2. Descrição dos Argumentos .................................................................................................85 
7.3. TEMPO DE VIDA, ESCOPO, VISIBILIDADE E CONEXÕES ...............................................................86 
7.3.1. Tempo de Vida....................................................................................................................86 
7.3.2. Escopo e Visibilidade .........................................................................................................87 
7.3.3. Encadeamentos...................................................................................................................88 
 
 
7.4. ESPAÇOS DE NOMES....................................................................................................................89 
8. TIPOS E DECLARAÇÕES.............................................................................................................92 
8.1. DECLARAÇÕES ............................................................................................................................92 
8.2. CLASSES DE ARMAZENAMENTO ..................................................................................................93 
8.2.1. Especificadores de Classe de Armazenamento para Declarações de Nível Externo..........94 
8.2.2. Especificadores de Classe de Armazenamento para Nível Interno ....................................96 
8.3. ESPECIFICADORES DE TIPO..........................................................................................................99 
8.3.1. Especificadores de Tipos de Dados e seus Equivalentes..................................................100 
8.4. QUALIFICADORES DE TIPO ........................................................................................................101 
8.5. DECLARAÇÕES DE VARIÁVEIS...................................................................................................102 
8.5.1. Declaração de Variáveis Simples .....................................................................................103 
8.5.2. Declarações de Enumeração............................................................................................103 
8.5.3. Declarações de Estruturas ...............................................................................................106 
8.5.4. Declarações de Unions.....................................................................................................109 
8.5.5. Declarações de Arrays .....................................................................................................111 
8.5.6. Declarações de Ponteiros.................................................................................................112 
8.5.7. Declarações Abstratas......................................................................................................114 
8.6. INTERPRETANDO DECLARADORES COMPLEXOS ........................................................................114 
8.7. INICIALIZAÇÃO..........................................................................................................................117 
8.7.1. Inicializando Tipos Escalares...........................................................................................117 
8.7.2. Inicializando Tipos Compostos.........................................................................................118 
8.7.3. Inicializando Strings.........................................................................................................121 
8.8. ARMAZENAMENTO DE TIPOS BÁSICOS ......................................................................................121 
8.8.1. Tipo char ..........................................................................................................................122 
8.8.2. Tipo int .............................................................................................................................122 
8.8.3. Tipo float ..........................................................................................................................123 
8.8.4. Tipo double.......................................................................................................................125 
8.8.5. Tipo long double...............................................................................................................125 
8.9. TIPOS INCOMPLETOS .................................................................................................................125 
8.10. DECLARAÇÕES TYPEDEF .......................................................................................................126 
8.11. CONVERSÃO DE TIPOS...........................................................................................................127 
9. OPERADORES E EXPRESSÕES................................................................................................129 
9.1. INTRODUÇÃO.............................................................................................................................129 
9.2. INTRODUÇÃO AOS OPERADORES ...............................................................................................129 
9.2.1. Operadores Aritméticos e de Atribuição ..........................................................................129 
9.2.2. Introdução aos Operadores Relacionais e Lógicos..........................................................131 
9.2.3. Introdução aos Operadores Lógicos Bit a Bit ..................................................................132 
9.3. EXPRESSÕES..............................................................................................................................133 
9.3.1. Conversão Temporária de Tipos ......................................................................................134 
9.3.2. Expressões Abreviadas .....................................................................................................134 
9.3.3. Encadeamento de Expressões: o Operador “,” ...............................................................135 
9.3.4. Precedências de Operadores............................................................................................1359.3.5. Expressões Primárias em C..............................................................................................135 
9.3.6. Expressões L-Value e R-Value..........................................................................................137 
9.3.7. Expressões Constantes em C ............................................................................................137 
9.3.8. Avaliação de Expressões em C .........................................................................................138 
9.3.9. Pontos de Seqüência em C................................................................................................139 
9.4. MODELADORES (CASTS) ............................................................................................................139 
9.4.1. Conversões Cast ...............................................................................................................140 
9.5. OPERADORES DA LINGUAGEM C ...............................................................................................141 
9.5.1. Precedência e Ordem de Avaliação..................................................................................141 
9.5.2. Conversões Aritméticas Usuais ........................................................................................144 
9.5.3. Operadores Postfixados ...................................................................................................144 
9.5.4. Operadores Unários em C................................................................................................149 
9.5.5. Operadores Multiplicativos ..............................................................................................153 
9.5.6. Operadores de Adição ......................................................................................................154 
9.5.7. Operadores de Deslocamento de Bits...............................................................................155 
9.5.8. Operadores Relacionais e de Igualdade...........................................................................156 
 
 
9.5.9. Operadores Lógicos entre Bits .........................................................................................158 
9.5.10. Operadores Lógicos .........................................................................................................158 
9.5.11. Operadores de Expressão Condicional ............................................................................159 
9.5.12. Operadores de Atribuição ................................................................................................160 
9.5.13. Operador de Avaliação Seqüencial ..................................................................................162 
9.6. CONVERSÕES DE TIPOS .............................................................................................................162 
9.6.1. Conversões de Atribuição.................................................................................................163 
9.6.2. Conversões de Outros Tipos.............................................................................................167 
9.7. CONVERSÕES EM CHAMADAS DE FUNÇÃO ................................................................................167 
10. CONTROLE DE FLUXO DE EXECUÇÃO – INSTRUÇÕES GERAIS..............................170 
10.1. INSTRUÇÕES GERAIS .............................................................................................................170 
10.2. EXPRESSÕES..........................................................................................................................171 
10.3. A INSTRUÇÃO “IF” ................................................................................................................171 
10.3.1. A instrução else ................................................................................................................172 
10.3.2. O if-else-if .........................................................................................................................173 
10.3.3. ifs Aninhados ....................................................................................................................173 
10.4. O OPERADOR “? :” ................................................................................................................174 
10.5. AS INSTRUÇÕES COMPOSTAS ................................................................................................175 
10.6. A INSTRUÇÃO “SWITCH” .......................................................................................................176 
10.7. A INSTRUÇÃO “FOR” .............................................................................................................178 
10.8. A INSTRUÇÃO “BREAK”.........................................................................................................181 
10.9. A INSTRUÇÃO “WHILE” .........................................................................................................181 
10.10. A INSTRUÇÃO “DO - WHILE” .................................................................................................182 
10.11. A INSTRUÇÃO “CONTINUE” ...................................................................................................184 
10.12. A INSTRUÇÃO “GOTO” E OS LABELS .....................................................................................185 
10.13. A INSTRUÇÃO NULL..............................................................................................................187 
10.14. A INSTRUÇÃO “RETURN”.......................................................................................................187 
11. TRABALHANDO COM ARRAYS ..........................................................................................193 
11.1. ARRAYS ................................................................................................................................193 
11.2. STRINGS ................................................................................................................................194 
11.2.1. gets....................................................................................................................................195 
11.2.2. strcpy ................................................................................................................................196 
11.2.3. strcat .................................................................................................................................196 
11.2.4. strlen .................................................................................................................................196 
11.2.5. strcmp ...............................................................................................................................197 
11.3. MATRIZES .............................................................................................................................197 
11.3.1. Matrizes bidimensionais ...................................................................................................197 
11.3.2. Matrizes de strings............................................................................................................198 
11.3.3. Matrizes multidimensionais ..............................................................................................198 
11.3.4. Uso de Arrays em Sistemas com Microcontroladores ......................................................199 
12. PONTEIROS ..............................................................................................................................200 
12.1. FUNCIONAMENTO..................................................................................................................200 
12.2. DECLARAÇÃO E UTILIZAÇÃO ................................................................................................20112.3. PONTEIROS E VETORES..........................................................................................................203 
12.3.1. Ponteiros como Vetores....................................................................................................205 
12.3.2. Strings...............................................................................................................................205 
12.3.3. Endereços de elementos de vetores ..................................................................................205 
12.4. VETORES DE PONTEIROS........................................................................................................206 
12.5. PONTEIROS PARA PONTEIROS ................................................................................................206 
12.6. CUIDADOS A SEREM TOMADOS AO SE USAR PONTEIROS.......................................................206 
12.7. PONTEIROS E FUNÇÕES..........................................................................................................207 
12.8. ALOCAÇÃO DINÂMICA DE MEMÓRIA ....................................................................................207 
12.8.1. malloc ...............................................................................................................................208 
12.8.2. calloc ................................................................................................................................208 
12.8.3. realloc...............................................................................................................................209 
12.8.4. free....................................................................................................................................209 
12.9. ALOCAÇÃO DINÂMICA DE VETORES E MATRIZES .................................................................210 
 
 
12.9.1. Alocação Dinâmica de Vetores ........................................................................................210 
12.9.2. Alocação Dinâmica de Matrizes.......................................................................................210 
13. AS FUNÇÕES.............................................................................................................................216 
13.1. INTRODUÇÃO ÀS FUNÇÕES ....................................................................................................216 
13.2. DEFINIÇÃO DE UMA FUNÇÃO.................................................................................................217 
13.2.1. Atributos das Funções – Funções inline...........................................................................218 
13.3. CLASSES DE ARMAZENAMENTO ............................................................................................219 
13.4. TIPO DE RETORNO DE UMA FUNÇÃO......................................................................................219 
13.5. PARÂMETROS DE UMA FUNÇÃO.............................................................................................222 
13.6. CORPO DE UMA FUNÇÃO .......................................................................................................222 
13.7. PROTÓTIPOS DE UMA FUNÇÃO...............................................................................................223 
13.8. CHAMADAS DE FUNÇÃO........................................................................................................224 
13.8.1. Argumentos.......................................................................................................................226 
13.8.2. Chamadas com Número Variável de Argumentos ............................................................227 
13.9. RECURSIVIDADE....................................................................................................................228 
13.10. MODIFICADORES DE FUNÇÕES ..............................................................................................229 
13.10.1. pascal............................................................................................................................230 
13.10.2. cdecl..............................................................................................................................230 
13.10.3. interrupt ........................................................................................................................230 
13.11. PONTEIROS PARA FUNÇÕES ...................................................................................................230 
13.12. ALGUMAS CONSIDERAÇÕES GERAIS .....................................................................................231 
13.13. ESCOPO DE VARIÁVEIS..........................................................................................................231 
13.13.1. Variáveis locais ............................................................................................................231 
13.13.2. Parâmetros formais ......................................................................................................232 
13.13.3. Variáveis globais ..........................................................................................................232 
13.14. PASSAGEM DE PARÂMETROS POR VALOR E REFERÊNCIA ......................................................233 
13.15. VETORES COMO ARGUMENTOS DE FUNÇÕES.........................................................................234 
13.16. ARQUIVOS DE CABEÇALHO ...................................................................................................234 
14. DIRETIVAS DE COMPILAÇÃO ............................................................................................240 
14.1. A DIRETIVA #INCLUDE..........................................................................................................240 
14.2. AS DIRETIVAS #DEFINE E #UNDEF .........................................................................................240 
14.3. AS DIRETIVAS #IFDEF E #ENDIF.............................................................................................242 
14.4. A DIRETIVA #IFNDEF.............................................................................................................243 
14.5. A DIRETIVA #IF.....................................................................................................................243 
14.6. A DIRETIVA #ELSE ................................................................................................................243 
14.7. A DIRETIVA #ELIF .................................................................................................................244 
15. ENTRADAS E SAÍDAS – I/O ...................................................................................................245 
15.1. LENDO E ESCREVENDO CARACTERES....................................................................................245 
15.1.1. getche e getch ...................................................................................................................245 
15.1.2. putchar..............................................................................................................................246 
15.2. LEITURA E ESCRITA DE STRINGS ...........................................................................................246 
15.2.1. gets....................................................................................................................................246 
15.2.2. puts ...................................................................................................................................247 
15.3. ENTRADA E SAÍDA FORMATADA ...........................................................................................247 
15.3.1. printf .................................................................................................................................247 
15.3.2.scanf..................................................................................................................................248 
15.4. OPERANDO COM ARQUIVOS ..................................................................................................249 
15.4.1. fopen .................................................................................................................................249 
15.4.2. fclose.................................................................................................................................250 
15.4.3. exit ....................................................................................................................................251 
15.5. LENDO E ESCREVENDO CARACTERES EM ARQUIVOS ............................................................251 
15.5.1. putc() ................................................................................................................................251 
15.5.2. getc ...................................................................................................................................252 
15.5.3. feof ....................................................................................................................................252 
15.6. OUTROS COMANDOS DE ACESSO A ARQUIVOS......................................................................253 
15.6.1. Arquivos Predefinidos ......................................................................................................253 
15.6.2. fgets ..................................................................................................................................253 
 
 
15.6.3. fputs ..................................................................................................................................254 
15.6.4. ferror e perror ..................................................................................................................254 
15.6.5. fread..................................................................................................................................255 
15.6.6. fwrite.................................................................................................................................255 
15.6.7. fseek ..................................................................................................................................256 
15.6.8. rewind ...............................................................................................................................256 
15.6.9. remove ..............................................................................................................................256 
15.7. FLUXOS PADRONIZADOS .......................................................................................................257 
15.7.1. fprintf ................................................................................................................................257 
15.7.2. fscanf ................................................................................................................................257 
15.8. FUNÇÕES DE I/O - PORTAS ....................................................................................................258 
15.8.1. _inp (Microsoft C e Visual C++) .....................................................................................258 
15.8.2. _out (Microsoft C e Visual C++) .....................................................................................258 
15.8.3. inportb (Borland C++).....................................................................................................258 
15.8.4. outportb (Borland C++)...................................................................................................259 
16. TIPOS DE DADOS ESPECIAIS...............................................................................................262 
16.1. ESTRUTURAS (STRUCT) .........................................................................................................262 
16.1.1. Passando para Funções....................................................................................................264 
16.1.2. Ponteiros...........................................................................................................................264 
16.2. UNION ...................................................................................................................................265 
16.3. ENUMERAÇÕES (ENUM).........................................................................................................266 
16.4. O COMANDO SIZEOF..............................................................................................................267 
16.5. O COMANDO TYPEDEF ..........................................................................................................267 
16.6. LISTAS SIMPLESMENTE ENCADEADAS...................................................................................268 
17. INTERRUPÇÕES ......................................................................................................................271 
17.1. INTRODUÇÃO.........................................................................................................................271 
17.2. INTERRUPÇÕES E A ARQUITETURA INTEL ..............................................................................271 
17.3. INTERRUPÇÕES DE HARDWARE .............................................................................................272 
17.4. INSTRUÇÕES DE INTERRUPÇÃO DE HARDWARE .....................................................................274 
17.4.1. Borland C++ - 80x86.......................................................................................................274 
17.4.2. Franklin C – 8x51.............................................................................................................274 
17.4.3. PCW CCS – Microchip PIC .............................................................................................274 
17.5. IMPLEMENTANDO UMA ROTINA DE ATENDIMENTO A INTERRUPÇÃO (ISR) ...........................274 
17.6. USANDO UMA NOVA ROTINA DE ATENDIMENTO A INTERRUPÇÃO - ISR ...............................276 
17.7. O CONTROLADOR PROGRAMÁVEL DE INTERRUPÇÕES - PIC .................................................277 
17.7.1. Redirecionamento IRQ2/IRQ9..........................................................................................278 
17.8. ENDEREÇOS DOS CONTROLADORES PROGRAMÁVEIS DE INTERRUPÇÃO................................280 
17.8.1. Initialization Command Word 1 (ICW1) ..........................................................................280 
17.8.2. Initialization Command Word 2 (ICW2) ..........................................................................281 
17.8.3. Initialization Command Word 3 (ICW3) ..........................................................................281 
17.8.4. Initialization Command Word 4 (ICW4) ..........................................................................282 
17.8.5. Operation Control Word 1 (OCW1) .................................................................................282 
17.8.6. Operation Control Word 2 (OCW2) .................................................................................282 
17.8.7. Operation Control Word 3 (OCW3) .................................................................................283 
17.9. PROGRAMAÇÃO DO TIMER DO PC .........................................................................................283 
18. A INTERFACE PARALELA....................................................................................................286 
18.1. AS INTERFACES – UMA INTRODUÇÃO ...................................................................................286 
18.2. A INTERFACE PARALELA.......................................................................................................28618.3. INTERFACEAMENTO COM A PORTA PARALELA PADRÃO........................................................287 
18.4. PROPRIEDADES DO HARDWARE.............................................................................................288 
18.5. CENTRONICS .........................................................................................................................289 
18.6. ENDEREÇOS DAS PORTAS .....................................................................................................290 
18.6.1. Endereços Iniciais ............................................................................................................290 
18.7. REGISTRADORES DA STANDARD PARALLEL PORT (SPP).......................................................291 
18.8. PORTAS BIDIRECIONAIS.........................................................................................................293 
18.9. USANDO A PORTA PARALELA PARA LER 8 BITS. ...................................................................295 
18.9.1. Modo Nibble .....................................................................................................................296 
 
 
18.10. USANDO A INTERRUPÇÃO DA PORTA PARALELA...................................................................298 
18.11. MODOS DA PORTA PARALELA NO BIOS................................................................................300 
18.12. MODOS DA PORTA PARALELA E EXTENDED CONTROL REGISTER DO MODO ECP .................301 
18.12.1. Bit Function ..................................................................................................................301 
18.12.2. Modos de Operação......................................................................................................301 
19. INTERFACES SERIAIS ...........................................................................................................303 
19.1. INTRODUÇÃO.........................................................................................................................303 
19.2. PROPRIEDADES DE HARDWARE DOS PCS...............................................................................304 
19.2.1. Conectores Seriais (DB-25 e DB-9) .................................................................................304 
19.2.2. Funções dos Pinos ............................................................................................................305 
19.3. NULL MODEMS .....................................................................................................................305 
19.3.1. Conexão LoopBack...........................................................................................................306 
19.3.2. Velocidades DTE / DCE ...................................................................................................307 
19.4. CONTROLE DE FLUXO - FLOW CONTROL...............................................................................307 
19.5. A UART (8250 E COMPATÍVEIS) ..........................................................................................308 
19.6. TIPOS DE UARTS (PCS) ........................................................................................................310 
19.7. REGISTRADORES DAS PORTAS SERIAIS (PCS) – ENDEREÇOS DAS PORTAS E IRQS................310 
19.8. TABELA DE REGISTRADORES.................................................................................................311 
19.9. DLAB ...................................................................................................................................312 
19.10. INTERRUPT ENABLE REGISTER (IER) ....................................................................................313 
19.10.1. Interrupt Identification Register (IIR) ..........................................................................313 
19.10.2. First In / First Out Control Register (FCR)..................................................................314 
19.10.3. Line Control Register (LCR) ........................................................................................315 
19.10.4. Modem Control Register (MCR)...................................................................................316 
19.10.5. Line Status Register (LSR)............................................................................................317 
19.10.6. Modem Status Register (MSR)......................................................................................318 
19.10.7. Register de uso Geral (Scratch)....................................................................................319 
19.11. PROGRAMANDO (PCS) – RECEPÇÃO POR POLLING E POR INTERRUPÇÃO...............................319 
19.12. VETORES DE INTERRUPÇÕES .................................................................................................321 
19.12.1. Interrupt Service Routine (ISR) ....................................................................................322 
19.13. CONFIGURAÇÃO DA UART ...................................................................................................323 
19.13.1. Rotina Main (Loop) ......................................................................................................324 
19.13.2. Determinando o Tipo de UART ....................................................................................324 
19.14. INTERFACEANDO DISPOSITIVOS COM AS PORTAS RS-232 .....................................................324 
19.14.1. Conversores de Nível RS-232 .......................................................................................325 
19.15. INTERFACES COM MICROCONTROLADORES...........................................................................327 
19.16. AS PORTAS NO SISTEMA WINDOWS ......................................................................................327 
19.17. A ANTIGA MAS ÚTIL BIBLIOTECA DE COMUNICAÇÃO DA BORLAND .....................................327 
APÊNDICE A - PADRÕES DE TRANSMISSÃO SERIAL...........................................................332 
INTRODUÇÃO.........................................................................................................................................332 
TRANSMISSÃO DE DADOS EM SISTEMAS DESBALANCEADOS (SINGLE-ENDED).....................................333 
TRANSMISSÃO DE DADOS EM SISTEMAS BALANCEADOS (DIFERENCIAIS) .............................................334 
COMPARAÇÃO ENTRE SISTEMAS BALANCEADOS E DESBALANCEADOS ..................................................335 
DRIVERS DE LINHA DESBALANCEADOS ................................................................................................336 
DRIVERS DE LINHA BALANCEADOS ......................................................................................................337 
RECEPTORES BALANCEADOS ................................................................................................................337 
PADRÕES DE TRANSMISSÃO TIA/EIA ...................................................................................................338 
PADRÕES TIA/EIA DESBALANCEADOS.................................................................................................339 
Padrão TIA/EIA-232-F (RS-232) .....................................................................................................339 
TIA/EIA-423-B..................................................................................................................................340 
TIA/EIA-562 .....................................................................................................................................341 
TIA/EIA-694 .....................................................................................................................................342 
PADRÕES TIA/EIA BALANCEADOS (DIFERENCIAL)..............................................................................342TIA/EIA-422-B..................................................................................................................................342 
TIA/EIA-485-A..................................................................................................................................345 
TIA/EIA-612 .....................................................................................................................................348 
TIA/EIA-644 (LVDS) ........................................................................................................................349 
OUTROS PADRÕES TIA/EIA..................................................................................................................349 
 
 
TIA/EIA-232-F..................................................................................................................................349 
EIA-334-A.........................................................................................................................................349 
EIA-363 ............................................................................................................................................350 
EIA-404-A.........................................................................................................................................350 
EIA-449 ............................................................................................................................................350 
TIA/EIA-530-A..................................................................................................................................350 
TIA/EIA-561 .....................................................................................................................................350 
TIA/EIA-574 .....................................................................................................................................350 
TIA/EIA-613 .....................................................................................................................................350 
TIA/EIA-687 .....................................................................................................................................351 
TIA/EIA-688 .....................................................................................................................................351 
TIA/EIA-723 .....................................................................................................................................351 
RECOMENDAÇÕES CCITT/ITU-T .........................................................................................................351 
Recomendação V.10 .........................................................................................................................351 
Recomendação V.11 .........................................................................................................................352 
Recomendação V.24 .........................................................................................................................352 
Recomendação V.28 .........................................................................................................................352 
Recomendação V.35 .........................................................................................................................352 
OUTROS PADRÕES.................................................................................................................................353 
IEEE488 ...........................................................................................................................................353 
CONFIGURAÇÃO DE SISTEMAS EIA-422 E EIA-485 ..............................................................................353 
Controle Tristate de um dispositivo RS-485 utilizando o sinal RTS.................................................353 
Configurações ..................................................................................................................................354 
Sistemas a Dois ou Quatro Fios .......................................................................................................355 
Terminação.......................................................................................................................................356 
Polarizando uma rede RS-485..........................................................................................................358 
Estendendo a Especificação .............................................................................................................360 
SELEÇÃO DOS CABOS PARA RS-422 E RS-485 ......................................................................................360 
Número de condutores......................................................................................................................360 
Blindagem.........................................................................................................................................360 
Características do Cabo...................................................................................................................360 
PROTEÇÃO CONTRA TRANSIENTES NOS SISTEMAS RS-422 E RS-485.....................................................362 
Com o que se parecem os surtos ? ...................................................................................................362 
Modo Comum versus Modo Diferencial...........................................................................................364 
Um terra não é igual a outro............................................................................................................364 
Proteção contra Transientes usando Isolação .................................................................................365 
Proteção contra Transientes utilizando Derivações Shunt ..............................................................366 
Conectando os sinais de terra ..........................................................................................................367 
Dispositivos de Derivação................................................................................................................367 
Combinando Isolação com Derivação .............................................................................................367 
Considerações Especiais para as Condições de Falha ....................................................................368 
Escolha da proteção certa................................................................................................................369 
SOFTWARE ............................................................................................................................................370 
Considerações Básicas.....................................................................................................................370 
Sistemas Master-Slave (Mestre-Escravo).........................................................................................371 
Sistemas RS-485 Multimestre ...........................................................................................................372 
APÊNDICE B - MICROCONTROLADORES MICROCHIP PIC DA FAMILIA 16FXXX .....373 
APLICAÇÕES..........................................................................................................................................373 
CARACTERÍSTICAS DOS MICROCONTROLADORES PIC ...........................................................................373 
PIC 16F87X - CARACTERÍSTICAS..........................................................................................................373 
PIC 16F87X - PERIFÉRICOS...................................................................................................................374 
PINAGEM...............................................................................................................................................375ARQUITETURA MICROCHIP PIC.............................................................................................................375 
ORGANIZAÇÃO DA MEMÓRIA DE PROGRAMA .......................................................................................376 
REGISTRADORES INTERNOS E MEMÓRIA DE DADOS..............................................................................377 
MPLAB DA MICROCHIP .......................................................................................................................377 
O COMPILADOR PCW DA CCS .............................................................................................................378 
GRAVADOR ...........................................................................................................................................379 
REGRAS DO COMPILADOR PCW DA CCS..............................................................................................379 
 
 
Tipos de Variáveis Simples...............................................................................................................379 
Biblioteca de Funções ......................................................................................................................379 
Expressões Constantes .....................................................................................................................380 
Identificadores: ................................................................................................................................380 
DIRETIVAS DE COMPILADOR .................................................................................................................380 
Algumas Diretivas ............................................................................................................................381 
SEQÜÊNCIA DE PASSOS PARA IMPLEMENTAÇÃO DO SOFTWARE (FIRMWARE).......................................381 
PORTAS DE I/O DIGITAIS .......................................................................................................................381 
PORTA .............................................................................................................................................381 
PORTB .............................................................................................................................................382 
PORTC .............................................................................................................................................383 
Outras Portas ...................................................................................................................................384 
EXERCÍCIO 1 - OSCILADOR....................................................................................................................384 
EXERCÍCIO 2 - OSCILADOR CONTROLADO ............................................................................................385 
EXERCÍCIO 3 - ONDA QUADRADA .........................................................................................................386 
TIMER 0.................................................................................................................................................386 
Características do Timer 0 ...............................................................................................................386 
Registradores....................................................................................................................................387 
Funcionamento do Timer 0 ..............................................................................................................388 
EXERCÍCIO 4 - OSCILADOR UTILIZANDO O TIMER 0 ..............................................................................388 
EXERCÍCIO 5 - OSCILADOR UTILIZANDO A INTERRUPÇÃO DO TIMER 0..................................................389 
TIMER 1.................................................................................................................................................391 
Características .................................................................................................................................391 
Esquema Elétrico .............................................................................................................................392 
Registradores Associados ao Timer1 ...............................................................................................392 
EXERCÍCIO 6 - OSCILADOR UTILIZANDO A INTERRUPÇÃO DO TIMER 1..................................................393 
USART OU SCI ....................................................................................................................................394 
Modos de Operação .........................................................................................................................394 
Registradores Associados.................................................................................................................395 
USART BAUD RATE GENERATOR (BRG) ............................................................................................396 
TRANSMISSÃO ASSÍNCRONA .................................................................................................................397 
EXERCÍCIO 7 - TRANSMISSOR SERIAL....................................................................................................398 
EXERCÍCIO 8 - TRANSMISSOR SERIAL 2 .................................................................................................399 
EXERCÍCIO 9 - RECEPTOR SERIAL..........................................................................................................399 
TIMER 2.................................................................................................................................................401 
Características .................................................................................................................................401 
Diagrama do Timer 2 .......................................................................................................................402 
Registradores Associados ao Timer 2 ..............................................................................................402 
MÓDULO CCP (COMPARE, CAPTURE AND PWM MODULE)..................................................................403 
Características Gerais......................................................................................................................403 
Recursos ...........................................................................................................................................403 
Registradores Associados ao Módulo CCP......................................................................................403 
Modo Capture...................................................................................................................................404 
Modo Compare.................................................................................................................................405 
Modo PWM.......................................................................................................................................405 
PWM - Aplicações ............................................................................................................................406 
EXERCÍCIO 10 - PWM...........................................................................................................................406 
PORTA SERIAL SÍNCRONA (SSP) ...........................................................................................................409 
Características .................................................................................................................................409 
Registradores Associados à Porta Serial Síncrona..........................................................................410Modo SPI..........................................................................................................................................411 
SPI - Operação.................................................................................................................................412 
SPI - Registradores Associados........................................................................................................414 
EXERCÍCIO 11 - SPI...............................................................................................................................414 
CONVERSOR ANALÓGICO-DIGITAL (ADC) ...........................................................................................416 
ADC - Características ......................................................................................................................416 
Diagrama do ADC............................................................................................................................417 
Registradores Associados ao ADC...................................................................................................418 
WATCHDOG TIMER E O MODO SLEEP (POWER DOWN)..........................................................................419 
Watchdog Timer ...............................................................................................................................419 
 
 
Sleep - Power Down .........................................................................................................................419 
Acordando o Dispositivo ..................................................................................................................420 
ICSP (IN CICUIT SERIAL PROGRAMMING).............................................................................................420 
Circuito Típico .................................................................................................................................420 
EXERCÍCIO 12........................................................................................................................................420 
APÊNDICE C - MICROCONTROLADORES DA FAMÍLIA INTEL 8051................................421 
APLICAÇÕES..........................................................................................................................................421 
MICROCONTROLADORES 8X5X..............................................................................................................421 
FABRICANTES........................................................................................................................................421 
AT89C52 - CARACTERÍSTICAS .............................................................................................................421 
APPLICATION BUILDER DA INTEL®.......................................................................................................422 
PINAGEM DO 8051.................................................................................................................................422 
ARQUITETURA.......................................................................................................................................424 
ORGANIZAÇÃO DA MEMÓRIA DE PROGRAMA .......................................................................................425 
REGISTRADORES INTERNOS E MEMÓRIA DE DADOS..............................................................................425 
INTERRUPÇÕES......................................................................................................................................427 
O SIMULADOR - JSIM ...........................................................................................................................427 
Ferramenta de simulação.................................................................................................................427 
O JENS EDITOR - JFE ............................................................................................................................428 
ADICIONAR A CHAMADA AO COMPILADOR ...........................................................................................429 
ADICIONAR A CHAMADA AO LINKER .....................................................................................................429 
ADICIONAR A CHAMADA AO SIMULADOR JSIM.....................................................................................430 
ADICIONAR A CHAMADA AO CONVERSOR (ABS TO HEX) OHS51...........................................................430 
ADICIONAR A CHAMADA AO CONVERSOR (HEX TO BIN) HEXBIN ...........................................................431 
O COMPILADOR C51 DA FRANKLIN SOFTWARE....................................................................................431 
GRAVADOR ...........................................................................................................................................431 
REGRAS DO COMPILADOR C51 DA KEIL ...............................................................................................431 
BIBLIOTECA DE FUNÇÕES......................................................................................................................431 
SEQÜÊNCIA DE PASSOS PARA IMPLEMENTAÇÃO....................................................................................432 
PORTAS DE I/O DIGITAIS .......................................................................................................................432 
Características .................................................................................................................................432 
Porta P0 ...........................................................................................................................................432 
Porta P1 ...........................................................................................................................................432 
Porta P2 ...........................................................................................................................................433 
Porta P3 ...........................................................................................................................................433 
PROBLEMA 1 - OSCILADOR ...................................................................................................................434 
PROBLEMA 2 - OSCILADOR CONTROLADO ............................................................................................435 
EXERCÍCIO 3 - ONDA QUADRADA .........................................................................................................436 
OS TEMPORIZADORES TIMER 0, TIMER 1 E TIMER 2..............................................................................436 
Características do Timer 0 e Timer 1...............................................................................................436 
Timer 0 e 1 - Operação ....................................................................................................................436 
Timer 0 e 1- Modo 0 .........................................................................................................................436 
Timer 0 e 1 - Modo 1 ........................................................................................................................437 
Timer 0 e 1 - Modo 2 ........................................................................................................................437 
Timer 0 e 1- Modo 3 .........................................................................................................................437 
Registradores Associados ao Timer/Counter ...................................................................................438 
Timer 2 - Características..................................................................................................................440

Continue navegando