Vous êtes sur la page 1sur 726

mikroC PRO para PIC

Abril de 2009. nota Reader's

AVISO LEGAL:
mik roC PRO para PIC e este manual so de propriedade da mikroElektronika e esto protegidos
pela lei de direitos autorais e tratados internacionais de direitos autorais. Portanto, voc deve tratar deste
manual
como qualquer outro material protegido por direitos autorais (por exemplo, um livro). O manual eo
compilador no pode ser
copiado, parcial ou totalmente sem autorizao escrita da mikroEelktronika. A
PDF edio do manual pode ser impresso para uso privado ou local, mas no para distribuio.
Modificando o manual ou o compilador estritamente proibida.

ATIVIDADES DE ALTO RISCO:


A mik roC PRO para PIC compilador no tolerante a falhas e no foi projetado, fabricado
ou destinado ao uso ou revenda como on-line de equipamentos de controle em ambientes perigosos
protec-
um desempenho sem falhas ing, como na operao de instalaes nucleares, navegao de aeronaves
ou
comunicao sistemas de controle de trfego areo, mquinas de suporte vida, ou sistemas de armas,
em que a falha do Software possa levar diretamente morte, ferimentos pessoais ou grave
danos fsicos ou ambientais ("Atividades de Alto Risco"). mikro Elektronika e seus fornecedores
Declinamos qualquer garantia explcita ou implcita de adequao para Atividades de Alto Risco.

CONTRATO DE LICENA:
Ao utilizar o mik roC PRO para PIC compilador, voc concorda com os termos deste acordo.
Somente uma pessoa pode usar a verso licenciada do mik roC PRO para PIC compilador de uma vez.
Copyright mikroElektronika 2003-2009.

Este manual cobre mik roC PRO para PIC verso 1.1 e os tpicos relacionados. verso mais recente-
ses podem conter alteraes sem aviso prvio.

Bug Reports compilador:


O compilador foi cuidadosamente testado e depurado. , no entanto, possvel
garantir um produto 100% livre de erros. Se voc gostaria de relatar um bug, por favor entre em contato
conosco
o office@mikroe.com endereo. Por favor, inclua as informaes seguintes em seu relatrio:
- Seu sistema operacional
- Verso do mik roC PRO para PIC
- Exemplo de cdigo
- Descrio de um bug

CONTATO EUA:
mikroElektronika
Voz: + 381 (11) 36 28 830
Fax: + 381 (11) 36 28 831
Web: www.mikroe.com
E-mail: office@mikroe.com

Windows uma marca registada da A Microsoft Corp Todas as outras trocas e / ou marcas de servios
so de propriedade de seus respectivos proprietrios.
Mikroelektronika - Solues de software e hardware para o mundo embutido
Observao do
leitor
Tabela de Contedo

CAPTULO 1 Introduo

CAPTULO 2 mik roC PRO para PIC Meio Ambiente

CAPTULO 3 MikroICD (In Circuit Debugger)

CAPTULO 4 mik roC PRO para PIC Especificidades

CAPTULO 5 PIC Especificidades

CAPTULO 6 mik roC PRO para PIC Referncia da Linguagem

CAPTULO 7 mik roC PRO para PIC Bibliotecas


Tabela de Contedos mikroC PRO para PIC

CAPTULO 1
Caractersticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Por onde comear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
mikroElektronika Associates Declarao de Licena e Garantia Limitada. . . . . . . . . . . . 4
IMPORTANTE - LEIA COM ATENO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
GARANTIA LIMITADA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ATIVIDADES DE ALTO RISCO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
DISPOSIES GERAIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Suporte Tcnico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Como Registrar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Quem recebe a chave de licena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Como obter a chave de licena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Depois de receber a chave de licena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

CAPTULO 2
Resumo IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Opes do menu principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
File Menu de Opes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Opes do menu Editar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Encontrar o texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Substituir texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Localizar em arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Ir para a linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
opo de expresses regulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Opes do menu Exibir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Barras de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Arquivo da Barra de Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Barra de Edio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Advanced Edit Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Localizar / Substituir Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Projeto barra de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Construir Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Depurador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Estilos de Barra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Barra de Ferram entas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Menu de Opes do Projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Opes do menu Executar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Opes do menu Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Ajuda Menu de Opes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Os atalhos de teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Resumo IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Personalizar Layout IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Janelas de encaixe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Salvar Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

IV Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

Auto Hide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Avanado editor de cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Editor de recursos avanados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Cdigo Assistente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Cdigo Folding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Parmetro Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Modelos de Cdigo (Auto Complete). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Correo automtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Verificador Ortogrfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bookmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Linha Goto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Comente / Descomente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Cdigo Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Lista de rotina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Project Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Projeto Janela Configuraes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Library Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Erro janela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Estatstica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Uso de memria do Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Uso de memria RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
RAM locais utilizados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Locais SFR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Uso de memria ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Constantes Memria ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Funo Ordenado por Nome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Funes separadas pelo tamanho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Funes Ordenado por endereos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Funes Ordenado por Nome do Grfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Funes Ordenado por carta do tamanho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Funes ordenadas por endereo Grfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Funo Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Memria Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Editor de Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
As ferramentas integradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
USART Terminal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
EEPROM Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
ASCII Grfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Sete Converter segmento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
LCD caractere personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
LCD Grfico Editor de Bitmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
HID Terminal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
UDP Terminal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Opes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Mikroelektronika - Solues de software e hardware para o mundo embutido V


Tabela de Contedos mikroC PRO para PIC

Cdigo editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
As configuraes de sada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Expresses Regulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Introduo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Simples encontrados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Seqncias de escape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Classes de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Metacaracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Metacaracteres - separadores de linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Metacaracteres - classes pr-definidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Exemplo:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Metacaracteres - Os limites de palavra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Metacaracteres - iteradores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Metacaracteres - Alternativas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Metacaracteres - Subexpresses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Metacaracteres - Referncias passadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
mikroC PRO para a PIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Opes de linha de comando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Projetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Novo Projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Assistente de Nova etapas do projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Projetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Novo Projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Assistente de Nova etapas do projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Personalizando Projetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Edit Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Gerenciar grupo de projecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Adicionar / Remover arquivos do projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Nvel do projeto define:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Arquivos de origem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Gerenciando arquivos de origem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Criar novo arquivo de origem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Abrindo um arquivo existente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Imprimindo um arquivo aberto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Salvar arquivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Salvando arquivo com um nome diferente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A fechar o ficheiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Limpeza pasta do projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Compilao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Arquivos de sada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Assemblia View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Mensagens de erro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Mensagens de erro do compilador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

VI Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

Mensagens de aviso do compilador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91


Mensagens de erro vinculador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Viso geral do software Simulator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Janela de Inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Exibir janela RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Cronmetro janela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Simulador de opes de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Criar nova biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Biblioteca de vrias verses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

CAPTULO 3
mikroICD Debugger Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Exemplos mikroICD Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
mikroICD (In-Circuit Debugger) Viso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Janela de Inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
EEPROM janela de inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Cdigo Janela de Inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
mikroICD Cdigo Watch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Ver memria RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Erros comuns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
mikroICD Advanced Breakpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Memria do Programa Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Memria do Programa Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Arquivo Registre-Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Emulador de Recursos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Pontos de Interrupo de Eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Cronmetro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

CAPTULO 4
Problemas padro ANSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Desvio da ANSI C padro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Linguagem C Exstensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Predefinidos Globais e constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
nvel de projectos predefinidos define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Bits Acesso Individual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Bits Acesso Individual de variveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
tipo sbit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
tipo bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Interrupes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
prioridade interrompe P18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Chamadas de funo de interrupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Exemplos de interrupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Mikroelektronika - Solues de software e hardware para o mundo embutido VII


Tabela de Contedos mikroC PRO para PIC

Directivas Linker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


Directiva absoluta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
org directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
orgall directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
funcorg directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Solicita funo indireta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Criada em rotinas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Lo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Oi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Superior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Maior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Delay_us. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Delay_ms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Vdelay_ms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Delay_Cyc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Clock_Khz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Clock_Mhz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Get_Fosc_kHz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Otimizao de Cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
dobrar Constant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
constante de propagao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Copie propagao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Relao de numerao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
"Cdigo Dead" eliminao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Alocao de pilha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
otimizao vars locais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Melhor gerao de cdigo e otimizao local. . . . . . . . . . . . . . . . . . . . . . . . . . 131

CAPTULO 5
Tipos de Eficincia Energtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Nested Solicita Limitaes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Especificidades PIC18FxxJxx. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Endereo SFR compartilhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Especificidades PIC16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Quebrando Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Limites da abordagem indireta atravs da FSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Tipo Especificadores de memria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
de dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 36
rx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
SFR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 7

CAPTULO 6
Viso geral sobre elementos lexicais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

VIII Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

Espao em branco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143


Espao em branco em Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Linha de emenda com contrabarra (\). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Comentrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
C comentrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
C + + comentrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
comentrios aninhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Token Exemplo de extrao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
As constantes inteiras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Long e sufixos Unsigned. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Decimais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Constantes hexadecimais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Constantes binrio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Constantes Octal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Floating Point Constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Constantes de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Sequncias de Escape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Desambiguao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Constantes String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Continuao de linha com barra invertida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Constantes Enumeration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Constantes ponteiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Expresses constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Palavras-chave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Identificadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Caso sensibilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Singularidade e abrangncia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Exemplos Identifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Pontuadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Colchetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Parnteses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Suspensrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Vrgula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Ponto e vrgula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Colon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Asterisk (Declarao Pointer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Cadastre Libra (Directiva Preprocessor). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Objetos e declaraes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Lvalues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Rvalues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Mikroelektronika - Solues de software e hardware para o mundo embutido IX


Tabela de Contedos mikroC PRO para PIC

Escopo e visibilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164


Escopo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Visibilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Espaos de nome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Durao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Static Durao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Durao local. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
tipos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Categorias Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Tipos Fundamentais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Tipos de Aritmtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Tipos Integral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Tipos de ponto flutuante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Enumeraes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Enumerao Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Anomous Tipo Enum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Enumerao Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Tipo void. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Funes Void. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Os ponteiros genricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Tipos derivados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Array Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Inicializao de matriz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Expresses n matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Arrays multi-dimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Ponteiros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Declaraes Pointer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Ponteiros nulos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Ponteiros de funo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Atribuir um endereo para um ponteiro de funo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Aritmtica de ponteiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Matrizes e ponteiros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Atribuio e comparao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Ponteiro Adio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Ponteiro Subtrao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Estruturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Estrutura da declarao e inicializao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Declaraes incompletas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Estruturas Untagged e TYPEDEFs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Trabalhando com Estruturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Cesso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Tamanho da estrutura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Estruturas e funes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

X Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

Estrutura de Acesso ao Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186


Acessando estruturas aninhadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Estrutura de exclusividade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Sindicatos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Sindicatos Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 88
Tamanho da unio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Unio Acesso ao Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Campos de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Declarao de campos de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Acesso campos de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Tipo Converses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Converses Standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Detalhes:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Ponteiro de converso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Concersions tipo explcito (converso de tipo). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Declaraes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Declaraes e definies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Declaraes e declarators. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . 194
Linkage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Regras de Linkage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Linkage Regimento Interno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Linkage regras externas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Classes de armazenamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Auto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Registre-se. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Static. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Extern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Qualificao de tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Eliminatrias Const. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Qualificador voltil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Especificador typedef. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Declaraes asm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Inicializao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Inicializao automtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
funes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Funo Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Prottipo de funo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Definio da funo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Function reentrncia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Chamadas de funo e argumento de converso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Chamadas de funo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Converses Argumento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Operadores Presidence e Associativismo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

Mikroelektronika - Solues de software e hardware para o mundo embutido XI


Tabela de Contedos mikroC PRO para PIC

Operadores aritmticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208


Aritmtica Binria Operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Unrios operadores aritmticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Operadores relacionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Viso geral sobre operadores relacionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Operadores relacionais em expresses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Viso geral sobre operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Operaes lgicas em nvel de bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Shift Operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Bitwise versus lgica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Operadores lgicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Viso geral sobre operadores lgicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Operadores lgicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Expresses lgicas e efeitos colaterais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Lgico versus bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Operador condicional? :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Regras Operador condicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Operadores de atribuio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Simples operador de atribuio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Operador de atribuio composto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Regras de atribuio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Operador sizeof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Sizeof Aplicada Expresso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Sizeof Aplicada ao tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
expresso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Expresses vrgula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
declaraes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Demonstraes rotulados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Demonstraes Expresso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Demonstraes de Seleo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Se a declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Instruo if aninhada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Demonstraes Switch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Switch aninhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Instrues iterao (Loops). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Enquanto a Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
No Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Para a declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Ir instrues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Break e continue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Ruptura de Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Continue Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Goto Declarao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

XII Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

Instruo Return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228


Declaraes compostas (blocos). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
pr-processamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Directivas Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Continuao de linha com contrabarra (\). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Definir Macros e Expanses Macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Macros com parmetros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Macros indefinida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Incluso de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Explcita Caminho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Operadores Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Operador #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Operador # #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Compilao condicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Directivas # if, # elif, # Else e # endif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Directivas # ifdef e # ifndef. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

CAPTULO 7
Bibliotecas Hardware PIC-especficas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Padro ANSI C bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Bibliotecas Diversos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Dependncias da biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Bibliotecas de Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Biblioteca ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
ADC_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
CAN Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
CANSetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
CANGetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
CANInitialize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
CANSetBoudRate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
CANSetMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
CANSetFilter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
CanRead. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
CanWrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Constantes CAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
CAN_OP_MODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
CAN_CONFIG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
CAN_TX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
CAN_RX_MSG_FLAGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
CAN_MASK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
CAN_FILTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Mikroelektronika - Solues de software e hardware para o mundo embutido XIII


Tabela de Contedos mikroC PRO para PIC

Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253


HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Biblioteca CANSPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
das dependncias externas de CANSPI Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
CANSPISetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
CANSPIGetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
CANSPIInitialize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
CANSPISetBaudRate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
CANSPISetMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
CANSPISetFilter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
CANSPIRead. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
CANSPIWrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Constantes CANSPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
CANSPI_OP_MODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
CANSPI_CONFIG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
CANSPI_TX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
CANSPI_RX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
CANSPI_MASK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
CANSPI_FILTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Compact Flash Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Cf_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Cf_Detect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Cf_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Cf_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Cf_Read_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Cf_Read_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Cf_Write_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Cf_Write_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Cf_Read_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Cf_Write_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Cf_Fat_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Cf_Fat_QuickFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Cf_Fat_Assign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Cf_Fat_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Cf_Fat_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Cf_Fat_Rewrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Cf_Fat_Append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Cf_Fat_Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Cf_Fat_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

XIV Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Cf_Fat_Set_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Cf_Fat_Get_Swap_File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Biblioteca EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
EEPROM_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
EEPROM_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Ethernet PIC18FxxJ60 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
famlia PIC18FxxJ60 do microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Ethernet_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Ethernet_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Ethernet_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Ethernet_doPacket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Ethernet_putByte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Ethernet_putBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Ethernet_putConstBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Ethernet_putString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Ethernet_putConstString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Ethernet_getByte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Ethernet_getBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Ethernet_UserTCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Ethernet_UserUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Ethernet_getlpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Ethernet_getGwlpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 07
Ethernet_getDnslpAddress ();. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Ethernet_getlpMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Ethernet_confNetwork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Ethernet_arpResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Ethernet_sendUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Ethernet_dnsResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Ethernet_initDHCL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Ethernet_doDHCPLeaseTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Ethernet_renewDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Biblioteca Flash Memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
FLASH_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
FLASH_Read_N_Bytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
FLASH_Write. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
FLASH_Erase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo XV


Tabela de Contedos mikroC PRO para PIC

FLASH_Erase_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
LCD Grfico Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
As dependncias externas do LCD Grfico Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . 326
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Glcd_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Glcd_Set_Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Glcd_Set_X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Glcd_Set_Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Glcd_Read_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Glcd_Write_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Glcd_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Glcd_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Glcd_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Glcd_V_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Glcd_H_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Glcd_Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Glcd_Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Glcd_Circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Glcd_Set_Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Glcd_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Glcd_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Glcd_Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
I Biblioteca C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
I2C1_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
I2C1_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
I2C1_Repeated_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
I2C1_Is_Idle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
I2C1_Rd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
I2C1_Wr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
I2C1_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Biblioteca do teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
As dependncias externas do teclado Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Keypad_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Keypad_Key_Press. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Keypad_Key_Click. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Biblioteca de LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

XVI Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

As dependncias externas do LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351


Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Lcd_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Lcd_Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Lcd_Out_CP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Lcd_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Lcd_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Lcd_Cmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Disponvel Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
HW conexo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Manchester Biblioteca de cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
As dependncias externas do Manchester Code Library. . . . . . . . . . . . . . . . . . . . . 359
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Man_Receive_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Man_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Man_Send_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Man_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Man_Synchro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Man_Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Exemplo de conexo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Multi Media Library Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Secure Digital Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
As dependncias externas do MMC Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Mmc_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Mmc_Read_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Mmc_Write_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Mmc_Read_Cid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Mmc_Read_Csd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Mmc_Fat_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Mmc_Fat_QuickFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Mmc_Fat_Assign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Mmc_Fat_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Mmc_Fat_Rewrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Mmc_Fat_Append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Mmc_Fat_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Mmc_Fat_Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Mmc_Fat_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Mmc_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Mmc_Fat_Get_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Mmc_Fat_Get_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Mmc_Fat_Get_Swap_File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

Mikroelektronika - Solues de software e hardware para o mundo embutido XVII


Tabela de Contedos mikroC PRO para PIC

Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380


HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Biblioteca OneWire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Ow_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Ow_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Ow_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Porto Biblioteca Expander. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
As dependncias externas do Porto Expander Biblioteca. . . . . . . . . . . . . . . . . . . . . . . 389
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Expander_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Expander_Read_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Expander_Write_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Expander_Read_PortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Expander_Read_PortB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Expander_Read_PortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Expander_Write_PortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Expander_Write_PortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Expander_Write_PortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Expander_Set_DirectionPortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Expander_Set_DirectionPortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Expander_Set_DirectionPortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Expander_Set_PullUpsPortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Expander_Set_PullUpsPortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Expander_Set_PullUpsPortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
PS / 2 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
As dependncias externas do PS / 2 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Ps2_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Ps2_Key_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Teclas de funo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Biblioteca PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
PWM1_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
PWM1_Set_Duty. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
PWM1_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
PWM1_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

XVIII Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
RS-485 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 10
As dependncias externas da RS-485 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
RS485Master_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
RS485Master_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
RS485Master_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
RS485slave_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
RS485slave_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
RS485slave_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 15
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Mensagem clculos formato e CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Software I C Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
das dependncias externas de Soft_I2C Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Soft_I2C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Soft_I2C_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Soft_I2C_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Soft_I2C_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Soft_I2C_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Soft_I2C_Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Software Biblioteca SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
As dependncias externas de software SPI Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . 428
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Soft_Spi_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Soft_Spi_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Soft_SPI_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Software Library UART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Soft_UART_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
Soft_UART_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Soft_UART_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Soft_Uart_Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Biblioteca de som. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 39
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Sound_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Sound_Play. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Biblioteca SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

Mikroelektronika - Solues de software e hardware para o mundo embutido XIX


Tabela de Contedos mikroC PRO para PIC

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443


Spi_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Spi1_Init_Advanced. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Spi1_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Spi1_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
SPI_Set_Active. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
Biblioteca SPI Ethernet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
As dependncias externas do SPI Ethernet Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . 450
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
PIC16 e PIC18:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
S PIC18: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Spi_Ethernet_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Spi_Ethernet_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Spi_Ethernet_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Spi_Ethernet_doPacket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Spi_Ethernet_putByte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Spi_Ethernet_putBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Spi_Ethernet_putConstBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Spi_Ethernet_putString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Spi_Ethernet_putConstString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Spi_Ethernet_getByte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Spi_Ethernet_getBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Spi_Ethernet_UserTCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Spi_Ethernet_UserUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
SPI_Ethernet_getIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
SPI_Ethernet_getGwIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
SPI_Ethernet_getDnsIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
SPI_Ethernet_getIpMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
SPI_Ethernet_confNetwork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
SPI_Ethernet_arpResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
SPI_Ethernet_sendUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
SPI_Ethernet_dnsResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
SPI_Ethernet_initDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
SPI_Ethernet_doDHCPLeaseTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
SPI_Ethernet_renewDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Biblioteca SPI LCD grfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
As dependncias externas do SPI LCD Grfico Biblioteca. . . . . . . . . . . . . . . . . . . . . 479
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Spi_Glcd_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
SPI_Glcd_Set_Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

XX Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

SPI_Glcd_Set_Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
SPI_Glcd_Set_X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Spi_Glcd_Read_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
SPI_Glcd_Write_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
SPI_Glcd_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
SPI_Glcd_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
SPI_Glcd_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
SPI_Glcd_V_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
SPI_Glcd_H_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
SPI_Glcd_Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
SPI_Glcd_Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
SPI_Glcd_Circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
SPI_Glcd_Set_Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
Spi_Glcd_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
Spi_Glcd_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Spi_Glcd_Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Biblioteca SPI LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
As dependncias externas do SPI LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Spi_Lcd_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Spi_Lcd_Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Spi_Lcd_Out_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5
Spi_Lcd_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Spi_Lcd_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Spi_Lcd_Cmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Disponvel Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Conexo HW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
LCD8 SPI (interface de 8 bits) Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
As dependncias externas do SPI LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Spi_Lcd8_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Spi_Lcd8_Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Spi_Lcd8_Out_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Spi_Lcd8_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Spi_Lcd8_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Spi_Lcd8_Cmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Disponvel Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Biblioteca SPI Grfica T6963C LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
As dependncias externas do SPI T6963C LCD Grfico Biblioteca. . . . . . . . . . . . . . 507

Mikroelektronika - Solues de software e hardware para o mundo embutido XXI


Tabela de Contedos mikroC PRO para PIC

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508


Spi_T6963C_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Spi_T6963C_WriteData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
pi_T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Spi_T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Spi_T6963C_WaitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Spi_T6963C_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Spi_T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Spi_T6963C_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Spi_T6963C_write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Spi_T6963C_line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Spi_T6963C_rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Spi_T6963C_box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Spi_T6963C_circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Spi_T6963C_image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Spi_T6963C_Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Spi_T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Spi_T6963C_clearBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Spi_T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Spi_T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Spi_T6963C_DisplayGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 19
Spi_T6963C_displayTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Spi_T6963C_setGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Spi_T6963C_setTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Spi_T6963C_panelFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Spi_T6963C_GrFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Spi_T6963C_txtFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Spi_T6963C_cursor_height. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Spi_T6963C_graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Spi_T6963C_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Spi_T6963C_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Spi_T6963C_cursor_blink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
T6963C Biblioteca LCD grfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
As dependncias externas da T6963C Biblioteca LCD grfico. . . . . . . . . . . . . . . . . 530
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
T6963C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
T6963C_writeData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
T6963C_waitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
T6963C_fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

XXII Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

T6963C_write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
T6963C_write_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
T6963C_line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
T6963C_rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
T6963C_box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
T6963C_circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
T6963C_image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
T6963C_sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
T6963C_clearBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
T6963C_displayGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
T6963C_displayTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
T6963C_setGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
T6963C_SetTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
T6963C_PanelFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
T6963C_grFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
T6963C_txtFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
T6963C_cursor_height. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
T6963C_Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
T6963C_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
T6963C_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
T6963C_Cursor_Blink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Biblioteca UART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Uart_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
Uart_Data_Ready. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
UART1_Tx_Idle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
UART1_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
UART1_Read_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
UART1_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
UART1_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
UART_Set_Active. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
USB HID Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Arquivo descritor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
Hid_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Hid_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
id_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560

Mikro ele ktro nik a - Solues de softwar e e hardwar e para o mundo embuti do XXIII
Tabela de Contedos mikroC PRO para PIC

Hid_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
Padro ANSI C bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
ANSI C Library Ctype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Funes da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
isalnum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
isalpha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
iscntrl. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
isdigit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
isgraph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
islower. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
ispunct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
isspace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
isupper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
isxdigit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
toupper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
tolower. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
ANSI C biblioteca matemtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Funes da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
acos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
asin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
atan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
atan2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
ceil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
cos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
eval_poly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
exp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
fabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
cho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
frexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
ldexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
log10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
modf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
pow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
pecado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
sinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
sqrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
bronzeado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
tanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Biblioteca C ANSI stdlib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Funes da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

XXIV Mikroelektronika - Solues de software e hardware para o mundo embutido


mikroC PRO para PIC Tabela de Contedos

abs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
atof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
atoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
atol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
div. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
ldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
uldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
laboratrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
mx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
min. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
rand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
srand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
xtoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
Estruturas Div. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
ANSI C Biblioteca String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Funes da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
memchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
memcmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
memcpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
memmove. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
memset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
strcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
strchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
strcmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
strcpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
strlen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
strncat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
strncpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
strspn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
trncmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
strstr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
strcspn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
strpbrk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
strrchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Bibliotecas Diversos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Biblioteca de boto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Biblioteca de converses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
ByteToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
ShortToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
WordToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
IntToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

Mikroelektronika - Solues de software e hardware para o mundo embutido XXV


Tabela de Contedos mikroC PRO para PIC

LongintToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
LongWordToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
FloatToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Dec2Bcd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Bcd2Dec16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Dec2Bcd16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Biblioteca PrintOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
PrintOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Biblioteca setjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Setjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Longjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Biblioteca de Sprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Funes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
sprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
sprintl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
sprinti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
Time Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Time_dateToEpoch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Time_epochToDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Time_dateDiff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Biblioteca Trigonometria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
sinE3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
cosE3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

XXVI Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO


CAPTULO 1
Introduo ao
mikroC PRO para PIC

A mik roC PRO para PIC uma poderosa ferramenta de desenvolvimento de recursos
sofisticados para a PIC
microcontroladores. Ele projetado para fornecer ao programador a mais fcil pos -
vel soluo para desenvolvimento de aplicaes para sistemas embarcados, sem compromis -
o de desempenho ou controle.

1
CAPTULO 1
Introduo mikroC PRO para PIC

mikroC PRO para PIC IDE

PIC e C se encaixam bem: PIC o mais popular chip de 8 bits do mundo, usado em
uma ampla variedade de aplicaes, e C, premiado por sua eficincia, o natural escolha
para o desenvolvimento de sistemas embarcados. mik roC PRO para PIC proporciona um
bem-sucedido
correspondncia com IDE altamente avanado, compilador ANSI compatvel, amplo conjunto
de hard-
ware bibliotecas, documentao completa, e abundncia de exemplos prontos para correr.

Caractersticas

mikroC PRO para PIC permite que voc rapidamente desenvolver e implantar aplicativos
complexos:

Escreva seu cdigo-fonte C usando o built-in editor de cdigo (Code e Parmetro


Assistentes, cdigo dobrando, Sintaxe Destacando, Auto Correct, Mscaras de Cdigo,
e muito mais.)
Use includos mik roC PRO para PIC bibliotecas para acelerar drasticamente o
desenvolvimento
desenvolvimento: a aquisio de dados, memria, displays, converses de comunicao,
etc
Monitore sua estrutura de programa, variveis e funes do Code Explorer.
Gere comentou, montagem legvel, e compa-padro HEX
vel com todos os programadores.
Use o mikroICD integrado (In-Circuit Debugger) em tempo real ferramenta de depurao
para
2 Mikroelektronika - Solues de software e hardware para o mundo embutido
CAPTULO 1
mikroC PRO para PIC Introduo

acompanhar a execuo do programa no nvel de hardware.


fluxo de inspecionar o programa e depurar lgica executvel com o software integrado
Simulator.
Obtenha relatrios detalhados e grficos: mapa de memria RAM e ROM, as estatsticas de
cdigo, a montagem
anncio, chamando a rvore, e muito mais.
mik roC PRO para PIC fornece inmeros exemplos de expandir, desenvolver e utilizar
como a construo de tijolos em seus projetos. Copie-as por completo, se acharem
necessrio- por isso que
Foram includos os com o compilador.

Por onde comear

No caso que voc um iniciante em programao de microcontroladores PIC, leia cuidado


plenamente o PIC captulo Especficos. Poderia dar-lhe algumas indicaes teis sobre PIC
restries, a portabilidade do cdigo, e boas prticas de programao.

Se voc experiente em programao C, provavelmente voc vai querer consultar


mik roC PRO para PIC Especificidades primeiro. Por questes de idioma, voc pode sempre
se referem ao
o global Language Reference. Uma lista completa de bibliotecas includo
disponvel em mikroC PRO PIC para Bibliotecas.

Se voc no muito experiente em programao C, no entre em pnico! mik roC PRO para
PIC fornece inmeros exemplos tornando mais fcil para voc ir rapidamente. Ns sug
rem que voc primeiro consultar projetos e arquivos de origem e, em s eguida iniciar a
navegao na
exemplos que voc o mais interessado em
M
ik
r
o
el
e
k
tr
o
n
ik
a
-
S
of
t
w
a
r
e
s
e
s
ol
u


e
s de hardware para Embedded World

3
CAPTULO 1
Introduo mikroC PRO para PIC

Mikroelektronika DECLARAO DE LICENA E ASSOCIADOS


GARANTIA LIMITADA

IMPORTANTE - LEIA ATENTAMENTE

Esta licena declarao e garantia limitada constitui um contrato legal ("Licena


Contrato ") entre voc (como pessoa fsica ou jurdica) e mikroElek -
tronika ("mikroElektronika Associates") para produtos de software ("Software"), identificado
acima, incluindo qualquer software, mdia e acompanhamento on-line ou impresso docu-
implementao.

AO INSTALAR, COPIAR OU USAR O SOFTWARE, VOC CONCORDA


PARA SER OBRIGADO POR TODOS OS TERMOS E CONDIES DA LICENA
ACORDO.

Aps a aceitao dos termos e condies do Contrato de Licena,


mikroElektronika Associates lhe concede o direito de usar o software de uma forma prevista
abaixo.

Este Software propriedade da mikroElektronika Associates e est protegido por cpia


direito certo e tratado internacional de direitos autorais. Portanto, voc deve tratar este software
como qualquer outro material protegido por copyright (por exemplo, um livro).

Voc pode transferir o Software e documentao em uma base permanente prestado. Voc
no retenha nenhuma cpia eo recebedor concordar com os termos do Contrato de Licena.
Exceto como previsto do Contrato de Licena, voc no poder transferir, alugar, arrendar,
emprestar, copiar, modificar, traduzir, sublicenciar, compartilhar o tempo ou transmitir
eletronicamente ou
receber Software, mdia ou documentao. Voc reconhece que o Software no
forma de cdigo-fonte um segredo comercial do mikroElektronika Associates
e, portanto, voc concorda em no modificar o Software ou a tentativa de fazer engenharia
reversa,
descompilar, ou desmontar, exceto e somente na medida em que tal atividade seja
expressamente permitida pela legislao aplicvel no obstante esta limitao.

Se voc tiver adquirido uma verso de atualizao do software, que constitui um nico pro-
duto com o software mikroElektronika Associates que voc atualizou. Voc pode usar
a verso de atualizao do Software apenas de acordo com Contrato de Licena.

4 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 1
mikroC PRO para PIC Introduo

GARANTIA LIMITADA

Respeitosamente excetuando os Redistribuveis, que so fornecidos "Como esto", sem guerra


rantia de nenhum tipo, garante que o Software mikroElektronika Associates, uma vez actuali -
ed e usados corretamente, ir executar substancialmente de acordo com o acom -
o, documentao e software de mdia estar livre de defeitos de materiais e
obra, por um perodo de 90 (noventa) dias a contar da data de recebimento. Qualquer implcita
garantias de Software so limitadas a 90 (noventa) dias.

mikroElektronika Associates ' e seus fornecedores inteira responsabilidade, e seu exclusivo


recurso dever ser, no mikroElektronika Associates ' opo, (a) a devoluo do preo
pago, ou (b) a reparao ou substituio do software que no atende mikroElektronika
Associates ' Garantia Limitada e que seja devolvido a mikroElektronika Associates
com uma cpia do recibo. No devolva o produto at se ter
"Scios" Mikroelektronika PRIMEIRA e obteve um RETURN
Nmero da autorizao. Este Garantia limitada nula se a falha do Software
resultou de um acidente, abuso ou m utilizao. Qualquer substituio de Software
ser garantido para o resto do perodo da garantia original ou 30 (trinta) dias,
o que for maior.

AO MXIMO PERMITIDO POR LEI,


Mikroelektronika ASSOCIADOS E SEUS FORNECEDORES REJEITAM TODAS
OUTRAS GARANTIAS E CONDIES, EXPRESSA OU IMPLCITA,
INCLUDO, MAS NO SE LIMITANDO S GARANTIAS DE
COMERCIALIZA O, ADEQUAO A UMA FINALIDADE ESPECFICA, E
NO-VIOLAO, NO QUE DIZ RESPEITO AO SOFTWARE E PRESTAO
OU FALTA DE PRESTAO DE SERVIOS DE APOIO.

EM HIPTESE ALGUMA A Mikroelektronika ASSOCIADOS OU SEUS FORNECEDORES


SER RESPONSVEL POR QUAISQUER DANOS, INCIDENTA IS OU CONSEQENCIAIS
DANOS (INCLUINDO, SEM LIMITAO, DANOS
POR PERDA DE LUCROS E INFORMAO DE NEGCIOS, NEGCIOS
INTERRUPO OU QUALQUER OUTRA PERDA PECUNIRIA) DECORRENTES DO
USO OU IMPOSSIBILIDADE DE UTILIZAO DO SOFTWARE OU PRESTAO DE
OU NO PRESTAO DE SERVIOS DE APOIO, MESMO
ASSOCIATES Mikroelektronika FOI AVISADO DA POSSIBILIDADE
DE TAIS DANOS. EM QUALQUER CASO, ASSOCIATES Mikroelektronika '
TODA RESPONSABILIDADE EM QUALQUER PRESTAO DE LICENA
SER LIMITADA AO VALOR PAGO POR VOC
SOFTWARE FORNECIDO, entretanto, se voc entrou
A Associates Mikroelektronika CONTRATO DE SERVIOS DE APOIO,
ASSOCIATES Mikroelektronika ' TODA A RESPONSABILIDADE SOBRE
Servios de apoio sero regidos pelos termos DESSA
ACORDO.

Mikroelektronika - Solues de software e hardware para o mundo embutido 5


CAPTULO 1
Introduo mikroC PRO para PIC

ATIVIDADES DE ALTO RISCO

O software no tolerantes a falhas e no foi projetado, fabricado ou destinado ao uso


ou revenda como on-line de equipamentos de controle em ambientes perigosos que exijam
prova de falhas
desempenho, tais como na operao de instalaes nucleares, navegao de aeronaves ou
comunicao sistemas de controle de trfego areo, mquinas de suporte vida, ou armas
sistemas, em que a falha do Software possa levar diretamente morte, ferimentos pessoais,
ou danos fsicos ou ambientais graves ("Atividades de Alto Risco"). mikroElektron-
ika Associados e seus fornecedores se isentam especificamente qualquer guerra, expressas ou
implcitas,
rantia de adequao para Atividades de Alto Risco.

DISPOSIES GERAIS

Essa declarao s pode ser modificado por escrito e assinado por voc e uma autorizao
oficial-
cer de mikroElektronika Associates. Se qualquer disposio desta declarao considerada
nula
ou inexeqvel, o restante permanecer vlido e exeqvel de acordo com a sua
termos. Se qualquer medida prevista determinada como tendo falhado a sua finalidade
essencial,
todas as limitaes de responsabilidade e excluses dos danos previstos no GARANTIAS
Limited-
ty permanecer em vigor.

Esta afirmao lhe d direitos legais especficos, voc pode ter outros, que variam, de
pas para pas. mikroElektronika Associates reserva todos os direitos no especificamente
concedida nesta declarao.

mikroElektronika
Visegradska 1A,
11000 Belgrade,
A Europa.

Telefone: + 381 11 36 28 830


Fax: +381 11 36 28 831
Web: www.mikroe.com
E-mail: office@mikroe.com

6
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 1
mikroC PRO para PIC Introduo

SUPORTE TCNICO

No caso de voc encontrar qualquer problema, voc bem-vindo ao nosso frum de suporte
em
www.mikroe.com/forum/. Aqui, voc tambm pode encontrar informaes teis, dicas de
hardware,
prtica e trechos de cdigo. Seus comentrios e sugestes sobre o futuro desenvolvi -
mento do mik roC PRO para PIC so sempre apreciado - sinta-se livre para deixar uma nota
ou dois na nossa lista de desejos.

Em nossa Base de Conhecimento www.mikroe.com/en/kb/ voc pode encontrar as respostas a


Fre-
quentemente Perguntas e solues para problemas conhecidos. Se voc no consegue
encontrar o
soluo para o problema na Base de Conhecimento em seguida, informar ao Posto de Apoio
www.mikroe.com/en/support/. Desta forma, podemos gravar e rastrear bugs mais
eficiente, o que do nosso interesse mtuo. Ns respondemos a todos os relatrios de bugs e
ques-
o de forma adequada, cada vez melhor o nosso suporte tcnico.

M
ik
r
o
el
e
k
tr
o
n
ik
a
-
S
ol
u


e
s
d
e
s
of
t
w
a
r
e
e
h
a
r
d
w
a
r
e
para o mundo embutido

7
CAPTULO 1
Introduo mikroC PRO para PIC

COMO SE INSCREVER

A verso mais recente do mik roC PRO para PIC est sempre disponvel para download
em nosso site. um software totalmente funcional bibliotecas, exemplos e compre-
ajuda abrangente includo.

A nica limitao da verso grtis que ela no pode gerar a sada hexadecimal mais de 2
KB. Embora possa parecer restritivo, essa margem permite-lhe desenvolver prticas,
aplicaes de trabalho, sem pensar em limitar a demo. Se voc pretende desenvolver
realmente
projetos complexos na mik roC PRO para PIC, ento voc deve considerar a possibili-
dade de adquirir a chave de licena.

Quem recebe a chave de licena

Os compradores do mik roC PRO para PIC tm direito a chave de licena. Depois de ter
completaram o procedimento de pagamento, voc tem a opo de registar o seu mikroC
PRO. Desta forma voc pode gerar sada hexadecimal sem quaisquer limitaes.

Como obter a chave de licena

Depois de ter concludo o procedimento de pagamento, inicie o programa. Selecione Ajuda >
Como
Registrar a partir do menu drop-down ou clique no cone Como Registrar. Preencha o
formulrio de inscrio (figura abaixo), selecione o seu distribuidor, e clique no boto Enviar.

8 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 1
mikroC PRO para PIC Introduo

Isto ir iniciar o seu cliente de e-mail com a mensagem pronta para ser enviada. Reveja as
infor-
informao que voc entrou, e adicione o comentrio se achar necessrio. Por favor,
no modificar a linha de assunto.

Ao receber e verificar o seu pedido, ns enviaremos a chave de licena para o e-mail


endereo especificado no formulrio.

Mikroelektronika - Solues de software e hardware para o mundo embutido 9


CAPTULO 1
Introduo mikroC PRO para PIC

Depois de receber a chave de licena

A chave de licena vem como um pequeno arquivo autoextracting - apenas inici-lo em


qualquer lugar sua
computador para ativar sua cpia do compilador e remover o limite de demonstrao. Voc
no precisa reiniciar seu computador ou instalar qualquer componente adicional. Alm disso,
no h necessidade de executar o mik roC PRO para PIC no momento da ativao.

Notas:

A chave de licena vlida at que voc formatar o disco rgido. No caso de precisar de
esteira do disco rgido, voc deve solicitar uma nova chave de ativao.
Por favor, mantenha o programa de ativao em um lugar seguro. Toda vez que voc
atualizar o
compilador voc deve comear este programa novamente para reativar a licena.

10 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC
Meio Ambiente

O mikroC PRO para PIC um ambiente amigvel e intuitivo.

11
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Resumo IDE

O editor de cdigo regulveis Sintaxe Destacando, Cdigo de dobradura, Cdigo


Adjunto, Assistente parmetros, Auto Corrigir erros de digitao comuns e Tem Cdigo
placas (Auto Complete).
O Code Explorer est sua disposio para facilitar o gerenciamento do projeto.
O Gerente de Projeto alows gerenciamento de projetos mltiplos
configuraes do projeto geral podem ser feitas na janela de configuraes do projeto
gerente de Biblioteca permite bibliotecas manuseio simples de ser usado em um projeto
A janela de erro mostra todos os erros detectados durante a compilao e vinculao.
A fonte de nvel de software simulador permite depurar passo lgico executvel -a-
etapa, observando o fluxo do programa.
O assistente para Novo projeto uma maneira rpida, confivel e fcil maneira de criar um
projeto.
Arquivos de ajuda so de sintaxe e sensvel ao contexto.
Como em qualquer aplicao de Windows modernos, voc pode personalizar o layout da
mikroC PRO para PIC para atender s suas necessidades.
Corretor ortogrfico identificadores sublinha que so desconhecidos para o projeto. Desta
forma,
ele ajuda o programador a detectar potenciais problemas cedo, muito antes do proj
A ECT compilado.
Corretor ortogrfico pode ser desativado, escolhendo a opo na janela de Preferncias
(F12).

12 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

MENU PRINCIPAL OPES

As opes disponveis do menu principal so:

Tpicos relacionados: Os atalhos de teclado

Mikroelektronika - Solues de software e hardware para o mundo embutido 13


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
FILE OPES

O menu File o principal ponto de entrada para a manipulao com os arquivos de origem.

Arquivo Descrio

Abra uma nova janela do editor.

Abra o arquivo de origem para edio ou arquivo de


imagem para visualizao.
Reabrir ficheiro utilizado recentemente.

Salve as alteraes para o editor ativo.


Salve o arquivo fonte ativa com os diferentes nome ou
alterar o tipo de arquivo.
Feche o arquivo fonte ativa.

Visualizao de Impresso.

Sair IDE.

Tpicos relacionados: Os atalhos de teclado, Arquivo Barra, Fonte Gesto de Ficheiros

14 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Opes do menu
Editar

Descrio
Editar
Desfazer ltima alterao.

Refazer a ltima alterao.

Recortar o texto selecionado para o clipboard.

Copiar o texto selecionado para o clipboard.

Colar o texto da prancheta.

Deletar texto selecionado.

Selecione todo o texto no editor ativo.

Localizar texto em editor ativo.

Localizar prxima ocorrncia de texto no editor ativo.

Localizar a ocorrncia anterior do texto no editor ativo.

Substitua o texto no editor ativo.


Localizar texto em arquivo corrente, em todos os arquivos
abertos, ou em arquivos
da pasta desejada.
Saltar para a linha desejada no editor ativo.

Advanced Cdigo opes do Editor

Mikroelektronika - Solues de software e hardware para o mundo embutido 15


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Avanado Descrio
Cdigo de comentrio selecionados ou colocados
com linha-
mento, esente
Descom nocdigo
houverselecion
nenhumaado seleo.
ou remov er nica
linha
comentrio,
Recuo cdigoseselecionado.
no houver nenhuma seleo.

Outdent cdigo selecionado.

Alteraes selecionada caso de texto em


minsculas.
Alteraes selecionada caso o texto em
maisculas.
Alteraes selecionada caso de texto para
titlercase.
Pesquisar Texto

Caixa de dilogo para procurar o documento para o texto especificado. A busca por-
formado na direo especificada. Se a string no for encontrada uma mensagem exibida.

16 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Substituir texto

Caixa de dilogo para a busca de uma seqncia de texto em arquivo e substituindo-a por
outra cadeia de texto.

Localizar em arquivos

Caixa de dilogo para a busca de uma seqnci a de texto no arquiv o atual, todos os arquiv os
abertos , ou em arquiv os em um disco.

A string a ser procurada especificado no texto para encontrar campo. Se a pesquisa em


diretrios opo
selecionado, os arquivos para busca esto especificados na mscara de arquivos e campos
de Caminho.
Mi
kr
oel
ekt
ro
nik
a-
Sol
u
e
s
de
sof
tw
are
e
har
dw
are
par
ao
mu
nd
o
em
but
ido

17
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Ir para a linha

Caixa de dilogo que permite ao usurio especificar o nmero da linha na que o cursor deve
ser posicionado.

opo de expresses regulares

Ao marcar esta caixa, voc ser capaz de avanar em sua pesquisa, por meio de regular
expresses.

Tpicos relacionados: Os atalhos de teclado, Barra de Edio, Edio Avanada Barra de


ferramentas

18 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Menu Opes de visualizao

Arquivo Descrio

Mostrar barras de ferramentas / Hide.

Mostrar / Esconder as janelas de depurao.

Show / Hide Lista de rotina em editor ativo.

Show / Hide janela Project Settings.

Show / Hide Cdigo do Windows Explorer.

Show / Hide janela Project Manager.

Show / Hide Library Manager.

Mostrar / ocultar janela de favoritos.

Show / Hide Erro janela Mensagens.

Mostrar / ocultar janela do Editor de Macro.

Mostrar a janela da Lista de Janelas.

Mikroelektronika - Solues de software e hardware para o mundo embutido 19


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
BARRAS

Arquivo da Barra de Ferramentas

Arquivo Toolbar uma barra de ferramentas padro, com as


seguintes opes:
cone Descrio

Abre uma nova janela do editor.

Abra o arquivo de origem para edio ou arquivo de imagem para


visualizao.
Salve as alteraes para a janela ativa.

Salvar alteraes em todas as janelas abertas.

Feche o editor atual.

Feche todas as editores.

Visualizao de Impresso.

Edit Toolbar

Edit Toolbar uma barra de ferramentas padro, com as


seguintes
cone opes: Descrio

Desfazer ltima alterao.

Refazer a ltima alterao.

Recortar o texto selecionado para o clipboard.

Copiar o texto selecionado para o clipboard.

Colar o texto da prancheta.

20 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Edio Avanada Barra

Advanced Edit Toolbar vem com as seguintes opes:

cone Descrio

Comentar o cdigo selecionado ou colocar comentrio de linha nica, se no


houver
Descomnenhuma seleo
e nte cdigo selecion ado ou remov er o comentri o de linha
nica, se houv er
nenhuma seleo.
Selecione o texto de partida para acabar com delimitador delimitador.

Ir para acabar com delimitador.

V para a linha.

Recuo selecionados linhas de cdigo.

Outdent selecionados linhas de cdigo.

Gerar o cdigo HTML apropri ado para public ar cdigo fonte de corrente
em
na web.

Localizar / Substituir Barra

Localizar / Substituir Toolbar uma barra de ferramentas padro, com


as seguintes opes:
cone Descrio

Localizar texto na atual editor.

Localizar a prxima ocorrncia.

Encontrar ocorrncia anterior.

Substitua texto.

Localizar texto em arquivos.

Mikroelektronika - Solues de software e hardware para o mundo embutido 21


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Projeto Barra

Projeto Barra vem com as seguintes opes:

cone Descrio

Novo projeto

Projeto Open

Save Project

Fechar projeto atual.

Editar configuraes do projeto.

Adicionar projecto existente ao projeto do grupo.

Remover projeto existente do grupo do projeto.

Add File To Project

Remover o arquivo de projeto

Construir Toolbar

Construir Toolbar vem com as seguintes opes:

cone Descrio

Criar o projeto atual.

Construir todos os projetos abertos.

Construir e projeto de programa ativo.

Iniciar programador e carga arquivo HEX atual.

Abrir cdigo assembly no editor.

Abra lisitng arquivo no editor.

Ver estatsticas para o projeto atual.

22 Mikroelektronika - Software e Solues de hardware para Embedded World


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Depurador

Depurador Toolbar vem com as seguintes opes:

cone Descrio

Iniciar Software Simulator ou mikroICD (In-Circuit Debugger).

Executar / Pausar depurador.

Parar depurador.

Step Into.

Passe por cima.

Saia.

Executar at o cursor.

Alternar ponto de interrupo.

breakpoints Toggle.

Limpar os pontos de interrupo.

Exibir janela de observao

Exibir janela cronmetro

Estilos de Barra

Estilos da barra de ferramentas permite que voc facilmente


personalizar o seu espao de trabalho.

Mikroelektronika - Softwares e solues de hardware para Embedded World 23


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Barra de Ferramentas

Barra de Ferramentas vem com seguintes opes padro:

cone Descrio

Executar Terminal USART

EEPROM

ASCII Grfico

Sete ferramenta decodificador segmento.

menu Opes

A barra de ferramentas podem ser facilmente personalizados, adicionando novas ferramentas


em Opes (F12)
janela.

Tpicos relacionados: Os atalhos de teclado, integrada Ferramentas, depurador do Windows

24 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

PROJETO MENU OPES

Mikroelektronika - Solues de software e hardware para o mundo embutido 25


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Projeto Descrio

Criar o projeto ativo.

Construir todos os projetos.

Construir e programa de projeto ativo.

Exibir Assemblia.

Editar caminhos de pesquisa.

Pasta do Projeto Limpeza

Adicionar arquivo ao projeto.

Remover arquivo de projeto.

Projetos de importao de verses anteriores do


mikroC.
Abra o Assistente de Novo projeto

Abrir projeto j existente.

Salvar atual projeto.

Editar as configuraes do projeto

Abra grupo de projeto.

Fechar grupo de projeto.

Salve o arquivo de projeto ativo com o nome


diferente.
Aberto recentemente utilizadas projeto.

Fechar projeto ativo.

Tpicos relacionados: Os atalhos de teclado, o Projeto Barra, criando novos Projeto, Projeto
Manager, as configuraes do projeto

26 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

MENU OPES RUN

Executar Descrio
Iniciar Software Simulator ou mikroICD (In-
Circuit Debugger).
Parar depurador.

Pausa Debugger.

Step Into.

Step Over.

Step Out.

Ir para interrupo em projeto atual.

Alternar ponto de interrupo.

Breakpoints.

Breakpoints Clear.

Mostrar / Esconder Janela de Inspeo

Show / Hide Window Cronmetro


Alternar entre Pascal fonte e desmon-
assemblia.
Tpicos relacionados: Os atalhos de teclado, barra de ferramentas
Debug

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido 27


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Menu Ferramentas Opes

Ferramentas Descrio

Executar mikroElektronika Programador

Executar Terminal USART

Execute o Editor do EEPROM

Executar tabela ASCII

Executar Converter display de 7

Gerar o cdigo HTML apropriado para


publicao
cdigo fonte
Executar Lcdna web. personalizado.
carter

Execute o editor bitmap GLCD.


Executar HID Terminal.

Executar terminal de comunicao UDP.

Executar mikroBootloader.

Abra a janela Opes.

Tpicos relacionados: Os atalhos de teclado, Barra de


Ferramentas

28 Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

HELP OPES

Ajuda Descrio

Abrir arquivo de ajuda.

Open Document migrao de cdigo.

Verifique se a verso do compil ad or novo


est disponv el . Open Forum de Suporte
mikroElektronika
em
um
Abranavegador padro. Pgina da Web em
mikroElektronika
um
navegador
Informaespadro.
sobre como se inscrever

Abra a janela Sobre.

Tpicos relacionados: Os atalhos de teclado

Mikroelektronika - Solues de software e hardware para o mundo embutido 29


CAPTULO 2
Meio Ambiente mikroC PRO para PIC

ATALHOS DE TECLADO
Abaixo est uma lista completa de atalhos de teclado disponveis no mikroC PRO para PIC IDE.

IDE Atalhos Ctrl + Shift + S Salvar tudo


F1 Ajuda Ctrl + V Colar
Ctrl + N Nova Unidade Ctrl + X Corte
Ctrl + O Abrir Ctrl + Y Excluir linha inteira
Ctrl + Shift + Projeto Open Ctrl + Z Desfazer
O
Ctrl + Shift + Novo projeto Ctrl + Shift + Z Refazer
N
Ctrl + K Encerrar o projeto Editor Atalhos avanada
Ctrl + F4 Fechar Unidade Ctrl + Espao Cdigo Assistente
Ctr + Shift + Edit Project Ctrl + Shift + Parmetros de Assistente
E
Ctrl + F9 Construir Space
Ctrl + D Encontrar declarao
Shift + F9 Build All Ctrl + E Pesquisa incremental
Ctrl + F11 Construir e programar Ctrl + L Lista de rotina
Shift + F4 Ver Breakpoints Ctrl + G linha Goto
Ctrl + Shift + Limpar os pontos de Ctrl + J Inserir Cdigo Modelo
F5
F11 interrupo
Start me Programador Ctrl + Shift +. Comentar Cdigo
Ctrl + Shift + Gerente de Projetos Ctrl + Shift +, Descomente Cdigo
F1
F12 Opes Ctrl + nmero marcador Goto
Alt + X Fechar mikroC PRO para PIC Ctrl + Shift + marcador definido
Editor Atalhos Basic nmer
Ctrl + oShift + I Recuo seleo
F3 Localizar, Localizar prxima Ctrl + Shift + U Unindent seleco
Shift + F3 Procurar o Anterior TAB Recuo seleo
Alt + F3 Pesquisa Grep, em arquivos Shift + TAB seleo Unindent
Ctrl + A Selecionar Tudo Alt + Seleo Selecionar colunas
Ctrl + C Cpia Ctrl + Alt + Selecionar colunas
Ctrl + F Pesquisar Seleo Converter a seleo para
Ctrl + Alt + L
minsculas
Ctrl + R Substituir
Converter a seleo para
Ctrl + P Imprimir Ctrl + Alt + U
maisculas
Ctrl + S Salvar unidade Ctrl + Alt + T Converter em titlecase

30 Mikroelektronika - Softwares e solues de hardware para Embedded World


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

mikroICD Debugger e Software


Simulador de Atalhos

F2 Ir para interrupo
F4 Executar at o cursor
F5 Alternar ponto de interrupo
F6 Execute o depurador Pausa /
F7 Etapa em
F8 Passe por cima
F9 Depurar
Ctrl + F2 Parar Debugger
Ctrl + F5 Add to watch list
Ctrl + F8 Saia
Alt + D DESMONTAGEM Vista
Shift + F5 Abrir a janela Watch
Ctrl + Shift + Show Advanc ed Break poi nts
A

Mikroelektronika - Solues de software e hardware para o mundo embutido 31


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
IDE GERAL

A mik roC PRO para PIC um ambiente amigvel e intuitivo:

O editor de cdigo regulveis Sintaxe Destacar, cdigo dobrando, Cdigo


Adjunto, Assistente parmetros, Auto Corrigir erros de digitao comuns e Tem Cdigo
placas (Auto Complete).
O Code Explorer est sua disposio para facilitar o gerenciamento do projeto.
O Gerente de Projeto alows gerenciamento de projetos mltiplos
configuraes do projeto geral podem ser feitas na janela de configuraes do projeto
gerente de Biblioteca permite bibliotecas manuseio simples de ser usado em um projeto
A janela de erro mostra todos os erros detectados durante a compilao e vinculao.
A fonte de nvel de software simulador permite depurar passo lgico executvel-a-
etapa, observando o fluxo do programa.
O assistente para Novo projeto uma maneira rpida, confivel e fcil maneira de criar um
projeto.
Arquivos de ajuda so de sintaxe e sensvel ao contexto.
Como em qualquer aplicao de Windows modernos, voc pode personalizar o layout do
mik roC PRO para PIC para atender s suas necessidades.
sublinha Spell Checker identificadores que so desconhecidos para o projeto. Desta forma,
ele ajuda o programador a detectar potenciais problemas cedo, muito antes do pro-
A ECT compilado. Corretor ortogrfico pode ser desativado, escolhendo a opo na
Dilogo Preferncias (F12).

32 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

PERSONALIZAO LAYOUT IDE

Docking Windows

Voc pode aumentar a visualizao e edio espao para o cdigo, dependendo de como voc
organizar as janelas no IDE.

Passo 1: Clique na janela que voc deseja encaixar, dar-lhe o foco.

Passo 2: Arraste a janela de ferramentas do seu local atual. Um losango guia exibida.
As quatro setas do ponto de diamante para os quatro cantos do IDE.

Mikroelektronika - Solues de software e hardware para o mundo embutido 33


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Passo 3: Mova o ponteiro sobre a parte correspondente do losango guia. Um
contorno da janela aparece na a rea designada.

Passo 4: Para encaixar a janela na posio indicada, solte o boto do mouse.

Dica: Para mover uma janela acoplvel sem rotura no lugar, pressione CTRL enquanto
arrastando-o.

Salvar Layout

Depois de ter um layout de janela que voc gosta, voc pode salvar o layout, digitando o
nome para o layout e pressionando o cone Save Layout .
Para definir o layout, selecione o layout desejado na lista suspensa Layout e clique em
Definir o cone Layout .
Para remover o layout a partir da lista drop-down, selecione o layout desejado na lista
e clique no boto Excluir Icon Layout .

34 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Auto Ocultar

Auto Esconder "permite ver mais do seu cdigo de uma vez por minimizando ferramenta
ganha-
dows ao longo das bordas do IDE quando no estiver em uso.

Clique na janela que deseja manter visvel a dar-lhe o foco.


Clique no cone de alfinete na barra de ttulo da janela.
.

Quando uma janela auto-ocultos perde o foco, ele automaticamente slides de volta ao seu guia
na
a borda da IDE. Enquanto uma janela auto-oculto, seu nome eo cone so visveis
em uma guia na borda do IDE. Para exibir um auto-ocultos janela, mova o ponto-
er sobre a guia. A janela desliza para trs para ver e est pronto para uso.

Mikroelektronika - Solues de software e hardware para o mundo embutido 35


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Editor avanado de cdigo
O editor de cdigo um editor de texto avanado moda para satisfazer as necessidades dos
profissionais.
Geral edio do cdigo o mesmo que trabalhar com qualquer editor de texto padro, incluindo
familiar Copiar, Colar e Desfazer aes, comum para o ambiente Windows.

Editor de recursos avanados


Ajustvel Realce de Sintaxe
Cdigo Assistente
Cdigo Folding
Parmetro Assistente
Modelos de Cdigo (Auto Complete)
Correo automtica de erros de digitao comuns
Verificador Ortogrfico
Marcadores e Goto Line
Comente / Descomente

Voc pode configurar o destaque da sintaxe, modelos de cdigo e Auto Correto


Editor de dilogo Configuraes. Para acessar as configuraes, clique em Ferramentas >
Opes da
menu drop-down, clique no boto Mostrar cone Opes ou a tecla F12 imprensa.

36 Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Cdigo Assistente

Se voc digitar as primeiras letras de uma palavra e pressione Ctrl + Espao, todas vlidas
iden-
tifiers coincidindo com as letras que voc digitou ser solicitado em um painel flutuante (veja
a imagem abaixo). Agora voc pode continuar digitando para estreitar a escolha, ou voc pode
selecionar
um da lista usando as setas do teclado e Enter.

Cdigo Folding

dobramento de cdigo IDE recurso que permite aos usurios ocultar ou exibir sec -
es de um arquivo de origem. Desta forma mais fcil de gerenciar grandes regies de
cdigo dentro
uma janela, enquanto a visualizao apenas as subseces do cdigo que so relevantes
durante uma sesso de edio especial.

Ao digitar, o smbolo de dobragem de cdigo (- e +) aparecer automaticamente. Use a dobra-


o de smbolos para ocultar / mostrar as subsees cdigo.

Se voc colocar o cursor do mouse sobre a dica da caixa, o texto recolhido ser mostrado na
uma caixa de dica de estilo.

Mikroelektronika - Solues de software e hardware para o mundo embutido 37


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente

Parmetro Assistente

O Assistente de parmetro ser invocado automaticamente quando voc abre parnteses


"(" ou pressione Shift + Ctrl + Espao. Se o nome de uma funo vlida precede o paren-
tese, em seguida, os parmetros esperados sero exibidos em um painel flutuante. Como voc
digite o parmetro real, o prximo parmetro esperado ficar em negrito.

Modelos de Cdigo (Auto Complete)

Voc pode inserir o modelo de cdigo, digitando o nome do modelo (por exemplo,
whiles), em seguida, pressione Ctrl + J eo editor de cdigo ir gerar automaticamente um
cdigo.

Voc pode adicionar seu modelos prprios para a lista. Selecione Ferramentas > Opes no
menu drop-down
menu, ou clique no boto Mostrar cone Opes e selecione a guia Auto Completar. Aqui
voc pode digitar o apropriado palavra-chave, descrio e cdigo do seu template.

macros Autocomplete pode sistema e recuperar informaes sobre o projeto:

- % DATE% - Data atual do sistema


- %% TIME - Hora atual do sistema
- %% DISPOSITIVO - Nome do dispositivo (MCU), conforme especificado nas configuraes do
- projeto
- %% DEVICE_CLOCK - Relgio, conforme especificado no projeto definies
%% COMPILER - Compilador verso atual

38 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Essas macros podem ser usados no cdigo do modelo, ver modelo ptemplate fornecido com
mik roC PRO para PIC instalao.

Correo automtica

O recurso Auto Correct corrige erros comuns de digitao. Para acessar a lista de rec -
erros reconhecida, selecione Ferramentas > Opes a partir de No menu drop-down, ou clique
no boto Mostrar
cone Opes e selecione a guia Autocorreo. Voc tambm pode adicionar os seus
prprios
preferncias para a lista.

Alm disso, o editor de cdigo tem um recurso para comentar ou descomente o cdigo
selecionado pelo sim-
plo de um clique do mouse, utilizando o cone e Icon Descomente a partir de
comentar
Barra de ferramentas de cdigo.

Verificador Ortogrfico

O verificador ortogrfico sublinha desconhecido objetos no cdigo, para que eles possam ser
facilmente
notado e corrigido antes de compilar o seu projeto.

Selecione Ferramentas > Opes a partir do menu drop-down, ou clique no cone Mostrar
opes
e, em seguida, selecione a aba Verificador Ortogrfico.

Bookmarks

Bookmarks tornar a navegao atravs de um cdigo grande mais fcil. Para definir um
marcador, utilize
Ctrl + Shift + nmero. Para saltar para um marcador, utilize Ctrl + nmero.

Goto Line

A opo Goto Line torna a navegao atravs de um cdigo grande mais fcil. Use a curto
corte Ctrl + G para ativar essa opo.

Comentrio / Descomente

Alm disso, o editor de cdigo tem um recurso para comentar ou descomentar selecionado
cdigo simples clique de um mouse, utilizando o cone comentar e inco-
mento Icon do Cdigo de Barra.

Mikroelektronika - Solues de software e hardware para o mundo embutido 39


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Explorador de cdigo

O Code Explorer d viso clara de cada item declaradas dentro do cdigo fonte.
Voc pode saltar a uma declarao de qualquer item pelo boto direito dele. Alm disso, alm
da lista de
objetos definidos e declarados, cdigo de explorer exibe mensagem de erro sobre a primeira e
sua localizao no cdigo.

As seguintes opes esto disponveis no Gerenciador de Cdigo:


cone Descrio

Expandir / Recolher todos os ns da rvore.

Localize declarao no cdigo.

40 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

LISTA DE ROTINA

lista de rotina diplays lista de rotinas, e permite que as rotinas de filtragem por nome. Rotina
janela da lista pode ser acessada pressionando Ctrl + L.

Voc pode saltar para uma rotina desejado, clicando duas vezes nele.

Mikroelektronika - Solues de software e hardware para o mundo embutido 41


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
GERENTE DE PROJETOS

Project Manager for IDE recurso que permite aos usurios gerenciar mltiplos projetos.
Vrios projetos que juntos formam grupo de projeto pode ser aberto ao mesmo tempo.
Apenas um deles pode estar ativo no momento.
Definio do projeto em ativos modalidade realizada por duplo clique sobre o projeto
desejado
no Project Manager.

Na sequncia opes esto disponveis no Project Manager:

42 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

cone Descrio

Salvar projeto do Grupo.

Abra grupo de projeto.

Feche o projeto ativo.

Fechar grupo de projeto.

Adicione projeto para o grupo de projeto.

Retire do projeto grupo de projeto.

Adicionar arquivo ao projeto ativo.

Remover arquivos selecionados a partir do projeto.

Construir o projeto ativo.

programador executar mikroElektronika do Flash.

Para obter detalhes sobre como adicionar e remover arquivos projeto consulte Adicionar /
Remover arquivos de
Projeto.

Tpicos relacionados: Configuraes do projeto, o Project Menu de Opes, Opes do menu


File, Project
Toolbar, barra de ferramentas Build, Adicionar / Remover arquivos do Project

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido 43


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
PROJETO DE JANELA DE CONFIGURAO

As seguintes opes esto disponveis nas configuraes do projeto Janela:

Dispositivo - selecionar o dispositivo apropriado na lista de dispositivos drop-down.


Oscilador - digite o valor da freqncia do oscilador.
Construir / Debugger Tipo - escolha depurador tipo.

Tpicos relacionados: Edit Project, Personalizando Projetos

44 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Gerenciador de bibliotecas

Library Manager permite que as bibliotecas manuseio simples sendo usado em um projeto.
Biblioteca
janela do Gerenciador de listas de todas as bibliotecas (extencion. MCL), que so
instantaneamente armazenados no
Usa pasta do compilador. A biblioteca desejvel adicionado ao projeto, selecionando seleo
caixa ao lado do nome da biblioteca.
Para ter todas as funes de biblioteca acessvel, basta pressionar o boto Confira todas as
e todas as bibliotecas sero selecionadas. No caso de nenhuma biblioteca necessria
em um projeto,
pressione o boto Limpar e todas as bibliotecas sero apurados a partir do projeto.
tudo
Somente as bibliotecas selecionadas sero ligadas.

Mi
kr
oel
ekt
ro
nik
a-
Sol
u
e
s
de
sof
tw
are
e
har
dw
are
par
ao
mu
nd
o
em
but
ido
45
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
cone Descrio

Atualizar Biblioteca de verificao de arquivos em "Usos" pasta. til


quando novos
bibliotecas so adicionadas,
Reconstruir todas as bibliotecas copiando
disponveis.ostil
arquivos
quando para
fontes"usa" a pasta.
da biblioteca
esto disponveis e
necessidade de refrescamento.
Inclui todas as bibliotecas disponveis no projeto atual.

Nenhuma biblioteca da lista sero includos no projeto atual.

Restaurao da biblioteca para o estado apenas antes de salvar ltimo


projeto.
tpicos relacionados: mik roC PRO para PIC Bibliotecas, Criao de um novo Biblioteca

46 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

ERRO JANELA

No caso em que foram encontrados erros durante a compilao, o compilador vai relat-los
e no ir gerar um arquivo hex. A janela de erro ser solicitado na parte inferior da
Na janela principal por padro.

A janela de erro est localizado no separador Mensagem, e mostra a localizao eo tipo de


erros, o compilador encontrou. O compilador tambm relata advertncias, mas estas
no afetam a sada, os erros s pode interefere com a gerao de hex.

D um duplo clique na linha da mensagem na janela de erro para destacar a linha onde o
erro foi encontrado.

Temas relacionados: Mensagens de erro

Mikroelektronika - Solues de software e hardware para o mundo embutido 47


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
ESTATSTICAS

Aps a compilao com sucesso, voc poder analisar estatsticas de seu cdigo. Clique no
Estatsti-
tiques Icon .

Uso o Windows Memory

Fornece uma viso geral de RAM e ROM uso nas diversas formas.

Uso de memria RAM

Exibe uso da memria RAM de uma forma torta-like.

48 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

RAM locais utilizados


Exibe usados locais de memria RAM e seus nomes.

SFR Locais
Exibe uma lista de utilizados SFR locais.

Mikroelektronika - Solues de software e hardware para o mundo embutido 49


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Uso de memria ROM
ROM Exibe o uso do espao de memria em forma de pizza-like.

Memria ROM Constantes


Exibe constantes memria ROM e seus endereos.

50 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Funo ordenados por nome


Classifica e exibe funes por seus endereos, nomes simblicos, e nico
nomes assembler.

Funes ordenados por tamanho


Classifica e exibe funes, pela sua dimenso, na ordem ascendente.

Mikroelektronika - Software e Solues de hardware para Embedded World 51


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Funes Ordenado por Endereos
Classifica e mostra por suas funes endereos, em ordem crescente.

Funes Ordenado por Nome do Quadro


Classifica e exibe funes por seus nomes em um formato grfico semelhante.

52 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Funes Ordenado por Grfico Tamanho


Classifica e exibe funes por seus tamanhos em um formato grfico
semelhante.

Funes ordenadas por endereo Grfico


Classifica e exibe funes por seus endereos em um formato grfico
semelhante.

Mikroelektronika - Solues de software e hardware para o mundo embutido 53


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Funo rvore
Exibe Funo rvore com os dados relevantes para cada funo.

Memria Resumo
Apresenta resumo de memri a RAM e memri a ROM de forma
torta-lik e.

54 Mikroelektronika - Softwares e solues de hardware para Embedded World


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Editor de Macros

A macro uma srie de teclas que foram "gravadas" na ordem executada.


Uma macro permite "gravar" uma srie de teclas e depois em 'playback', ou repetir,
as teclas gravadas.

A Macro oferece os seguintes comandos:

cone Descrio

teclas "gravao" comea para posterior reproduo.

Pra keystrokesthat captura comeou quando o Start com Recordig-


mando foi selecionado.
Permite uma macro que foi gravada para ser repetidos.

Novo macro.

Excluir macro.

Tpicos Relacionados: Avanado editor de cdigo, modelos de cdigo

Mikroelektronika - Solues de software e hardware para o mundo embutido 55


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Ferramentas integradas

USART Terminal

A mik roC PRO para PIC inclui o terminal de comunicao USART para RS232
de comunicao. Voc pode iniciar a partir do menu drop-down Ferramentas > Termi-USART
nal ou clicando no cone Terminal USART da barra de ferramentas.

56 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

EEPROM Editor

O Editor usado EEPROM para manipulao de memria EEPROM MCU. Voc pode
lan-lo a partir do menu drop-down Ferramentas > EEPROM Editor. Quando Utilize este
definio EEPROM est marcada compilador gerar Intel hex
project_name.ihex que contm dados a partir do editor EEPROM.

Quando voc executa programador de software mikroElektronika mik roC PRO para PIC IDE
- project_name.hex arquivo ser carregado automaticamente durante a IHEX arquivo deve ser carregado
manualmente.

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido 57


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
ASCII Grfico

A tabela ASCII uma ferramenta til, particularmente til quando se trabalha com display LCD.
Voc pode inici-lo a partir do menu drop-down Ferramentas > tabela ASCII ou clicando no
Ver Icon tabela ASCII da barra de ferramentas.

58 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Sete Converter Segmento

Os sete segmentos Converter um painel visual conveniente que retorna


/ valor decimal hexadecimal para qualquer combinao vivel que voc gostaria de exibir em
7seg.
Clique sobre as peas, de 7 de imagem do segmento para obter o valor solicitado na caixas de
edio.
Voc pode iniciar a partir do menu drop-down Ferramentas > 7 Segmento Converter ou por
clicando no cone Sete Segmento Converter da barra de ferramentas.

LCD caractere personalizado

mikroC PRO para PIC inclui o Custom Lcd caracteres. A sada mikroC PRO para
PIC cdigo compatvel. Voc pode iniciar a partir do menu drop-down Ferramentas > Cus LCD
Tom de caracteres.

Mikroelektronika - Solues de software e hardware para o mundo embutido 59


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
LCD Grfico Editor de Bitmap

A mik roC PRO para PIC inclui o grfico LCD Bitmap Editor. A sada o
mikroC PRO para PIC cdigo compatvel. Voc pode iniciar a partir do menu drop-down
Ferramentas > GLCD Editor de Bitmap.

60 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

HID Terminal

A mik roC PRO para PIC inclui o terminal de comunicao para HID USB comu-
cao. Voc pode iniciar a partir do menu drop-down Ferramentas > HID Terminal.

Mikroelektronika - Solues de software e hardware para o mundo embutido 61


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
UDP Terminal

A mik roC PRO para PIC inclui o Terminal UDP. Voc pode inici-lo na
menu drop-down Ferramentas > UDP Terminal.

62 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

mikroBootloader

(De AN732 Microchip documento) A famlia de PIC16F87X microcontroladores tem


a habilidade de escrever sua memria prprio programa. Este recurso permite um arranque
de pequenas
programa gerenciador de receber e gravar um novo firmware na memria. Na sua mais simples
formulrio, o gestor de arranque comea o cdigo de usurio em execuo, salvo se considerar
que o novo firmware
deve ser baixado. Se houver um novo firmware a ser baixado, ele recebe os dados
e grava-lo em memria do programa. H muitas variaes e FEA-suplementar
estruturas que podem ser adicionadas para melhorar a confiabilidade e simplificar a utilizao
do gerenciador de inicializao.

Nota: mikroBootloader s pode ser usado com microcontroladores PIC que piscam apoio
escrever.

Como usar mikroBootloader?

1. Coloque o PIC com o arquivo hexadecimal apropriado usando a programao convencional


tcnicas (por exemplo, para usar PIC16F877A p16f877a.hex).
2. mikroBootloader Iniciar a partir do menu drop-down Ferramentas > Bootoader.
3. Clique em Configurao da Porta e selecione a porta COM que ser utilizada. Certifique-se
que
BAUD definida para 9600 Kpbs.
4. Clique em Abrir Arquivo e selecione o arquivo HEX que voc gostaria de carregar.
5. Desde o bootcode no PIC s d o computador 4-5 segundos para se conectar, voc
deve redefinir o PIC e em seguida clique no Connect boto dentro de 4-5 segundos.
6. A ltima linha na janela de histrico, em seguida, deve agora ler "Connected".
7. Para iniciar o upload, basta clicar sobre o Iniciar Bootloader boto.
8. Seu programa ser gravado no flash PIC. Bootloader ir reportar um erro que
pode ocorrer.
9. Redefinir o PIC e comear a executar.

Mi
kr
oel
ekt
ro
nik
a-
So
ftw
are
e
Sol
u
e
s
de
har
dw
are
par
a
Embedded World

63
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Caractersticas

O cdigo de inicializao do computador d 5 segundos para ficar ligado a ele. Se no, ele
comea
a execuo do existentes de cdigo de usurio. Se houver um novo cdigo para ser baixado, o
cdigo de inicializao recebe e grava os dados em memria do programa.

As caractersticas mais comuns do gerenciador de inicializao pode ter esto listados abaixo:

Cdigo no local Reset.


Cdigo em qualquer lugar em uma pequena rea de memria.
Verifica se o usurio quer novo cdigo a ser carregado.
Inicia a execuo do cdigo do usurio se nenhum novo cdigo est a ser carregada.
Recebe o cdigo de novo usurio atravs de um canal de comunicao se o cdigo est a
ser carregado.
Programas do novo cdigo em memria.

Integrando Cdigo de Utilizador e Cdigo de inicializao

O cdigo de inicializao quase sempre usa o local Reset e alguns programas adicionais
memria. um simples pedao de cdigo que no precisa usar interrupes e, portanto,
o cdigo de utilizador pode usar o normal interrupo vetor em 0x0004. O cdigo de
inicializao deve
evitar o uso do vetor de interrupo, por isso deve ter um ramo do programa no endereo
intervalo 0x0000 a 0x0003. O cdigo de inicializao deve ser programado na memria usando
tcnicas de programao convencionais, e os bits de configurao deve ser pro-
programado no momento. O cdigo de inicializao possvel acessar os bits de configurao,
desde que no so mapeados no espao de memria do programa.

64 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

OPES

menu Opes composta por trs guias: Code Editor, Ferramentas e as configuraes de
sada.

editor de cdigo

O editor de cdigo um editor de texto avanado moda para satisfazer as necessidades dos
profissionais.

Ferramentas

A mik roC PRO para PIC inclui a guia Ferramentas, que permite o uso de atalhos
para programas externos, como a calculadora ou Bloco de Notas.

Voc pode configurar at 10 atalhos diferentes, Tool0 edio - Tool9.

Mikroelektronika - Solues de software e hardware para o mundo embutido 65


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
As configuraes de sada

Ao modificar configuraes de sada, o usurio pode configurar o contedo dos arquivos de


sada.
Voc pode habilitar ou gerao, por exemplo, desabilitar a ASM e arquivo da lista.
Alm disso, o usurio pode escolher o nvel de otimizao, e configuraes especficas do
compilador, que
incluem a sensibilidade caso, vnculo dinmico para literais de seqncia de configurao
(descrita em mik roC
PRO para PIC especficos).
Construir todos os arquivos de biblioteca que permite ao utilizador usar a biblioteca compilado
(*. mcl) em qualquer PIC
MCU (quando esta opo estiver marcada), ou para um selecionado PIC MCU (quando esta
opo for deixada
desmarcado).
Para obter mais informaes sobre a criao de novas bibliotecas, consulte Criando Nova
Biblioteca.

66
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Expresses Regulares

Introduo

As expresses regulares so um mtodo amplamente utilizado de especificar padres de texto


para
pesquisar. metacaracteres especiais permitem que voc especificar, por exemplo, que a parti -
string lar que voc est procurando, ocorre no incio ou final de uma linha, ou que contm n
recorrncia de um determinado personagem.

Simples partidas

Qualquer caractere nico partidas em si, a menos que seja um metacaractere com uma
especial
significado descrito abaixo. Uma srie de caracteres que corresponde uma srie de caracteres
na seqnci a alvo, ento o padro "Curta" correspond eri a "Curta" no alvo string.
Voc pode fazer personagens que normalmente funcionam como metacaracteres ou fuga
seqncias devem ser interpretadas, precedendo-as com uma barra invertida "\".
Por exemplo, metacaractere "^" incio da seqncia de partidas, mas "\" ^ jogos
carter "^", e "\ \" jogos "\", etc

Exemplos:

no assinado seqncia de partidas 'unsigned'


\ ^ Unsigned '^ Unsigned' string jogos

Seqncias de escape

Caracteres podem ser especificados usando uma seqncias de escape: "\ N" corresponde a
uma nova linha,
"\ T" uma guia, etc Em termos mais gerais, \ Xnn, onde nn uma seqncia de dgitos
hexadecimais,
coincide com o caractere cujo valor ASCII nn.
S e v oc pr eci s a de um c di go de c ar ac ter es de l ar gur a ( Uni c ode), v oc pode us ar '\ X {} nnnn',
onde 'Nnnn'
- Um ou mais dgitos hexadecimais.

\ Xnn - Char com o cdigo hexadecimal nn


\ X {nnnn) - char com o cdigo hexadecim al nnnn (Um byte para texto simples e dois bytes para
Unicode)
\ T - Guia (HT / TAB), mesmo que \ X09
\ N - Nova linha (NL), mesmo que \ X0a
\ R - Car.return (CR), mesmo que \ X0d
\ F - Form feed (FF), mesmo que \ X0c
\ A - Alarme (campainha) (BEL), mesmo que \ X07
\ E - Escape (ESC), mesmo que \ X1b

Mi
kr
oelektronika - Solues de software e hardware para o mundo embutido

67
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Exemplos:

unsigned \ x20int jogos 'Unsigned int' (Note o espao no meio)


\ Tunsigned jogos 'Unsigned' (Predecessed por guia)

Classes de caracteres

Voc pode especificar uma classe de caracteres, colocando uma lista de caracteres em [], Que
ser
corresponde a nenhum dos personagens da lista. Se a primeira caractere aps o "[" "^", o
classe corresponde a qualquer caractere que no est na lista.

Exemplos:

Contagem [aeiou] r encontra strings "Countar ',' contador ', etc, mas no
"Countbr ',' countcr, etc
Contagem [^ aeiou] r encontra strings "Countbr ',' countcr, etc, mas no
"Countar ',' contador ', etc

Dentro de uma lista, o "-" caractere usado para especificar um intervalo, para que a-z
representa todos os
caracteres entre "A" e "Z", inclusive.

Se voc quiser "-" se a ser um membro de uma classe, coloc-lo no incio ou no final da lista,
ou
precedem com uma barra invertida.
Se voc quiser ']', voc pode coloc-lo no incio da lista ou preced-lo com uma barra invertida.

Exemplos:

[Az] jogos 'A', 'z' e '-'


[Az] jogos 'A', 'z' e '-'
[A \-z] jogos 'A', 'z' e '-'
[A-z] corresponde a todos os 26 pequenos caracteres 'A' para 'Z'
[\ N \ x0d] corresponde a qualquer das # 10, # 11, # 12, # 13.
[\ D-t] corresponde a qualquer dgito, '-' ou 'T'.
[]-A] corresponde a qualquer caractere de ']'..' Um '.

Metacaracteres

Os metacaracteres so caracteres especiais que so a essncia da expresso regular-


ses. Existem diferentes tipos de metacaracteres, descrito abaixo.

68 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Metacaracteres - separadores Line

^ - Incio da linha
$ - Fim da linha
\ A - Incio do texto
\ Z - Final do texto
. - qualquer caractere na linha

Exemplos:

^ PORTA - seqncia de partidas PORTA s se for na incio da linha


PORTA $ - seqncia de partidas PORTA s se for no final de linha
PORTA ^ $ - seqncia de partidas PORTA s se for a cadeia apenas em linha
PORT.r - seqnci as de jogos como 'Porta', 'PORTB', 'PORT1' e assim por diante

A "^" metacaractere por defeito s garantido para coincidir com incio da entrada
string / texto, e os "$" metacaractere apenas no final. Embedded separadores de linha
no vai ser acompanhado por ^ " ou "$".
Voc pode, entretanto, o desejo de tratar uma string como um buffer de multi -linha, de modo
que a "^" vai
jogo aps qualquer separador de linha dentro da cadeia, e "$" corresponder antes de qualquer
linha
separador.
As expresses regulares trabalha com separadores de linha, tal como recomendado na
http://www.uni-
code.org/unicode/reports/tr18 /

Metacaracteres - classes pr-definidas

\ W - Uma caracteres alfanumricos (incluindo "_")


\ W - Um personagem nonalphanumeric
\ D - Um personagem numricos
\ D - Um carter no-numricos
\ S - Todo o espao (o mesmo que [\ T \ n \ r \ f])
\ S - Um espao no

Voc pode usar \ W, \ D e \ S dentro de classes de personagens personalizadas.

Exemplo:

routi \ de - Seqncias de jogos como "Routi1e ',' routi6e ' e assim por diante, mas no
"Routime ',' rotina ' e assim por diante.

Mikroelektronika - Solues de software e hardware para o mundo embutido 69


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Metacaracteres - Os limites de palavra

Um limite de palavra ("B \") um ponto entre dois personagens que tem um cdigo
alfanumrico
carter ("W \") de um lado, e um personagem nonalphanumeric ("W \") em os outros
lateral (em qualquer ordem), contando os personagens imaginrios fora o comeo eo fi m
da cadeia como um correspondente "W \".

\ B - Corresponder a um limite de palavra)


\ B - Correspondem a um no (limite de palavra)

Metacaracteres - Iterators

Qualquer item de uma expresso regular pode ser seguido por um outro tipo de metacharac -
tros - iteradores. Usando este metacaracteres, voc pode especificar o nmero de ocorrncias
de
personagem anterior, metacaractere ou subexpresso.

* - Zero ou mais ("gananciosos"), semelhante a {0,}


+ - Uma ou mais ("gananciosos"), semelhante a {1}
? - Zero ou um ("gananciosos"), semelhante a {0,1}
{N} - Exatamente n vezes ("avarento")
{N,} - s vezes, pelo menos n ("avarento")
{N, m} - Pelo menos n mas no mais do que m vezes ("avarento")
*? - Zero ou mais ("non-greedy"), semelhante a {0,}?
+? - Uma ou mais ("non-greedy"), semelhante a {1}?
? - Zero ou um ("non-greedy"), semelhante a {0,1}?
{N}? - Exatamente n vezes ("non-greedy")
{N,}? - s vezes, pelo menos n ("non-greedy")
{M, n}? - Pelo menos n mas no mais do que m vezes ("non-greedy")

Assim, os dgitos em chaves do forma, {M, n}, especificar o nmero mnimo de vezes
para combi n ar com o item n eo mxi mo m. A forma {N} equival e nte a {N, n} e
corresponde exatamente n tempos. A forma {N,} fsforos ou mais vezes. No h limite
ao tamanho da n ou m, mas grande nmero ser mastigar mais memria e retardar
execuo.

Assim, os dgitos em chaves do formulrio, {N, m}, especificar o nmero mnimo de


vezes
para combi n ar com o item n eo mxi mo m. A forma {N} equiv al e nte a {N, n} e
corresponde exatamente n tempos. A forma {N,} fsforos ou mais vezes. No h limite
ao tamanho da n ou m, mas um grande nmero vai mastigar mais memria e retardar
execuo.

Se uma chaveta ocorre em qualquer outro contexto, ela tratada como uma personagem
regular.
70
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Exemplos:

r Contagem .* - seqncias de partidas como 'Contra' countelkjdflkj9r, e


"Countr '
contagem. + r - seqncias de jogos como 'Contra' countelkjdflkj9r, mas no
"Countr '
contagem.? r - seqncias de jogos como "Countar ',' contador ' e "Countr ' mas no
"Countelkj9r '
r {2} counte - seqncia de partidas "Counteer '
counte {2} r - seqncias de jogos como "Counteer ',' counteeer ',' counteeer ' etc
r {2,3} counte - seqncias de jogos como "Counteer, ou "Counteeer ' mas no
"Counteeeer '

Uma pequena explanao sobre a "ganncia". "Greedy" leva o maior nmero possvel ", no
gananciosos " toma o mnimo possvel.
Por exemplo, '+ B' e '* B' aplicada corda "Abbbbc ' retorno "Bbbb", 'B +? retorna 'B',
'B *? retorna uma string vazia, 'B {2,3}? retorna 'BB', 'B {2,3}' retorna 'BBB'.

Metacaracteres - Alternativas

Voc pode especificar uma srie de alternativas para um padro de uso "|" separ-los,
de modo que bat | | pouco bot ir c orres ponder a qualquer dos "Bit", "Bat", ou "Bot" na seqncia
alvo
como seria "B (i | a | o) t)". A primeira alternativa inclui tudo, desde a ltima
pat
delimitador tern ("(", "[" Ou o incio do padro) at o primeiro "|", E
a ltima alternativa contm tudo, desde a ltima "|" para o prximo padro delim-
iter. Por este motivo, comum a prtica de incluir alternativas entre parnteses, a
minimizar a confuso sobre onde comeam e terminam.

Alternativas so julgados a partir da esquerda para a direita, para a primeira alternativa


encontrada para que o
expresso inteira partidas, aquele que escolhido. Isto significa que as alternativas
no so necessariamente gananciosos. Por exemplo: quando a correspondncia rou | goleada
contra "Rou-
tine ", apenas o "Rou" parte ir corresponder, como que a primeira alternativa julgado, e
com sucesso corresponde a seqncia alvo (isto pode no parecer importante, mas im -
importante quando voc est capturando texto correspondente usando parnteses). Tambm
lembro que
"|" interpr etado como um literal entre colchetes, por isso, se voc escrever [Bit | morcego |
bot]
voc realmente apenas a correspondncia [Biao |].

Exemplos:

rou (tine | te) cordas partidas - "Rotina" ou 'Route'.

Mi
kr
oelektronika - Solues de software e hardware para o mundo embutido

71
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Metacaracteres - Subexpresses

O bracketing construir ( ... ) tambm pode ser usado para definir regular subexpres-
ses. Subexpresses esto contados com base na esquerda para a direita do seu open-
o entre parnteses. subexpresso Primeiro tem o nmero '1 '.

Exemplos:

(Int) {8,10} seqncias de jogos que contenham 8, 9 ou 10 instncias do 'int'


routi ([0-9] | a +) e "Routi0e 'corresponde a' routi1e ',' rotina ',' routinne,
"Routinnne 'etc

Metacaracteres - Referncias Anteriores

Metacaracteres \ 1 atravs \ 9 so interpretadas como referncias anteriores. \


PREVI-partidas
previamente combinados subexpresso #.

Exemplos:

(.) \ 1 + 'Aaaa' partidas 'cc'.


(. +) \ 'Abab "1 + jogos e '123123'
(['"]?)( \ D +) \ 1 jogos "13" (Entre aspas) , ou '4 ' (Entre aspas simples)
ou 77 (Sem aspas) etc

72 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

mikroC PRO para PIC OPES DE LINHA DE COMANDO

Uso: mikroCPIC1618.exe [- <opts> [- <opts>]] [<ENTRADA> [- <opts>] [] -


<opts>]] INFILE pode ser de *. C, *. mcl e *. Pld tipo.

Os seguintes parmetros e pouco mais (ver manual) so vlidos:


- P: MCU para que a compilao ser feito.
- PARA: Definir oscilador [em MHz].
- SP: Adicionar o diretrio para a lista de caminho de pesquisa.
- SE: Adicionar o diretrio para o # include lista de pesquisa.
- N: Os arquivos de sada gerados a caminho do arquivo especificado por filename.
- B: Salvar arquivos binrios compilados (*. mcl) para 'diretrio'.
- O: opes de sada diversas.
- DBG: Gerar informaes de depurao.
- L: Verificar e reconstruir novas bibliotecas.
- D: Criar todos os arquivos como bibliotecas.
- Y: Dynamic link para strings literais.
- C: Ligue maisculas e minsculas.
- UCD: CID tipo de compilao.

Exemplo:
mikroCPIC1618.exe-MSF-DBG-p16F887-ES-C-O11111114-fo8 -
N "C: \ Lcd \ Lcd.mcppi" SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO
para PIC \ Defs \ "-SP" C: \ Program Files \ Mikroelektronika \ mikroC PRO para
PIC \ usa \ P16 \ "SP" C: \ Lcd \ "Lcd.c" __Lib_Math.mcl "
"__Lib_MathDouble.mcl" __Lib_System.mcl "__Lib_Delays.mcl"
"__Lib_LcdConsts.mcl" __Lib_Lcd.mcl "

Parmetros utilizados no exemplo:


- MSF: Short Message Format, usado para fins internos de IDE.
- DBG: Gerar informaes de depurao.
- p16F887: MCU 16F887 selecionado.
- C: Ligue maisculas e minsculas.
- O11111114: Vrias opes de sada.
- fo10: Defina a frequncia do oscilador [em MHz].
- N "C: \ Lcd \ Lcd.mcppi" SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO
para PIC \ defs \ ": os arquivos de sada gerados a caminho do arquivo
especificado por filename.
- -SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \
defs \ "adicionar o diretrio para a lista de caminho de pesquisa.
- SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ usa \":
Adicione o diretrio para a lista de caminho de pesquisa.
- -SP "C: \ Lcd \" adicionar o diretrio para a lista de caminho de pesquisa.
- "Lcd.c" __Lib_Math.mcl "__Lib_MathDouble.mcl"
"__Lib_System.mcl" __Lib_Delays.mcl "__Lib_LcdConsts.mcl"
"__Lib_Lcd.mcl": Especifique arquivos de entrada.

Mikroelektronika - Solues de software e hardware para o mundo embutido 73


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
PROJETOS

A mik roC PRO para PIC organiza as aplicaes em projetos, que consiste de um nico
arquivo de projeto (extenso . Mcppi) e um ou mais arquivos fonte (extenso).
mikroC
PRO para PIC IDE permite gerenciar mltiplos projetos (consulte Project Manager).
Os arquivos de origem podem ser compilados somente se forem parte de um projeto.

O arquivo de projeto contm as seguintes informaes:

- nome do projeto e uma descrio opcional,


- dispositivo de destino,
- bandeiras dispositivo (config palavra),
- relgio do dispositivo,
- lista dos arquivos do projeto de origem com os caminhos,
- arquivos de cabealho (*. h),
- arquivos binrios (*. mcl)
- arquivos de imagem,
- outros arquivos.

Note-se que o projeto no incluir arquivos da mesma forma como pr-processamento que,
consulte Adicionar / Remover arquivos do projeto.

Novo projeto

A maneira mais fcil de criar um projeto por meio do assistente para Novo projeto, gota-
menu para baixo Projeto > Novo projeto ou clicando no cone Novo projeto
a partir de Projeto barra de ferramentas.

74 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Assistente de Novas Etapas do Projeto

Comece a criar seu novo projeto, clicando no boto Next:

Primeiro Passo - Selecione o dispositivo da lista de dispositivos de


drop-down.

Mikroelektronika - Solues de software e hardware para o mundo embutido 75


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Passo dois - Digite o valor da freqncia do oscilador.

Passo trs - Especifique o local onde o projeto ser salvo.

76 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Passo Quatro - Acrescentar ao arquivo de projeto projeto se eles esto disponveis neste
momento. Voc pode
sempre adicionar arquivos de projeto mais tarde o uso do Project Manager.

Passo Cinco - Clique no boto Concluir para criar seu novo projeto.

Tpicos relacionados: Gerente de Projetos, Project Configuraes

Mikroelektronika - Solues de software e hardware para o mundo embutido 77


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
PROJETOS

A mik roC PRO para PIC organiza as aplicaes em projetos, consistindo de um nico
arquivo de projeto (extenso . Mcppi) e um ou mais arquivos fonte (extenso). mik roC
PRO para PIC IDE permite gerenciar mltiplos projetos (consulte Project Manager).
Os arquivos de origem podem ser compilados somente se forem parte de um projeto.

O arquivo de projeto contm as seguintes informaes:

- nome do projeto e uma descrio opcional,


- dispositivo de destino,
- bandeiras dispositivo (config palavra),
- relgio do dispositivo,
- lista dos arquivos do projeto de origem com os caminhos,
- arquivos de cabealho (*. h),
- arquivos binrios (*. mcl)
- arquivos de imagem,
- outros arquivos.

Note que o projeto no inclui arquivos da mesma forma como pr-processamento faz,
consulte Adicionar / Remover arquivos do projeto.

Novo projeto

A maneira mais fcil para criar um projeto por meio do assistente para Novo projeto, gota-
menu para baixo Projeto > Novo projeto ou clicando no cone de New Project
Projeto barra de ferramentas.

78 Mikroelektronika - Software e hardware SOLUES PARA mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Assistente de Novas Etapas do Projeto

Comece a criar seu novo projeto, clicando no boto Next:

Primeiro Passo - Selecione o dispositivo da lista de dispositivos


drop-down.

Mikroelektronika - Solues de software e hardware para o mundo embutido 79


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Passo dois - Digite o valor da freqncia do oscilador.

Passo trs - Especifique o local onde o projeto ser salvo.

80 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Passo Quatro - Acrescentar ao arquivo de projeto projeto se eles esto disponveis neste
momento. Voc pode
sempre adicionar arquivos de projeto mais tarde o uso do Project Manager.

Passo Cinco - Clique no boto Concluir para criar seu novo projeto:

Mikroelektronika - Solues de software e hardware para o mundo embutido 81


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
PERSONALIZAO PROJETOS

Edit Project

Voc pode alterar as configuraes bsicas do projeto na janela de configuraes do projeto.


Voc pode
chip de mudar, e freqncia de oscilao. Qualquer mudana na configurao do projeto
Janela
afeta atualmente projeto ativo, ento no caso de mais de um projeto estiver aberto, voc
tm de assegurar que exatamente o projeto desejado definido como um activo no projecto
Manager. Alm disso, voc pode alterar os bits de configurao do chip selecionado no Edit
Projeto janela.

Gerenciando Grupo de Projecto

mik roC PRO para PIC IDE covenient fornece a opo que permite vrios projetos
ser abertas simultaneamente. Se voc tem vrios projetos sendo conectado em alguns
Assim, voc pode criar um grupo de projetos.
O grupo do projecto pode ser salva, clicando no cone Save Project Group da
a janela do Project Manager. O grupo do projecto pode ser reabriu clicando no
Open Project Icon Group. Todos os dados relevantes sobre o grupo do projeto so
armazenadas em
o arquivo de grupo de projeto (extenso . Mpgroup)

Adicionar / Remover arquivos do Project

O projeto pode conter os seguintes tipos de arquivo:

- arquivos de origem
- . H arquivos de cabealho
- . Mcl binria arquivos
- PLD nvel de projeto define os arquivos
- arquivos de imagem
- . Hexadecimal, . Asm e . Lst arquivos, consulte os arquivos de sada. Esses arquivos
no podem ser adicionados ou
retirados do projeto.
- Outros arquivos
82
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 2
mikroC PRO para PIC Meio Ambiente

A lista de arquivos fonte relevante armazenado no arquivo de projeto (extenso . Mcppi).

Para adicionar o arquivo de origem para o projeto, clique em Adicionar Arquivo Project Icon.
Cada adicionou
arquivo de origem deve ser independente, isto , deve ter todas as definies necessrias aps
pr-processamento.
Para remover o arquivo (s) do projeto, clique no boto Remover Arquivo do Project Icon.

Nvel do projeto define:

Projeto Nvel Define (. PLD) arquivos tambm podem ser adicionados ao projeto. Projeto define
nvel
arquivos permitem que voc tenha define que so visveis em todos os arquivos de origem no
projeto. Um arquivo
deve conter uma definio de cada linha da seguinte forma:

<symbol> [= [<value>]]
<symbol (a,b)> [= [<value>]]

Define um smbolo mac ro nomeada. Para especificar um valor, use = Valor. Se = Valor
omitido, 1 ser adotado. No digitar caracteres espao em branco imediatamente antes da
"=". Se um caractere de espao em branco inserido imediatamente aps a
"=", A macro
definido como zero token. Esta opo pode ser especificada repetidamente. Cada
aparecimento de
smbolo ser substitudo pelo valor antes da compilao.
Existem dois nveis de projeto pr-define. Veja em nvel de projeto predefinido define

Nota: Para incluso dos arquivos de cabealho (extenso . H), use o direo
pr-processador
tiva # Include. Veja arquivo de incluso para mais informaes.
Tpicos relacionados: Gerente de Projetos, Project Settings, Edit Project

Mikroelektronika - Solues de software e hardware para o mundo embutido 83


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Arquivos de origem

Arquivos de origem contendo o cdigo C deve ter a extenso. A lista de arquivos de origem
relevantes para a aplicao armazenado no arquivo de projeto com extenso mcppi.,
juntamente com
outras informaes de projeto. Voc pode compilar arquivos de origem somente se eles so
parte do
projeto.

Use a diretiva de pr-processamento # Include para incluir arquivos de cabealho com a


extenso
. H. No confie na pr-processador para incluir outros arquivos de origem
de cabealhos-
consulte Adicionar / Remover arquivos do projeto para obter mais informaes.

Gerenciando arquivos de origem

Criar novo arquivo de origem

Para criar um novo arquivo de origem, faa o seguinte:


1. Selecione Arquivo > Nova Unidade a partir do menu drop-down, ou pressione Ctrl + N, ou
clique no
Novo cone do Arquivo da Barra de Ferramentas.
arquivo
2. Uma nova guia ser aberta. Este um arquivo de origem novo. Selecione Arquivo >
Guardar da
drop-down menu, ou pressione Ctrl + S, ou clique no boto a partir do arquivo
Save File Icon
Barra de ferramentas e nome-lo como quiser.

Se voc usar o novo assistente de projeto, um arquivo de origem vazio, o nome do projeto com
extenso, ser criado automaticamente. A mik roC PRO para PIC no requer que voc
ter um arquivo de origem o mesmo nome que o projeto, s uma questo de convenincia.

Abrindo um arquivo existente

1. Selecione Arquivo > Abrir a partir do menu drop-down, ou imprensa Ctrl + S, ou clique no
boto Abrir
File Icon Arquivo da Barra de Ferramentas. Em Abrir caixa de dilogo Procurar para o
local do
arquivo que deseja abrir, selecione-o e clique no boto Abrir.
2. Os selecionados arquivo exibido em sua prpria guia. Se o arquivo selecionado j est
aberto, a sua
guia Editor atual ficar ativo.
Imprimindo um arquivo aberto

1. Certifique-se que a janela que contm o arquivo que voc deseja imprimir est ativo.
2. Selecione Arquivo > Imprimir da drop-down menu, ou pressione Ctrl + P.
3. Na janela de visualizao de impresso, definir um layout desejado no documento e clique
no
boto OK. O arquivo ser impresso na impressora selecionada.

84 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Salvando arquivo

1. Certifique-se que a janela que contm o arquivo que voc deseja salvar est ativo.
2. Selecione Arquivo > Guardar a partir do menu drop-down, ou pressione Ctrl + S, ou clique
no boto Salvar
File Icon Arquivo da Barra de Ferramentas.

Salvando arquivo com um nome diferente

1. Certifique-se que o janela contendo o arquivo que voc deseja salvar est ativo.
2. Selecione Arquivo > Salvar como a partir do menu drop-down. O dilogo Novo nome do
arquivo
ser exibido.
3. Na caixa de dilogo, navegue at a pasta onde voc deseja salvar o arquivo.
4. No campo Nome do arquivo, modificar o nome do arquivo que voc deseja salvar.
5. Clique no boto Salvar.

A fechar o ficheiro

1. Certifique-se que a guia que contm o arquivo que voc deseja fechar a aba ativa.
2. Selecione Arquivo > Fechar a partir do menu drop-down, ou para a direita, clique na guia do
arquivo que
que deseja fechar e selecione Fechar opo no menu de contexto.
3. Se o arquivo foi alterado desde que foi salvo pela ltima vez, voc ser solicitado a salvar
suas alteraes.

Tpicos Relacionados: Menu Arquivo, Arquivo Barra, Gerente de Projetos, Project Settings,

Mikroelektronika - Solues de software e hardware para o mundo embutido 85


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
CLEAN Pasta do projeto

Este menu d-lhe a opo de escolher quais arquivos do seu projeto atual que voc quer
para excluir.
Os arquivos marcados em negrito podem ser facilmente recriadas atravs da construo de um
projeto. Outros arquivos devem
ser marcada para excluso apenas com um grande cuidado, porque IDE no pode
recuper-los.

Temas relacionados: Personalizando Projetos

86 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

COMPILAO

Quando voc criou o projeto e escrito o cdigo fonte, tempo para compilar
ele. Selecione Projet o > Const ruir a partir do menu drop-do wn, ou clique no a partir de
cone Build
Barra de ferramentas de projeto. Se mais mais do que um projeto est aberto, voc pode
compilar todos abertos
projetos selecionando Projeto > Build All a partir do menu drop-down, ou clique no boto
Construir
Todos Icon do Projeto Toolbar.

barra de progresso ser exibida para inform-lo sobre o status de compilao. Se no houver
alguns erros, voc ser notificado na janela de erro. Se no forem encontrados erros,
o mik roC PRO para PIC ir gerar arquivos de sada.

Arquivos de sada

Aps a compilao bem-sucedida, o mik roC PRO para PIC ir gerar arquivos de sada em
o projeto pasta (pasta que contm o arquivo de projeto . Mcppi). Arquivos de sada so
resumidos na tabela abaixo:

Assemblia Ver

Depois de compilar o programa no mik roC PRO para PIC, voc pode clicar no boto Exibir
Assemblia cone ou selecione Projeto > Exibir Assemblia a partir do menu drop-down
para analisar o cdigo assembly gerado (. asm arquivo) em uma janela nova aba. Assemblia
legvel com nomes simblicos.

Tpicos relacionados: Menu Project, Project Barra de ferramentas, janela de erro, Gerente de
Projeto, Pro-
Configuraes ject

Mi
kroelektronika - Solues de software e hardware para o mundo embutido

87

Formato Descrio Tipo de


Arquivo
hex Intel registros estilo. Use esse arquivo para o . Hexa
Intel HEX
programa
PIC MCU.
mikro Compilado Biblioteca. distribuio binria do . Mcl
Binria
aplicativ o que pode ser includa em outros projetos.

Lista de Resumo dos PIC colocao de memria: a . Lst


instruo
Arquivos endereos, registradores,
Montador de Homem monta gem legvei srotinas e rtulos.
com nomes simbli c os,
. Asm
extrados a partir da lista de arquivos.
arquivo
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
MENSAGENS DE ERRO

Mensagens de erro do compilador:

- Erro de sintaxe: Esperado [% S] mas [% S] encontrados


- Elemento de matriz no pode ser funo
- A funo no pode matriz de retorno
- Classe de armazenamento inconsistentes
- Tipo inconsistentes
- [% S] tag redefiniu [% S]
- Ilegal typecast [% S] [% s]
- "% S" identificador no vlido
- Declarao invlido
- A expresso constante necessria
- Erro interno [% S]
- H muitos parmetros reais
- No parmetros suficientes.
- Expresso invlida
- Identificador esperado, mas [% S] encontrados
- Operador [% S] no aplicvel a estes operand os [% S]
- Atribuir a no lvalue [% S]
- No possvel lanar [% S] para [% S]
- No possvel atribuir [% S] para [% S]
- Lvalue necessria
- Ponteiro necessria
- O argumento fora do alcance
- Identificador no declarado [% S] na expresso
- Too inicializadores muitos
- No possvel estabelecer essa taxa de transmisso no [% S] MH z de
clock
- Estouro de pilha
- Operador invlido [% S]
- Esperado varivel, mas constante [% S] encontrados
- Possibilidade constante, mas [% S] encontrados
- [% S] no pode ser usado fora de um loop
- Tipo desconhecido [% S]
- Varivel [% S] redeclarado
- Identificador no declarado [% S]
- Limite a produo aumentou 2K palavras
- [% S] j foi declarado [% S]
- Tipo incompatvel: esperado [% S], mas [% S] encontrados
- Arquivo [% S] no encontrado [% S]
- No h espao em memria RAM suficiente para todas as variveis
- No h espao suficiente ROM
- Tipo invlido em Array
- Diviso por zero
- Tipos incompatveis: [% S] [% s]
- Excesso de caracteres

88 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

- Montador de instrues [% S] no foi encontrado


- Nome do projeto deve ser especificado
- Opo de linha de comando desconhecido: [% S]
- Extenso de ficheiro em falta: [% S]
- Ruim para o argumento: [% S]
- Preprocessor encerrado com cdigo de erro [% S]
- Endereo Bad absoluta [% S]
- Recurso ou cross-convocao de [% S]
- Reentr nci a no permiti do: funo [% s] chamado a partir de dois
segme ntos
- Nenhum arquivo especificado
Parmetro - dispositivo ausente (por exemplo, P16F ...)
- Seqncia de parmetro invlido
- Nome do projeto deve ser definido
- Especificador necessrio
- [% S] no encontrado [% S]
- ndice fora dos limites
- Dimenso da matriz deve ser maior que 0
- Expresso Const esperado
- Const inteiro esperado
- Recurso em definio
- Array corrompido
- Argumentos no pode ser do tipo void
- Argumentos no pode ter specificator memria explcita
- Classe de armazenamento Bad
- Ponteiro para a funo exigida
- Funo necessria
- Converso ilegal ponteiro para casal
- Tipo Integer necessrio
- Os membros no podem ter especificador de memria
- Os membros no pode ser do tipo bit ou sbit
- Too inicializadores muitos
- Too inicializadores muitos subaggregate
- J usado [% S]
- Ilegal expresso com o vazio
- O endereo deve ser maior que 0
- [% S] Identificador redefiniu
- Anulao do usurio
- Expresso deve ser maior que 0
- Declarator invlido esperado "(" ou identificador
- Nome typdef redefinidos: [% S]
- Declarator erro
- Lista qualificador Specifer / esperado
- [% S] j utilizado
- ILevel s pode ser utilizada com as rotinas de interrupo de servio
-; Esperado, mas [% S] encontrados
Mikroelektronika - Solues de software e hardware para o mundo embutido 89
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
- Expectativa "{"
- [% S] Identificador redefiniu
- "(" esperado, mas [% S] encontrados
- ")" esperado, mas [% S] encontrados
- "Case" fora do switch
- "" esperado, mas [% S] encontrados
- "Default" rtulo de alternar
- Expresso do switch deve avaliar o tipo integral
- Enquanto esperava, mas [% S] encontrados
- Funes void no pode retornar valores
- "Continue" fora do circuito
- Cdigo Inacessvel
- Etiqueta redefiniu
- Tipo de vazio na expresso
- Too muitos chars
- tipo no resolvida
- Matrizes de objetos contendo matrizes de tamanho zero so
ilegais
- Invalid enumerador
- ILevel s pode ser utilizada com as rotinas de interrupo de
servio
- Valor iLevel deve ser integral constante
- Fora da faixa iLevel "0 .. 4"
- "}" esperado [% S] encontrados
- ")" esperado, mas [% S] encontrados
- "Quebrar" fora do lao ou switch
- Esvazie char
- A inexistncia de campo [% S]
- Ilegal representao char: [% S]
- Inicializador de erro de sintaxe: array multidimensional faltando subscrito
- Too inicializadores muitos subaggregate
- Pelo menos um caminho de pesquisa deve ser especificado
- No existe memria RAM suficiente para a pilha de chamadas
- Demo Limite
- Parmetro [% S] no deve ser do tipo bit ou sbit
- A funo no deve ter valor de retorno do tipo bit ou sbit

90 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Mensagens de advertncia do compilador:

- Ruim ou falta de parmetro FOSC. 8MHz valor padro usado


- caminho de pesquisa especificado no existe: [% S]
- Especificados inclua o caminho no existe: [% S]
- O resultado no definido em funo: [% S]
- Inicializao de objeto externo [% S]
- converso ponteiro Suspicious
- A converso implcita do ponteiro para int
- linha pragma Desconhecido ignorado: [% S]
- A converso implcita de int para ptr
- Gerado taxa de transmisso [% S] bps (= erro [% S] por cento)
- modelo de memria Desconhecido [% S], o modelo usado em vez de memria pequeno
- bit IRP deve ser definida manualmente para acesso indirecto a [% S] varivel
- Varivel [% S] tenha sido declarada, mas no utilizado "
- Ilegal tipo de arquivo: [% S]

Mensagens de erro vinculador:

- Redefinio das [% S] j definido no [% S]


- principal funo no definida
- rotina do sistema no encontrado para inicializao de: [% S]
- definio agregada Bad [% S]
- No Resolvidos extern [% S]
- Bad funo absoluta endereo [% S]
- RAM insuficiente [% S]

Mikroelektronika - Solues de software e hardware para o mundo embutido 91


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Viso geral do software simulador

A fonte de nvel de software Simulator um componente integrante do mik roC PRO


para PIC ambiente. Ele projetado para simular operaes do PIC e MCUs
auxiliar os usurios na depurao de cdigo C escrito para esses dispositivos.
Aps a concluso de escrever o seu programa, escolha Lanamento tipo de compilao no
projeto
janela de configuraes:

Depois de ter compilado com sucesso o seu projeto, voc pode executar o Software Simu-
lator selecionando Executar > Iniciar o depurador a partir do menu drop-down, ou clicando em
o cone Iniciar o depurador a partir da barra de ferramentas do depurador. Iniciando o Sim
Software
ulador torna mais opes disponveis: Step Into, Step Over, Step Out, Run to Cursor,
etc linha que est a ser executada a cor em destaque (az ul por padro).

Nota: O Simulador de Software simula o fluxo do programa e execuo de instrues de


linhas de produo, mas no pode inteiramente PIC emular o comportamento do dispositivo, ou
seja, no atualizao
temporizadores, sinalizadores de interrupo, etc
92
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 2
mikroC PRO para PIC Meio Ambiente

Breakpoints Janela

A janela de Breakpoints gerencia a lista de atualmente definido pontos de interrupo no


projeto.
Doubleclicking o ponto de interrupo pretendido causar cursor para navegar para o
correspon-
ding local no cdigo-fonte.

Janela de Inspeo

O Software Simulador de ver da janela o principal software janela Simulator


que lhe permite monitorar itens de programa ao simular o seu programa. Para mostrar
a Janela de Inspeo, selecione Ver > Debug Windows > Assista no menu drop-down
menu.

O relgio apresenta janela de variveis e registradores do MCU, juntamente com seus


endereos e valores.

H duas maneiras de adicionar variveis / registar-se para a lista de observao:

pelo seu verdadeiro nome (nome da varivel no cdigo "C"). Basta selecionar desejado
variable/reg-
Ister de Selecione varivel da lista menu drop-down e clique no boto Adicionar
.
pelo seu nome de identificao (Nome da varivel de montagem). Simplesmente digite o
nome do ID que
varivel / registo que pretende exibir em Pesquisar na varivel assemby
nome caixa e clique no boto Adicionar .
Mi
kr
oel
ekt
ronika - Solues de software e hardware para o mundo embutido

93
CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
As variveis tambm podem ser retirados a janela Watch, basta selecionar a varivel que
voc deseja remover e clique no boto Remover.

Adicionar Tudo Button agrega todas as variveis.

Boto Remover tudo remove todas as variveis.

Voc tambm pode expandir / recolher variveis complexas, ou seja, variveis de tipo struct,
cordas ...
Os valores so atualizados medida que avanar a simulao. itens alterados recentemente
so
de cor vermelha.

Duplo clicando em uma varivel ou clicando no boto Propriedades abre


Edit Value janela na qual voc pode atribuir um novo valor para o selecionado
varivel / register. Alm disso, voc pode escolher o formato da varivel / register
representao
entre decimal, hexadecimal, float, binria ou de caracteres. Todas as representaes, exceto
float so assinados por padro. Para a representao assinada clique na caixa de seleo ao
lado
o Assinado etiqueta.
94
Mikroelektroni
ka - Software e
hardware
SOLUES
PARA mundo
embutido
CAPTULO 2
mikroC PRO para PIC Meio Ambiente

O valor de um item tambm pode ser alterada pelo campo item clicando duas vezes o valor e
digitar
o novo valor diretamente.
.

Exibir janela RAM

Depurador Ver RAM janela est disponvel a partir do menu drop-down, Ver > Depurar
Windows > Ver RAM.

A Janela de RAM Vista exibe o mapa de memria RAM PIC, com mudou recentemente
itens de cor vermelha.

Mikroelektronika - Solues de software e hardware para o mundo embutido 95


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
Cronmetro Janela

O Software Simulador de Cronmetro janela est disponvel a partir do menu drop-down,


Ver > Debug Windows > Cronmetro.

A janela exibe um cronmetro contagem atual de ciclos de tempo desde a ltima Soft
ao Simulator ware. Cronmetro mede o tempo de execuo (nmero de ciclos)
partir do momento em Software Simulator j comeou e pode ser redefinido a qualquer
momento. Delta
representa o nmero de ciclos entre as linhas de ao onde o Software Simulador
comeou e terminou.

Nota: O usurio pode alterar o relgio na janela cronmetro, que ser recalculado -
Os valores finais para a ltima frequncia especificada. Mudando o relgio no cronmetro
Janela no afeta as configuraes de projeto real - apenas fornece uma simulao.

96 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 2
mikroC PRO para PIC Meio Ambiente

SIMULADOR DE OPES DE SOFTWARE

Nome Descrio Funo Barra


Key de
Incio ferrame
Simulador de Software Iniciar. [F9]
Depurador ntas
Executar / cone
Executar ou pausar Software Simulator. [F6]
Pausar
Depurador
Parar
Stop Simulador de Software. [Ctrl + F2]
Depurador
Alternar ponto de interrupo na posio do
Toggle cursor atual
[F5]
Breakpoints posio. Para visualizar todos os pontos de
interrup o, selecione Executar
> Veja os pontos de interrupo no menu
drop-downtodas as instrues entre os actuais
Corra para cur- Executar
menu. Clicando duas do
vezes em um item da [F4]
sor instruo e posio cursor.
Ruptur a-
Execute o atual C (simples ou multi-ciclo)
Janela Lista de pontos localiza o ponto de
Step Into instruo, e ento pare. Se a instruo um rou- [F7]
interrupo.
chamada nicotina, entra na rotina e parar na
primeira
instruo
Execute oseguinte chamada.
atual C (simples ou
Step Over [F8]
multi-ciclo) instruo, e ento pare.

Step Out Executar todas as demais instrues do [Ctrl + F8]


rotina atual, o retorno e depois parar.

Tpicos Relacionados: Executar Menu Debug Barra

Mikroelektronika - Solues de software e hardware para o mundo embutido 97


CAPTULO 2
Meio mikroC PRO para PIC
Ambiente
CRIANDO NOVOS BIBLIOTECA

mik roC PRO para PIC permite que voc crie suas prprias bibliotecas. A fim de criar um
biblioteca em mik roC PRO para PIC siga os passos abaixo:

1. Criar um novo arquivo de origem C, consulte Gerenciando arquivos de origem

2. Salve o arquivo em uma das subpastas da pasta do compilador Usos:


Letra_da_unidade: \ Program Files \ Mikroelektronika \ mikroC PRO para
PIC \ usa \ P16 \
Letra_da_unidade: \ Program Files \ Mikroelektronika \ mikroC PRO para
PIC \ usa \ P18 \
Se voc estiver criando biblioteca para famlia de microcontroladores PIC16 o arquivo deve
ser salvo na pasta P16.
Se voc est criando biblioteca para a famlia PIC18 MCUs o arquivo deve ser salvo em
fodler P18.
Se voc estiver criando biblioteca para famlias PIC16 e PIC18 MCUs o arquivo deve ser
salvo em ambas as pastas.

3. Escreva um cdigo para a sua biblioteca e salv-lo.

4. Adicionar __Lib_Example arquivo em algum projeto, consulte Project Manager. Recompile o


projeto.
Se voc quiser usar esta biblioteca para todos os MCUs, ento voc deve ir para
Ferramentas > Opes
> Sada configuraes e verificar Construir todos os arquivos como a biblioteca caixa.
Isto ir construir bibliotecas em uma forma comum que ir funcionar com todos os MCUs. Se
isso
caixa no estiver marcada, ento biblioteca ser construda para MCU selecionado.
Tenha em mente que o compilador apresentar um erro se uma biblioteca construda de
MCU especfico
utilizadas para outra.

5. Compil ad o arquivo __Lib_Example.mcl deve aparec em em ... \ mikroC PRO para


PIC \ usa \ pasta.

6. Abra o arquivo de definio para o MCU que voc deseja usar. Este arquivo colocado na
pasta compilador Defs:

Letra_da_unidade: \ Program Files \ Mikroelektronika \ mikroC PRO para


PIC \ Defs \

e chamado MCU_NAME.mlk, por exemplo 16F887.mlk

7. Adicione o segmento de cdigo a seguir <LIBRARIES> n da definio


arquivo (arquivo de definio est no formato XML):
<LIB>
<alias> Example_Library </ Alias>
<FILE> __Lib_Example </ File>
<Type> REGULAR </ Tipo>
98 Mikroelektronika - Solues de software e hardware para o mundo embutido
CAPTULO 2
mikroC PRO para PIC Meio Ambiente
</ LIB>

8. Adicionar Biblioteca para mlk arquivo para cada MCU que voc deseja usar com sua
biblioteca.

9. Clique no boto Atualizar no Gerenciador de bibliotecas

10. Example_Library deve aparecer na janela do gerenciador de biblioteca.

Biblioteca de vrias verses

Biblioteca Alias representa o nome original que est vinculada a Biblioteca correspondente .
Mcl
arquivo. Por exemplo biblioteca UART para 16F887 diferente da UART biblioteca para
18F4520
MCU. Assim, duas diferentes verses UA RT Biblioteca foram feitas, consulte mlk arquivos para
estes dois MCUs. Note-se que estas duas bibliotecas tm a mesma Biblioteca Alias (UART)
em ambos os mlk arquivos. Esta abordagem permite que voc tenha uma representao
idntica de
UART biblioteca para os MCUs em Library Manager.

Tpicos relacionados: Library Manager, Gerente de Projetos, Gerenciamento de arquivos de


origem

Mi
kr
oel
ekt
ro
nik
a-
Sol
u
e
s
de
sof
tw
are
e
har
dw
are
par
ao
mu
nd
o
em
but
ido
99
CAPTULO 2
Meio Ambiente mikroC PRO para PIC

100 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
MIKROICD (IN-CIRCUIT
Depurador)

mikroICD um instrumento extremamente eficaz para depurao em Tempo-Real em nvel de


hardware. CID
depurador permite que voc execute um mik roC PRO para PIC programa em um host PIC
valores das variveis do microcontrolador e ver, Registros de Funo Especial (SFR), nota-
ry e EEPROM conforme o programa est sendo executado.

101
CAPTULO 3
mikroICD mikroC PRO para PIC

Passo n 1

Se voc tiver de hardware e software adequados para o uso mikroICD, ento, a com -
cluso de escrever seu programa, voc ter que escolher CID Debug tipo de compilao.

Passo n 2

Voc pode executar o mikroICD selecionando Executar > Depurar a partir do menu
drop-down, ou
clicando em Debug Icon . Iniciando o depurador faz mais opes disponveis:
Step Into, Step Over, Run to Cursor, etc linha que est a ser executada a cores de alta
iluminados (azul por padro). H tambm a notificao sobre a execuo do programa e
pode ser encontrada em Janela de Inspeo (barra de status amarela). Note que algumas
funes recebem
tempo para executar, de modo execuo do programa indicado no Janela de Inspeo.

102 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
mikroC PRO para PIC mikroICD

Mikro ele ktro nik a - Solues de softwar e e hardwar e para o mundo embuti do 103
CAPTULO 3
mikroICD mikroC PRO para PIC

mikroICD Debugger Options

Nome Descrio Funo chave

Depurar Depurador Iniciar. [F9]


Executar /
Executar ou pausar Debugger. [F6]
Pausar
Depurador
Alternar ponto de interrupo na posio atual
Toggle do cursor- [F5]
Breakpoints o. Para visualizar todos os pontos de
interrupo, selecione Executar>
Ver os pontos de interr up o no menu
drop- dow n.todas as instrues entre a corrente
Executar
Executar at o Clicando duas vezes em um item da [F4]
instruo e posio do cursor.
cursor
Interrupo
Janela
ExecuteLista localiza
o atual o pontooudemulti-ciclo)
C (simples interrupo.
Step Into instruo, e ento pare. Se a instruo uma rotina [F7]
chamada, introduza a rotina e parar na primeira ins-
o seguinte a chamada.
Execute o atual C (simples ou multi-ciclo)
Step Over instruo, e ento pare. Se a instruo um rou- [F8]
chamada tine, ignor-l o e parar na primeir a
instru o
aps
RAM a chamada.
PIC Flush atual. Todas as variveis
RAM Flush N/A
valores
ser alterado de acordo com os valores de
Desmontagem assistir
Alternarjanela.
entre a desmontagem ea fonte de C [Alt + D]
Ver vista.

104 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
mikroC PRO para PIC mikroICD

Exemplos mikroICD Debugger

Aqui est um passo a passo Exemplo Debugger mikroICD.

Passo n 1

Primeiro voc tem que escrever um programa. Ns iremos mostrar como funciona mikroICD
usando este
exemplo:

/ / Conexes do mdulo do LCD


LCD_RS sbit na RB4_bit;
LCD_EN sbit na RB5_bit;
LCD_D4 sbit na RB0_bit;
LCD_D5 sbit na RB1_bit;
LCD_D6 sbit na RB2_bit;
sbit LCD_D7 na RB3_bit;

LCD_RS_Direction sbit na TRISB4_bit;


LCD_EN_Direction sbit na TRISB5_bit;
LCD_D4_Direction sbit na TRISB0_bit;
sbit LCD_D5_Direction na TRISB1_bit;
LCD_D6_Direction sbit na TRISB2_bit;
LCD_D7_Direction sbit na TRISB3_bit;
/ / Fim conexes do mdulo do LCD

char texto [17] = "mikroElektronika";


i char;

void main () {
PORTB = 0;
TRISB = 0;
ANSEL = 0;
ANSELH = 0;

Lcd_Init ();
Lcd_Cmd (_LCD_CLEAR);
Lcd_Cmd (_LCD_CURSOR_OFF);

for (i = 1; i <17; i + +) {
Lcd_Chr (1, i, o texto [i-1]);
}
}

Mikro ele ktro nik a - Solues de softwar e e hardwar e para o mundo embuti do 105
CAPTULO 3
mikroICD mikroC PRO para PIC

Passo n 2

Aps a compilao bem-sucedida e pressione programao PIC F9 para iniciar mikroICD.


Aps mikroICD inicializao linha ativa azul deve aparecer:

Passo n 3

Vamos depurar linha por linha do programa. Pressionando F8 estamos executando cdigo linha
por linha.
recomendvel que o usurio no usa Step Into [F7] e Step Over [F8] mais
Atrasos rotinas e rotinas contendo os atrasos. Ao invs disso use Run para o cursor [F4] e
funes Breakpoints.
Todas as alteraes so lidos a partir PIC e carregado na Janela de Inspeo. Note-se que
PORTB,
TRISB, Ansel e ANSELH mudou seus valores. 255-0.

106 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
mikroC PRO para PIC mikroICD

Passo n 4

Step Into [F7] e Step Over [F8] so mikroICD funes depurador so usados
no modo de pisar. H tambm em Tempo Real modo suportado pelo mikroICD. Funes
que so usados em Tempo-Real modo so Run / Pause Debugger [F6] e correr para o cursor
[F4]. Pressionando F4 vai para a linha selecionada pelo usurio. Utilizador apenas tem que
seleccionar a linha com
cursor e pressione F4, eo cdigo ser executado at que a linha selecionada atingida.

Passo n 5

Run (Pausa) Debugger [F6] e Breakpoints Toggle [F5] so mikroICD funes depurador
que so usados no modo em Tempo Real. Pressionando F5 marcas da linha selecionada pelo
usurio para a interrupo.
F6 executa o cdigo at o ponto de interrupo atingido. Depois de alcanar ponto de
interrupo depurador pra.
Aqui no nosso exemplo, vamos usar pontos de interrupo para a escrita "mikroEl ektronika" no
LCD char
char. Ponto de interr up o defini do no Lcd_Chr eo progr am a ir parar cada vez que essa
funo seja alcan a do.
Depois de alcanar ponto de interrupo que deve pressionar F6 novamente para continuar a
execuo do programa.

Mikro
elektr
onika
-
Solu
es
de
softw
are e
hardw
are
para
o
mund
o embuti do

107
CAPTULO 3
mikroICD mikroC PRO para PIC

Breakpoints foi separada em dois grupos. H hardware e software


pontos de quebra. rpida interrupo de hardware so colocados em PIC e eles fornecem
depurao. Nmero de pontos de interrupo de hardware limitado (1 para P16 e 1 ou 3 para
o P18). Se
todos brekpoints hardware so usados, os pontos de interrupo em seguida, que sero
utilizados so softwares
ponto de interrupo. Os pontos de interrupo so colocados dentro mikroICD, e eles simulam
hard-
breakpoints ware. interrupo de software muito mais lento do que hardware break -
pontos. Esta diferena entre as diferenas de hardware e software no so visveis
mikroICD em software, mas os seus horrios diferentes so bastante notvel, por isso
importante
saber que h dois tipos de pontos de interrupo.
108
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 3
mikroC PRO para PIC mikroICD

mikroICD (In-Circuit Debugger) Viso

Breakpoints Janela

A janela de Breakpoints gerencia a lista de pontos de interrupo definidos atualmente no


projeto.
Doubleclicking o ponto de interrupo pretendido causar cursor para navegar para o
correspon-
ding local no cdigo-fonte.

Mikro ele ktro nik a - Solues de softwar e e hardwar e para o mundo embuti do 109
CAPTULO 3
mikroICD mikroC PRO para PIC

Janela de Inspeo

Depurador de ver da janela a janela principal do depurador que permite moni-


tor itens do programa, enquanto executar o programa. Para mostrar a janela de inspeo,
selecione
Ver > Debug Windows > Janela de Inspeo a partir do menu drop-down.

O relgio apresenta janela de variveis e registradores do PIC, com os respectivos endereos e


valores. Os valores so atualizados medida que avanar a simulao. Use o drop-down
menu para adicionar e remover os itens que voc deseja monitorar. Recentemente mudou
itens so de cor vermelha.

110 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
mikroC PRO para PIC mikroICD

Duplo clicar em um item abre a Edit Value janela na qual voc pode atribuir um novo
valor para a varivel selecionada / register. Alm disso, voc pode mudar a viso em
hexadecimal, binrio,
char, ou decimal para o item selecionado.

EEPROM Janela de Inspeo

mikroICD EEPROM Watch Janela est disponvel a partir do menu drop-down, Ver >
Debug Windows > Ver EEPROM.
O EEPROM janela Watch mostra os valores atuais inscritos na PIC interna
Memria EEPROM. Existem dois botes de ao relativa EEPROM Watch ganha-
Dow - Escreve EEPROM e Leia EEPROM. Escreve EEPROM grava dados de
EEPROM janela Watch em memria EEPROM interna do PIC. Leia EEPROM l
dados de PIC de memria EEPROM interna e carrega-lo na janela de EEPROM.

Mikro ele ktro nik a - SOFTW A RE HARDW A RE E SOLU ES PARA mundo embuti d o 111
CAPTULO 3
mikroICD mikroC PRO para PIC

Cdigo Janela de Inspeo

mikroICD Cdigo Janela de Inspeo est disponvel no menu drop-down menu, Ver >
Debug Windows > Exibir Cdigo.

O Cdigo de janela de inspeo de cdigo mostra (cdigo hexadecimal) escrito em PIC. No h


ao
boto sobre Cdigo janela Watch - Cdigo de leitura. Cdigo de leitura l o cdigo de
PIC e carrega-lo em View Code Window.
Alm disso, voc pode definir um escopo de endereo no qual o cdigo hexadecimal ser lido.

112 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
mikroC PRO para PIC mikroICD

Ver Memria RAM

Depurador Ver RAM janela est disponvel a partir do menu drop-down, Ver > Depurar
Windows > Ver RAM.

A RAM Windows Vista exibe o mapa de memria RAM PIC, com mudou recentemente
itens de cor vermelha.

Erros comuns

Tentando PIC mikroICD programa enquanto estiver ativa.


Tentando depurar Lanamento construir verso Type do programa.
Tentando depurar o cdigo do programa que mudou no foi compilado e pro
gramada em PIC.
Tentando selecionar linha que vazia de Run para o cursor [F4] e Breakpoints Toggle
[F5] funes.
Tentando depurar PIC com mikroICD enquanto Watch Dog Timer est habilitado.
Tentando depurar PIC com mikroICD enquanto Power Up Timer habilitado.
No possvel forar o Cdigo de Proteo ao tentar depurar PIC com mikroICD.
Tentando depurar PIC com mikroICD com resistores pull-up definido como ON RB6 e RB7.
Para corrigir mikroICD depurao no usa pull-ups.

Mikro ele ktro nik a - Solues de softwar e e hardwar e para o mundo embuti do 113
CAPTULO 3
mikroICD mikroC PRO para PIC

MIKROICD ADVANCED BREAKPOINTS

mikroICD prev a possibilidade de utilizar os pontos de interrupo avanada. Avanado


Breakpoints podem ser usados com PIC18 MCUs e PIC18FJ. Para habilitar avanada
Break points definir a opo Advanced Breakpoints dentro da janela Watch:

Para configurar o Advanced Breakpoints, iniciar mikroICD [F9] e selecione Ver > Depurar
Windows > Advanced Breakpoints opo no menu drop-down ou utilize
[Ctrl + Shift + A] atalho.

Nota: Quando Advanced Breakpoints so habilitados mikroICD opera em Tempo -Real


modo, por isso vai apoiar apenas no seguinte conjunto de comandos: Iniciar o depurador
[F9],
Execute o depurador Pausa / [F6] e Parar Debugger [Ctrl + F2]. Uma vez que o avanad o
Ponto de interrupo atingido, o recurso Advanced Breakpoints podem ser desativadas e
mikroICD depurao pode ser continuado com conjunto completo de comandos. Se for
necessrio,
Advanced Breakepoints pode ser reativado sem reiniciar mikroICD.

Nota: Nmero de pontos de interrupo avanada igual ao nmero de Hardware -break


pontos e que depende de MCU utilizado.

114 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 3
mikroC PRO para PIC mikroICD

Programa de Ruptura de Memria

Memria do Programa Break usado para definir o ponto de interrupo Avanado para
especfico
endereo na memria do programa. Por causa do PIC pipelining exe programa mecanismo de
cuo pode parar de instrues de um ou dois aps o endereo inserido no Endereo
de campo. Valor inscrito no Endereo campo deve ser em formato hexagonal.

Nota: Quebra de memria do programa pode usar a opo Passcount. O programa de


execu-
o ir parar quando o endereo do programa especificado atingido durante o tempo N-sima
onde N o nmero de inscritos no Passcount de campo. Quando alguns avanada
Breakpoint interrompe a execuo do programa, para todos os contadores passcount avanada
Breakpoints ser apagado.

Programa de Ruptura de Memria

Memria do Programa Break usado para definir o ponto de interrupo avanada para o
especfico
endereo na memria do programa. Por causa do PIC pipelining exe programa mecanismo de
cuo pode parar um ou duas instrues aps o endereo digitado no endereo
de campo. O valor informado no campo de endereo deve ser em formato hexagonal.

Nota: Quebra de memria do programa pode usar a opo Passcount. O programa de


execu-
o ir parar quando o endereo do programa especificado chegou o tempo N-sima
onde N o nmero de inscritos no Passcount de campo. Quando alguns avanada
Breakpoint interrompe a execuo do programa, para todos os contadores passcount avanada
Breakpoints ser apagado.

Arquivo Registre-Break

Arquivo Registre-Break pode ser usado para interromper a execuo de cdigo quando acesso
leitura / gravao
para o local especfico da memria de dados ocorre. Se Acesso de leitura selecionado, o
Arquivo
Registre Igualdade opo pode ser usada para definir o valor correspondente. O programa de
execu-
o ser interrompido quando o valor lido a partir da localizao de memria de dados
especificado
igual ao nmero escrito no Valor de campo. Os valores inscritos no Endereo e
Valor campos devem ser em formato hexagonal.

Nota: Arquivo Registre-Break tambm pode usar a opo Passcount da mesma forma
como
Memria do Programa Break.
Mikro ele ktro nik a - Solues de softwar e e hardwar e para o mundo embuti do

115
CAPTULO 3
mikroICD mikroC PRO para PIC

Emulador de Recursos

Evento Breakpoints

Ruptura em Underflow / Stack Overflow: no implementado.


Ruptura em Watchdog Timer: no implementado.
Ruptura no sono: pausa na instruo SLEEP. instruo SLEEP no ser
executados. Se voc optar por continuar a depurao mikroICD [F6] em seguida, o pr-
grama de execuo ter incio a partir da primeira instruo aps a instruo SLEEP.

Cronmetro

Cr on metr o us a Breakpoint # 2 e Breakpoint # 3 Co m o ponto d e par ti da e as c ondi es


Stop-
es. Para usar o cronmetro define estes dois pontos de interrupo e verificar o Habilitar
Cronmetro checkbox.

opes de cronmetro:

Parado na condio de incio

Parado em Iniciar Condio (Breakpoint # 2): quando marcada, a execuo do


programa
vai parar na Breakpoint # 2. Caso contrrio, Breakpoint # 2 ser usado somente
para
iniciar o cronmetro.
Parado em Parar Condio (Breakpoint # 3): quando marcada, a execuo do
programa
vai parar na Breakpoint # 3. Caso contrrio, Breakpoint # 3 ser usado somente
para
parar o cronmetro.
Reset Cronmetro na Run: quando marcada, o cronmetro ser apagada antes
continuando a execuo do programa e contagem prximo vai comear do zero. Outros -
sbio, a contagem prximo ter incio a partir do valor anterior Cronmetro

116
Mikroelektroni
ka - Softwares
e solues de
hardware para
Embedded
World
CAPTULO 4
mikroC PRO para PIC
Especificidades

Os tpicos a seguir abordam as especificidades da mikroC PRO compilador para PIC:

- Questes ANSI Standard


- Globals e constantes predefinidas
- Acessando bits individuais
- Interrompe
- PIC Ponteiros
Directivas Linker -
- Built-in Rotinas
- Otimizao de Cdigo
- Memria especificadores de tipo

117
CAPTULO 4
Especificidade mikroC PRO para PIC
s
Problemas ANSI Standard

Divergncia em relao ao padro ANSI C

- Tentativa declaraes no so suportados.

Idioma Exstensions C

mik roC PRO para PIC tem conjunto adicional de palavras-chave que no pertencem ao o ANSI
Palavras-chave linguagem padro C:

- cdigo
- dados
- rx
- em
- sbit
- bit
- sfr

Tpicos relacionados: Palavras-chave, PIC especficas

Globals e constantes predefinidas

Para facilitar a programao dos PIC MCUs conformes, o mik roC PRO para PIC imple-
mentos uma srie de variveis globais e constantes predefinidas.

Todos os PIC Registos SFR e seus pedaos esto implicitamente declarados como variveis
globais.
Estes identificadores possuem uma ligao externa, e so visveis na projeto inteiro.
Ao criar um projeto, o mik roC PRO para PIC incluir uma adequada (*) arquivo
da pasta defs, contendo declaraes de disponveis Registos SFR e constantes.

Para um conjunto completo de variveis globais e constantes predefinidas, procure "Defs" na


mik roC
PRO para PIC pasta de instalao, ou sonda o Assistente de cdigo para letras especficas
(Ctrl + Espao no editor de cdigo).

118 - E E SOLUES PARA PARA MUNDIAL


Mikroelektro nika - SOFTWARESOFTWAREHARDWAREHA RDWA RE SOLUTIONSEMBEDDEDE MBEDDED MUNDO
CAPTULO 4
mikroC PRO para PIC Especificidad
es

nvel de projectos predefinidos define

Existem quatro nveis pr-projeto define, para qualquer projeto que voc faz. Estes
define se baseiam em valores que voc digitou / editado no projeto atual:

- Primeiro um igual ao nome do dispositivo selecionado para o projeto ou seja, se 16F887


dispositivo selecionado, em seguida, 16F887 token ser definida como 1, ento ele pode ser
usado para
compilao condicional:
# Ifdef P16F887
...
- # Endif
A segunda __FOSC__ valor da freqncia (em kHz) para os quais o projeto
- construdo.
A terceira para a identificao mik roC PRO para PIC compilador:
# Ifdef __MIKROC_PRO_FOR_PIC__
...
- # Endif
um quarto para identificar a verso de compilao. Por exemplo, se desejar construir uma
verso
Sion de 142, o usurio deve colocar isso no seu cdigo:
# If __MIKROC_PRO_FOR_PIC_BUILD__ == 142
...
# Endif

O usurio pode definir nvel de projeto personalizado define.

Bits Acesso Individual

A mik roC PRO para PIC permite que voc acesse os bits individuais de variveis de 8 bits.
tambm suporta tipos de dados e pouco sbit

Acessar Bits individuais de Variveis

Se voc estiver familiarizado com um MCU particular, voc pode acessar bits pelo nome:

/ / Bit Clear Global Interrupt (GIE)


GIE_bit = 0;

Alm disso, voc pode simplesmente usar o seletor de membro direto (.) Com uma varivel,
seguido por
um dos identificadores B0, B1, ... , B7, ou F0, F1, ... F7, com F7 sendo o mais sig-
pouco significativa:

/ / 0 em pouco claras registo INTCON


INTCON.B0 = 0;
/ / Bit Conjunto 5 em ADCON0 registo
ADCON0.F5 = 1;
119
Mikroelektro
nika -
Software e
Solues de
hardware
para
Embedded
World

- 119
CAPTULO 4
Especificidade mikroC PRO para PIC
s
No h necessidade de qualquer declarao especial. Este tipo de acesso seletivo um
caracterstica intrnseca de mik roC PRO para PIC e pode ser usado em qualquer lugar do
cdigo. Iden-
tifiers B0-B7 no so sensveis e tm um espao especfico. Voc pode sobre-
mont-los com seus prprios membros B0-B7 dentro de qualquer estrutura dada.

Veja Globals e constantes predefinidas para obter mais informaes sobre nomes de registo /
bit.

Nota: Se visando a portabilidade, evitar este estilo de acessar bits individuais, use o bit
campos.

tipo sbit

A mik roC PRO para PIC compilador tem sbit tipo de dados que oferece acesso a bits
SFR enderevel. Voc pode acess-los da seguinte forma:

sbit LEDA em PORTA.B0;


sbit bit_name em <bit-position> name.B SFR;

sbit LEDB em PORTB.F0;


sbit bit_name em <bit-position> SFR-name.F;

/ / Se voc estiver familiarizado com um MCU em particular e os seus portos e di-


registros do Regulamento (TRIS), voc pode acessar bits por seus nomes:
sbit LEdC em RC0_bit;
sbit bit_name em R <port-letter> _bit <bit-position>;

sbit TRISC0 em TRISC0_bit;


sbit bit_name em TRIS <port-letter> _bit <bit-position>;

tipo bit

A mik roC PRO para PIC compilador fornece um pouco o tipo de dados que podem ser
utilizados para vari-
declaraes capaz. No pode ser usado para lista de argumentos e valores de retorno de
funo.

bit bf; / / Varivel de bit /

No existem ponteiros para variveis de bits:

bit * Ptr; / / Invlido

Uma matriz do tipo bit no vlido:

bit arr [5]; / / Invlido


120
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 4
mikroC PRO para PIC Especificidad
es

Nota:

- Variveis Bit no pode ser inicializado.


- Bit variveis no podem ser membros de estruturas e de sindicatos.
- Variveis Bit no tm endereos, portanto operador unrio & (endereo) no
aplicveis a essas variveis.

Temas relacionados: Campos de bits, globais e constantes predefinidas

Interrupes

Interrupes podem ser facilmente manipulados por meio da palavra reservada interrupo.
mik roC
PRO para PIC implictly declara funo interrupo que no pode ser declarado novamente.
Sua
prottipo :

vazio interrupo (void);

Para P18 baixo priorty interrompe palavra reservada interrupt_low:

vazio interrupt_low (void);

Est prevista para escrever sua prpria definio (corpo da funo) para lidar com interrupes
em
sua aplicao.

mik roC PRO para PIC salva a SFR seguinte ao entrar na pilha interrupo e
estala-los de volta em cima do retorno:

- Famlia PIC12: W, STATUS, FSR, PCLATH


- Famlia PIC16: W, STATUS, FSR, PCLATH
- Famlia PIC18: FSR (Contexto de rpido usado para salvar WREG, BSR STATUS)

Use o # Pragma disablecontexsaving para instruir o compilador para automatica-


ly executar contexto de mudana. Isto significa que no regiser ser salvo / restaurado
o compilador de entrada / sada da rotina de interrupo do servio. Isso permite que o usurio
manualmente escrever cdigo para salvar registros em cima da entrada e para restaurar -los
antes
sada da interrupo.

Mikr
oele
ktro
nika
-
Solu
es
de
soft
ware e hardware para o mundo embutido

121
CAPTULO 4
Especificidade mikroC PRO para PIC
s
prioridade P18 interrompe

Nota: Para a famlia P18 tanto interrompe alta e baixa so suportados.

1. funo com o nome interrupo ser vinculado como ISR (rotina de servio de
interrupo)
para o elevado nvel de interrupo
2. funo com o nome interrupt_low ser vinculados como ISR para baixo nvel inter
rupt_low

Se a funo prioritria de interrupo para ser usado, ento o usurio deve definir a SFR
adequado
bits para habilit-lo. Para mais informaes consultar os dados para o dispositivo especfico.

Chamadas de funo de interrupo

Chamando funes a partir do (interrupo) de rotina agora possvel. O compilador


se preocupa com os registros a ser utilizado, tanto na "interrupo" e, em thread "main",
e executa "inteligentes" contexto de alternncia entre os dois, poupando apenas os registros
que tenham sido usado em ambos reentrncia funes threads.Check.

Exemplos de interrupo

Aqui est um exemplo simples de lidar com as interrupes de TMR0 (Se no houver outras
interrupes
so permitidos):

vazio interrupt () {
contador + +;
TMR0 = 96;
INTCON = $ 20;
}

Em caso de mltiplas interrupes ativadas, voc precisar testar qual das interrupes
ocorreu e, em seguida, prosseguir com o cdigo apropriado (tratamento de interrupes):

vazio interrupt () {
se (INTCON.TMR0IF) {
contador + +;
TMR0 = 96;
INTCON.TMR0F = 0;
}
else if (INTCON.RBIF) {
contador + +;
TMR0 = 96;
INTCON.RBIF = 0;
}
}

122 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 4
mikroC PRO para PIC Especificidad
es

Linker directivas

O mikroC PRO usa um algoritmo interno para distribuir objetos na memria. Se


voc precisa ter uma varivel ou rotina pr-definida no endereo especfico, use o link
directivas er absoluta e org.

Directiva absoluta

Directiva absoluta especifica o endereo inicial na memria RAM para uma varivel. Se a vari -
poder multi-byte, bytes maior ser armazenado nos locais consecutivos.

Directiva absoluta anexado declarao de uma varivel:

curto x absoluta 0x22;


/ / Varivel x vai ocupar 1 byte no endereo 0x22

int y absoluta 0x23;


/ / Varivel y ocupar 2 bytes em endereos 0x23 e 0x24

Tenha cuidado ao usar a diretiva de absoluta, como voc pode sobrepor-se duas variveis
acidente. Por exemplo:

char i absoluta 0x33;


/ / Varivel i vai ocupar 1 byte no endereo 0x33

tempo jjjj absoluta 0x30;


/ / Varivel ocupar 4 bytes de 0x30, 0x31, 0x32, 0x33, assim,
/ / Mudando mudanas i byte mais alto jjjj, ao mesmo tempo, e vice-versa

org Directiva

Directiva org especifica um endereo a partir de uma rotina em ROM.

Directiva org anexado definio da funo. Directivas para defin no-


declaraes ING vai ser ignorado, com um aviso adequado, emitido pelo vinculador.

Aqui est um exemplo simples:

vazio func (int par) org 0x200 {


/ / Funo ter incio no endereo 0x200
nop asm;
}

possvel usar org directiva com as funes que so definidos externamente (como
biblioteca de funes). Basta adicionar org directiva funcionar declarao:

Mikroelektronika - Solues de software e hardware para o mundo embutido 123


CAPTULO 4
Especificidade mikroC PRO para PIC
s
vazio UART_Write1 (char de dados) org 0x200;

Nota: Directiva org pode ser aplicado a qualquer rotina, exceto para interromper.

orgall Directiva

Se o usurio quer colocar suas rotinas, constantes, etc, alm de um endereo especificado no
ROM, # Pragma orgall directiva deve ser usado:

# Pragma orgall 0x200

Directiva funcorg

Voc pode usar o # Pragma funcorg diretiv a para especifi c ar o ender e o inicial de um rou-
tine em CD usando o nome de rotina, apenas:

# Pragma funcorg <func_name> <starting_address>

Relacionados tpicos: chamadas indiretas Funo

Solicita funo indireta

Se o linker encontra uma chamada de funo indireta (atravs de um ponteiro para funo), ele
assume
que qualquer um dos endereos funes de que foram tomadas em qualquer lugar do
programa,
pode ser chamado a esse ponto. Use o # Pragma Funcall directiva para instruir o link
er que as funes podem ser chamados indiretamente da funo atual:

# Pragma Fun call <fu nc_name> <called_ func> [, <called_ func> ,. ..]

A pragma correspondente deve ser colocado no mdulo de origem onde a funo


nome_da_funo implementada. Este mdulo tambm deve incluir declaraes de todos os
funcio-
es constantes do called_func lista.

Estas funes sero ligados, se a funo nome_da_funo chamado no cdigo no-mat


ter se algum deles foi chamado ou no.

Nota: O # Pragma Funcall directiva pode ajudar o vinculador a funo de otimizar o quadr o
alocao no compilados pilha.

Tpicos relacionados: Linker directivas

124 Mikroelektronika - Software e hardware SOLUES PARA mundo embutido


CAPTULO 4
mikroC PRO para PIC Especificidad
es

Criada em Rotinas

mik roC PRO para PIC compilador fornece um conjunto de teis built-utilidade em funes. Built-in funes
no
no requer qualquer cabealho arquivos a serem includos, voc pode us-los em qualquer parte do seu
projeto.

Criada em rotinas so implementadas como "Inline", ou seja, o cdigo gerado no local da chamada, de
modo que o
chamad a no imputad os o limite de chamadas aninhadas. As nicas excees so Vdelay_ms, Delay_Cyc
e Get_Fosc_kHz que so rotinas C real.

Nota: Lo, Hi, Ensino Superior e Maior funes no esto implementadas no compilador mais. Se voc
quero usar estas funes voc deve incluir built_in.h em seu projeto.

- Lo
- Oi
- Superior
- Maior
- Delay_us
- Delay_ms
- Vdelay_ms
- Delay_Cyc
- Clock_Khz
- Clock_Mhz
- Get_Fosc_kHz

Lo
Mikr
oele
ktro
nika
-
Solu
es
de
soft
ware
e
hard
ware
para
o
mun
do
emb
utido
125

Prottipo unsigned short Lo (longa nmero);

Retorna Retorna o menor de 8 bits (byte) de nmero, os bits 0 .. 7.

Funo retorna o byte de menor nmero. Funo no interpreta bit pat-


nhece o nmero - ele simplesmente devolve 8 bits como os encontrados em
Descrio
registo.

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a


no conta contra o limite de chamadas aninhadas.
Requer Os argume ntos devem ser variv el do tipo escalar (isto , aritmti c a Tipos e
ponteir os) .
d = 0x1AC30F4;
Exemplo
tmp = Lo (d) / / Igual 0xF4
CAPTULO 4
Especificidades mikroC PRO para PIC

Oi
Prottipo unsigned short Oi (long nmero);

Retorna Retorna junto ao menor de bytes de nmero, os bits 8 .. 15.

A funo retorna ao lado do byte mais alto de nmero. A funo no interpretar


padres de bits de nmero - ele simplesmente devolve 8 bits como os
Descrio
encontrados em registo.

Este um "Inline" rotina, o cdigo gerado no local da chamada, assim chamada

Requer a argume ntos devem ser variv el do tipo escalar (isto , aritmti c a Tipos e
Os
no conta
ponteir os) . contra o limite de chamadas aninhadas.
d = 0x1AC30F4;
Exemplo
tmp = Hi (d); / / 0x30 Equals

Superior
Prottipo unsigned short Superior (long nmero);

Retorna Retorna ao lado do byte mais alto de nmero, os bits 16 .. 23.

Funo retorna o byte mais alto de nmero. Funo no interpreta bit pat-
nhece o nmero - ele simplesmente devolve 8 bits como os encontrados em
Descrio
registo.

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a


no conta contra o limite de chamadas aninhadas.
Requer Os argume ntos devem ser variv el do tipo escalar (isto , aritmti c a Tipos e
ponteir os) .
d = 0x1AC30F4;
Exemplo
tmp = Superior (d) / / Igual 0xAC

126 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 4
mikroC PRO para PIC Especificidad
es
Maior
Prottipo unsigned short Mais alto (long nmero);

Retorna Retorna o byte mais alto de nmero, os bits 24 .. 31.

A funo retorna ao lado do byte mais alto de nmero. A funo no interpretar


padres de bits de nmero - ele simplesmente devolve 8 bits como os
Descrio
encontrados em registo.

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a


no conta contra o limite de chamadas aninhadas.
Requer Os argume ntos devem ser variv el do tipo escalar (isto , aritmti c a Tipos e
ponteir os) .
d = 0x1AC30F4;
Exemplo
Maior tmp = (d); / / 0x01 Equals

Delay_us
Prottipo vazio Delay_us (const time_in_us);

Retorna Nada.

Cria um atraso de software no perodo de time_in_us microssegundos (uma constante).


Faixa de aplicveis constantes depende da freqncia do oscilador.
Descrio
Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a
no conta contra o limite de chamadas aninhad as . Esta rotina gera loops
aninhados
uso de registros R13, R12, R11 e R10. O nmero de registros utilizado varia de
0-4, dependendo do pedido time_in_us.
Requer Nada.

Exemplo Delay_us (10); / * Dez microssegundos pausa * /

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido 127


CAPTULO 4
Especificidades mikroC PRO para PIC

Delay_ms
Prottipo vazio Delay_ms (const time_in_ms);

Retorna Nada.

Cria um atraso de software no perodo de time_in_ms milissegundos (uma constante).


Faixa de constantes aplicvel depende da freqncia do oscilador.
Descrio
Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a
no conta contra o limite de chamadas aninhad as . Esta rotina gera loops
aninhados
uso de registros R13, R12, R11 e R10. O nmero de registros utilizado varia de
0-4, dependendo do pedido time_in_ms.
Requer Nada.

Exemplo Delay_ms (1000); / * * Um segundo de pausa /

Vdelay_ms
Prottipo vazio Vdelay_ms (unsigned time_in_ms);

Retorna Nada.

Cria um atraso de software no perodo de time_in_ms milissegundos (uma varivel).


atraso gerado no to preciso quanto o atraso criado por Delay_ms.
Descrio
Note-s e que Vdelay_ms uma fun o da biblioteca, em v ez de um built-in de r otina, pr e-
tantes neste tpico por uma questo de convenincia.

Requer Nada.

pausa = 1000;
Exemplo / / ...
Vdelay_ms (pausa); / / ~ um segundo de pausa

128 Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo


CAPTULO 4
mikroC PRO para PIC Especificidad
es
Delay_Cyc
Prottipo vazio Delay_Cyc (char Cycles_div_by_10);

Retorna Nada.

Cria um atras o baseado no relgio MCU. Atraso dura 10 vezes o param- e ntr ada
eter em ciclos MCU.
Descrio
Note-s e que Delay_Cyc uma fun o da biblioteca, em v ez de um built-in de r otina, pr e-
tantes neste tpico por uma questo de convenincia. H limitaes para
Cycles_div _by _ 10 valor. Valor Cycles_div _ by _10 deve estar entre 3 e 255.

Requer Nada.

Exemplo Delay_Cyc ( 10); / * ciclos Cem MCU pausa * /

Clock_Khz
Prottipo no assinado Clock_Khz (void);

Retorna relgio do dispositivo em KHz, arredondado para o nmero inteiro mais prximo.

Funo relgio do dispositivo retorna em KHz, arredondado para o inteiro mais


Descrio prximo.

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a


no conta contra o limite de chamadas aninhadas.
Requer Nada.

Exemplo clk = Clock_Khz ();

Mikroelektronika - Solues de software e hardware para o mundo embutido 129


CAPTULO 4
Especificidades mikroC PRO para PIC

Clock_Mhz
Prottipo unsigned short Clock_Mhz (void);

Retorna Dispositivo clock em MHz, arredondado para o nmero inteiro mais prximo.

Funo relgio do dispositivo retorna em MHz, arredondado para o nmero


Descrio inteiro mais prximo.

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a


Requer no contam contra a chamada aninhadas limite.
Nada.
Exemplo clk = Clock_Mhz ();

Get_Fosc_kHz
Prottipo unsigned long Get_Fosc_kHz (void);

Retorna relgio do dispositivo em KHz, arredondado para o nmero inteiro mais prximo.

Funo relgio do dispositivo retorna em KHz, arredondado para o inteiro.


Descrio
Note-se que Get_Fosc_kHz uma funo da biblioteca, em vez de um built-in de rotina,

pre-
Requer Nada.
tantes neste tpico por uma questo de convenincia.
Exemplo clk = Clock_Khz ();

Otimizao de Cdigo

Optimizer foi adicionada para estender a utilizao do compilador, reduzir a quantidade de cdigo de gener-
acelerada e acelerar sua execuo. As principais caractersticas so:

dobrar Constant

Todas as expresses que podem ser avaliados em tempo de compilao (ou sej a, so constantes) esto
sendo substitudos
pelos seus resultados. (3 + 5 -> 8);

constante de propagao

Quando um valor constante sendo atribudo a uma determinada varivel, o compilador reconhece isso e
substitui o uso da varivel constante no cdigo que segue, enquanto o valor de uma vari-
poder permanece inalterada.

130 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 4
mikroC PRO para PIC Especificidad
es

Copie propagao

O compilador reconhece que duas variveis tm o mesmo valor e elimina um


deles ainda no cdigo.

Valor numerao

O compilador "reconhece" se duas expresses produzem o mesmo resultado e no pode-


portanto eliminar o clculo inteiro para um deles.

"Cdigo Dead" eliminao

A trechos de cdigo que no esto sendo usados em outras partes do programa no afetam
o resultado final da aplicao. Eles so automaticamente removidos.

alocao de pilha

registradores temporrios ("Pilhas") esto sendo usados de forma mais racional, permitindo
COM MUITO
expresses complexas a ser avaliado com um mnimo consumo de pilha.

otimizao vars locais

N variveis locais esto sendo usados, se o seu resultado no afeta alguns dos globais ou
variveis volteis.

Melhor gerao de cdigo e otimizao local

Cdigo gerao mais consistente e mais ateno pago para implementar es -


solues especficos para o cdigo "tijolos de construo" que reduzem ainda mais o tamanho
do cdigo de sada.

Tpicos relacionados: especificidades PIC, mik roC PRO para PIC especficos, tipos especficos
de memria
Mikr
oele
ktro
nika
-
Solu
es
de
soft
ware
e
hard
ware
para
o
mun
do
emb
utido

131
CAPTULO 4
Especificidades mikroC PRO para PIC

132 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 5
PIC ESPECIFICOS

A fim de obter o mximo de seu mik roC PRO para PIC compilador, voc deve estar
familiarizados com certos aspectos da PIC MCU. Este conhecimento no essencial, mas
pode
fornecer uma melhor compreenso das CPIs ' capacidades e limitaes, e seus
impacto sobre a escrita de cdigo.

133
CAPTULO 5
PIC mikroC PRO para PIC
Especificidade
s Tipos de Eficincia

Primeiro de tudo, voc deve saber que ALU PIC, que realiza operaes aritmticas,
otimizado para trabalhar com bytes. Embora mik roC PRO para PIC capaz de han-
manuseio tipos de dados muito complexos, PIC pode engasgar com elas, especialmente se
voc estiver de trabalho
o em alguns dos modelos mais antigos. Isto pode aumentar o tempo necessrio para
realizar mesmo operaes simples. conselhos Universal a utilizao de o menor possvel
tipo em cada situao. Ela se aplica a toda a programao em geral, e duplamente com
microcontroladores.

Conhea a sua ferramenta. Quando se chega ao clculo, nem todos os microcontroladores PIC
so de
desempenho igual. Por exemplo, a famlia PIC16 carece de recursos de hardware para multi-
ply dois bytes, por isso compensado por um algoritmo de software. Por outro lado,
PIC18 famlia tem HW multiplicadores, e como resultado, a multiplicao de obras
consideravelmente
mais rpido.

Limitaes chamadas aninhadas

chamada aninhadas representa uma chamada de funo dentro do corpo da funo, quer para
si mesmo (recursivo
chamadas) ou para outra funo. chamadas de funes recursivas so suportados pelo mik roC
PRO
para PIC mas com limitaes. chamadas de funes recursivas no podem conter qualquer
funo
parmetros e variveis locais, devido s limitaes do PIC de memria e pilha.

mik roC PRO para PIC limita o nmero de no-recursivo chamadas aninhadas para:

- 8 chamadas para a famlia PIC12,


- 8 chamadas para a famlia PIC16,
- 31 chamadas para a famlia PIC18.

Note-se que alguns dos built-in rotinas no contam contra esse limite, devido sua
"Inline" implementao.

Nmero de chamadas aninhadas permitido diminui um, se voc usar qualquer uma das segui-
ing operadores do cdigo: / *%. Isso diminui ainda mais se voc usar as interrupes no
programa. Nmero de redues especificada pelo nmero de funes chamadas a partir de
inter-
rupt. Verifique reentrncia funes.

Se o nmero permitido de chamadas aninhadas for excedido, o compilador apresentar um


relatrio de uma pilha
overflow erro.
134

Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 5
mikroC PRO para PIC PIC
Especificidades

PIC18FxxJxx Especificidades

Endereo SFR compartilhados

mik roC PRO para PIC no fornece ajuste automtico de bits para suplente acessando reg-
Ister. Este um novo recurso adicionado ao pic18fxxjxx famlia e ser apoiado no futuro.
Em vrios locais no banco SFR, um nico endereo usado para acessar os dois dife-
ent registros de hardware. Nestes casos, um "Legado" registro do PIC18 padro
SFR conjunto (como OSCCON, T1CON, etc) as suas quotas de endereo com um suplente,
reg-
Ister. Estes registos alternativos esto associadas com opes de configurao avanada
para os perifricos, ou com o novo dispositivo no os recursos includos na SFR PIC18 padro
mapa. Uma lista completa de endereos de registro compartilhado e os registos associados
lhes fornecido na ficha tcnica.

PIC16 Especificidades

Quebrando Pginas

Em aplicaes orientadas para PIC16, nenhuma nica rotina deve exceder uma pgina (2.000
instrues). Se a rotina no cabe em uma pgina, vinculador ir reportar um erro. Quando
confrontar com este problema, talvez voc devesse repensar o design do seu aplicativo
- tente quebrar a rotina especial em vrios pedaos, etc

Limites da abordagem indireta atravs da RSF

Ponteiros com PIC16 so "Perto": eles carregam apenas abaixo de 8 bits do endereo. Com -
empilhadeira automaticamente limpar o bit 9 em cima da partida, de modo que os ponteiros vo
se referir a
bancos 0 e 1. Para acessar os objetos em bancos de 2 ou 3 atravs de ponteiro, o usurio
deve man-
vamente definir a PIA, e restaurar a zero aps a operao. As regras se aplicam a declarou
qualquer abordagem indireta: matrizes, estruturas e atribuies dos sindicatos, etc

Nota: muito importante cuidar do PIA corretamente, se voc pretende seguir esta
abordagem. Se voc encontrar esse mtodo inadequado, com muitas variveis, voc
pode considerar a atualizao para PIC18.

Nota: Se voc tem muitas variveis no cdigo, tente reorganiz -las com o vinculador
directiva absoluta. Variveis que so abordados apenas diretamente devem ser transferidos
para
3 e 4 bancos para aumentar a eficincia.

tpicos relacionados: mik roC PRO para PIC especificidades


Mikroelektronika - Solues de software e hardware para o mundo embutido

135
CAPTULO 5
PIC Especificidades mikroC PRO para PIC

TIPO DE MEMRIA especificadores

A mik roC PRO para PIC suporta o uso de todas as reas de memria. Cada varivel pode ser explicitamente
atribudo a um espao de memria especficos, incluindo um especificador de tipo de memria na
declarao, ou
implicitamente atribudo.

Os especificadores seguintes tipos de memria podem ser usados:

- cdigo
- dados
- rx
- sfr

especificadores de tipo de memria podem ser includas no declarao da varivel.

Por exemplo:

data_buffer dados char / / coloca data_buffer nos dados ram


const char cdigo txt [] = "ENTER PARAMETER:" / / coloca o texto na memria do programa

cdigo
Descrio A cdigo tipo de memria pode ser usada para a atribuio constantes no programa
memria.
/ / Coloca txt na memria do programa
Exemplo
const char cdigo txt [] = "ENTER PARAMETER:";

dados
Descrio Este especifi c ador de memri a usado quando a varivel que armaz e na os dados
da
/ /SRAM interna.
Coloca PORTG nos dados ram
Exemplo
dados sfr 0x65 PORTG unsigned short absoluta;

rx Este especificador de memria permite a varivel a ser armazenado no espao de Rx


(arquivo Register).
Descrio
Nota: Na maioria dos casos, no haver espao suficiente para as variveis do

usurio em
o espao
/ / Coloca Rx. yNono
entanto, como compilador usa o espao para armaz e nar Rx
Rx espao
Exemplo
y rx sfr ri
vari-tempor char;
o
variveis, pode acontecer que as variveis do usurio ser armazenado na SRAM dados
internos,
136 ao escrever
Mikroelektronika programas
- Solues complexos.
de software e hardware para o mundo embutido
CAPTULO 5
mikroC PRO para PIC PIC
Especificidades

sfr Este especificador de memria em combinao com (rx, dados) permite ao utilizador
Descrio aceder es-
cial registros funo. Ele tambm instrui o compilador para manter mesmo identificador em
C e sfr y char;
rx
Exemplo
montagem.

Nota: Se nenhum dos especificadores de memria so usadas quando se declara uma varivel, dados
especificador ser
definir como padro pelo compilador.

Tpicos relacionados: Acesso individual bits, SFR, constantes, funes

Mikroelektronika - Solues de software e hardware para o mundo embutido 137


CAPTULO 5
PIC Especificidades mikroC PRO para PIC

138 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC
Referncia da
Linguagem

O mikroC PRO para PIC Language Reference descreve a sintaxe, a semntica ea


execuo do mikroC PRO para a linguagem PIC.

O objectivo deste guia de referncia fornecer uma mais compreensvel descrio do


o mikroC PRO para PIC linguagem para o usurio.
139
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

- Elementos lexicais
Espaos em branco
Comentrios
Tokens
Constantes
Constantes Resumo
Integer Constantes
Floating Point Constantes
Constantes de caracteres
String Constantes
Enumerao Constantes
Constantes ponteiro
Expresso constante
Palavras-chave
Identificadores
Punctuators

- Conceitos
Objetos e lvalues
Escopo e visibilidade
Espaos de nome
Durao

- Tipos
Tipos Fundamentais
Aritmtica Tipos
Enumeraes
Tipo Void
Tipos derivados
Matrizes
Ponteiros
Introduo aos Ponteiros
Aritmtica de ponteiro
Estruturas
Introduo s estruturas
Trabalhando com Estruturas
Estrutura de Acesso ao Portal
Sindicatos
Campos Bit
Tipo Converses
Standard Converses
Typecasting Explicit

140 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

- Declaraes
Introduo s declaraes
Linkage
Classes de armazenamento
Tipo, qualificao
Especificador typedef
ASM Declarao
Inicializao

- Funes
Introduo s Funes
Chamadas de funo e argumento de converso

- Operadores
Introduo aos Operadores
Operadores Precedncia e Associatividade
Operadores Aritmticos
Os operadores relacionais
Operadores bit a bit
Lgico Opeartors
Operadores Condicionais
Operadores de Atribuio
Operador sizeof

- Expresses
Introduo a Expresses
Vrgula Expresses

- Declaraes
Introduo
Rotulado Demonstraes
Expresso Demonstraes
Instrues de Seleo
Se a Declarao
Switch Declarao
Instrues iterao (Loops)
Enquanto a Declarao
Do Declarao
Para a declarao
Ir Demonstraes
Break e continue
Goto Declarao
Instruo Return
Declaraes compostas (blocos)

Mikroelektronika - Solues de software e hardware para o mundo embutido 141


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

- Preprocessor
Introduo pr-processador
Preprocessor directivas
Macros
Incluso de arquivos
Preprocessor Operadores
Compilao condicional

142 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

LEXICAL Viso geral sobre elementos

Os tpicos a seguir fornecem uma definio formal do mik roC PRO para PIC lexical
elementos. Eles descrevem as diferentes categorias de unidades de palavra-like (tokens),
reconheceu
pela mik roC PRO para a PIC.

Na fase de simbolizao de compilao, o arquivo de cdigo fonte analisado (isto , mano-


ken baixo) em tokens e espaos em branco. Os tokens no mik roC PRO para PIC so
derivada de uma srie de operaes realizadas em seus programas pelo compilador e
sua built-in pr-processador.

WHITESPACE

Espao em branco um nome coletivo dado a espaos (brancos), horizontais e verticais


tabulaes, caracteres de nova linha e comentrios. Espaos em branco podem servir para
indicar onde
fichas de incio e fim, mas para alm desta funo, qualquer excedente espaos em branco so
descartados.
Por exemplo, duas seqncias

int i; flutuar f;

int
i;

flutuar f;

so lexicalmente equivalente e analisar de forma idntica para dar seis fichas:

int
i
;
flutuar
f
;

Mikroelektronika - Software e Solues de hardware para Embedded World 143


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Espao em branco em Strings

Os caracteres ASCII representando branco pode ocorrer dentro de literais de cadeia. Em que
caso eles sejam protegidos contra o processo de anlise normal (eles permanecem como parte
da
da seqncia). Por exemplo,

char [nome] = "mikro foo";

analisa em sete fichas, incluindo uma nica seqncia literal token:

char
nome
[
]
=
"Mikro foo" / * Apenas um token aqui! * /
;

Linha de emenda com contrabarra (\)

Um caso especial uma linha termina com uma barra invertida (\). Ambos barra invertida e
nova
linha caracteres so descartados, permitindo que duas linhas fsicas de um texto a ser tratados
como
uma unidade. Ento, o seguinte cdigo

"MikroC PRO \

Compilador para PIC "

analisa em "MikroC PRO para PIC Compiler". Consulte a String Constantes para mais
da informao.

144 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

COMENTRIOS

Os comentrios so partes de um texto usado para anotar um programa e so tecnicamente


outra forma de espao. Os comentrios so para uso do programador s, pois eles so
retirados do texto de origem antes da anlise. H duas formas para delinear com -
mentos: o mtodo de C e C + + mtodo. Ambos so apoiados por mik roC PRO para
PIC.

Voc tambm deve seguir as orientaes sobre a utilizao de espaos em branco e os


delimitadores de
comentrios, discutido mais adiante neste tpico para evitar problemas de portabilidade outros.

comentrios C

C comentrio qualquer seqncia de caracteres colocados aps a par / smbolo *. A com-


mento termina na primeira ocorrncia do * / par aps a inicial / *. Toda a
seqncia, incluindo quatro smbolos delimitador de comentrio, substitudos por um espao
depois
expanso de macro.

Na mik roC PRO para a PIC,

int / * Tipo * i / / * identificador * /;

analisa como:

int i;

Note-se que o mik roC PRO para PIC no suporta um colar nonportable token
estratgia usando /**/. Para mais informaes sobre colar token, consulte o Preprocessor
Operadores.

C + + comentrios

A mik roC PRO para PIC permite que os comentrios de uma linha usando duas barras
adjacentes
(//). O comentrio pode comear em qualquer posio e se estende at a prxima linha nova.

O cdigo a seguir

int i; / / Isto um comentrio


int j;

analisa como:

int i;
int j;

Mikroelektronika - Solues de software e hardware para o mundo embutido 145


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

comentrios Nested

ANSI C no permite comentrios aninhados. A tentativa de um ninho de comentrio como esse

/ * int / * declarao * / i, / *

falha, porque o mbito do primeiro / * termina no primeiro * /. Isso nos d

i; * /

o que geraria um erro de sintaxe.

146 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Idioma Referncia

TOKENS

Token o menor elemento de um programa compilador C que pode reconhecer. A pars-


er separa os tokens do fluxo de entrada, criando o maior smbolo possvel
usando os caracteres de entrada em uma esquerda para a direita-scan.

A mik roC PRO para PIC reconhece os seguintes tipos de fichas:

- palavras-chave
- identificadores
- constantes
- operadores
- pontuadores (tambm conhecido como separadores)

Smbolo de Extrao Exemplo

Aqui est um exemplo da extrao de token. D uma olhada no cdigo exemplo a seguir
seqncia:

inter = a + + + b;

Primeiro, note que inter seria analisado como um identificador nico, em vez no como a
chave-
palavra int seguido pelo identificador er.

O programador que tem escrito o cdigo pode ter a inteno de escrever inter =
um + (+ + b), mas no funciona dessa maneira. O compilador iria analis -lo
no
sete fichas a seguir:

inter // varivel identificador


= // operador de atribuio
um // varivel identificador
+ + // operador postIncrement
+ // operador de adio
b // varivel identificador
; // terminador de instruo

Note-se que + + + analisa como + + (O mais longo possvel token), seguido por +.

De acordo com as regras de precedncia de operador, a nossa seqncia de cdigo , na


verdade:

inter (a + +) + b;

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo 147


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

CONSTANTS

Constantes ou literais so smbolos que representam fixo numrico ou valores de caracteres.

A mik roC PRO para PIC suporta:

- constantes inteiro
- constantes ponto flutuante
- constantes de caracteres
- Constantes cadeia de caracteres (strings literais)
- constantes de enumerao

A tipo de dados de uma constante deduzido pelo compilador usando pistas como um
valor numrico e formato usado no cdigo-fonte.

Integer Constantes

As constantes inteiras podem ser decimal (base 10), hexadecimal (base 16) base, binrios (
2) ou octal (base 8). Na ausncia de sufixos primordiais, o tipo de dados de um
constante inteira derivado do seu valor.

Long e sufixos Unsigned

O sufixo L (Ou l) ligado a qualquer fora constante que constante a ser representado
como um tempo. Da mesma forma, o sufixo U ( Ou u) obriga a uma c onstante a s er no assinado. Ambos
Le
U sufixos podem ser utilizados com a mesma constante em qualquer forma ou processo: ul,
Lu, UL,
etc

Na ausncia de qualquer sufixo (U, u, L, ou l), uma constante atribudo o "Menor"


de
os seguintes tipos, que podem acomod ar seu valor: curto, curto no assinado,
int, unsigned int long int, int unsigned long.

Caso contrrio:

Se uma constante tem o U sufixo, seu tipo de dados ser o primeiro dos seguintes que
pode acomodar o seu valor: unsigned int, unsigned short, sem assinatura
tempo int.
Se uma constante tem o L sufixo, seu tipo de dados ser o primeiro dos seguintes que
podem
acomodar o seu valor: long int, int unsigned long.
Se uma constante tem tanto L e U sufixos, (LU ou UL), seu tipo de dados ser no
assinado
int tempo.

148
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Decimais

constantes Decimal de -2147483648 a 4294967295 so permitidos. Constantes


excedam esses limites vai produzir uma "Out of range" erro. constantes Decimal
no deve usar um zero inicial. Uma constante inteira que tem um zero inicial interpret-
ed como uma constante octal. Assim,

int i = 10; / Decimal * 10 * /


int i = 010; / Decimal * 8 * /
int i = 0; / * Decimal 0 = 0 * octal /

Na ausncia de quaisquer sufixos imperiosa, o tipo de dados de um constante decimal


derivada de seu valor, conforme demonstrado abaixo:

Valor atribudo constante Assumindo Tipo

<-2147483648 Erro: Fora da faixa!

-2147483648 - -32769 tempo

-32768 - -129 int

-128 - 127 curto

128 - 255 unsigned short

256 - 32767 int

32768 - 65535 unsigned int

65536 - 2147483647 tempo

2147483648 - 4294967295 unsigned long

> 4294967295 Erro: Fora da faixa!

Constantes hexadecimais

Todas as constantes a partir de 0x (Ou 0X) esto a ser tomadas hexadecimal. Na


ausncia
sufixos de qualquer substituio, o tipo de dados de um hexadecimal constante derivada da
seu valor, de acordo com as regras apresentadas acima. Por exemplo, 0xC367 sero trata-
ed como unsigned int.

Mikroelektronika - Solues de software e hardware para o mundo embutido 149


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Binrio Constantes

Todas as constantes a partir de 0b (Ou 0B) esto a ser tomadas binrio. Na ausncia
de qualquer excesso de
andar sufixos, o tipo de dados de um binrio constante derivada de seu valor, de acordo
com as regras apresentadas acima. Por exemplo, 0b11101 sero tratados como curto.

Octal Constantes

Todas as constantes com um zero inicial so tidas como octal. Se uma constante octal contm
os dgitos ilegal 8 ou 9, reportado um erro. Na ausncia de qualquer substituindo o sufixo-
es, o tipo de dados de uma constante octal derivado do seu valor, de acordo com as regras
apresentados acima. Por exemplo, 0777 sero tratados como int.

Floating Point Constantes

Uma constante de ponto flutuante composto por:

- Decimal inteiro
- Ponto decimal
- Decimal frao
- e ou E e um expoente inteiro assinado (opcional)
- Tipo sufixo: f ou F ou l ou L (Opcional)

Qualquer nmero inteiro decimal ou frao decimal (mas no ambos) pode ser omitido. Ou dec -
ponto imal ou carta e (Ou E) com um expoente inteiro assinado (mas no ambos)
pode ser omitir-
Ted. Estas regras permitem convencionais e cientficas (expoente) notaes.

Negativo constantes flutuantes so tomadas como constantes positivas com um operador


unrio
menos (-) como prefixo.

A mik roC PRO para PIC limites constantes de ponto flutuante para o intervalo
1,17549435082 * 10-38 .. 6,80564774407 * 1038.

Aqui esto alguns exemplos:

0. // = 0.0
-1.23 // = -1.23
23.45e6 // = 23.45 * 10 ^ 6
2e-5 // = 2.0 * 10 ^ -5
3E +10 // = 3.0 * 10 ^ 10
0,09 E34 // = 0.09 * 10 ^ 34

A mik roC PRO para PIC de ponto flutuante constantes so do tipo casal. Note-se que
o mik roC PRO PIC para a implementao de ANSI Standard considera flutuar e
dupla (Juntamente com a long double variante) para ser do mesmo tipo.

150 Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Constantes de caracteres

Um personagem constante um ou mais caracteres entre aspas simples, como


'A', '+', ou '\ N'. No mikroC PRO para PIC, constantes de caractere nico
so
da unsigned int tipo. constantes Multi caracteres so referidos como con-corda
balces de ou literais de cadeia. Para obter mais informaes referem-se a String Constantes.

Sequncias de Escape

Uma barra invertida (\) usada para introduzir uma seqncia de escape, que permite uma
representao visual de certos caracteres no grficos. Uma das mais comuns
constantes de escape o caractere de nova linha (\ n).
Uma barra invertida usada com nmeros em octal ou hexadecimal para representar um
smbolo ASCII
ou controle de cdigo correspondente a esse valor, por exemplo, '\ X3F' para a questo
marca. Qualquer valor dentro dos limites legais para o tipo de dados char (0 para 0xFF para o
mik roC PRO
para PIC) pode ser usado. Nmeros maiores ir gerar o erro do compilador"Fora de alcance".
Por exempl o, o nmer o octal \ 777 maior do que o valor mxi mo permiti d o (\ 377)
e ir gerar um erro. O primeiro caractere nonoctal ou no hexadecimais encontrados
em uma seqncia de escape octal ou hexadecimal marca o fim da seqncia.

Nota: Voc deve usar a seqncia \ \ para representar uma barra invertida ASCII, como
usado em
caminhos do sistema operacional.

A tabela a seguir mostra as seqncias de escape disponveis:

Seqncia Valor Char Descrio


\ A 0x07 BEL sinal audvel
\ B 0x08 BS Retrocesso
\ F 0x0C FF Formfeed
\ N 0x0A LF Newline (Avano de linha)
\ R 0x0D CR Retorno de carro
\ T 0x09 HT Tab (horizontal)
\ V 0x0B VT Vertical Tab
\ \ 0x5C \ Backslash
\ ' 0x27 aspas simples (apstrofo)
\ " 0x22 '' Aspas duplas
\? 0x3F ? Ponto de interrogao
\ O qualquer S = string de at 3 dgitos octais
\ XH qualquer H = seqncia de dgitos hexadecimais
\ XH qualquer H = seqncia de dgitos hexadecimais
Mikr
oelektronika - Solues de software e hardware para o mundo embutido
151
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Desambiguao

Algumas situaes ambguas podem surgir quando se utiliza seqncias de escape.

Aqui est um exemplo:

Lcd_Out_Cp ("\ x091.0 Intro");

Este destina- s e a ser interpr etad a como \ X09 e "Intro 1.0". No entant o, o mikroC
PRO PIC para compila-lo como o nmero hexadecimal \ X091 e literal de cadeia "0,0
Intro ". Para evitar tais problemas, podemos reescrever o cdigo da seguinte forma:

Lcd_Out_Cp ("\ X09", "1.0 Introduo");

Para obter mais informaes sobre a linha anterior, referem-se a String Constantes.

Ambigidades tambm pode ocorrer se uma seqncia de escape octal seguido por um
nonoctal
dgitos. Por exemplo, as seguintes constantes:

"\ 118"

seria interpretado como um de dois caracteres constante composta dos personagens \ 11 e


8, porque 8 no um dgito octal legal.

String Constantes

constantes da corda, tambm conhecido como literais string, so um tipo especial de


constantes que
armazenar seqncias fixas de caracteres. Uma seqncia literal uma seqncia de qualquer
nmero de
caracteres entre aspas duplas:

"Esta uma string."

A string nula, ou string vazia, escrito como "". Uma seqncia literal armazenada
internamente
como uma determinada seqncia de caracteres mais um caractere nulo final. Uma seqncia
de caracteres nula armazenado
como um nico caractere nulo.

Os caracteres entre aspas pode incluir seqncias de escape. Este cdigo,


por exemplo:

"\ T \" Nome \ "\ \ \ tAddress \ n \ n"

impresses como isso:

"Nome" \ Endereo
152 Mikroelektronika - Solues de software e hardware para o mundo embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

O "nome" precedido por dois guias, o endereo precedido por um guia. A linha
seguido por duas novas linhas. A \ " fornece interior aspas. A fuga
seqncia de caracteres \ \ traduzida em \ pelo compilador.

literais string adjacentes separados apenas por espa os em branco so concatenados durante
o
anlise de fase. Por exemplo:

"Este " apenas "


"Um exemplo".

equivalente a

"Este apenas um exemplo."

Continuao de linha com Backslash

Voc pode tambm usar a barra invertida (\) como um caractere de continuao de estender
uma string
constante atravs das fronteiras linha:

"Isso realmente \
uma seqncia de caracteres de uma linha. "

Enumerao Constantes

constantes de enumerao so identificadores definidos no enum declaraes do tipo. A identi-


verificadores so normalmente escolhido como mnemnicos de contribuir para a legibilidade.
Enumerao con-
so de balces de int tipo. Eles podem ser usados em qualquer expresso, onde constantes
inteiro
so vlidos.

Por exemplo:

enum semana {dom = 0, Seg, Ter, Qua, Qui, Sex, Sab};

A identificadores (inquiridores) utilizados devem ser exclusivos dentro do escopo do enum dec-
vai fazendo. inicializadores negativas so permitidas. Veja Enumeraes para obter detalhes
sobre enum
declaraes.

Mikr
oele
ktro
nika
-
Soft
ware
e
Solu
es
de
hardware para Embedded World

153
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Constantes ponteiro

Um ponteiro ou apontado no objeto pode ser declarados com o modificador const. Qualquer
coisa
declarados como const no podem alterar seu valor. Tambm ilegal a criao de um ponteiro
que
pode violar um cedvel no do objeto constante.

Considere os seguintes exemplos:

int i; // i um int
int * Pi; // pi um ponteiro para int (no inicializado)
int * const cp = &I; // cp um ponteiro constante para int
int const c i = 7; // A CI uma constante int
int const * PCI; // PCI um ponteiro para int constante
int const * const cpc = &ci; / / CCP um ponteiro constante para um
/ / Int constante

As seguintes atribuies legais:

i = IC; // Atribuir-const int para int


* Cp = ci; // Atribuir-const int
// objeto de pontas-de-por-um-const-ponteiro
+ + PCI; // Incrementar um ponteiro-para-const
pci = cpc; // Atribuir um const-ponteir o-para-a-const a u m
// pointer-para-const

Os seguintes atribuies so ilegais:

ci = 0; // NO - no pode atribuir a um const int


ci -; // NO - no pode mudar um const int
* Pci = 3; // NO - no pode atribuir a um objeto
// apontou para pelo ponteiro para const.
cp = &ci; // NO - no pode atribuir a um ponteiro const,
// ainda que o valor no sofrer alteraes.
cpc + +; // NO - const mudana cant-ponteiro
pi = PCI; // NO - se essa atribuio era permitido,
// voc seria capaz de atribuir a * pci
// (Um valor constante), atribuindo a * pi.

Regras similares so applayed ao volteis modificador. Note-se que ambos os const e


volteis pode aparecer como modificadores para o mesmo identificador.

154 Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Expresses constantes

Um expresses constantes podem ser avaliados durante a traduo, sim, que a execuo e
conformidade pode ser usado em qualquer lugar que pode ser uma constante.

Expresses constantes pode consistir apenas no seguinte:

- literais,
- constantes de enumerao,
- simples constantes (sem matrizes constantes ou estruturas),
- sizeof operadores.

Expresses constantes no podem conter nenhum dos seguintes operadores, a menos que o
Os operadores esto contidos no operando de uma sizeof operador: atribuio,
decremento, vrgula, chamada de funo, de incremento.

Cada expresso constante pode ser avaliada como uma constante que est na faixa de repre-
valores sentable para seu tipo.

expresso constante pode ser usado em qualquer uma constante legal.

Mikroelektronika - Solues de software e hardware para o mundo embutido 155


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

PALAVRAS-CHAVE

Palavras-chave so palavras reservadas para fins especiais e no deve ser usado como
normal
identificador de nomes.
Alm de palavras-chave C padro, todos os SFR relevantes so definidos como variveis
globais e
representam palavras reservadas que no pode ser redefinido (por exemplo: TMR0, PCL etc.)
Sondar o Assistente de cdigo para letras especficas (Ctrl + Espao no Editor) ou consulte a
pr-
definidos e constantes globais.

Aqui est um alfabtica lista de palavras-chave em C:

- asm
- auto
- quebrar
- caso
- char
- const
- continuar
- padro
- fazer
- dupla
- mais
- enum
- extern
- flutuar
- para
- goto
- se
- int
- tempo
- Registre-se
- retorno
- curto
- assinado
- sizeof
- estticas
- struct
- switch
- typedef
- Unio
- no assinado
- vazio
- volteis
- enquanto

Alm disso, o mik roC PRO para PIC inclui um nmero de identificadores predefinidos utilizados
em
bibliotecas. Voc pode substitu-los por suas prprias definies, se voc quer desenvolver sua
prprias bibliotecas. Para obter mais informaes, consulte mikroC PRO PIC para Bibliotecas.
Mikroelektro nika - SOFTWARESOFTWAREHARDWAREHA RDWA RE SOLUTIONSEMBEDDEDE MBEDDED MUNDO

156 - E E SOLUES PARA PARA O MUNDO


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

IDENTIFICADORES

Identificadores so nomes arbitrrios com um determinado comprimento de funes, variveis


simblicas
constantes, user-defined tipos de dados e rtulos. Todos estes elementos do programa ser
designado objetos toda a ajuda (no se confunda com o significado de
objeto em programao orientada a objetos).

Os identificadores podem conter as letras de A a Z e A a Z, caractere"_", E


dgitos 0-9. A nica restrio que o primeiro caractere deve ser uma letra ou um
sublinhado.

Caso sensibilidade

A mik roC PRO para PIC identificadores no so sensveis ao caso por padro, de modo que
Soma, suma,
e soma representam um equivalente identificador. sensibilidade processo pode ser ativado ou
sus-
pendido na janela Configuraes de sada. Mesmo entre maisculas e minsculas desligado
Palavras-chave
permanecem maisculas e minsculas e devem ser escritas em minsculas.

Singularidade e mbito

Embora os nomes de identificador so arbitrrios (de acordo com as regras descritas), se o


mesmo
nome usado por mais de um identificador dentro do mesmo escopo ea partilha do
espao de mesmo nome, ento o erro surge. nomes duplicados so legais para nome diferente
espaos, independentemente das regras de escopo. Para obter mais informaes sobre o
escopo, consulte Escopo
e visibilidade.

Exemplos Identifier

Aqui esto alguns identificadores vlidos:

temperature_V1
Presso
no_hit
dat2string
SUM3
_vtext

... e aqui esto alguns identificadores invlidos:

7temp / / NO - no pode comear com um numeral


% Maior / / NO - no pode conter caracteres especiais
int / / NO - no pode jogo palavra reservada
j23.07.04 / / NO - no pode conter caracteres especiais (ponto)
Mikroelektronika - Solues de software e hardware para o mundo embutido
157
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Pontuadores
A mik roC PRO para PIC pontuadores (tambm conhecido como separadores) so:

- [] - Suportes
- () - Parnteses
- {} - Suspensrios
- ,- Vrgula
- ;- Ponto e vrgula
- :- Clon
- *- Asterisco
- =- sinal de igual
- #- sinal de libra

A maioria destes pontuadores tambm funcionam como operadores.

Suportes
Suportes [] subscritos indicam nica matriz e multidimensional:

char ch, str [] = "mikro";

int mat [3] [4]; / * 3 x 4 * matriz /


CH = str [3]; / * Elemento 4 /

Parnteses
Parnteses () so usados para agrupar expresses, isolar expresses condicionais,
e indicam as chamadas de funo e os parmetros de funo:

d = c * (A + b); / * Substituir * precedncia normal /

if (d == z) + + x; / * * Essencial com instruo condicional /


func (); / * Chamada da funo, no args * /
void func2 (int n); / * Declarao de uma funo com parmetros * /

Parnteses so recomendado nas definies macro para evitar potenciais precedncia


problemas durante a expanso:

# Define CUBE (x) ((x) * (x) (x))

Para obter mais informaes, consulte Operadores Precedncia e associatividade e Expres-


ses.

158 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Suspensrios

Suspensrios {} indicar o incio e fim de um comando composto:

if (d == z) {
+ + X;
func ();
}

Fechamento da chave serve como um terminador para o comando composto, ento um ponto e
vrgula
no exigida aps }, Exceto em declaraes estrutura. s vezes, o ponto e vrgula
pode ser ilegal, como no

if (declarao)
{... }; / * Ponto-evrgula ilegal! * /
mais
{... };

Para obter mais informaes, consulte a instrues compostas.

Vrgula

Vrgula (,) separa os elementos de uma lista de argumentos da funo:

void (int n, float f pc, char) func;

Vrgula tambm usado como um operador em expresses vrgula. Misturando dois usos da
vrgula legal, mas voc deve usar parnteses para distingui-los. Note-se que (exp1,
exp2) evalutates ambos, mas igual para o segundo:

funo (i, j); chamada * / funo com dois argumentos * /


func ((exp1, exp2), (exp3, EXP4, exp5)) / * tambm chamadas de funes com duas
args! * /

Ponto e vrgula

Vrgula (;) um terminador de instruo. Qualquer expresso C legal (incluindo o vazio


expresso), seguido por um ponto e vrgula interpretado como uma declarao, conhecida
como
expresso comunicado. A expresso avaliada e seu valor descartado. Se o
declarao de expresso no tem efeitos secundrios, a mik roC PRO para PIC pode ignor-la.

a + b; / * Avaliar a + b, mas descarta valor * /


+ + A; / * O efeito de lado em um, mas descarta valor de + + a * /
; / * Expresso vazia, ou um comando nulo * /

Mikroelektronika - Solues de software e hardware para o mundo embutido 159


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Semicolons s vezes so usados para criar uma declarao vazia:

for (i = 0; i <n, i + +);

Para obter mais informaes, consulte Demonstraes.

Clon

Use dois pontos (:) para indicar a instruo rotulada:

start: x = 0;
...
goto incio;

As etiquetas so discutidos nas declaraes identificadas.

Asterisk (Declarao Ponteiro)

Asterisco (*) em uma declarao de varivel indica a criao de um ponteiro para um tipo:

char_ptr char *; / * Um ponteiro para char declarada * /

Ponteiros com vrios nveis de engano pode ser declarada por indicao de um pertinente
nmero de asteriscos:

int ** int_ptr; / * Um ponteiro para um array de inteiros * /


double_ptr *** duplo; / * Um ponteiro para uma matriz de duplas * /

Voc tambm pode usar o asterisco como um operador, quer dereference um ponteiro ou como
mul-
operador tiplication:

i * = int_ptr;
a = b * 3,14;

Para obter mais informaes, consulte os ponteiros.

Cadastre-se igual

160 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Igualdade de sinal (=) separa as declaraes de variveis da lista de inicializao:

int teste [5] = {1, 2, 3, 4, 5};


int x = 5;

sinal de igual usado tambm como um operador de atribuio em expresses:

int a, b, c;
a = b + c;

Para obter mais informaes, consulte Operadores de Atribuio.

Cadastre Libra (Directiva Preprocessor)

Libra sinal (#) indica uma directiva de pr-processamento, quando ele ocorre como o primeiro
no-
caracteres em branco em uma linha. Significa uma ao compilador, no necessariamente
asso-
ciado com uma gerao de cdigo. Veja as directivas do pr-processador para obter mais infor-
o.

# e # # tambm so utilizados como operadores para realizar a substituio de tokens e


fundindo-dur
o do pr-processador de digitalizao de fase. Veja os Operadores Preprocessor.

Mikroelektronika - Solues de software e hardware para o mundo embutido 161


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

CONCEITOS

Esta seo aborda alguns conceitos bsicos da linguagem, essencial para a compreenso
de como funcionam os programas de C. Em primeiro lugar, precisamos estabelecer os
seguintes termos que sero
utilizados em toda a ajuda:

- Objetos e lvalues
- Escopo e visibilidade
- Espaos de nome
- Durao

Objetos

Um objeto uma regio especfica da memria que podem armazenar um valor fixo ou varivel
(ou
conjunto de valores). Esse uso de um termo objeto diferente de um mesmo termo, utilizado
em
linguagens orientadas a objeto, que mais geral. Nosso definiton da palavra seria
englobam funes, variveis, constantes simblicas, tipos de dados definidos pelo usurio, e
etiquetas.

Cada valor tem um nome associado e tipo (tambm conhecido como um tipo de dados). A
nome usado para acessar o objeto e pode ser um identificador simples ou complexas expres -
Sion que se refere exclusivamente o objeto.

Objetos e declaraes

Declaraes necessrio estabelecer um mapeamento entre identificadores e objetos. Cada


declarao associa um identificador com um tipo de dados.

Associando os identificadores de objetos requer que cada identificador de ter pelo menos dois
attrib-
nutos: classe de armazenamento e tipo (por vezes referido como o tipo de dados). A mik roC
PRO
para PIC compilador deduz destes atributos a partir de declaraes implcitas ou explcitas no
cdigo-fonte. Normalmente, apenas o tipo especificado explicitamente a classe de
armazenamento e espe-
ifier assume o auto valor automtico.

De um modo geral, um identificador no possa ser legalmente utilizado em um programa antes


de sua dec-
ponto vai fazendo no cdigo-fonte. excepes a esta regra legal (conhecido como ref
progressistas
erences) so os rtulos, as chamadas para funes no declarado, e struct ou tags unio.
A gama de objetos que podem ser declaradas inclui:

- Variveis
- Funes
- Tipos
- Matrizes de outros tipos
- Estrutura, unio e tags enumerao

162 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

- membros da estrutura
- membros da Unio
- constantes Enumerao
- Declarao de rtulos
- Preprocessor macros

A natureza recursiva da sintaxe declarator permite declarators complexo. Voc


provavelmente vai querer usar typedefs para melhorar a legibilidade se construir objetos
complexos.

Lvalues

Lvalue um objeto locator: uma expresso que designa um objeto. Um exemplo de


lvalue expresso * P, onde P qualquer expresso que avalia um ponteiro no nulo.
A modificveis lvalue um identificador ou uma expresso que diz respeito a um objeto que
pode ser
acessados e mudou legalmente na memria. Um ponteiro const para uma constante, por exem -
plo, no um lvalue modificveis. Um ponteiro para uma constante pode ser alterado (mas seu
deref-
valor referenciadas no podem).

Historicamente, eu defendia "Esquerda", o que significa que lvalue poderiam legalmente ficar
sobre a esquerda (a
recebimento final) de uma instruo de atribuio. Agora s lvalues modificvel e jurdico-
ly ficar esquerda de um operador de atribuio. Por exemplo, se a e b so NonCon-
identificadores inteiro constante com armazenamento de memria corretamente alocados, eles
so ambos os mod-
lvalues ifiable e atribuies, como a = 1 e b = a + b so legais.

Rvalues

A expresso a + b no lvalue: a + b = a ilegal porque a expresso


esquerda no est relacionado a um objeto. Tais expresses so s vezes chamados rval-
ues (Abreviao de valores direita).

Mikr
oele
ktro
nika
-
Solu
es
de
soft
ware
e
hard
ware
para
o
mun
do
emb
utido

163
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Escopo e visibilidade

mbito

O escopo de um identificador uma parte do programa no qual o identificador pode ser usado
para acessar o seu objeto. Existem diferentes categorias de escopo: bloco (ou local), fun-
o, prottipo da funo, e arquivo. Estas categorias dependem de como e onde iden-
tifiers so declaradas.

Bloco: O escopo de um identificador com o bloco (ou local) comea no mbito


declarao
ciando e termina no final do bloco que contm a declarao (bloco de tais
conhecido como o bloco de incluso). declaraes dos parmetros com uma definio de
funo
o tambm tem escopo de bloco, limitado ao mbito de aplicao do corpo da funo.
Arquivo: Arquivo identificadores de escopo, tambm conhecido como globais, so
declaradas fora de todas as
blocos, o seu mbito , do ponto de declarao para o fim do arquivo de origem.
Funo: Os identificadores apenas de alcance funo so rtulos de instruo. Label
nomes podem ser usados com as declaraes goto lugar na funo em que o
rtulo declarada. Rtulos so declarados implicitamente por escrito LABEL_NAME: fol
seguidos por um comunicado. Rtulo nomes devem ser exclusivos dentro de uma funo.
Funo prottipo: identificadores declarados na lista de declaraes de parmetro
em um prottipo de funo (e no como parte de uma definio de funo) tm uma funo
de pro
ToType escopo. Este escopo termina no final do prottipo da funo.

Visibilidade

A visibilidade de um identificador uma regio do cdigo fonte do programa a partir do qual um


identificador associado objeto pode ser acessado legalmente.

Alcance e visibilidade geralmente coincidem, mas h circunstncias em que


um objeto se torna temporariamente ocultas pelo aparecimento de uma segunda via do
identificador:
o objeto ainda existe, mas o identificador original no pode ser usado para acess-lo at o
mbito da segunda via do identificador termina.

Tecnicamente, a visibilidade no pode ultrapassar o mbito de aplicao, mas pode ultrapassar


um escopo de visibilidade. Veja
o seguinte exemplo:

vazio f (int i) {
int j; / Auto / por padro
j = 3; / / Int i e j esto no escopo e visvel

{ / Block nested
dupla j; / / J o nome local no bloco aninhado
j = 0,1; / / I e j dupla so visveis;
/ / Int j = 3, em abrangncia, mas oculto
}

164 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem
/ / Sada dupla j de alcance
j + = 1; / / Int j visvel e = 4
}
/ / I e j so ambos fora de alcance

Espaos de nome

espao de nomes um escopo dentro do qual um identificador deve ser nico. A mik roC PRO
para PIC utiliza quatro categorias distintas de identificadores:

1. goto nomes de rtulo - deve ser exclusivo dentro da funo em que se encontram
declarou.
2. Estrutura, unio e enumerao marcas - deve ser exclusivo dentro do bloco no
que eles so definidos. Tags declarada fora de qualquer funo deve ser exclusivo.
3. Estrutura e nomes de membros da Unio - deve ser exclusivo dentro da estrutura ou
Unio, nos quais eles so definidos. No h nenhuma restrio sobre o tipo ou
deslocamento de
membros com o nome do membro mesmo em diferentes estruturas.
4. Variveis, typedefs, funes e membros de enumerao - deve ser nico, com
no mbito em que eles so definidos. Externamente identificadores devem ser declaradas
nica entre as variveis declaradas no exterior.

nomes duplicados so legais para espaos de nomes diferentes, independentemente das


regras de escopo.

Por exemplo:

int azul = 73;

{ / / Abrir um bloco de
enum {cores preto, vermelho, verde, violeta, azul, branco c};
/ Azul = 3 * enumerador agora esconde declarao externa de azul * / int

struct {cores int i, j;}; / / ILEGAL: cores duplicadas tag


dupla vermelho = 2; / / Ilegal: redefinio de vermelho
}

azul = 37; / / Volta no mbito int azul

Durao

Dura o, estreitam e nte relacionad o com uma classe de armaz ena m ento, define um perodo em
que o declar ado iden-
tifiers tm real, objetos fsicos alocados na memria. Ns tambm distinguir entre com -
tempo de bate-estacas e objetos em tempo de execuo. Variveis, por exemplo, ao contrrio
typedefs e tipos, tm real
memria alocada em tempo de execuo. Existem dois tipos de durao: estticas e local.
Mikr
oele
ktro
nika - Solues de software e hardware para o mundo embutido

165
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Static Durao

A memria alocada para objetos com durao de esttica, logo que a execuo sub-
forma, esta alocao de armazenamento dura at que o programa termina. durao esttica
objetos reside normalmente em dados fixos segmentos alocados de acordo com a memria
especificador em vigor. Todos os globals tm durao esttica. Todas as funes, sempre que
definidos,
so objectos com durao esttica. Outras variveis podem ser dadas durao estticos
usando
o explcito estticas ou extern armazenamento especificadores de classe.

Na mik roC PRO para PIC, objetos durao estticos so no inicializado para zero (ou nulo)
na ausncia de qualquer inicializador explcito.

No misture com durao esttica arquivo ou escopo global. Um objeto pode ter durao
esttica
e mbito local - veja o exemplo abaixo.

Local Durao

objetos durao locais tambm so conhecidos como automtica objetos. Eles so criados no
pilha (ou num registo), quando um bloco de incluso ou de uma funo inserida. Eles so
desalocado quando o programa sai que bloco ou funo. Local objetos durao
deve ser explicitamente inicializado, caso contrrio, seu contedo imprevisvel.
O especifi c ador de classe de armaz enam ento auto pode ser usado na declar a o de varivei s
locais dura o, mas
geralmente redundante, pois auto padro para as variveis declaradas dentro de um bloco.

Um objeto com durao locais tambm tm um alcance local, porque no existe fora
do seu bloco de incluso. Por outro lado, um objeto de mbito local pode tem esttica dura-
o. Por exemplo:

vazio f () {
/ * Varivel durao locais; init uma sobre cada chamada para f * /
int a = 1;
/ * A varivel de durao esttica; b init apenas em primeira convocao para f * /
static int b = 1;
/ * Checkpoint! * /
a + +;
b + +;
}

vazio main () {
/ * No posto, vamos ter: * /
f (); / / A = 1, b = 1 , aps primeira chamada,
f (); / / a / b = 1 = 2, aps segunda chamada,
f (); / / a / b = 1 = 3, aps terceira chamada,
/ / Etc
}
166
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

TIPOS

A mik roC PRO para PIC uma linguagem estritamente digitado, o que significa que cada
objeto,
funo, e expresso deve ter um tipo estritamente definido, conhecido no tempo de com -
compilao. Note-se que o mik roC PRO para PIC funciona exclusivamente com tipos
numricos.

O tipo serve:

para determinar a alocao de memria correto exigido inicialmente.


para interpretar o bit padres encontrados no objeto durante o acesso posterior.
em muitas situaes de verificao de tipo, para garantir que as atribuies ilegais so
presos.

A mik roC PRO para PIC suporta o padro muitos (pr) e definidas pelo usurio
tipos de dados, inclusive assinado e sem assinatura inteiros de vrios tamanhos, de ponto
flutuante
nmeros com preciso vrias matrizes, estruturas e unies. Alm disso, o ponto
dores para a maioria destes objetos podem ser criados e manipulados na memria.

O tipo determina a quantidade de memria alocado para um objeto e como a pr-


grama ir interpretar os padres de bits encontrada na alocao do objeto de armazenamento.
Um dado
tipo de dados pode ser visto como um conjunto de valores (muitas vezes dependente da
implementao), que
identificadores do mesmo tipo podem assumir, juntamente com um conjunto de operaes
permitidas com
esses valores. O operador em tempo de compilao sizeof permite determinar o tamanho
em bytes de qualquer padro ou tipo definido pelo usurio.

A mik roC PRO para PIC bibliotecas-padro e seu prprio programa e os arquivos devem
fornecer identificadores inequvoca (ou expresses derivadas deles) e os tipos de modo que a
mik roC PRO para PIC pode sempre acessar, interpretar, e (possivelmente) mudar o padro de
bits
nhece na memria correspondente a cada objeto ativo em seu programa.

Tipo Categorias

Um comum maneira de categorizar os tipos dividi-los em:

- Fundamental
- Derivada

Os tipos fudamental representam tipos que no podem ser divididas em partes menores. Eles
so
por vezes referido como no estrutur a dos tipos. Os tipos fundam e ntais so void, char,
int, float, e casal, juntamente com curtas, longas, assinado e no assinado vari-
formigas de alguns deles. Para obter mais informaes sobre os tipos fundamentais, consulte o
tpico Fun-
Tipos fundamentais.
Os tipos derivados tambm so conhecidos como estruturado tipos e incluem ponteiros para
outros tipos, arrays de outros tipos, tipos de funes, estruturas e sindicatos. Para obter mais
informaes sobre os tipos de derivados, consulte o tpico tipos derivados.

Mikroelektronika - Solues de software e hardware para o mundo embutido 167


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Tipos Fundamentais

Os tipos fudamental representam tipos que no podem ser divididos em elementos mais
bsicos,
mentos, e so o modelo de representao de dados elementares sobre o nvel da mquina. A
tipos fudamental so muitas vezes referidos como tipos no-estruturados, e so utilizados
como
na criao de elementos mais complexos tipos derivados ou definida pelo usurio.

Os tipos fundamentais incluem:

-Aritmtica Tipos
- Enumeraes
- Tipo Void

Aritmtica Tipos

Os especifi c ad or es de tipo aritmti c os so constr ud os a partir de palavr as -c h av e: void, char,


int, float e casal, juntamente com os prefixos curtas, longas, assinado e
no assinado. A partir dessas palavras-chave pode criar dois tipos integral e de ponto
flutuante.

Tipos Integral

Os tipos char e int, juntamente com suas variantes, so considerados como parte
integrante
tipos de dados. As variantes so criados usando um dos modificadores de prefixo curtos,
longos,
assinado e no assinado.

Na tabela abaixo uma viso geral dos tipos integrais - Palavras-chave entre parnteses
pode ser (e so muitas vezes) omitido.

Os modificadores assinado e no assinado pode ser aplicado tanto char e int. Na


ausncia do prefixo unsigned, assinada automaticamente assumida por tipos integrais.
A nica exce o char, que no assinado por padr o. As palavr as -c h av e assinado
e sem assinatura, quando usado por si s, significa assinado int e unsigned int,
, respectivamente.

Os modifi c ador es curto e tempo s pode ser aplicada a int. As palavras-chave curto
e de comprimento, utilizada por conta prpria, quer dizer short int e int tempo,
respectivamente.

168
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Tipo Tamanho em Faixa


(No assinado) char Bytes 1 0 .. 255
assinado char 1 - 128 .. 127
(Assinado) (int) short 1 - 128 .. 127
unsigned short (int) 1 0 .. 255
(Assinado) int 2 -32768 .. 32767
unsigned (int) 2 0 .. 65535
(Assinado) (int) de 4 -2147483 648 .. 2147483 647
comprimento
unsigned long (int) 4 0 .. 4294967295

Tipos de ponto flutuante

Os tipos flutuar e casal, juntamente com o long double variante, so consi-


siderada tipos de ponto flutuante. A mik roC PRO PIC para a implementao de um
Padro ANSI considera que todas so do mesmo tipo.

ponto flutuante na mik roC PRO para PIC implementado usando o AN575 Microchip
32-bit do formato (IEEE 754 complacente).

Uma viso geral do ponto flutuante tipos mostrada na tabela abaixo:

Tipo Tamanho em Bytes Faixa

flutuar 4 -1,5 * 1045 .. +3.4 * 1038

dupla 4 -1,5 * 1045 .. +3.4 * 1038

long double 4 -1,5 * 1045 .. +3.4 * 1038

Mikroelektronika - Solues de software e hardware para o mundo embutido 169


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Enumeraes

Uma enumerao tipo de dados usado para representar um discreto, abstrata conjunto de
val-
ues com as devidas nomes simblicos.

Enumerao Declarao

Enumerao declarado assim:

enum tag {lista de enumerao-};

Aqui, tag um nome opcional da enumerao; enumerao de-lista uma vrgula


delimitado lista de valores discretos, os entrevistadores (ou enumerao constantes). Cada
enu-
merator atribudo um valor fixo integral. Na ausncia de explcita inicializadores, o
enumerador primeiro definido como zero, eo valor de cada enumerador sucesso definido
ao valor de seu antecessor, acrescido de um.

Variveis da enum tipo so declaradas as mesmas variveis de qualquer outro tipo. Para
exemplo, a seguinte declarao:

enum {cores preto, vermelho, verde, violeta, azul, branco c};

estabelece um nico tipo integral, enum cores, varivel c deste tipo, e um conjunto de
enumeradores com valores inteiros constantes (preto = 0, vermelho = 1, ...). Na mik roC PRO
para a PIC, uma varivel de um tipo enumerado pode ser atribudo qualquer valor do tipo int
- alm da no verificao de tipo que imposta. Isto :

c = vermelh o; / / OK
c = 1; / / Ainda bem, significa o mesmo

Com explcita inicializadores integral, voc pode definir um ou mais entrevistadores, especficas
valores. O inicializador pode ser qualquer expresso que produz um nmero inteiro positivo ou
negativo
valor (aps promoes inteiro possvel). Quaisquer nomes subseqentes sem inicializadores
vai ser aumentada por um. Estes valores so geralmente nicas, mas as duplicatas so legais.

A ordem de constantes podem ser explicitamente re-arranjadas. Por exemplo:

enum {cores preto, // valor 0


vermelho, // valor 1
verde, // valor 2
azul = 6, // valor 6
violeta, // valor 7
branco = 4}; // valor 4

170 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

expresso inicializador pode incluir entrevistadores previamente declarado. Por exemplo, em


a seguinte declarao:

enum memory_sizes bit = {1, nibble = 4 bits *, byte = 2 * mordidela,


kilobyte = 1024 bytes *};

nibble adquiriria o valor 4, o valor de 8 bytes e kilobytes o valor 8192.

Anomous Tipo Enum

Em nossa declarao anterior, o identificador cores uma tag opcional que a enumerao
pode ser usado em declaraes posteriores de variveis enumerao dos enum col-
ors Tipo:

enum cores bg, fronteiras; / * Declarar variveis e bg * fronteira

Como com struct e declaraes unio, voc pode omitir a marca se no houver outras variveis
do presente enum tipo so necessrios:

/ * Tipo enum Annimo: * /


enum {preto, vermelho, ve rde, violeta, azul , branco cor};

Enumerao mbito

tags Enumerao compartilhar o espao de mesmo nome de marcas de estrutura e unio. Enu-
merators compartilhar o mesmo espao de nomes como identificadores de variveis comuns:

int azul = 73;

{/ / abrir um bloco de
enum {cores preto, vermelho, verde, violeta, azul, branco c};
/ Azul = 3 * enumerador agora esconde declarao externa de azul * / int

struct {cores int i, j;}; / / ILEGAL: cores duplicadas tag


dupla vermelho = 2; / / ILEGAL: redefinio de vermelho
}

azul = 37; / / Volta no mbito int azul

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo 171


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Tipo Void

vazio um tipo especial indicando o ausncia de qualquer valor. No h objetos de


vazio, ao contrrio, vazio utilizada para obter os tipos mais complexos.

Void Funes

Use o vazio palavra-chave como um tipo de retorno da funo se a funo no retorna um


valor.

vazio print_temp (char temp) {


Lcd_Out_Cp ("Temperatura:");
Lcd_Out_Cp (temp);
Lcd_Chr_Cp (223); / personagem / graus
Lcd_Chr_Cp ('C');
}

Use vazio como uma funo de posio se a funo no tem parmetros. Alter-
nativamente, voc pode escrever apenas parnteses vazios:

main (void) {/ / mesmo que main ()


...
}

Genricos Ponteiros

Ponteiros podem ser declarados como vazio, o que significa que eles podem apontar para
qualquer tipo.
Esses ponteiros so chamados genricas.

172 Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Tipos derivados

Os tipos derivados tambm so conhecidos como tipos estruturados. Eles so usados como
elementos
na criao de mais complexos tipos definidos pelo usurio.

Os tipos derivados incluem:

- matrizes
- ponteiros
- estruturas
- sindicatos

Matrizes

Matriz a mais simples e mais comumente usado tipo estruturado. Uma varivel de matriz
tipo na verdade um array de objetos do mesmo tipo. Estes objectos representam ele-
mentos de uma matriz e so identificados por sua posio na matriz. Uma matriz consiste em
uma
regio contgua de armazenamento exatamente grande o suficiente para armazenar todos os
seus elementos.

Declarao Array

declarao de matriz semelhante declarao de varivel, com os suportes adicionado aps


identificador:

Array_Name tipo de expresso [constante]

Isso declara uma matriz denominada Array_Name e composto de elementos de tipo. A


tipo pode ser qualqu er tipo escalar (excepto void), enumerao tipo definido pelo
usurio, o ponteiro , ou
outra matriz. Resultado da expresso constante dentro dos colchetes determina um nmero
de elementos na matriz. Se uma expresso dada em um declarator matriz, ele deve avaliar a
um
constante inteira positiva. O valor um nmero de elementos em uma matriz.

Cada um dos elementos de um array indexado de 0 ao nmero de elementos menos


um. Se um nmero de element os n, os elementos de matriz podem ser abordadas como
variveis
Array_Name [0] .. [N-1] Array_Name de tipo.

Aqui esto alguns exemplos de declarao de matriz:

# Define MAX = 50
int vector_one [10] / * declara um array de 10 inteiros * /
flutuar vector_two [MAX]; / * declara uma matriz de 50 carros alegricos * /
flutuar vector_three [MAX - 20] / * declara uma matriz de 30 carros alegricos * /
Mikroelektronika - Solues de software e hardware para o mundo embutido

173
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Inicializao de matriz

Uma matriz pode ser inicializada na declarao, atribuindo-lhe um delimitado por vrgula
seqncia de valores dentro de chaves. Ao inicializar uma matriz na declarao, poder
omitir o nmero de elementos - ser determinada automaticamente de acordo com a
nmero de elementos atribudos. Por exemplo:

/ * Declare uma matriz que contm o nmero de dias de cada ms: * /


int dia [12] = {} 31,28,31,30,31,30,31,31,30,31,30,31;

/ * Esta declarao idntico ao anterior * /


int dias [] = {} 31,28,31,30,31,30,31,31,30,31,30,31;

Se voc especificar os valores de comprimento e de partida, o nmero de valores de partida


deve
no pode exceder o comprimento especificado. A oposto possvel, neste caso, o arrasto
"Excesso" elementos sero atribudos a alguns valores de tempo de execuo encontradas a
partir de mem-
teoria.

No caso da matriz de char, voc pode usar um menor seqncia literal notao. Por exemplo:

/ * As duas declaraes so idnticas: * /


const char msg1 [] = {'T', 'E', 's', 't', '\ 0'};
const char msg2 [] = "Teste";

Para obter mais informaes sobre os literais cadeia de caracteres, consulte a String
Constantes.

n Expresses Matrizes

Quando o nome de uma matriz aparece na avaliao da expresso (excepto com a pera-
res & e sizeof), convertido implicitamente para o ponteiro que aponta para a
primeira matriz
elemento. Veja matrizes e ponteiros para mais informaes.

Arrays multi-dimensionais

Uma matriz unidimensional, se for do tipo escalar. arrays unidimensionais so algumas-


vezes referido como vetores.

Matrizes multidimensionais so construdos por declarar arrays de tipo de matriz. Estes


matrizes so armazenadas na memria de tal maneira que as mudanas mais direita
subscrito
mais rpido, ou seja, as matrizes so armazenadas "Em linhas". Aqui est um exemplo de
matriz de 2 dimenses:

flutuar m [50] [20]; / * Array de 2 dimenses de tamanho 50x20 * /

A varivel m uma matriz de 50 elementos, que por sua vez, so matrizes de 20 carros
alegricos cada.
Assim, temos uma matriz de 50x20 elementos: o primeiro elemento m [0] [0], a ltima

174 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

m [49] [19]. O primeiro elemento da linha 5 seria m [4] [0].

Se voc no inicializar a matriz na declarao, voc pode omitir a primeira dimenso da


array multi-dimensional. Nesse caso, a matriz est localizado em outro lugar, por exemplo, em
outro arquivo.
Esta uma tcnica comumente usada quando passar matrizes como parmetros de funo:

int a [3] [2] [4]; / * Matriz 3-dimensional de tamanho 3x2x4 * /

vazio func (int [n] [2] [4]) {/ * podemos omitir primeira dimenso * /
...
n [2] [1] [3] + +; incremento * / * o ltimo elemento /
}

vazio main () {
...
func (a);
}

Voc pode inicializar um array multi-dimensional com um conjunto adequado de valores dentro
suspensrios. Por exemplo:

int a [3] [2] = {{1,2}, {2,6}, {3,7}};

Ponteiros

Ponteiros so objetos especiais para a realizao (ou "Apontando para") endereos de


memria. Na
mik roC PRO para PIC, endereo de um objeto na memria podem ser obtidas por meio de
um operador unrio &. Para alcanar o objeto pontiagudo, usamos um operador de
indireo (*)
em um ponteiro.

Um ponteiro do tipo "Ponteiro para objeto do tipo" guarda o endereo da (ou seja, aponta para)
um objeto do tipo. Como os ponteiros so objetos, voc pode ter um ponteiro apontando para
um
ponteiro (e assim por diante). Outros objetos comumente apontado incluem matrizes, estruturas
e sindicatos.

Um ponteiro para uma funo melhor pensar como um endereo, normalmente em um


segmento de cdigo,
onde o cdigo executvel que a funo armazenado, isto , o endereo para o qual o controle
transferido quando essa funo chamado.

Embora ponteiros contm nmeros com a maioria das caractersticas de inte-assinado


gers, eles tm suas prprias regras e restries para as declaraes, as atribuies, con-
verses, e aritmtica. Os exemplos nas sees seguintes ilustram algumas dessas regras
e as restries.

Mikr
oele
ktronika - Solues de software e hardware para o mundo embutido

175
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Ponteiro declaraes

Os ponteiros so declarados da mesma forma que qualquer outra varivel, mas com * frente
do identificador.
Um tipo no incio da declarao especifica o tipo de um objeto pontiagudo. Um ponto-
er deve ser declarado como apontando para algum tipo particular, ainda que este tipo vazio,
o que realmente significa um ponteiro para qualquer coisa. Ponteiros para vazio so muitas
vezes chamados genricos
ponteiros, e so tratados como ponteiros para char na mik roC PRO para a PIC.

Se tipo qualquer tipo pr-definido ou definido pelo us urio, incluindo vazio, a declarao

Tipo * p; / * Ponteiro Uninitialized * /

declara p ser do tipo "Ponteiro para tipo ". Todos escopo, durao e regras de
visibilidade
so aplicada ao p objeto apenas declarada. Voc pode ver a declarao da seguinte maneira:
se
* P um objeto de tipo, em seguida, p tem que ser um ponteiro para tal objeto (objeto de
tipo).

Nota: Voc deve inicializar ponteiros antes de us -los! Nosso ponto declarado
anteriormente,
er * P no inicializado (isto atribudo um valor), por isso no pode ser usado ainda.

Nota: No caso de declaraes ponteiro mltiplos, cada um requer um identificad or


indireta
operador. Por exemplo:

int * Pa, pb, * pc *;

/ * o mesmo que: * /

int * Pa;
int * Pb;
int * PC;

Uma vez declarada, porm, um ponteiro pode normalmente ser transferido assim que ele
aponta para um
objeto de outro tipo. O mikroC PRO para PIC permite transferir sem ponteiros
typecasting, mas o compilador ir avis-lo a menos que o ponteiro foi originalmente declarado
estar apontando para nulas. Voc pode atribuir a void * ponteiro para o no-void * ponteiro -
referem-se a vazio para mais detalhes.

176
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Ponteiros nulos

A ponteiro nulo valor um endereo que garantia de ser diferente de qualquer outro vlido
ponteiro em uso em um programa. Atribuindo a constante inteira de 0 a um ponteiro atribui um
valor do ponteiro nulo para ele.

Por exemplo:

int * Pn = 0; / * Aqui est um ponteiro nulo * /

/ * Ns podemos testar o ponteiro como isto: * /


se (Pn == 0) {... }

O tipo de ponteiro "Ponteiro para void" no deve ser confundido com o ponteiro nulo. A
declarao

vazio * Vice-presidente;

declara que vp um ponteiro genrico, capaz de ser designado por qualquer das "Ponteiro
para
tipo " valor, inclusive nulo, sem reclamar.

Atribuies sem casting adequado entre um "Ponteiro para type1 " e um "Ponteiro para
type2 ", onde type1 e type2 diferentes tipos, pode invocar um aviso do compil ador
ou erro. Se type1 uma funo e type2 no (ou vice-versa), atribuies ponteiro
s o il egai s. S e type1 um p onteir o par a vazio, nenhuma converso necessria. Se type2
um pontei r o para
vazio, nenhuma converso necessria.

Funo Ponteiros

Funo ponteiros so ponteiros, variveis, ou seja, que apontam para o endereo de um fun-
o.

/ / Definir um ponteiro de funo


int (* Pt2Function) (char, float, char);

Nota: Assim funes e ponteiros de funo com a conveno de chamada diferentes


(argu-
mento da ordem, tipo de argumentos ou tipo de retorno diferente) so incompatveis com
cada
outras.
Mikr
oele
ktro
nika
-
Solu
es
de
soft
ware
e
hardware para o mundo embutido

177
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Atribuir um endereo para um ponteiro de funo

muito fcil atribuir o endereo de uma funo para um ponteiro de funo. Basta ter
o nome de uma funo adequada e conhecidos. Usando o operador de endereo e de frente
o nome da funo opcional.

/ / Atribuir um endereo para o ponteiro de funo

int DoIt (float a, b, char, char c) {return a + b + c;}


pt2Function = &DoIt; / cesso /

Exemplo:

int ADDC (char x, char y) {


retorno x + y;
}

int SUBC (char x, char y) {

retorno x, y;
}
int mulC (char x, char y) {
retorno x * y;
}
int CIVD (char x, char y) {

retorno x / y;
}

int modC (char x, char y) {

retorno x, y%;
}

/ / Array de ponteiro para funes que recebem dois caracteres e retorna


int
int (* Arrpf []) (char, char) = { ADDC, SUBC, mulC, CIVD, modC};

int res;
char i;
vazio main () {

para (I = 0; i <5; i + +) {
res = arrpf [i] (10,20);
}
}

178 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Aritmtica de ponteiro

Aritmtic a de ponteir o no mikroC PRO para PIC limitado a:

- atribuio de um ponteiro para outro,


- comparando dois ponteiros,
- comparando ponteiro a zero,
- adio / subtrao ponteiro e um valor inteiro,
- subtraindo dois ponteiros.

A aritmtica interna realizada em ponteiros depende do especificador de memria


fora ea presena de modificadores ponteiro imperiosa. Ao realizar-arith
aritmtica com ponteiros, presume-se que o ponteiro aponta para um array de objetos.

Matrizes e ponteiros

Matrizes e ponteiros no so tipos completamente independente na mikroC PRO para


PIC. Quando o nome de uma matriz aparece na avaliao da expresso (exceto com
operadores & e sizeof), convertido implicitamente para o ponteiro apontando para
matriz
primeiro elemento. Devido a este fato, as matrizes no so lvalues modificveis.

Suportes [ ] indicam ndices da matriz. A expresso

id [exp]

definido como

* ((Id) + (exp))

quando:
- id um ponteiro e exp um nmero inteiro, ou
- id um inteiro e exp um ponteiro.

As seguintes declaraes so verdadeiras:

& A [i] = a + i
a [i] = * (A + i)

De acordo com essas orientaes, pode ser escrito:

pa = & a [4]; / / Pa aponta para um [4]


x * = (aa + 3); / / X = a [7]
/ * .. mas: * /
y = aa * + 3; / / Y = a [4] + 3

Mikroelektronika - Solues de software e hardware para o mundo embutido 179


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Alm disso, o cuidado deve ser tomado quando usando a


precednci a do operador :

* Pa + +; / / * Igual a (aa + +), incrementa o ponteiro


(* Aa) + +; / / Incrementa o objeto apontado!

Os exemplos a seguir tambm so vlidas, mas melhor evitar essa sintaxe, pois ele pode fazer
o cdigo realmente ilegvel:

(A + 1) [i] = 3;
/ / Mesmo que: * ((a + 1) + i) = 3, ou seja, a [i + 1] = 3

(I + 2) [a] = 0;
/ / Mesmo que: * ((i + 2) + a) = 0, ou seja, a [i + 2] = 0

Atribuio e comparao

A atribuio simples operador (=) pode ser usado para atribuir o valor de um ponteiro para
outro, se eles so do mesmo tipo. Se eles forem de tipos diferentes, voc deve usar um
typecast operador. A converso explcita de tipo no necessrio se um dos ponteiros
genrico (da vazio tipo).

Atribuindo a constante inteira de 0 a um ponteiro atribui um valor nulo ponteiro para ele.

Dois ponteiros apontando para a mesma matriz pode ser comparada usando oper-relacional
ators ==,! =, <, <=,> , e > =. O s result ados des tas oper aes s o as me smas que se
eles foram usados em valores subscritos de elementos da matriz em questo:

int * Pa = & a [4], pb * = & a [2];

se (Pa == pb) {... / * No ser executado em 4 no igual a 2 * /}


se (Pb pa>) {... / * Ir ser executado como 4 superior a 2 * /}

Voc tambm pode comparar os ponteiros para o valor zero- testes, dessa forma, se o ponteiro
do actu-
pontos aliado a alguma coisa. Todos os ponteiros podem ser testados com sucesso para a
igualdade ou a desigual-
dade de nulos:

se (Pa == 0) {... }
se (Pb! = 0) {... }

Nota: Comparando os ponteiros apontando para diferentes objetos / matrizes podem ser
realizados em
responsabilidade do programador- uma viso precisa do armazenamento de dados de fsica
necessrio.
180
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Ponteiro Adio

Voc pode usar operadores + + +, e + = adicionar um valor inteiro a um ponteiro. A


resultado de Alm disso definida somente se o ponteiro aponta para um elemento de uma
matriz e
Se o resultado for um ponteiro apontando para a mesma matriz (ou um elemento para alm
dela).

Se for declarado um ponteiro para apontar para tipo, acrescentando um valor integral n
para o ponteiro
incrementos o valor do ponteir o n * sizeof (tipo) enquanto o pontei r o permanec e
dentro do intervalo legal (primeiro elemento para um alm do ltimo elemento). Se tipo tem
uma
tamanho de 10 bytes, ento a adio de 5 para um ponteiro para tipo avana o ponteiro de 50
bytes
na memria. Em caso da tipo tipo, o tamanho de um passo um byte.

Por exemplo:

int a [10]; / * Um array contendo 10 elementos do tipo int * /


int * Pa = & a [0]; / Pa * ponteiro para int, apontando para a [0] * /
* (Pa + 3) = 6; / * 3 pa u m pontei ro que ap onta par a a [3], de modo a [3]
agora igual a 6 * /
aa + +; / Pa * aponta agora para o prximo elemento de uma matriz:
a [1] * /

No h nenhum elemento, como ponteiro "um aps o ltimo elemento", claro, mas o
est autorizado a assumir tal valor. C "Garantias" que o resultado disso definida
mesmo quando aponta para uma matriz de elemento passado. Se os pontos P para o ltimo
elemento de matriz,
P 1 + legal, mas P 2 + indefinido.

Isto permite-lhe gravar loops que o acesso a elementos em um array seqncia


meios de incrementar ponteiro - na ltima iterao, voc ter o ponteiro do ponto de
o de um elemento passado a matriz, que legal. No entanto, a aplicao de um engano
operador (*) para uma "Ponteiro para um aps o ltimo elemento" leva a um comportamento
indefinido.

Por exemplo:

vazio f (some_type um [] int n) {


/ * Funo f manipula elementos de uma matriz; * /
/ * Matriz A tem n elementos do tipo some_type * /
int i;
some_type * p = & a [0];

para (I = 0; i <n, i + +) {
/ * .. aqui ns fazemos algo com p * .. * /
p + +; / * .. e com a ltima iterao p excede
o ltimo elemento de um array * /
}
/ * Neste ponto, p * indefinido! * /
}

Mikroelektronika - Solues de software e hardware para o mundo embutido 181


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Ponteiro Subtrao

Semelhante ao lado, voc pode usar os operadores -, - E -= para subtrair uma parte
integrante
valor de um ponteiro.

Alm disso, voc pode subtrair dois ponteiros. A diferena ser igual distncia
entre dois endereos apontou, em bytes.

Por exemplo:

int a [10];
int * PI1 = & a [0];
int * Pi2 = & a [4];
i= pi2 - PI1; / * I igual a 8 * /
pi2 -= (I> 1); / * Pi2 = pi2 - 4: pi2 agora aponta para [0] * /

182 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Estruturas

Uma estrutura um derivado tipo normalmente representa uma coleo definida pelo usurio
de nome
membros (ou componentes). Esses membros podem ser de qualquer tipo, seja fundamental
ou derivados (com algumas restries que devem ser discutidos mais tarde), em qualquer
seqncia. Em adi-
o, um membro de estrutura pode ser um campo de bits.

Diferentemente dos arrays, estruturas so consideradas objetos nicos. A mik roC PRO para
PIC tipo de estrutura permite-lhe lidar com estruturas de dados complexas quase to facilmente
como pecado
gle variveis.

Nota: o mik roC PRO para PIC no suporta annimos estruturas (ANSI-mergulhador
gncia).

Estrutura da declarao e inicializao

Estruturas so declaradas usando a palavra-chave struct:

struct tag {Membro declarator lista};

Aqui, tag o nome de uma estrutura; declarator membro-lista uma lista de estrutura
membros, na verdade, uma lista de declaraes de variveis. Variveis do tipo estruturado so
declarou o mesmo que as variveis de qualquer outro tipo.

O tipo de membro no pode ser o mesmo que o tipo struct sendo atualmente declarou.
No entanto, um membro pode ser um ponteiro para a estrutura que est sendo declarada,
como no se-
mugido exemplo:

struct {S MYS TRUCT;} M YSTRUCT; / * Ilegal! * /


struct MYSTRUCT {MYSTRUCT ps *;}; / * OK * /

Alm disso, uma estrutura pode conter anteriormente tipos de estrutura definidos quando se
declara uma
instncia da estrutura declarada. Aqui est um exemplo:

/ * Estrutura que define um ponto: * /


struct Dot {float x, y;};

/ * Estrutura que define um crculo * /


struct Circle {
flutuar r;
struct ponto central;
} O1, O2;
/ * Declarar variveis O1 e O2 do Crculo * /

Mikr
oele
ktronika - Solues de software e hardware para o mundo embutido

183
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Note que a tag estrutur a pode ser omitido, mas os objetos , em segui da adicionai s deste tipo no
pode ser
declarados em outro lugar. Para obter mais informaes, consulte Estruturas Untagged abaixo.

A estrutura inicializada atribuindo a ele uma seqncia delimitada por vrgulas de valores
dentro
aparelho, semelhante matriz. Por exemplo:

/ * Referindo-se s declaraes do exemplo acima: * /

/ * Declarar e inicializar pontos P e Q: * /


struct Dot p = {1, 1..}, Q = {3,7, -0,5};

/ * Declarar e inicializar crculo o1: * /


struct Circulo o1 = {{1, 0, 0}...} / / Raio de 1, o centro est em (0, 0)

Declaraes incompletas

declaraes incompletas so tambm conhecidas como as declaraes para a frente. Um


ponteiro para um
tipo de estrutura A pode legalmente includos na declarao de outra estrutura B antes
A foi declarado:

struct A; / / incompletos
struct B {struct Um ano *;};
struct A {struct B pb *;};

A primeira apario de A chama-se incompleta, porque no h definio para isso em


esse ponto. Uma declarao incompleta, permitido aqui, porque a definio de B
no precisa do tamanho da A.

Estruturas Untagged e TYPEDEFs

Se a marca de estrutura omitido, um estrutura untagged criado. O untagged


estruturas podem ser usados para declarar os identificadores na delimitado por vrgula membro
declarator-l ista ser do tipo de estrutur a dada (ou derivados) , mas alm-
objetos al deste tipo no pode ser declarado em outro lugar.
possvel criar um typedef ao declarar uma estrutura, com ou sem a tag:

/ * Com tag: * /
typedef struct MYSTRUCT {... MyStruct};
MyStruct s, * ps, ARRS [10] / * mesma estrutura MYSTRUCT s, etc * /

/ * Sem tag: * /
typedef struct {... MyStruct};
MyStruct s, ps *, ARRS [10];

Normalmente, no h necessidade de usar os dois tag e typedef: ou pode ser usado em es-
tipo de declaraes ture.

184 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

membros Untagged estrutura e unio so ignorados durante a inicializao.

Nota: Veja tambm a trabalhar com as estruturas.

Trabalhar com estruturas

Estruturas representam tipos definidos pelo usurio. Um conjunto de regras relativas


aplicao de
estruturas estritamente definido.

Atribuio

As variveis do mesmo tipo estruturado pode ser atribudo um para outro por meio de
operador de atribuio simples (=). Isso ir copiar todo o contedo da varivel a
destino, independentemente do interior complexidade de uma determinada estrutura.
Note-se que duas variveis so do mesmo tipo estruturado somente se ambos so definidos
pela instruo ou mesmo usando o mesmo tipo identificador. Por exemplo:

/ * A e b so do mesmo tipo: * /
struct {Int M1, M2;} a, b;

/ * Mas, c, d _no_ so do mesmo tipo, embora


descries de sua estrutura so idnticas: * /
struct {Int M1, M2;} c;
struct {Int M1, M2;} d;

Tamanho da Estrutura

O tamanho da estrutura de memria pode ser recuperada por meio do operador


sizeof. no necessrio que o tamanho da estrutura igual soma das suas
membros tamanhos. Muitas vezes, maior devido a certas limitaes de armazenamento de
memria.

Estruturas e Funes

A funo pode retornar um tipo de estrutura ou um ponteiro para um tipo de estrutura:

MYSTRUCT func1 (void); / * Func1 () retorna uma estrutura * /


MYSTRUCT * func2 (void); / * Func2 () retorna ponteiro para estrutura * /

Uma estrutura pode ser passada como um argumento para uma funo no das seguintes
maneiras:

vazio func1 (MYSTRUCT s;); / * Diretamente * /


vazio func2 (MYSTRUCT SPTR *;); / * Atravs de um ponteiro * /

Mikroelektronika - Solues de software e hardware para o mundo embutido 185


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Estrutura de Acesso ao Portal

Estrutura e membros do sindicato so acessadas usando o oper seguinte seleo de dois


ators:

- . (Ponto final)
- -> (Seta direita)

O operador . chamado o selector membro direto e usado para acessar diretamente


um dos membros da estrutura. Suponha que o objeto s do tipo struct S e
m um identificador de membro do tipo M declarados em s, ento a expresso

s.m / / Acesso direto a um dos membros m

do tipo M, e representa o objeto membro m em S.

O operador -> chamado o selector membro indireto (ou ponteiro). Suponha que o
objeto s do tipo struct S e ps um ponteiro para s. Ento, se m um membro iden-
tifier do tipo M declarados em s, a expresso

ps-m> / / Acesso indirecto aos membros m;


/ / Idntico a (* ps) m.

do tipo M, e representa o objeto membro m em s. A expresso ps-m>


uma abreviao conveniente para (* Ps). M

Por exemplo:

struct MYSTRUCT {
int i;
char str [21];
dupla d;
S SPTR} *, = &S;

...

s.i = 3; / / Atribui r ao mem bro do M YSTRUCT i s


SPTR -> d = 1,23; / / Atribui ao membro d de MYSTRUCT s

A expresso s.m lvalue, desde que s lvalue e m no uma matriz do tipo.


A expresso m SPTR-> um lvalue menos m um tipo de matriz.

186 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Acessando estruturas aninhadas

Se a estrutura B contm um campo cujo tipo a estrutura A, os membros do A pode


ser acessado por duas aplicaes do seletores membro:

struct A {
int j; dupla x;
};
struct {B
int i; struct Um aa; dupla d;
SPTR} * s,;

...

s.i = 3; / / atribuir 3 a o membro i de B


s.aa.j = 2; / / atribuir 2 a o membro j de A
SPTR-> d = 1,23; / / atribuir 1.23 para o membro d de B
aa.x SPTR-> = 3,14; / / atribuir 3.14 ax membro de uma

Estrutura Singularidade

Cada declarao de estrutura apresenta um tipo de estrutura nica, de modo que em

struct A {
int i, j; dupla d;
} AA, AAA;

struct {B
int i, j; dupla d;
Bb};

os objetos aa e aaa ambos so do tipo struct A, mas os objeto s aa e bb so


tipos de estrutura diferente. As estruturas podem ser atribudas apenas se a origem eo destino-
nao tem o mesmo Tipo:

aa = AAA; / * OK: mesmo tipo, membro por membro de atribuio * /


AA BB =; / * ILEGAL: * diferentes tipos /

/ * Mas voc pode atribuir membro por um membro: * /


aa.i = bb.i;
aa.j = bb.j;
aa.d = bb.d;

Mikroelektronika - Solues de software e hardware para o mundo embutido 187


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Sindicatos

Unio tipos so tipos derivados partilha muitas das caractersticas sintticas e funcional de
tipos de estrutura. A diferena fundamental que uma sindicalistas partilham a mesma mem -
espao de memria disponvel.

Nota: O mik roC PRO para PIC no suporta sindicatos annimo (ANSI-diver
gncia).

Sindicatos Declarao

Os sindicatos tm a mesma declarao como estruturas, com a palavra-chave Unio usados


em vez de struct

Unio tag {membro declarator lista};

Ao contrrio das estruturas " membros, o valor de apenas um dos membros da Unio podem
ser armazenados
a qualquer momento. Aqui est um exemplo simples:

Unio myunion { / / Tag sindicato 'myunion'


int i;
dupla d;
char ch;
Ontem} * mu,;

A identificador mu, do tipo myunion, pode ser usado para prender um 2-byte int, 4-byte dou-
ble ou de by te ni c o char, mas apena s um deles, em determ inado mom ento. O id entifica dor
pm
um ponteiro para a unio myunion.

Tamanho da Unio

O tamanho de uma unio o tamanho de seu membro maior. Em nosso exemplo anterior, os
sizeof (myunion unio) e sizeof (mu) bytes de retorno 4, mas duas no so utilizadas
(Acolchoado), quando mu detm a int bytes do objeto, e 3 so utilizadas quando mu detm
char.

Unio Acesso ao Portal

membros da Unio podem ser acessados com os seletores estrutura membro (e -.>), ser
cuidado ao fazer isto:

/ * Referindo-se s declaraes do exemplo acima: * /


pm =
mu.d = 4,016;
tmp = mu.d / / OK: mu.d = 4,016

188 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem
tmp = mu.i; / / Resultado peculiar

i am-> = 3;
tmp = mu.i; / / OK: mu.i = 3

A terceir a linha legal, desde mu.i um tipo integr al . No entanto, o padr o de bits em mu.i
corresponde a partes das anteriormente at ribudas casal. Como tal, ele provavelmente no
vai
fornecer uma interpretao inteiro teis.

Quando devidamente convertido, um ponteiro para uma unio pontos a cada um dos seus
membros, e
vice-versa.

Campos Bit

Campos de bits so especificados os nmeros de bits que podem ou no ter um associado


iden-
tifier. Campos de bits oferecem uma maneira de subdividir em partes de estruturas chamado de
definido pelo usurio
tamanhos.

Estruturas e os sindicatos podem conter campos de bits que podem ser de at 16 bits.

Voc no pode pegar o endereo de um campo de bits.

Nota: Se voc precisar manipular bits especficos das variveis de 8 bits (Char e no
assinado
curto) ou registros, voc no precisa declarar campos de bits. soluo muito mais
elegante
a utilizao do mik roC PRO para a capacidade intrnseca da PIC para o acesso de bits
individuais - veja
Acesso Individual Bits para mais informaes.

Declarao de campos de bits

Campos de bits pode ser declarado apenas em estruturas e unies. Declare uma estrutura
normal
ly e atribuir campos individuais como este campos (precisam ser no assinado):

struct tag {
no assinado declarator bitfield-lista;
}

Aqui, tag um nome opcional da estrutura; declarator bitfield-lista uma


lista de campos de bits. Cada componente requer um identificador de clon e sua largura em
bits para ser
explicitamente especificado. largura total de todos os componentes no pode exceder dois
bytes (16 bits).

Como um objeto, estrutura campos de bits necessrios dois bytes. Campos individuais so
embaladas em
dois bytes da direita para a esquer da. Em bitfield-declarator lista, voc pode omitir
identifi-
er (s) para criar uma artificial "Estofo", ignorando, assim bits irrelevante.

Mikroelektronika - Solues de software e hardware para o mundo embutido 189


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Por exemplo, se h uma necessidade de manipular bits apenas 2-4 de registrar-se como um
bloco,
criar uma estrutura como esta:

struct {
no assinado : 2, / / Passar bits 0 e 1, nenhum identificador aqui
mybits: 3; / / Relevantes bits 2, 3 e 4
/ / Bits 5, 6 e 7 so implicitamente deixados de fora
Myreg};

Aqui est um exemplo:

typedef struct {
lo_nibble: 4;
hi_nibble: 4;
high_byte: 8;} myunsigned;

que declara o tipo estruturado myunsigned contendo trs componentes:


lo_nibble (Bits 3 .. 0), hi_nibble (Bits 7 .. 4) e high_byte (Bits 15 .. 8).

Acesso campos de bits

Campos de bits pode ser acessado da mesma forma como o membros da estrutura. Uso direto
eo selector de membro indirectos (. e ->). Por exemplo, poderamos trabalhar com os
nossos pr-
riormente declarada myunsigned como este:

/ / Este exemplo escreve byte baixo do campo de bit do tipo de myunsigned


Port0:
Value_For_PORT0 myunsigned;

vazio main () {
...
Value_For_PORT0.lo_nibble = 7;
Value_For_PORT0.hi_nibble = 0x0C;
* P0 = (char *) (Void *) & Value_For_PORT0;
/ / Typecasting:
/ / 1. endereo da estrutura para ponteiro para void
/ / 2. ponteiro para void para ponteiro para char
/ / 3. dereferencing para obter o valor
}

190 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Idioma Referncia

Converses de Tipo

A mik roC PRO para PIC uma linguagem estritamente digitadas, com cada operadora, a
declarao
e funo exigente operandos devidamente digitado / argumentos. No entanto, ns
muitas vezes tm de usar objetos de "Descasamento" tipos de expresses. Nesse caso, tipo
converso necessrio.

Converso de objeto de um tipo que significa o tipo de objeto alterado para outro
tipo. A mik roC PRO para PIC define um conjunto de converses para o padro interno
tipos, desde pelo compilador quando necessrio. Para obter mais informaes, consulte o
Converses Standard.

A converso necessria nas seguintes situaes:

- Se uma instruo requer uma expresso do tipo especial (de acordo com def idioma
rial), e usamos uma expresso de tipo diferente,
- Se um operador requer um operando de tipo particular, e ns usamos um operando de dife-
diferentes tipos,
- Se uma funo requer um parmetro formal de determinado tipo, e pass-lo um objeto
de tipo diferente,
- Se uma expresso a seguir a palavra-chave retorno no coincide com o declarado fun-
o tipo de retorno,
- Se intializing um objeto (na declarao) com um objeto de tipo diferente.

Nessas situaes, o compilador ir fornecer uma converso automtica implcita de tipos, sem
qualquer interferncia do programador. Alm disso, o programador pode exigir a converso
explicitamente
meio do distribuir os papis operador. Para obter mais informaes, consulte a converso de
tipo explcito.

Standard Converses

Ao usar a expresso aritmtica, como a + b, onde um e b so de diferentes


tipos de aritmtica, o mik roC PRO para PIC realiza converses de tipo implcito antes
a expresso avaliada. Essas converses padro incluem promoes
"Inferiores" tipos de "Superior" tipos, no interesse da preciso e consistncia.

Atribuir um objeto de carter assinado (como uma varivel) a um objeto resulta integral
na extenso de sinal automtico. Objetos do tipo signed char sempre usar a extenso de sinal;
objetos do tipo unsigned char byte sempre tem seus altos definido para zero quando convertido
para int.

Convertendo um tipo mais parte integrante de um tipo mais curto trunca os bits de ordem
superior
e folhas de bits de baixa ordem inalterada. Convertendo um tipo mais curto parte integrante de
um mais
tipo qualquer sinal estende-se ou zero preenche os bits extra de o novo valor, dependendo
se o tipo mais curto assinado ou no assinado, respectivamente.
Mikroelektronika - Solues de software e hardware para o mundo embutido 191
CAPTULO 6
Idioma Referncia mikroC PRO para PIC

Nota: Converso de dados de ponto flutuante em valor integral (em tarefas ou atravs de
typecast explcito) produz resultados corretos apenas se o flutuar valor no exceda
o escopo de destino tipo integral.

Detalhes:

Aqui esto os passos que o mik roC PRO para PIC utiliza para converter os operandos em uma
arith-
expresso aritmtica:
Em primeiro lugar, qualquer tipo de pequeno integrais so convertidas de acordo com as
seguintes regras:

1. char converte em int


2. signed char converte em int, com o mesmo valor
3. curto converte em int, com o mesmo valor, sinal estendido
4. unsigned short converte em int, com o mesmo valor, zero-preenchida
5. enum converte em int, com o mesmo valor

Depois disso, todos os dois valores associados a um operador ou so int (Incluindo o


tempo e no assinado modificadores) ou flutuar (Equivalente a dupla e long double
na mikroC PRO para PIC).

1. Se um dos operandos for float, o outro operando convertido para float.


2. Caso contrrio, se um dos operandos for unsigned long, o outro operando convertido
para
unsigned long.
3. Caso contrrio, se um dos operandos for longo prazo, ento o outro operando
convertido para tempo.
4. Caso contrrio, se um dos operandos for unsigned, o outro operando convertido para
no assinado.
5. Caso contrrio, ambos os operandos so int.

O resultado da expresso do mesmo tipo que a dos dois operandos.


Aqui esto alguns exemplos de converso implcita:

2 + 3.1 / *? 2. + 3.1? 5.1 * /


04/05 * 3. / *? (04/05) * 3. ? 1 * 3. ? 1 .* 3. ? 3. * /
3. * 04/05 / *? (3 .* 5) / 4? (3 .* 5.) / 4? 15. / 4? 15. / 4 . ? 3,75 * /

Ponteiro de converso

Tipos ponteiro pode ser convertidas para outros tipos de ponteiro usando o mecha typecasting-
nismo:

char * Str;
int * Ip;
str = (char *) De IP;

Mais genericamente, o elenco * Tipo ir converter um ponteiro para o tipo "Pont eiro para
tipo ".
192 Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Concersions tipo explcito (converso de tipo)

Na maioria das situaes, o compilador ir fornecer uma converso automtica implcita de


tipos
quando necessrio, sem qualquer interferncia do usurio. Alm disso, o usurio pode
converter explicitamente
um operando em outro tipo usando o operador unrio prefixo distribuir os papis operador:

(Tipo) de objeto

Isto ir converter objeto a um especificada tipo. Parnteses so obrigatrios.

Por exemplo:

/ * Vamos ter duas variveis do tipo char * /


char a, b;

/ * Linha a seguir para coagir um unsigned int * /


(Unsigned int) a;

/ * Linha a seguir ir coagir a dobrar,


b ento forar a dupla automaticamente,
* /: Resultando num valor do tipo double
(Double) a + b; / / equivalente a ((double) a) + b;

Declaraes

A declarao apresenta um ou vrios nomes para um programa - informa o compil-


er o que o nome representa, o que seu tipo, o que operaes so permitidas com ele,
etc Esta seo revisa os conceitos relacionados s declaraes: declaraes, definies,
especificadores de declarao e inicializao.

A gama de objetos que podem ser declaradas inclui:

- Variveis
Constantes -
- Funes
-Tipos
- Tags estrutura sindical, e enumerao
membros Estrutura -
membros da Unio Europeia -
- Matrizes de outros tipos
- Declarao de rtulos
- Preprocessor macros

Mikroelektronika - Solues de software e hardware para o mundo embutido 193


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Declaraes e Definies

Definindo declaraes, tambm conhecido como definies, ao lado de introduzir o nome de


um
objeto, tambm estabelecer a criao (onde e quando) de um objeto, isto , a alocao
o da memria fsica e sua inicializao possvel. Referenciando declaraes, ou
apenas declaraes, basta fazer seus identificadores e tipos conhecidos para o compilador.

Aqui est uma viso geral. Declarao tambm uma definio, excepto se:

- Declara uma funo sem especificar o seu corpo


- Tem o extern especificador, e no tem Inicializador ou organismo (no caso de func.)
- o typedef declarao
No pode ser declaraes de referncia para muitos o mesmo identificador, especialmente em
um
declarao de vrios programas, mas apenas uma definio para esse identificador
permitido.

Por exemplo:

/ * Aqui est uma declarao de Max nondefining funo; * /


/ * Se limitou a informar compilador que mxima uma funo * /
int max ();

/ * Aqui est uma definio do valor mximo da funo: * /


int max (int x, int y) {
retorno (X> y =)? x: y;
}

/ * Definio da varivel i * /
int i;

/ * Seguindo a linha um erro, eu j est definido! * /


int i;

Declaraes e declarators

A declarao contm especificador (s), seguido por um ou mais identificadores (decla-


res). A declarao comea com especificadores de classe de armazenamento opcional,
especificadores de tipo,
e outros modificadores. Os identificadores so separados por vrgulas e a lista termi -
nados por um ponto e vrgula.

Declaraes de identificadores de variveis tm o seguinte padro:

armazenamento de classe [qualificador de tipo] Tipo var1 [= in ic1], var2 [= inic2], ... ;

onde var1, var2, ... so qualquer seqncia de identificador es distintos com


inicializador es opcional.
Cada uma das variveis declarad o de Tipo, se omitido, tipo padres para int. A
especificador armazenamento de classe pode tomar os val ores externo, esttico, registrar, ou o
194 Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

padro auto. Opcional tipo de qualificao pode assumir valores const ou volteis. Para
mais detalhes, consulte as classes de armazenamento e de qualificao de tipo.

Por exemplo:

/ * Cria trs variveis do tipo inteiro chamado x, y e z


e inicializar X e Y para os valores 1 e 2, respectivamente: * /
int x = 1, y = 2, z / / z continua a ser inicializado

/ * Criar um q varivel de ponto flutuante com modificador esttico,


e inicializ-lo para 0,25: * /
float esttico q = 0,25;

Estas so todas as declaraes de definio, o armazenamento alocado e qualquer


inicializadores opcional
so aplicadas.

Linkage

Um programa executvel normalmente criado atravs da compilao de vrios


independentes trans-
unidades de lamento, em seguida, ligando os arquivos com as bibliotecas de objeto resultante
preexistente. Um termo
unidade de traduo que se refere a um arquivo de cdigo fonte, juntamente com todos os
arquivos includos, mas com-
as linhas de origem omitida pelas directivas de pr-processamento condicional. Um problema
aris-
es quando o mesmo identificador declarado em escopos diferentes (por exemplo, em
diferentes
arquivos), ou declarada mais de uma vez no mesmo escopo.

A articulao um processo que permite que cada instncia de um identificador deve ser
associado
corretamente com um determinado objeto ou funo. Todos os identificadores tm uma ligao
de dois
atributos, estreitamente relacionado com o seu mbito: ligao externa ou a ligao interna.
Estes
atributos so determinados pela localizao e formato de suas declaraes, togeth-
er com um uso (ou implcitas por default) explcita do especificador de classe de
armazenamento estticas ou
externo.

Cada instncia de um identificador especfico com ligao externa representa o mesmo


objeto ou funo em toda a conjunto de arquivos e bibliotecas que compem o pro-
grama. Cada instncia de um identificador especfico com ligao interna representa o
mesmo objeto ou funo dentro de um nico arquivo.

Regras de Linkage
Os nomes locais tm ligaes internas, o mesmo identificador pode ser usado em diferentes
arquivos
para significar diferentes objetos. Global nomes tm ligaes externas; identificador significa
o mesmo objeto ao longo de todos os arquivos do programa.
Se o mesmo identificador aparece com ligao interna e externa dentro do mesmo
arquivo, o identificador tero ligao interna.

Mikroelektronika - Solues de software e hardware para o mundo embutido 195


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Linkage Regimento Interno

1. nomes de alcance arquivo, explicitamente declaradas como esttico, tem ligao


interna
2. nomes de alcance arquivo, explicitamente declaradas como const e no explicitamente
declarado
como externo, tm ligao interna
3. typedef nomes tm ligaes internas
4. constantes enumerao tem ligao interna

Linkage regras externas

1. nomes de alcance de arquivo, que no satisfaam a qualquer das afirmado anteriormente


interna
regras de articulao, tm ligao externa

A classe de armazenamento especificadores auto e Registre-se no pode aparecer em uma


externa dezembro-
vai fazendo. No existe definio mais do que uma externa pode ser dado para cada
identificador de
unidade de traduo declarado com ligao interna. Uma definio externa uma externa
declarao que define um objeto ou uma funo e tambm aloca um dispositivo de
armazenamento. Se um
identificador declarado com ligao externa usada em uma expresso (excepto como parte
do operando da sizeof), ento exatamente uma definio externa desse identificador
deve
estar em algum lugar todo o programa.

Classes de armazenamento

Associando os identificadores de objetos requer que cada identificador para ter pelo menos
dois attrib-
nutos: classe de armazenamento e tipo (por vezes referido como o tipo de dados). A mik roC
PRO
para PIC compilador deduz destes atributos a partir de declaraes implcitas ou explcitas no
cdigo-fonte.

A classe de armazenamento dita a localizao (segmento de dados, registo, heap ou pilha) de


objeto e sua durao ou vida (o tempo todo funcionamento do programa, ou durante
execuo de alguns blocos de cdigo). Uma classe de armazenamento pode ser estabelecido
pelo sin-
fiscal de uma declarao, por sua colocao no cdigo-fonte, ou por ambos os fatores:

tipo de armazenamento de classe identificador

O armazenamento especificadores de classe no mik roC PRO para PIC so:

auto
Registre-se
estticas
extern

196 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Auto
A auto modificador usado para definir que uma varivel local tem uma durao local. Esta
o padro para as variveis locais e raramente usada. auto no pode ser usado com globals.
Veja tambm as funes.

Registre-se
No momento o modificador Registre-se tecnicamente no tem nenhum significado especial. A
mik roC PRO para PIC compilador simplesmente ignora os pedidos de atribuio de registo.

Esttico
Um nome global declarada com o estticas especificador tem ligao interna, o que significa
que
ela local para um determinado arquivo. Veja Linkage para mais informaes.

Um nome local declar ada com o estticas especi fic a dor tem dura o esttic a. Use estticas
com
uma varivel local para preservar o valor passado entre chamadas sucessivas funo que
desempenha.
Ver Durao para mais informaes.

Extern
Um nome declarado com o extern especificador tem ligao externa, a menos que tenha sido
anteriormente declarados como tendo ligao interna. A declarao no uma definio se
tem o extern especificador e no inicializado. A palavra-chave extern opcional para
um Funo prottipo.

Use o extern modificador para indicar que o armazenamento real e do valor inicial do
varivel, ou corpo da funo, definido em um mdulo separado do cdigo-fonte. Func-
es declaradas com extern so visveis em todos os arquivos-fonte do programa,
menos que a funo redefinida como esttico.

Veja Linkage para mais informaes.

Tipo, qualificao

Os qualificadores do tipo const e volteis so opcionais nas declaraes e no


realmente afetar o tipo de objeto declarado.

Eliminatrias Const

O qualificador const implica que um objeto declarado no ir alterar o seu valor durante
tempo de execuo. Em declaraes com o const qualificador de todos os objetos precisam
ser inicializadas.

A mik roC PRO para PIC trata objetos declarados com o const qualificador o mesmo
como literais ou constantes de pr-processamento. Se o usurio tenta alterar um objeto
declarado
com o const compilador qualificador ir reportar um erro.
Mikroelektronika - Solues de software e hardware para o mundo embutido

197
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Por exemplo:

const PI dupla = 3,14159;

Qualificador voltil

O qualificador volteis implica que uma varivel pode alterar seu valor durante a execuo
independentemente do programa. Use o modificador voltil para indicar que uma varivel
pode ser alterado por uma rotina de fundo, uma rotina de interrupo, ou a porta I / O.
Declarando
um objeto a ser volteis, adverte o compilador no fazer suposies sobre o
valor de um objeto ao mesmo tempo avaliar expresses em que ela ocorre porque o valor do
podem ser alteradas a qualquer momento.

Especificador typedef

O especificador typedef introduz um sinnimo para um tipo especificado. O typedef dezembro -


combinar declaraes so usadas para construir mais curto ou mais nomes convenientes para
os tipos j
definida pela linguagem ou declarada pelo usurio.
O especificador typedef ocupa o primeiro lugar na declarao:

typedef <type_definition> sinnimos;

A typedef palavra-chave atribui sinnimo de <type_definition>. A sinnimo


deve ser um identificador vlido.
Uma declarao a partir do typedef especificador no introduz um objeto ou uma
funo de um determinado tipo, mas sim um novo nome para um determinado tipo. Em outras
palavras, o
declarao typedef idntico a um"Normal" declarao, mas em vez de objetos,
declara tipos. uma prtica comum para nomear identificadores tipo personalizado com incio
de
ing letra maiscula - isso no exigido pelo mik roC PRO para a PIC. Por exemplo:

/ * Vamos declarar uma sinnimo de "unsigned long int" * /


unsigned int typedef longo Distncia;

/ * Agora, sinnimo "Distncia" pode ser utilizado como identificador de tipo: * /


Distncia i; / / declara varivel i de int unsigned long

Na typedef declarao, como em qualquer outra declarao, vrios tipos podem ser
declarado de uma vez. Por exemplo:

typedef int * PTI, Array [10];

Aqui, Pti um sinnimo para o tipo "Ponteiro para int ", e Array um sinnimo para o tipo
"Matriz de 10 int elementos ".
asm Declaraes
198
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

A mik roC PRO para PIC permite a incorporao de montagem no cdigo-fonte por meio
da declarao asm. As declaraes _asm e _asm Tambm so permitidas no
mik roC PRO para PIC e tm o mesmo significado. Note-se que cannnot numerais ser
usados como endereos absolutos de SFR e GPR variveis em instrues de montagem.
Nomes simblicos pode ser utilizado em substituio (anncio ser exibido estes nomes, bem
como
endereos).

As instrues de montagem podem ser agrupados pela asm palavra-chave (ou _, Ou _asm):

asm {
bloco de instrues de montagem
}

Existem duas maneiras de embeding instrues de montagem nico cdigo C:

asm instrues de montagem;

asm instrues de montagem

Nota: O ponto e vrgula e LF so encerra mbito asm para instrues de montagem


nico.
Este a razo pela qual a sintaxe a seguir no bloco asm:

asm
{
bloco de instrues de montagem
}

Este cdigo ser interpretado como nica linha asm vazio seguido pelo composto C
declarao.

A mik roC PRO para PIC comentrios (tanto de linha nica e multi-linha) so permitidos em
incorporado cdigo de montagem.

Se voc tem uma varivel global "g_var", que do tipo longo (ou seja, 4 bytes), estiver de
acess-lo assim:

MOVF _g_var 0, 0 ; Coloca byte menos significativo de g_var no registo W


MOVF _g_var 1, 0 ; Segundo byte de _g_var; corresponde a Oi (g_var)
MOVF _g_var 2, 0 ; Superior (g_var)
MOVF _g_var 3, 0 ; Mxima (g_var)
... etc
Se voc quiser saber detalhes sobre a sintaxe asm apoiado por mik roC PRO para PIC ele
recomendado para estudar asm lst e arquivos gerados pelo compilador. Tambm recomend -
ed para verificar "as linhas de cdigo Incluir nos arquivos de sada" na caixa Configuraes de
sada
Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO 199
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Nota: Compiler no esperar que os bancos de memria para ser alterado dentro do
conjunto
cdigo. Se o usurio quiser Para fazer isso, ento ele deve restaurar o banco de seleo
anterior.

tpicos relacionados: mik roC PRO para PIC specifcs

Inicializao

O valor inicial de um objeto declarado pode ser definido no momento da declarao (initializa-
o). Uma parte da declarao que especifica a inicializao chamado inicializador.

Inicializadores para globals e estticas objetos devem ser constantes ou expresses


constantes-
ses. O inicializador para um objeto automtico pode ser qualquer expresso jurdica que ava-
minado a uma atribuio compatvel com valor para o tipo das variveis envolvidas.

tipos escalares so inicializados com uma nica expresso, que opcionalmente pode ser
fechado
chaves. O valor inicial de um objeto o da expresso, as mesmas restries
para o tipo e converses para atribuies simples so aplicados para inicializaes tambm.

Por exemplo:

int i = 1;
char * S = "Ol";
struct c complexo = {0,1, -0,2};
/ / Onde "complexo" uma estrutura (float, float)

Para estruturas ou unies com durao de armazenamento automtico, o inicializador deve ser
um
dos seguintes procedimentos:

- Uma lista de inicializador.


- A nica expresso compatvel com o sindicato ou o tipo de estrutura. Neste caso, a inicial
valor do objeto o da expresso.

Por exemplo:

struct dot {int x; int y;} {m = 30, 40};

Para mais informaes, consulte Estruturas e Sindicatos.

Alm disso, voc pode inicializar matrizes do tipo de personagem com uma seqncia literal,
opcionalmente
entre chaves. Cada personagem na seqncia de caracteres, incluindo o terminador nulo,
inicial-
izes elementos sucessivos na matriz. Para obter mais informaes, consulte Matrizes.
Inicializao automtica
A mik roC PRO para PIC no fornecer a inicializao automtica para objetos. Unini-
200 Mikroelektronika - Softwares e solues de hardware para Embedded World
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

globals tialized e objetos com durao esttica ter valores aleatrios de mem-
teoria.

FUNES

As funes so centrais para a programao C. As funes so geralmente definidas como


subprogramas
gramas que retornar um valor baseado em uma srie de parmetros de entrada. Valor de
retorno
da funo pode ser usada em expresses - tecnicamente, chamada de funo considerada
ser uma expresso como outra qualquer.

C permite que uma funo para criar resultados que no o seu valor de retorno, denominada
lado
os efeitos. Muitas vezes, o valor de retorno da funo no usada, dependendo do lado
os efeitos. Essas funes so equivalentes s procedimentos linguagem de programao de
outras
linguagens, como Pascal. C no faz distino entre procedimento e funo -
funes os dois papis.

Cada programa deve ter uma nica funo externo chamado principal marcando a entrada
ponto do programa. As funes so normalmente declarado como prottipos no padro ou
fornecido pelo usurio arquivos de cabealho, ou dentro de arquivos de programa. Funes
tm ligao externa
por padro e so normalmente acessveis a partir de qualquer arquivo no programa. Isso pode
ser
restrita usando o estticas classe de armazenamento especificador na declarao da funo
(ver
Classes de armazenamento e ligao).

Nota: Verifique as especificidades PIC para obter mais informaes sobre as funes '
limitaes na
Microcontroladores PIC compatvel.

Funo Declarao

As funes so declaradas em arquivos do usurio de origem ou disponibilizar, ligando-precom


empilhados bibliotecas. A sintaxe da declarao da funo :

function_name tipo (parmetro-declarator-list);

A function_name deve ser um identificador vlido. Esse nome usado para chamar a fun-
o, ver as chamadas de funo por mais da informao.

tipo representa o tipo de resultado da funo, e pode ser de qualquer padro ou usurio
tipo definido. Para funes que no retornam valor vazio tipo deve ser usado.
O tipo pode ser omitida nas declaraes funo global, e assumir a funo
int tipo por padro.

Tipo de funo tambm pode ser um ponteiro. Por exemplo, float * significa que uma funo
resultado um ponteiro para float. O ponteiro genrico void * tambm permitido.

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido 201


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

A funo no pode retornar uma matriz ou de outra funo.

Dentr o parntes es , declara tor parmetro-lis ta uma lista de argumentos formai s


que a funo recebe. Estes declarators especificar o tipo de cada parmetro de funo.
O compilador usa essa informao para verificar a validade das chamadas de funo. Se a lista

vazio, um funo no tem argumentos. Alm disso, se a lista vazio, uma funo
Tambm no tem quaisquer argumentos, note que este o caso somente quando vazio pode
ser usado como um tipo de argumento.

Ao contrrio de declarao de varivel, cada um argumento na lista de suas necessidades de


especificador de tipo prprio
e qualificador possvel const ou volteis.

Prottipo de funo

A funo pode ser definido apenas uma vez no programa, mas pode ser declarado vrias
vezes, supondo que as declaraes so compatveis. Quando declarar uma funo,
o formal argumento o identificador no precisa ser especificado, mas faz seu tipo.

Esse tipo de declarao, vulgarmente conhecida como a prottipo da funo, permite uma
melhor
controle sobre nmero de argumento, verificao de tipo e converses de tipo. O nome de um
parmetro no prottipo de funo tem o seu mbito limitado ao prottipo. Isso permite que
um parmetro identificador de ter nomes diferentes em declaraes diferentes de uma mesma
funo:

/ * Aqui esto dois prottipos da mesma funo: * /

int teste (const char *) / * Declara * Teste de funo /


int teste (p const char *) / * Declara a mesma funo de teste * /

Funo prottipos so muito teis na documentao de cdigo. Por exemplo, a funo


Cf_Init tem dois parmetros: Controle de porta e porta de dados. A questo , que
qual? O prottipo de funo:

vazio Cf_Init (char * Ctrlport, char * Dataport);

deixa claro. Se um arquivo de cabealho contm prottipos de funo, o usurio pode ler que
arquivo para obter as informaes necessrias para escrever programas que chamar essas
funes. Se um
parmetro prottipo inclui um identificador, ento o Indentificador usado apenas para o erro
verificao.
202
Mikroelektroni
ka -
SOLUES
EM
SOFTWARE E
HARDWARE
Para embutidos
mundo
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Definio de Funo

Defini o da funo consiste em sua declar a o e funo do corpo. A corpo da funo


tecnicamente um bloco - uma seqncia de definies locais e instrues entre
dentro de chaves {}. Todas as variveis declaradas dentro do corpo da funo so
locais funo,
ou seja, tm um alcance de funo.

A prpria funo s pode ser definido no mbito do arquivo, o que significa que fun-
o declaraes no podem ser aninhados.

Para retornar o resultado da funo, use o retorno declarao. O retorno na declarao


funes do vazio tipo no pode ter um parmetro - na verdade, a instruo de retorno
pode ser omitido por completo, se a ltima declarao no corpo da funo.

Aqui est uma definio de funo de exemplo:

/ * Funo max retorna mais um dos seus dois argumentos: * /

int max (int x, int y) {


retorno (X> y =)? x: y;
}

Aqui est uma pequena funo que depende de efeitos colaterais em vez de valor de retorno:

/ * Funo Descartes converte coordenadas (x, y) para polares (r, fi): * /


# Include <math.h>

vazio polar (dupla x, dupla y, dupla * R, dupla * Fi) {


* R = sqrt (x * x + y * y);
* Fi = (x == 0 & & y == 0)? 0: atan2 (y, x);
retorno; / * essa linha pode ser omitido * /
}

Function reentrncia

reentrncia funes permitido se a funo no tem parmetros e locais vari-


veis, ou se as variveis locais so colocadas no espao de Rx. Lembre-se que o PIC
tem pilha e memria limitaes que podem variar muito entre os MCUs.

Mikroelektronika - Solues de software e hardware para o mundo embutido 203


CAPTULO 6
Idioma Referncia mikroC PRO para PIC

Chamadas de funo e argumento de converso

Chamadas de funo

A funo chamada com argumentos reais colocados na mesma seqncia em que seus
correspondentes parmetros formais. Use a funo chamada operador ():

function_name (expression_1, ..., expression_n)

Cada expresso na chamada de funo uma argumento real. Nmero e tipos de


argumentos reais devem coincidir com as dos parmetros da funo formal. Se os tipos no
partida, as converses de tipo implcitas regras sero aplicadas. argumentos reai s podem ser
de
qualquer complexidade, mas a ordem da sua avaliao no especificado.

Aps a chamada de funo, todos os parmetros formais so criados como objetos locais
inicializado
os valores dos argumentos reais. Aps voltar de uma funo, um objeto temporrio
criado no local da chamada, e inicializado com a expresso do retorno
declarao. Isto significa que a chamada de funo como um operando na expresso complexa
tratada como um resultado da funo.

Se a funo tem nenhum resultado (tipo resultado nulo) ou o no necessrio, em


seguida, o fun-
da de consulta pode ser escrita como uma expresso de auto-contidas.

Em C, os argumentos escalares so sempre passados para a funo de valor. A funo pode


modificar os valores dos seus parmetros formais, mas este no tem efeito sobre o argumento
real-
mentos na rotina de chamada. Um objeto escalar podem ser passadas atravs do endereo, se
uma for-
parmetro formal for declarado como um ponteiro. O objeto pontiagudo pode ser ac essado por
* usando o operador de indireo.

/ / Por exemplo, Soft_Uart_Read leva o ponteiro para a varivel de erro,


/ / Para que ele possa alterar o valor de um argumento real:
Soft_Uart_Read (e erro);

/ / O cdigo a segui r seria e rrado, v oc deve passar o valor


/ / Varivel de erro para a funo:
Soft_Uart_Read (erro);

Argumento Converses

Se um prottipo de funo no tenha sido previamente declarada, o mik roC PRO para PIC
converte argumentos integral para uma funo chamada de acordo com o aumento integral
(Expanso) regras descritas no Standard converses. Se um prottipo de funo est em
escopo, o mik roC PRO para PIC converte o argumento passado para o tipo de
parmetro declarado de acordo com as mesmas regras de converso como em estado de
atribuio
mentos.

204 Mikroelektronika - Software e Solues de hardware para Embedded World


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Se um prottipo estiver presente, o nmero de argumentos devem ser iguais. Os tipos


necessidade de
ser compatvel apenas na medida em que uma tarefa pode convert-los legalmente. A
utilizador pode sempre usar uma converso explcita para converter um argumento para um
tipo que acei-
capaz de um prottipo de funo.

Nota: Se o prottipo da funo no corresponde a definio da funo real, o mik roC


PRO para PIC ir detectar isto se e somente se essa definio est na mesma unidade de
compilao
como o prottipo. Se voc criar uma biblioteca de rotinas com o arquivo de cabealho
correspondente
prottipos, considerar a incluso que o arquivo de cabealho quando voc compilar a
biblioteca, de modo que qualquer
discrepncias entre os prottipos e definies reais sero detectados.

O compilador tambm capaz de forar argumentos para alterar o tipo para uma adequada.
Considere o seguinte cdigo:

int limite = 32;


char ch = 'A';
tempo res;

/ Prottipo /
extern longo func (longa par1, tempo par2);

main () {
...
res = func (ch-limite); / Chamada de funo /
}

Desde que o programa tem a funo prottipo para funo, ele converte limite e ch para
tempo, usando as regras de atribuio, antes de coloca-los na pilha para
a chamada para func.

Sem o prottipo da funo, limite e ch seria colocada na pilha como um


inteiro e um personagem, respectivamente, nesse caso, a pilha passado para func no
combinar com o tamanho ou o contedo que func espera, que pode causar problemas.

Reticncias Operador ('...')

O ('...') reticncias composto por trs perodos sucessivos, sem espaos de interveno.
Uma elipse pode ser usado nas listas argumento formal de prottipos de funo para indicar
uma
nmero varivel de argumentos ou argumentos com tipos variados. Por exemplo:

vazio func (int n, char ch, ...);

Esta declarao indica que a funo ser definida de tal forma que as chamadas devem ter
pelo menos dois argument os, int e char, mas tambm pode ter qualquer nme ro de alm-
argumentos al.
Mikroelektronika - Solues de software e hardware para o mundo embutido 205
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Exemplo:

# Include <stdarg.h>

int addvararg (char ,...){ A1


ap va_list;
char temp;
va_start (AP, A1);

while (temp = va_arg (ap, char))


temp + = a1;
retorno a1;
}

int res;
vazio main () {

addvararg res = (1,2,3,4,5,0);

addvararg res = (1,2,3,4,5,6,7,8,9,10,0);

206 Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

OPERADORES

Operadores so smbolos que provocam alguma computao quando aplicado a variveis e


outros objetos em uma expresso.

Operadores Aritmticos
Operadores de Atribuio
Operadores bit a bit
Operadores lgicos
Referncia / Operadores Indireta
Os operadores relacionais
Membro Seletores Estrutura

Operador Vrgula ,
Operador condicional ? :

Matriz do operador subscrito []


Funo de operador de call ()

sizeof Operador

Preprocessor Operadores # e # #

Mikroelektronika - Solues de software e hardware para o mundo embutido 207


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Operadores Presidence e Associativismo

H 15 categorias de precedncia, alguns deles contm um nico operador.


Operadores na mesma categoria tm a mesma precedncia.

Se duplicatas de operadores aparecem na tabela, a primeira ocorrncia unrio e


segundo binrio. Cada categori a tem uma regra de associativi dade: da ), Ou da direita para a
esquer da para a direita (
esquer ). Na ausncia de parnteses, essas regras resolver um agrupamento de expres-
da (
es com os operadores de precedncia igual.
Precedncia Operando Operadores Associativis
15 s 2 () []. -> mo
! ~ + + - + - *
14 1
& (Tipo) sizeof
13 2 *% /

12 2 + -

11 2 <<>>

10 2 <<=>> =

9 2 ==! =

8 2 &

7 2 ^

6 2 |

5 2 & &

4 2 | |

3 3 ?:
= *= / =% = + = -= & ^ =
2 2
| = <<=>>
1 2 ,

Operadores Aritmticos

Os operadores aritmticos so usados para realizar clculos matemticos. Eles tm


operandos numricos e retornar os resultados numricos. O tipo de char tecnicamente repre-
senta nmeros inteiros pequenos, de modo que o char variveis podem ser usadas como
operandos em aritmtica
operaes.

Todos os operadores aritmticos associam da esquerda para a direita.

208 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Operador Operao Precedncia


Operadores Binrios

+ Alm 12

- subtrao 12

* multiplicao 13

/ diviso 13

operad or de mdul o retorna o resto da inteiro


% 13
diviso (no pode ser usado com pontos
flutuantes)
Operadores unrios

+ mais unrio no afeta o operando 14

- unrio mudanas menos o sinal do operando 14


incremento adiciona um ao valor do operan do.
++ PostIncrement adiciona um ao valor do operando 14
depois que ele avalia, enquanto pr-incremento
adiciona uma
antes um
decremento subtrai de avaliar
do valor da
- operando. Postdecrement subtrai um do 14
valor do operan do depois que ele avalia, enquanto
pr-
diminuio subtrai um antes de avaliar
Nota: O operador * sensvel ao contexto e tambm pode representar a referncia de ponteiro
operador.

Mikroelektronika - Solues de software e hardware para o mundo embutido 209


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Binrio Operadores aritmticos

Diviso de dois nmeros inteiros retorna um inteiro, enquanto a restante simplesmente


truncado:

/ * Por exemplo: * /
04/07 / * equivale a 1 * /
7 * 04/03 / * equivale a 5 * /

/ * Mas * /
7. * 3. / 4.; / * Igual a 5,25, porque estamos trabalhando com flutuadores * /

Restante operando % trabalha apenas com nmeros inteiros, o sinal do resultado igual ao
sinal
do primeiro operando:

/ * Por exemplo: * /
9% 3; / * igual a 0 * /
7% 3 / * equivale a 1 * /
-7% 3; / * igual a -1 * /

Aritmtica Os operadores podem ser usados para manipular caracteres:

'A' + 32; / * * igual a 'A' (ASCII) /


'G' - 'A' + 'a'; / * igual a 'g' ( ASCII e EBCDIC) * /

Operadores aritmticos unrios

Unrios operadores + + e - so os nicos operadores em C que pode ser prefixo


(Por exemplo, + + K, - K) ou postfix (por exemplo, k + +, k -).

Quando usado como prefixo, os operadores + + e - (Pr-incremento e preDecrement) adicionar


ou
subtrair um valor do operando antes da avaliao. Quando usado como sufi-
correo, os operadores + + e - (Ps e postdecrement) adicionar ou subtrair uma
do valor do operando aps a avaliao.

Por exemplo:

int j = 5;
j = k + +; / * k = k + 1, k = j, o que nos d k = 6, j = 6 * /

mas:

int j = 5;
j = k + +; / * K = j, k = k + 1, que nos d k = 5, j = 6 * /

210 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Os operadores relacionais

Use operadores relacionais para testar a igualdade ou desigualdade de expresses. Se uma


expres-
Sion avalia ser verdadeiro, ele retorna 1, caso contrrio ele retorna 0.

Todos os operadores relacionais associam da esquerda para a direita.

Viso geral sobre operadores relacionais


Operador Operao Precedncia

== igualdade 9

!= no igual 9

> superior 10

< menos de 10

>= igual ou superior 10

<= inferior ou igual 10

Operadores relacionais em expresses

Precedncia dos operadores aritmticos e relacionais designado de modo a


permitir expresses complexas sem parnteses para esperar significado:

a + 5> = c - 1.0 / e / *? (A + 5)> = (c - (1,0 / e)) * /

No se esquea que os operadores relacionais retornam 0 ou 1. Considere o seguinte


exemplos:

/ * Ok: * /
5> 7 / * Retorna 0 * /
10 <20 = / * Retorna 1 * /

/ * Isso pode ser complicado: * /


13 8 ==> 5 / * Retorna 0, como: 8 == (13> 5)? 8 == 1
? 0 * /
14> 5 < 3 / * retorna 1, como: (14> 5) <3? 1 <3?
1 * /
a <b <5 / * retorna 1, co mo: (a <b) <5? (0 ou 1)
<5? 1 * /

Mikroelektronika - Solues de software e hardware para o mundo embutido 211


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Operadores bit a bit

Usar os operadores bit a bit para modificar bits individuais dos operandos numricos.

Operadores bit a bit adjunto da esquerda para a direita. A nica exceo o com -bit a bit
operador plementar ~ que associa a partir de direita para a esquerda.

Viso geral sobre operadores bit a bit

Operador Operao Precedncia

& E bit a bit; compar a pares de bits e retorna 1 se 8


ambos os bits forem 1, caso contrrio
retorna 0
bit a bit (inclusive) OR; compara pares de bits e retorna 1 se
| 6
um ou ambos os bits so 1, caso contrrio
retorna 0
bit a bit OU exclusivo (XOR); compara pares de bits
^ e retorna 1 se os bits so compl em e ntar es , outras 7
retorna sbio 0

~ bit a bit complemento (unrio); inverte cada bit 14

<< desvio para a esquer d a bit a bit; mov e os bits para a 11


esquer d a, as devol u es
o bit mais esquerda
deslocamento e atribui
direita bit a 0 para
a bit; move o bitpara
os bits maisa
>> direita.
direita, dis- 11
cartes bit da extrema-direita e se unsigned atribui
0a
o bit mais esquerda, caso contrrio, sinal
Operaes Lgicas sobre Nvel de Bit
estende
& 0 1 | 0 1 ^ 0 1 ~ 0 1
0 0 0 0 0 1 0 0 1
1 0
1 0 1 1 1 1 1 1 0

Oper ador es bit a bit &, | e ^ realizar oper a es lgicas sobre os pares apropri a do de bits
de seus operandos. Operador ~ complementa cada bit do seu operando. Por exemplo:

212 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem
0x1234 e 0x 5678 / * Igual a 0x1230 * /

/ * Porque ..

0x1234: 0001 0010 0011 0100


0x5678: 0101 0110 0111 1000
----------------------------
E: 0001 0010 0011 0000

.. ou seja, 0x1230 * /

/ * Do mesmo modo: * /

0x1234 | 0x5678; / * Igual * 0x567C /


^ 0x1234 0x5678; / * Igual * 0x444C /
~ 0x1234; / * Igual * 0xEDCB /

Nota: O operador & tambm pode ser um operador de referncia de ponteiro. Consulte os
ponteiros para
mais informaes.

Shift Operadores bit a bit

Operadores binrios << e >> mover os bits do operando esquerda por uma srie de po-
es especificado pelo operando da direita, esquerda ou direita, respectivamente.
Operando direito
tem que ser positivo.

Com o deslocamento esquerda (<<), bits esquerda so descartados e"Novo" bits direita
so atribudos
zeros. Assim, deslocando operando sem sinal para a esquerda n posies equivalente a
multiplicando-se por 2n se todos os bits so descartados zero. Isso tambm vlido para
operandos assinado
Se todos os bits so descartados igual a um bit de sinal.

000.001 << 5; / * Equivale a 000.040 * /


0x3801 << 4; / * Igual a 0x8010, estouro! * /

Com o deslocamento para a direita (>>), extrema-direita bits so descartados e os "Libertado"


bits esquerda so
zeros atribudos (no caso do operando sem sinal) ou o valor de um bit de sinal (no caso de
assinado operando). Mudando operando para a direita por posies n equivalente a divid-
ing-lo por 2n.

0xFF56>> 4; / * Equivale 0xFFF5 * /


0xFF56u>> 4; / * Equivale 0x0FF5 * /

Mikr
oele
ktro
nika
- Solues de software e hardware para o mundo embutido

213
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Bitwise versus lgica

No se esquea da diferena de princpio entre a forma como os operadores bit a bit e lgica
de trabalho. Por exemplo:

0222222 e 0555555; / * Equivale a 000.000 * /


0222222 e 0555555 &; / * Equivale a 1 * /

~ 0x1234; / * Igual * 0xEDCB /


! 0x1234; / * Igual a 0 * /

Operadores lgicos

Operandos de operaes lgicas so consideradas verdadeiras ou falsas, que diferente de


zero ou zero.
Os operadores lgicos sempre retornam 0 ou 1. Os operandos em uma expresso lgica deve
ser de
tipo escalar.

Os operadores lgicos & & e | | associam da esquerda para a direita. Lgico operador de
negao !
associados da direita para a esquerda.
Operador Operao Precedncia
Viso geral sobre operadores lgicos
&& E lgico 5
|| OR lgico 4
! negao lgica 14

Operadores lgicos | | 0 x

0 0 1

x 1 1

Precedncia dos operadores lgicos, relacionais e aritmticos foi designado como


uma forma de permitir expresses complexas sem parnteses para ter uma expectativa de
significado:

c> = '0 '& & c <= '9'; / * L: (c> = '0 ') & & (c <= '9') * /
a + 1 == b | |! f (x); / * L: ((a + 1) == b) | | * / ((f (x))!)

E lgico & & retorna 1 se ambas as expresses avaliar a ser zero, caso contrrio

214 Mikroelektronika - Solues de software e hardware para o mundo embutido


&& 0 x ! 0 x

0 0 0 1 0
x 0 1
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

retorna 0. Se a primeira expresso avaliada como false, o segunda expresso no ser


avaliados. Por exemplo:

a> b & & c <d / * l como (a> b) & & (c <d) * /


/ * If (a> b) falso (0), (c <d) no sero avaliadas * /

OU lgico | | retorna 1 se quer de expresso avalia a ser zero, caso contrrio


retorna 0. Se a primeira expresso avaliada como verdadeira, a segunda expresso no
ava-
liada. Por exemplo:

a & & b | | c & d & / * l como: (a & & b) | | (c & d &) * /


/ * If (a & & b) verdadeira (1), * (& c & d) no sero avaliados /

Expresses lgicas e lateral Efeitos

Regra geral sobre expresses lgicas complexas que a avaliao das conse-
comerciais e executivas pra lgica operandos no exato momento do resultado final
conhecido. Por exem-
Por exemplo, se temos uma expresso a & & b & & c onde um falso (0), ento operandos b
e c no sero avaliados. Isso muito importante se b e c so expresses, como
possveis efeitos colaterais no vai acontecer!

Lgico versus Bitwise

Esteja ciente da diferena de princpio entre a forma como os operadores bit a bit e lgica
de trabalho. Por exemplo:

0222222 e 0555555 / * Equivale a 000.000 * /


0222222 e 0555555 e / * Equivale a 1 * /

~ 0x1234 / * Igual * 0xEDCB /


! 0x1234 / * Igual a 0 * /

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo 215


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Operador condicional? :

O condicional operador ? : o nico operador ternrio em C. A sintaxe da condi-


operador internacional :

expresso1? expression2: expression3

A expression1 avaliada primeiro. Se o valor for verdadeiro, ento expression2 avalia


e expression3 ignorado. Se express o1 avaliada como falso, ento expression3
avalia e expression2 ignorado. O resultado ser um valor de expres-
sion2 ou expression3 dependendo de qual deles avalia.

Nota: O facto de apenas uma dessas duas expresses avaliada muito importante se
espera-se que produzem efeitos colaterais!

associados operador condicional da direita para a esquerda.


Aqui esto alguns exemplos prticos:

/ * Encontrar max (a, b): * /


max = (a> b)? a: b;

/ * Converte pequena carta para o capital: * /


/ * (Sem parnteses so realmente necessrio) * /
c = (c> = 'a' & & c <= 'z')? (C - 32): c;

Regras Operador Condicional

expression1 deve ser uma expresso escalar; expression2 e expression3 deve


obedecer a uma das seguintes regras:

1. Ambas as expresses tm de ser de aritmtica tipo. expression2 e expression3


esto sujeitos s converses aritmticas usuais, que determina o tipo do resultado.
2. Ambas as expresses tm de ser compatveis dos tipos struct ou unio. O resultado
tipo um tipo de estrutura ou unio de expression2 e expression3.
3. Ambas as expresses tm de ser de vazio tipo. O tipo resultante nulas.
4. Ambas as expresses devem ser do tipo ponteiro para verses qualificados ou no
qualificados
de tipos compatveis. O tipo resultante um ponteiro para um tipo qualificado, com todo o
tipo
qualificadores do tipo apontado por ambas as expresses.
5. Uma expresso um ponteiro, eo outro um ponteiro constante nula. O resultado-
o tipo um ponteiro para um tipo qualificado com todos os qualificadores do tipo
ponto-tipos
ed por ambas as expresses.
6. Uma expresso um ponteiro para um tipo de objeto ou incompleta, eo outro um
ponteiro para uma verso qualificados ou no qualificados dos nulas. O tipo resultante
a de
o ponteiro-para-no-vazio expresso.
216
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Operadores de Atribuio

Ao contrrio de muitas outras linguagens de programao, C trata de atribuio de valores


como a operao
(Representada por um operador) ao invs de instruo.

Operador de atribuio simples

Para uma atribuio de valor comum, um operador de atribuio simples (=) utilizados:

= expresso1 expresso2

A expression1 um objeto (posio de memria) para que o valor de expression2


atribudo. Operando expression1 tem que ser lvalue e expression2 pode ser qualquer
expresso. A expresso de atribuio em si no lvalue.

Se expression1 e expression2 so de tipos diferentes, o resultado da expres-


sion2 sero convertidos para o tipo de expresso1, se for necessrio. Consulte o Tipo
Converses para mais informaes.

Operador de atribuio composto

C permite que as atribuies mais COMLEX por meio de operadores de atribuio compostos.
A sintaxe dos operadores de atribuio composta so:

op = expresso1 expresso2

onde op pode ser um dos operadores binrios +, -, *, /,%, &, |, ^, <<, ou >>.

Assim, temos 10 operador es de atribuio compos tos diferentes: + =, -=, *= / =%, =,


& =, | ^ =, =, <<= e >> =. Todos eles associam da direita para a esquerda. sepa -Spaces
Avaliao operadores compostos (por exemplo, + =) Ir gerar um erro.

atribuio composto tem o mesmo efeito que

expresso1 = expresso1 expresso2 op

exceto o lvalue expression1 avaliada apenas uma vez. Por exemplo, expres-
sion1 + = expresso2 o mesmo que expresso1 = expresso1 + expres -
sion2.

Mikroelektronika - Solues de software e hardware para o mundo embutido 217


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Regulamento de Atribuio

Para ambos os atribuio simples e compostos, os operandos expression1 e


expression2 deve obedecer a uma das seguintes regras:

1. expression1 do tipo aritmtica qualificados ou no qualificados e expression2 de


aritmtica tipo.
2. expression1 tem uma verso qualificados ou no qualificados do tipo de estrutura ou unio
compatvel com o tipo de expression2.
3. expression1 e expression2 so ponteiros para as verses qualificados ou no qualificados
de tipos compatveis eo tipo apontado pelo esquerdo tem todos os qualificadores do tipo
apontado pela direita.
4. Quer expression1 ou expression2 um ponteiro para um ou tipo de objeto incompleto
eo outro um ponteiro para uma verso qualificados ou no qualificados de vazio. O tipo de
apontado pela esquerda tem todos os qualificadores do tipo apontado pelo direito.
5. expression1 um ponteiro e expression2 um ponteiro constante nula.

Operador sizeof

O operador unrio prefixo sizeof retorna um inteiro que representa a constante


tamanho do espao de memria (em bytes) usado pelo seu operando (determinado pelo seu
tipo, com
algumas excees).
O operador sizeof pode apanhar um identificador de tipo ou uma expresso unrio como um
operando. Voc no pode usar sizeof com expresses do tipo de funo, tipos incompletos,
parnteses os nomes de tais tipos, ou com lvalue que designa um objeto campo de bits.

Sizeof Aplicada Expresso

Se aplicada a expresso, o tamanho de um operando determinado sem avaliar a


expresso (e, portanto, sem efeitos colaterais). O resultado da operao ser
o tamanho do tipo de resultado da expresso.

Sizeof Aplicada ao tipo

Se aplicada a um tipo de identificador, sizeof retorna o tamanho do tipo especificado. A


unidade
para o tamanho do tipo sizeof (char) o que equival e a um byte. A opera o tamanho
de (char) d o resultado 1, se char assinado ou no assinado.

Assim:

sizeof (char) /* retorna 1 * /


sizeof (int) /* retorna 2 * /
sizeof (unsigned long) /* retorna 4 * /
sizeof (float) /* retorna 4 * /

218 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Quando o operando um parmetro do tipo no-matriz, o resultado o nmero total de


bytes na matriz (em outras palavras, um nome de matriz no convertido para um tipo de
ponteiro):

int i, j, uma [10];


...
j = sizeof (a [1]); / * J = sizeof (int) = 2 * /
i = sizeof (a); / * I = 10 * sizeof (int) = 20 * /

/ * Para obter o nmero de elementos em um array * /


num_elem int = i / j;

Se o operando um parmetro declarado como tipo de matriz ou um tipo de funo, sizeof d


o tamanho do ponteiro. Quando aplicada s estruturas e aos sindicatos, sizeof d a
nmero total de bytes, incluindo qualquer preenchimento. O operador sizeof no pode ser
aplicada a uma funo.

EXPRESSO

A expresso uma seqncia de operadores, operandos e pontuadores que especifica um


computao. Formalmente, as expresses so definidas recursivamente: subexpresses pode
ser
aninhados sem limite formal. No entanto, o compilador apresentar um erro de falta de
memria
se no possvel compilar uma expresso que muito complexo.

Em ANSI C, o expresses primrias so: constante (tambm referida como literal), identi-
Fier, e (expresso), definido de forma recursiva.

As expresses so avaliadas de acordo com uma converso de certos agrupamentos,


associativi-
ty e regras de precedncia, o que depende dos operadores utilizados, presena de paren-
teses e tipos de dados dos operandos. A precedncia ea associatividade dos
Os operadores esto resumidas no Operador de Precedncia e associatividade. O caminho
operandos e subexpresses so agrupados no necessariamente especificar o real
ordem em que so avaliados pelo mik roC PRO para a PIC.

As expresses podem produzir lvalue, rvalue, ou nenhum valor. Expresses podem causar
efeitos secundrios
efeitos se produzem um valor ou no.

Vrgula Expresses

Uma das especificidades do C que ela permite o uso da vrgula como um operador de
seqncia para
chamada forma expresses vrgula ou seqncias. expresso Vrgula uma vrgula
lista de expresses delimitados - formalmente tratado como uma nica expresso para que
ele possa
ser utilizado em locais onde a expresso esperado. A seguinte seqncia:
expression_1, expression_2;

Mikroelektronika - Solues de software e hardware para o mundo embutido 219


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

resultados na esquerda para a direita avaliao de cada expresso, com o valor eo tipo de
expression_2 dando o resultado da express o completa. Resultado da expression_1
descartado.

vrgula operador binrio (,) tem a prioridade mais baixa e associados da esquerda para a
direito, de modo que a, b, c o mesmo que (A, b), c Isto permite escrever seqncias
com qualquer nmero de expresses:

expression_1, expression_2, ... expression_n;

o que resulta na avaliao da esquerda para a direita de cada expresso, com o valor e
tipo de expression_n dando a resultado da expresso inteira. Os resultados de outras
expresses so descartados, mas o seu (possvel) efeito colateral acontecem.

Por exemplo:

resultado = (a, b = 5 / = 2, C + +);


/ * Retorna preincremented valor da varivel c,
mas tambm intializes a, b divide por 2 e incrementos de c * /

resultado = (x = 10, y = x + 3, x -, z -= x * 3 - - y);


/ * Retorna calculado o valor da varivel z,
e tambm calcula x * e y /

Nota

No confunda operador vrgula (seqncia operadora) com pontuador vrgula que


separa os elementos em um lista de funes e listas de discusso Inicializador. Para evitar
ambi-
vocos com vrgulas no argumento da funo e lista de inicializador, use parnteses. Para
exemplo,

funo (i, (j = 1, j + 4), k);

chama a funo func com trs argumentos (i, 5, k), e no quatro.

220 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

DEMONSTRAES

Demonstraes especificar um fluxo de controle como o programa executa. Na ausncia de


Ir especficos e seleo declaraes, os comandos so executados em seqncia na
ordem de apario no cdigo-fonte.

As declaraes podem ser divididos em:

- Rotulado Demonstraes
- Expresso Demonstraes
- Instrues de Seleo
- Instrues iterao (Loops)
- Ir Demonstraes
- Declaraes compostas (blocos)

Rotulado Demonstraes

Cada instruo em um programa podem ser rotulados. Um rtulo um identificador adicionado


antes
a declarao como esta:

label_identifier: instruo;

No h nenhuma declarao especial de uma etiqueta - apenas "Tags" a declarao.


label_iden-
tifier tem escopo de uma funo e no rtulo do mesmo no pode ser redefinido no
mesma funo.

Os rtulos tm o seu prprio espao: etiqueta de identificao pode corresponder a qualquer


outro identificador no
o programa.

A declarao pode ser rotulado por duas razes:

1. O rtulo identificador serve como meta para a instruo goto incondicional,

2. O rtulo identificador serve como meta para a instruo switch. Para este efeito,
apenas caso e padro demonstraes rotulados so utilizados:

caso a expresso constante: instruo


default: declarao

Mikroelektronika - Solues de software e hardware para o mundo embutido 221


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Expresso Demonstraes

Qualquer expresso seguido por um ponto e vrgula faz uma declarao de expresso:

expresso;

A mik roC PRO para PIC executa uma instruo de expresso atravs da avaliao da
expresso. Todos os efeitos colaterais desta avaliao sejam concludas antes do
prximo
instruo inicia a execuo. A maioria das declaraes so expresso de at ribuio do Estado
mentos ou chamadas de funo.

A declarao de nulidade um caso es pecial, constitudo por um nico ponto e vrgula (;). O
nulo
declarao no faz nada e, portanto, til em situaes onde o mik roC PRO
para PIC sintaxe espera uma declarao, mas o programa no precisa de um. Por exem -
plo, uma declarao de nulidade comumente usado em "Vazio" loops:

para (; Q * + + * p = + +;); / * corpo de ste loop um com ando nul o * /

Instrues de Seleo

Seleo ou declaraes de controle de fluxo de selecionar um dos cursos alternativos de ao


por
testes de determinados valores. Existem dois tipos de declaraes de seleo:

se
switch

Se a Declarao

A se declarao usada para implementar uma instruo condicional. A sintaxe da


se afirmao :

se (Expresso) [statement1 mais statement2]

Se expresso avalia a verdade, statement1 executa. Se declarao falsa,


statement2 executa. A expresso deve ser avaliada como um valor integral; outras
sbio, a condio mal formado. Parnteses em torno da expresso so obriga-
ry.

A mais palavra-chave opcional, mas no h indicaes podem vir entre se e mais.

222 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Instruo if aninhada

Nested se demonstraes requerem maior ateno. A regra geral que a nested


condicionais so analisados a partir do mais ntimo condicional, com cada mais
vinculado ao mais prximo disponvel se em sua esquerda:

se (Expresso1) statement1
else if (Expression2)
se (Expression3) statement2
mais instruo3 / * Este pertence: se * (expression3) /
mais statement4 / * Este pertence: se * (expression2) /

Nota

# If e # Else declaraes de pr-processamento (Directivas) semelhante ao se e mais


declaraes, mas tm efeitos muito diferentes. Eles controlam o que as linhas do arquivo de
origem so
compilada e que so ignorados.

Switch Demonstraes

A switch declarao usada para passar o controle para um ramo do programa especfico,
com base
em uma determinada condio. A sintaxe da switch afirmao :

switch (Expresso) {
caso constante-expression_1: statement_1;
.
.
.
caso expression_n constante: statement_n;
padro [ : Declarao;]
}

Primeiro, o expresso (Condio) avaliada. A switch declarao, em seguida, com-


bora la a todos os disponveis constante, as seguintes expresses a palavra-chave caso. Se um
jogo
for encontr ado, switch passa o control e para que a adequa o caso fazendo com que o
declarao fol-
tes da partida avalia. Note -s e que constante s expres ses de deve avaliar a
inteiro. No possv el ter duas mesmo expresses constan tes avaliar a
o mesmo valor.

Parnteses em torno expresso so obrigatrios.

Ao encontrar uma correspondncia, o fluxo do programa continua normalmente: as instrues a


seguir
ser executado de forma natural, independentemente da possvel caso etiqueta. Se nenhum
caso
satisfaz a condio, a padro caso avalia (se o rtulo padro especi-
cados).
Por exemplo, se uma varivel i tem valor entre 1 e 3, a opo seguinte seria

Mikroelektronika - Solues de software e hardware para o mundo embutido 223


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

sempre devolv-lo como 4:

switch (I) {
caso 1: i + +;
caso 2: i + +;
caso 3: i + +;
}

Para evitar a avaliao de qualquer outros casos, e abandonar o controle de comutador, cada
caso
deve ser encerrado no intervalo.

A qui um s i mpl es ex e mpl o, c o m switch. Suponha q ue temos u ma vari vel fase c o m ap enas
Trs estados diferentes (0, 1 ou 2) e uma funo correspondente (evento) para cada uma
dessas
Estados. Isto como ns poderamos mudar o cdigo para o appopriate rotina:

switch (Fase) {
caso 0: Lo (); break;
caso 1: Mid () break;
caso 2: Oi () break;
caso: Mensagem ("Estado invlido!");
}

Nested Switch

Condici onal switch declara es podem ser aninhados - rtulos caso e padro so, ento,
atribudo ao mais profundo que encerram switch declarao.

Iterao Demonstraes (Loops)

instrues de iterao de loop permite um conjunto de instrues. H trs formas de iter-


demonstraes rao na mik roC PRO para PIC:

enquanto
fazer
para

Enquanto a Declarao

A enquanto palavra-chave usado para iterar condicionalmente um comunicado. A sintaxe da


enquanto afirmao :

enquanto (Expresso) instruo

A declarao executa repetidamente at que o valor de expresso falsa. O teste


ocorre antes declarao executad o. Assim, se expresso avalia a falsa

224 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

na primeira passagem, o loop no executado. Note que os parnteses em torno de expres-


Sion so obrigatrios.

Aqui est um exemplo de clculo do produto escalar de dois vetores, usando o enquanto
declarao:

int s = 0, i = 0;
enquanto (I <n) {
s + = a [i] * b [i];
i + +;
}

Note que o corpo do lao pode ser nulo declarao. Por exemplo:

enquanto (Q * + + * p = + +);

Do Declarao

A fazer instruo executada at que a condio se torne falsa. A sintaxe da fazer


afirmao :

fazer declarao enquanto (Expresso);

A declarao executado repetidamente enquanto o valor de expresso permanece


diferente de zero. A expresso avaliada aps cada iterao, portanto, o loop ser executado
declarao de pelo menos uma vez.

Parnteses em torno expresso so obrigatrios.

Note que no a estrutura de controle apenas em C, que expressamente termina com ponto e
vrgula
(;). Outras estruturas com controlo final declarao, o que significa que eles
implicitamente
incluir um ponto e vrgula ou chave de fechamento.

Aqui est um exemplo de clculo do produto escalar de dois vetores, usando o fazer Estado
mento:

s = 0, i = 0;
fazer {
s + = a [i] * b [i];
i + +;
} enquanto (I <n);

Mikroelektronika - Solues de software e hardware para o mundo embutido 225


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Para a declarao

A para declarao implementa um loop iterativo. A sintaxe da para declarao


o seguinte:

para (Expresso [init]; Expresso [condio]; incremento [expres-


] Sion) declarao

Antes da primeir a iterao do loop, init-expresso define as variveis de partida para


do loop. Voc no pode passar em declaraes init-expresso.

condio de expresso verificada antes da da primeira entrada do bloco; declarao


executado repetidamente at que o valor de condio de expresso falsa. Depois
cada iterao do loop, expresso de incremento incrementos de um contador de loop. Con-
Consequentemente, i + + funcionalmente o mesmo que + + I.

Todas as express es so opcionai s. Se condio de expresso deixado de fora, assumi do


que
ser sempre verdadeira. Assim, "Vazio" para afirmao comumente usado para criar um fim-
menos loop em C:

para (;) Declarao

A nica maneira de quebrar este ciclo por meio do quebrar declarao.

Aqui est um exemplo de clculo do produto escalar de dois vetores, usando o para Estado
mento:

para (S = 0, i = 0; i <n, i + +) s + = a [i] * b [i];

No existe outra maneira de fazer isso:

para (S = 0, i = 0; i n <; s + = a [ i] * b [i], i + +); / * Vlido, mas


* Feio /

mas considerado um estilo de programao ruim. Embora legal, o clculo do montante


no deve ser uma parte da expresso de incremento, porque no est em o servio
da rotina de loop. Note que a declarao nula (;) usado para o corpo do lao.

226 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Ir Demonstraes

A instruo de salto, quando executado, transfere o controle incondicionalmente. H


quatro tais declaraes no mik roC PRO para PIC:

quebrar
continuar
goto
retorno

Break e continue

Ruptura de Declarao

s vezes necessrio parar o loop dentro de seu corpo. Use o quebrar declarao
dentro de loops para passar o controle para a primeira instruo seguinte ao interior switch,
para, ao mesmo tempo, ou fazer bloco.

quebrar comumente utilizada na switch instrues para impedir a sua execuo sobre o
resultado positivo em primeiro lugar. Por exemplo:

switch (Estado) {
caso 0: Lo (); break;
caso 1: Mid (); break;
caso 2: Oi (); break;
default: Mensagem ("Estado invlido!");
}

Continuar a Declarao

A continuar declarao no prazo de malhas usada para "Ignorar a ciclo ". Ele passa o
controle
ao fim do fim mais profundo que encerram cinta pertencente a uma construo de loop. Em
que ponto a condio de continuao do lao reavaliada. Isso significa que conti-
ue exige a prxima iterao se a continuao do lao condio for verdadeira.

Especificamente, o continuar declarao dentro do loop vai saltar para a posio marcada-
o, uma vez que mostrada abaixo:
enquanto (..) { fazer { para (..;..;..) {
... ... ...
if (> val 0) continue; if (> val 0) continuar; if (> val 0) continue;
... ... ...
/ / Continue saltos / / Continue saltos / / Continue saltos
aqui aqui aqui
} enquanto (..); }

Mikroelektronika - Solues de software e hardware para o mundo embutido 227


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Goto Declarao

A goto declarao usada para salto incondicional para um rtulo local - para mais infor-
informa es nos rt ulos, se referem a declaraes identificadas. A sintaxe da goto afirma o :

goto label_identifier;

Is to ir tr ans ferir o c ontr ol e par a a l oc aliz a o de u m s el o l oc al es pec ifi c ado pel o label_iden ti-
Fier. A label_identifier tem que ser um nome da etiqueta na mesma fun-
o em que o goto declarao . A linha goto pode vir antes ou depois do rtulo.

goto usado para sair de qualquer nvel das estruturas de controle aninhadas, mas ele no
pode ser
usado para pular em um bloco, enquanto saltando inicializaes que bloco- por exemplo, salta-
o no corpo do lao, etc

O uso de goto declarao geralmente desencorajado, pois praticamente todos os algoritmo


pode
ser realizado sem ele, resultando em programas estruturados legveis. Uma possvel aplicao
da goto afirmao sair de estruturas de controle aninhadas profundamente:

para (...) {
para (...) {
...
se (Desastre) goto Erro;
...
}
}
.
.
.
Erro: / * erro * cdigo de tratamento /

Instruo Return

A retorno declarao usada para sair da funo atual de volta para o chamado
rotina, opcionalmente retornar um valor. A sintaxe :

retorno [Expresso];

Isto ir avaliar expresso e retornar o resultado. valor retornado ser auto-


automaticamente convertidos para o tipo de funo esperado, se necessrio. A expresso
opcional, se omitido, a funo retornar um valor aleatrio da memria.

Nota: A declara o retorno em fun es do vazio tipo no pode ter expres-


Sion - na verdade, a retorno declarao pode ser omitido por completo, se o ltimo estado-
mento no corpo da funo.

228 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Declaraes compostas (blocos)

A instruo composta, ou bloco, uma lista (possivelmente vazia) de declaraes em anexo


em chaves correspondentes {}. Sintaticamente, o bloco pode ser considerado como um nico
declarao, mas tambm desempenha um papel no escopo de identificadores. Um identificador
declarado
dentro do bloco tem um alcance a partir do ponto da declarao e termina no
chave de fechamento. Os blocos podem ser aninhados em qualquer profundidade at aos
limites da memria.

Por exemplo, o para loop espera uma declarao em seu corpo, para que possamos passar
um
instruo composta:

para (I = 0; i <n, i + +) {
int temp = a [i];
a [i] = b [i];
b [i] = temp;
}

Note que, ao contrrio de outras declaraes, instrues compostas no terminam com ponto e
vrgula
(;), Ou seja, nunca h um ponto e vrgula aps o chave de fechamento.

PreProcessor

Pr-processador um processador de texto integrado que prepara o cdigo fonte para


compilao. Preprocessor permite:

- A insero de texto de um arquivo specifed at um certo ponto no cdigo (veja o arquivo de


incluso),
- Substituio especficas smbolos lexical com outros smbolos (veja Macros),
- Compilao condicional que condicionalmente inclui ou omite partes do cdigo (ver
Compilao Condicional).

Note que o pr-processador de texto analisa a nvel simblico, no a nvel de carcter


individual.
Preprocessor controlado por meio de directivas de pr-processamento e de
pr-processamento
operadores.

Preprocessor directivas

Toda a linha no cdigo-fonte com um lder # tida como um pr-processamento directiva (Ou
linha de controlo), a menos # est dentro de uma seqncia literal, em um carter permanente,
ou incorporado
em um comentrio. A inicial # pode ser precedido ou seguido de um espao (excluindo
novas linhas).

A directiva nula consiste de uma linha contendo o caractere nico #. Esta linha sempre
ignorados.

directivas Preprocessor so geralmente colocados no incio do cdigo-fonte, mas


Mikroelektronika - Solues de software e hardware para o mundo embutido 229
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

eles podem aparecer legalmente em qualquer ponto do programa. A mik roC PRO para PIC pr-
directivas de pr-processamento do processador detecta e analisa as fichas embutido
elas. A directiva est em vigor a partir de sua declarao at o final do arquivo do programa.

Aqui est uma directiva comumente utilizados:

# Include <math.h>

Para mais informaes sobre arquivos, incluindo com o # Include directiva, se referem ao
arquivo
Incluso.

A mik roC PRO para PIC suporta directivas de pr-processamento padro:

# (Directiva null) # If
# Define # Ifdef
# Elif # Ifndef
# Else # Include
# Endif # Line
# Erro # Undef

Nota: Por enquanto pragma Funcall s suportada.

Continuao de linha com contrabarra (\)

Para quebrar directiva em vrias linhas terminar a linha com uma barra invertida (\):

# Define MACRO Esta directiva continua a \


a linha a seguir.

230 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Macros

As macros fornecem um mecanismo de substituio do token, antes da compilao, com ou


sem um conjunto de formal, os parmetros de funo semelhante.

Definindo macros e Expanses Macro

A # Define directiva define uma macro:

# Define macro_identifier <token_sequence>

Cada ocorrncia de macro_identifier no cdigo fonte a seguir esta linha de controle


ser substitudo na posio original com o possivelmente vazio token_sequence (H
algumas excees, que so discutidos mais tarde). Essas substituies so conhecidos como
macro
expansi ons .tok en _s eq uenc e s vezes chamado o corpo de uma macro. Um token vazio
seqncia de resultados na remoo de cada macro afetados identificador a partir do cdigo
fonte.

Nenhum ponto e vrgula (;) necessrio para finalizar uma directiva de pr-processamento.
Qualquer personagem
encontrado na seqncia token, incluindo vrgulas, aparecer em uma expanso de macro-
sion.token_sequence termina no encoun primeira linha no barra invertida novo
registado. Qualquer seqncia de espaos, incluindo comentrios na s eqncia token,
substitudo por um caractere de espao nico.

Depois de cada indivduo expanso macro, uma nova verificao feita do recm -expandido
texto. Isso permite a possibilidade de utilizar macros aninhados: o texto expandido pode conter
identificadores de macro que esto sujeitos substituio. No entanto, se a macro se expande
em
algo que se parece com uma directiva de pr-processamento, directiva, tal no ser reco-
cida pelo pr-processador. Todas as ocorrncias do macro identificador encontrado dentro
literal
cordas, constantes de caracteres, ou comentrios no cdigo-fonte no ser ampliada.

A macr o no ser expandi do durante sua expans o (assim # Define macro macro
no ir expandir-se indefinidamente).
Aqui est um exemplo:

/ * Aqui esto algumas macros simples: * /


# Define err_msg "Fora do alcance!"
# Define EVERLOOP para (;)
/ * Que ns poderamos usar assim: * /
main () {
EVERLOOP {
...
se (Erro) {Lcd_Out_Cp (err_msg); break;}
...
}
}
Mikroelektronika - Solues de software e hardware para o mundo embutido

231
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

A tentativa de redefinir uma macro j est definido identificador resultar em uma advertncia
a menos que uma nova definio exatamente a mesma definio de token-a-smbolo como o
actual
um. A estratgia preferida quando as definies podem existir em outros arquivos de cabealho
to
seguinte forma:

# Ifndef BLOCK_SIZE
# Define BLOCK_SIZE 512
# Endif

A linha mdia ignorada se BLOCK_SIZE est defini do, se BLOCK_SIZE


atualmente no definidos, a linha do meio chamado para defini-lo.

Macros com parmetros

A sintaxe a seguir usada para definir uma macro com parmetros:

# Define macro_identifier (<arg_list>) <token_sequence>

Note que no pode haver espa o em branco entre macro_ident ifier e "(". A
opcional arg_list uma seqncia de identificadores separados por vrgulas, como os argu-
lista desenvolviment o de uma funo C. Cada vrgula delimitado identificador tem o papel de
um formal
argumento ou espao reservado.

Tais macros so chamados por escrito

macro_identifier (<actual_arg_list>)

no cdigo-fonte subseqentes. A sintaxe idntica de uma chamada de funo;


na verdade, muitos biblioteca padro C "Funes" so implementadas como macros. No
entanto,
existem algumas importantes diferenas semnticas.

O opcional actual_arg_ list deve conter o mes mo nmer o de delimitar- v r gul a


ed seqncias token, conhecido como argumentos reais, como os encontrados na arg_list
formal de
o # Define linha - deve haver um argumento real para cada argumento formal. Um
erro ser relatado se o nmero de argumentos em duas listas no a mesma.

Uma macro resultados pem em dois conjuntos de substituies. Primeiro, o macro eo


identificador
argumentos parntese fechado substituda pela seqncia de token. Em seguida, qualquer
for-
argumentos mal que ocorre na seqncia de token so substitudos pelos correspondentes
ar gum entos r eai s c ons tantes actua l_arg_li st. Ta l como com simples defin ies de mac ro,
rescanning ocorre para detectar quaisquer identificadores macro incorporada elegveis para a
expanso.
Aqui est um exemplo simples:

/ * Um macro simples que reto rna maio r de seu s 2 argum entos: * /

232 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Idioma Referncia
# Define _MAX (A, B) ((A)> (B))? (A): (B)

/ * Vamos cham-lo: * /
_MAX x = (a + b, c + d);

/ * Pr-processador ir t ransformar a linha anterior para:


x = ((a + b)> (c + d))? (A + b) (c + d) * /

muito recomenda-se colocar parnteses em torno de cada argumento na macro


corpo a fim de evitar possveis problemas com a precedncia do operador.

Indefinida Macros

A # Undef diretiva usada remover a definio de uma macro.

# Undef macro_identifier

A directiva # Undef separa qualquer seqnci a anteri or token macro_identi-


fier, a definio de macro foi esquecido, e macro_identifier indefinido.
Nenhuma expanso macro ocorre dentro do # Undef linhas.

O estado de ser definido ou indefinido uma propriedade importante de um identificador


indepe nde ntem ente da defini o atual. A # Ifdef e # Ifndef directiv as condici on ai s,
usado para testar se qualquer identificador est definido ou no, oferecer um mecanismo
flexvel de
nismos para controlar vrios aspectos de uma compilao.

Depois de um macro identificador foi definido, ele pode ser redefinido com # Define,
utilizando
a seqncia igual ou diferente do token.

Incluso de arquivos

A directiva de pr-processamento # Include puxa arquivos de cabealho (extenso. h) no


cdigo-fonte. No confie na pr-processador para incluir os arquivos fonte (extenso) - veja
Adicionar / Remover arquivos do projeto para obter mais informaes.

A sintaxe da # Include directiva tem dois formatos:

# Include <header_name>
# Include "header_name"

O pr-processador elimina a # Include linha e substitui-lo com todo o texto


um arquivo de cabealho em que ponto do cdigo-fonte. A colocao de # Include no pode-
portanto influenciar o alcance ea durao de qualquer identificadores no arquivo includo.

A diferena entre estes dois formatos reside na busca algoritmo empregado no

Mikroelektronika - Solues de software e hardware para o mundo embutido 233


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

tentar localizar o arquivo de incluso.

Se o # Include diretiv a usada com o <header_name> verso, a pesqui s a


feitas sucessivamente em cada um dos seguintes locais, nesta ordem:

1. o mik roC PRO para PIC pasta de instalao > "Incluir" pasta
2. usurio personalizada caminhos de pesquisa

A "Header_name" especifica uma verso fornecida pelo usurio incluem arquivos, o mikroC
PRO
para o PIC ir procurar o arquivo de cabealho nas seguintes posies, nesta ordem:

1. o pasta do projeto (pasta que contm o arquivo de projeto . Mcppi)


2. PRO o mikroC para PIC pasta de instalao > "Incluir" pasta
3. usurio personalizada caminhos de pesquisa

Caminho explcito

Ao colocar um caminho explcito em header_name, somente esse diretrio ser


pesquisado. Para
exemplo:

# Include "C: \ my_files \ test.h"

Nota

H tambm uma terceira verso do # Include directiva, raramente usado, o que pressupe
que nem < nem " aparecer como o primeiro caractere no-branco seguinte
# Include:

# Include macro_identifier

assume que a definio de macro que ir expandir macro identificador em um vlido


nome do cabe al ho delimitada com um <header_name> ou "Header_name" formatos
existe.

234 Mikroelektronika - Software e Solues de hardware para Embedded World


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

Preprocessor Operadores

A # (Sinal de libra) uma diretiva de pr-processamento quando ele ocorre como o primeiro
no-branco
caractere de espao em uma linha. Alm disso, # e # # proceder substituio do operador e
merg-
o durante a fase de pr-processamento de digitalizao.

Operador #

No pr-processador C, uma sequncia de caracteres entre aspas considerado um smbolo


e seu contedo no analisada. Isto significa que os nomes de macro dentro de aspas no so
expandida.

Se voc precisa de um argumento real (a seqncia exata de caracteres entre aspas), como
resultado da pr-processamento, use o # operador no corpo da macro. Ele pode ser colocado
em frente
de um argumento formal na definio de macro para converter o argumento real para
aps uma seqncia de substituio.

Por exemplo, vamos ter macro LCD_PRINT para imprimir nome da varivel e valor em
LCD:

# Define LCD_PRINT (val) Lcd_Custom_Out_Cp (# val ":"); \


Lcd_Custom_Out_Cp (IntToStr (val));

Agora, o cdigo a seguir,

LCD_PRINT (temp)

ser pr-processada para isso:

Lcd_Custom_Out_Cp ("temp": "); Lcd_Custom_Out_Cp (IntToStr (temp));

Operador # #

Operador # # usado para colagem token. Dois smbolos podem ser colada (fundidas),
juntamente
colocando # # entre eles (mais branco opcional em ambos os lados). Os pr-
processador remove espaos em branco e # #, Combinando as fichas separadas em uma nova
token. Isto comumente usado para a construo de identificadores.

Por exemplo, veja a definio de macro SPLICE para a colagem de dois smbolos em um
identificador:

# Define SPLICE (x, y) x _ # # # # y

Agora, a chamada SPLICE (cnt, 2) ir se expandir para o identificador cnt_2.


Mikr
oele
ktro
nika - Software e hardware SOLUES PARA mundo embutido

235
CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

Nota

A mik roC PRO para PIC no suporta o mtodo mais antigo nonportable de token
colar com (L / ** / r).

Compilao condicional

directivas de compilao condicional so normalmente utilizados para fazer programas de fonte


fcil
mudana e fcil de compilar em ambientes de execuo diferentes. O mikroC
PRO para o PIC suporta compilao condicional, substituindo a fonte apropriada-
linhas de cdigo com uma linha em branco.

Todas as diretivas de compilao condicional deve ser concluda na fonte ou no arquivo de


incluso
em que eles comearam.

Directivas # if, # elif, # else e # endif

O condicional directivas # If, # elif, # else, e # Endif trabalho muito semelha nte ao
comum demonstraes C condicional. Se a expresso que voc escreve depois # If tem uma
valor diferente de zero, o grupo logo aps a linha # If directiva retida na
a unidade de traduo.

A sintaxe :

# If constant_expression_1
<section_1>

[# Elif constant_expression_2
<section_2>]
...
[# Elif constant_expression_n
<section_n>]

[# Else
<final_section>]

# Endif

Cada # If directiva em um arquivo de origem devem ser acompanhados por um fechamento #


Endif directiva.
Qualquer nmer o de # Elif directivas podem aparec er entre # If e # Endif directivas, mas
no mximo um # Else directiva permitido. A # Else directiva, se houver, deve ser o
Directiva com a ltima antes # Endif.

sees pode ser qualquer texto do programa que tem significado para o compilador ou
pr-processamento.
O pr-proc es s ador seleciona uma nica seo, atravs da avalia o constant_expression fol-

236 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 6
mikroC PRO para PIC Referncia da Linguagem

tes cada # If ou # Elif directiva at que encontre um verdadeiro (diferente de zero),


expresso constante-
Sion. As expresses constantes esto sujeitas a expanso de macro.

Se todas as ocorrncias da expresso constante so falsas, ou se no # Elif directivas


aparecem,
o pr-processador selecciona o bloco de texto aps o # Else clusula. Se o # Else clusula
omitido e todas as instncias do constant_expression na # If bloco so falsas, no
seo selecionados para posterior processamento.

Qualquer seo processados podem conter clusulas adicionais condicional, aninhados em


qualquer profundidade.
Cada aninhadas # Else, # elif, ou # Endif directiv a pertenc e a mais prxima da anteri or
o # If directiva.

O resultado lquido da situao anterior que o cdigo apenas uma seo (Possivelmente
vazia) ser compilado.

Directivas # ifdef e # ifndef

A # Ifdef e # Ifndef di r etri z es pod e m s er us adas e m qual quer l ugar # If p ode m s er utiliz ados
e
eles podem testar se um identificador actualmente definida ou no. A linha

# Ifdef identificador

tem exatamente o mesmo efeito que # Se um se identificador est definido e as


mesmo efeito que # Se 0 se identificador atualmente indefinida. A outra directiva,
# Ifndef, verdadeiros testes para o"No definida" condio, produzir o resultado oposto.

A sintaxe que se segue depois da # If, # elif, # else, e # Endif.

Um identificador definido como NULL considerada como definida.

Mikroelektronika - Solues de software e hardware para o mundo embutido 237


CAPTULO 6
Referncia da Linguagem mikroC PRO para PIC

238 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC
Bibliotecas

mik roC PRO para PIC prev um conjunto de bibliotecas que simplificam a inicializao e
uso de microcontroladores PIC complacente e seus mdulos:

Utilize o Gestor de Biblioteca para incluir mik roC PRO para PIC Bibliotecas em seu projeto.

239
CAPTULO 7
Bibliotecas mikroC PRO para PIC

Bibliotecas Hardware PIC-especficas


- Biblioteca ADC
- CAN Biblioteca
- Biblioteca CANSPI
- Biblioteca Compact Flash
- EEPROM Biblioteca
- Ethernet PIC18FxxJ60 Biblioteca
- Biblioteca Memria Flash
- Biblioteca LCD Grfico
- Biblioteca I2C
- Teclado Biblioteca
- Biblioteca LCD
- Biblioteca de cdigo Manchester
- Libray Muliti Media Card
- OneWire Biblioteca
- Biblioteca Expander Porto
- Imprimir Biblioteca
- PS / 2 Biblioteca
- PWM Biblioteca
- RS-485 Biblioteca
- Software Biblioteca I2C
- Biblioteca SPI Software
- Biblioteca UART Software
- Biblioteca de Som
- Biblioteca SPI
- Biblioteca Ethernet SPI
- Biblioteca Grfica SPI LCD
- Biblioteca SPI LCD
- SPI LCD8 Biblioteca
- SPI Biblioteca Grfica T6963C LCD
- Biblioteca Grfica T6963C LCD
- UART Biblioteca
- Biblioteca USB HID

Padro ANSI C Bibliotecas


- ANSI C Ctype Biblioteca
- ANSI C Biblioteca de Matemtica
- ANSI C Stdlib Biblioteca
- ANSI C String Biblioteca

Diversos Bibliotecas
- Biblioteca Button
- Converses Biblioteca
- Sprint Biblioteca
- Setjmp Biblioteca
- Time Library
- Trigonometria Biblioteca

Veja tambm incorporada nas rotinas.

240 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

BIBLIOTECA DEPENDENCIES
Alguns usam bibliotecas (depende)
funo e / ou variveis, con-
balces de definidos em outras bibliotecas.
Imagem abaixo mostra claramente repre-
sentao sobre essas dependncias
CIES.

Por exemplo, usa SPI_Glcd


Glcd_Fonts e Port_Expander
biblioteca que usa uma biblioteca SPI.
Isto significa que se voc verificar
SPI_Glcd biblioteca em Manag-Biblioteca
er, todas as bibliotecas de que ela depende
sero verificados tambm.

Informaes relacionadas: gerente de


Biblioteca,
PIC Bibliotecas

Mikroelektronika - Solues de software e hardware para o mundo embutido 241


CAPTULO 7
Bibliotecas mikroC PRO para PIC

HARDWARE BIBLIOTECAS

- Biblioteca ADC
- CAN Biblioteca
- Biblioteca CANSPI
- Biblioteca Compact Flash
- EEPROM Biblioteca
- Ethernet PIC18FxxJ60 Biblioteca
- Biblioteca Memria Flash
- Biblioteca LCD Grfico
- Eu Biblioteca C
- Biblioteca do teclado
- Biblioteca Lcd
- Biblioteca de cdigo Manchester
- Biblioteca Multi Media Card
- OneWire Biblioteca
- Biblioteca Expander Porto
- Imprimir Biblioteca
- PS / 2 Biblioteca
- PWM Biblioteca
- RS-485 Biblioteca
- Software I Biblioteca C
- Biblioteca SPI Software
- Biblioteca UART Software
- Biblioteca de Som
- Biblioteca SPI
- Biblioteca Ethernet SPI
- Biblioteca Grfica SPI Lcd
- Biblioteca SPI Lcd
- SPI Lcd8 Biblioteca
- SPI Biblioteca Grfica T6963C Lcd
- Biblioteca Grfica T6963C Lcd
- UART Biblioteca
- Biblioteca USB HID

242 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

ADC BIBLIOTECA

ADC (Conversor Analgico Digital) mdulo est disponvel com um nmero de modelos PIC MCU. Biblioteca
funo ADC_Read includo para oferecer-lhe confortveis trabalhar com o mdulo.

ADC_Read
Prottipo no assinado ADC_Read (unsigned short canal);

Retorna 10-bit sem assinatura valor lido do canal especificado.


Inicializa mdulo PIC ADC interno para trabalhar com clock RC. Relgio
determina
Descrio
o perodo de tempo necessrio para a realizao de converso AD (min 12TAD).

Parmetro canal representa o canal a partir do qual o valor analgico a


adquiridos. Consulte a ficha tcnica apropriada para o canal-a-pino de
mapeamento.
Requer Nada.

no assinado tmp;
Exemplo ...
tmp = ADC_Read (2); / / Ler o valor analgico do canal 2

Exemplo Biblioteca

Este exemplo de cdigo l o valor analgico do canal 2 e apresenta-lo no PORTB e PORTC.

unsigned int temp_res;

vazio main () {
ANSEL = 0x04; / / Configure o pino AN2 como analgico
TRISA = 0xFF; / / PORTA de entrada
ANSELH = 0; / / Configure outras AN pinos como I / O digital
TRISC = 0x3F; / / Pins RC7, RC6 so sadas
TRISB = 0; / / PORTB a sada

fazer {
temp_res = ADC_Read (2); / / Obter os resultados de 10 bits da converso AD
PORTB = temp_res; / / Envia abaixo de 8 bits a PORTB
PORTC temp_res => 2; / / Envia 2 bits mais significativos a RC7, RC6
} while (1);
}

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido 243


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Conexo HW

ADC conexo HW

CAN BIBLIOTECA

mik roC PRO para PIC fornece uma biblioteca (driver) para trabalhar com o mdulo CAN.

CAN um protocolo muito robusto que a deteco de erros e de sinalizao, de auto-


e confinamento de falhas. dados defeituoso pode e quadros remotas so re-transmitidos auto-
automaticamente, semelhante ao da Ethernet.

taxas de transferncia de dados variam de at 1 Mbit / s em distncias de 40m de rede abaixo


de 250
Kbit / s em 250 cabos, e pode ir ainda mais baixo em distncias maiores da rede, para baixo
a 200Kbit / s, que o bitrate mnimo definido pela norma. Cabos utilizados so
pares de fios tranados, e comprimento mximo do cabo de 1000m.

CAN suporta dois formatos de mensagens:

formato padro, com 11 bits identificador, e


Extended format, com 29 bits identificador

Nota: CAN Biblioteca apoiada apenas por MCUs com o mdulo CAN.

Nota: Consultar o padro CAN CAN sobre a resistncia de terminao de barramento.

244 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Rotinas da biblioteca

CANSetOperationMode
CANGetOperationMode
CANInitialize
CANSetBaudRate
CANSetMask
CANSetFilter
CanRead
CanWrite

rotinas a seguir so para uso interno, compilador s:

RegsToCANID
CANIDToRegs

Certifique-se de verificar as constantes podem necessrio para utilizar algumas das


funes.

CANSetOperationMode
vazio CANSetOperationMode (unsigned short modo, unsigned short
Prottipo
wait_flag);

Retorna Nada.
Define CAN para o modo solicitado, ou seja, cpias Modo para CANSTAT. modo
Parmetros
deve ser um dos CAN_OP_MODE constantes (ver constantes CAN).
Descrio
Parmetro wait_flag deve ser 0 ou 0xFF:

Se definido como 0xFF, esta uma chamada de bloqueio - a funo no ser

"Retorno" at o
modo solicitado est definido.
Se for
rotinas CAN0, esta uma chamada
atualmente suportadosem bloqueipor
apenas o. Ele no verifica
P18XXX8 se o mdul o CAN
microcontroladores
Requer PIC.comutada para
Microregulador
solicitadas
Troller modoconectado
deve ser ou no. Chamador
ao CANdeve usar CANGetOpe
transceptor rationMo
(MCP2551 oudesimilares),
para verificar
quea cor-

modo de operao
conectado ao barramento CAN.rect antes da operao de modo a realizao especfica.
Exemplo CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF);

Mikroelektronika - Solues de software e hardware para o mundo embutido 245


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANGetOperationMode
Prottipo unsigned short CANGetOperationMode ();

Retorna opmode atual.

Descrio funo retorna modo de operao atual do mdulo CAN.


rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores
Requer PIC. Microregulador
Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que
conectado ao barramento CAN.
Exemplo se (CANGetOperationMode () == _CAN_MODE_NORMAL) {... };

CANInitialize
vazio CANInitialize (char SJW, BRP c har, char PHSEG1, char P HSEG2,
Prottipo
char PROPSEG, char CAN_CONFIG_FLAGS);
Retorna Nada.
Inicializa CAN. Todas as transmisses pendentes so abortadas. Configura mscara de
todos os registra a 0 para
permitir que todas as mensagens. O modo de configurao definido internamente por
essa funo. Aps uma execu-
o deste modo de funcionamento normal definido. registros de filtro so definidas de
acordo com o valor de bandeira:
Descrio
se (CAN_CONFIG_FLAGS & _CAN_CONFIG_VALID_XTD_MSG! = 0)
/ / Defina todos os filtros para XTD_MSG
else if (Config e _CAN_CONFIG_VALID_STD_MSG! = 0)
/ / Defina todos os filtros para STD_MSG
mais
/ / Definir a metade dos filtros para DST, eo restante para XTD_MSG
Parmetros:
SJW tal como definido no 18XXX8 datasheet (1-4)
BRP tal como definido no 18XXX8 datasheet (1-64)
PHSEG1 tal como definido no 18XXX8 datasheet (1-8)
PHSEG2
rotinas tal como
podem definidoapoiada
atualmente no 18XXX8
apenasdatasheet (1-8) MCUs PIC.
por P18XXX8
Requer PROPSEG
Microreguladortal como definido no 18XXX8 datasheet (1-8)
CAN_CONFIG_FLAGS formado a partir de constantes predefinidas
Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares) (ver constantes
, que CAN)
con-
conectado
init ao barramento CAN.
= & _CAN_CONFIG_SAMPLE_THRICE
_CAN_CONFIG_PHSEG2_PRG_ON &
_CAN_CONFIG_STD_MSG &
Exemplo _CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG &
_CAN_CONFIG_LINE_FILTER_OFF;
...
CANInitialize (1, 1, 3, 3, 1, o init) / / iniciali zar CAN

246 Mikroelektronika - Software e Solues de hardware para Embedded World


CAPTULO 7
mikroC PRO para PIC Bibliotecas

CANSetBoudRate
vazio CANSetBaudRate (char SJW, char BRP, char PHSEG1, char PHSEG2,
Prottipo
char PROPSEG, char CAN_CONFIG_FLAGS);

Retorna Nada.

Define CAN taxa de transmisso. Devido complexidade do protocolo CAN, voc no


pode simplesmente vigor
um valor de bps. Em vez disso, use esta funo quando CAN est em modo de
configurao. Consulte
Descrio datasheet para mais detalhes.

Parmetros:

SJW tal como definido no 18XXX8 datasheet (1-4)


BRP tal como definido no 18XXX8 folha (1-64)
PHSEG1 tal como definido no 18XXX8 datasheet (1-8)
PHSEG2 tal como definido no 18XXX8 datasheet (1-8)
CAN PROPSEG
deve sertalna
como definido no
configurao 18XXX8
modo, casodatasheet
contrrio,(1-8)
a funo ser ignorado.
Requer CAN_CONFIG_FLAGS formado a partir de constantes
rotinas podem atualmente suportado apenas por P18XXX8 predefinidasmicrocontroladores
(ver constantes CAN)
PIC. Microregulador
Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares) , que con-
conectado
init ao barramento CAN.
= _CAN_CONFIG_SAMPLE_THRICE &
_CAN_CONFIG_PHSEG2_PRG_ON &
_CAN_CONFIG_STD_MSG &
Exemplo _CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG &
_CAN_CONFIG_LINE_FILTER_OFF;
...
CANSetBaudRate (1, 1, 3, 3, 1, o init);

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido 247


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSetMask
vazio CANSetFilter (char CAN_FILTER, tempo valor, char
Prottipo
CAN_CONFIG_FLAGS);
Retorna Nada.
Funo define a mscara de filtragem avanada de mensagens. Dado valor um pouco
ajustar-
ed aos registos mscara apropriada buffer.
Descrio
Parmetros:

CAN_MASK um dos valores predefinidos constante (ver constantes CAN)


valor a mscara de registrar o valor
CAN_CONFIG_FLAGS seleciona o tipo de mensagem para filtrar, quer
_CAN_CONFIG_XTD_MSG
CAN deve estar em modo deOuconfigurao;
_CAN_CONFIG_STD_MSG
caso contrrio, a funo ser
Requer
ignorada.
rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC.
Microcontrolador
/ / Seta todo s os deve
bits de msca ra para 1 , ou seja , todos o s bits fi ltrados so relev antes:
ser conectado
CANSetMask a CAN transceptor
( _CAN_MAS K_B1, (MCP2551
-1, _CAN_COou NFIG_XTD
similar) que conectado ao barramento
_MSG);
Exemplo
CAN.
/ / Observe que -1 apenas uma maneira mais barata de escrever 0xFFFFFFFF.
Complemento ir fazer o truque e encha -o com os entes.

CANSetFilter
vazio CANSetFilter (char CAN_FILTER, tempo valor, char
Prottipo
CAN_CONFIG_FLAGS);
Retorna Nada.
Funo define filtro de mensagens. Dado valor um pouco ajustado para tampo
apropriado
registros de mscara.
Descrio
Parmetros:

CAN_FILTER um dos valores predefi ni dos constante (ver constantes CAN)


valor o filtro registrar o valor
CAN_CONFIG_FLAGS seleciona o tipo de mensagem para filtrar, quer
_CAN_CONFIG_XTD_MSG
CAN deve estar em modo de Ouconfigurao,
_CAN_CONFIG_STD_MSG
caso contrrio, a funo ser
Requer ignorado.
rotinas podem atualmente suportado apenas por P18XXX8 PIC MCUs. Microcontrolador deve
ser
/ / Set id B1_F1 filtro para 3:
Exemplo ligado ao CAN(_CAN_FILTER_B1_F1,
transceptor (MCP25513, ou similar) que conectado ao barramento CAN.
CANSetFilter _CAN_CONFIG_XTD_MSG);

248 Mikroelektronika - Softwares e solues de hardware para Embedded World


CAPTULO 7
mikroC PRO para PIC Bibliotecas

CanRead
char CanRead (long * Id, char * dados, char * Datalen, char
Prottipo
CAN_RX_MSG_FLAGS *);
Retorna Mensagem do buffer de recepo ou zero se nenhuma mensagem de
encontrado.
Funo l mensagem do buffer de recebimento. Se pelo menos um buffer cheio receber for
encontrada, ela
Descrio extrados e retornado. Se nenhum encontrada, a funo retorna zero.
Parmetros:

id a mensagem identificador
dados um array de bytes at 8 bytes de comprimento
CAN datalen o comprimento
deve estar no modo em de quedados, 1-8. possvel.
a recepo
Requer CAN_RX_MSG_FLAGS valor formado a partir
rotinas podem atualmente apoiada apenas por P18XXX8 de constantes
MCUs PIC.(ver constantes CAN)
Microcontrolador deve
ser
ligado ao
char VN,CAN
rx,transceptor
len, dados(MCP2551
[8]; ou similar) que conectado ao barramento CAN.
tempo id;
Exemplo / / ...
rx = 0;
/ / ...
VN = CanRead (id, dados, len rx);

CanWrite
unsigned shor t CanWrit e (long i d, char * dados, c har datal en, char
Prottipo
CAN_TX_MSG_FLAGS);
Retorna Retorna zero se a mensagem no pode ser na fila (buffer cheio).
Se pelo menos um buffer de transmi ss o vazia encontr ada, a funo envia
mens agem sobre fila
Descrio para a transmisso. Se o buffer est cheio, a funo retorna 0.
Parmetros:
id a mensagem CAN identific ador . Apenas 11 ou 29 bits podem ser usadas
dependendo
tipo de mensagem (padro ou estendida)
dados matriz de bytes at 8 bytes de comprimento
CAN datalen o comprimento
deve estar dos dados 1-8
no modo Normal.
Requer CAN_TX_MSG_FLAGS
rotinas podem atualmente suportado apenasapor
valor formado partir de constantes
P18XXX8 (ver constantes
microcontroladores PIC. CAN)
Microcontrolador deve ser
ligado ao
char tx,CAN transceptor (MCP2551 ou similar) que conectado ao barramento CAN.
dados;
tempo id;
/ / ...
Exemplo
tx = & _CAN_TX_PRIORITY_0
_CAN_TX_XTD_FRAME;
/ / ...
CanWrite (id, dados, 2, TX);

Mikroelektronika - Solues de software e hardware para o mundo embutido 249


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CAN Constantes

H um nmero de constantes predefinidas na biblioteca da CAN. Para poder usar o


biblioteca de forma eficaz, voc precisa estar familiarizado com estes. Voc pode querer
verificar a
exemplo, no final do captulo.

CAN_OP_MODE

CAN_OP_MODE constantes definem operao pode modo. Funo


CANSetOperationMode espera que um dos estas como seu argumento:

const char
_CAN_MODE_BITS = 0xE0, / / Utilize esta opo para acesso opmode bits
_CAN_MODE_NORMAL = 0x00,
_CAN_MODE_SLEEP = 0x20,
_CAN_MODE_LOOP = 0x40,
_CAN_MODE_LISTEN = 0x60,
_CAN_MODE_CONFIG = 0x80;

CAN_CONFIG_FLAGS

CAN_CONFIG_FLAGS constantes definem bandeiras relacionadas com a configurao do mdulo


CAN.
Funes CANInitialize e CANSetBaudRate esperar que um deles (ou um bit a bit
combinao), como seu argumento:

const char
_CAN_CONFIG_DEFAULT = 0xFF, / / 11111111

_CAN_CONFIG_PHSEG2_PRG_BIT = 0x01,
_CAN_CONFIG_P HSEG2_PRG _ON = 0xFF, / / XXXXXXX1
_CAN_CONFIG_PHSEG2_PRG_OFF = 0xFE, / / XXXXXXX0

_CAN_CONFIG_LINE_FILTER_BIT = 0x02,
_CAN_CONFIG_LINE_FILTER_ON = 0xFF, / XXXXXX1X /
_CAN_CONFIG_LINE_FILTER_OFF = 0xFD, / XXXXXX0X /

_CAN_CONFIG_SAMPLE_BIT = 0x04,
_CAN_CONFIG_SAMPLE_ONCE = 0xFF, / XXXXX1XX /
_CAN_CONFIG_S AMPLE_THR ICE = 0xFB, / XXXXX0XX /

_CAN_CONFIG_MSG_TYPE_BIT = 0x08,
_CAN_CONFIG_STD_MSG = 0xFF, / XXXX1XXX /
_CAN_CONFIG_XTD_MSG = 0xF7, / XXXX0XXX /

_CAN_CONFIG_DBL_BUFFER_BIT = 0x10,
_CAN_CONFIG_D BL_BUFFER _ON = 0xFF, / XXX1XXXX /
_CAN_CONFIG_DBL_BUFFER_OFF = 0xEF, / XXX0XXXX /

250 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas
_CAN_CONFIG_MSG_BITS = 0x60,
_CAN_CONFIG_ALL_MSG = 0xFF, / X11XXXXX /
_CAN_CONFIG_V ALID_XTD_ MSG = 0xDF, / X10XXXXX /
_CAN_CONFIG_V ALID_STD_ MSG = 0xBF, / X01XXXXX /
_CAN_CONFIG_A LL_VALID_ MSG = 0x9F; / X00XXXXX /

Voc pode usar AND bit a bit (&) para formar config byte fora desses valores. Por exemplo:

init = & _CAN_CONFIG_SAMPLE_THRICE


_CAN_CONFIG_PHSEG2_PRG_ON &
_CAN_CONFIG_STD_MSG &
_CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG &
_CAN_CONFIG_LINE_FILTER_OFF;
...
CANInitialize (1, 1, 3 , 3, 1, o init); / / Inicializa CAN

CAN_TX_MSG_FLAGS

CAN_TX_MSG_FLAGS esto relacionadas com bandeiras transmisso de uma mensagem CAN:

const char
_CAN_TX_PRIORITY_BITS = 0x03,
_CAN_TX_PRIORITY_0 = 0xFC, / / XXXXXX00
_CAN_TX_PRIORITY_1 = 0xFD, / / XXXXXX01
_CAN_TX_PRIORITY_2 = 0xFE, / / XXXXXX10
_CAN_TX_PRIORITY_3 = 0xFF, / / XXXXXX11

_CAN_TX_FRAME_BIT = 0x08,
_CAN_TX_STD_FRAME = 0xFF, / / XXXXX1XX
_CAN_TX_XTD_FRAME = 0xF7, / XXXXX0XX /

_CAN_TX_RTR_BIT = 0x40,
_CAN_TX_NO_RTR_FRAME = 0xFF, / X1XXXXXX /
_CAN_TX_RTR_FRAME = 0xBF; / X0XXXXXX /

Voc pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Por exemplo:

/ Valor / formulrio para ser usado com CANSendMessage:


send_config _CAN_TX_PRIORITY_0 = &
_CAN_TX_XTD_FRAME &
_CAN_TX_NO_RTR_FRAME;
...
CANSendMessage (id, dados, 1, send_config);

Mikroelektronika - Solues de software e hardware para o mundo embutido 251


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CAN_RX_MSG_FLAGS

CAN_RX_MSG_FLAGS so flags relacionados com a recepo da mensagem CAN. Se um bit especial


definido; cor-
responder significado TRUE ou ento ele ser FALSE.

const char
_CAN_RX_FILTER_BITS = 0x07 / Uso / este acesso bits filtro
_CAN_RX_FILTER_1 = 0x00,
_CAN_RX_FILTER_2 = 0x01,
_CAN_RX_FILTER_3 = 0x02,
_CAN_RX_FILTER_4 = 0x03,
_CAN_RX_FILTER_5 = 0x04,
_CAN_RX_FILTER_6 = 0x05,
_CAN_RX_OVERFLOW = 0x08, / / Defina se Overflowed mais limpo
_CAN_RX_INVALID_MSG = 0x10, / / Define se invlido mais limpo
_CAN_RX_XTD_FRAME = 0x20, / / Define se a mensagem XTD mais limpo
_CAN_RX_RTR_FRAME = 0x40, / / Define se a mensagem RTR mais limpo
_CAN_RX_DBL_BU FFERED = 0x80 / / Define se a mens agem foi rgido
ware buffer duplo

Voc pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Por exemplo:

se (MsgFlag & _CAN_RX_OVERFLOW! = 0) {


...
/ / Receptor estouro ocorreu.
/ / Ns perdemos a nossa mensagem anterior.
}

CAN_MASK

CAN_MASK constantes definem cdigos mscara. Funo CANSetMask espera que um dos
estas como seu argumento:

# const char
_CAN_MASK_B1 = 0,
_CAN_MASK_B2 = 1;

CAN_FILTER

CAN_FILTER constantes definir cdigos de filtro. Funo CANSetFilter espera uma destas como sua
argumento:

const char
_CAN_FILTER_B1 _F1 = 0;
_CAN_FILTER_B1 _F2 = 1,
_CAN_FILTER_B2 _F1 = 2,
_CAN_FILTER_B2 _F2 = 3 ,

252 Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo


CAPTULO 7
mikroC PRO para PIC Bibliotecas
_CAN_FILTER_B2_F3 = 4,
_CAN_FILTER_B2_F4 = 5;

Exemplo Biblioteca

Esta uma simples demonstrao de CAN Biblioteca rotinas de uso. Primeiro n inicia
a comunicao com o segundo n, enviando alguns dados para o seu endereo. A
segundo n responde enviando de volta os dados incrementado em 1. Primeiro n em seguida
faz o mesmo e envia os dados incrementado de volta para o segundo n, etc
Cdigo para o n CAN primeiro:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras


unsigned cha r Rx_Dat a_Len / / recebid os compr imento de dados e m bytes
char RxTx_Data [8] / / pode rx / tx buffer de dados
char Msg_Rcvd; Sinalizador / recepo /
const longo ID_1st = 12111, ID_2nd = 3; IDs / node /
tempo Rx_ID;

vazio main () {

PORTC = 0; PORTC / claro


TRISC = 0; / / Configura como PORTC sada

Can_Init_Flags = 0; / /
Can_Send_Flags = 0; / / Bandeiras claras
Can_Rcv_Flags = 0; / /

Can_Send_Flags = & _CAN_TX_PRIORITY_0 / valor / formulrio a ser utilizado


_CAN_TX_XTD_FRAME E / com CanWrite
_CAN_TX_NO_RTR_FRAME;

Can_Init_Flags _CAN_CONFIG_SAMPLE_THRICE = & / Valor / formulrio a ser utilizado


_CAN_CONFIG_PHSEG2_PRG_ON & / / Com CANInit
_CAN_CONFIG_XTD_MSG &
_CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG;

CANInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializa o mdulo CAN


CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF); / / modo de configurao definidas
CANSetMask (_ CAN_MASK_ B1, -1, _ CAN_CONFI G_XTD_MSG ); / mask 1 definir todos o s bits pa ra
os
CANSetMask (_ CAN_MASK_ B2, -1, _ CAN_CONFI G_XTD_MSG ); / mask 2 definir todos o s bits pa ra
os
CANSetFilter (_CAN_FILTER_B2_F4, ID_2nd, _CAN_CONFIG_XTD_MSG); / / set id
B2_F4 filtro para segundo n ID

CANSetOperationMode (_CAN_MODE_NORMAL, 0xFF); / / Definir o modo normal

RxTx_Data [0] = 9; / / conjunto de dados inicial a ser enviada

Mikroelektronika - Solues de software e hardware para o mundo embutido 253


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CanWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / envia mensagem inicial

while (1) {/ / faz um loop infinito


Msg_Rcvd CanRead = (& Rx_ID, RxTx_Da ta & Rx_Data_Len & Can_R cv_Flags); / /
receber mensagem
se ((Rx_ID == ID_2nd) & & Msg_Rcvd) {/ / se a mensagem recebida de seleo ID
PORTC RxTx_Data = [0] / / id de sada de dados, corrigir a PORTC
RxTx_Data [0] + +; / / incrementa os dados recebidos
Delay_ms (10);
CanWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / incrementado enviar dados de volta
}
}
}

Cdigo para o n CAN segundo:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode


bandeiras
unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes
char RxTx_Data [8] / / pode rx / tx buffer de dados
char Msg_Rcvd; sinalizador / recepo /
const longo ID_1st = 12111, ID_2nd = 3; / node / Identificaes
tempo Rx_ID;

vazio main () {

PORTC = 0; PORTC / claro


TRISC = 0; / / Set PORTC como sada

Can_Init_Flags = 0; / /
Can_Send_Flags = 0; / / Bandeiras claras
Can_Rcv_Flags = 0; / /

Can_Send_Flags = & _CAN_TX_PRIORITY_0 / valor / formulrio a ser utilizado


_CAN_TX_XTD_FRAME E / com CanWrite
_CAN_TX_NO_RTR_FRAME;

Can_Init_Flags = & _CAN_CONFIG_SAMPLE_THRICE / valor / formulrio a ser utilizado


_CAN_CONFIG_PHSEG2_PRG_ON E / com CANInit
_CAN_CONFIG_XTD_MSG &
_CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG &

CANInitialize (1,3,3,3,1, Can_Init_Flags); / / inicializa o mdulo CAN externa


CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF); / / modo de configurao definidas
CANSetMask (_CAN_MASK_B1, -1, _CAN_CONFIG_XTD_MSG); / / configura todos mask1
bits para os

254 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas
CANSetMask (_CAN_MASK_B2, -1, _CAN_CONFIG_XTD_MSG); / / configura todos mask2
bits para os
CANSetFilter (_CAN_FILTER_B2_F3, ID_1st, _CAN_CONFIG_XTD_MSG); / set /
ID da B2_F3 filtro para 1 n ID

CANSetOperationMode (_CAN_MODE_NORMAL, 0xFF); / / o modo NORMAL

enquanto (1) {/ / faz um loop infinito


Msg_Rcvd CanRead = (& Rx_ID, RxTx_Data & Rx_Data_Len,
& Can_Rcv_Flags); / receber mensagens
se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleo ID
PORTC RxTx_D ata = [0 ]; / / id corrigi r os dad os, a pro duo a PORTC
RxTx_Data [0] + +; / / incrementa os dados recebidos
CanWrite (ID_2nd, RxTx_Data, 1, Can_Send_Flags); / / envia incre -
dados documentados de volta
}
}

Conexo HW

Exemplo de interface CAN transceptor com MCU e nibus

Mikroelektronika - Solues de software e hardware para o mundo embutido 255


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSPI BIBLIOTECA

O mdulo SPI est disponvel com uma srie de microcontroladores PIC compatvel. O mikroC
PRO para PIC oferece uma biblioteca (driver) para trabalhar com CANSPI mikroElektronika's
Placas de expanso (com ou MCP2515 MCP2510) via interface SPI.
O CAN um protocolo muito robusto que a deteco de erros e sinalizao,
de auto-verificao e confinamento de falhas. dados defeituoso pode e quadros remoto so re-
transmitidas automaticamente, semelhante ao Ethernet.

taxas de transferncia de dados dependem da distncia. Por exemplo, 1 Mbit / s pode ser
obtida em net-
comprimentos de trabalho abaixo de 40m, enquanto 250 Kbit / s pode ser obtida em
comprimentos de rede abaixo
250m. Quanto maior a distncia menor bitrate mximo que pode ser alcanado. O menor
bitrate definido pelo padro 200Kbit / s. Os cabos utilizados so pares de fios tranados.

CAN suporta dois formatos de mensagens:

formato padro, com 11 bits de identificador e


Extenso formato, com 29 bits identificador.

Nota:
Consulte a norma CAN CAN sobre a resistncia de terminao de nibus.
Uma velocidade de comunicao eficaz CANSPI depende SPI e, certamente,
mais lento do que "Real" CAN.
A biblioteca utiliza o mdulo de comunicao SPI. O usurio deve inicializar SPI
mdulo antes de usar o SPI LCD Grfico Biblioteca.
Para MCUs com dois mdulos SPI possvel inicializar ambos e, em seguida,
switch usando o SPI_Set_Active () rotina.
CANSPI mdulo refere-se a CANSPI mikroElektronika do Add-on board conectado
ao mdulo SPI de MCU.

As seguintes
das variveis
dependncias externas de CANSPI Biblioteca
deve ser definida na Descrio: Exemplo:
todos
projetos usando
CANSPI
sbit sfr extern sbit CanSpi_CS em
Biblioteca: Chip linha Select.
CanSpi_CS; RC0_bit;
sbit sfr extern sbit CanSpi_Rst em
linha de reposio.
CanSpi_Rst; RC2_bit;
sbit sfr extern Direo do Chip sbit CanSpi_CS_Direction
CanSpi_CS_Direction; Selecione pino. em TRISC0_bit;
sbit sfr extern sbit CanSpi_Rst_Direction
Direo do pino de Reset.
CanSpi_Rst_Direction; em TRISC2_bit;

256 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Rotinas da biblioteca

- CANSPISetOperationMode
- CANSPIGetOperationMode
- CANSPIInitialize
- CANSPISetBaudRate
- CANSPISetMask
- CANSPISetFilter
- CANSPIread
- CANSPIWrite

As rotinas a seguir so para um uso interno da biblioteca, apenas:

- RegsToCANSPIID
- CANSPIIDToRegs

Certifique-se de verificar constantes CANSPI necessrio para utilizar algumas das funes.

Mikroelektronika - Solues de software e hardware para o mundo embutido 257


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSPISetOperationMode
Prottipo vazio CANSPISetOperationMode (char modo, char WAIT);

Retorna Nada.

Define o mdulo CANSPI para o modo solicitado.

Parmetros:

Descrio - modo: CANSPI modo de operao do mdulo. Valores vlidos: CANSPI_OP_MODE con-
balces de (ver constantes CANSPI).
- ESPERA: CANSP I modo d e comuta o pedi do de ve rificao . Se WAI T == 0, a chamad a
no
bloqueio. A funo no verifica se o mdulo est ligado a CANSPI
solicitadas modo ou no. Chamador deve usar CANSPIGetOperation Mode para verificar a cor-
modo de operao rect antes da operao de modo a realizao especfica. Se AGUARDE! =
0, o
As rotinas est
chamada CANSPI so suportados
bloqueando apenas
- a funo pelo"Retorno"
no ser MCUs com atoomdulo SPI.
modo solicitado
Requer MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra
est definido.
Cmar a ou
hardware semelhante.
/ / Configurar Vejano
o mdulo CANSPI o exemplo de conexo
modo de configurao na parte
(aguardar inferior desta
dentro
Exemplo pgina.
CANSPISetOperationMode at este modo estiver definido)
CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF);

CANSPIGetOperationMode
Prottipo char CANSPIGetOperationMode ();

Retorna modo de operao atual.


A funo retorna o modo de operao atual do mdulo CANSPI. Confira CAN-
Descrio SPI_OP_MODE constantes (ver constantes CANSPI) ou folha de dados do dispositivo para
pera
Modo de cdigos o.
A rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI.
Requer MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra
Cmar a ou
hardware semelhante. Veja o exemplo de conexo na parte inferior desta
/pgina.
/ Verifica se o mdulo CANSPI est no modo normal e se
fazer alguma coisa.
Exemplo
if (CANSPIGetOperationMode () == _CANSPI_MODE_NORMAL) {
...
}

258 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

CANSPIInitialize
vazio CANSPIInitialize ( char SJW, char BRP, char PHSEG1, char
Prottipo
PHSEG2, char PROPSEG, char CANSPI_CONFIG_FLAGS);

Retorna Nada.

Inicializa o mdulo CANSPI.


Stand-Alone controlador CAN no mdulo CANSPI definido como:

- Desabilite pode capturar


- Continuar a CAN operao em modo de Espera
- No interromper as transmisses pendentes
- Fcan relgio: 4 * Pases Terceiros (FOSC)
- Taxa de transmisso definida de acordo com determinados parmetros
- Modo CAN: Normal
Descrio - Filtro e as identificaes de registros mscara so definidos como zero
- Filtro e uma mscara tipo de estrutura da mensagem definido de acordo com
CAN_CONFIG_ FLAGS valor

SAM, SEG2PHTS, WAKFIL e DBEN bits so definidos de acordo toCANSPI_CONFIG_FLAGS valor.

Parmetros:

- SJW conforme definido na ficha tcnica do controlador CAN


- BRP conforme definido na ficha tcnica do controlador CAN
- PHSEG1 tal como definido no controlador CAN datasheet
- PHSEG2 conforme definido na ficha tcnica do controlador CAN
- PROPSEG conforme definido na ficha tcnica do controlador CAN
- CAN_CONFIG_FLAGS formado a partir de constantes predefinidas (ver CANSPI con-
balces de)
As variveis globais:

- CanSpi_CS: Chip Selecionar linha


- CanSpi_Rst: linha de reset
- CanSpi_CS_Direction: Direo do pino de Chip Select
Requer - CanSpi_Rst_Direction: Direo do pino de Reset
devem ser definidas antes de utilizar esta funo.

As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI.


O SPI mdulo precisa ser inicializado. Veja o SPI1_Init e
SPI1_Init_Advanced rotinas.
MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Cmara ou
sim-
homlogos de hardware. Veja o exemplo de conexo na parte inferior desta
pgina.
Mikroelektronika - Solues de software e hardware para o mundo embutido 259
CAPTULO 7
Bibliotecas mikroC PRO para PIC

/ / Conexes CANSPI mdulo


sbit CanSpi_CS em RC0_bit;
sbit CanSpi_CS_Direction em TRISC0_bit;
sbit CanSpi_Rst em RC2_bit;
sbit CanSpi_Rst_Direction em TRISC2_bit;
/ / Fim conexes CANSPI mdulo

/ / Inicializa o mdulo CANSPI com a taxa de trans misso


e bandeiras de aceitao de mensagens, juntamente com as regras de amostragem
char CanSPi_Init_Flags;
...
Exemplo
CanSPi_Init_Flags = _CANSPI_CONFIG_SAMPLE_THRICE e / form /
valor a ser utilizado
_CANSPI_CONFIG_PHSEG2_PRG_ON & / / Com
CANSPIInitialize
_CANSPI_CONFIG_XTD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG;
...
SPI1_Init (); / / inicializa o mdulo SPI
CANSPIInitialize (1,3,3,3,1, C anSpi_Init_Flags); / / inicializa
CANSPI mdulo externo

260 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

CANSPISetBaudRate
vazio CANSPISetBaudRate ( char SJW, char BRP, char PHSEG1, char
Prottipo
PHSEG2, char PROPSEG, char CANSPI_CONFIG_FLAGS);

Retorna Nada.

Define a taxa de CANSPI mdulo de transmisso. Devido complexidade do


protocolo CAN,
voc no pode simplesmente forar um valor bps. Em vez disso, use esta
funo quando o
CANSPI mdulo est em modo de configurao.
Descrio
SAM, SEG2PHTS e WAKFIL bits so definidos de acordo com CANSPI_CONFIG_FLAGS
valor. Consulte a ficha tcnica para mais detalhes.

Parmetros:

- SJW como definidos na ficha tcnica do controlador CAN


- BRP conforme definido na ficha tcnica do controlador CAN
- PHSEG1 conforme definido na ficha tcnica do controlador CAN
- PHSEG2 conforme definido na ficha tcnica do controlador CAN
- PROPSEG conforme definido na ficha tcnica do controlador CAN
O mdulo CANSPI deve estar no modo de configurao, caso contrrio, a
- CAN_CO NFIG_FLA GS formado a partir de constantes predefinidas (ver constantes CANSPI)
funo ser
Requer ignorados. Veja CANSPISetOperationMode.

As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI.

MCU tem para ser conectad o corretame nte mikroElek tr oni k a de CANSPI Extra

/ / Necessrio
Cmar a ou definir taxa de transmisso e regras de amostragem
char canspi_config_flags;
hardware semelhante. Veja o exemplo de conexo na parte inferior desta
...
pgina.
CANSPISetOperationMode (CANSPI_MODE_ CONFIG, 0xFF); / CONFIGU RAO / set -
Modo de rao (CANSPI mastr o mdulo de estar em modo de conf igurao par a a taxa de transmiss o
Exemplo configuraes)
canspi_config_flags = & _CANSPI_CONFIG_SAMPLE_THRICE
_CANSPI_CONFIG_PHSEG2_PRG_ON &
_CANSPI_CONFIG_STD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG &
_CANSPI_CONFIG_LINE_FILTER_OFF;
CANSPISetBaudRate (1, 1, 3, 3, 1, canspi_config_flags);

Mikroelektronika - Solues de software e hardware para o mundo embutido 261


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSPISetMask
vazio CANSPIS etMask (c har CANSP I_MASK, t empo val, char CAN SPI_CON-
Prottipo
FIG_FLAGS);

Retorna Nada.

Configur a uma mscar a de filtragem avan ada de mens agens . O parmetr o valor

pouco ajustadas aos registos mscara apropriada.

Parmetros:
Descrio
- CAN_MASK: CANSPI nmero de mscara de mdulo. Valores vlidos: CANSPI_MAS K costants
(Ver constantes CANSPI)
- mscara de valor do registo: val
- CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. Valores
vlidos:

CANSPI_CONFIG_ALL_VALID_MSG,
CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG,
CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG.

O mdulo
(Ver CANSPI
constantes deve estar no modo de configurao, caso contrrio, a
CANSPI)
funo ser
Requer ignorados. Veja CANSPISetOperationMode.

As rotinas so suportados CANSPI apenas por MCUs com o mdulo SPI.

MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra
/ / Definir a mscara de filtro adequado e valor tipo de mensagem
Cmar a ou
CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF);
hardware
/ / Modo conjsemelhante. Vejaeso exemplo
unto de c onfigura de conexo
(mdu lo CANSPI deve est arna
no parte
mod o deinferior
con fig desta
pgina.
para as configuraes de mscara)
Exemplo
/ / Set B1 todos os bits de mscara a 1 (todos os bits so filtrados relevante):
/ / Observe que -1 apenas uma maneira mais barata de escrever 0x FFFFFFFF.
/ / Complemento ir fazer o truque e encha-o com os entes.
CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_MATCH_MSG _TYPE
& _CANSPI_CONFIG_XTD_MSG);

262 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

CANSPISetFilter
vazio CANSPISetFilter (char CANSPI_FILTER, tempo val, char
Prottipo
CANSPI_CONFIG_FLAGS);

Retorna Nada.

Configura a mensagem de filtro. O parmetro valor pouco adaptado ao dis-


comeu registros filtro.

Parmetros:

- CAN_FILTER: mdulo de filtro CANSPI nmero. Valores vlidos: CANSPI_FILTER


Descrio
constantes (ver constantes CANSPI)
- valor do registro do filtro: val
- CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. Valores
vlidos:

CANSPI_CONFIG_ALL_VALID_MSG,
CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG,
CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG.

(Ver constantes CANSPI)


O mdulo CANSPI deve estar no modo de configurao, caso contrrio, a

funo ser
Requer ignorados. Veja CANSPISetOperationMode.

As rotinas CANSPI so suportados apenas pelo MCUs com o SPI mdulo.

MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra
/ / Definir o valor do filtro adequado e tipo de mensagem
Cmar a ou
CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF);
hardware
/ / Modo conjsemelhante. Vejaeso exemplo
unto de c onfigura de conexo
(mdu lo CANSPI deve est arna
no parte
mod o deinferior
con fig desta
Exemplo pgina.
para as definies do filtro)

/ * Defina id B1_F1 filtro para 3: * /


CANSPISetFilter (_CANSPI_FILTER_B1_F1, 3, _CANSPI_CONFIG_XTD_MSG);

Mikroelektronika - Solues de software e hardware para o mundo embutido 263


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSPIRead
char CANSPIRead (long * Id, char * Rd_data, char * Data_len, char
Prottipo
CANSPI_RX_MSG_FLAGS *);

Retorna - 0 se nada for recebido


- 0xFF se um dos buffers de recepo est cheio (mensagem recebidos)
Se pelo menos um buffer de recebi mento integr al for encontr ad o, ele ser
proces s ado nas seguintes
maneira:

- ID da mens age m recuper ada e armaz e nada na localiza o forneci das pela id

Descrio parmetr o
- Mensagem dados so recuperados e armazenados em um buffer fornecido pelo o rd_data
parmetro
- Tamanho da mensagem recuperada e armazenada a localizao fornecida
pela
data_len parmetro
- Mensagem bandeiras so recuperados e armazenados para a localizao
fornecida pela
CAN_RX_MSG_FLAGS parmetro
Parmetros:
O mdulo CANSPI deve estar em um modo no qual possvel receber. Veja
CANSPISetOperationMode.
- ID: identificador de mensagem de armazenamento endereo
Requer -Asrd_data: buffer de dados (uma matriz de pelo
bytesMCUs
at 8 combyteso de comprimento)
rotinas CANSPI so suportados apenas mdulo SPI.
- data_len: endereo de armazenamento de dados de comprimento.
CAN_RX_MSG_FLAGS:
-MCU tem de ser devidambandeiras de mensagem
ente conecta do a mikroElde
ek trendereo
oni k a de de armaz
CANSP enament o
I Extra

Cmar a ou
/hardware
/ Verificao o mdulo CANSPI
semelhante. Veja opara mensagens
exemplo recebidas. na
de conexo Se parte
algum foi
inferior desta
receberam
pgina. fazer alguma coisa.
char msg_rcvd, rx_flags, data_len;
char dados [8];
tempo msg_id;
...
Exemplo
CANSPISetOperationMode (CA_NSPI_MODE_NORMAL, 0xFF);
/ / Definir o modo normal (mdulo CANSPI deve estar no modo em que
receber possvel)
...
rx_flags = 0;
/ / Limpa bandeiras de mensagem
if (= msg_rcvd CANSPIRead (msg_id, dados data_len, rx_flags)) {
...
}

264 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

CANSPIWrite
char CANSPIWrite (long id, char * Wr_data, char data_len, char CAN-
Prottipo
SPI_TX_MSG_FLAGS);

Retorna - 0 Se todos os buffers de transmisso esto ocupados


- 0xFF se pelo menos um buffer de transmisso est disponvel
Se pelo menos um vazio buffer de transmisso for encontrado, a funo envia
mensagem em
fila para a transmisso.
Descrio
Parmetros:

- id: identificador de mensagem CAN. Valores vlidos: 11 ou 29 valores

pouco, dependendo de
tipo de mensagem (padro ou estendida)
- wr_data: dados a serem enviados (um array de bytes at 8 bytes de
O mdulo CANSPI deve estar no modo em que a transmisso seja possvel.
comprimento)
Veja
- data_len: dados de comprimento. Valores vlidos: 1 a 8
Requer CANSPISetOperationMode.
- CAN_RX_MSG_FLAGS: bandeiras de mensagem

As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI.

MCU tem de ser devidam ente conecta do ao mikroElek tr onik a de CANSPI Extra

/ / Envia mensagem prorrogado mensag em CAN com a identifica o adequada e


Cmar a ou
dados
hardware semelhante. Veja o exemplo de conexo na parte inferior desta
char tx_flags;
pgina.
char dados [8];
tempo msg_id;
Exemplo ...
CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF);
/ / Definir o modo normal (CANSPI de ve estar no modo em que a transmisso
possvel)

tx_flags = _CANSPI_TX_PRIORITY_0 & _CANSPI_TX_XTD_FRAME;


/ / Mensagem de flags
CANSPIWrite (msg_id, dados, 2, tx_flags);

Mikroelektronika - Solues de software e hardware para o mundo embutido 265


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSPI Constantes

H um nmero de constantes predefinidas na biblioteca CANSPI. Voc precisa ser


familiarizado com eles, a fim de ser capaz de usar a biblioteca eficazmente. Check -exame
plo, no final do captulo.

CANSPI_OP_MODE

A CANSPI_OP_MODE CANSPI constantes definem o modo de operao. Funo


CANSPISetOperationMode espera uma destas como argumento:

const char
_CANSPI_MODE_BITS = 0xE0, / / Utilize esta opo para acesso opmode bits
_CANSPI_MODE_NORMAL = 0x00,
_CANSPI_MODE_SLEEP = 0x20,
_CANSPI_MODE_LOOP = 0x40,
_CANSPI_MODE_LISTEN = 0x60,
_CANSPI_MODE_CONFIG = 0x80;

CANSPI_CONFIG_FLAGS

A CANSPI_CONFIG _FLAGS constantes definem bandeir as relacionad as com o mdul o CANSP I


configurao. As funes CANSPIInitialize, CANSPISetBaudRate,
CANSPISetMask e CANSPISetFilter esperar um desses (ou uma combinao bit a bit -
o), como seu argumento:

const char
_CANSPI_CONFIG_DEFAULT = 0xFF, / / 11111111

_CANSPI_CONFIG_PHSEG2_PRG_BIT = 0x01,
_CANSPI_CONFIG_PHSEG2_PRG_ON = 0xFF, / / XXXXXXX1
_CANSPI_CONFIG_PHSEG2_PRG_OFF = 0xFE, / / XXXXXXX0

_CANSPI_CONFIG_LINE_FILTER_BIT = 0x02,
_CANSPI_CONFIG_LINE_FILTER_ON = 0xFF, / XXXXXX1X /
_CANSPI_CONFIG_LINE_FILTER_OFF = 0xF D, / XXXXXX0X /

_CANSPI_CONFIG_SAMPLE_BIT = 0x04,
_CANSPI_CONFIG_SAMPLE_ONCE = 0xFF, / XXXXX1XX /
_CANSPI_CONFIG_SAMPLE_THRICE = 0xFB, / XXXXX0XX /

_CANSPI_CONFIG_MSG_TYPE_BIT = 0x08,
_CANSPI_CONFIG_STD_MSG = 0xFF, / XXXX1XXX /
_CANSPI_CONFIG_XTD_MSG = 0xF7, / XXXX0XXX /

266 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas
_CANSPI_CONFIG_DBL_BUFFER_BIT = 0x10,
_CANSPI_CONFIG_DBL_BUFFER_ON = 0xFF, / XXX1XXXX /
_CANSPI_CONFIG_DBL_BUFFER_OFF = 0xEF, / XXX0XXXX /

_CANSPI_CONFIG_MSG_BITS = 0x60,
_CANSPI_CONFIG_ALL_MSG = 0xFF, / X11XXXXX /
_CANSPI_CONFIG_VALID_XTD_MSG = 0xDF, / X10XXXXX /
_CANSPI_CONFIG_VALID_STD_MSG = 0xBF, / X01XXXXX /
_CANSPI_CONFIG_ALL_VALID_MSG = 0x9F; / X00XXXXX /

Voc pode usar AND bit a bit (&) para formar config byte fora desses valores. Por exemplo:

init = & _CANSPI_CONFIG_SAMPLE_THRICE


_CANSPI_CONFIG_PHSEG2_PRG_ON &
_CANSPI_CONFIG_STD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG &
_CANSPI_CONFIG_LINE_FILTER_OFF;
...
CANSPIInitialize (1, 1, 3, 3, 1, o i nit); / / Inicializa CANSPI

CANSPI_TX_MSG_FLAGS

CANSPI_TX_MSG_FLAGS so flags relacionados com a transmisso de uma mensagem CAN:

const char
_CANSPI_TX_PRIORITY_BITS = 0x03,
_CANSPI_TX_PRIORITY_0 = 0xFC, / / XXXXXX00
_CANSPI_TX_PRIORITY_1 = 0xFD, / / XXXXXX01
_CANSPI_TX_PRIORITY_2 = 0xFE, / / XXXXXX10
_CANSPI_TX_PRIORITY_3 = 0xFF, / / XXXXXX11

_CANSPI_TX_FRAME_BIT = 0x08,
_CANSPI_TX_STD_FRAME = 0xFF, / XXXXX1XX /
_CANSPI_TX_XTD_FRAME = 0xF7, / XXXXX0XX /

_CANSPI_TX_RTR_BIT = 0x40,
_CANSPI_TX_NO_RTR_FRAME = 0xFF, / X1XXXXXX /
_CANSPI_TX_RTR_FRAME = 0xBF; / X0XXXXXX /

Voc pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Por exemplo:

/ * Valor de forma a ser usado como sinalizador de mensagem de envio: * /


send_config = _CANSPI_TX_PRIORITY_0 &
_CANSPI_TX_XTD_FRAME &
_CANSPI_TX_NO_RTR_FRAME;
...
CANSPIWrite (id, dados, 1, send_config);

Mikroelektronika - Solues de software e hardware para o mundo embutido 267


CAPTULO 7
Bibliotecas mikroC PRO para PIC

CANSPI_RX_MSG_FLAGS
CANSPI_RX_MS G_FLAGS so flags relacionados com a recep o da mens ag em CAN. Se um
partic u-
bit lar estiver definido, ento correspondente significado TRUE ou ento ele ser FALSE.

const char
_CANSPI_RX_FILTER_BITS = 0x07, / / Utilize esta opo para filtrar o acesso bits
_CANSPI_RX_FILTER_1 = 0x00,
_CANSPI_RX_FILTER_2 = 0x01,
_CANSPI_RX_FILTER_3 = 0x02,
_CANSPI_RX_FILTER_4 = 0x03,
_CANSPI_RX_FILTER_5 = 0x04,
_CANSPI_RX_FILTER_6 = 0x05,

_CANSPI_RX_OVERFLOW = 0x08 / / Defina se Overflowed mais limpo


_CANSPI_RX_INVALID_MSG = 0x10, / / Define se invlido mais limpo
_CANSPI_RX_XTD_FRAME = 0x20 / / mensagem Defina se XTD mais
apuradas
_CANSPI_RX_RTR_FRAME = 0x40 / / mensagem Defina se RTR mais
apuradas
_CANSPI_RX_DBL_BUFFERED = 0x80 / / Define se a mensagem foi difcil
ware buffer duplo

Voc pode usar AND bit a bit (&) para ajustar o sinalizadores apropriados. Por exemplo:

se (MsgFlag & _CANSPI_RX_OVERFLOW! = 0) {


...
/ / Receptor estouro ocorreu.
/ / Ns perdemos a nossa mensagem anterior.
}

CANSPI_MASK

A CANSPI_MASK constantes definem cdigos mscara. Funo CANSPISetMask espera


um desses como argumento:

const char
_CANSPI_MASK_B1 = 0,
_CANSPI_MASK_B2 = 1;

CANSPI_FILTER

A CANSPI_FILTER constantes definir cdigos de filtro. Funes CANSPISetFilter


espera que um destes, como o argumento:

const char
_CANSPI_FILTER_B1_F1 = 0;
_CANSPI_FILTER_B1_F2 = 1,
_CANSPI_FILTER_B2_F1 = 2,
_CANSPI_FILTER_B2_F2 = 3 ,

268 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas
_CANSPI_FILTER_B2_F3 = 4,
_CANSPI_FILTER_B2_F4 = 5;

Exemplo Biblioteca

Esta uma simples demonstrao de CANSPI Biblioteca de rotinas de utilizao. Primeiro n


ini-
Ates a comunicao com o segundo n, enviando alguns dados para o seu endereo.
O segundo n responde enviando de volta os dados incrementado em 1. Primeiro n
em seguida, faz o mesmo e envia os dados de volta para incrementado segundo n, etc

Cdigo para o n CANSPI primeiro:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode


bandeiras
unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes
char RxTx_Data [8] / / pode rx / tx buffer de dados
char Msg_Rcvd / / pavilho de recepo
const longo ID_1st = 12111, ID_2nd = 3; IDs / node /
tempo Rx_ID;

/ / Conexes CANSPI mdulo


sbit CanSpi_CS em RC0_bit;
sbit CanSpi_CS_Direction em TRISC0_bit;
sbit CanSpi_Rst em RC2_bit;
sbit CanSpi_Rst_Direction em TRISC2_bit;
/ / Fim conexes CANSPI mdulo

vazio main () {

ANSEL = 0; / / Configurar um pinos como I / O digital


ANSELH = 0;

PORTB = 0; / PORTB / clear


TRISB = 0; / PORTB set / como sada

Can_Init_Flags = 0; / /
Can_Send_Flags = 0; / / Bandeiras claras
Can_Rcv_Flags = 0; / /

Can_Send_Flags = & _CANSPI_TX_PRIORITY_0 / valor / form a ser usado


_CANSPI_TX_XTD_FRAME E / com CANSPIWrite
_CANSPI_TX_NO_RTR_FRAME;

Can_Init_Flag s = & _CA NSPI_CONF IG_SAMPLE _THRICE / valor / Formulri o a ser utilizado
_CANSPI_CONFIG_PHSEG2_PRG_ON E / com CANSPIInit
_CANSPI_CONFIG_XTD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG;

Mikroelektronika - Solues de software e hardware para o mundo embutido 269


CAPTULO 7
Bibliotecas mikroC PRO para PIC

SPI1_Init (); / / inicializar o mdulo SPI1

CANSPIInitialize (1,3,3,3,1, Can_Ini t_Flags); / / Inicializa r CANSPI externa


mdulo
CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / modo de configurao definidas
CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_XTD_MSG); / / set
todos mask1 bits para os
CANSPISetMask (_CANSPI_MASK_B2, -1, _CANSPI_CONFIG_XTD_MSG); / / set
todos mask2 bits para os

CANSPISetFilter (_CANSPI_FILTER_B2_F4, ID_2nd, _CANSPI_CONFIG_XTD_MSG);


/ / Set id B2_F4 de filtro para segundo n ID

CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / o modo NORMAL

RxTx_Data [0] = 9; / / Conjunto de dados inicial a ser enviada

CANSPIWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / envia inicial


Mensagem

while (1) {/ / faz um loop infinito


Msg_Rcvd CANSPIRead = (& Rx_ID, RxTx_Data & Rx_Data_Len,
& Can_Rcv_Flags); / receber mensagens
se ((Rx_ID == ID_2nd) & & Msg_Rcvd) {
/ / Mensagem se cheque recebido id
PORTB RxTx_Data = [0];
/ / Id sada de dados, corrigir a PORTC
RxTx_Data [0] + +;
/ / Incremento de dados recebidos
Delay_ms (10);
CANSPIWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags);
/ / Incrementado enviar dados de volta
}
}
}

270 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cdigo para o n CANSPI segundo:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode


bandeiras
unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes
char RxTx_Data [8] / / pode rx / tx de dados buffer
char Msg_Rcvd; sinalizador / recepo /
const longo ID_1st = 12111, ID_2nd = 3; IDs / node /
tempo Rx_ID;

/ / Conexes CANSPI mdulo


sbit CanSpi_CS em RC0_bit;
sbit CanSpi_CS_Direction em TRISC0_bit;
sbit CanSpi_Rst em RC2_bit;
sbit CanSpi_Rst_Direction em TRISC2_bit;
/ / Fim conexes CANSPI mdulo

vazio main () {

ANSEL = 0; / / Configurar um pinos como I / O digital


ANSELH = 0;

PORTB = 0; / PORTB / clear


TRISB = 0; / PORTB set / como sada

Can_Init_Flags = 0; / /
Can_Send_Flags = 0; / / Bandeiras claras
Can_Rcv_Flags = 0; / /

Can_Send_Flags _CANSPI_TX_PRIORITY_0 = & / Valor / formulrio a ser utilizado


_CANSPI_TX_XTD_FRAME E / com CANSPIWrite
_CANSPI_TX_NO_RTR_FRAME;

Can_Init_Flag s = & _CA NSPI_CONF IG_SAMPLE _THRICE / valor / Formulri o a ser utilizado
_CANSPI_CONFIG_PHSEG2_PRG_ON E / com CANSPIInit
_CANSPI_CONFIG_XTD_MSG &
_CANSPI_CONFIG_DBL_BUFFER_ON &
_CANSPI_CONFIG_VALID_XTD_MSG &
_CANSPI_CONFIG_LINE_FILTER_OFF;

SPI1_Init (); / / Inicializa SPI1 mdulo

CANSPIInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializa externa


mdulo CANSPI
CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / CONFIGURAO / set -
Modo de Rao
CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_XTD_MSG); / / set
todos mask1 bits para os
CANSPISetMask (_CANSPI_MASK_B2, -1, _CANSPI_CONFIG_XTD_MSG); / / set

Mikroelektronika - Solues de software e hardware para o mundo embutido 271


CAPTULO 7
Bibliotecas mikroC PRO para PIC

todos mask2 bits para os

CANSPISetFilter (_CANSPI_FILTER_B2_F3, ID_1st, _CANSPI_CONFIG_XTD_MSG);


/ / Configura id do B2_F3 filtro para 1 ID do n

CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / o modo NORMAL

enquanto (1) {/ / faz um loop infinito


Msg_Rcvd CANSPIRead = (& Rx_ID, RxTx_Data & Rx_Data_Len,
& Can_Rcv_Flags); / receber mensagens
se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleo ID
PORTB = RxTx _Data [0 ] / / id de sada de dado s, corrig ir a POR TC
RxTx_Data [0] + +; / / incrementa os dados recebidos
CANSPIWrite (ID_2nd, RxTx_Data, 1, Can_Send_Flags); / / envia
dados incrementado de volta
}
}
}

Conexo HW

Exemplo de interface CAN MCP2510 transceptor com MCU via interface SPI

272 Mikroelektronika - Software e Solues de hardware para Embedded World


CAPTULO 7
mikroC PRO para PIC Bibliotecas

COMPACT FLASH BIBLIOTECA

O Compact Flash Biblioteca fornece rotinas para acessar dados em Compact Flash
carto (abrev. CF ainda no texto). Os cartes CF so amplamente utilizados elementos de
memria, com-
comumente usados com cmeras digitais. Grande capacidade e tempo de acesso excelente de
apenas
alguns microssegundos torn-los muito atrativos para aplicaes de microcontroladores.

No carto CF, os dados so divididos em setores. Um setor compreende geralmente 512 bytes.
Rotinas para manipula o de arquivos, o Cf_Fat rotinas, no so execut adas diretamente, mas
su-
sivamente atravs 512B buffer.

Nota: As rotinas para manipulao de arquivos s podem ser utilizados com sistema de
arquivos FAT16.

Nota: As funes Biblioteca criar e ler arquivos no diretrio raiz s.

Nota: As funes Biblioteca preencher ambas as tabelas e FAT1 FAT2 ao escrever em


arquivos,
mas o arquivo de dados est sendo leitura da tabela FAT1 s, ou seja, no h recuperao, se
a tabela FAT1 fica corrompido.

Nota: Se o carto SD / MMC tem Master Boot Record (MBR), a biblioteca funcionar com
a
primeiro disponvel partio (lgica) primrio que tem tamanho diferente de zero. Se o MMC /
SD placa tem
Volume Boot Record (ou seja, h apenas uma partio lgica e no MBR), a biblioteca
trabalha com carto de inteira como uma nica partio. Para mais informaes sobre MBR,
fsica
e unidades lgicas, primrio / secundrio parties e tabelas de parties, consulte
outros recursos, por exemplo, Wikipedia e similares.

Nota: Antes de escrever a operao, certifique -se de no substituir ou setor de


inicializao FAT como
poderia fazer o seu carto no PC ou cmera digital ilegvel. ferramentas de mapeamento de
unidade,
como Winhex, pode ser de grande ajuda.

Mikr
oele
ktro
nika
-
Solu
es
de software e hardware para o mundo embutido

273
CAPTULO 7
Bibliotecas mikroC PRO para PIC

As seguintes variveis
deve ser definida em Descrio: Exemplo:
todos os
projetos usando Compact
Biblioteca
sfr externdechar
Flash: char CF_Data_Port
Compact Flash Porta de
CF_Data_Port; em PORTD;
sbit sfr extern dados. sbit CF_RDY em
Pronto linha de sinal.
CF_RDY; RB7_bit;
sbit sfr extern sbit CF_WE em
Write Enable linha de sinal.
CF_WE; RB6_bit;
sbit sfr extern sbit CF_OE em
Habilitar sada de linha do
CF_OE; RB5_bit;
sbit sfr extern sinal. sbit CF_CD1 em
Chip detecta sinal de linha.
CF_CD1; RB4_bit;
sbit sfr extern sbit CF_CE1 em
Chip linha de sinal Enable.
CF_CE1; RB3_bit;
sbit sfr extern sbit CF_A2 em
Endereo pino 2.
CF_A2; RB2_bit;
sbit sfr extern sbit CF_A1 em
Endereo pino 1.
CF_A1; RB1_bit;
sbit sfr extern sbit CF_A0 em
Endereo pino 0.
CF_A0; RB0_bit;
sbit sfr extern sbit CF_RDY_direc-
Direo da o pino Ready.
CF_RDY_direction; o em TRISB7_bit;
sbit sfr extern Direo do Write Enabl e sbit CF_WE_direction
CF_WE_direction; alfinete. em TRISB6_b it;
sbit sfr extern Direo da Sada sbit CF_OE_direction
CF_OE_direction; Habilitar pino. em TRISB5_b it;
sbit sfr extern Direo do Chip detecta sbit CF_CD1_direc-
CF_CD1_direction; alfinete. o em TRISB4_bit;
sbit sfr extern Direo do Chip Enable sbit CF_CE1_direc-
CF_CE1_direction; alfinete. o em TRISB3_bit;
sbit sfr extern Direo do endereo 2 sbit CF_A2_direction
CF_A2_direction; alfinete. em TRISB2_b it;
sbit sfr extern Direo do endereo 1 sbit CF_A1_direction
CF_A1_direction; alfinete. em TRISB1_b it;
sbit sfr extern Direo do endereo 0 sbit CF_A0_direction
CF_A0_direction; alfinete. em TRISB0_b it;

274 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Rotinas da biblioteca

- Cf_Init
- Cf_Detect
- Cf_Enable
- Cf_Disable
- Cf_Read_Init
- Cf_Read_Byte
- Cf_Write_Init
- Cf_Write_Byte
- Cf_Read_Sector
- Cf_Write_Sector

Rotinas para manipulao de arquivos:

- Cf_Fat_Init
- Cf_Fat_QuickFormat
- Cf_Fat_Assign
- Cf_Fat_Reset
- Cf_Fat_Read
- Cf_Fat_Rewrite
- Cf_Fat_Append
- Cf_Fat_Delete
- Cf_Fat_Write
- Cf_Fat_Set_File_Date
- Cf_Fat_Get_File_Date
- Cf_Fat_Get_File_Size
- Cf_Fat_Get_Swap_File

A rotina a seguir para o uso interno do compilador apenas:

- Cf_Issue_ID_Command

Mikroelektronika - Solues de software e hardware para o mundo embutido 275


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Cf_Init
Prottipo vazio Cf_Init ();

Retorna Nada.
Descrio Inicializa as portas de forma adequada para a comunicao com o carto CF.
As variveis globais:

- CF_Data_Port : Compact Flash porta de dados


- CF_RDY : Linha de sinal Ready
- CF_WE Escrever habilitar a linha de sinal
- CF_OE Sada: permitir que o sinal de linha
- CF_CD1 : Chip detecta sinal de linha
- CF_CE1 : Linha de sinal Enable
Requer - CF_A2 : Endereo 2 pinos
- CF_A1 : Pino Endereo 1
- CF_A0 : Pino endereo 0
- CF_RDY_direction : Direo do pino Ready
- CF_WE_direction : Direo do Write enable pinos
- CF_OE_direction : Direo de permitir a sada do pino
- CF_CD1_direction : Direo da Chip detecta o pino
- CF_CE1_direction : Direo da Chip permitir pin
- CF_A2_direction : Direo do pino de endereo 2
- CF_A1_direction : Direo da Endereo pino 1
- CF_A0_direction : Direo do endereo 0 pin

devem ser definidas antes de utilizar esta funo.


/ / Set pinagem compact flash
char Cf_Data_Port em PORTD;
sbit CF_RDY em RB7_bit;
sbit CF_WE em RB6_bit;
sbit CF_OE em RB5_bit;
sbit CF_CD1 em RB4_bit;
sbit CF_CE1 em RB3_bit;
sbit CF_A2 em RB2_bit;
Exemplo sbit CF_A1 em RB1_bit;
sbit CF_A0 em RB0_bit;
sbit CF_RDY_direction em TRISB7_bit;
sbit CF_WE_direction em TRISB6_bit;
sbit CF_OE_direction em TRISB5_bit;
sbit CF_CD1_direction em TRISB4_bit;
sbit CF_CE1_direction em TRISB3_bit;
sbit CF_A2_direction em TRISB2_bit;
sbit CF_A1_direction em TRISB1_bit;
sbit CF_A0_direction em TRISB0_bit;
/ / Fim do pinout compact flash
...
Cf_Init (); / / inicializa CF

276 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cf_Detect
Prottipo unsigned short Cf_Detect (void);

- 1 - Se o carto CF foi detectada


Retorna
- 0 - Caso contrrio

Descrio Verifica se h presena de carto CF, lendo o chip detectar alfinete.


As portas MCU correspondente dever ser devidamente inicializado para o carto
Requer
CF. Veja
Cf_Init.
/ / Espera at o carto CF est inserido:
Exemplo fazer
nop asm;
enquanto (! Cf_Detect ());

Cf_Enable
Prottipo vazio Cf_Enable (void);

Retorna Nada.
Ativa o disposi tiv o. Rotina deve ser chama do somente se voc tiver desati v ado o
Descrio disposi tiv o por meio da rotina Cf_Di s abl e. Estas duas rotinas em conjunto
permitir voc livre / ocupam linha de dados quando se trabalha com vrios
dispositivos.
As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Requer
Veja
Cf_Init.
/ / Ativar o flash compacto
Exemplo
Cf_Enable ();

Cf_Disable
Prottipo vazio Cf_Disable (void);
Retorna Nada.
Rotina desativa o dispositivo e libera as linhas de dados para outros dispositivos. Para
Descrio ativar
o dispositivo novamente, chame Cf_Enable. Estas duas rotinas em conjunto permitem
livreportas
As / ocupam
MCU linha de dados quando
correspondente se trabalha
dever ser com inicializado
devidamente vrios dispositivos.
para carto CF.
Requer
Veja
Cf_Init.
/ / Desativar flash compacto
Exemplo
Cf_Disable ();

Mikroelektronika - Solues de software e hardware para o mundo embutido 277


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Cf_Read_Init
vazio Cf_Read_Init (unsigned long endereo, unsigned short
Prottipo
sector_count);
Retorna Nada.
Inicializa carto CF para leitura.

Descrio Parmetros:

- endereo: o primeiro setor a ser preparado para operao de leitura.


- sector_count: nmero de setores a serem preparados para a leitura de
operao.
As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Requer
Veja
Cf_Init.
/ / Inicializa o flash compacto para a leitura do setor 590
Exemplo
Cf_Read_Init (590, 1);

Cf_Read_Byte

Prottipo unsigned short Cf_Read_Byte (void);

Retorna um byte lido do buffer sector Compact Flash.


Retorna
Nota: Superior byte do no assinado valor de retorno est desmarcada.

Descrio L um byte de Compac t Flash sector Local de buffer atual mente apontado
pelos ponteir os internos ler. Estas indica es sero autoicr em ented da leitura.
As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Requer Veja
Cf_Init.

carto CF deve ser inicializado para a leitura operao. Veja Cf_Read_Init.


/ / L um byte de memria Compact Flash:
Exemplo dados char;
...
= dados Cf_Read_Byte ();

278 Mikroelektronika - Software e hardware SOLUES PARA mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cf_Write_Init
Prottipo vazio Cf_Write_Init (unsigned long endereo, unsigned short sectcnt);

Retorna Nada.
Inicializa carto CF para a escrita.

Descrio Parmetros:

- endereo: o primeiro setor a ser preparado para operao de escrita.


- sectcnt: nmero de setores a serem preparados para a escrita operao.
As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Requer
Veja
Cf_Init.
/ / Inicializa o flash compact o para escrever para o setor 590
Exemplo
Cf_Write_Init (590, 1);

Cf_Write_Byte
Prottipo vazio Cf_Write_Byte (unsigned short data_);

Retorna Nada.

Grava um byte no buffer local Compact Flash sector actualmente apontada pelo
escrito ponteiros. Estas indicaes sero autoicremented da leitura. Quando
buffer sector est cheio, seu contedo ser transferi d o para a memri a flash
Descrio apropri ad o
sector.

Parmetros:

- Data_: byte a ser escrito.


As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Requer Veja
Cf_Init.

carto CF deve ser inicializado para escrever a operao. Veja Cf_Write_Init.


char = dados 0xAA;
Exemplo ...
Cf_Write_Byte (dados);

Mikroelektronika - Solues de software e hardware para o mundo embutido 279


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Cf_Read_Sector
vazio Cf_Read _Sector ( unsigned long sect or_number , unsigne d short
Prottipo
* Buffer);
Retorna Nada.
L um setor (512 bytes). Ler dados so armazenados em buffer desde pela
buffer parmetro.
Descrio Parmetros:

sector_number: o setor a ser lido.


buffer: buffer de dados de pelo menos 512 bytes de comprimento.

Requer As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Veja
Cf_Init.
/ / Ler o setor 22
Exemplo unsigned short dados [512];
...
Cf_Read_Sector (22, dados);

Cf_Write_Sector
vazio Cf_Write_Sector (unsigned long sector_number, unsigned short
Prottipo
* Buffer);
Retorna Nada.

Grava 512 bytes de dados fornecidos pelo buffer parmetro para um sector da CF.

Descrio Parmetros:

- Sector_number: setor a ser escrito.


- Buffer: buffer de dados de 512 bytes de comprimento.

Requer As portas MCU correspondente dever ser devidamente inicializado para carto CF.
Veja
Cf_Init.
/ / Escreve para o setor 22
Exemplo unsigned short dados [512];
...
Cf_Write_Sector (22, dados);

280 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cf_Fat_Init
Prottipo unsigned short Cf_Fat_Init ();

- 0 - Se o carto CF foi detectado e inicializado com sucesso


Retorna - 1 - Se o setor de inicializao FAT16 no foi encontrado
- 255 - Caso o carto no foi detectado

Descrio Inicializa carto CF, l CF setor de inicializao FAT16 e extrai os dados


necessrios
Requer necessrios pelo a biblioteca.
Nada.
/ / Inicia a biblioteca do FAT
Exemplo se (! Cf_Fa t_Init ( )) {/ / Inicia a biblio teca do FAT
...
}

Cf_Fat_QuickFormat
Prottipo unsigned char Cf_Fat_QuickForm at (cf_fat_label cha r *);

- 0 - Se o carto CF foi detectado, formatei e inicializado com sucesso


Retorna - 1 - se o formato FAT16 foi unseccessful
- 255 - Caso o carto no foi detectado

Formatos para FAT16 e inicializa o carto CF.

Parmetros:

- Cf_fat_label: rtulo de volume (11 caract eres). Se menos d e 11


Descrio caracter es so prestadas , a etiqueta ser preenc hi do com espa os . Se a string
null
passado, o volume no ser identificado.

Nota: Esta rotina pode ser utilizado em substituio ou em conjunto com a rotina

Cf_Fat_Init.

Nota: Se o carto CF j cont m um setor de inicializ ao vlido, ela


Requer Nada.
perm an ec er inalterad a
//--- Forma to e ini cializar a bibli oteca d o FAT -
(Exceto volume campo de rtulo) e(&
se (! Cf_Fat_QuickFormat somente as tabelas FAT{ e ROOT sero apagados.
cf_fat_label))
Exemplo Alm disso,
...
o
} rtulo de novo volume ser definido.

Mikroelektronika - Solues de software e hardware para o mundo embutido 281


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Cf_Fat_Assign
Prottipo unsigned short Cf_Fat_Assign (char * Nome do arquivo, char file_cre_attr);

- 0 se o arquivo no existe e nenhum arquivo novo criado.


Retorna
- 1 se o arquivo j existe ou o arquivo no existe, mas um novo arquivo criado.
Atribui arquivo para opera es de arquivo (ler, escrev er , apagar ...). Todos per a
arquiv o subseq ente-
es ser aplicado sobre o arquivo designado.

Parmetros:
- filename: nome do arquivo que deve ser atribudo para operaes de arquivo. O nom e
do arquivo
devem estar em formato DOS 8.3 (Nome_do_ar quiv o.ex tenso). O nome do arquivo e
extenso
ser automatic am ente preenc hi do com espaos pela bibliotec a, se tiverem menos de
compri mento
necessria ("mikro.tx", ou seja - ". mikro tx">), para que o usurio no tem que cuidar
disso.
Descrio O nome do arquivo e extenso so maisculas e minsculas. A biblioteca ir convert-los
para sustentar-
caso er automaticamente, assim que o usurio no tem que tomar cuidado com
isso.
Alm disso, a fim de manter a compati bili dade com a primeira verso desta
Bita, Msc
bibliotec Descrio
nomes de arquiv
ara o pode ser inserido como cadeia MAIS C ULA S de 11 bytes de
0 0x01 Leia apenas
compri m ento, sem
1 ponto
caractere 0x02entre o nome do arquivo e extenso Oculto (ie "MIKROELETXT" ->
MIKRO2E LE .T0x04
X T) . Neste caso, os 3 ltimos caracter es da string so consider ados
Sistema
a extenso de arquivo.
3 0x08 bandeiras e criao do arquivo
- file_cre_attr: Volume Label
attributs. Cada bit corresponde
4 0x10 Subdiretrio
atribuveis arquivo apropriado:
5 0x20 Arquivo
6 0x40 Dispositivo (uso interno somente, nunca encontrado
no bandeir
Arquivo disco) a criao. Se o arquiv o no existe e essa
7 0x80
bandei r a
conjunto, um novo arquivo com o nome especificado
ser criado.

Requer Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Cf_F at_Ini t.
/ / Cria arquivo com os atributos de arquivo se ele j no existe
Exemplo
Cf_Fat_Assign ("MIKRO007.TXT", 0xA0);

Nota: nomes de arquivo longos (LFN) no so suportados.


282 Mikroelektronika - Solues de software e hardware para o mundo embutido
CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cf_Fat_Reset
Prottipo vazio Cf_Fat_Reset (unsigned long * Tamanho);
Retorna Nada.
Abre atualmente atribudos arquivo para leitura.

Descrio Parmetros:

- Size: tamanho do buffer para armazenar arquivo. Aps o arquivo foi aberto

para leitura de seu tamanho


Requer Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
devolvido atravs deste parmetro.
Cf_F at_Ini t.
O arquivo deve
unsigned long ser previamente definidos. Veja Cf_Fat_Assign.
tamanho;
Exemplo ...
Cf_Fat_Reset (tamanho);

Cf_Fat_Read
Prottipo vazio Cf_Fat_Read (unsigned short * Bdata);
Retorna Nada.
L um byte do arquivo atualmente atribudos aberto para leitura. Ao exe-funo
ponteiros de arquivo cuo ser definido para o prximo caractere no arquivo.
Descrio Parmetros:

- Bdata: buffer para armazenar ler byte. Aps esta execuo funo de leitura

de bytes
Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Requer devolvido atravs deste parmetro.
Cf_F at_Ini t.
O arquivo deve ser previamente definidos. Veja Cf_Fat_Assign.
O arquivo
char deve ser aberto para leitura. Veja Cf_Fat_Reset.
carter;
Exemplo ...
Cf_Fat_Read (e personagem);

Mikroelektronika - Solues de software e hardware para o mundo embutido 283


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Cf_Fat_Rewrite
Prottipo vazio Cf_Fat_Rewrite ();

Retorna Nada.
Abre atualmente atribudos arquivo para gravao. Se o arquivo no est vazio o seu
Descrio
contedo ser
apagados.
Carto CF e FC bibliotec a deve ser inicializad o para o arquiv o opera es . Veja
Requer
Cf_F at_Ini t.
O
/ arquivo
/ Abre deve ser atribudo
o arquivo anteriormente. Veja Cf_Fat_Assign.
para escrita
Exemplo
Cf_Fat_Rewrite ();

Cf_Fat_Append
Prottipo vazio Cf_Fat_Append ();

Retorna Nada.
Abre atual mente atribudos arquiv o para acresc entar . Aps este ficheiro
Descrio
execu o da fun o
ponteiros ser posicionado aps o ltimo byte no arquivo, ento qualquer mandado de
arquivo
Carto subseqente-
CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Requer ing operao ter incio a partir da.
Cf_F at_Ini t.
O
/ arquivo
/ Abre deve ser previamente
o arquivo definidos. Veja Cf_Fat_Assign.
para anexando
Exemplo
Cf_Fat_Append ();

Cf_Fat_Delete
Prottipo vazio Cf_Fat_Delete ();

Retorna Nada.

Descrio Exclui atualmente atribudos arquivo do carto CF.

Requer Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Cf_F at_Ini t.
O arquivo
/ / Deletar deveo ser previamente
arquivo atualdefinidos. Veja Cf_Fat_Assign.
Exemplo
Cf_Fat_Delete ();

284 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cf_Fat_Write
Prottipo vazio Cf_Fat_Write (char * FData, no assinado data_len);

Retorna Nada.
Grava solicitado o nmer o de bytes para arquiv o atual m ente aberto para
grava o atribuda.
Descrio
Parmetros:

- FData: dados a serem gravados.


- Data_len: nmero de bytes a ser escrito.
Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Requer
Cf_F at_Ini t.
Arquivo devem ser previamente definidos. Veja Cf_Fat_Assign.
O arquivo
char deve ser aberto
file_contents para escrita. Veja Cf_Fat_Rewrite ou Cf_Fat_Append.
[42];
Exemplo ...
Cf_Fat_Write (file_contents, 42) / / gravar dados no atribuda
arquivo

Cf_Fat_Set_File_Date
vazio Cf_Fat_Set_File_Date (unsigned int ano, unsigned short
Prottipo ms, unsigned short di a, unsign ed short horas, un signed sh ort
minutos, unsigned short segundos);
Retorna Nada.
Define a data / hora. Qualqu er oper a o de arquiv o posteri or es escrita vou
escrev er essa
selo de tempo de arquivo atualmente atribudos's / attributs data.

Descrio Parmetros:

- Ano: atributo ano. Valores vlidos: 1980-2107


- Ms: atributo ms. Valores vlidos: 12/01
- Dia: atributo dia. Valores vlidos: 31/01
- Horrio: Horrio de atributo. Valores vlidos: 0-23
- Minutos: minutos atributo. Valores vlidos: 0-59
- Segundo: segundo atributo. Valores vlidos: 0-59
Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Requer
Cf_F at_Ini t.
O arquivo deve ser previamente atribudo. Veja Cf_Fat_Assign.
O arquivo deve ser aberto(2005,9,30,17,41,0);
Cf_Fat_Set_File_Date para escrita. Veja Cf_Fat_Rewrite ou Cf_Fat_Append.
Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido 285


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Cf_Fat_Set_File_Date
vazio Cf_Fat_Get_File_Date (unsigned int * Ano, unsigned short
Prottipo * Ms, unsigned short * Dia, unsigned short * horas, no assinado
curto * Min);
Retorna Nada.
L data / hora atributos de arquivo atualmente atribudo.

Parmetros:
- Ano: buffer para armazenar atributo ano para. Aps a funo de atributo ano
de execuo
Descrio retornado por esse parmetro.
- Ms: buffer para armazenar atributo ms para. Aps meses de execuo
da funo
atributo retornado por esse parmetro.
- Dia: buffer para armazenar atributo dia para. Aps a funo de atributo
dia de execuo
devolvido atravs deste parmetro.
- Horrio: de buffer para armazenar horas atributo. Aps horas de
execuo da funo
Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Requer atributo retornado por esse parmetro.
Cf_F
- at_Ini t. buffer para armazenar minutos atributo. Ao minuto execuo da
Minutos:
O arquivo
funo
no assinado deve ano;
ser previamente designados. Veja Cf_Fat_Assign.
atributo retornado
char ms, dia, horas, por esse parmetro.
minutos;
Exemplo
...
Cf_Fat_Get_File_Date (& anos, & meses, & dias, e horas, e minutos);

Cf_Fat_Set_File_Size
Prottipo unsigned long Cf_Fat_Get_File_Size ();

Retorna Tamanho do arquivo atualmente atribudos em bytes.


Descrio Esta funo l o tamanho de arquivo atualmente atribudo, em bytes.

Requer Carto CF e FC bibliotec a deve ser inicializad o para opera es de arquiv o. Veja
Cf_F at_Ini t.
O arquivo deve
unsigned long ser previamente definidos. Veja Cf_Fat_Assign.
my_file_size;
Exemplo ...
Cf_Fat_Get_File_Size my_file_size = ();

286 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Cf_Fat_Get_Swap_File
unsigned long Cf_Fat_Get_Swap_File (unsigned long sectors_cnt,
Prottipo
char * Nome do arquivo, char file_attr);
- Nmero do setor de partida para o arquivo de swap recm-criado, se houver espao livre
Retorna suficiente
no carto CF para criar um arquivo de tamanho necessrio.
- 0 caso
Esta funocontrrio
usada para criar um arquivo de swap de pr-nome e tamanho da CF
mdia. Se um arquivo com o nome especific ado j existe na mdia, busca de con-
setores consec utiv os ir ignorar setores ocupados por esse arquiv o. Portanto,
recome nda-s e
recomenda-se a apagar o arquivo como se ele existe antes de chamar essa funo. Se ele
no apagado
e h ainda bastante espao para um novo arquivo de permuta, esta funo ir
elimin-las depois
alocao de espao de memria novo para um novo arquivo swap.
O objetivo do arquivo de swap fazer com que a leitura ea escrita aos meios de
comunic a o do FC o mais rpido
possvel, usando o Cf_Read_Sector () e Cf_Write_Sector () funes
diretamente, sem que possa causar danos ao sistema FAT. Trocar arquivos podem
ser conside-
rado como uma "janel a" na mdia, onde o usuri o pode livremente escrev er / l er os
dados.
objetivo principal na bibliotec a do mikroC ser usado para a aquisio rpida de
Descrio dados, quando
a aquisio de tempo crtico foi concluda, os dados podem ser re-escrita em um "normal"
arquivo, e formatado da maneira mais adequada.
Parmetros:
- Sectors_cnt: nmero de setores consecutivos q ue o usurio quer que o arquivo d e
troca para ter.
- Filename: nome do arquivo que deve ser atribudo para operaes de arquivo. O nome
do arquivo
devem estar em formato DOS 8.3 (Nome_do_ar quiv o.ex tenso). O nome do arquivo e
extenso
ser automatic am ente preenc hi do com espaos pela bibliotec a, se tiverem menos
Bit mento
de compri Msc Descrio
necessria
0 ara
("mikro.tx",
0x01 ou seja - ". mikro tx">), para
Leiaque o usurio no tem que cuidar
apenas
disso.
1 do 0x02
O nome arquivo e extenso so maisculas e Oculto
minsculas. A biblioteca ir convert-los
para 2 0x04 Sistema
caso apropriado automaticamente, assim que o usurio no tem que tomar cuidado com
isso.3Alm disso,
0x08 a fim Volume Label
para 4manter0x10
compatibilidade com a primeira verso desta biblioteca, nomes de arquivos
Subdiretrio
podem ser
5 como0x20
entrou uma string em maisculas de 11 bytes Arquivo
de comprimento, com nenhum ponto
chsaracter
6 entre
0x40 Dispositivo (uso interno somente, nunca encontrado
o nome do arquivo e extenso (ie "MIKROELETXT" -> MIKROELE.TXT). Neste caso
7 0x80
os 3 ltimos caracteres da nocadeia
disco) so consideradas
No utilizado
como extenso de arquivo.
- File_attr: criao de arquivos e bandeiras attributs. Cada bit
corresponde
atribuveis arquivo apropriado:

Mikroelektronika - Solues de software e hardware para o mundo embutido 287


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Requer Carto CF e FC bibliotec a deve ser inicializado para oper a es de arquiv o. Veja
Cf_Fat_Init.
//-------------- Tente criar um arquivo de swap com o arquivo
atributo, cujo tamanho ser de pelo menos 1.000 setores.
/ / Se for bem sucedido, ele envia o n do setor de comear tudo de UART
unsigned long tamanho;
...
Exemplo size = Cf_Fat_Get_Swap_File (1000, "mikroE.txt", 0x20);
if (tamanho) {
UART_Write (0xAA);
UART_Write (Lo (tamanho));
UART_Write (Hi (tamanho));
UART_Write (Superior (tamanho));
UART_Write (Mxima (tamanho));
UART_Write (0xAA);
}

Exemplo Biblioteca

O exemplo a seguir demonstra vrios aspectos da biblioteca Cf_Fat16: Criao do novo arquivo
e escrever para baixo; Abertura de arquivos existentes e reescrev-lo (a escrita de iniciar-de-arquivo);
Abertura
arquivo de dados existentes e acrescentando a ele (a escrita de ponta-de-arquivo): abrir um arquivo e ler
dados de
lo (envi-lo ao terminal USART); Criar e modificar vrios arquivos de uma s vez;

/ / Set pinagem compact flash


char Cf_Data_Port em PORTD;

sbit CF_RDY em RB7_bit;


sbit CF_WE em RB6_bit;
sbit CF_OE em RB5_bit;
sbit CF_CD1 em RB4_bit;
sbit CF_CE1 em RB3_bit;
sbit CF_A2 em RB2_bit;
sbit CF_A1 em RB1_bit;
sbit CF_A0 em RB0_bit;

sbit CF_RDY_direction em TRISB7_bit;


sbit CF_WE_direction em TRISB6_bit;
sbit CF_OE_direction em TRISB5_bit;
sbit CF_CD1_direction em TRISB4_bit;
sbit CF_CE1_direction em TRISB3_bit;
sbit CF_A2_direction em TRISB2_bit;
sbit CF_A1_direction em TRISB1_bit;
sbit CF_A0_direction em TRISB0_bit;
/ / Fim do pinout cf

const LINE_LEN = 39;


char err_txt [20] = "FAT16 no encontrado";
char file_contents [LINE_LEN] = "XX CF FAT16 bibli oteca por Anton Riec kertn ";
288 Mikroelektronika - Solues de software e hardware para o mundo embutido
CAPTULO 7
mikroC PRO para PIC Bibliotecas

char nome [14] = "MIKRO00x.TXT"; / / Os nomes de arquivos


unsigned short loop, loop2;
unsigned long i, tamanho;
char Buffer [512];

/ / UART1 es crever u m texto e nova li nha (ali mentao de linha de reto rno + tra nsporte)
vazio UART1_Write_Line (char * Uart_text) {
UART1_Write_Text (uart_text);
UART1_Write (13);
UART1_Write (10);
}

/ / Cria novo arquivo e grava alguns dados a ele


vazio M_Create_New_File () {
filename [7] = 'A';
Cf_Fat_Assign (e nome do arquivo, 0xA0) / / File Find existente ou criar um
uma nova
Cf_Fat_Rewrite () / / Para limpar o arquivo e comear com os novos dados
for (loop = 1; loop <= 99; loop + +) {
UART1_Write ('.');
file_contents [0] = loop / 10 + 48;
file_contents [1%] loop = 10 + 48;
Cf_Fat_Write (file_contents, LINE_LEN -1) / / gravar dados para o
atribudo arquivo
}
}

/ / Cria muitos novos arquivos e grava os dados que lhes


vazio M_Create_Multiple_Files () {
para (loop2 = 'B'; loop2 <= 'Z'; loop2 + +) {
UART1_Write (loop2) / / o sinal de progresso
filename [7] = loop2 / / definir nome
Cf_Fat_Assign (e nome do arquivo, 0xA0) / / encontrar o arquivo existente ou criar
um novo
Cf_Fat_Rewrite () / / Para limpar o arquivo e comear com os novos dados
for (loop = 1; loop <= 44; loop + +) {
file_contents [0] loop = 10 + 48;
file_contents [1%] loop = 10 + 48;
Cf_Fat_Write (file_contents, LINE_LEN -1) / / gravar dados para o
atribudo arquivo
}
}
}

/ / Abre um arquivo existente e reescreve -lo


vazio M_Open_File_Rewrite () {
filename [7] = 'C';
Cf_Fat_Assign (& Nome, 0);
Cf_Fat_Rewrite ();
for (loop = 1; loop <= 55; loop + +) {

Mikroelektronika - Solues de software e hardware para o mundo embutido 289


CAPTULO 7
Bibliotecas mikroC PRO para PIC

file_contents [0] loop = 10 + 65;


file_contents [1%] loop = 10 + 65;
Cf_Fat_Write (file_contents, LINE_LEN -1); / / Escreve dados para o
atribudo arquivo
}
}

/ / Abre um arquivo existente e acrescenta dados a ele


/ / (E altera a data / hora)
vazio M_Open_File_Append () {
filename [7] = 'B';
Cf_Fat_Assign (& Nome, 0);
Cf_Fat_Set_File_Date (2005,6,21,10,35,0);
Cf_Fat_Append (); / arquivo / Prepare-se para anexar
Cf_Fat_Write ("para 2005n mikroElektronika", 27); / / Gravar dados
atribudo arquivo
}

/ / Abre um arquivo existente, l os dados a partir dele e coloca -UART


vazio M_Open_File_Read () {
carter char;

filename [7] = 'B';


Cf_Fat_Assign (& Nome, 0);
Cf_Fat_Reset (e tamanho); / / Para ler o arquivo, tamanho do procedimento de retorno de arquivo
for (i = 1; <i = tamanho; i + +) {
Cf_Fat_Read (e personagem);
UART1_Write (personagem); / / Escreve os dados para UART
}
}

/ / Exclui um arquivo. Se o arquivo no existir, ele vai ser criada


/ / E depois que foi excluda.
vazio M_Delete_File () {
filename [7] 'F';
Cf_Fat_Assign (filename, 0);
Cf_Fat_Delete ();
}

/ / Testa se o arquivo j exis te, e se sim envia s ua data de criao


/ / E tamanho do arquivo via UART
vazio M_Test_File_Exist () {
unsigned long fsize;
unsigned int ano;
unsigned short ms, dia, hora, minuto;
unsigned char outstr [12];
filename [7] = 'B'; / descomente / esta linha de pesquisa para arquivos que
FAZ existe
/ / Filename [7] 'F'; / descomente esta linha de pesquisa para arquivos que
NO existe

290 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

se (Cf_Fat_Assign (Nome, 0)) {


arquivo //--- foi encontrado - obter a sua data
Cf_Fat_Get_File_Date (& anos, & meses, & dia, & hora e minuto);
WordToStr (ano, outstr);
UART1_Write_Text (outstr);
ByteToStr (outstr ms);
UART1_Write_Text (outstr);
WordToStr (outstr, dia);
UART1_Write_Text (outstr);
WordToStr (outstr horas);
UART1_Write_Text (outstr);
WordToStr (outstr minutos);
UART1_Write_Text (outstr);
//--- Obter o tamanho do arquivo
Cf_Fat_Get_File_Size fsize = ();
LongToStr ((long assinado) fsize, outstr);
UART1_Write_Line (outstr);
}
mais {
//--- arquivo no foi encontrado - sinal que ele
UART1_Write (0x55);
Delay_ms (1000);
UART1_Write (0x55);
}
}
/ / Tenta criar um arquivo de swap, cujo tamanho s er de pelo menos 10 0
/ / Setores (consulte a Ajuda para mais detalhes)
vazio M_Create_Swap_File () {
unsigned int i;

for (i = 0; i <512; i + +)
Buffer [i] = i;

size = Cf_Fat_Get_Swap_File (5000, "mikroE.txt", 0x20); / ver a ajuda


sobre esta funo para obter detalhes

se (Tamanho) {
LongToStr ((long assinado) err_txt, tamanho);
UART1_Write_Line (err_txt);

for (i = 0; i <5000; i + +) {
Cf_Write_Sector (tamanho + +, buffer);
UART1_Write ('.');
}
}
}
/ / Main. Descomente a funo (s) para testar a operao desejada (s)
vazio main () {
# Define COMPLETE_EXAMPLE / comentar essa linha para fazer sim -
exemplo pler / menor

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO 291


CAPTULO 7
Bibliotecas mikroC PRO para PIC

ADCON1 | = 0x0F; / / Configu rar um p inos com o digita l


CMCON | = 7; / / Desligue comparadores

/ / Inicializar UART1 mdulo


UART1_Init (19200);
Delay_ms (10);

UART1_Write_Line ("PIC-Started"); / relatrio da CPI presentes

/ / Use fat16 formatao rpida, em vez de rotina init se uma formatao


necessrio
se (Cf_Fat_Init () == 0) {
Delay_ms (2000); / / espera por um tempo at que o carto estabilizado
/ / Perodo depende usado carto CF
//--- Iniciar o teste
UART1_Write_Line ("Iniciar teste.");
//--- Teste rotinas. Descomente-los um por um para testar certos
recursos
M_Create_New_File ();
# Ifdef COMPLETE_EXAMPLE
M_Create_Multiple_Files ();
M_Open_File_Rewrite ();
M_Open_File_Append ();
M_Open_File_Read ();
M_Delete_File ();
M_Test_File_Exist ();
M_Create_Swap_File ();
# Endif
UART1_Write_Line ("O Fim do teste.");

}
mais {
UART1_Write_Line (err_txt) / / Nota: Cf_Fat_Init tenta inicial -
ize um carto mais de uma vez.
/ / Se o carto no estiver presente, initializa-
o pode durar mais tempo (dependendo da velocidade do clock)
}

292 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Conexo HW

Pin diagrama de carto de memria CF

Mikroelektronika - Solues de software e hardware para o mundo embutido 293


CAPTULO 7
Bibliotecas mikroC PRO para PIC

EEPROM BIBLIOTECA

Memria EEPROM de dados est disponvel com uma srie de microcontroladores PIC. mik roC PRO para
PIC inclui
biblioteca para o trabalho confortvel com EEPROM.

Rotinas da biblioteca

- Eeprom_Read
- Eeprom_Write

EEPROM_Read
Prottipo unsigned short EEPROM_Read (unsigned int endereo);

Retorna Retorna byte do endereo especificado.

Descrio L dados a par tir de deter minado endereo. endereo do parmetro do tipo inteiro,
o que significa que ele suporta MCUs com mais de 256 bytes de EEPROM.
Requer mdulo EEPROM.
Requer Certifique-se de um atraso mnimo de 20ms entre o uso sucessivo de rotinas
EEPROM_Write e EEPROM_Read. Embora PIC ir escrever o valor correto,
EEPROM_Read pode retornar um resultado indefinido.
unsigned short ter;
Exemplo ...
ter = EEPROM_Read (0x3F);

EEPROM_Write
Prottipo vazio EEPROM_Write (unsigned int endereo, unsigned short de dados);

Retorna Nada.

Grava dados ao especificado endereo. endereo do parmetro do tipo inteiro,

Descrio que
significa que ele suporta MCUs com mais de 256 bytes de EEPROM.
Esteja ciente de que todas as interrupes sero desabilitados durante a execuo do
EEPROM_Write
rotina (bit GIE de registr o INTCO N sero apaga dos) . Rotina ir restaur ar a
Requer mdulo EEPROM.
PREVI-
Requer Certifique-se de um atraso mnimo de 20ms entre o uso sucessivo de rotinas
Estado ous deste bit na sada.
EEPROM_Write e EEPROM_Read. Embora PIC ir escrever o valor correto,
EEPROM_Read pode retornar um resultado indefinido.

Exemplo EEPROM_Write (0x32, 19);

294 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

O exemplo demonstra o uso de EEPROM Biblioteca.

char II; / / Varivel de loop /

vazio main () {
ANSEL = 0; / / Configurar um pinos como I / O digital
ANSELH = 0;

PORTB = 0;
PORTC = 0;
PORTD = 0;

TRISB = 0;
TRISC = 0;
TRISD = 0;

de (ii = 0; ii <32; ii + +) / / Preencha buffer de dados


EEPROM_Write (ii + 0x80, ii); / / Escreve os dados de endereo 0x80 + ii

EEPROM_Write (0x02, 0xAA); / / Escreve alguns dados no endere o 2


EEPROM_Write (0x50, 0x55); / / Escreve alguns dados no endereo 0150

Delay_ms (1000); / / Blink P ORTB e d iodos PO RTC


PORTB = 0xFF; / / Para indicar incio de leitura
PORTC = 0xFF;
Delay_ms (1000);
PORTB = 0x00;
PORTC = 0x00;
Delay_ms (1000);

PORTB EEPROM_Read = (0x02); / / L os d ados de endereo 2 e


mostrar lo em PORTB
PORTC EEPROM_Read = (0x50); / / L os dados de endereo 0x50 e
mostrar lo em PORTC

Delay_ms (1000);

de (ii = 0; ii <32; ii + +) {/ / Ler bloco de 32 bytes de 0x80 endereo


PORTD EEPROM_Read = (0x80 + II) / / dados e exibio em PORTD
Delay_ms (250);
}
}

Mikroelektronika - Solues de software e hardware para o mundo embutido 295


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Biblioteca Ethernet PIC18FXXJ60

PIC18FxxJ60 famlia de microcontroladores apresentam um mdulo controlador Ethernet incorporado. Esta


uma soluo completa de conectividade, incluindo implementaes completas de ambos os Media Access
Control
(MAC) e Fsica transceptor Layer (PHY) mdulos. Dois transformadores de pulso e um passivo poucos
componentes so todos que so necessrios para conectar o microcontrolador diretamente a uma rede
Ethernet
de trabalho.

O mdulo Ethernet atende a todas as especificaes IEEE 802.3 para conectividade de 10-BaseT para um
par tranado de rede. incorpora uma srie de sistemas de filtragem de pacotes para limitar o pacote de
entrada-
ets. Ele tambm oferece um mdulo de DMA interna para transferncia rpida de dados e hardware IP
assistida
clculos de soma de verificao. Provises so feitas tambm para duas sadas de LED para indicar link e
rede
atividade

Esta biblioteca fornece a posibilidade de utilizar facilmente recurso de ethernet do MCUs acima
mencionados.

Ethernet biblioteca PIC18FxxJ60 suporta:

- O protocolo IPv4.
- Requisies ARP.
- ICMP echo requests.
- Os pedidos UDP.
- Os pedidos TCP (sem pilha, sem reconstruo de pacotes).
- O cliente com cache ARP.
- O cliente DNS.
- Cliente UDP.
- O cliente DHCP.
- Fragmentao do pacote no suportado.

Nota: A varivel bibliot eca Global Ethernet_userTimerSec usado para manter trilha de tempo para todos os
clientes
implementaes (ARP, UDP de DNS e DHCP). de responsabilidade do usurio para incrementar essa
varivel
cada segundo em que o cdigo se algum dos clientes usado.

Nota: Para usurios avanados, existem arquivos de cabealho ("eth_j60LibDef.h" e


"Eth_j60LibPrivate.h") em P18 usa \ pasta do compilador, com descrio de todas as rotinas e
variveis globais, relevantes para o usurio, implementado no PIC18FxxJ60 Ethernet Biblioteca.

296
Mikroelektroni
ka - Solues
de software e
hardware para
o mundo
embutido
CAPTULO 7
mikroC PRO para PIC Bibliotecas

Rotinas da biblioteca

- Ethernet_Init
- Ethernet_Enable
- Ethernet_Disable
- Ethernet_doPacket
- Ethernet_putByte
- Ethernet_putBytes
- Ethernet_putString
- Ethernet_putConstString
- Ethernet_putConstBytes
- Ethernet_getByte
- Ethernet_getBytes
- Ethernet_UserTCP
- Ethernet_UserUDP
- Ethernet_getIpAddress
- Ethernet_getGwIpAddress
- Ethernet_getDnsIpAddress
- Ethernet_getIpMask
- Ethernet_confNetwork
- Ethernet_arpResolve
- Ethernet_sendUDP
- Ethernet_dnsResolve
- Ethernet_initDHCP
- Ethernet_doDHCPLeaseTime
- Ethernet_renewDHCP

Mikroelektronika - Solues de software e hardware para o mundo embutido 297


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Ethernet_Init
vazio Ethernet_Init (unsigned char * Mac, unsigned char * Ip,
Prottipo
unsigned char FullDuplex);
Retorna Nada.
Esta a rotina MAC do mdulo. Ele inicializa controlador Ethernet. Esta funo

internamente subdividida em 2 partes para ajud-vinculador quando vem com
pouca memria.

configur a es do control a dor Ether net (parmetr os no menci o nados aqui so

definidos como padr o) :

- Recebe o endereo inicial do buffer: 0x0000.


- Receber endereo final buffer: 0x19AD.
Descrio - Transmitir o endereo inicial do buffer: 0x19AE.
- Transmitir endereo final buffer: 0x1fff.
- Buffer RAM de leitura / gravao ponteiros no modo de auto-incremento.
- Receber filtros definidos como padro: CRC + MAC + MAC Unicast Broadcast
na OU
modo.
- Controle de fluxo com TX e RX pausa quadros em modo full duplex.
- Quadros so preenchidos com 60 + bytes CRC.
- Tamanho mximo do pacote definido como 1518.
- Back-to-Back-Inter Packet Gap: 0x15 em modo full duplex; 0x12 em half-duplex
modo.
- Non-Back-to-Back-Inter Packet Gap: 0x0012 em modo full duplex; 0x0C12 em
modo half duplex.
- Metade loopback duplex com deficincia.
- LED de configurao: padro (LEDA link-status, atividade LEDB-link).

Parmetros:
- Mac: RAM buffer que contm o endereo MAC vlido.
Requer - IP: memria intermdia que contm o endereo IP vlido.
Nada.
- FullDuplex: Ethernet Switch modo duplex. Vlido valores: 0 (Half duplex
# Define Ethernet_HALFDUPLEX 0
modo) e 1 (Modo full duplex).
# Define um Ethernet_FULLDUPLEX
Nota: Se um servid o r DHCP est a ser utiliza d o, o endere o IP deve ser
Exemplo unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19,
0x3f} / / meu endereo MAC
defin id o char
unsigned como 0.0.0.0.
myIpAddr = {192, 168, 1, 60} / / o meu IP addr

Ethernet_Init (myIpAddr myMacAddr, Ethernet_FULLDUPLEX);

298 Mikroelektronika - Software e hardware SOLUES PARA mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Ethernet_Enable
Prottipo void Ethernet_Enable (enFlt unsigned char);

Retorna Nada.
Esta a rotina MAC do mdul o. Esta rotina permite que o trfego de rede
apropri ada no
o mdul o de MCU Ethernet interna por meio de ela receber filtros (unicast,
multicast, broadcast, CDC). Tipo especfico de trfego de rede ser ativado se
uma
bit corres pond ente do parmetr o essa rotina de entrada est definido. Portanto,
mais do que
um tipo de trfego de rede podem ser ativados ao mesmo tempo. Para este
efeito,
constantes bibliotec a predefi ni da (ver tabel a abaix o) pode ser ORed para formar
ade-
valor de entrada apropriado.
Bi Msc Descrio biblioteca
t
Parmetros: predefinidos
ara
- EnFlt: MAC trfego Broadcast / receber bandeira filtro. Cada const
0 0x01o trfego de rede / receber bandeiras filtro. bit corresponde
_Ethernet_BROADCAST
Descrio a apro- Quando
trfego de rede conjunto,
trfegoMAC
adequado / trfego
filtro /de derecepo:
difuso ser filtro.
1 0x02 MAC habilitado.
Multicast receber bandeira _Ethernet_MULTICAST
Quando
2 0x04 definido, o trfegonomulticast
utilizadoMAC ser none
habilitado.
3 0x08 no utilizado none
4 0x10 no utilizado none

5 0x20 CRC marca de verificao. Quando _Ethernet_CRC


definido, pacotes com
6 0x40 campo CRCno invlido ser
utilizado none
descarta dos .
7 0x80 MAC trfego Unicast / receber bandeira filtro. _Ethernet_UNICAST
Quando
conjunto, MAC trfego unicast ser
habilitado.

Nota: Advance filtragem disponveis no MCU mdulo Ethernet internas, como a

Pattern Match, Magic Packet e Hash Table no pode ser ativada por este
rotina. Adicionalmente, todos os filtros, exceto CRC, habilitado com esta rotina ir trabalhar
em
Ou modo, o que significa que o pacote ser recebido se qualquer um dos filtros
Mikroelektronika - Solues
ativados de software e hardware para o mundo embutido 299
aceita.
Nota: Esta rotina vai mudar configurao do filtro receber on-the-fly. No ser, no
qualquer forma, mexer com ativar / desativar receber / transmitir a lgica ou qualquer outra
CAPTULO 7
Bibliotecas mikroC PRO para PIC

Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


Ethernet_Enable (_Ethernet_CRC | _Ethernet_UNICAST); / / enable
Exemplo
CRC verificao e trfego Unicast

Ethernet_Disable
Prottipo vazio Ethernet_Enable (enFlt unsigned char);

Retorna Nada.
Esta a rotina MAC do mdulo. Esta rotina desabilita o trfego de rede apropriada no
Mdulo MCU Ethernet interna por meio de ela receber filtros (unicast, multicast,
transmisso, CRC). Tipo especfico de trfego de rede ser desativada se o bit
correspondente
do parmetro essa rotina de entrada est definido. Portanto, mais do que um tipo de trfico
de rede
fic pode ser desativado, ao mesmo tempo. Para o efeito, constantes predefinidas biblioteca
(Ver tabela abaixo) pode ser ORed para formar o valor de entrada apropriado.
Parmetros:
- DisFlt: o trfego de rede / receber bandeiras filtro. Cada bit corresponde
a Bit
apro- biblioteca
Msc Descrio
predefinidos
trfego de rede adequado / filtro de recepo:
ara MAC trfego Broadcast / filtro de recepo const
0 0x01 _Ethernet_BROADCAST
Descrio pavilho. Quando
conjunto,
MAC MAC
trfego trfego/ receber
Multicast de difuso ser filtro.
bandeira
1 0x02 _Ethernet_MULTICAST
desativado.
Quando
2 0x04 definido, o trfegonomulticast MAC ser
utilizado none
desativado.
3 0x08 no utilizado none
4 0x10 no usados none
CRC marc a de verifica o. Quando
5 0x20 defini do, verifica o de CRC ser _Ethernet_CR C
ser desativ ad o e pacotes com CRC invlido
6 0x40 camponosero aceitos.
utilizado none
7 0x80 MAC trfego Unicast / receber bandeira filtro. _Ethernet_UNICAST
Quando
conjunto, MAC trfego unicast ser com
Nota: Advance filtragem disponveis no MCU interna Ethernet mdulo, como
deficinci a.

Pattern Match, Magic Packet e Hash Table no pode ser desativado por esta rotina.
Nota: Esta rotina vai mudar configurao do filtro receber on-the-fly. No ser, no
qualquer forma, mexer com ativar / desativar receber / transmitir a lgica ou qualquer outra
parte
o mdulo de MCU Ethernet interno. O mdulo de MCU Ethernet interno
300 Mikroelektronika
devem -serSolues de software
devidamente e hardware
cofigured por meiopara o mundo
de rotina embutido
Ethernet_Init.
CAPTULO 7
mikroC PRO para PIC Bibliotecas

Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init ..


Ethernet_Disa ble (_Eth ernet_CRC | _Ether net_UNICA ST); / de sativar
Exemplo
CRC verificao e trfego Unicast

Ethernet_doPacket
Prottipo unsigned char Ethernet_doPacket ();

- 0 - Mediante o processamento de pacot es de sucesso (zero pacotes recebidos

ou recebidos
Retorna pacote processado com sucesso).
- 1 - Por erro de recepo ou receber corrupo buffer. Ethernet controlador
precisa ser reiniciado.
- 2 - O pacote recebi do no foi enviado para ns (no o nosso IP, nem ender e o
de broadc as t IP).
- 3 - Recebeu de pacotes IP no foi IPv4.
Esta a rotina MAC do mdulo. processos pacote recebido seguinte se existir.
- 4 - Pacote recebido foi de tipo desconhecido para a biblioteca.
Os pacotes so processados da seguinte forma:

Descrio - Requisies ARP e ICMP so respondidas automaticamente.


- Mediante pedido TCP Ethernet_UserT CP a funo chamada para posterior
processamento.
- Mediante pedido da UDP Ethernet_UserUDP funo chamado para processamento
adicional.

Requer mdulo Ethernet deve serdeve


Nota: Ethernet_doPacket inicializado. Vejao Ethernet_Init.
ser chamado mais rpido possvel no cdigo do
se (Ethernet_doPacket () == 0) {/ / processo pacotes recebidos
Exemplo usurio.
...
}

Mikroelektronika - Solues de software e hardware para o mundo embutido 301


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Ethernet_putByte
Prottipo vazio Ethernet_putByte (unsigned char v);

Retorna Nada.
Esta a rotina MAC do mdulo. Ele armazena um byte para endereo apontado
pelo cur-
Descrio ponteiro escrever controlador alugar Ethernet (EWRPT).

Parmetros:

- V: valor para armazenar


Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
char dados;
Exemplo ...
Ethernet_putByte (dados) / / colocar um byte em Ethernet controller
buffer

Ethernet_putBytes
Prottipo vazio Ethernet_putBytes (unsigned char * Ptr, unsigned char n);

Retorna Nada.

Esta a rotina MAC do mdul o. Ele armaz en a o nmer o solicitado de bytes em


Ether net
RAM do controlador a partir de correntes Ethernet controlador escrever ponteiro (EWRPT)
Descrio
Local.

Parmetros:

- Ptr: RAM tampo contendo bytes a serem gravados na memria RAM controlador

Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


Ethernet.
char
- * Buffer
N: nmero de=bytes
"mikroElektronika";
a ser escrito.
Exemplo ...
Ethernet_putBytes (buffer, 16); / / coloque uma matriz de RA M em Ethernet
buffer do controlador

302 Mikroelektronika - Software e hardware SOLUES PARA mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Ethernet_putConstBytes
vazio Ethernet_putConstBytes (const unsigned char * Ptr, no assinado
Prottipo
char n);
Retorna Nada.
Esta a rotina MAC do mdul o. Ele armaz ena o nmer o de bytes solicitado const
em Eth-
RAM a partir do controlador ernet do controlador Ethernet atual ponteiro
Descrio escrever
(EWRPT) local.

Parmetros:

- Ptr: const tampo contendo bytes a serem gravados na memria RAM controlador
Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
const char * Buffer = "mikroElektronika";
Ethernet.
Exemplo ...
- N: nmero de bytes a ser 16);
escrito.
Ethernet_putConstBytes (buffer, / / colocar um array em const
buffer do controlador Ethernet

Ethernet_putString
Prottipo unsigned int Ethernet_putString (unsigned char * Ptr);

Retorna Nmero de bytes gravados na memria RAM controlador Ethernet.


Esta a rotina MAC do mdulo. Ele armazena string todo (excluindo a terminao nula)
em
Descrio RAM Ethernet controller a partir de control ador Ethernet atual ponteir o escrever
(EWRPT) local.

Parmetros:

- Ptr: string a ser gravado na memria RAM controlador Ethernet.


Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
char * Buffer = "MikroElektronika";
Exemplo ...
Ethernet_putString (buffer); / / coloque uma seqncia de RAM em Ethernet
buffer do controlador

Mikroelektronika - Solues de software e hardware para o mundo embutido 303


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Ethernet_putConstString
Prottipo unsigned int Ethernet_ putConstS tring (co nst unsig ned char * Ptr);
Retorna Nmero de bytes gravados na memria RAM controlador Ethernet.
Esta a rotina MAC do mdul o. Ele armaz ena string const todo (excluindo a
resciso nulo
Descrio
o) para a RAM do controlador Ethernet a partir de controlador Ethernet atual
escrever ponteiro (EWRPT) local.
Parmetros:
- Ptr: const string a ser gravado na memria RAM controlador Ethernet.
Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
const char * Buffer = "mikroElektronika";
Exemplo ...
Ethernet_putConstString (buffer); / / colocar um const string em
buffer do controlador Ethernet

Ethernet_getByte
Prottipo unsigned char Ethernet_getByte ();
Retorna Byte lido RAM controlador Ethernet.
Esta a rotina MAC do mdul o. Ele busca um byte de ender e o apontad o pelo
Descrio
atual
Requer ponteiro ler Ethernet
mdulo Ethernet devecontroller (ERDPT).
ser inicializado. Veja Ethernet_Init.
char buffer;
Exemplo ...
buffer = Ethernet_getByte (); / / l um byte de con-Ethernet
buffer Troller's

Ethernet_getBytes
vazio Ethernet_getBytes (unsigned char * Ptr, no assinado int addr,
Prottipo
unsigned char n);
Retorna Nada.
Esta a rotina MAC do mdul o. Ele busca eques ted nmer o de bytes de Ethernet
RAM do controlador a partir de determinado endereo. Se o valor de 0xFFFF
passado como
Descrio o parmetr o de ender e o, a leitura incio do control a dor Ether net atual
leia localizao (ERDPT) ponteiro.
Parmetros:
- Ptr: buffer para armazenar bytes lidos a partir da RAM controlador
Ethernet.
- Addr: endereo do controlador Ethernet comear RAM. Valores vlidos:
Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
0 .. 8192.
char buffer de
- N: nmero [16];
bytes a ser lido.
Exemplo ...
Ethernet_getBytes (buffer, 0x100, 16 ); / / l 16 bytes, a pa rtir
a partir do endereo 0x100

304 Mikroelektronika - Solues de software e hardware para o mundo embutido


CAPTULO 7
mikroC PRO para PIC Bibliotecas

Ethernet_UserTCP
unsigned int Ethernet_UserTCP (unsigned char * RemoteHost, no assinado
Prottipo
int RemotePort, unsigned int localPo rt, unsigned int reqLeng th);

- 0 - No deveria ser um resposta ao pedido.


Retorna
- Comprimento do campo de resposta HTTP TCP / dados - caso contrrio.
Esta a rotina de mdulo TCP. Ele chamado internamente pela biblioteca. O acesso do
usurio
es para o pedido de TCP / HTTP usando algumas das rotinas Ether net_ get. A
usurio coloca dados no buffer de transmi ss o usando algumas das rotinas
Ethernet_p ut.
A funo deve retornar o tamanho em bytes da resposta HTTP TCP / ou 0 se no houver
Descrio no nada para transmitir. Se no houver necessidade de responder s solicitaes TCP /
HTTP, apenas
definir esta Funo com retorno (0) como uma nica instruo.

Parmetros:

- RemoteHost: endereo IP do cliente.


- RemotePort: porto cliente TCP.
- LocalPort: porta para que o pedido enviado.
- ReqLength: TCP / solicitao HTTP comprimento do campo de dados.
Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
Nota: O cdig o fonte da fun o forneci do com exempl os de projetos
Exemplo Essa funo chama do internam ente pela bibliotec a e no deve ser chamado
pelo
adequa dos.
cdigo dedeve
O cdigo usurio.
ser ajustado pelo usurio para obter resposta desejada.

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo 305


CAPTULO 7
Bibliotecas mikroC PRO para PIC

Ethernet_UserUDP
unsigned int Ethernet_UserUDP (unsigned char * RemoteHost, no assinado
Prottipo
int RemotePor t, unsign ed int de stPort, u nsigned i nt reqLen gth);
- 0 - no deve haver uma resposta ao pedido.
Retorna
- Comprimento do campo de dados UDP resposta - outra forma.
Esta a rotina de mdulo UDP. Ele chamado internamente pela biblioteca. O acesso do
usurio
es para o pedido UDP usando algumas das rotinas Ethernet_g et. O usurio coloca
dados no buffer de transmisso usando algumas das rotinas Ethernet_put. A fun-
o deve retornar o tamanho em bytes da resposta UDP, ou 0 se nada para transmitir. Se
voc no precisa responder s solicitaes UDP, basta definir esta funo com
Descrio um
return (0) como nica instruo.

Parmetros:

- RemoteHost: endereo IP do cliente.


- RemotePort: porta do cliente.
- DestPort: porta para que o pedido enviado.
- ReqLength: solicitao UDP comprimento do campo de dados.

Nota: O cdig o fonte da fun o forne cid a com exemp lo s de proje to s


Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
Exemplo adequfuno
Essa a d o s. chamado internamente pela biblioteca e no deve ser chamado pelo cdigo de
O
usurio. deve ser ajustado pelo usurio para obter resposta desejada.
cdigo

Ethernet_getlpAddress
Prottipo unsigned char * Ethernet_getIpAddress ();

Retorna Ponter para a varivel global explorao endereo IP.


Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar