mikroC PRO para PIC

Abril de 2009. nota Reader's

AVISO LEGAL:
mik roC PRO para PIC e este manual são de propriedade da mikroElektronika e estão 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 não pode ser
copiado, parcial ou totalmente sem autorização escrita da mikroEelktronika. A
PDF edição do manual pode ser impresso para uso privado ou local, mas não para distribuição.
Modificando o manual ou o compilador é estritamente proibida.

ATIVIDADES DE ALTO RISCO:
A mik roC PRO para PIC compilador não é tolerante a falhas e não 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 operação de instalações nucleares, navegação de aeronaves
ou
comunicação sistemas de controle de tráfego aéreo, máquinas de suporte à vida, ou sistemas de armas,
em que a falha do Software possa levar diretamente à morte, ferimentos pessoais ou grave
danos físicos ou ambientais ("Atividades de Alto Risco"). mikro Elektronika e seus fornecedores
Declinamos qualquer garantia explícita ou implícita de adequação para Atividades de Alto Risco.

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

Este manual cobre mik roC PRO para PIC versão 1.1 e os tópicos relacionados. versão mais recente-
sões podem conter alterações sem aviso prévio.

Bug Reports compilador:
O compilador foi cuidadosamente testado e depurado. É, no entanto, possível
garantir um produto 100% livre de erros. Se você gostaria de relatar um bug, por favor entre em contato
conosco
o office@mikroe.com endereço. Por favor, inclua as informações seguintes em seu relatório:
- Seu sistema operacional
- Versão do mik roC PRO para PIC
- Exemplo de código
- Descrição 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 serviços
são de propriedade de seus respectivos proprietários.

Mikroelektronika - Soluções de software e hardware para o mundo embutido
Observação do
leitor

Tabela de Conteúdo

CAPÍTULO 1 Introdução

CAPÍTULO 2 mik roC PRO para PIC Meio Ambiente

CAPÍTULO 3 MikroICD (In Circuit Debugger)

CAPÍTULO 4 mik roC PRO para PIC Especificidades

CAPÍTULO 5 PIC Especificidades

CAPÍTULO 6 mik roC PRO para PIC Referência da Linguagem

CAPÍTULO 7 mik roC PRO para PIC Bibliotecas

Tabela de Conteúdos mikroC PRO para PIC

CAPÍTULO 1
Características. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Por onde começar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
mikroElektronika Associates Declaração de Licença e Garantia Limitada. . . . . . . . . . . . 4
IMPORTANTE - LEIA COM ATENÇÃO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
GARANTIA LIMITADA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ATIVIDADES DE ALTO RISCO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
DISPOSIÇÕES GERAIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Suporte Técnico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Como Registrar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Quem recebe a chave de licença. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Como obter a chave de licença. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Depois de receber a chave de licença. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

CAPÍTULO 2
Resumo IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Opções do menu principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
File Menu de Opções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Opções do menu Editar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Encontrar o texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Substituir texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Localizar em arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Ir para a linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
opção de expressões regulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Opções do menu Exibir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Barras de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Arquivo da Barra de Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Barra de Edição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Opções do Projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Opções do menu Executar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Opções do menu Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Ajuda Menu de Opções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Os atalhos de teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Resumo IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Personalizar Layout IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Janelas de encaixe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Salvar Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

IV Mikroelektronika - Soluções de software e hardware para o mundo embutido

mikroC PRO para PIC Tabela de Conteúdos

Auto Hide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Avançado editor de código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Editor de recursos avançados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Código Assistente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Código Folding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Parâmetro Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Modelos de Código (Auto Complete). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Correção automática. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Verificador Ortográfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bookmarks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Linha Goto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Comente / Descomente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Código Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Lista de rotina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Project Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Projeto Janela Configurações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Library Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Erro janela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Estatística. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Uso de memória do Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Uso de memória RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
RAM locais utilizados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Locais SFR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Uso de memória ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Constantes Memória ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Função Ordenado por Nome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Funções separadas pelo tamanho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Funções Ordenado por endereços. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Funções Ordenado por Nome do Gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Funções Ordenado por carta do tamanho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Funções ordenadas por endereço Gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Função Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Memória Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Editor de Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
As ferramentas integradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
USART Terminal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
EEPROM Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
ASCII Gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Sete Converter segmento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
LCD caractere personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
LCD Gráfico Editor de Bitmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
HID Terminal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
UDP Terminal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Opções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Mikroelektronika - Soluções de software e hardware para o mundo embutido V

Tabela de Conteúdos mikroC PRO para PIC

Código editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
As configurações de saída. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Expressões Regulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Introdução. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Simples encontrados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Seqüências 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 - Subexpressões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Metacaracteres - Referências passadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
mikroC PRO para a PIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Opções 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
Nível 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
Compilação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Arquivos de saída. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Assembléia View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Mensagens de erro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Mensagens de erro do compilador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

VI Mikroelektronika - Soluções de software e hardware para o mundo embutido

mikroC PRO para PIC Tabela de Conteúdos

Mensagens de aviso do compilador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Mensagens de erro vinculador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Visão geral do software Simulator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Janela de Inspeção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Exibir janela RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Cronômetro janela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Simulador de opções de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Criar nova biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Biblioteca de várias versões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

CAPÍTULO 3
mikroICD Debugger Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Exemplos mikroICD Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
mikroICD (In-Circuit Debugger) Visão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Janela de Inspeção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
EEPROM janela de inspeção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Código Janela de Inspeção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
mikroICD Código Watch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Ver memória RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Erros comuns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
mikroICD Advanced Breakpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Memória do Programa Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Memória do Programa Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Arquivo Registre-Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Emulador de Recursos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Pontos de Interrupção de Eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Cronômetro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

CAPÍTULO 4
Problemas padrão ANSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Desvio da ANSI C padrão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Linguagem C Exstensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Predefinidos Globais e constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
nível de projectos predefinidos define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Bits Acesso Individual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Bits Acesso Individual de variáveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
tipo sbit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
tipo bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Interrupções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
prioridade interrompe P18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Chamadas de função de interrupção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Exemplos de interrupção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Mikroelektronika - Soluções de software e hardware para o mundo embutido VII

Tabela de Conteúdos mikroC PRO para PIC

Directivas Linker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Directiva absoluta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
org directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
orgall directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
funcorg directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Solicita função 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
Otimização de Código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
dobrar Constant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
constante de propagação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Copie propagação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Relação de numeração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
"Código Dead" eliminação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Alocação de pilha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
otimização vars locais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Melhor geração de código e otimização local. . . . . . . . . . . . . . . . . . . . . . . . . . 131

CAPÍTULO 5
Tipos de Eficiência Energética. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Nested Solicita Limitações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Especificidades PIC18FxxJxx. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Endereço SFR compartilhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Especificidades PIC16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Quebrando Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Limites da abordagem indireta através da FSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Tipo Especificadores de memória. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
de dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 36
rx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
SFR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 7

CAPÍTULO 6
Visão geral sobre elementos lexicais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

VIII Mikroelektronika - Soluções de software e hardware para o mundo embutido

mikroC PRO para PIC Tabela de Conteúdos

Espaço em branco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Espaço em branco em Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Linha de emenda com contrabarra (\). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Comentários. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
C comentários. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
C + + comentários. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
comentários aninhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Token Exemplo de extração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
As constantes inteiras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Long e sufixos Unsigned. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Decimais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Constantes hexadecimais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Constantes binário. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Constantes Octal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Floating Point Constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Constantes de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Sequências de Escape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Desambiguação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Constantes String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Continuação de linha com barra invertida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Constantes Enumeration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Constantes ponteiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Expressões constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Palavras-chave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Identificadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Caso sensibilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Singularidade e abrangência. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Exemplos Identifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Pontuadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Colchetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Parênteses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Suspensórios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Vírgula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Ponto e vírgula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Colon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Asterisk (Declaração Pointer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Cadastre Libra (Directiva Preprocessor). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Objetos e declarações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Lvalues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Rvalues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Mikroelektronika - Soluções de software e hardware para o mundo embutido IX

Tabela de Conteúdos mikroC PRO para PIC

Escopo e visibilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Escopo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Visibilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Espaços de nome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Duração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Static Duração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Duração local. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
tipos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Categorias Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Tipos Fundamentais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Tipos de Aritmética. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Tipos Integral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Tipos de ponto flutuante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Enumerações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Enumeração Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Anomous Tipo Enum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Enumeração Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Tipo void. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Funções Void. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Os ponteiros genéricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Tipos derivados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Array Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Inicialização de matriz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Expressões n matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Arrays multi-dimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Ponteiros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Declarações Pointer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Ponteiros nulos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Ponteiros de função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Atribuir um endereço para um ponteiro de função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Aritmética de ponteiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Matrizes e ponteiros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Atribuição e comparação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Ponteiro Adição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Ponteiro Subtração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Estruturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Estrutura da declaração e inicialização. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Declarações incompletas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Estruturas Untagged e TYPEDEFs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Trabalhando com Estruturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Cessão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Tamanho da estrutura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Estruturas e funções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

X Mikroelektronika - Soluções de software e hardware para o mundo embutido

mikroC PRO para PIC Tabela de Conteúdos

Estrutura de Acesso ao Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Acessando estruturas aninhadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Estrutura de exclusividade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Sindicatos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Sindicatos Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 88
Tamanho da união. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
União Acesso ao Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Campos de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Declaração de campos de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Acesso campos de bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Tipo Conversões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Conversões Standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Detalhes:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Ponteiro de conversão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Concersions tipo explícito (conversão de tipo). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Declarações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Declarações e definições. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Declarações 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
Qualificação de tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Eliminatórias Const. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Qualificador volátil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Especificador typedef. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Declarações asm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Inicialização. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Inicialização automática. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
funções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Função Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Protótipo de função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Definição da função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Function reentrância. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Chamadas de função e argumento de conversão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Chamadas de função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Conversões Argumento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Operadores Presidence e Associativismo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

Mikroelektronika - Soluções de software e hardware para o mundo embutido XI

Tabela de Conteúdos mikroC PRO para PIC

Operadores aritméticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Aritmética Binária Operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Unários operadores aritméticos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Operadores relacionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Visão geral sobre operadores relacionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Operadores relacionais em expressões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Visão geral sobre operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Operações lógicas em nível de bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Shift Operadores bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Bitwise versus lógica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Operadores lógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Visão geral sobre operadores lógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Operadores lógicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Expressões lógicas e efeitos colaterais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Lógico versus bit a bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Operador condicional? :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Regras Operador condicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Operadores de atribuição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Simples operador de atribuição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Operador de atribuição composto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Regras de atribuição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Operador sizeof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Sizeof Aplicada à Expressão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Sizeof Aplicada ao tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
expressão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Expressões vírgula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
declarações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Demonstrações rotulados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Demonstrações Expressão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Demonstrações de Seleção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Se a declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Instrução if aninhada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Demonstrações Switch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Switch aninhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Instruções iteração (Loops). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Enquanto a Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Não Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Para a declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Ir instruções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Break e continue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Ruptura de Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Continue Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Goto Declaração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

XII Mikroelektronika - Soluções de software e hardware para o mundo embutido

mikroC PRO para PIC Tabela de Conteúdos

Instrução Return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Declarações compostas (blocos). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
pré-processamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Directivas Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Continuação de linha com contrabarra (\). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Definir Macros e Expansões Macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Macros com parâmetros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Macros indefinida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Inclusão de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Explícita Caminho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Operadores Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Operador #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Operador # #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Compilação condicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Directivas # if, # elif, # Else e # endif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Directivas # ifdef e # ifndef. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

CAPÍTULO 7
Bibliotecas Hardware PIC-específicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Padrão ANSI C bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Bibliotecas Diversos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Dependências 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 - Soluções de software e hardware para o mundo embutido XIII

279 Cf_Read_Sector. . . . . . . . . . . . . . . . . . . . . . 276 Cf_Detect. . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 CANSPIWrite. . 257 CANSPISetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 CANSPI_FILTER. . . 284 Cf_Fat_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Biblioteca CANSPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Compact Flash Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 HW Connection. . . . . . . . . . . . . . . . . 281 Cf_Fat_QuickFormat. . . . . . . . . . . . . . . . . . . . . . . . . . 262 CANSPISetFilter. . . . . . . . . . . . . . . . . . 267 CANSPI_RX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . 281 Cf_Fat_Assign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . 266 CANSPI_OP_MODE. . . . . . . . . . . . . . . . . . . . . . . . . . 277 Cf_Read_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Cf_Enable. . . . . 280 Cf_Write_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 CANSPIGetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 CANSPI_TX_MSG_FLAGS. . . .Soluções de software e hardware para o mundo embutido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Cf_Fat_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Cf_Read_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Cf_Fat_Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 CANSPIInitialize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Cf_Write_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 CANSPISetMask. . . . . . . . . . . . . . . 283 Cf_Fat_Read. . 256 das dependências externas de CANSPI Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 CANSPIRead. . . . . . . . . 285 XIV Mikroelektronika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 CANSPI_MASK. . . . . . 285 Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Cf_Fat_Append. . . . . . . . . . . . . . . . . . . . .Tabela de Conteúdos mikroC PRO para PIC Exemplo de Biblioteca. . . 273 Rotinas de biblioteca. . . . . . . . 277 Cf_Disable. . . . . . . . . . . . . . 283 Cf_Fat_Rewrite. . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Cf_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 CANSPI_CONFIG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Cf_Write_Init. . . . 259 CANSPISetBaudRate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Cf_Fat_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Constantes CANSPI. . . . . .

. . . . . . . . . 303 Ethernet_putConstString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 FLASH_Read_N_Bytes. . . . . . 305 Ethernet_UserUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Ethernet_putString. . . . . . . . . . 301 Ethernet_putByte. . . . . . . . 309 Ethernet_sendUDP. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Ethernet_getlpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . .mikroC PRO para PIC Tabela de Conteúdos Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . 309 Ethernet_dnsResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Ethernet_confNetwork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Ethernet_renewDHCP. . . . . . . 29 6 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . 306 Ethernet_getGwlpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Exemplo de Biblioteca. . . . . . . 307 Ethernet_getlpMask. . . . . . . . . . . . . . . . 304 Ethernet_UserTCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . 288 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 FLASH_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Rotinas de biblioteca. . . . . . . . . 287 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . 302 Ethernet_putConstBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Cf_Fat_Set_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 EEPROM_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Cf_Fat_Get_Swap_File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .SOFTWARE E soluções de hardware para embutidos mundo XV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Ethernet_Init. . . . . . 308 Ethernet_arpResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 FLASH_Write. . . . . . . . . . . . . . . . . . . . . . . . . . 310 Ethernet_initDHCL. . . . . . . . . . . . . . . . . . . . 293 Biblioteca EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Ethernet PIC18FxxJ60 Biblioteca. . . . . . . . . . . . . . . . . . . . 3 07 Ethernet_getDnslpAddress (). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Ethernet_getByte . . . . . . 312 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Ethernet_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Mikroelektronika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 FLASH_Erase. . . . . . . . . . . . . . . . 311 Ethernet_doDHCPLeaseTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Biblioteca Flash Memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1 Rotinas de biblioteca. 296 família PIC18FxxJ60 do microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Ethernet_putBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Ethernet_doPacket. . . . . . . . 294 EEPROM_Read. . . . . . . . . . . . . . . . . . . . . . . 304 Ethernet_getBytes. . . 298 Ethernet_Enable. . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 As dependências externas do LCD Gráfico Biblioteca. 331 Glcd_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Rd. . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 Biblioteca de LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Tabela de Conteúdos mikroC PRO para PIC FLASH_Erase_Write. . . . . . . . . . . . . . . . . . . . . . . . . 330 Glcd_Write_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Glcd_Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 XVI Mikroelektronika . . . 334 Glcd_Circle. . 337 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Biblioteca do teclado. . . . . . . . . 343 I2C1_Stop. . . . . . . . 342 I2C1_Is_Idle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 LCD Gráfico Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Keypad_Key_Click. . . . . . . . . . . . . . . 334 Glcd_Box. . . . . . . . . . . . . . . . . . . . . . 346 As dependências externas do teclado Biblioteca. . . . . . . . . . . . . . . . . . . 335 Glcd_Set_Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Glcd_Set_Page. . . . . 328 Glcd_Set_Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 I2C1_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Glcd_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Keypad_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Glcd_Set_X. . . . 327 Glcd_Init. . . . . . . . . . . . . . . . . . . . . . . . 341 I2C1_Start. . . 331 Glcd_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Glcd_Line. . . . . . . 348 HW Connection. . . . . . . . . . . . . . . . . . . 341 Rotinas de biblioteca. . . . . . . . . 324 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Wr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Glcd_V_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Repeated_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Glcd_Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 I ˛ Biblioteca C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Glcd_H_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Glcd_Write_Char. . . . . . 346 Keypad_Key_Press. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Glcd_Read_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Rotinas de biblioteca. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Mmc_Read_Sector. . . . . . . . . . . . . . 358 Manchester Biblioteca de código. . . . . . . . . . . . . . . 368 Secure Digital Card. . . . . . . . . . . . . . . . . . . . . . . . 352 Lcd_Init. . . . 355 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Mikroelektronika . . . . . . . . 353 Lcd_Chr. . . . . . . . . . . . 369 Mmc_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Man_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Mmc_Fat_Assign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Mmc_Read_Cid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Man_Send. . . . . . . . . . . . . . . . . . . . . . . . . 377 Mmc_Fat_Get_Swap_File. . . . . . . . . . . . 377 Mmc_Fat_Get_File_Date. . . . . . . . . . . . . . . . . 376 Mmc_Fat_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Man_Receive_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Mmc_Fat_Rewrite. . . . . . . . . . . . . 362 Man_Synchro. . . . . . . . . 371 Mmc_Fat_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Mmc_Fat_QuickFormat. . . . . . . . . . . . 353 Lcd_Out_CP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Mmc_Fat_Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Lcd_Cmd. . . . . . . . 364 Exemplo de conexão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Mmc_Fat_Get_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . .mikroC PRO para PIC Tabela de Conteúdos As dependências externas do LCD Biblioteca. . . . . . . . . . . . . . . . 374 Mmc_Fat_Reset. . . . . . . . 359 As dependências externas do Manchester Code Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Mmc_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Man_Break. . 367 Multi Media Library Card. . . . . . . . . . . . . . . . . . . 354 Lcd_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 HW conexão. . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Mmc_Fat_Append. . . . . . . . . . . . . . . . . 371 Mmc_Read_Csd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido XVII . . . . . . . . . . . . . . . . . . . . . . . . . 368 As dependências externas do MMC Library. . . . . . . . . . . . . . . . . . . . . . 351 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Man_Send_Init. . . . . . 355 Disponível Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . 363 Exemplo de Biblioteca. . . . . . . . . . . . . . . 370 Mmc_Write_Sector. . . . . . . . . . . . . . 352 Lcd_Out. . . . . 375 Mmc_Fat_Read. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Biblioteca PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Biblioteca OneWire. . . . . . . . . 393 Expander_Write_PortA. . . . . . . . . . . . . . . . . . 407 Exemplo de Biblioteca. . . 406 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 PWM1_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Expander_Set_DirectionPortA. . . . . . . . . . . 391 Expander_Write_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 PS / 2 Biblioteca. . . . . . . . . . . . . . . . . . 404 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . 395 Expander_Set_DirectionPortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Exemplo de Biblioteca. . 396 Expander_Set_PullUpsPortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Expander_Read_PortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Expander_Write_PortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Expander_Init. . . . . . . . . . . . . . . . 400 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Ps2_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Porto Biblioteca Expander. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Expander_Set_PullUpsPortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 Ow_Read. 401 Ps2_Key_Read. . . . . . 406 PWM1_Set_Duty. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Expander_Set_DirectionPortB. . . . . . . . . . . . . . . . . . . . . . . 402 Teclas de função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 Ow_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Tabela de Conteúdos mikroC PRO para PIC Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 HW Connection. . 386 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Expander_Read_PortA. . . . . . . . . . 408 XVIII Mikroelektronika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Ow_Reset. . . . . . . . . . . . . . . . . . . . . . . . . 392 Expander_Read_PortB . . . . . . . . . . . . . . . 397 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Expander_Set_PullUpsPortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 PWM1_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 PWM1_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 As dependências externas do PS / 2 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Expander_Write_PortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Expander_Read_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 As dependências externas do Porto Expander Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Software I ˛ C Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Mikroelektronika . . . . . . . . . . . . . . . . . . . . . 435 Soft_UART_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Soft_UART_Init. . . . . . . . . . . . . . . . . . . . . . 412 RS485slave_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 das dependências externas de Soft_I2C Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Biblioteca SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 As dependências externas de software SPI Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Sound_Play. . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Soft_Spi_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 10 As dependências externas da RS-485 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Mensagem cálculos formato e CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Soft_SPI_Write. . . . . . . . . . . . . . . . . . 412 RS485Master_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Soft_UART_Read. . . . . . . . . . . . . . . . . . . . 4 15 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 RS485Master_Receive. . . . . . .Soluções de software e hardware para o mundo embutido XIX . . . . . . . . . . . . . . . . . . . . . . . . . 425 Software Biblioteca SPI. . . . . . . . . . . 415 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Soft_I2C_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Soft_I2C_Break. . . . . . . . 433 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Biblioteca de som. . . . . . . . . . . . . . . . . . . . 421 Soft_I2C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Exemplo de Biblioteca. . . . . . . . . . . . 410 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Soft_I2C_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Soft_Uart_Break. . . . . . . 421 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 RS485Master_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Soft_Spi_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 RS485slave_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Soft_I2C_Read. . . . . . . . . . . . . . 423 Soft_I2C_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .mikroC PRO para PIC Tabela de Conteúdos HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 39 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Sound_Init. . . . . 409 RS-485 Biblioteca. . . . . . . . . 414 RS485slave_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 Software Library UART. . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . 452 Spi_Ethernet_Enable. . . . . . 470 HW Connection. . . . . . . . . . 479 Spi_Glcd_Init. . . . . . . . . . 455 Spi_Ethernet_doPacket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 As dependências externas do SPI LCD Gráfico Biblioteca. . 463 SPI_Ethernet_getDnsIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Biblioteca SPI LCD gráfico. . . . . 469 SPI_Ethernet_renewDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 SPI_Ethernet_sendUDP. . . . . . . . . . . . . . . . . . . . 460 Spi_Ethernet_UserTCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 SPI_Ethernet_dnsResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Spi_Ethernet_getByte. . . . . . . . . . . . . . . . . . . . . . . . 467 SPI_Ethernet_initDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 SPI_Glcd_Set_Side. . . . . . . . . . .Tabela de Conteúdos mikroC PRO para PIC Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . 479 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 As dependências externas do SPI Ethernet Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Spi_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 SPI_Ethernet_doDHCPLeaseTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Spi_Ethernet_putConstString. . . . . . . . . . . . . . . . 454 Spi_Ethernet_Disable. . . . . . . . . 443 Spi1_Init_Advanced. . . . . . . . . . . . . . . . . . . . . . . . 457 Spi_Ethernet_putConstBytes. . . . . . . . . . . . . . . . . . . . . . . . . . 464 SPI_Ethernet_confNetwork. . . . . . . . . . . . . . 450 Rotinas de biblioteca. . . . . . . . . . 457 Spi_Ethernet_putBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 PIC16 e PIC18:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 Biblioteca SPI Ethernet. . . . . . . . . . . . . . . 458 Spi_Ethernet_putString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Spi_Ethernet_UserUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Spi_Ethernet_putByte. 462 SPI_Ethernet_getIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Spi1_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 SPI_Ethernet_getGwIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 SPI_Ethernet_getIpMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Spi_Ethernet_Init. . . . . . . . . . . . . . . . . . . . . . . . 481 XX Mikroelektronika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Spi1_Write. . . . . . . . . 469 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . 459 Spi_Ethernet_getBytes. . . . . . 464 SPI_Ethernet_arpResolve. . . . 451 Só PIC18: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 SPI_Set_Active. . . . . . . . . . . . . . . . . . . . . 446 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 SPI_Glcd_H_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Biblioteca SPI Gráfica T6963C LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 LCD8 SPI (interface de 8 bits) Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Spi_Lcd_Chr_Cp. . . . . . 485 SPI_Glcd_Rectangle. . 490 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Conexão HW . . . . . . . . . . . . . . . . 503 Disponível Comandos LCD. 501 Spi_Lcd8_Out_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 As dependências externas do SPI LCD Biblioteca. . . . . . . . . . . . . 483 SPI_Glcd_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Spi_Glcd_Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Spi_Glcd_Read_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .mikroC PRO para PIC Tabela de Conteúdos SPI_Glcd_Set_Page. . . . . . . . . . . . . . . . . 486 SPI_Glcd_Box. . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Rotinas de biblioteca. . . . . . . 502 Spi_Lcd8_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Spi_Lcd8_Cmd. . . . . . . . . . . . . . . . 500 Spi_Lcd8_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5 Spi_Lcd_Chr. . . . . . . . . . . . . . . . . . . . . . 486 SPI_Glcd_Circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Spi_Lcd8_Out. . . . . . 487 SPI_Glcd_Set_Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 SPI_Glcd_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 As dependências externas do SPI LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . 497 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Spi_Lcd8_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Spi_Lcd_Out_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 SPI_Glcd_Set_X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Spi_Lcd_Out. . . . 483 SPI_Glcd_Fill. . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido XXI . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Spi_Lcd_Config. . . . . . . . . . . . . . . . . . . . 490 HW Connection. . . . . . . . . . . 504 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Mikroelektronika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Spi_Glcd_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Biblioteca SPI LCD. . . . . . . . . . . . . . . . . . . . . . 496 Spi_Lcd_Cmd. . . . . . 488 Spi_Glcd_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 SPI_Glcd_Write_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 As dependências externas do SPI T6963C LCD Gráfico Biblioteca. . . . . . . . . . . . . . . . . . . . 484 SPI_Glcd_V_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Disponível Comandos LCD. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . 515 Spi_T6963C_rectangle. . . . . . . . . . . . . . . . 518 Spi_T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_clearBit. . . . . . . . . . . . . . . 511 Spi_T6963C_Fill. . . . 518 Spi_T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . 521 Spi_T6963C_GrFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Spi_T6963C_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Spi_T6963C_setTxtPanel. . . . . 522 Spi_T6963C_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Spi_T6963C_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Spi_T6963C_cursor_height. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Spi_T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Spi_T6963C_panelFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Spi_T6963C_graphics. . . . . . . . . . . . . . . . . 529 As dependências externas da T6963C Biblioteca LCD gráfico. . . . . . . . . . . . . . 534 T6963C_waitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 19 Spi_T6963C_displayTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Spi_T6963C_image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 pi_T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Spi_T6963C_txtFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Spi_T6963C_cursor_blink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Spi_T6963C_Config. . . . . . . . . . . . . . . . . . . . . . . . . . 509 Spi_T6963C_WriteData. . . . . . . . . 534 T6963C_SetPtr. . .Tabela de Conteúdos mikroC PRO para PIC Rotinas de biblioteca. . . 519 Spi_T6963C_setGrPanel. . 517 Spi_T6963C_Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 T6963C_writeData. . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . 530 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_WaitReady. . . . . . 519 Spi_T6963C_DisplayGrPanel. . . . . . . . . . . 528 T6963C Biblioteca LCD gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Spi_T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Spi_T6963C_write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 HW Connection. . . . . . . . . . . . . . . . . . . . . 523 Exemplo de Biblioteca. . . . . 514 Spi_T6963C_line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 T6963C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . 533 T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . 535 XXII Mikroelektronika . . . . . . . . 515 Spi_T6963C_box. . . . . . . . 516 Spi_T6963C_circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . 541 T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Mikro ele ktro nik a . . . . . . . . . . . . . . . . . . . . . . 539 T6963C_circle. . . . . 536 T6963C_write_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 UART1_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 UART1_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Hid_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Hid_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 T6963C_image. . . . . . . . . . . . . . . . . . . 553 Uart_Data_Ready. . . . . . . 544 T6963C_txtFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 T6963C_Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 T6963C_grFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 T6963C_text. . . 554 UART1_Read_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 T6963C_line. . . . . . . . . . .mikroC PRO para PIC Tabela de Conteúdos T6963C_write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Rotinas de biblioteca. . . . . . . . . 552 Uart_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 T6963C_clearBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . 542 T6963C_setGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de softwar e e hardwar e para o mundo embuti do XXIII . . . . . . . . . . . . . . . . . . . . 546 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 Biblioteca UART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 T6963C_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 T6963C_rectangle. . . . . . . . . . . . . . . . . . . . . . . . 557 HW Connection. . . . . . . . . . . . . . . . . . . . 560 id_Write. . . . . . . . . 556 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . 545 T6963C_Cursor_Blink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 T6963C_box. . . . . . . . . 543 T6963C_SetTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 USB HID Biblioteca. . . . . . . . . . . . . . . . . . . . 559 Arquivo descritor. . . . . . . . . . . . . . . . . . . . . . . . . 540 T6963C_sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 UART_Set_Active. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 UART1_Tx_Idle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 T6963C_PanelFill. . . . . . . . . . . . . . . . 542 T6963C_displayGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 UART1_Write. 544 T6963C_cursor_height. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 T6963C_displayTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 atan2. . . . . . . . . . . 561 Exemplo de Biblioteca. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isalpha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 chão. . . . 564 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 ispunct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 atan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 asin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 exp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Funções da Biblioteca. . . . . . . . . . . . . 569 fabs.Soluções de software e hardware para o mundo embutido . . . . . . . . . . . . . . . . . . . . . . . . . . 561 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 pecado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isdigit. . . . . . . . . . . . 563 Padrão ANSI C bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 isxdigit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Tabela de Conteúdos mikroC PRO para PIC Hid_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 isupper. . . . . . . . . . . . . . . . . . . . . . . . . 565 isspace. . . . . . . . . . . . . . . . . . . 564 ANSI C Library Ctype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 iscntrl. . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 tanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 islower. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isgraph. . . . . . . . . . . . . . . . . . . . . . . 571 Biblioteca C ANSI stdlib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 isalnum. . . . . . . . . . . . . . . . . . . . 567 acos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 sinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 bronzeado. . . . . . . . . . . . 570 modf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 tolower. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 ceil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 log10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 cos. . . . . . . . . . . . . . . . . . . . . . . . . . 569 frexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 sqrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 toupper. 571 XXIV Mikroelektronika . . . . . 567 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 eval_poly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 ldexp. . . . . . . . . . . . . . . . . . . . . 570 pow. . . . . . . . . . . . . . . . . . . . . . 568 cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 ANSI C biblioteca matemática. . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 laboratórios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memcmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 srand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 strstr. . . . . . . . . . . . . . . . . . . . . 573 min. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para o mundo embutido XXV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . 572 atof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 strrchr. . . . . . . 579 Bibliotecas Diversos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 trncmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memcpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 máx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 div. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Biblioteca de botão. . . . . . . 574 Estruturas Div. . . . . . . . . . . . . . . . . . . 575 memchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Biblioteca de conversões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 rand. . . . . . . . . 576 strcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memmove. . . . . . . . . 574 ANSI C Biblioteca String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 uldiv. . . 579 strpbrk. . . . . . . . . . 581 Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strcmp. . . . . . . . . . . . . . . . . . 579 strcspn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .mikroC PRO para PIC Tabela de Conteúdos abs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 atoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 strncpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Mikroelektronika . . . . . . . . . . 572 atol. . . . . . . . . . . . . . 583 WordToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Rotinas de biblioteca. . 577 strncat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strcpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 xtoi. . . . . . . . . . . . . . . . . . . . . . . . . . 577 strlen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 ldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 ShortToStr. . . . . . . . . . . . . . 584 IntToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 ByteToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 strspn. . . . . .

. . . . . . 593 Longjmp. . . . . . . . . . . . . 605 cosE3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Setjmp. . . . . 600 Time Library. . . . . . . .Tabela de Conteúdos mikroC PRO para PIC LongintToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . 599 sprinti. . . . . . . . . . . . . . . . . . . 589 PrintOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Time_dateDiff. . . 603 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Soluções de software e hardware para EMBEDDED MUNDO . . . . . . . . . 588 Biblioteca PrintOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Funções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 Rotinas de biblioteca. . . . . . . . . . . . 606 XXVI Mikroelektronika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 sprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 Biblioteca setjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Dec2Bcd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 Biblioteca Trigonometria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Biblioteca de Sprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Time_dateToEpoch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 FloatToStr. . . . . 589 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . 601 Rotinas de biblioteca. . . . . . . . . . . . . . . . 596 sprintl. . . . . . . . . . . . . . . 602 Time_epochToDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Bcd2Dec16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Dec2Bcd16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 LongWordToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 sinE3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

sem compromis - ção de desempenho ou controle. CAPÍTULO 1 Introdução 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 fácil pos - vel solução para desenvolvimento de aplicações para sistemas embarcados. 1 .

e muito mais.CAPÍTULO 1 Introdução 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. variáveis e funções do Code Explorer. usado em uma ampla variedade de aplicações.) Use incluídos mik roC PRO para PIC bibliotecas para acelerar drasticamente o desenvolvimento desenvolvimento: a aquisição de dados. é o natural escolha para o desenvolvimento de sistemas embarcados. etc Monitore sua estrutura de programa. e compa-padrão HEX vel com todos os programadores. conversões de comunicação. displays. Características mikroC PRO para PIC permite que você rapidamente desenvolver e implantar aplicativos complexos: Escreva seu código-fonte C usando o built-in editor de código (Code e Parâmetro Assistentes. amplo conjunto de hard- ware bibliotecas. premiado por sua eficiência. Use o mikroICD integrado (In-Circuit Debugger) em tempo real ferramenta de depuração . montagem legível. e abundância de exemplos prontos para correr. Máscaras de Código. código dobrando. documentação completa. Sintaxe Destacando. e C. mik roC PRO para PIC proporciona um bem-sucedido correspondência com IDE altamente avançado. Gere comentou. memória. Auto Correct. compilador ANSI compatível.

para 2 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

provavelmente você vai querer consultar mik roC PRO para PIC Especificidades primeiro. a montagem anúncio. Obtenha relatórios detalhados e gráficos: mapa de memória RAM e ROM. Nós sug rem que você primeiro consultar projetos e arquivos de origem e. e muito mais. as estatísticas de código. desenvolver e utilizar como a construção de tijolos em seus projetos. Uma lista completa de bibliotecas é incluído disponível em mikroC PRO PIC para Bibliotecas. se acharem necessário. a portabilidade do código. Se você é experiente em programação C. Por questões de idioma.é por isso que Foram incluídos os com o compilador. Poderia dar-lhe algumas indicações úteis sobre PIC restrições. Se você não é muito experiente em programação C. chamando a árvore. leia cuidado plenamente o PIC capítulo Específicos. Copie-as por completo. mik roC PRO para PIC fornece inúmeros exemplos de expandir. CAPÍTULO 1 mikroC PRO para PIC Introdução acompanhar a execução do programa no nível de hardware. você pode sempre se referem ao o global Language Reference. fluxo de inspecionar o programa e depurar lógica executável com o software integrado Simulator. Por onde começar No caso que você é um iniciante em programação de microcontroladores PIC. não entre em pânico! mik roC PRO para PIC fornece inúmeros exemplos tornando mais fácil para você ir rapidamente. e boas práticas de programação. em s eguida iniciar a navegação 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 .

emprestar. COPIAR OU USAR O SOFTWARE. identificado acima. Portanto. modificar. Se você tiver adquirido uma versão de atualização do software. compartilhar o tempo ou transmitir eletronicamente ou receber Software. você deve tratar este software como qualquer outro material protegido por copyright (por exemplo. AO INSTALAR. mídia ou documentação.LEIA ATENTAMENTE Esta licença declaração e garantia limitada constitui um contrato legal ("Licença Contrato ") entre você (como pessoa física ou jurídica) e mikroElek - tronika ("mikroElektronika Associates") para produtos de software ("Software"). mikroElektronika Associates lhe concede o direito de usar o software de uma forma prevista abaixo. copiar.CAPÍTULO 1 Introdução mikroC PRO para PIC Mikroelektronika DECLARAÇÃO DE LICENÇA E ASSOCIADOS GARANTIA LIMITADA IMPORTANTE . exceto e somente na medida em que tal atividade seja expressamente permitida pela legislação aplicável não obstante esta limitação. portanto. traduzir. um livro). você concorda em não modificar o Software ou a tentativa de fazer engenharia reversa. descompilar. mídia e acompanhamento on-line ou impresso docu- implementação. Este Software é propriedade da mikroElektronika Associates e está protegido por cópia direito certo e tratado internacional de direitos autorais. arrendar. que constitui um único pro- duto com o software mikroElektronika Associates que você atualizou. 4 Mikroelektronika . incluindo qualquer software. VOCÊ CONCORDA PARA SER OBRIGADO POR TODOS OS TERMOS E CONDIÇÕES DA LICENÇA ACORDO. sublicenciar. Exceto como previsto do Contrato de Licença. você não poderá transferir. ou desmontar. Você pode usar a versão de atualização do Software apenas de acordo com Contrato de Licença. Você reconhece que o Software no forma de código-fonte é um segredo comercial do mikroElektronika Associates e. Você pode transferir o Software e documentação em uma base permanente prestado.Soluções de software e hardware para o mundo embutido . alugar. Após a aceitação dos termos e condições do Contrato de Licença. Você não retenha nenhuma cópia eo recebedor concordar com os termos do Contrato de Licença.

EXPRESSA OU IMPLÍCITA. INCLUÍDO. CAPÍTULO 1 mikroC PRO para PIC Introdução GARANTIA LIMITADA Respeitosamente excetuando os Redistribuíveis. ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. ASSOCIATES Mikroelektronika ' TODA RESPONSABILIDADE EM QUALQUER PRESTAÇÃO DE LICENÇA SERÁ LIMITADA AO VALOR PAGO POR VOCÊ SOFTWARE FORNECIDO. NO QUE DIZ RESPEITO AO SOFTWARE E PRESTAÇÃO OU FALTA DE PRESTAÇÃO DE SERVIÇOS DE APOIO. ASSOCIATES Mikroelektronika ' TODA A RESPONSABILIDADE SOBRE Serviços de apoio serão regidos pelos termos DESSA ACORDO. EM QUALQUER CASO. entretanto. irá executar substancialmente de acordo com o acom - ção. NEGÓCIOS INTERRUPÇÃO OU QUALQUER OUTRA PERDA PECUNIÁRIA) DECORRENTES DO USO OU IMPOSSIBILIDADE DE UTILIZAÇÃO DO SOFTWARE OU PRESTAÇÃO DE OU NÃO PRESTAÇÃO DE SERVIÇOS DE APOIO. sem guerra rantia de nenhum tipo. AO MÁXIMO PERMITIDO POR LEI. Mikroelektronika . Qualquer substituição de Software será garantido para o resto do período da garantia original ou 30 (trinta) dias. MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZA ÇÃO. DANOS POR PERDA DE LUCROS E INFORMAÇÃO DE NEGÓCIOS. ou (b) a reparação ou substituição do software que não atende mikroElektronika Associates ' Garantia Limitada e que seja devolvido a mikroElektronika Associates com uma cópia do recibo. INCIDENTA IS OU CONSEQÜENCIAIS DANOS (INCLUINDO. E NÃO-VIOLAÇÃO. no mikroElektronika Associates ' opção. Mikroelektronika ASSOCIADOS E SEUS FORNECEDORES REJEITAM TODAS OUTRAS GARANTIAS E CONDIÇÕES.Soluções de software e hardware para o mundo embutido 5 . Este Garantia limitada é nula se a falha do Software resultou de um acidente. se você entrou A Associates Mikroelektronika CONTRATO DE SERVIÇOS DE APOIO. o que for maior. Não devolva o produto até se ter "Sócios" Mikroelektronika PRIMEIRA e obteve um RETURN Número da autorização. SEM LIMITAÇÃO. MESMO ASSOCIATES Mikroelektronika FOI AVISADO DA POSSIBILIDADE DE TAIS DANOS. EM HIPÓTESE ALGUMA A Mikroelektronika ASSOCIADOS OU SEUS FORNECEDORES SER RESPONSÁVEL POR QUAISQUER DANOS. que são fornecidos "Como estão". por um período de 90 (noventa) dias a contar da data de recebimento. documentação e software de mídia estará livre de defeitos de materiais e obra. abuso ou má utilização. mikroElektronika Associates ' e seus fornecedores inteira responsabilidade. uma vez actuali - ed e usados corretamente. e seu exclusivo recurso deverá ser. (a) a devolução do preço pago. Qualquer implícita garantias de Software são limitadas a 90 (noventa) dias. garante que o Software mikroElektronika Associates.

todas as limitações de responsabilidade e exclusões dos danos previstos no GARANTIAS Limited- ty permanecerá em vigor. rantia de adequação para Atividades de Alto Risco.com E-mail: office@mikroe. de país para país. fabricado ou destinado ao uso ou revenda como on-line de equipamentos de controle em ambientes perigosos que exijam prova de falhas desempenho.com 6 . 11000 Belgrade. Esta afirmação lhe dá direitos legais específicos. que variam. expressas ou implícitas. ou armas sistemas. máquinas de suporte à vida. navegação de aeronaves ou comunicação sistemas de controle de tráfego aéreo.CAPÍTULO 1 Introdução mikroC PRO para PIC ATIVIDADES DE ALTO RISCO O software é não tolerantes a falhas e não foi projetado. o restante permanecerá válido e exeqüível de acordo com a sua termos. Telefone: + 381 11 36 28 830 Fax: +381 11 36 28 831 Web: www. ou danos físicos ou ambientais graves ("Atividades de Alto Risco"). mikroElektron- ika Associados e seus fornecedores se isentam especificamente qualquer guerra.mikroe. ferimentos pessoais. mikroElektronika Visegradska 1A. Se qualquer disposição desta declaração é considerada nula ou inexeqüível. DISPOSIÇÕES GERAIS Essa declaração só pode ser modificado por escrito e assinado por você e uma autorização oficial- cer de mikroElektronika Associates. Se qualquer medida prevista é determinada como tendo falhado a sua finalidade essencial. tais como na operação de instalações nucleares. em que a falha do Software possa levar diretamente à morte. você pode ter outros. A Europa. mikroElektronika Associates reserva todos os direitos não especificamente concedida nesta declaração.

Soluções de software e hardware para o mundo embutido .Mikroelektroni ka .

Desta forma. CAPÍTULO 1 mikroC PRO para PIC Introdução SUPORTE TÉCNICO No caso de você encontrar qualquer problema.com/en/support/. Aqui.mikroe. informar ao Posto de Apoio www. você é bem-vindo ao nosso fórum de suporte em www. o que é do nosso interesse mútuo. podemos gravar e rastrear bugs mais eficiente.mikroe.mikroe. Em nossa Base de Conhecimento www. prática e trechos de código. Seus comentários e sugestões sobre o futuro desenvolvi - mento do mik roC PRO para PIC são sempre apreciado .sinta-se livre para deixar uma nota ou dois na nossa lista de desejos. Se você não consegue encontrar o solução para o problema na Base de Conhecimento em seguida. cada vez melhor o nosso suporte técnico. Nós respondemos a todos os relatórios de bugs e ques- ção de forma adequada.com/en/kb/ você pode encontrar as respostas a Fre- quentemente Perguntas e soluções para problemas conhecidos.com/forum/. dicas de hardware. você também pode encontrar informações úteis. 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 .

Selecione Ajuda > Como Registrar a partir do menu drop-down ou clique no ícone Como Registrar. Depois de ter completaram o procedimento de pagamento. selecione o seu distribuidor. e clique no botão Enviar. Preencha o formulário de inscrição (figura abaixo). A única limitação da versão grátis é que ela não pode gerar a saída hexadecimal mais de 2 KB. exemplos e compre- ajuda abrangente incluído. Se você pretende desenvolver realmente projetos complexos na mik roC PRO para PIC. Desta forma você pode gerar saída hexadecimal sem quaisquer limitações. inicie o programa. você tem a opção de registar o seu mikroC PRO. aplicações de trabalho. sem pensar em limitar a demo. É um software totalmente funcional bibliotecas.CAPÍTULO 1 Introdução mikroC PRO para PIC COMO SE INSCREVER A versão mais recente do mik roC PRO para PIC está sempre disponível para download em nosso site. 8 Mikroelektronika . Embora possa parecer restritivo. Quem recebe a chave de licença Os compradores do mik roC PRO para PIC têm direito a chave de licença. essa margem permite-lhe desenvolver práticas.Soluções de software e hardware para o mundo embutido . então você deve considerar a possibili- dade de adquirir a chave de licença. Como obter a chave de licença Depois de ter concluído o procedimento de pagamento.

Por favor.Soluções de software e hardware para o mundo embutido 9 . e adicione o comentário se achar necessário. não modificar a linha de assunto. nós enviaremos a chave de licença para o e-mail endereço especificado no formulário. Ao receber e verificar o seu pedido. Mikroelektronika . CAPÍTULO 1 mikroC PRO para PIC Introdução Isto irá iniciar o seu cliente de e-mail com a mensagem pronta para ser enviada. Reveja as infor- informação que você entrou.

Soluções de software e hardware para o mundo embutido . No caso de precisar de esteira do disco rígido. Além disso. Por favor. Você não precisa reiniciar seu computador ou instalar qualquer componente adicional. 10 Mikroelektronika . Notas: A chave de licença é válida até que você formatar o disco rígido. Toda vez que você atualizar o compilador você deve começar este programa novamente para reativar a licença.apenas iniciá-lo em qualquer lugar sua computador para ativar sua cópia do compilador e remover o limite de demonstração. você deve solicitar uma nova chave de ativação. não há necessidade de executar o mik roC PRO para PIC no momento da ativação. mantenha o programa de ativação em um lugar seguro.CAPÍTULO 1 Introdução mikroC PRO para PIC Depois de receber a chave de licença A chave de licença vem como um pequeno arquivo autoextracting .

11 . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente O mikroC PRO para PIC é um ambiente amigável e intuitivo.

Como em qualquer aplicação de Windows modernos. ele ajuda o programador a detectar potenciais problemas cedo. escolhendo a opção na janela de Preferências (F12). Corretor ortográfico identificadores sublinha que são desconhecidos para o projeto. Auto Corrigir erros de digitação comuns e Tem Código placas (Auto Complete). 12 Mikroelektronika . você pode personalizar o layout da mikroC PRO para PIC para atender às suas necessidades. O Gerente de Projeto alows gerenciamento de projetos múltiplos configurações do projeto geral podem ser feitas na janela de configurações 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 compilação e vinculação. Assistente parâmetros.Soluções de software e hardware para o mundo embutido . Arquivos de ajuda são de sintaxe e sensível ao contexto. confiável e fácil maneira de criar um projeto. observando o fluxo do programa. A fonte de nível de software simulador permite depurar passo lógico executável -a- etapa. Código de dobradura. O assistente para Novo projeto é uma maneira rápida. Desta forma. Corretor ortográfico pode ser desativado.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Resumo IDE O editor de código reguláveis Sintaxe Destacando. O Code Explorer está à sua disposição para facilitar o gerenciamento do projeto. muito antes do proj A ECT é compilado. Código Adjunto.

Soluções de software e hardware para o mundo embutido 13 . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente MENU PRINCIPAL OPÇÕES As opções disponíveis do menu principal são: Tópicos relacionados: Os atalhos de teclado Mikroelektronika .

Tópicos relacionados: Os atalhos de teclado. Arquivo Barra. Salve as alterações para o editor ativo. Arquivo Descrição Abra uma nova janela do editor. Fonte Gestão de Ficheiros 14 Mikroelektronika . Abra o arquivo de origem para edição ou arquivo de imagem para visualização.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente FILE OPÇÕES O menu File é o principal ponto de entrada para a manipulação com os arquivos de origem. Sair IDE. Reabrir ficheiro utilizado recentemente. Salve o arquivo fonte ativa com os diferentes nome ou alterar o tipo de arquivo. Feche o arquivo fonte ativa.Soluções de software e hardware para o mundo embutido . Visualização de Impressão.

Copiar o texto selecionado para o clipboard. Substitua o texto no editor ativo. Localizar a ocorrência anterior do texto no editor ativo. Recortar o texto selecionado para o clipboard. Colar o texto da prancheta. ou em arquivos da pasta desejada.Soluções de software e hardware para o mundo embutido 15 . Localizar texto em editor ativo. Localizar próxima ocorrência de texto no editor ativo. Refazer a última alteração. Localizar texto em arquivo corrente. Advanced Código opções do Editor Mikroelektronika . em todos os arquivos abertos. Deletar texto selecionado. Saltar para a linha desejada no editor ativo. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Opções do menu Editar Descrição Editar Desfazer última alteração. Selecione todo o texto no editor ativo.

Alterações selecionada caso de texto para titlercase. ou remov er única linha comentário.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Avançado » Descrição Código de comentário selecionados ou colocados com linha- mento. A busca é por- formado na direção especificada. Outdent código selecionado. Alterações selecionada caso de texto em minúsculas. Alterações selecionada caso o texto em maiúsculas. não houver nenhuma seleção. Pesquisar Texto Caixa de diálogo para procurar o documento para o texto especificado. Recuo códigoseselecionado. esente Descom nãocódigo houverselecion nenhumaado seleção. 16 Mikroelektronika .Soluções de software e hardware para o mundo embutido . Se a string não for encontrada uma mensagem é exibida.

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 . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Substituir texto Caixa de diálogo para a busca de uma seqüência de texto em arquivo e substituindo-a por outra cadeia de texto. os arquivos para busca estão especificados na máscara de arquivos e campos de Caminho. ou em arquiv os em um disco. Se a pesquisa em diretórios opção é selecionado. Localizar em arquivos Caixa de diálogo para a busca de uma seqüênci a de texto no arquiv o atual. todos os arquiv os abertos . A string a ser procurada é especificado no texto para encontrar campo.

ido 17 .

você será capaz de avançar em sua pesquisa. Barra de Edição.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Ir para a linha Caixa de diálogo que permite ao usuário especificar o número da linha na que o cursor deve ser posicionado. Edição Avançada Barra de ferramentas 18 Mikroelektronika . opção de expressões regulares Ao marcar esta caixa. Tópicos relacionados: Os atalhos de teclado. por meio de regular expressões.Soluções de software e hardware para o mundo embutido .

Mikroelektronika . Mostrar / ocultar janela de favoritos. Show / Hide Library Manager. Show / Hide Lista de rotina em editor ativo. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Menu Opções de visualização Arquivo Descrição Mostrar barras de ferramentas / Hide. Mostrar / ocultar janela do Editor de Macro. Show / Hide Erro janela Mensagens. Mostrar a janela da Lista de Janelas. Show / Hide janela Project Settings. Show / Hide Código do Windows Explorer.Soluções de software e hardware para o mundo embutido 19 . Show / Hide janela Project Manager. Mostrar / Esconder as janelas de depuração.

Salve as alterações para a janela ativa.Soluções de software e hardware para o mundo embutido . Copiar o texto selecionado para o clipboard. Visualização de Impressão. Refazer a última alteração. com as seguintes opções: Ícone Descrição Abre uma nova janela do editor. Feche o editor atual.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente BARRAS Arquivo da Barra de Ferramentas Arquivo Toolbar é uma barra de ferramentas padrão. 20 Mikroelektronika . Edit Toolbar Edit Toolbar é uma barra de ferramentas padrão. com as seguintes Ícone opções: Descrição Desfazer última alteração. Recortar o texto selecionado para o clipboard. Salvar alterações em todas as janelas abertas. Feche todas as editores. Colar o texto da prancheta. Abra o arquivo de origem para edição ou arquivo de imagem para visualização.

Selecione o texto de partida para acabar com delimitador delimitador.Soluções de software e hardware para o mundo embutido 21 . Ir para acabar com delimitador. Gerar o código HTML apropri ado para public ar código fonte de corrente em na web. com as seguintes opções: Ícone Descrição Localizar texto na atual editor. se houv er nenhuma seleção. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Edição Avançada Barra Advanced Edit Toolbar vem com as seguintes opções: Ícone Descrição Comentar o código selecionado ou colocar comentário de linha única. Localizar a próxima ocorrência. Localizar texto em arquivos. Outdent selecionados linhas de código. Substitua texto. se não houver Descomnenhuma seleção e nte código selecion ado ou remov er o comentári o de linha única. Vá para a linha. Mikroelektronika . Localizar / Substituir Barra Localizar / Substituir Toolbar é uma barra de ferramentas padrão. Encontrar ocorrência anterior. Recuo selecionados linhas de código.

Construir e projeto de programa ativo. Ver estatísticas para o projeto atual.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Projeto Barra Projeto Barra vem com as seguintes opções: Ícone Descrição Novo projeto Projeto Open Save Project Fechar projeto atual. Iniciar programador e carga arquivo HEX atual. Abrir código assembly no editor. Add File To Project Remover o arquivo de projeto Construir Toolbar Construir Toolbar vem com as seguintes opções: Ícone Descrição Criar o projeto atual. Adicionar projecto existente ao projeto do grupo.Software e Soluções de hardware para Embedded World . Editar configurações do projeto. Construir todos os projetos abertos. Remover projeto existente do grupo do projeto. 22 Mikroelektronika . Abra lisitng arquivo no editor.

Parar depurador. Saia. Alternar ponto de interrupção. Mikroelektronika . breakpoints Toggle. Step Into.Softwares e soluções de hardware para Embedded World 23 . Passe por cima. Executar / Pausar depurador. Executar até o cursor. Limpar os pontos de interrupção. Exibir janela de observação Exibir janela cronômetro Estilos de Barra Estilos da barra de ferramentas permite que você facilmente personalizar o seu espaço de trabalho. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Depurador Depurador Toolbar vem com as seguintes opções: Ícone Descrição Iniciar Software Simulator ou mikroICD (In-Circuit Debugger).

CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Barra de Ferramentas Barra de Ferramentas vem com seguintes opções padrão: Ícone Descrição Executar Terminal USART EEPROM ASCII Gráfico Sete ferramenta decodificador segmento. integrada Ferramentas. adicionando novas ferramentas em Opções (F12) janela.Soluções de software e hardware para o mundo embutido . menu Opções A barra de ferramentas podem ser facilmente personalizados. depurador do Windows 24 Mikroelektronika . Tópicos relacionados: Os atalhos de teclado.

CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente PROJETO MENU OPÇÕES Mikroelektronika .Soluções de software e hardware para o mundo embutido 25 .

Construir e programa de projeto ativo. Pasta do Projeto Limpeza Adicionar arquivo ao projeto. Aberto recentemente utilizadas projeto. Abra o Assistente de Novo projeto Abrir projeto já existente.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Projeto Descrição Criar o projeto ativo.Soluções de software e hardware para o mundo embutido . Exibir Assembléia. Editar as configurações do projeto Abra grupo de projeto. o Projeto Barra. criando novos Projeto. Salve o arquivo de projeto ativo com o nome diferente. Projetos de importação de versões anteriores do mikroC. Projeto Manager. Salvar atual projeto. Remover arquivo de projeto. Construir todos os projetos. Fechar grupo de projeto. Editar caminhos de pesquisa. Tópicos relacionados: Os atalhos de teclado. as configurações do projeto 26 Mikroelektronika . Fechar projeto ativo.

Alternar ponto de interrupção.Software e hardware SOLUÇÕES PARA mundo embutido 27 . Breakpoints. barra de ferramentas Debug Mikroelektronika . Step Into. Parar depurador. Ir para interrupção em projeto atual. Pausa Debugger. Breakpoints Clear. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente MENU OPÇÕES RUN Executar Descrição Iniciar Software Simulator ou mikroICD (In- Circuit Debugger). Mostrar / Esconder Janela de Inspeção Show / Hide Window Cronómetro Alternar entre Pascal fonte e desmon- assembléia. Step Out. Step Over. Tópicos relacionados: Os atalhos de teclado.

SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo . caráter Execute o editor bitmap GLCD. Barra de Ferramentas 28 Mikroelektronika . Executar HID Terminal. Abra a janela Opções. Tópicos relacionados: Os atalhos de teclado. Executar mikroBootloader. personalizado.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Menu Ferramentas Opções Ferramentas Descrição Executar mikroElektronika Programador Executar Terminal USART Execute o Editor do EEPROM Executar tabela ASCII Executar Converter display de 7 Gerar o código HTML apropriado para publicação código fonte Executar Lcdna web. Executar terminal de comunicação UDP.

Verifique se a versão do compil ad or novo está disponív el .Soluções de software e hardware para o mundo embutido 29 . Tópicos relacionados: Os atalhos de teclado Mikroelektronika . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente HELP OPÇÕES Ajuda Descrição Abrir arquivo de ajuda. Open Document migração de código. Página da Web em mikroElektronika um navegador Informaçõespadrão. sobre como se inscrever Abra a janela Sobre. Open Forum de Suporte mikroElektronika em um Abranavegador padrão.

Comentar Código Ctrl + Shift + Gerente de Projetos Ctrl + Shift +. Localizar próxima Ctrl + Shift + U Unindent selecção Shift + F3 Procurar o Anterior TAB Recuo seleção Alt + F3 Pesquisa Grep.CAPÍTULO 2 Meio Ambiente mikroC PRO para PIC ATALHOS DE TECLADO Abaixo está uma lista completa de atalhos de teclado disponíveis no mikroC PRO para PIC IDE.Softwares e soluções de hardware para Embedded World . 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 avançada Ctrl + F4 Fechar Unidade Ctrl + Espaço Código Assistente Ctr + Shift + Edit Project Ctrl + Shift + Parâmetros de Assistente E Ctrl + F9 Construir Space Ctrl + D Encontrar declaração 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 Código Modelo F5 F11 interrupção Start me Programador Ctrl + Shift +. Descomente Código F1 F12 Opções Ctrl + número marcador Goto Alt + X Fechar mikroC PRO para PIC Ctrl + Shift + marcador definido Editor Atalhos Basic númer Ctrl + oShift + I Recuo seleção F3 Localizar. em arquivos Shift + TAB seleção Unindent Ctrl + A Selecionar Tudo Alt + Seleção Selecionar colunas Ctrl + C Cópia Ctrl + Alt + Selecionar colunas Ctrl + F Pesquisar Seleção Converter a seleção para Ctrl + Alt + L minúsculas Ctrl + R Substituir Converter a seleção para Ctrl + P Imprimir Ctrl + Alt + U maiúsculas Ctrl + S Salvar unidade Ctrl + Alt + T Converter em titlecase 30 Mikroelektronika .

CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente mikroICD Debugger e Software Simulador de Atalhos F2 Ir para interrupção F4 Executar até o cursor F5 Alternar ponto de interrupção 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 .Soluções de software e hardware para o mundo embutido 31 .

Desta forma. observando o fluxo do programa. ele ajuda o programador a detectar potenciais problemas cedo. O Gerente de Projeto alows gerenciamento de projetos múltiplos configurações do projeto geral podem ser feitas na janela de configurações 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 compilação e vinculação. 32 Mikroelektronika . Assistente parâmetros. Código Adjunto. você pode personalizar o layout do mik roC PRO para PIC para atender às suas necessidades. Auto Corrigir erros de digitação comuns e Tem Código placas (Auto Complete). O assistente para Novo projeto é uma maneira rápida. Como em qualquer aplicação de Windows modernos. muito antes do pro- A ECT é compilado.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente IDE GERAL A mik roC PRO para PIC é um ambiente amigável e intuitivo: O editor de código reguláveis Sintaxe Destacar. confiável e fácil maneira de criar um projeto.Soluções de software e hardware para o mundo embutido . escolhendo a opção na Diálogo Preferências (F12). A fonte de nível de software simulador permite depurar passo lógico executável-a- etapa. código dobrando. Corretor ortográfico pode ser desativado. Arquivos de ajuda são de sintaxe e sensível ao contexto. sublinha Spell Checker identificadores que são desconhecidos para o projeto. O Code Explorer está à sua disposição para facilitar o gerenciamento do projeto.

Passo 1: Clique na janela que você deseja encaixar. Mikroelektronika .Soluções de software e hardware para o mundo embutido 33 . Passo 2: Arraste a janela de ferramentas do seu local atual. As quatro setas do ponto de diamante para os quatro cantos do IDE. dar-lhe o foco. dependendo de como você organizar as janelas no IDE. Um losango guia é exibida. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente PERSONALIZAÇÃO LAYOUT IDE Docking Windows Você pode aumentar a visualização e edição espaço para o código.

selecione o layout desejado na lista e clique no botão Excluir Icon Layout .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Passo 3: Mova o ponteiro sobre a parte correspondente do losango guia.Soluções de software e hardware para o mundo embutido . solte o botão do mouse. 34 Mikroelektronika . você pode salvar o layout. pressione CTRL enquanto arrastando-o. Passo 4: Para encaixar a janela na posição indicada. Salvar Layout Depois de ter um layout de janela que você gosta. Dica: Para mover uma janela acoplável sem rotura no lugar. Para definir o layout. Um contorno da janela aparece na a área designada. Para remover o layout a partir da lista drop-down. digitando o nome para o layout e pressionando o ícone Save Layout . selecione o layout desejado na lista suspensa Layout e clique em Definir o ícone Layout .

Quando uma janela auto-ocultos perde o foco. . mova o ponto- er sobre a guia. Enquanto uma janela é auto-oculto. Clique na janela que deseja manter visível a dar-lhe o foco. Mikroelektronika . Para exibir um auto-ocultos janela. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Auto Ocultar Auto Esconder "permite ver mais do seu código de uma vez por minimizando ferramenta ganha- dows ao longo das bordas do IDE quando não estiver em uso. A janela desliza para trás para ver e está pronto para uso.Soluções de software e hardware para o mundo embutido 35 . seu nome eo ícone são visíveis em uma guia na borda do IDE. ele automaticamente slides de volta ao seu guia na a borda da IDE. Clique no ícone de alfinete na barra de título da janela.

Para acessar as configurações. 36 Mikroelektronika . comum para o ambiente Windows. Editor de recursos avançados Ajustável Realce de Sintaxe Código Assistente Código Folding Parâmetro Assistente Modelos de Código (Auto Complete) Correção automática de erros de digitação comuns Verificador Ortográfico Marcadores e Goto Line Comente / Descomente Você pode configurar o destaque da sintaxe. clique em Ferramentas > Opções da menu drop-down.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Editor avançado de código O editor de código é um editor de texto avançado moda para satisfazer as necessidades dos profissionais. Colar e Desfazer ações. incluindo familiar Copiar.Soluções de software e hardware para EMBEDDED MUNDO . modelos de código e Auto Correto Editor de diálogo Configurações. Geral edição do código é o mesmo que trabalhar com qualquer editor de texto padrão. clique no botão Mostrar Ícone Opções ou a tecla F12 imprensa.

Use a dobra- ção de símbolos para ocultar / mostrar as subseções código. Código Folding dobramento de código é IDE recurso que permite aos usuários ocultar ou exibir sec - ções de um arquivo de origem. Mikroelektronika . Agora você pode continuar digitando para estreitar a escolha. enquanto a visualização apenas as subsecções do código que são relevantes durante uma sessão de edição especial. Se você colocar o cursor do mouse sobre a dica da caixa. Ao digitar. o símbolo de dobragem de código (. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Código Assistente Se você digitar as primeiras letras de uma palavra e pressione Ctrl + Espaço.e +) aparecerá automaticamente. ou você pode selecionar um da lista usando as setas do teclado e Enter. Desta forma é mais fácil de gerenciar grandes regiões de código dentro uma janela. o texto recolhido será mostrado na uma caixa de dica de estilo. todas válidas iden- tifiers coincidindo com as letras que você digitou será solicitado em um painel flutuante (veja a imagem abaixo).Soluções de software e hardware para o mundo embutido 37 .

descrição e código do seu template. em seguida.%% TIME .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Parâmetro Assistente O Assistente de parâmetro será invocado automaticamente quando você abre parênteses "(" ou pressione Shift + Ctrl + Espaço.%% DISPOSITIVO .Nome do dispositivo (MCU). em seguida. o próximo parâmetro esperado ficará em negrito.Hora atual do sistema .projeto . os parâmetros esperados serão exibidos em um painel flutuante. ou clique no botão Mostrar Ícone Opções e selecione a guia Auto Completar.Soluções de software e hardware para o mundo embutido .Relógio. conforme especificado nas configurações do .% DATE% . whiles). Modelos de Código (Auto Complete) Você pode inserir o modelo de código. conforme especificado no projeto definições %% COMPILER . Como você digite o parâmetro real. Selecione Ferramentas > Opções no menu drop-down menu. Aqui você pode digitar o apropriado palavra-chave.Compilador versão atual 38 Mikroelektronika . macros Autocomplete pode sistema e recuperar informações sobre o projeto: . Se o nome de uma função válida precede o paren- tese.Data atual do sistema .%% DEVICE_CLOCK . Você pode adicionar seu modelos próprios para a lista. digitando o nome do modelo (por exemplo. pressione Ctrl + J eo editor de código irá gerar automaticamente um código.

selecione a aba Verificador Ortográfico. Para acessar a lista de rec - erros reconhecida. Comentário / Descomente Além disso. em seguida. o editor de código tem um recurso para comentar ou descomente o código selecionado pelo sim- plo de um clique do mouse. o editor de código tem um recurso para comentar ou descomentar selecionado código simples clique de um mouse. ver modelo ptemplate fornecido com mik roC PRO para PIC instalação. Além disso. utilizando o ícone comentar e inco- . ou clique no ícone Mostrar opções e. utilize Ctrl + número. Para definir um marcador. Correção automática O recurso Auto Correct corrige erros comuns de digitação. Para saltar para um marcador. Goto Line A opção Goto Line torna a navegação através de um código grande mais fácil. utilizando o ícone e Icon Descomente a partir de comentar Barra de ferramentas de código. Selecione Ferramentas > Opções a partir do menu drop-down. utilize Ctrl + Shift + número. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Essas macros podem ser usados no código do modelo. Bookmarks Bookmarks tornar a navegação através de um código grande mais fácil. para que eles possam ser facilmente notado e corrigido antes de compilar o seu projeto. Verificador Ortográfico O verificador ortográfico sublinha desconhecido objetos no código. Você também pode adicionar os seus próprios preferências para a lista. selecione Ferramentas > Opções a partir de No menu drop-down. ou clique no botão Mostrar Ícone Opções e selecione a guia Autocorreção. Use a curto corte Ctrl + G para ativar essa opção.

Soluções de software e hardware para o mundo embutido 39 . Mikroelektronika . mento Icon do Código de Barra.

além da lista de objetos definidos e declarados. Além disso. As seguintes opções estão disponíveis no Gerenciador de Código: Ícone Descrição Expandir / Recolher todos os nós da árvore. Localize declaração no código.Soluções de software e hardware para o mundo embutido .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Explorador de código O Code Explorer dá visão clara de cada item declaradas dentro do código fonte. 40 Mikroelektronika . código de explorer exibe mensagem de erro sobre a primeira e sua localização no código. Você pode saltar a uma declaração de qualquer item pelo botão direito dele.

clicando duas vezes nele. Rotina janela da lista pode ser acessada pressionando Ctrl + L.Soluções de software e hardware para o mundo embutido 41 . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente LISTA DE ROTINA lista de rotina diplays lista de rotinas. Você pode saltar para uma rotina desejado. e permite que as rotinas de filtragem por nome. Mikroelektronika .

Na sequência opções estão disponíveis no Project Manager: 42 Mikroelektronika .Soluções de software e hardware para o mundo embutido . Definição do projeto em ativos modalidade é realizada por duplo clique sobre o projeto desejado no Project Manager. Apenas um deles pode estar ativo no momento.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente GERENTE DE PROJETOS Project Manager for IDE recurso que permite aos usuários gerenciar múltiplos projetos. Vários projetos que juntos formam grupo de projeto pode ser aberto ao mesmo tempo.

Project Toolbar. Construir o projeto ativo. Remover arquivos selecionados a partir do projeto. Adicionar arquivo ao projeto ativo. Opções do menu File. Retire do projeto grupo de projeto.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido 43 . Fechar grupo de projeto. o Project Menu de Opções. programador executar mikroElektronika do Flash. Adicione projeto para o grupo de projeto. Tópicos relacionados: Configurações do projeto. Adicionar / Remover arquivos do Project Mikroelektronika . barra de ferramentas Build. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Ícone Descrição Salvar projeto do Grupo. Para obter detalhes sobre como adicionar e remover arquivos projeto consulte Adicionar / Remover arquivos de Projeto. Abra grupo de projeto. Feche o projeto ativo.

CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente PROJETO DE JANELA DE CONFIGURAÇÃO As seguintes opções estão disponíveis nas configurações do projeto Janela: Dispositivo .selecionar o dispositivo apropriado na lista de dispositivos drop-down.digite o valor da freqüência do oscilador. Construir / Debugger Tipo . Personalizando Projetos 44 Mikroelektronika .escolha depurador tipo. Oscilador .Soluções de software e hardware para o mundo embutido . Tópicos relacionados: Edit Project.

A biblioteca desejável é adicionado ao projeto. Biblioteca janela do Gerenciador de listas de todas as bibliotecas (extencion. Para ter todas as funções de biblioteca acessível. pressione o botão Limpar e todas as bibliotecas serão apurados a partir do projeto. selecionando seleção caixa ao lado do nome da biblioteca. tudo Somente as bibliotecas selecionadas serão ligadas. MCL). que são instantaneamente armazenados no Usa pasta do compilador. basta pressionar o botão Confira todas as e todas as bibliotecas serão selecionadas. No caso de nenhuma biblioteca é necessária em um projeto. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Gerenciador de bibliotecas Library Manager permite que as bibliotecas manuseio simples sendo usado em um projeto. 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 .

Soluções de software e hardware para o mundo embutido . da biblioteca estão disponíveis e necessidade de refrescamento. Reconstruir todas as bibliotecas copiando disponíveis. Útil quando novos bibliotecas são adicionadas. Inclui todas as bibliotecas disponíveis no projeto atual.osÚtil arquivos quando para fontes"usa" a pasta.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Ícone Descrição Atualizar Biblioteca de verificação de arquivos em "Usos" pasta. Restauração da biblioteca para o estado apenas antes de salvar último projeto. Nenhuma biblioteca da lista serão incluídos no projeto atual. Criação de um novo Biblioteca 46 Mikroelektronika . tópicos relacionados: mik roC PRO para PIC Bibliotecas.

Soluções de software e hardware para o mundo embutido 47 . o compilador vai relatá-los e não irá gerar um arquivo hex. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente ERRO JANELA No caso em que foram encontrados erros durante a compilação. Temas relacionados: Mensagens de erro Mikroelektronika . O compilador também relata advertências. Dê um duplo clique na linha da mensagem na janela de erro para destacar a linha onde o erro foi encontrado. mas estas não afetam a saída. A janela de erro está localizado no separador Mensagem. e mostra a localização eo tipo de erros. os erros só pode interefere com a geração de hex. A janela de erro será solicitado na parte inferior da Na janela principal por padrão. o compilador encontrou.

você poderá analisar estatísticas de seu código. Uso de memória RAM Exibe uso da memória RAM de uma forma torta-like. Clique no Estatísti- tiques Icon . Uso o Windows Memory Fornece uma visão geral de RAM e ROM uso nas diversas formas.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente ESTATÍSTICAS Após a compilação com sucesso.Soluções de software e hardware para o mundo embutido . 48 Mikroelektronika .

SFR Locais Exibe uma lista de utilizados SFR locais. Mikroelektronika .Soluções de software e hardware para o mundo embutido 49 . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente RAM locais utilizados Exibe usados locais de memória RAM e seus nomes.

CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Uso de memória ROM ROM Exibe o uso do espaço de memória em forma de pizza-like. 50 Mikroelektronika . Memória ROM Constantes Exibe constantes memória ROM e seus endereços.Soluções de software e hardware para o mundo embutido .

nomes simbólicos.Software e Soluções de hardware para Embedded World 51 . e único nomes assembler. na ordem ascendente. Mikroelektronika . Funções ordenados por tamanho Classifica e exibe funções. pela sua dimensão. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Função ordenados por nome Classifica e exibe funções por seus endereços.

CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Funções Ordenado por Endereços Classifica e mostra por suas funções endereços. em ordem crescente. Funções Ordenado por Nome do Quadro Classifica e exibe funções por seus nomes em um formato gráfico semelhante.Soluções de software e hardware para o mundo embutido . 52 Mikroelektronika .

CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Funções Ordenado por Gráfico Tamanho Classifica e exibe funções por seus tamanhos em um formato gráfico semelhante.Soluções de software e hardware para o mundo embutido 53 . Mikroelektronika . Funções ordenadas por endereço Gráfico Classifica e exibe funções por seus endereços em um formato gráfico semelhante.

CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Função Árvore Exibe Função Árvore com os dados relevantes para cada função.Softwares e soluções de hardware para Embedded World . Memória Resumo Apresenta resumo de memóri a RAM e memóri a ROM de forma torta-lik e. 54 Mikroelektronika .

modelos de código Mikroelektronika . Novo macro. Permite uma macro que foi gravada para ser repetidos. A Macro oferece os seguintes comandos: Ícone Descrição teclas "gravação" começa para posterior reprodução. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Editor de Macros A macro é uma série de teclas que foram "gravadas" na ordem executada. Tópicos Relacionados: Avançado editor de código. Pára keystrokesthat captura começou quando o Start com Recordig- mando foi selecionado. Excluir macro.Soluções de software e hardware para o mundo embutido 55 . ou repetir. as teclas gravadas. Uma macro permite "gravar" uma série de teclas e depois em 'playback'.

CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Ferramentas integradas USART Terminal A mik roC PRO para PIC inclui o terminal de comunicação USART para RS232 de comunicação. 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 .Soluções de software e hardware para o mundo embutido .

Mikroelektronika . Quando você executa programador de software mikroElektronika mik roC PRO para PIC IDE .ihex que contém dados a partir do editor EEPROM.project_name. Você pode lançá-lo a partir do menu drop-down Ferramentas > EEPROM Editor. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente EEPROM Editor O Editor é usado EEPROM para manipulação de memória EEPROM MCU. Quando Utilize este definição EEPROM está marcada compilador gerará Intel hex project_name.hex arquivo será carregado automaticamente durante a IHEX arquivo deve ser carregado manualmente.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido 57 .

CAPÍTULO 2
Meio mikroC PRO para PIC
Ambiente
ASCII Gráfico

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 - Soluções de software e hardware para o mundo embutido

CAPÍTULO 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 combinação viável que você gostaria de exibir em
7seg.
Clique sobre as peças, de 7 de imagem do segmento para obter o valor solicitado na caixas de
edição.
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 saída é mikroC PRO para
PIC código compatível. Você pode iniciar a partir do menu drop-down Ferramentas > Cus LCD
Tom de caracteres.

Mikroelektronika - Soluções de software e hardware para o mundo embutido 59

CAPÍTULO 2
Meio mikroC PRO para PIC
Ambiente
LCD Gráfico Editor de Bitmap

A mik roC PRO para PIC inclui o gráfico LCD Bitmap Editor. A saída é o
mikroC PRO para PIC código compatível. Você pode iniciar a partir do menu drop-down
Ferramentas > GLCD Editor de Bitmap.

60 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 2
mikroC PRO para PIC Meio Ambiente

HID Terminal

A mik roC PRO para PIC inclui o terminal de comunicação para HID USB comu-
cação. Você pode iniciar a partir do menu drop-down Ferramentas > HID Terminal.

Mikroelektronika - Soluções de software e hardware para o mundo embutido 61

CAPÍTULO 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 - Soluções de software e hardware para o mundo embutido

CAPÍTULO 2
mikroC PRO para PIC Meio Ambiente

mikroBootloader

(De AN732 Microchip documento) A família de PIC16F87X microcontroladores tem
a habilidade de escrever à sua memória próprio programa. Este recurso permite um arranque
de pequenas
programa gerenciador de receber e gravar um novo firmware na memória. Na sua mais simples
formulário, o gestor de arranque começa o código de usuário em execução, 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 memória do programa. Há muitas variações e FEA-suplementar
estruturas que podem ser adicionadas para melhorar a confiabilidade e simplificar a utilização
do gerenciador de inicialização.

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 programação convencional
técnicas (por exemplo, para usar PIC16F877A p16f877a.hex).
2. mikroBootloader Iniciar a partir do menu drop-down Ferramentas > Bootoader.
3. Clique em Configuração 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 botão dentro de 4-5 segundos.
6. A última linha na janela de histórico, em seguida, deve agora ler "Connected".
7. Para iniciar o upload, basta clicar sobre o Iniciar Bootloader botão.
8. Seu programa será gravado no flash PIC. Bootloader irá reportar um erro que
pode ocorrer.
9. Redefinir o PIC e começar a executar.

Mi
kr
oel
ekt
ro
nik
a-
So
ftw
are
e
Sol

õe
s
de
har
dw
are
par
a

Embedded World

63

CAPÍTULO 2
Meio mikroC PRO para PIC
Ambiente
Características

O código de inicialização do computador dá 5 segundos para ficar ligado a ele. Se não, ele
começa
a execução do existentes de código de usuário. Se houver um novo código para ser baixado, o
código de inicialização recebe e grava os dados em memória do programa.

As características mais comuns do gerenciador de inicialização pode ter estão listados abaixo:

Código no local Reset.
Código em qualquer lugar em uma pequena área de memória.
Verifica se o usuário quer novo código a ser carregado.
Inicia a execução do código do usuário se nenhum novo código está a ser carregada.
Recebe o código de novo usuário através de um canal de comunicação se o código está a
ser carregado.
Programas do novo código em memória.

Integrando Código de Utilizador e Código de inicialização

O código de inicialização quase sempre usa o local Reset e alguns programas adicionais
memória. É um simples pedaço de código que não precisa usar interrupções e, portanto,
o código de utilizador pode usar o normal interrupção vetor em 0x0004. O código de
inicialização deve
evitar o uso do vetor de interrupção, por isso deve ter um ramo do programa no endereço
intervalo 0x0000 a 0x0003. O código de inicialização deve ser programado na memória usando
técnicas de programação convencionais, e os bits de configuração deve ser pro-
programado no momento. O código de inicialização é possível acessar os bits de configuração,
desde que não são mapeados no espaço de memória do programa.

64 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 2
mikroC PRO para PIC Meio Ambiente

OPÇÕES

menu Opções é composta por três guias: Code Editor, Ferramentas e as configurações de
saída.

editor de código

O editor de código é um editor de texto avançado 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 edição - Tool9.

Mikroelektronika - Soluções de software e hardware para o mundo embutido 65

CAPÍTULO 2
Meio mikroC PRO para PIC
Ambiente
As configurações de saída

Ao modificar configurações de saída, o usuário pode configurar o conteúdo dos arquivos de
saída.
Você pode habilitar ou geração, por exemplo, desabilitar a ASM e arquivo da lista.
Além disso, o usuário pode escolher o nível de otimização, e configurações específicas do
compilador, que
incluem a sensibilidade caso, vínculo dinâmico para literais de seqüência de configuração
(descrita em mik roC
PRO para PIC específicos).
Construir todos os arquivos de biblioteca que permite ao utilizador usar a biblioteca compilado
(*. mcl) em qualquer PIC
MCU (quando esta opção estiver marcada), ou para um selecionado PIC MCU (quando esta
opção for deixada
desmarcado).
Para obter mais informações sobre a criação de novas bibliotecas, consulte Criando Nova
Biblioteca.

66

Mikroelektroni
ka - Soluções
de software e
hardware para
o mundo
embutido

CAPÍTULO 2
mikroC PRO para PIC Meio Ambiente

Expressões Regulares

Introdução

As expressões regulares são um método amplamente utilizado de especificar padrões de texto
para
pesquisar. metacaracteres especiais permitem que você especificar, por exemplo, que a parti -
string lar que você está procurando, ocorre no início ou final de uma linha, ou que contém n
recorrência 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 série de caracteres que corresponde uma série de caracteres
na seqüênci a alvo, então o padrão "Curta" correspond eri a "Curta" no alvo string.
Você pode fazer personagens que normalmente funcionam como metacaracteres ou fuga
seqüências devem ser interpretadas, precedendo-as com uma barra invertida "###BOT_TEXT###quot;.
Por exemplo, metacaractere "^" início da seqüência de partidas, mas "###BOT_TEXT###quot; ^ jogos
caráter "^", e "\ ###BOT_TEXT###quot; jogos "###BOT_TEXT###quot;, etc

Exemplos:

não assinado seqüência de partidas 'unsigned'
\ ^ Unsigned '^ Unsigned' string jogos

Seqüências de escape

Caracteres podem ser especificados usando uma seqüências de escape: "\ N" corresponde a
uma nova linha,
"\ T" uma guia, etc Em termos mais gerais, \ Xnn, onde nn é uma seqüência de dígitos
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 dígitos hexadecimais.

\ Xnn - Char com o código hexadecimal nn
\ X {nnnn) - char com o código 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 - Soluções de software e hardware para o mundo embutido

67

CAPÍTULO 2
Meio mikroC PRO para PIC
Ambiente
Exemplos:

unsigned \ x20int jogos 'Unsigned int' (Note o espaço 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 após o "[" é "^", o
classe corresponde a qualquer caractere que não está na lista.

Exemplos:

Contagem [aeiou] r encontra strings "Countar ',' contador ', etc, mas não
"Countbr ',' countcr, etc
Contagem [^ aeiou] r encontra strings "Countbr ',' countcr, etc, mas não
"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 início ou no final da lista,
ou
precedem com uma barra invertida.
Se você quiser ']', você pode colocá-lo no início 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 dígito, '-' ou 'T'.
[]-A] corresponde a qualquer caractere de ']'..' Um '.

Metacaracteres

Os metacaracteres são caracteres especiais que são a essência da expressão regular-
sões. Existem diferentes tipos de metacaracteres, descrito abaixo.

68 Mikroelektronika - Soluções de software e hardware para o mundo embutido

seqüênci as de jogos como 'Porta'.Um caráter não-numéricos \ S . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Metacaracteres .uni- code.org/unicode/reports/tr18 / Metacaracteres .Seqüências de jogos como "Routi1e '.' rotina ' e assim por diante.seqüência de partidas » PORTA » só se for a cadeia apenas em linha PORT. tal como recomendado na http://www. entretanto. Exemplo: routi \ de . .classes pré-definidas \ W . e os "$" metacaractere apenas no final.Um personagem nonalphanumeric \ D .Uma caracteres alfanuméricos (incluindo "_") \ W . mas não "Routime '.Um personagem numéricos \ D .Início do texto \ Z .Início da linha $ . de modo que a "^" vai jogo após qualquer separador de linha dentro da cadeia.qualquer caractere na linha Exemplos: ^ PORTA .Soluções de software e hardware para o mundo embutido 69 . Você pode. Embedded separadores de linha não vai ser acompanhado por ^ " ou "$".Um espaço não Você pode usar \ W. \ D e \ S dentro de classes de personagens personalizadas.seqüência de partidas » PORTA » só se for na início da linha PORTA $ .seqüência de partidas » PORTA » só se for no final de linha PORTA ^ $ .' routi6e ' e assim por diante. o desejo de tratar uma string como um buffer de multi -linha.Todo o espaço (o mesmo que [\ T \ n \ r \ f]) \ S .separadores Line ^ .Final do texto . Mikroelektronika .Fim da linha \ A . e "$" corresponderá antes de qualquer linha separador. 'PORTB'. As expressões regulares trabalha com separadores de linha. 'PORT1' e assim por diante A "^" metacaractere por defeito só é garantido para coincidir com início da entrada string / texto.r .

Não há limite ao tamanho da n ou m. A forma {N.1} {N} . {M.Corresponder a um limite de palavra) \ B . semelhante a {0.}? +? . n}. mas grande número será mastigar mais memória e retardar execução.Pelo menos n mas não mais do que m vezes ("avarento") *? .} fósforos ou mais vezes. e um personagem nonalphanumeric ("W ###BOT_TEXT###quot;) em os outros lateral (em qualquer ordem). n} e corresponde exatamente n tempos.Zero ou mais ("gananciosos"). especificar o número mínimo de vezes para combi n ar com o item n eo máxi mo m.} . ela é tratada como uma personagem regular.Os limites de palavra Um limite de palavra ("B ###BOT_TEXT###quot;) é um ponto entre dois personagens que tem um código alfanumérico caráter ("W ###BOT_TEXT###quot;) de um lado.Zero ou um ("non-greedy"). pelo menos n ("avarento") {N.Correspondem a um não (limite de palavra) Metacaracteres . * . m}.Às vezes. semelhante a {0. m} .Exatamente n vezes ("non-greedy") {N.Iterators Qualquer item de uma expressão regular pode ser seguido por um outro tipo de metacharac - tros .} + . mas um grande número vai mastigar mais memória e retardar execução. você pode especificar o número de ocorrências de personagem anterior. metacaractere ou subexpressão.}? .Às vezes. Usando este metacaracteres. \ B . semelhante a {1} ? . especificar o número mínimo de vezes para combi n ar com o item n eo máxi mo m.Uma ou mais ("gananciosos"). A forma {N} é equiv al e nte a {N. contando os personagens imaginários fora o começo eo fi m da cadeia como um correspondente "W ###BOT_TEXT###quot;. 70 . Não há limite ao tamanho da n ou m. Se uma chaveta ocorre em qualquer outro contexto.1}? {N}? .Zero ou mais ("non-greedy"). Assim.Exatamente n vezes ("avarento") {N. A forma {N. A forma {N} é equival e nte a {N.Zero ou um ("gananciosos").Pelo menos n mas não mais do que m vezes ("non-greedy") Assim.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Metacaracteres . pelo menos n ("non-greedy") {M. n}? . os dígitos em chaves do formulário. os dígitos em chaves do forma. semelhante a {0. semelhante a {1}? ? .iteradores. n} e corresponde exatamente n tempos.} fósforos ou mais vezes.Uma ou mais ("non-greedy"). semelhante a {0. {N.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

'B +? retorna 'B'.3}' retorna 'BBB'.? r . Mi kr . apenas o "Rou" parte irá corresponder. a minimizar a confusão sobre onde começam e terminam. 'B {2. E a última alternativa contém tudo. "[" Ou o início do padrão) até o primeiro "|".3} counte . "Greedy" leva o maior número possível ". Por exemplo: quando a correspondência rou | goleada contra "Rou- tine ". Por exemplo. ou "Counteeer ' mas não "Counteeeer ' Uma pequena explanação sobre a "ganância". A primeira alternativa inclui tudo. e com sucesso corresponde a seqüência alvo (isto pode não parecer importante. se você escrever [Bit | morcego | bot] você é realmente apenas a correspondência [Biao |]. Isto significa que as alternativas não são necessariamente gananciosos.seqüências de jogos como "Countar '. mas não "Countr ' contagem. desde a última pat delimitador tern ("(".seqüência de partidas "Counteer ' counte {2} r . Metacaracteres . 'B *? retorna uma string vazia. desde a última "|" para o próximo padrão delim- iter.* ß. Também lembro que "|" é interpr etado como um literal entre colchetes. + r .seqüências de jogos como "Counteer. não gananciosos " toma o mínimo possível.seqüências de jogos como "Counteer '. Exemplos: rou (tine | te) cordas partidas . "Bat".seqüências de jogos como 'Contra' countelkjdflkj9r. mas é im - importante quando você está capturando texto correspondente usando parênteses).' counteeer ' etc r {2."Rotina" ou 'Route'. para a primeira alternativa encontrada para que o expressão inteira partidas.Alternativas Você pode especificar uma série de alternativas para um padrão de uso "|" separá-los.3}? retorna 'BB'. como é que a primeira alternativa julgado. ou "Bot" na seqüência alvo como seria "B (i | a | o) t)". de modo que bat | | pouco bot irá c orres ponder a qualquer dos "Bit". 'B {2. Alternativas são julgados a partir da esquerda para a direita. é comum a prática de incluir alternativas entre parênteses. e "Countr ' contagem. é aquele que é escolhido.' counteeer '. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Exemplos: r Contagem .seqüências de partidas como 'Contra' countelkjdflkj9r.' contador ' e "Countr ' mas não "Countelkj9r ' r {2} counte . por isso. '+ B' e '* B' aplicada à corda "Abbbbc ' retorno "Bbbb". Por este motivo.

oelektronika .Soluções de software e hardware para o mundo embutido 71 .

Exemplos: (. (.) \ 1 + 'Aaaa' partidas 'cc'. ) também pode ser usado para definir regular subexpres- sões. ou '4 ' (Entre aspas simples) ou 77 (Sem aspas) etc 72 Mikroelektronika . \ PREVI-partidas previamente combinados subexpressão #. "Routinnne 'etc Metacaracteres . +) \ 'Abab "1 + jogos e '123123' (['"]?)( \ D +) \ 1 jogos "13" (Entre aspas) . subexpressão Primeiro tem o número '1 '.' routinne.. 9 ou 10 instâncias do 'int' routi ([0-9] | a +) e "Routi0e 'corresponde a' routi1e '. Subexpressões estão contados com base na esquerda para a direita do seu open- ção entre parênteses.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Metacaracteres .10} seqüências de jogos que contenham 8..Referências Anteriores Metacaracteres \ 1 através \ 9 são interpretadas como referências anteriores.Soluções de software e hardware para o mundo embutido . Exemplos: (Int) {8.' rotina '.Subexpressões O bracketing construir ( .

mcl" __Lib_System. .O11111114: Várias opções de saída. .-SP "C: \ Lcd ###BOT_TEXT###quot; adicionar o diretório para a lista de caminho de pesquisa. ."Lcd. C.SE: Adicionar o diretório para o # include lista de pesquisa.DBG: Gerar informações de depuração. .D: Criar todos os arquivos como bibliotecas.c" __Lib_Math. . . . .exe-MSF-DBG-p16F887-ES-C-O11111114-fo8 - N "C: \ Lcd \ Lcd. .mcl": Especifique arquivos de entrada.-SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ defs \ "adicionar o diretório para a lista de caminho de pesquisa. usado para fins internos de IDE. . . .SP: Adicionar o diretório para a lista de caminho de pesquisa.mcl "__Lib_LcdConsts. .N: Os arquivos de saída gerados a caminho do arquivo especificado por filename.mcl" "__Lib_System.mcl " "__Lib_MathDouble.L: Verificar e reconstruir novas bibliotecas.mcl" "__Lib_LcdConsts. Pld tipo.Soluções de software e hardware para o mundo embutido 73 .PARA: Definir oscilador [em MHz].UCD: CID tipo de compilação. *. Mikroelektronika .O: opções de saída diversas.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.mcl "__Lib_MathDouble.DBG: Gerar informações de depuração.mcl" __Lib_Delays.mcl "__Lib_Delays.SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ usa ###BOT_TEXT###quot;: Adicione o diretório para a lista de caminho de pesquisa. . . Exemplo: mikroCPIC1618. .C: Ligue maiúsculas e minúsculas. .c" __Lib_Math. mcl e *.mcl " Parâmetros utilizados no exemplo: . .N "C: \ Lcd \ Lcd. mcl) para 'diretório'. .fo10: Defina a frequência do oscilador [em MHz].mcl" "__Lib_Lcd.B: Salvar arquivos binários compilados (*.C: Ligue maiúsculas e minúsculas.MSF: Short Message Format.<opts>] [] - <opts>]] INFILE pode ser de *.mcppi" SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ defs \ ": os arquivos de saída gerados a caminho do arquivo especificado por filename.Y: Dynamic link para strings literais. .P: MCU para que a compilação será feito.mcl" __Lib_Lcd.exe [.p16F887: MCU 16F887 selecionado. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente mikroC PRO para PIC OPÇÕES DE LINHA DE COMANDO Uso: mikroCPIC1618.<opts>]] [<ENTRADA> [.<opts> [. . . Os seguintes parâmetros e pouco mais (ver manual) são válidos: .

consulte Adicionar / Remover arquivos do projeto. . . h). mikroC PRO para PIC IDE permite gerenciar múltiplos projetos (consulte Project Manager). Os arquivos de origem podem ser compilados somente se forem parte de um projeto. .arquivos de imagem.nome do projeto e uma descrição opcional.lista dos arquivos do projeto de origem com os caminhos. Note-se que o projeto não incluir arquivos da mesma forma como pré-processamento que.arquivos binários (*.Soluções de software e hardware para o mundo embutido .outros arquivos. . gota- menu para baixo Projeto > Novo projeto ou clicando no ícone Novo projeto a partir de Projeto barra de ferramentas. mcl) . Mcppi) e um ou mais arquivos fonte (extensão). que consiste de um único arquivo de projeto (extensão . . O arquivo de projeto contém as seguintes informações: .relógio do dispositivo.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente PROJETOS A mik roC PRO para PIC organiza as aplicações em projetos. Novo projeto A maneira mais fácil de criar um projeto é por meio do assistente para Novo projeto.bandeiras dispositivo (config palavra). .dispositivo de destino. 74 Mikroelektronika .arquivos de cabeçalho (*. .

Selecione o dispositivo da lista de dispositivos de drop-down. Mikroelektronika . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Assistente de Novas Etapas do Projeto Comece a criar seu novo projeto. clicando no botão Next: Primeiro Passo .Soluções de software e hardware para o mundo embutido 75 .

76 Mikroelektronika .Soluções de software e hardware para o mundo embutido .Digite o valor da freqüência do oscilador. Passo três .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Passo dois .Especifique o local onde o projeto será salvo.

Acrescentar ao arquivo de projeto projeto se eles estão disponíveis neste momento. Você pode sempre adicionar arquivos de projeto mais tarde o uso do Project Manager. Tópicos relacionados: Gerente de Projetos.Clique no botão Concluir para criar seu novo projeto. Passo Cinco .Soluções de software e hardware para o mundo embutido 77 . Project Configurações Mikroelektronika . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Passo Quatro .

gota- menu para baixo Projeto > Novo projeto ou clicando no ícone de New Project Projeto barra de ferramentas. . Os arquivos de origem podem ser compilados somente se forem parte de um projeto. mik roC PRO para PIC IDE permite gerenciar múltiplos projetos (consulte Project Manager). .bandeiras dispositivo (config palavra). consulte Adicionar / Remover arquivos do projeto.outros arquivos.nome do projeto e uma descrição opcional.Software e hardware SOLUÇÕES PARA mundo embutido .relógio do dispositivo.arquivos de imagem.lista dos arquivos do projeto de origem com os caminhos.dispositivo de destino. . . mcl) .arquivos binários (*. Mcppi) e um ou mais arquivos fonte (extensão). O arquivo de projeto contém as seguintes informações: .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente PROJETOS A mik roC PRO para PIC organiza as aplicações em projetos.arquivos de cabeçalho (*. 78 Mikroelektronika . . . consistindo de um único arquivo de projeto (extensão . h). . Novo projeto A maneira mais fácil para criar um projeto é por meio do assistente para Novo projeto. Note que o projeto não inclui arquivos da mesma forma como pré-processamento faz.

Soluções de software e hardware para o mundo embutido 79 . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Assistente de Novas Etapas do Projeto Comece a criar seu novo projeto. Mikroelektronika .Selecione o dispositivo da lista de dispositivos drop-down. clicando no botão Next: Primeiro Passo .

Especifique o local onde o projeto será salvo.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Passo dois . Passo três .Digite o valor da freqüência do oscilador.Soluções de software e hardware para o mundo embutido . 80 Mikroelektronika .

Acrescentar ao arquivo de projeto projeto se eles estão disponíveis neste momento.Soluções de software e hardware para o mundo embutido 81 .Clique no botão Concluir para criar seu novo projeto: Mikroelektronika . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Passo Quatro . Passo Cinco . Você pode sempre adicionar arquivos de projeto mais tarde o uso do Project Manager.

Outros arquivos 82 . Gerenciando Grupo de Projecto mik roC PRO para PIC IDE covenient fornece a opção que permite vários projetos ser abertas simultaneamente. você pode alterar os bits de configuração do chip selecionado no Edit Projeto janela. consulte os arquivos de saída. Você pode chip de mudar. Lst arquivos. Asm e . . O grupo do projecto pode ser salva. Além disso. Esses arquivos não podem ser adicionados ou retirados do projeto..PLD nível de projeto define os arquivos .arquivos de imagem . . você pode criar um grupo de projetos. Se você tem vários projetos sendo conectado em alguns Assim.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente PERSONALIZAÇÃO PROJETOS Edit Project Você pode alterar as configurações básicas do projeto na janela de configurações do projeto. então no caso de mais de um projeto estiver aberto. clicando no ícone Save Project Group da a janela do Project Manager. Todos os dados relevantes sobre o grupo do projeto são armazenadas em o arquivo de grupo de projeto (extensão .. Mcl binária arquivos . Qualquer mudança na configuração do projeto Janela afeta atualmente projeto ativo. Mpgroup) Adicionar / Remover arquivos do Project O projeto pode conter os seguintes tipos de arquivo: . e freqüência de oscilação.. H arquivos de cabeçalho . O grupo do projecto pode ser reabriu clicando no Open Project Icon Group. Hexadecimal.arquivos de origem . você têm de assegurar que exatamente o projeto desejado é definido como um activo no projecto Manager.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

deve ter todas as definições necessárias após pré-processamento. 1 será adotado. Veja arquivo de inclusão para mais informações. Esta opção pode ser especificada repetidamente. Se um caractere de espaço em branco é inserido imediatamente após a "=". H). Um arquivo deve conter uma definição de cada linha da seguinte forma: <symbol> [= [<value>]] <symbol (a. Para adicionar o arquivo de origem para o projeto. isto é. Cada aparecimento de símbolo será substituído pelo valor antes da compilação. Projeto define nível arquivos permitem que você tenha define que são visíveis em todos os arquivos de origem no projeto. clique em Adicionar Arquivo à Project Icon. Nível do projeto define: Projeto Nível Define (. Veja em nível de projeto predefinido define Nota: Para inclusão dos arquivos de cabeçalho (extensão . . Para remover o arquivo (s) do projeto. PLD) arquivos também podem ser adicionados ao projeto. Mcppi). use = Valor. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente A lista de arquivos fonte relevante é armazenado no arquivo de projeto (extensão . Existem dois níveis de projeto pré-define. use o direção pré-processador tiva # Include. clique no botão Remover Arquivo do Project Icon. A macro é definido como zero token. Cada adicionou arquivo de origem deve ser independente. Não digitar caracteres espaço em branco imediatamente antes da "=". Se = Valor é omitido.b)> [= [<value>]] Define um símbolo mac ro nomeada. Para especificar um valor.

Tópicos relacionados: Gerente de Projetos. Project Settings. Edit Project Mikroelektronika .Soluções de software e hardware para o mundo embutido 83 .

Não confie na pré-processador para incluir outros arquivos de origem de cabeçalhos- consulte Adicionar / Remover arquivos do projeto para obter mais informações. um arquivo de origem vazio. Uma nova guia será aberta.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Arquivos de origem Arquivos de origem contendo o código C deve ter a extensão. Use a diretiva de pré-processamento # Include para incluir arquivos de cabeçalho com a extensão . Os selecionados arquivo é exibido em sua própria guia. A lista de arquivos de origem relevantes para a aplicação é armazenado no arquivo de projeto com extensão mcppi. Se o arquivo selecionado já está aberto. Selecione Arquivo > Nova Unidade a partir do menu drop-down. Se você usar o novo assistente de projeto. Selecione Arquivo > Guardar da drop-down menu. ou pressione Ctrl + N. juntamente com outras informações de projeto. ou pressione Ctrl + S. ou imprensa Ctrl + S. é só uma questão de conveniência. a sua guia Editor atual ficará ativo. A mik roC PRO para PIC não requer que você ter um arquivo de origem o mesmo nome que o projeto. Você pode compilar arquivos de origem somente se eles são parte do projeto. ou clique no Novo Ícone do Arquivo da Barra de Ferramentas. ou clique no botão a partir do arquivo Save File Icon Barra de ferramentas e nomeá-lo como quiser. 2. Gerenciando arquivos de origem Criar novo arquivo de origem Para criar um novo arquivo de origem. arquivo 2. Abrindo um arquivo existente 1. Selecione Arquivo > Abrir a partir do menu drop-down. faça o seguinte: 1. . ou clique no botão Abrir File Icon Arquivo da Barra de Ferramentas. será criado automaticamente.. o nome do projeto com extensão. Em Abrir caixa de diálogo Procurar para o local do arquivo que deseja abrir. H. Este é um arquivo de origem novo. selecione-o e clique no botão Abrir.

Soluções de software e hardware para o mundo embutido . 3. Imprimindo um arquivo aberto 1. definir um layout desejado no documento e clique no botão OK. Selecione Arquivo > Imprimir da drop-down menu. 2. ou pressione Ctrl + P. 84 Mikroelektronika . Certifique-se que a janela que contém o arquivo que você deseja imprimir está ativo. Na janela de visualização de impressão. O arquivo será impresso na impressora selecionada.

Clique no botão Salvar. Gerente de Projetos. Certifique-se que a janela que contém o arquivo que você deseja salvar está ativo. Selecione Arquivo > Fechar a partir do menu drop-down. 2. Arquivo Barra. 5. O diálogo Novo nome do arquivo ser exibido. ou pressione Ctrl + S. Na caixa de diálogo. Project Settings. Salvando arquivo com um nome diferente 1. clique na guia do arquivo que que deseja fechar e selecione Fechar opção no menu de contexto. Mikroelektronika . Certifique-se que o janela contendo o arquivo que você deseja salvar está ativo. Selecione Arquivo > Salvar como a partir do menu drop-down. Tópicos Relacionados: Menu Arquivo. Certifique-se que a guia que contém o arquivo que você deseja fechar é a aba ativa. ou clique no botão Salvar File Icon Arquivo da Barra de Ferramentas. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Salvando arquivo 1. Se o arquivo foi alterado desde que foi salvo pela última vez. navegue até a pasta onde você deseja salvar o arquivo. 2. No campo Nome do arquivo. 2. 3. Selecione Arquivo > Guardar a partir do menu drop-down. você será solicitado a salvar suas alterações. ou para a direita. 4. modificar o nome do arquivo que você deseja salvar. A fechar o ficheiro 1.Soluções de software e hardware para o mundo embutido 85 . 3.

Temas relacionados: Personalizando Projetos 86 Mikroelektronika .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente CLEAN Pasta do projeto Este menu dá-lhe a opção de escolher quais arquivos do seu projeto atual que você quer para excluir. Outros arquivos devem ser marcada para exclusão apenas com um grande cuidado. Os arquivos marcados em negrito podem ser facilmente recriadas através da construção de um projeto.Soluções de software e hardware para o mundo embutido . porque IDE não pode recuperá-los.

janela de erro. o mik roC PRO para PIC irá gerar arquivos de saída em o projeto pasta (pasta que contém o arquivo de projeto . você pode clicar no botão Exibir Assembléia ícone ou selecione Projeto > Exibir Assembléia a partir do menu drop-down para analisar o código assembly gerado (. Se não houver alguns erros. ou clique no botão Construir Todos Icon do Projeto Toolbar. você pode compilar todos abertos projetos selecionando Projeto > Build All a partir do menu drop-down. é tempo para compilar ele. Arquivos de saída são resumidos na tabela abaixo: Assembléia Ver Depois de compilar o programa no mik roC PRO para PIC. Tópicos relacionados: Menu Project. Pro- Configurações ject Mi . Mcppi). barra de progresso será exibida para informá-lo sobre o status de compilação. Arquivos de saída Após a compilação bem-sucedida. asm arquivo) em uma janela nova aba. o mik roC PRO para PIC irá gerar arquivos de saída. ou clique no a partir de ícone Build Barra de ferramentas de projeto. Gerente de Projeto. Se não forem encontrados erros. Se mais mais do que um projeto está aberto. Project Barra de ferramentas. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente COMPILAÇÃO Quando você criou o projeto e escrito o código fonte. Assembléia é legível com nomes simbólicos. Selecione Projet o > Const ruir a partir do menu drop-do wn. você será notificado na janela de erro.

com nomes simbóli c os. Lista de Resumo dos PIC colocação de memória: a .kroelektronika . mikro Compilado Biblioteca. Asm extraídos a partir da lista de arquivos. registradores. . Hexa Intel HEX programa PIC MCU. Mcl Binária aplicativ o que pode ser incluída em outros projetos. distribuição binária do .Soluções de software e hardware para o mundo embutido 87 Formato Descrição Tipo de Arquivo hex Intel registros estilo. Use esse arquivo para o . arquivo . Montador de Homem monta gem legívei srotinas e rótulos. Lst instrução Arquivos endereços.

Estouro de pilha .Tipos incompatíveis: [% S] [% s] .[% S] já foi declarado [% S] .Identificador não declarado [% S] na expressão .Tipo inválido em Array .Ponteiro necessária .Não há espaço suficiente ROM .Identificador esperado.O argumento é fora do alcance .Atribuir a não lvalue [% S] .Erro interno [% S] . mas constante [% S] encontrados .Variável [% S] é redeclarado .Erro de sintaxe: Esperado [% S] mas [% S] encontrados .Esperado variável.Não é possível atribuir [% S] para [% S] . .Soluções de software e hardware para o mundo embutido .Too inicializadores muitos .[% S] tag redefiniu [% S] .Ilegal typecast [% S] [% s] .Excesso de caracteres 88 Mikroelektronika . mas [% S] encontrados .Identificador não declarado [% S] .Divisão por zero .Tipo incompatível: esperado [% S].Possibilidade constante.Limite a produção aumentou 2K palavras .Declaração inválido .Não é possível estabelecer essa taxa de transmissão no [% S] MH z de clock . mas [% S] encontrados .A função não pode matriz de retorno . mas [% S] encontrados .Tipo desconhecido [% S] ."% S" identificador não é válido .Tipo inconsistentes .Arquivo [% S] não encontrado [% S] .[% S] não pode ser usado fora de um loop .Operador inválido [% S] .Não há espaço em memória RAM suficiente para todas as variáveis .Não é possível lançar [% S] para [% S] .Elemento de matriz não pode ser função .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente MENSAGENS DE ERRO Mensagens de erro do compilador: .Classe de armazenamento inconsistentes .A expressão constante necessária .Expressão inválida .Operador [% S] não é aplicável a estes operand os [% S] .Lvalue necessária .Não parâmetros suficientes.Há muitos parâmetros reais .

Argumentos não pode ser do tipo void .Preprocessor encerrado com código de erro [% S] .Recursão em definição .[% S] já utilizado .Montador de instruções [% S] não foi encontrado .Ponteiro para a função exigida .Opção de linha de comando desconhecido: [% S] .Const inteiro esperado .Tipo Integer necessário .Soluções de software e hardware para o mundo embutido 89 .Declarator erro .Reentr ânci a não é permiti do: função [% s] chamado a partir de dois segme ntos .O endereço deve ser maior que 0 .Classe de armazenamento Bad .Nenhum arquivo especificado Parâmetro . P16F . mas [% S] encontrados Mikroelektronika .Função necessária .[% S] Identificador redefiniu .Expressão deve ser maior que 0 .Array corrompido .Expressão Const esperado .Declarator inválido esperado "(" ou identificador .Ilegal expressão com o vazio .Ruim para o argumento: [% S] .Lista qualificador Specifer / esperado .Conversão ilegal ponteiro para casal .) .Os membros não podem ter especificador de memória .Índice fora dos limites ..Nome typdef redefinidos: [% S] .dispositivo ausente (por exemplo.Dimensão da matriz deve ser maior que 0 .Too inicializadores muitos subaggregate .Recursão ou cross-convocação de [% S] .[% S] não encontrado [% S] .Especificador necessário .Argumentos não pode ter specificator memória explícita .ILevel só pode ser utilizada com as rotinas de interrupção de serviço -.Nome do projeto deve ser especificado . Esperado.Seqüência de parâmetro inválido .Endereço Bad absoluta [% S] .Os membros não pode ser do tipo bit ou sbit .Too inicializadores muitos . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente .Extensão de ficheiro em falta: [% S] .Já usado [% S] .Nome do projeto deve ser definido ..Anulação do usuário .

mas [% S] encontrados .Inicializador de erro de sintaxe: array multidimensional faltando subscrito .Parâmetro [% S] não deve ser do tipo bit ou sbit .Tipo de vazio na expressão .Demo Limite .Valor iLevel deve ser integral constante ."Quebrar" fora do laço ou switch . mas [% S] encontrados .")" esperado.Funções void não pode retornar valores .Não existe memória RAM suficiente para a pilha de chamadas ."Default" rótulo de alternar ."Case" fora do switch ."" esperado. mas [% S] encontrados .ILevel só pode ser utilizada com as rotinas de interrupção de serviço .Too inicializadores muitos subaggregate .tipo não resolvida .Pelo menos um caminho de pesquisa deve ser especificado .Ilegal representação char: [% S] ."Continue" fora do circuito .Too muitos chars .Esvazie char .")" esperado.A inexistência de campo [% S] .Etiqueta redefiniu . mas [% S] encontrados . mas [% S] encontrados .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente .Expectativa "{" .Código Inacessível ."(" esperado.[% S] Identificador redefiniu .A função não deve ter valor de retorno do tipo bit ou sbit 90 Mikroelektronika ."}" esperado [% S] encontrados .Expressão do switch deve avaliar o tipo integral .Fora da faixa iLevel "0 .Matrizes de objetos contendo matrizes de tamanho zero são ilegais .Enquanto esperava.Soluções de software e hardware para o mundo embutido .. 4" .Invalid enumerador .

Ruim ou falta de parâmetro FOSC.Gerado taxa de transmissão é [% S] bps (= erro [% S] por cento) .conversão ponteiro Suspicious .RAM insuficiente [% S] Mikroelektronika .rotina do sistema não é encontrado para inicialização de: [% S] .Especificados inclua o caminho não existe: [% S] .Não Resolvidos extern [% S] .A conversão implícita de int para ptr .Bad função absoluta endereço [% S] . o modelo usado em vez de memória pequeno .Ilegal tipo de arquivo: [% S] Mensagens de erro vinculador: .definição agregada Bad [% S] .O resultado não é definido em função: [% S] .bit IRP deve ser definida manualmente para acesso indirecto a [% S] variável . 8MHz valor padrão usado .caminho de pesquisa especificado não existe: [% S] . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Mensagens de advertência do compilador: .modelo de memória Desconhecido [% S].principal função não é definida .linha pragma Desconhecido ignorado: [% S] .A conversão implícita do ponteiro para int . mas não utilizado " .Variável [% S] tenha sido declarada.Soluções de software e hardware para o mundo embutido 91 .Redefinição das [% S] já definido no [% S] .Inicialização de objeto externo [% S] .

Step Over. Ele é projetado para simular operações do PIC e MCUs auxiliar os usuários na depuração de código C escrito para esses dispositivos. ou seja. Nota: O Simulador de Software simula o fluxo do programa e execução de instruções de linhas de produção. Run to Cursor. ou clicando em o ícone Iniciar o depurador a partir da barra de ferramentas do depurador.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Visão geral do software simulador A fonte de nível de software Simulator é um componente integrante do mik roC PRO para PIC ambiente. sinalizadores de interrupção. mas não pode inteiramente PIC emular o comportamento do dispositivo. Iniciando o Sim Software ulador torna mais opções disponíveis: Step Into. Após a conclusão de escrever o seu programa. etc linha que está a ser executada é a cor em destaque (az ul por padrão). etc 92 . escolha Lançamento tipo de compilação no projeto janela de configurações: Depois de ter compilado com sucesso o seu projeto. Step Out. não atualização temporizadores. você pode executar o Software Simu- lator selecionando Executar > Iniciar o depurador a partir do menu drop-down.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

Basta selecionar desejado variable/reg- Ister de Selecione variável da lista menu drop-down e clique no botão Adicionar . juntamente com seus endereços e valores. Janela de Inspeção O Software Simulador de ver da janela é o principal software janela Simulator que lhe permite monitorar itens de programa ao simular o seu programa. Simplesmente digite o nome do ID que variável / registo que pretende exibir em Pesquisar na variável assemby nome caixa e clique no botão Adicionar . Doubleclicking o ponto de interrupção pretendido causará cursor para navegar para o correspon- ding local no código-fonte. Mi kr oel ekt . CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente Breakpoints Janela A janela de Breakpoints gerencia a lista de atualmente definido pontos de interrupção no projeto. pelo seu nome de identificação (Nome da variável de montagem). Há duas maneiras de adicionar variáveis / registar-se para a lista de observação: pelo seu verdadeiro nome (nome da variável no código "C"). selecione Ver > Debug Windows > Assista no menu drop-down menu. O relógio apresenta janela de variáveis e registradores do MCU. Para mostrar a Janela de Inspeção.

ronika .Soluções de software e hardware para o mundo embutido 93 .

Botão Remover tudo remove todas as variáveis. Você também pode expandir / recolher variáveis complexas. Além disso. binária ou de caracteres. basta selecionar a variável que você deseja remover e clique no botão Remover. Duplo clicando em uma variável ou clicando no botão Propriedades abre Edit Value janela na qual você pode atribuir um novo valor para o selecionado variável / register. Os valores são atualizados à medida que avançar a simulação.. variáveis de tipo struct. Todas as representações. Para a representação assinada clique na caixa de seleção ao lado o Assinado etiqueta. exceto float são assinados por padrão. float. ou seja. itens alterados recentemente são de cor vermelha. cordas . Adicionar Tudo Button agrega todas as variáveis.. hexadecimal.CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente As variáveis também podem ser retirados a janela Watch. você pode escolher o formato da variável / register representação entre decimal. 94 .

Mikroelektroni ka .Software e hardware SOLUÇÕES PARA mundo embutido .

Ver > Depurar Windows > Ver RAM. . A Janela de RAM Vista exibe o mapa de memória RAM PIC. Exibir janela RAM Depurador Ver RAM janela está disponível a partir do menu drop-down. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente O valor de um item também pode ser alterada pelo campo item clicando duas vezes o valor e digitar o novo valor diretamente. Mikroelektronika .Soluções de software e hardware para o mundo embutido 95 . com mudou recentemente itens de cor vermelha.

apenas fornece uma simulação. 96 Mikroelektronika . que será recalculado - Os valores finais para a última frequência especificada. Delta representa o número de ciclos entre as linhas de ação onde o Software Simulador começou e terminou.Soluções de software e hardware para o mundo embutido .CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente Cronômetro Janela O Software Simulador de Cronômetro janela está disponível a partir do menu drop-down. Nota: O usuário pode alterar o relógio na janela cronômetro. Ver > Debug Windows > Cronômetro. A janela exibe um cronômetro contagem atual de ciclos de tempo desde a última Soft ação Simulator ware. Mudando o relógio no cronômetro Janela não afeta as configurações de projeto real . Cronômetro mede o tempo de execução (número de ciclos) partir do momento em Software Simulator já começou e pode ser redefinido a qualquer momento.

Step Out Executar todas as demais instruções do [Ctrl + F8] rotina atual. Tópicos Relacionados: Executar Menu Debug Barra Mikroelektronika . chamada nicotina.Executar menu. selecione Executar > Veja os pontos de interrupção no menu drop-downtodas as instruções entre os actuais Corra para cur. [F6] Pausar Depurador Parar Stop Simulador de Software. [Ctrl + F2] Depurador Alternar ponto de interrupção na posição do Toggle cursor atual [F5] Breakpoints posição. Clicando duas do vezes em um item da [F4] sor instrução e posição cursor. o retorno e depois parar. Ruptur a- Execute o atual C (simples ou multi-ciclo) Janela Lista de pontos localiza o ponto de Step Into instrução. entra na rotina e parar na primeira instrução Execute oseguinte à chamada.Soluções de software e hardware para o mundo embutido 97 . e então pare. [F9] Depurador ntas Executar / Ícone Executar ou pausar Software Simulator. [F7] interrupção. Para visualizar todos os pontos de interrupç ão. e então pare. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente SIMULADOR DE OPÇÕES DE SOFTWARE Nome Descrição Função Barra Key de Início ferrame Simulador de Software Iniciar. atual C (simples ou Step Over [F8] multi-ciclo) instrução. Se a instrução é um rou.

\ mikroC PRO para PIC \ usa \ pasta. Recompile o projeto..CAPÍTULO 2 Meio mikroC PRO para PIC Ambiente CRIANDO NOVOS BIBLIOTECA mik roC PRO para PIC permite que você crie suas próprias bibliotecas. Este arquivo é colocado na pasta compilador Defs: Letra_da_unidade: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ Defs \ e é chamado MCU_NAME. por exemplo 16F887. 4. consulte Gerenciando arquivos de origem 2. Adicionar __Lib_Example arquivo em algum projeto. 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 família de microcontroladores PIC16 o arquivo deve ser salvo na pasta P16. Abra o arquivo de definição para o MCU que você deseja usar. Isto irá construir bibliotecas em uma forma comum que irá funcionar com todos os MCUs. então você deve ir para Ferramentas > Opções > Saída configurações e verificar Construir todos os arquivos como a biblioteca caixa. então biblioteca será construída para MCU selecionado.mlk. Escreva um código para a sua biblioteca e salvá-lo. Se você está criando biblioteca para a família PIC18 MCUs o arquivo deve ser salvo em fodler P18. 6.. Tenha em mente que o compilador apresentará um erro se uma biblioteca construída de MCU específico é utilizadas para outra. Adicione o segmento de código a seguir <LIBRARIES> nó da definição arquivo (arquivo de definição está no formato XML): <LIB> <alias> Example_Library </ Alias> <FILE> __Lib_Example </ File> <Type> REGULAR </ Tipo> . Se você estiver criando biblioteca para famílias PIC16 e PIC18 MCUs o arquivo deve ser salvo em ambas as pastas. Se você quiser usar esta biblioteca para todos os MCUs. 3. A fim de criar um biblioteca em mik roC PRO para PIC siga os passos abaixo: 1. 5. Se isso caixa não estiver marcada.mcl deve aparec em em .mlk 7. Compil ad o arquivo __Lib_Example. consulte Project Manager. Criar um novo arquivo de origem C.

Soluções de software e hardware para o mundo embutido .98 Mikroelektronika .

Note-se que estas duas bibliotecas têm a mesma Biblioteca Alias (UART) em ambos os mlk arquivos. Adicionar Biblioteca para mlk arquivo para cada MCU que você deseja usar com sua biblioteca. Tópicos relacionados: Library Manager. duas diferentes versões UA RT Biblioteca foram feitas. Assim. Clique no botão Atualizar no Gerenciador de bibliotecas 10. consulte mlk arquivos para estes dois MCUs. 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 . Mcl arquivo. 9. Por exemplo biblioteca UART para 16F887 é diferente da UART biblioteca para 18F4520 MCU. Esta abordagem permite que você tenha uma representação idêntica de UART biblioteca para os MCUs em Library Manager. Gerente de Projetos. CAPÍTULO 2 mikroC PRO para PIC Meio Ambiente </ LIB> 8. Biblioteca de várias versões Biblioteca Alias representa o nome original que está vinculada a Biblioteca correspondente . Example_Library deve aparecer na janela do gerenciador de biblioteca.

99 .

Soluções de software e hardware para o mundo embutido .CAPÍTULO 2 Meio Ambiente mikroC PRO para PIC 100 Mikroelektronika .

CAPÍTULO 3
MIKROICD (IN-CIRCUIT
Depurador)

mikroICD é um instrumento extremamente eficaz para depuração em Tempo-Real em nível de
hardware. CID
depurador permite que você execute um mik roC PRO para PIC programa em um host PIC
valores das variáveis do microcontrolador e ver, Registros de Função Especial (SFR), nota-
ry e EEPROM conforme o programa está sendo executado.

101

CAPÍTULO 3
mikroICD mikroC PRO para PIC

Passo n º 1

Se você tiver de hardware e software adequados para o uso mikroICD, então, a com -
clusão de escrever seu programa, você terá que escolher CID Debug tipo de compilação.

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 opções disponíveis:
Step Into, Step Over, Run to Cursor, etc linha que está a ser executada é a cores de alta
iluminados (azul por padrão). Há também a notificação sobre a execução do programa e
pode ser encontrada em Janela de Inspeção (barra de status amarela). Note que algumas
funções recebem
tempo para executar, de modo execução do programa é indicado no Janela de Inspeção.

102 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 3
mikroC PRO para PIC mikroICD

Mikro ele ktro nik a - Soluções de softwar e e hardwar e para o mundo embuti do 103

CAPÍTULO 3
mikroICD mikroC PRO para PIC

mikroICD Debugger Options

Nome Descrição Função chave

Depurar Depurador Iniciar. [F9]
Executar /
Executar ou pausar Debugger. [F6]
Pausar
Depurador
Alternar ponto de interrupção na posição atual
Toggle do cursor- [F5]
Breakpoints ção. Para visualizar todos os pontos de
interrupção, selecione Executar>
Ver os pontos de interr upç ão no menu
drop- dow n.todas as instruções entre a corrente
Executar
Executar até o Clicando duas vezes em um item da [F4]
instrução e posição do cursor.
cursor
Interrupção
Janela
ExecuteLista localiza
o atual o pontooudemulti-ciclo)
C (simples interrupção.
Step Into instrução, e então pare. Se a instrução é 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 instrução, e então pare. Se a instrução é um rou- [F8]
chamada tine, ignorá-l o e parar na primeir a
instruç ão
após
RAM a chamada.
PIC Flush atual. Todas as variáveis
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 - Soluções de software e hardware para o mundo embutido

CAPÍTULO 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. Nós iremos mostrar como funciona mikroICD
usando este
exemplo:

/ / Conexões do módulo 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 conexões do módulo 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 - Soluções de softwar e e hardwar e para o mundo embuti do 105

CAPÍTULO 3
mikroICD mikroC PRO para PIC

Passo n º 2

Após a compilação bem-sucedida e pressione programação PIC F9 para iniciar mikroICD.
Após mikroICD inicialização linha ativa azul deve aparecer:

Passo n º 3

Vamos depurar linha por linha do programa. Pressionando F8 estamos executando código linha
por linha.
É recomendável que o usuário não usa Step Into [F7] e Step Over [F8] mais
Atrasos rotinas e rotinas contendo os atrasos. Ao invés disso use Run para o cursor [F4] e
funções Breakpoints.
Todas as alterações são lidos a partir PIC e carregado na Janela de Inspeção. Note-se que
PORTB,
TRISB, Ansel e ANSELH mudou seus valores. 255-0.

106 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 3
mikroC PRO para PIC mikroICD

Passo n º 4

Step Into [F7] e Step Over [F8] são mikroICD funções depurador são usados
no modo de pisar. Há também em Tempo Real modo suportado pelo mikroICD. Funções
que são usados em Tempo-Real modo são Run / Pause Debugger [F6] e correr para o cursor
[F4]. Pressionando F4 vai para a linha selecionada pelo usuário. Utilizador apenas tem que
seleccionar a linha com
cursor e pressione F4, eo código será executado até que a linha selecionada é atingida.

Passo n º 5

Run (Pausa) Debugger [F6] e Breakpoints Toggle [F5] são mikroICD funções depurador
que são usados no modo em Tempo Real. Pressionando F5 marcas da linha selecionada pelo
usuário para a interrupção.
F6 executa o código até o ponto de interrupção é atingido. Depois de alcançar ponto de
interrupção depurador pára.
Aqui no nosso exemplo, vamos usar pontos de interrupção 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
função seja alcanç a do.
Depois de alcançar ponto de interrupção que deve pressionar F6 novamente para continuar a
execução do programa.

Mikro
elektr
onika
-
Soluç
ões
de
softw
are e
hardw
are
para
o
mund

o embuti do

107

CAPÍTULO 3
mikroICD mikroC PRO para PIC

Breakpoints foi separada em dois grupos. Há hardware e software
pontos de quebra. rápida interrupção de hardware são colocados em PIC e eles fornecem
depuração. Número de pontos de interrupção de hardware é limitado (1 para P16 e 1 ou 3 para
o P18). Se
todos brekpoints hardware são usados, os pontos de interrupção em seguida, que serão
utilizados são softwares
ponto de interrupção. Os pontos de interrupção são colocados dentro mikroICD, e eles simulam
hard-
breakpoints ware. interrupção de software é muito mais lento do que hardware break -
pontos. Esta diferença entre as diferenças de hardware e software não são visíveis
mikroICD em software, mas os seus horários diferentes são bastante notável, por isso é
importante
saber que há dois tipos de pontos de interrupção.
108

Mikroelektroni
ka - Soluções
de software e
hardware para
o mundo
embutido

CAPÍTULO 3
mikroC PRO para PIC mikroICD

mikroICD (In-Circuit Debugger) Visão

Breakpoints Janela

A janela de Breakpoints gerencia a lista de pontos de interrupção definidos atualmente no
projeto.
Doubleclicking o ponto de interrupção pretendido causará cursor para navegar para o
correspon-
ding local no código-fonte.

Mikro ele ktro nik a - Soluções de softwar e e hardwar e para o mundo embuti do 109

CAPÍTULO 3
mikroICD mikroC PRO para PIC

Janela de Inspeção

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 inspeção,
selecione
Ver > Debug Windows > Janela de Inspeção a partir do menu drop-down.

O relógio apresenta janela de variáveis e registradores do PIC, com os respectivos endereços e
valores. Os valores são atualizados à medida que avançar a simulação. Use o drop-down
menu para adicionar e remover os itens que você deseja monitorar. Recentemente mudou
itens são de cor vermelha.

110 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 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 variável selecionada / register. Além disso, você pode mudar a visão em
hexadecimal, binário,
char, ou decimal para o item selecionado.

EEPROM Janela de Inspeção

mikroICD EEPROM Watch Janela está disponível a partir do menu drop-down, Ver >
Debug Windows > Ver EEPROM.
O EEPROM janela Watch mostra os valores atuais inscritos na PIC interna
Memória EEPROM. Existem dois botões de ação relativa EEPROM Watch ganha-
Dow - Escreve EEPROM e Leia EEPROM. Escreve EEPROM grava dados de
EEPROM janela Watch em memória EEPROM interna do PIC. Leia EEPROM lê
dados de PIC de memória 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

CAPÍTULO 3
mikroICD mikroC PRO para PIC

Código Janela de Inspeção

mikroICD Código Janela de Inspeção está disponível no menu drop-down menu, Ver >
Debug Windows > Exibir Código.

O Código de janela de inspeção de código mostra (código hexadecimal) escrito em PIC. Não há
ação
botão sobre Código janela Watch - Código de leitura. Código de leitura lê o código de
PIC e carrega-lo em View Code Window.
Além disso, você pode definir um escopo de endereço no qual o código hexadecimal será lido.

112 Mikroelektronika - Soluções de software e hardware para o mundo embutido

Mikro ele ktro nik a . Tentando depurar PIC com mikroICD enquanto Power Up Timer é habilitado. A RAM Windows Vista exibe o mapa de memória RAM PIC. Ver > Depurar Windows > Ver RAM. Não é possível forçar o Código de Proteção ao tentar depurar PIC com mikroICD.Soluções de softwar e e hardwar e para o mundo embuti do 113 . Tentando depurar PIC com mikroICD com resistores pull-up definido como ON RB6 e RB7. com mudou recentemente itens de cor vermelha. CAPÍTULO 3 mikroC PRO para PIC mikroICD Ver Memória RAM Depurador Ver RAM janela está disponível a partir do menu drop-down. Para corrigir mikroICD depuração não usa pull-ups. Tentando depurar PIC com mikroICD enquanto Watch Dog Timer está habilitado. Tentando depurar o código do programa que mudou não foi compilado e pro gramada em PIC. Tentando depurar Lançamento construir versão Type do programa. Erros comuns Tentando PIC mikroICD programa enquanto estiver ativa. Tentando selecionar linha que é vazia de Run para o cursor [F4] e Breakpoints Toggle [F5] funções.

CAPÍTULO 3 mikroICD mikroC PRO para PIC MIKROICD ADVANCED BREAKPOINTS mikroICD prevê a possibilidade de utilizar os pontos de interrupção avançada. Nota: Quando Advanced Breakpoints são habilitados mikroICD opera em Tempo -Real modo. Advanced Breakepoints pode ser reativado sem reiniciar mikroICD.Soluções de software e hardware para o mundo embutido . Se for necessário. por isso vai apoiar apenas no seguinte conjunto de comandos: Iniciar o depurador [F9]. 114 Mikroelektronika . iniciar mikroICD [F9] e selecione Ver > Depurar Windows > Advanced Breakpoints opção no menu drop-down ou utilize [Ctrl + Shift + A] atalho. Execute o depurador Pausa / [F6] e Parar Debugger [Ctrl + F2]. Para habilitar avançada Break points definir a opção Advanced Breakpoints dentro da janela Watch: Para configurar o Advanced Breakpoints. Avançado Breakpoints podem ser usados com PIC18 MCUs e PIC18FJ. Uma vez que o avançad o Ponto de interrupção é atingido. Nota: Número de pontos de interrupção avançada é igual ao número de Hardware -break pontos e que depende de MCU utilizado. o recurso Advanced Breakpoints podem ser desativadas e mikroICD depuração pode ser continuado com conjunto completo de comandos.

Por causa do PIC pipelining exe programa mecanismo de cução pode parar um ou duas instruções após o endereço digitado no endereço de campo. Nota: Quebra de memória do programa pode usar a opção Passcount. para todos os contadores passcount avançada Breakpoints será apagado. CAPÍTULO 3 mikroC PRO para PIC mikroICD Programa de Ruptura de Memória Memória do Programa Break é usado para definir o ponto de interrupção Avançado para específico endereço na memória do programa. Por causa do PIC pipelining exe programa mecanismo de cução pode parar de instruções de um ou dois após o endereço inserido no Endereço de campo. o Arquivo Registre Igualdade opção pode ser usada para definir o valor correspondente. Quando alguns avançada Breakpoint interrompe a execução do programa. Os valores inscritos no Endereço e Valor campos devem ser em formato hexagonal. Nota: Quebra de memória do programa pode usar a opção Passcount. Nota: Arquivo Registre-Break também pode usar a opção Passcount da mesma forma como Memória do Programa Break. O programa de execu- ção irá parar quando o endereço do programa é especificado chegou o tempo N-ésima onde N é o número de inscritos no Passcount de campo. O programa de execu- ção irá parar quando o endereço do programa especificado é atingido durante o tempo N-ésima onde N é o número de inscritos no Passcount de campo. Quando alguns avançada Breakpoint interrompe a execução do programa. . O programa de execu- ção será interrompido quando o valor lido a partir da localização de memória de dados especificado é igual ao número escrito no Valor de campo. para todos os contadores passcount avançada Breakpoints será apagado. Arquivo Registre-Break Arquivo Registre-Break pode ser usado para interromper a execução de código quando acesso leitura / gravação para o local específico da memória de dados ocorre. O valor informado no campo de endereço deve ser em formato hexagonal. Se Acesso de leitura é selecionado. Valor inscrito no Endereço campo deve ser em formato hexagonal. Programa de Ruptura de Memória Memória do Programa Break é usado para definir o ponto de interrupção avançada para o específico endereço na memória do programa.

Soluções de softwar e e hardwar e para o mundo embuti do 115 .Mikro ele ktro nik a .

Para usar o cronômetro define estes dois pontos de interrupção e verificar o Habilitar Cronômetro checkbox. Ruptura no sono: pausa na instrução SLEEP. Caso contrário. Caso contrário. a execução do programa vai parar na Breakpoint # 3. instrução SLEEP não será executados. o cronômetro será apagada antes continuando a execução do programa e à contagem próximo vai começar do zero. a contagem próximo terá início a partir do valor anterior Cronómetro 116 . Outros - sábio. a execução do programa vai parar na Breakpoint # 2. Breakpoint # 3 será usado somente para parar o cronômetro. Se você optar por continuar a depuração mikroICD [F6] em seguida. Ruptura em Watchdog Timer: não implementado. Breakpoint # 2 será usado somente para iniciar o cronómetro. Cronômetro 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. Parado em Parar Condição (Breakpoint # 3): quando marcada. Reset Cronómetro na Run: quando marcada.CAPÍTULO 3 mikroICD mikroC PRO para PIC Emulador de Recursos Evento Breakpoints Ruptura em Underflow / Stack Overflow: não implementado. opções de cronômetro: Parado na condição de início Parado em Iniciar Condição (Breakpoint # 2): quando marcada. o pró- grama de execução terá início a partir da primeira instrução após a instrução SLEEP.

Mikroelektroni ka .Softwares e soluções de hardware para Embedded World .

Globals e constantes predefinidas .PIC Ponteiros Directivas Linker - .Acessando bits individuais .Built-in Rotinas .Interrompe .Memória especificadores de tipo 117 .Otimização de Código .Questões ANSI Standard . CAPÍTULO 4 mikroC PRO para PIC Especificidades Os tópicos a seguir abordam as especificidades da mikroC PRO compilador para PIC: .

SOFTWARESOFTWAREHARDWAREHA RDWA RE SOLUTIONSEMBEDDEDE MBEDDED MUNDO .dados . ou sonda o Assistente de código para letras específicas (Ctrl + Espaço no editor de código). e são visíveis na projeto inteiro. procure "Defs" na mik roC PRO para PIC pasta de instalação. o mik roC PRO para PIC imple- mentos uma série de variáveis globais e constantes predefinidas. Ao criar um projeto. contendo declarações de disponíveis Registos SFR e constantes. o mik roC PRO para PIC incluirá uma adequada (*) arquivo da pasta defs.em .CAPÍTULO 4 Especificidade mikroC PRO para PIC s Problemas ANSI Standard Divergência em relação ao padrão ANSI C .sfr Tópicos relacionados: Palavras-chave.sbit .rx . PIC específicas Globals e constantes predefinidas Para facilitar a programação dos PIC MCUs conformes. Para um conjunto completo de variáveis globais e constantes predefinidas.Tentativa declarações não são suportados. Estes identificadores possuem uma ligação externa. E E SOLUÇÕES PARA PARA MUNDIAL Mikroelektro nika . Todos os PIC Registos SFR e seus pedaços estão implicitamente declarados como variáveis globais.bit . Idioma Exstensions C mik roC PRO para PIC tem conjunto adicional de palavras-chave que não pertencem ao o ANSI Palavras-chave linguagem padrão C: .código . 118 .

Bits Acesso Individual A mik roC PRO para PIC permite que você acesse os bits individuais de variáveis de 8 bits. ..F5 = 1. F7. # Endif A segunda é __FOSC__ valor da freqüência (em kHz) para os quais o projeto . Estes define se baseiam em valores que você digitou / editado no projeto atual: .. . seguido por um dos identificadores B0. # Endif um quarto é para identificar a versão de compilação. . B1. . se desejar construir uma versão Sion é de 142.) Com uma variável. 16F887 token será definida como 1. 119 .. F1. A terceira é para a identificação mik roC PRO para PIC compilador: # Ifdef __MIKROC_PRO_FOR_PIC__ . Além disso.. CAPÍTULO 4 mikroC PRO para PIC Especificidad es nível de projectos predefinidos define Existem quatro níveis pré-projeto define... para qualquer projeto que você faz. se 16F887 é dispositivo selecionado. # Endif O usuário pode definir nível de projeto personalizado define.. você pode simplesmente usar o seletor de membro direto (. é construído. Por exemplo. Primeiro um é igual ao nome do dispositivo selecionado para o projeto ou seja.. B7. você pode acessar bits pelo nome: / / Bit Clear Global Interrupt (GIE) GIE_bit = 0.. com F7 sendo o mais sig- pouco significativa: / / 0 em pouco claras registo INTCON INTCON. . ou F0. em seguida.. É também suporta tipos de dados e pouco sbit Acessar Bits individuais de Variáveis Se você estiver familiarizado com um MCU particular. / / Bit Conjunto 5 em ADCON0 registo ADCON0. então ele pode ser usado para compilação condicional: # Ifdef P16F887 .B0 = 0. o usuário deve colocar isso no seu código: # If __MIKROC_PRO_FOR_PIC_BUILD__ == 142 .

Mikroelektro nika - Software e Soluções de hardware para Embedded World . 119 .

sbit bit_name em R <port-letter> _bit <bit-position>.F0. Você pode acessá-los da seguinte forma: sbit LEDA em PORTA. Não pode ser usado para lista de argumentos e valores de retorno de função. sbit LEDB em PORTB. Iden- tifiers B0-B7 não são sensíveis e têm um espaço específico.F.CAPÍTULO 4 Especificidade mikroC PRO para PIC s Não há necessidade de qualquer declaração especial. / / Inválido 120 . use o bit campos. sbit bit_name em TRIS <port-letter> _bit <bit-position>. Você pode sobre- montá-los com seus próprios membros B0-B7 dentro de qualquer estrutura dada. / / Se você estiver familiarizado com um MCU em particular e os seus portos e di- registros do Regulamento (TRIS). tipo sbit A mik roC PRO para PIC compilador tem sbit tipo de dados que oferece acesso a bits SFR endereçável. evitar este estilo de acessar bits individuais. / / Inválido Uma matriz do tipo bit não é válido: bit arr [5]. / / Variável de bit / Não existem ponteiros para variáveis de bits: bit * Ptr. Este tipo de acesso seletivo é um característica intrínseca de mik roC PRO para PIC e pode ser usado em qualquer lugar do código. bit bf.B0. Veja Globals e constantes predefinidas para obter mais informações sobre nomes de registo / bit. tipo bit A mik roC PRO para PIC compilador fornece um pouco o tipo de dados que podem ser utilizados para vari- declarações capaz. você pode acessar bits por seus nomes: sbit LEdC em RC0_bit. sbit bit_name em <bit-position> SFR-name.B SFR. Nota: Se visando a portabilidade. sbit TRISC0 em TRISC0_bit. sbit bit_name em <bit-position> name.

Soluções de software e hardware para o mundo embutido .Mikroelektroni ka .

CAPÍTULO 4
mikroC PRO para PIC Especificidad
es

Nota:

- Variáveis Bit não pode ser inicializado.
- Bit variáveis não podem ser membros de estruturas e de sindicatos.
- Variáveis Bit não têm endereços, portanto operador unário & (endereço) não é
aplicáveis a essas variáveis.

Temas relacionados: Campos de bits, globais e constantes predefinidas

Interrupções

Interrupções podem ser facilmente manipulados por meio da palavra reservada interrupção.
mik roC
PRO para PIC implictly declara função interrupção que não pode ser declarado novamente.
Sua
protótipo é:

vazio interrupção (void);

Para P18 baixo priorty interrompe palavra reservada é interrupt_low:

vazio interrupt_low (void);

Está prevista para escrever sua própria definição (corpo da função) para lidar com interrupções
em
sua aplicação.

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

- Família PIC12: W, STATUS, FSR, PCLATH
- Família PIC16: W, STATUS, FSR, PCLATH
- Família PIC18: FSR (Contexto de rápido é usado para salvar WREG, BSR STATUS)

Use o # Pragma disablecontexsaving para instruir o compilador para automatica-
ly executar contexto de mudança. Isto significa que não regiser será salvo / restaurado
o compilador de entrada / saída da rotina de interrupção do serviço. Isso permite que o usuário
manualmente escrever código para salvar registros em cima da entrada e para restaurar -los
antes
saída da interrupção.

Mikr
oele
ktro
nika
-
Solu
ções
de
soft

ware e hardware para o mundo embutido

121

CAPÍTULO 4
Especificidade mikroC PRO para PIC
s
prioridade P18 interrompe

Nota: Para a família P18 tanto interrompe alta e baixa são suportados.

1. função com o nome interrupção será vinculado como ISR (rotina de serviço de
interrupção)
para o elevado nível de interrupção
2. função com o nome interrupt_low será vinculados como ISR para baixo nível inter
rupt_low

Se a função prioritária de interrupção é para ser usado, então o usuário deve definir a SFR
adequado
bits para habilitá-lo. Para mais informações consultar os dados para o dispositivo específico.

Chamadas de função de interrupção

Chamando funções a partir do (interrupção) de rotina é agora possível. O compilador
se preocupa com os registros a ser utilizado, tanto na "interrupção" e, em thread "main",
e executa "inteligentes" contexto de alternância entre os dois, poupando apenas os registros
que tenham sido usado em ambos reentrância funções threads.Check.

Exemplos de interrupção

Aqui está um exemplo simples de lidar com as interrupções de TMR0 (Se não houver outras
interrupções
são permitidos):

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

Em caso de múltiplas interrupções ativadas, você precisará testar qual das interrupções
ocorreu e, em seguida, prosseguir com o código apropriado (tratamento de interrupções):

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

122 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 4
mikroC PRO para PIC Especificidad
es

Linker directivas

O mikroC PRO usa um algoritmo interno para distribuir objetos na memória. Se
você precisa ter uma variável ou rotina pré-definida no endereço específico, use o link
directivas er absoluta e org.

Directiva absoluta

Directiva absoluta especifica o endereço inicial na memória RAM para uma variável. Se a vari -
poder é multi-byte, bytes maior será armazenado nos locais consecutivos.

Directiva absoluta é anexado à declaração de uma variável:

curto x absoluta 0x22;
/ / Variável x vai ocupar 1 byte no endereço 0x22

int y absoluta 0x23;
/ / Variável y ocupará 2 bytes em endereços 0x23 e 0x24

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

char i absoluta 0x33;
/ / Variável i vai ocupar 1 byte no endereço 0x33

tempo jjjj absoluta 0x30;
/ / Variável ocupará 4 bytes de 0x30, 0x31, 0x32, 0x33, assim,
/ / Mudando mudanças i byte mais alto jjjj, ao mesmo tempo, e vice-versa

org Directiva

Directiva org especifica um endereço a partir de uma rotina em ROM.

Directiva org é anexado à definição da função. Directivas para defin não-
declarações ING vai ser ignorado, com um aviso adequado, emitido pelo vinculador.

Aqui está um exemplo simples:

vazio func (int par) org 0x200 {
/ / Função terá início no endereço 0x200
nop asm;
}

É possível usar org directiva com as funções que são definidos externamente (como
biblioteca de funções). Basta adicionar org directiva funcionar declaração:

Mikroelektronika - Soluções de software e hardware para o mundo embutido 123

CAPÍTULO 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 usuário quer colocar suas rotinas, constantes, etc, além de um endereço 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 tópicos: chamadas indiretas Função

Solicita função indireta

Se o linker encontra uma chamada de função indireta (através de um ponteiro para função), ele
assume
que qualquer um dos endereços funções 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 funções podem ser chamados indiretamente da função atual:

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

A pragma correspondente deve ser colocado no módulo de origem onde a função
nome_da_função é implementada. Este módulo também deve incluir declarações de todos os
funcio-
ções constantes do called_func lista.

Estas funções serão ligados, se a função nome_da_função é chamado no código não-mat
ter se algum deles foi chamado ou não.

Nota: O # Pragma Funcall directiva pode ajudar o vinculador a função de otimizar o quadr o
alocação no compilados pilha.

Tópicos relacionados: Linker directivas

124 Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido

CAPÍTULO 4
mikroC PRO para PIC Especificidad
es

Criada em Rotinas

mik roC PRO para PIC compilador fornece um conjunto de úteis built-utilidade em funções. Built-in funções
não
não requer qualquer cabeçalho arquivos a serem incluídos, você pode usá-los em qualquer parte do seu
projeto.

Criada em rotinas são implementadas como "Inline", ou seja, o código é gerado no local da chamada, de
modo que o
chamad a não imputad os o limite de chamadas aninhadas. As únicas exceções são Vdelay_ms, Delay_Cyc
e Get_Fosc_kHz que são rotinas C real.

Nota: Lo, Hi, Ensino Superior e Maior funções não estão implementadas no compilador mais. Se você
quero usar estas funções 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

Protótipo unsigned short Lo (longa número);

Retorna Retorna o menor de 8 bits (byte) de número, os bits 0 .. 7.

Função retorna o byte de menor número. Função não interpreta bit pat-
nhece o número - ele simplesmente devolve 8 bits como os encontrados em
Descrição
registo.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
não conta contra o limite de chamadas aninhadas.
Requer Os argume ntos devem ser variáv el do tipo escalar (isto é, aritméti c a Tipos e
ponteir os) .
d = 0x1AC30F4;
Exemplo
tmp = Lo (d) / / Igual 0xF4

CAPÍTULO 4
Especificidades mikroC PRO para PIC

Oi
Protótipo unsigned short Oi (long número);

Retorna Retorna junto ao menor de bytes de número, os bits 8 .. 15.

A função retorna ao lado do byte mais alto de número. A função não interpretar
padrões de bits de número - ele simplesmente devolve 8 bits como os
Descrição
encontrados em registo.

Este é um "Inline" rotina, o código é gerado no local da chamada, assim chamada

Requer a argume ntos devem ser variáv el do tipo escalar (isto é, aritméti c a Tipos e
Os
não conta
ponteir os) . contra o limite de chamadas aninhadas.
d = 0x1AC30F4;
Exemplo
tmp = Hi (d); / / 0x30 Equals

Superior
Protótipo unsigned short Superior (long número);

Retorna Retorna ao lado do byte mais alto de número, os bits 16 .. 23.

Função retorna o byte mais alto de número. Função não interpreta bit pat-
nhece o número - ele simplesmente devolve 8 bits como os encontrados em
Descrição
registo.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
não conta contra o limite de chamadas aninhadas.
Requer Os argume ntos devem ser variáv el do tipo escalar (isto é, aritméti c a Tipos e
ponteir os) .
d = 0x1AC30F4;
Exemplo
tmp = Superior (d) / / Igual 0xAC

126 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 4
mikroC PRO para PIC Especificidad
es
Maior
Protótipo unsigned short Mais alto (long número);

Retorna Retorna o byte mais alto de número, os bits 24 .. 31.

A função retorna ao lado do byte mais alto de número. A função não interpretar
padrões de bits de número - ele simplesmente devolve 8 bits como os
Descrição
encontrados em registo.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
não conta contra o limite de chamadas aninhadas.
Requer Os argume ntos devem ser variáv el do tipo escalar (isto é, aritméti c a Tipos e
ponteir os) .
d = 0x1AC30F4;
Exemplo
Maior tmp = (d); / / 0x01 Equals

Delay_us
Protótipo vazio Delay_us (const time_in_us);

Retorna Nada.

Cria um atraso de software no período de time_in_us microssegundos (uma constante).
Faixa de aplicáveis constantes depende da freqüência do oscilador.
Descrição
Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
não conta contra o limite de chamadas aninhad as . Esta rotina gera loops
aninhados
uso de registros R13, R12, R11 e R10. O número 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 SOLUÇÕES PARA mundo embutido 127

CAPÍTULO 4
Especificidades mikroC PRO para PIC

Delay_ms
Protótipo vazio Delay_ms (const time_in_ms);

Retorna Nada.

Cria um atraso de software no período de time_in_ms milissegundos (uma constante).
Faixa de constantes aplicável depende da freqüência do oscilador.
Descrição
Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
não conta contra o limite de chamadas aninhad as . Esta rotina gera loops
aninhados
uso de registros R13, R12, R11 e R10. O número 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
Protótipo vazio Vdelay_ms (unsigned time_in_ms);

Retorna Nada.

Cria um atraso de software no período de time_in_ms milissegundos (uma variável).
atraso gerado não é tão preciso quanto o atraso criado por Delay_ms.
Descrição
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 tópico por uma questão de conveniência.

Requer Nada.

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

128 Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo

CAPÍTULO 4
mikroC PRO para PIC Especificidad
es
Delay_Cyc
Protótipo vazio Delay_Cyc (char Cycles_div_by_10);

Retorna Nada.

Cria um atras o baseado no relógio MCU. Atraso dura 10 vezes o param- e ntr ada
eter em ciclos MCU.
Descrição
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 tópico por uma questão de conveniência. Há limitações 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
Protótipo não assinado Clock_Khz (void);

Retorna relógio do dispositivo em KHz, arredondado para o número inteiro mais próximo.

Função relógio do dispositivo retorna em KHz, arredondado para o inteiro mais
Descrição próximo.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
não conta contra o limite de chamadas aninhadas.
Requer Nada.

Exemplo clk = Clock_Khz ();

Mikroelektronika - Soluções de software e hardware para o mundo embutido 129

CAPÍTULO 4
Especificidades mikroC PRO para PIC

Clock_Mhz
Protótipo unsigned short Clock_Mhz (void);

Retorna Dispositivo clock em MHz, arredondado para o número inteiro mais próximo.

Função relógio do dispositivo retorna em MHz, arredondado para o número
Descrição inteiro mais próximo.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a
Requer não contam contra a chamada aninhadas limite.
Nada.
Exemplo clk = Clock_Mhz ();

Get_Fosc_kHz
Protótipo unsigned long Get_Fosc_kHz (void);

Retorna relógio do dispositivo em KHz, arredondado para o número inteiro mais próximo.

Função relógio do dispositivo retorna em KHz, arredondado para o inteiro.
Descrição
Note-se que Get_Fosc_kHz é uma função da biblioteca, em vez de um built-in de rotina, é

pre-
Requer Nada.
tantes neste tópico por uma questão de conveniência.
Exemplo clk = Clock_Khz ();

Otimização de Código

Optimizer foi adicionada para estender a utilização do compilador, reduzir a quantidade de código de gener-
acelerada e acelerar sua execução. As principais características são:

dobrar Constant

Todas as expressões que podem ser avaliados em tempo de compilação (ou sej a, são constantes) estão
sendo substituídos
pelos seus resultados. (3 + 5 -> 8);

constante de propagação

Quando um valor constante é sendo atribuído a uma determinada variável, o compilador reconhece isso e
substitui o uso da variável constante no código que segue, enquanto o valor de uma vari-
poder permanece inalterada.

130 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 4
mikroC PRO para PIC Especificidad
es

Copie propagação

O compilador reconhece que duas variáveis têm o mesmo valor e elimina um
deles ainda no código.

Valor numeração

O compilador "reconhece" se duas expressões produzem o mesmo resultado e não pode-
portanto eliminar o cálculo inteiro para um deles.

"Código Dead" eliminação

A trechos de código que não estão sendo usados em outras partes do programa não afetam
o resultado final da aplicação. Eles são automaticamente removidos.

alocação de pilha

registradores temporários ("Pilhas") estão sendo usados de forma mais racional, permitindo
COM MUITO
expressões complexas a ser avaliado com um mínimo consumo de pilha.

otimização vars locais

N variáveis locais estão sendo usados, se o seu resultado não afeta alguns dos globais ou
variáveis voláteis.

Melhor geração de código e otimização local

Código geração é mais consistente e mais atenção é pago para implementar es -
soluções específicos para o código "tijolos de construção" que reduzem ainda mais o tamanho
do código de saída.

Tópicos relacionados: especificidades PIC, mik roC PRO para PIC específicos, tipos específicos
de memória
Mikr
oele
ktro
nika
-
Solu
ções
de
soft
ware
e
hard
ware
para
o
mun
do
emb

utido

131

CAPÍTULO 4 Especificidades mikroC PRO para PIC 132 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

e seus impacto sobre a escrita de código. Este conhecimento não é essencial. 133 . mas pode fornecer uma melhor compreensão das CPIs ' capacidades e limitações. CAPÍTULO 5 PIC ESPECIFICOS A fim de obter o máximo de seu mik roC PRO para PIC compilador. você deve estar familiarizados com certos aspectos da PIC MCU.

Verifique reentrância funções. Quando se chega ao cálculo.8 chamadas para a família PIC12. Isto pode aumentar o tempo necessário para realizar mesmo operações simples. Número de reduções é especificada pelo número de funções chamadas a partir de inter- rupt. Limitações chamadas aninhadas chamada aninhadas representa uma chamada de função dentro do corpo da função. você deve saber que ALU PIC. por isso é compensado por um algoritmo de software. . Se o número permitido de chamadas aninhadas for excedido. o compilador apresentará um relatório de uma pilha overflow erro. . e como resultado. Número de chamadas aninhadas permitido diminui um. PIC pode engasgar com elas. Embora mik roC PRO para PIC é capaz de han- manuseio tipos de dados muito complexos. PIC18 família tem HW multiplicadores.8 chamadas para a família PIC16. se você usar qualquer uma das segui- ing operadores do código: / *%. chamadas de funções recursivas são suportados pelo mik roC PRO para PIC mas com limitações. chamadas de funções recursivas não podem conter qualquer função parâmetros e variáveis locais. devido à sua "Inline" implementação.CAPÍTULO 5 PIC mikroC PRO para PIC Especificidade s Tipos de Eficiência Primeiro de tudo. a família PIC16 carece de recursos de hardware para multi- ply dois bytes. a multiplicação de obras consideravelmente mais rápido. Isso diminui ainda mais se você usar as interrupções no programa. Note-se que alguns dos built-in rotinas não contam contra esse limite. devido às limitações do PIC de memória e pilha. Por exemplo. Ela se aplica a toda a programação em geral. especialmente se você estiver de trabalho ção em alguns dos modelos mais antigos. e duplamente com microcontroladores. . nem todos os microcontroladores PIC são de desempenho igual. é otimizado para trabalhar com bytes. conselhos Universal é a utilização de o menor possível tipo em cada situação. que realiza operações aritméticas. quer para si mesmo (recursivo chamadas) ou para outra função.31 chamadas para a família PIC18. Por outro lado. Conheça a sua ferramenta. mik roC PRO para PIC limita o número de não-recursivo chamadas aninhadas para: .

Soluções de software e hardware para o mundo embutido .134 Mikroelektronika .

Se você encontrar esse método é inadequado. Em vários locais no banco SFR. Nota: Se você tem muitas variáveis no código. se você pretende seguir esta abordagem. um "Legado" registro do PIC18 padrão SFR conjunto (como OSCCON. Nestes casos. nenhuma única rotina deve exceder uma página (2. etc Limites da abordagem indireta através da RSF Ponteiros com PIC16 são "Perto": eles carregam apenas abaixo de 8 bits do endereço. CAPÍTULO 5 mikroC PRO para PIC PIC Especificidades PIC18FxxJxx Especificidades Endereço SFR compartilhados mik roC PRO para PIC não fornece ajuste automático de bits para suplente acessando reg- Ister. um único endereço é usado para acessar os dois dife- ent registros de hardware. etc) as suas quotas de endereço com um suplente. Com - empilhadeira automaticamente limpar o bit 9 em cima da partida. reg- Ister. e restaurar a zero após a operação. ou com o novo dispositivo não os recursos incluídos na SFR PIC18 padrão mapa. com muitas variáveis. T1CON. Quando confrontar com este problema. Uma lista completa de endereços de registro compartilhado e os registos associados lhes é fornecido na ficha técnica. vinculador irá reportar um erro. tópicos relacionados: mik roC PRO para PIC especificidades . o usuário deve man- vamente definir a PIA. Estes registos alternativos estão associadas com opções de configuração avançada para os periféricos.000 instruções). de modo que os ponteiros vão se referir a bancos 0 e 1. estruturas e atribuições dos sindicatos. PIC16 Especificidades Quebrando Páginas Em aplicações orientadas para PIC16. Variáveis que são abordados apenas diretamente devem ser transferidos para 3 e 4 bancos para aumentar a eficiência. Se a rotina não cabe em uma página. Este é um novo recurso adicionado ao pic18fxxjxx família e será apoiado no futuro. talvez você devesse repensar o design do seu aplicativo . etc Nota: É muito importante cuidar do PIA corretamente. Para acessar os objetos em bancos de 2 ou 3 através de ponteiro. As regras se aplicam a declarou qualquer abordagem indireta: matrizes. tente reorganizá -las com o vinculador directiva absoluta. você pode considerar a atualização para PIC18.tente quebrar a rotina especial em vários pedaços.

Soluções de software e hardware para o mundo embutido 135 .Mikroelektronika .

/ / Coloca txt na memória do programa Exemplo const char código txt [] = "ENTER PARAMETER:".sfr especificadores de tipo de memória podem ser incluídas no declaração da variável. yNono entanto. como compilador usa o espaço para armaz e nar Rx Rx espaço Exemplo y rx sfr ári vari-tempor char. Por exemplo: data_buffer dados char / / coloca data_buffer nos dados ram const char código txt [] = "ENTER PARAMETER:" / / coloca o texto na memória do programa código Descrição A código tipo de memória pode ser usada para a atribuição constantes no programa memória. não haverá espaço suficiente para as variáveis do usuário em o espaço / / Coloca Rx. Descrição Nota: Na maioria dos casos. rx Este especificador de memória permite a variável a ser armazenado no espaço de Rx (arquivo Register). o variáveis. pode acontecer que as variáveis do usuário será armazenado na SRAM dados internos.Soluções complexos. Os especificadores seguintes tipos de memória podem ser usados: . ou implicitamente atribuído. incluindo um especificador de tipo de memória na declaração. 136 ao escrever Mikroelektronika programas . Coloca PORTG nos dados ram Exemplo dados sfr 0x65 PORTG unsigned short absoluta.CAPÍTULO 5 PIC Especificidades mikroC PRO para PIC TIPO DE MEMÓRIA especificadores A mik roC PRO para PIC suporta o uso de todas as áreas de memória. dados Descrição Este especifi c ador de memóri a é usado quando a variável que armaz e na os dados da / /SRAM interna.código .dados .rx . de software e hardware para o mundo embutido . Cada variável pode ser explicitamente atribuído a um espaço de memória específicos.

Soluções de software e hardware para o mundo embutido 137 . dados especificador será definir como padrão pelo compilador. funções Mikroelektronika . Tópicos relacionados: Acesso individual bits. rx Exemplo montagem. Nota: Se nenhum dos especificadores de memória são usadas quando se declara uma variável. CAPÍTULO 5 mikroC PRO para PIC PIC Especificidades sfr Este especificador de memória em combinação com (rx. dados) permite ao utilizador Descrição aceder es- cial registros função. Ele também instrui o compilador para manter mesmo identificador em C e sfr y char. constantes. SFR.

CAPÍTULO 5 PIC Especificidades mikroC PRO para PIC 138 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

. a semântica ea execução do mikroC PRO para a linguagem PIC. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem O mikroC PRO para PIC Language Reference descreve a sintaxe. O objectivo deste guia de referência é fornecer uma mais compreensível descrição do o mikroC PRO para PIC linguagem para o usuário.

139 .

Soluções de software e hardware para o mundo embutido .Elementos lexicais Espaços em branco Comentários Tokens Constantes Constantes Resumo Integer Constantes Floating Point Constantes Constantes de caracteres String Constantes Enumeração Constantes Constantes ponteiro Expressão constante Palavras-chave Identificadores Punctuators .Tipos Tipos Fundamentais Aritmética Tipos Enumerações Tipo Void Tipos derivados Matrizes Ponteiros Introdução aos Ponteiros Aritmética de ponteiro Estruturas Introdução às estruturas Trabalhando com Estruturas Estrutura de Acesso ao Portal Sindicatos Campos Bit Tipo Conversões Standard Conversões Typecasting Explicit 140 Mikroelektronika .Conceitos Objetos e lvalues Escopo e visibilidade Espaços de nome Duração .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC .

CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem .Operadores Introdução aos Operadores Operadores Precedência e Associatividade Operadores Aritméticos Os operadores relacionais Operadores bit a bit Lógico Opeartors Operadores Condicionais Operadores de Atribuição Operador sizeof .Expressões Introdução a Expressões Vírgula Expressões .Funções Introdução às Funções Chamadas de função e argumento de conversão .Declarações Introdução Rotulado Demonstrações Expressão Demonstrações Instruções de Seleção Se a Declaração Switch Declaração Instruções iteração (Loops) Enquanto a Declaração Do Declaração Para a declaração Ir Demonstrações Break e continue Goto Declaração Instrução Return Declarações compostas (blocos) Mikroelektronika . qualificação Especificador typedef ASM Declaração Inicialização .Declarações Introdução às declarações Linkage Classes de armazenamento Tipo.Soluções de software e hardware para o mundo embutido 141 .

Soluções de software e hardware para o mundo embutido .Preprocessor Introdução à pré-processador Preprocessor directivas Macros Inclusão de arquivos Preprocessor Operadores Compilação condicional 142 Mikroelektronika .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC .

Software e Soluções de hardware para Embedded World 143 . e int i. caracteres de nova linha e comentários. qualquer excedente espaços em branco são descartados. Os tokens no mik roC PRO para PIC são derivada de uma série de operações realizadas em seus programas pelo compilador e sua built-in pré-processador. Por exemplo. Mikroelektronika . duas seqüências int i. flutuar f . mano- ken baixo) em tokens e espaços em branco. Eles descrevem as diferentes categorias de unidades de palavra-like (tokens). flutuar f. horizontais e verticais tabulações. mas para além desta função. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem LEXICAL Visão geral sobre elementos Os tópicos a seguir fornecem uma definição formal do mik roC PRO para PIC lexical elementos. o arquivo de código fonte é analisado (isto é. são lexicalmente equivalente e analisar de forma idêntica para dar seis fichas: int i . reconheceu pela mik roC PRO para a PIC. WHITESPACE Espaço em branco é um nome coletivo dado a espaços (brancos). flutuar f. Espaços em branco podem servir para indicar onde fichas de início e fim. Na fase de simbolização de compilação.

Ambos barra invertida e nova linha caracteres são descartados. Consulte a String Constantes para mais da informação. permitindo que duas linhas físicas de um texto a ser tratados como uma unidade. incluindo uma única seqüência 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 (\). Então. Por exemplo. Em que caso eles sejam protegidos contra o processo de análise normal (eles permanecem como parte da da seqüência).CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Espaço em branco em Strings Os caracteres ASCII representando branco pode ocorrer dentro de literais de cadeia.Soluções de software e hardware para o mundo embutido . 144 Mikroelektronika . o seguinte código "MikroC PRO \ Compilador para PIC " analisa em "MikroC PRO para PIC Compiler". char [nome] = "mikro foo". analisa em sete fichas.

Ambos são apoiados por mik roC PRO para PIC. O comentário pode começar em qualquer posição e se estende até a próxima linha nova. Toda a seqüência. consulte o Preprocessor Operadores. Na mik roC PRO para a PIC. discutido mais adiante neste tópico para evitar problemas de portabilidade outros. Para mais informações sobre colar token. Os comentários são para uso do programador só. analisa como: int i. Mikroelektronika . é substituídos por um espaço depois expansão de macro. pois eles são retirados do texto de origem antes da análise. C + + comentários A mik roC PRO para PIC permite que os comentários de uma linha usando duas barras adjacentes (//). Você também deve seguir as orientações sobre a utilização de espaços em branco e os delimitadores de comentários. Há duas formas para delinear com - mentos: o método de C e C + + método. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem COMENTÁRIOS Os comentários são partes de um texto usado para anotar um programa e são tecnicamente outra forma de espaço. comentários C C comentário é qualquer seqüência de caracteres colocados após a par / símbolo *. / / Isto é um comentário int j. int j. incluindo quatro símbolos delimitador de comentário. A com- mento termina na primeira ocorrência do * / par após a inicial / *. int / * Tipo * i / / * identificador * /. Note-se que o mik roC PRO para PIC não suporta um colar nonportable token estratégia usando /**/.Soluções de software e hardware para o mundo embutido 145 . O código a seguir int i. analisa como: int i.

porque o âmbito do primeiro / * termina no primeiro * /. A tentativa de um ninho de comentário como esse / * int / * declaração * / i. * / o que geraria um erro de sintaxe. Isso nos dá i. 146 Mikroelektronika .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC comentários Nested ANSI C não permite comentários aninhados. / * falha.Soluções de software e hardware para o mundo embutido .

A pars- er separa os tokens do fluxo de entrada. em vez não como a chave- palavra int seguido pelo identificador er. criando o maior símbolo possível usando os caracteres de entrada em uma esquerda para a direita-scan.palavras-chave . mas não funciona dessa maneira. note que inter seria analisado como um identificador único. CAPÍTULO 6 mikroC PRO para PIC Idioma Referência TOKENS Token é o menor elemento de um programa compilador C que pode reconhecer.identificadores .constantes . na verdade: inter (a + +) + b.operadores .SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo 147 . Primeiro. Dê uma olhada no código exemplo a seguir seqüência: inter = a + + + b. O compilador iria analisá -lo no sete fichas a seguir: inter // variável identificador = // operador de atribuição um // variável identificador + + // operador postIncrement + // operador de adição b // variável identificador .pontuadores (também conhecido como separadores) Símbolo de Extração Exemplo Aqui está um exemplo da extração de token. De acordo com as regras de precedência de operador. Mikroelektronika . a nossa seqüência de código é. O programador que tem escrito o código pode ter a intenção de escrever inter = um + (+ + b). // terminador de instrução Note-se que + + + analisa como + + (O mais longo possível token). A mik roC PRO para PIC reconhece os seguintes tipos de fichas: . seguido por +.

constantes inteiro .constantes de enumeração A tipo de dados de uma constante é deduzido pelo compilador usando pistas como um valor numérico e formato usado no código-fonte. hexadecimal (base 16) base.constantes ponto flutuante . A mik roC PRO para PIC suporta: . o sufixo U ( Ou u) obriga a uma c onstante a s er não assinado. curto não assinado. int unsigned long. uma constante é atribuído o "Menor" de os seguintes tipos. seu tipo de dados será o primeiro dos seguintes que pode acomodar o seu valor: unsigned int. unsigned short. Da mesma forma. Integer Constantes As constantes inteiras podem ser decimal (base 10).constantes de caracteres . seu tipo de dados será o primeiro dos seguintes que podem acomodar o seu valor: long int. Caso contrário: Se uma constante tem o U sufixo. o tipo de dados de um constante inteira é derivado do seu valor. 148 . Se uma constante tem tanto L e U sufixos. UL. sem assinatura tempo int. unsigned int long int. Ambos Le U sufixos podem ser utilizados com a mesma constante em qualquer forma ou processo: ul. int unsigned long. Long e sufixos Unsigned O sufixo L (Ou l) ligado a qualquer força constante que constante a ser representado como um tempo. que podem acomod ar seu valor: curto. u. (LU ou UL). int. Lu.Constantes cadeia de caracteres (strings literais) . ou l). Se uma constante tem o L sufixo. Na ausência de sufixos primordiais. seu tipo de dados será não assinado int tempo. binários ( 2) ou octal (base 8).CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC CONSTANTS Constantes ou literais são símbolos que representam fixo numérico ou valores de caracteres. etc Na ausência de qualquer sufixo (U. L.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

/ Decimal * 10 * / int i = 010. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Decimais constantes Decimal de -2147483648 a 4294967295 são permitidos. / * Decimal 0 = 0 * octal / Na ausência de quaisquer sufixos imperiosa. Assim. conforme demonstrado abaixo: Valor atribuído à constante Assumindo Tipo <-2147483648 Erro: Fora da faixa! -2147483648 .4294967295 unsigned long > 4294967295 Erro: Fora da faixa! Constantes hexadecimais Todas as constantes a partir de 0x (Ou 0X) estão a ser tomadas hexadecimal.-32769 tempo -32768 . de acordo com as regras apresentadas acima. Por exemplo. Constantes excedam esses limites vai produzir uma "Out of range" erro. Mikroelektronika .65535 unsigned int 65536 .32767 int 32768 . Na ausência sufixos de qualquer substituição. constantes Decimal não deve usar um zero inicial.127 curto 128 . 0xC367 serão trata- ed como unsigned int. o tipo de dados de um hexadecimal constante é derivada da seu valor.255 unsigned short 256 .-129 int -128 . Uma constante inteira que tem um zero inicial é interpretá- ed como uma constante octal. o tipo de dados de um constante decimal é derivada de seu valor.2147483647 tempo 2147483648 . / Decimal * 8 * / int i = 0.Soluções de software e hardware para o mundo embutido 149 . int i = 10.

de acordo com as regras apresentadas acima.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido ..23 23. Aqui estão alguns exemplos: 0.17549435082 * 10-38 . 0b11101 serão tratados como curto. Negativo constantes flutuantes são tomadas como constantes positivas com um operador unário menos (-) como prefixo. o tipo de dados de um binário constante é derivada de seu valor.Decimal fração .80564774407 * 1038. Note-se que o mik roC PRO PIC para a implementação de ANSI Standard considera flutuar e dupla (Juntamente com a long double variante) para ser do mesmo tipo. Por exemplo.Tipo sufixo: f ou F ou l ou L (Opcional) Qualquer número inteiro decimal ou fração decimal (mas não ambos) pode ser omitido. Se uma constante octal contém os dígitos ilegal 8 ou 9. Na ausência de qualquer excesso de andar sufixos.23 // = -1. de acordo com as regras apresentados acima. Octal Constantes Todas as constantes com um zero inicial são tidas como octal. 0777 serão tratados como int.Decimal inteiro . // = 0. Floating Point Constantes Uma constante de ponto flutuante é composto por: .e ou E e um expoente inteiro assinado (opcional) . Na ausência de qualquer substituindo o sufixo- es.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Binário Constantes Todas as constantes a partir de 0b (Ou 0B) estão a ser tomadas binário. é reportado um erro.45e6 // = 23. 150 Mikroelektronika .± 6. Ou dec - ponto imal ou carta e (Ou E) com um expoente inteiro assinado (mas não ambos) pode ser omitir- Ted.09 E34 // = 0. Por exemplo.0 -1. o tipo de dados de uma constante octal é derivado do seu valor.Ponto decimal . A mik roC PRO para PIC limites constantes de ponto flutuante para o intervalo ± 1.45 * 10 ^ 6 2e-5 // = 2.0 * 10 ^ -5 3E +10 // = 3.0 * 10 ^ 10 0. Estas regras permitem convencionais e científicas (expoente) notações.09 * 10 ^ 34 A mik roC PRO para PIC de ponto flutuante constantes são do tipo casal.

No mikroC PRO para PIC. Sequências de Escape Uma barra invertida (\) é usada para introduzir uma seqüência de escape. Nota: Você deve usar a seqüência \ \ para representar uma barra invertida ASCII. Uma barra invertida é usada com números em octal ou hexadecimal para representar um símbolo ASCII ou controle de código correspondente a esse valor. constantes de caractere único são da unsigned int tipo. Para obter mais informações referem-se a String Constantes. como 'A'. ou '\ N'. constantes Multi caracteres são referidos como con-corda balcões de ou literais de cadeia. '\ X3F' para a questão marca. O primeiro caractere nonoctal ou não hexadecimais encontrados em uma seqüência de escape octal ou hexadecimal marca o fim da seqüência. 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. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Constantes de caracteres Um personagem constante é um ou mais caracteres entre aspas simples. como usado em caminhos do sistema operacional. A tabela a seguir mostra as seqüências de escape disponíveis: Seqüência Valor Char Descrição \ A 0x07 BEL sinal audível \ B 0x08 BS Retrocesso \ F 0x0C FF Formfeed \ N 0x0A LF Newline (Avanço de linha) \ R 0x0D CR Retorno de carro \ T 0x09 HT Tab (horizontal) \ V 0x0B VT Vertical Tab \ \ 0x5C \ Backslash \ ' 0x27 » aspas simples (apóstrofo) \ " 0x22 '' Aspas duplas \? 0x3F ? Ponto de interrogação \ O qualquer S = string de até 3 dígitos octais \ XH qualquer H = seqüência de dígitos hexadecimais \ XH qualquer H = seqüência de dígitos hexadecimais Mikr . o númer o octal \ 777 é maior do que o valor máxi mo permiti d o (\ 377) e irá gerar um erro. Números maiores irá gerar o erro do compilador"Fora de alcance". que permite uma representação visual de certos caracteres não gráficos. '+'. por exemplo. Uma das mais comuns constantes de escape é o caractere de nova linha (\ n). Por exempl o.

Soluções de software e hardware para o mundo embutido 151 .oelektronika .

"1." A string nula. o mikroC PRO PIC para compila-lo como o número hexadecimal \ X091 e literal de cadeia "0. ou string vazia. No entant o. Aqui está um exemplo: Lcd_Out_Cp ("\ x091. Uma seqüência literal é armazenada internamente como uma determinada seqüência de caracteres mais um caractere nulo final.0 Intro ". Este destina. Uma seqüência de caracteres nula é armazenado como um único caractere nulo. as seguintes constantes: "\ 118" seria interpretado como um de dois caracteres constante composta dos personagens \ 11 e 8.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Desambiguação Algumas situações ambíguas podem surgir quando se utiliza seqüências de escape. referem-se a String Constantes. também conhecido como literais string. Por exemplo.0 Introdução"). Os caracteres entre aspas pode incluir seqüências de escape. Para obter mais informações sobre a linha anterior. podemos reescrever o código da seguinte forma: Lcd_Out_Cp ("\ X09".s e a ser interpr etad a como \ X09 e "Intro 1. Para evitar tais problemas. Uma seqüência literal é uma seqüência de qualquer número de caracteres entre aspas duplas: "Esta é uma string. Ambigüidades também pode ocorrer se uma seqüência de escape octal é seguido por um nonoctal dígitos. porque 8 não é um dígito octal legal. são um tipo especial de constantes que armazenar seqüências fixas de caracteres.0 Intro"). é escrito como "". Este código. String Constantes constantes da corda. por exemplo: "\ T ###BOT_TEXT###quot; Nome \ "\ \ \ tAddress \ n \ n" impressões como isso: "Nome" \ Endereço .0".

Soluções de software e hardware para o mundo embutido .152 Mikroelektronika .

Seg. A identi- verificadores são normalmente escolhido como mnemônicos de contribuir para a legibilidade. A fuga seqüência de caracteres \ \ é traduzida em \ pelo compilador. Sex. é equivalente a "Este é apenas um exemplo. Veja Enumerações para obter detalhes sobre enum declarações. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem O "nome" é precedido por dois guias. " Enumeração Constantes constantes de enumeração são identificadores definidos no enum declarações do tipo. Por exemplo: enum semana {dom = 0. Qua. A linha é seguido por duas novas linhas. inicializadores negativas são permitidas." Continuação de linha com Backslash Você pode também usar a barra invertida (\) como um caractere de continuação de estender uma string constante através das fronteiras linha: "Isso é realmente \ uma seqüência de caracteres de uma linha. onde constantes inteiro são válidos. A identificadores (inquiridores) utilizados devem ser exclusivos dentro do escopo do enum dec- vai fazendo. Sab}. Mikr oele ktro nika - Soft ware e Solu ções de . A \ " fornece interior aspas. Enumeração con- são de balcões de int tipo. Por exemplo: "Este é" apenas " "Um exemplo". Ter. Qui. Eles podem ser usados em qualquer expressão. o endereço é precedido por um guia. literais string adjacentes separados apenas por espaç os em branco são concatenados durante o análise de fase.

hardware para Embedded World 153 .

// NO . // PCI é um ponteiro para int constante int const * const cpc = &ci. // Atribuir-const int // objeto de pontas-de-por-um-const-ponteiro + + PCI. // A CI é uma constante int int const * PCI.const mudança cant-ponteiro pi = PCI. atribuindo a * pi.se essa atribuição era permitido. Também é ilegal a criação de um ponteiro que pode violar um cedível não do objeto constante.não pode atribuir a um ponteiro const. // NO . // Atribuir-const int para int * Cp = ci. // Atribuir um const-ponteir o-para-a-const a u m // pointer-para-const Os seguintes atribuições são ilegais: ci = 0. // NO . // pi é um ponteiro para int (não inicializado) int * const cp = &I. cpc + +.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido . // NO . // i é um int int * Pi. // Incrementar um ponteiro-para-const pci = cpc. Qualquer coisa declarados como const não podem alterar seu valor. 154 Mikroelektronika . // cp é um ponteiro constante para int int const c i = 7. cp = &ci. / / CCP é um ponteiro constante para um / / Int constante As seguintes atribuições legais: i = IC. // ainda que o valor não sofrerá alterações. Considere os seguintes exemplos: int i.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Constantes ponteiro Um ponteiro ou apontado no objeto pode ser declarados com o modificador const. // NO .não pode atribuir a um objeto // apontou para pelo ponteiro para const.não pode atribuir a um const int ci -. Regras similares são applayed ao voláteis modificador. Note-se que ambos os const e voláteis pode aparecer como modificadores para o mesmo identificador. // você seria capaz de atribuir a * pci // (Um valor constante). // NO .não pode mudar um const int * Pci = 3.

Soluções de software e hardware para o mundo embutido 155 .simples constantes (sem matrizes constantes ou estruturas). . a menos que o Os operadores estão contidos no operando de uma sizeof operador: atribuição. vírgula. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Expressões constantes Um expressões constantes podem ser avaliados durante a tradução. de incremento. expressão constante pode ser usado em qualquer uma constante é legal. Mikroelektronika . chamada de função. decremento. Cada expressão constante pode ser avaliada como uma constante que está na faixa de repre- valores sentable para seu tipo. .constantes de enumeração. sim. Expressões constantes não podem conter nenhum dos seguintes operadores.sizeof operadores. que a execução e conformidade pode ser usado em qualquer lugar que pode ser uma constante. Expressões constantes pode consistir apenas no seguinte: . .literais.

se você quer desenvolver sua próprias bibliotecas. consulte mikroC PRO PIC para Bibliotecas.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC PALAVRAS-CHAVE Palavras-chave são palavras reservadas para fins especiais e não deve ser usado como normal identificador de nomes.) Sondar o Assistente de código para letras específicas (Ctrl + Espaço no Editor) ou consulte a pré- definidos e constantes globais. para . continuar . flutuar . sizeof . typedef . char . tempo . auto . todos os SFR relevantes são definidos como variáveis globais e representam palavras reservadas que não pode ser redefinido (por exemplo: TMR0. Além de palavras-chave C padrão. mais . padrão . dupla . int . struct . extern . caso . voláteis . estáticas . enquanto Além disso. . enum . asm . Para obter mais informações. assinado . const . fazer . o mik roC PRO para PIC inclui um número de identificadores predefinidos utilizados em bibliotecas. se . União . Você pode substituí-los por suas próprias definições. Registre-se . Aqui está um alfabética lista de palavras-chave em C: . retorno . curto . quebrar . PCL etc. não assinado . goto . vazio . switch .

Mikroelektro nika .SOFTWARESOFTWAREHARDWAREHA RDWA RE SOLUTIONSEMBEDDEDE MBEDDED MUNDO 156 .E E SOLUÇÕES PARA PARA O MUNDO .

CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem IDENTIFICADORES Identificadores são nomes arbitrários com um determinado comprimento de funções. caractere"_". não pode conter caracteres especiais (ponto) . não pode começar com um numeral % Maior / / NO . nomes duplicados são legais para nome diferente espaços.. então o erro surge. Singularidade e Âmbito Embora os nomes de identificador são arbitrários (de acordo com as regras descritas). variáveis simbólicas constantes.07. e soma representam um equivalente identificador. e aqui estão alguns identificadores inválidos: 7temp / / NO . sensibilidade processo pode ser ativado ou sus- pendido na janela Configurações de saída. se o mesmo nome é usado por mais de um identificador dentro do mesmo escopo ea partilha do espaço de mesmo nome. E dígitos 0-9. de modo que Soma. Todos estes elementos do programa será designado objetos toda a ajuda (não se confunda com o significado de objeto em programação orientada a objetos).04 / / NO . user-defined tipos de dados e rótulos. não pode jogo palavra reservada j23. suma. Mesmo entre maiúsculas e minúsculas é desligado Palavras-chave permanecem maiúsculas e minúsculas e devem ser escritas em minúsculas. Para obter mais informações sobre o escopo. independentemente das regras de escopo. Os identificadores podem conter as letras de A a Z e A a Z.. não pode conter caracteres especiais int / / NO . Exemplos Identifier Aqui estão alguns identificadores válidos: temperature_V1 Pressão no_hit dat2string SUM3 _vtext . Caso sensibilidade A mik roC PRO para PIC identificadores não são sensíveis ao caso por padrão. A única restrição é que o primeiro caractere deve ser uma letra ou um sublinhado. consulte Escopo e visibilidade.

Soluções de software e hardware para o mundo embutido 157 .Mikroelektronika .

Asterisco .[] ... int mat [3] [4].() .sinal de igual . / * Declaração de uma função com parâmetros * / Parênteses são recomendado nas definições macro para evitar potenciais precedência problemas durante a expansão: # Define CUBE (x) ((x) * (x) (x)) Para obter mais informações. str [] = "mikro". / * * Essencial com instrução condicional / func ().CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Pontuadores A mik roC PRO para PIC pontuadores (também conhecido como separadores) são: .:. 158 Mikroelektronika . e indicam as chamadas de função e os parâmetros de função: d = c * (A + b). / * 3 x 4 * matriz / CH = str [3].{} .Ponto e vírgula .=. / * Chamada da função..#.sinal de libra A maioria destes pontuadores também funcionam como operadores.Suportes .Soluções de software e hardware para o mundo embutido . / * Substituir * precedência normal / if (d == z) + + x. não args * / void func2 (int n). / * Elemento 4 / Parênteses Parênteses () são usados para agrupar expressões.Vírgula .. consulte Operadores Precedência e associatividade e Expres- sões.*. isolar expressões condicionais. Suportes Suportes [] subscritos indicam única matriz e multidimensional: char ch.Parênteses .Cólon .Suspensórios .

char) func. / * Ponto-evírgula ilegal! * / mais {. mas é igual para o segundo: função (i. A expressão é avaliada e seu valor é descartado. Para obter mais informações. (exp3. Se o declaração de expressão não tem efeitos secundários. / * Expressão vazia.) separa os elementos de uma lista de argumentos da função: void (int n. mas descarta valor de + + a * / . exp5)) / * também chamadas de funções com duas args! * / Ponto e vírgula Vírgula (.) é um terminador de instrução. exp2) evalutates ambos. Vírgula Vírgula (.. } Fechamento da chave serve como um terminador para o comando composto. a mik roC PRO para PIC pode ignorá-la. chamada * / função com dois argumentos * / func ((exp1. Às vezes. conhecida como expressão comunicado. }. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Suspensórios Suspensórios {} indicar o início e fim de um comando composto: if (d == z) { + + X. / * O efeito de lado em um. Misturando dois usos da vírgula é legal. / * Avaliar a + b.Soluções de software e hardware para o mundo embutido 159 . EXP4. o ponto e vírgula pode ser ilegal. mas descarta valor * / + + A. Exceto em declarações estrutura.. Qualquer expressão C legal (incluindo o vazio expressão). mas você deve usar parênteses para distingui-los. Note-se que (exp1. }.. float f pc. ou um comando nulo * / Mikroelektronika . j). consulte a instruções compostas. como no if (declaração) {. func (). Vírgula também é usado como um operador em expressões vírgula. a + b. então um ponto e vírgula não é exigida após }. seguido por um ponto e vírgula é interpretado como uma declaração. exp2)..

.14. / * Um ponteiro para uma matriz de duplas * / Você também pode usar o asterisco como um operador. a = b * 3. As etiquetas são discutidos nas declarações identificadas.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Semicolons às vezes são usados para criar uma declaração vazia: for (i = 0. i <n. Para obter mais informações. Cadastre-se igual 160 Mikroelektronika . i + +). / * Um ponteiro para char é declarada * / Ponteiros com vários níveis de engano pode ser declarada por indicação de um pertinente número de asteriscos: int ** int_ptr. quer dereference um ponteiro ou como mul- operador tiplication: i * = int_ptr. consulte os ponteiros. Cólon Use dois pontos (:) para indicar a instrução rotulada: start: x = 0.Soluções de software e hardware para o mundo embutido .. / * Um ponteiro para um array de inteiros * / double_ptr *** duplo. goto início. consulte Demonstrações. Asterisk (Declaração Ponteiro) Asterisco (*) em uma declaração de variável indica a criação de um ponteiro para um tipo: char_ptr char *. . Para obter mais informações.

Cadastre Libra (Directiva Preprocessor) Libra sinal (#) indica uma directiva de pré-processamento. int x = 5. sinal de igual é usado também como um operador de atribuição em expressões: int a. # e # # também são utilizados como operadores para realizar a substituição de tokens e fundindo-dur ção do pré-processador de digitalização de fase. Para obter mais informações. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Igualdade de sinal (=) separa as declarações de variáveis da lista de inicialização: int teste [5] = {1. não necessariamente asso- ciado com uma geração de código. 2. 4. consulte Operadores de Atribuição.Soluções de software e hardware para o mundo embutido 161 . Mikroelektronika . a = b + c. 3. quando ele ocorre como o primeiro não- caracteres em branco em uma linha. 5}. Veja os Operadores Preprocessor. Veja as directivas do pré-processador para obter mais infor- ção. b. c. Significa uma ação compilador.

Funções . A mik roC PRO para PIC compilador deduz destes atributos a partir de declarações implícitas ou explícitas no código-fonte. Cada declaração associa um identificador com um tipo de dados. variáveis.Objetos e lvalues . essencial para a compreensão de como funcionam os programas de C. De um modo geral. A nome é usado para acessar o objeto e pode ser um identificador simples ou complexas expres - Sion que se refere exclusivamente o objeto. que é mais geral.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC CONCEITOS Esta seção aborda alguns conceitos básicos da linguagem. e etiquetas.Escopo e visibilidade . tipos de dados definidos pelo usuário. Objetos e declarações Declarações necessário estabelecer um mapeamento entre identificadores e objetos.Espaços de nome . precisamos estabelecer os seguintes termos que serão utilizados em toda a ajuda: .Tipos . constantes simbólicas. 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). Em primeiro lugar. Nosso definiton da palavra seria englobam funções. utilizado em linguagens orientadas a objeto.Variáveis . excepções a esta regra legal (conhecido como ref progressistas erences) são os rótulos. Cada valor tem um nome associado e tipo (também conhecido como um tipo de dados). e struct ou tags união. um identificador não possa ser legalmente utilizado em um programa antes de sua dec- ponto vai fazendo no código-fonte. Normalmente. as chamadas para funções não declarado. A gama de objetos que podem ser declaradas inclui: . Esse uso de um termo objeto é diferente de um mesmo termo.Duração Objetos Um objeto é uma região específica da memória que podem armazenar um valor fixo ou variável (ou conjunto de valores). apenas o tipo é especificado explicitamente a classe de armazenamento e espe- ifier assume o auto valor automático.

.Estrutura.Soluções de software e hardware para o mundo embutido . união e tags enumeração 162 Mikroelektronika .Matrizes de outros tipos .

Tais expressões são às vezes chamados rval- ues (Abreviação de valores à direita). Mikr oele ktro nika - Solu ções de soft ware e hard ware para o mun do emb . Lvalues Lvalue é um objeto locator: uma expressão que designa um objeto. eu defendia "Esquerda".membros da União . como a = 1 e b = a + b são legais. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem . Um ponteiro const para uma constante. onde P é qualquer expressão que avalia um ponteiro não nulo. Você provavelmente vai querer usar typedefs para melhorar a legibilidade se construir objetos complexos. Rvalues A expressão a + b não é lvalue: a + b = a É ilegal porque a expressão à esquerda não está relacionado a um objeto. não é um lvalue modificáveis. Historicamente.Preprocessor macros A natureza recursiva da sintaxe declarator permite declarators complexo.membros da estrutura . A modificáveis lvalue é um identificador ou uma expressão que diz respeito a um objeto que pode ser acessados e mudou legalmente na memória. eles são ambos os mod- lvalues ifiable e atribuições. Um ponteiro para uma constante pode ser alterado (mas seu deref- valor referenciadas não podem).Declaração de rótulos . Um exemplo de lvalue expressão é * P.constantes Enumeração . se a e b são NonCon- identificadores inteiro constante com armazenamento de memória corretamente alocados. Por exemplo. o que significa que lvalue poderiam legalmente ficar sobre a esquerda (a recebimento final) de uma instrução de atribuição. Agora só lvalues modificável e jurídico- ly ficar à esquerda de um operador de atribuição. por exem - plo.

utido 163 .

/ / Int i e j estão no escopo e visível { / Block nested dupla j. declarações dos parâmetros com uma definição de função ção também tem escopo de bloco. são declaradas fora de todas as blocos. também conhecido como globais. do ponto de declaração para o fim do arquivo de origem. e arquivo. Existem diferentes categorias de escopo: bloco (ou local). Alcance e visibilidade geralmente coincidem. fun- ção. em abrangência. Rótulos são declarados implicitamente por escrito LABEL_NAME: fol seguidos por um comunicado. Este escopo termina no final do protótipo da função. limitado ao âmbito de aplicação do corpo da função. Rótulo nomes devem ser exclusivos dentro de uma função. mas o identificador original não pode ser usado para acessá-lo até o âmbito da segunda via do identificador termina. Visibilidade A visibilidade de um identificador é uma região do código fonte do programa a partir do qual um identificador é associado objeto pode ser acessado legalmente. Função: Os identificadores apenas de alcance função são rótulos de instrução. Arquivo: Arquivo identificadores de escopo. mas oculto . / Auto / por padrão j = 3. o seu âmbito é. / / J é o nome local no bloco aninhado j = 0.1. Veja o seguinte exemplo: vazio f (int i) { int j. Estas categorias dependem de como e onde iden- tifiers são declaradas. Função protótipo: identificadores declarados na lista de declarações de parâmetro em um protótipo de função (e não como parte de uma definição de função) têm uma função de pro ToType escopo. mas pode ultrapassar um escopo de visibilidade. / / Int j = 3. Label nomes podem ser usados com as declarações goto lugar na função em que o rótulo é declarada.CAPÍTULO 6 Referência 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. a visibilidade não pode ultrapassar o âmbito de aplicação. Tecnicamente. protótipo da função. / / I e j dupla são visíveis. mas há circunstâncias em que um objeto se torna temporariamente ocultas pelo aparecimento de uma segunda via do identificador: o objeto ainda existe. Bloco: O escopo de um identificador com o bloco (ou local) começa no âmbito declaração ciando e termina no final do bloco que contém a declaração (bloco de tais é conhecido como o bloco de inclusão).

} 164 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

vermelho. funções e membros de enumeração . / / Volta no âmbito int azul Duração Duraç ão.deve ser exclusivo dentro da estrutura ou União. objetos físicos alocados na memória. violeta. / / Int j visível e = 4 } / / I e j são ambos fora de alcance Espaços de nome espaço de nomes é um escopo dentro do qual um identificador deve ser único. Tags declarada fora de qualquer função deve ser exclusivo. Estrutura. / / ILEGAL: cores duplicadas tag dupla vermelho = 2. branco c}. Existem dois tipos de duração: estáticas e local.}. Externamente identificadores devem ser declaradas única entre as variáveis declaradas no exterior. j. Estrutura e nomes de membros da União . Variáveis. 3. 4. têm real memória alocada em tempo de execução. Variáveis. / Azul = 3 * enumerador agora esconde declaração externa de azul * / int struct {cores int i. nos quais eles são definidos.deve ser único. independentemente das regras de escopo. com no âmbito em que eles são definidos.deve ser exclusivo dentro do bloco no que eles são definidos. nomes duplicados são legais para espaços de nomes diferentes. Não há nenhuma restrição sobre o tipo ou deslocamento de membros com o nome do membro mesmo em diferentes estruturas. azul. por exemplo. ao contrário typedefs e tipos. Por exemplo: int azul = 73. estreitam e nte relacionad o com uma classe de armaz ena m ento. goto nomes de rótulo . { / / Abrir um bloco de enum {cores preto. Nós também distinguir entre com - tempo de bate-estacas e objetos em tempo de execução.deve ser exclusivo dentro da função em que se encontram declarou. define um período em que o declar ado iden- tifiers têm real. Mikr oele ktro . typedefs. verde. 2. / / Ilegal: redefinição de vermelho } azul = 37. A mik roC PRO para PIC utiliza quatro categorias distintas de identificadores: 1. união e enumeração marcas . CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem / / Saída dupla j de alcance j + = 1.

nika .Soluções de software e hardware para o mundo embutido 165 .

b init apenas em primeira convocação para f * / static int b = 1. após terceira chamada. Eles são criados no pilha (ou num registo). esta alocação de armazenamento dura até que o programa termina. caso contrário. logo que a execução é sub- forma. b + +. Não misture com duração estática arquivo ou escopo global. Por outro lado. / / Etc } 166 . f (). Por exemplo: vazio f () { / * Variável duração locais. mas geralmente é redundante. O especifi c ador de classe de armaz enam ento auto pode ser usado na declar aç ão de variávei s locais duraç ão. após segunda chamada. objetos duração estáticos são não inicializado para zero (ou nulo) na ausência de qualquer inicializador explícito. Local Duração objetos duração locais também são conhecidos como automática objetos. f (). vamos ter: * / f (). } vazio main () { / * No posto. Local objetos duração deve ser explicitamente inicializado. / * Checkpoint! * / a + +. Na mik roC PRO para PIC. pois auto é padrão para as variáveis declaradas dentro de um bloco. / / a / b = 1 = 3. quando um bloco de inclusão ou de uma função é inserida. Todas as funções. / / a / b = 1 = 2. são objectos com duração estática. init uma sobre cada chamada para f * / int a = 1. Um objeto com duração locais também têm um alcance local. seu conteúdo é imprevisível. / * A variável de duração estática. Um objeto pode ter duração estática e âmbito local . porque não existe fora do seu bloco de inclusão. Eles são desalocado quando o programa sai que bloco ou função. sempre que definidos.veja o exemplo abaixo. / / A = 1. após primeira chamada. Todos os globals têm duração estática. Outras variáveis podem ser dadas duração estáticos usando o explícito estáticas ou extern armazenamento especificadores de classe. duração estática objetos reside normalmente em dados fixos segmentos alocados de acordo com a memória especificador em vigor.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Static Duração A memória é alocada para objetos com duração de estática. um objeto de âmbito local pode tem estática dura- ção. b = 1 .

Soluções de software e hardware para o mundo embutido .Mikroelektroni ka .

Eles são por vezes referido como não estrutur a dos tipos. conhecido no tempo de com - compilação. juntamente com um conjunto de operações permitidas com esses valores. Os tipos fundam e ntais são void. estruturas e uniões. longas. A mik roC PRO para PIC bibliotecas-padrão e seu próprio programa e os arquivos devem fornecer identificadores inequívoca (ou expressões derivadas deles) e os tipos de modo que a mik roC PRO para PIC pode sempre acessar. int. para interpretar o bit padrões encontrados no objeto durante o acesso posterior. Tipo Categorias Um comum maneira de categorizar os tipos é dividi-los em: . e (possivelmente) mudar o padrão de bits nhece na memória correspondente a cada objeto ativo em seu programa. Para obter mais informações sobre os tipos fundamentais. de ponto flutuante números com precisão várias matrizes. juntamente com curtas. Um dado tipo de dados pode ser visto como um conjunto de valores (muitas vezes dependente da implementação). e casal.Fundamental . A mik roC PRO para PIC suporta o padrão muitos (pré) e definidas pelo usuário tipos de dados. char. O operador em tempo de compilação sizeof permite determinar o tamanho em bytes de qualquer padrão ou tipo definido pelo usuário. consulte o tópico Fun- . o ponto dores para a maioria destes objetos podem ser criados e manipulados na memória. para garantir que as atribuições ilegais são presos. Além disso. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem TIPOS A mik roC PRO para PIC é uma linguagem estritamente digitado. o que significa que cada objeto. O tipo determina a quantidade de memória é alocado para um objeto e como a pró- grama irá interpretar os padrões de bits encontrada na alocação do objeto de armazenamento. interpretar.Derivada Os tipos fudamental representam tipos que não podem ser divididas em partes menores. float. e expressão deve ter um tipo estritamente definido. assinado e não assinado vari- formigas de alguns deles. função. O tipo serve: para determinar a alocação de memória correto exigido inicialmente. em muitas situações de verificação de tipo. inclusive assinado e sem assinatura inteiros de vários tamanhos. que identificadores do mesmo tipo podem assumir. Note-se que o mik roC PRO para PIC funciona exclusivamente com tipos numéricos.

estruturas e sindicatos. Mikroelektronika . tipos de funções. Para obter mais informações sobre os tipos de derivados.Soluções de software e hardware para o mundo embutido 167 . consulte o tópico tipos derivados. Os tipos derivados também são conhecidos como estruturado tipos e incluem ponteiros para outros tipos. arrays de outros tipos. Tipos fundamentais.

Tipo Void Aritmética Tipos Os especifi c ad or es de tipo aritméti c os são constr uíd os a partir de palavr as -c h av e: void. 168 . As palavr as -c h av e assinado e sem assinatura. utilizada por conta própria. A partir dessas palavras-chave pode criar dois tipos integral e de ponto flutuante. assinada é automaticamente assumida por tipos integrais. assinado e não assinado. longos. Os tipos fundamentais incluem: -Aritmética Tipos . float e casal. juntamente com suas variantes. que é não assinado por padr ão. A tipos fudamental são muitas vezes referidos como tipos não-estruturados. As palavras-chave curto e de comprimento. significa assinado int e unsigned int. Na ausência do prefixo unsigned. Os modificadores assinado e não assinado pode ser aplicado tanto char e int. assinado e não assinado.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Tipos Fundamentais Os tipos fudamental representam tipos que não podem ser divididos em elementos mais básicos. quer dizer short int e int tempo. . juntamente com os prefixos curtas. longas. char.Palavras-chave entre parênteses pode ser (e são muitas vezes) omitido. e são o modelo de representação de dados elementares sobre o nível da máquina. Tipos Integral Os tipos char e int. respectivamente. Na tabela abaixo é uma visão geral dos tipos integrais . respectivamente. A única exceç ão é char. quando usado por si só. int. mentos. e são utilizados como na criação de elementos mais complexos tipos derivados ou definida pelo usuário. Os modifi c ador es curto e tempo só pode ser aplicada a int. As variantes são criados usando um dos modificadores de prefixo curtos. são considerados como parte integrante tipos de dados.Enumerações .

Soluções de software e hardware para o mundo embutido .Mikroelektroni ka .

.. 255 (Assinado) int 2 -32768 . 65535 (Assinado) (int) de 4 -2147483 648 .4 * 1038 long double 4 -1... Uma visão geral do ponto flutuante tipos é mostrada na tabela abaixo: Tipo Tamanho em Bytes Faixa flutuar 4 -1. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Tipo Tamanho em Faixa (Não assinado) char Bytes 1 0 .. +3.128 . 32767 unsigned (int) 2 0 . 255 assinado char 1 . 127 (Assinado) (int) short 1 .5 * 1045 . ponto flutuante na mik roC PRO para PIC é implementado usando o AN575 Microchip 32-bit do formato (IEEE 754 complacente). +3...4 * 1038 dupla 4 -1... A mik roC PRO PIC para a implementação de um Padrão ANSI considera que todas são do mesmo tipo.5 * 1045 .4 * 1038 Mikroelektronika . juntamente com o long double variante. são consi- siderada tipos de ponto flutuante.5 * 1045 .. 4294967295 Tipos de ponto flutuante Os tipos flutuar e casal.. 2147483 647 comprimento unsigned long (int) 4 0 . 127 unsigned short (int) 1 0 .128 .Soluções de software e hardware para o mundo embutido 169 . +3.

// valor 7 branco = 4}. Na ausência de explícita inicializadores. .. abstrata conjunto de val- ues com as devidas nomes simbólicos.).Soluções de software e hardware para o mundo embutido . significa o mesmo Com explícita inicializadores integral. eo valor de cada enumerador sucesso é definido ao valor de seu antecessor. Para exemplo. Enumeração Declaração Enumeração é declarado assim: enum tag {lista de enumeração-}. // valor 6 violeta. / / Ainda bem. e um conjunto de enumeradores com valores inteiros constantes (preto = 0. Por exemplo: enum {cores preto. branco c}. a seguinte declaração: enum {cores preto. vermelho = 1. Variáveis da enum tipo são declaradas as mesmas variáveis de qualquer outro tipo. Cada enu- merator é atribuído um valor fixo integral. tag é um nome opcional da enumeração. O inicializador pode ser qualquer expressão que produz um número inteiro positivo ou negativo valor (após promoções inteiro possível). Aqui. Na mik roC PRO para a PIC.além da não verificação de tipo que é imposta. Quaisquer nomes subseqüentes sem inicializadores vai ser aumentada por um. variável c deste tipo. os entrevistadores (ou enumeração constantes). mas as duplicatas são legais. violeta. azul. o enumerador primeiro é definido como zero. você pode definir um ou mais entrevistadores.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Enumerações Uma enumeração tipo de dados é usado para representar um discreto. uma variável de um tipo enumerado pode ser atribuído qualquer valor do tipo int . estabelece um único tipo integral. acrescido de um. vermelho. enum cores. verde.. // valor 4 170 Mikroelektronika . Isto é: c = vermelh o. / / OK c = 1. enumeração de-lista é uma vírgula delimitado lista de valores discretos. específicas valores. // valor 0 vermelho. // valor 2 azul = 6. // valor 1 verde. Estes valores são geralmente únicas. A ordem de constantes podem ser explicitamente re-arranjadas.

branco cor}. j. você pode omitir a marca se não houver outras variáveis do presente enum tipo são necessários: / * Tipo enum Anónimo: * / enum {preto. vermelho. azul . / * Declarar variáveis e bg * fronteira Como com struct e declarações união. verde. o identificador cores é uma tag opcional que a enumeração pode ser usado em declarações posteriores de variáveis enumeração dos enum col- ors Tipo: enum cores bg. fronteiras. Enu- merators compartilhar o mesmo espaço de nomes como identificadores de variáveis comuns: int azul = 73. Por exemplo. ve rde.SOFTWARE E soluções de hardware para embutidos mundo 171 . nibble adquiriria o valor 4. violeta. {/ / abrir um bloco de enum {cores preto. Anomous Tipo Enum Em nossa declaração anterior. violeta. byte = 2 * mordidela. vermelho. em a seguinte declaração: enum memory_sizes bit = {1. nibble = 4 bits *. azul. Enumeração Âmbito tags Enumeração compartilhar o espaço de mesmo nome de marcas de estrutura e união. / / ILEGAL: redefinição de vermelho } azul = 37.}. / / Volta no âmbito int azul Mikroelektronika . / / ILEGAL: cores duplicadas tag dupla vermelho = 2. kilobyte = 1024 bytes *}. o valor de 8 bytes e kilobytes o valor 8192. branco c}. / Azul = 3 * enumerador agora esconde declaração externa de azul * / int struct {cores int i. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem expressão inicializador pode incluir entrevistadores previamente declarado.

CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Tipo Void vazio é um tipo especial indicando o ausência de qualquer valor. Lcd_Out_Cp (temp).. vazio é utilizada para obter os tipos mais complexos. } Use vazio como uma função de posição se a função não tem parâmetros. Alter- nativamente. vazio print_temp (char temp) { Lcd_Out_Cp ("Temperatura:"). ao contrário. / personagem / graus Lcd_Chr_Cp ('C'). Void Funções Use o vazio palavra-chave como um tipo de retorno da função se a função não retorna um valor.SOFTWARE E soluções de hardware para embutidos mundo . } Genéricos Ponteiros Ponteiros podem ser declarados como vazio. Não há objetos de vazio. você pode escrever apenas parênteses vazios: main (void) {/ / mesmo que main () . Esses ponteiros são chamados genéricas. 172 Mikroelektronika .. Lcd_Chr_Cp (223). o que significa que eles podem apontar para qualquer tipo.

Eles são usados como elementos na criação de mais complexos tipos definidos pelo usuário.20] / * declara uma matriz de 30 carros alegóricos * / . A tipo pode ser qualqu er tipo escalar (excepto void). Os tipos derivados incluem: .estruturas . ou outra matriz. Estes objectos representam ele- mentos de uma matriz e são identificados por sua posição na matriz. os elementos de matriz podem ser abordadas como variáveis Array_Name [0] . CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Tipos derivados Os tipos derivados também são conhecidos como tipos estruturados. / * declara uma matriz de 50 carros alegóricos * / flutuar vector_three [MAX . Se um número de element os é n. enumeração tipo definido pelo usuário. Uma matriz consiste em uma região contígua de armazenamento exatamente grande o suficiente para armazenar todos os seus elementos. Uma variável de matriz tipo na verdade é um array de objetos do mesmo tipo.. Cada um dos elementos de um array é indexado de 0 ao número de elementos menos um. com os suportes adicionado após identificador: Array_Name tipo de expressão [constante] Isso declara uma matriz denominada Array_Name e composto de elementos de tipo. O valor é um número de elementos em uma matriz. [N-1] Array_Name de tipo. Se uma expressão é dada em um declarator matriz. Aqui estão alguns exemplos de declaração de matriz: # Define MAX = 50 int vector_one [10] / * declara um array de 10 inteiros * / flutuar vector_two [MAX]. Declaração Array declaração de matriz é semelhante à declaração de variável. ele deve avaliar a um constante inteira positiva. o ponteiro .matrizes . Resultado da expressão constante dentro dos colchetes determina um número de elementos na matriz.ponteiros .sindicatos Matrizes Matriz é a mais simples e mais comumente usado tipo estruturado.

Soluções de software e hardware para o mundo embutido 173 .Mikroelektronika .

que por sua vez. / * Esta declaração é idêntico ao anterior * / int dias [] = {} 31. Matrizes multidimensionais são construídos por declarar arrays de tipo de matriz. Veja matrizes e ponteiros para mais informações.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Inicialização de matriz Uma matriz pode ser inicializada na declaração.31.30. poderá omitir o número de elementos . o número de valores de partida deve não pode exceder o comprimento especificado. o arrasto "Excesso" elementos serão atribuídos a alguns valores de tempo de execução encontradas a partir de mem- teoria. Arrays multi-dimensionais Uma matriz é unidimensional.28. 's'. Estes matrizes são armazenadas na memória de tal maneira que as mudanças mais à direita subscrito mais rápido. '\ 0'}. arrays unidimensionais são algumas- vezes referido como vetores. é convertido implicitamente para o ponteiro que aponta para a primeira matriz elemento. ou seja. Por exemplo: / * Declare uma matriz que contém o número de dias de cada mês: * / int dia [12] = {} 31.31. Ao inicializar uma matriz na declaração.30. as matrizes são armazenadas "Em linhas". neste caso.31. / * Array de 2 dimensões de tamanho 50x20 * / A variável m é uma matriz de 50 elementos.30.31.30. A oposto é possível.30. const char msg2 [] = "Teste".31. são matrizes de 20 carros .30. atribuindo-lhe um delimitado por vírgula seqüência de valores dentro de chaves.31. 'E'.31. n Expressões Matrizes Quando o nome de uma matriz aparece na avaliação da expressão (excepto com a ópera- res & e sizeof). 't'.31.31.30. Se você especificar os valores de comprimento e de partida. você pode usar um menor seqüência literal notação. se for do tipo escalar. Para obter mais informações sobre os literais cadeia de caracteres.31.será determinada automaticamente de acordo com a número de elementos atribuídos.31.31.30. Aqui está um exemplo de matriz de 2 dimensões: flutuar m [50] [20]. No caso da matriz de char.28. Por exemplo: / * As duas declarações são idênticas: * / const char msg1 [] = {'T'. consulte a String Constantes.

alegóricos cada.Soluções de software e hardware para o mundo embutido . temos uma matriz de 50x20 elementos: o primeiro elemento é m [0] [0]. a última 174 Mikroelektronika . Assim.

func (a).2}. eles têm suas próprias regras e restrições para as declarações. normalmente em um segmento de código. Um ponteiro do tipo "Ponteiro para objeto do tipo" guarda o endereço da (ou seja. {2. Se você não inicializar a matriz na declaração. as atribuições. Os exemplos nas seções seguintes ilustram algumas dessas regras e as restrições. {3. a matriz está localizado em outro lugar.6}.. Outros objetos comumente apontado incluem matrizes.7}}. Esta é uma técnica comumente usada quando passar matrizes como parâmetros de função: int a [3] [2] [4]. Como os ponteiros são objetos. Na mik roC PRO para PIC. / * Matriz 3-dimensional de tamanho 3x2x4 * / vazio func (int [n] [2] [4]) {/ * podemos omitir primeira dimensão * / . n [2] [1] [3] + +. Por exemplo: int a [3] [2] = {{1. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem é m [49] [19]. por exemplo. O primeiro elemento da linha 5 seria m [4] [0]. Mikr oele . usamos um operador de indireção (*) em um ponteiro. endereço de um objeto na memória podem ser obtidas por meio de um operador unário &. e aritmética. con- versões. incremento * / * o último elemento / } vazio main () { . o endereço para o qual o controle é transferido quando essa função é chamado.. Um ponteiro para uma função é melhor pensar como um endereço. Para alcançar o objeto pontiagudo. onde o código executável que a função é armazenado. estruturas e sindicatos. Nesse caso. você pode ter um ponteiro apontando para um ponteiro (e assim por diante). em outro arquivo. você pode omitir a primeira dimensão da array multi-dimensional.. Embora ponteiros contêm números com a maioria das características de inte-assinado gers.. isto é. aponta para) um objeto do tipo. } Você pode inicializar um array multi-dimensional com um conjunto adequado de valores dentro suspensórios. Ponteiros Ponteiros são objetos especiais para a realização (ou "Apontando para") endereços de memória.

Soluções de software e hardware para o mundo embutido 175 .ktronika .

Se tipo é qualquer tipo pré-definido ou definido pelo us uário. Uma vez declarada. Você pode ver a declaração da seguinte maneira: se * P é um objeto de tipo. int * PC. 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. cada um requer um identificad or indireta operador. mas o compilador irá avisá-lo a menos que o ponteiro foi originalmente declarado estar apontando para nulas. duração e regras de visibilidade são aplicada ao p objeto apenas declarada. Um ponto- er deve ser declarado como apontando para algum tipo particular. Todos escopo. o que realmente significa um ponteiro para qualquer coisa. / * Ponteiro Uninitialized * / declara p ser do tipo "Ponteiro para tipo ". p tem que ser um ponteiro para tal objeto (objeto de tipo). em seguida. porém. Nota: Você deve inicializar ponteiros antes de usá -los! Nosso ponto declarado anteriormente. 176 . er * P não é inicializado (isto é atribuído um valor). incluindo vazio. / * É o mesmo que: * / int * Pa. Nota: No caso de declarações ponteiro múltiplos. e são tratados como ponteiros para char na mik roC PRO para a PIC. Ponteiros para vazio são muitas vezes chamados genéricos ponteiros. pb. mas com * à frente do identificador.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Ponteiro declarações Os ponteiros são declarados da mesma forma que qualquer outra variável. a declaração Tipo * p. Por exemplo: int * Pa. por isso não pode ser usado ainda. * pc *. Um tipo no início da declaração especifica o tipo de um objeto pontiagudo. Você pode atribuir a void * ponteiro para o não-void * ponteiro - referem-se a vazio para mais detalhes. int * Pb. ainda que este tipo é vazio.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

tipo de argumentos ou tipo de retorno é diferente) são incompatíveis com cada outras. } O tipo de ponteiro "Ponteiro para void" não deve ser confundido com o ponteiro nulo. Atribuindo a constante inteira de 0 a um ponteiro atribui um valor do ponteiro nulo para ele. / * Aqui está um ponteiro nulo * / / * Nós podemos testar o ponteiro como isto: * / se (Pn == 0) {. Se type2 é um pontei r o para vazio. char). sem reclamar. Atribuições sem casting adequado entre um "Ponteiro para type1 " e um "Ponteiro para type2 ". capaz de ser designado por qualquer das "Ponteiro para tipo " valor. nenhuma conversão é necessária. que apontam para o endereço de um fun- ção. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Ponteiros nulos A ponteiro nulo valor é um endereço que é garantia de ser diferente de qualquer outro válido ponteiro em uso em um programa. nenhuma conversão é necessária. A declaração vazio * Vice-presidente.. float. Por exemplo: int * Pn = 0. declara que vp é um ponteiro genérico. onde type1 e type2 diferentes tipos. atribuições ponteiro s ão il egai s. inclusive nulo. pode invocar um aviso do compil ador ou erro.. / / Definir um ponteiro de função int (* Pt2Function) (char. variáveis. ou seja. S e type1 é um p onteir o par a vazio. Mikr oele ktro nika - Solu ções de soft ware e . Se type1 é uma função e type2 não é (ou vice-versa). Função Ponteiros Função ponteiros são ponteiros. Nota: Assim funções e ponteiros de função com a convenção de chamada diferentes (argu- mento da ordem.

hardware para o mundo embutido 177 .

char i. mulC. } int mulC (char x. char y) { retorno x. Usando o operador de endereço e de frente o nome da função é opcional.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Atribuir um endereço para um ponteiro de função É muito fácil atribuir o endereço de uma função para um ponteiro de função. y%. } / / Array de ponteiro para funções que recebem dois caracteres e retorna int int (* Arrpf []) (char. y.Soluções de software e hardware para o mundo embutido . char) = { ADDC. / / Atribuir um endereço para o ponteiro de função int DoIt (float a. char y) { retorno x / y. } int SUBC (char x. vazio main () { para (I = 0. modC}. } int CIVD (char x. CIVD. Basta ter o nome de uma função adequada e conhecidos. / cessão / Exemplo: int ADDC (char x. SUBC. char y) { retorno x + y. char. i + +) { res = arrpf [i] (10. char c) {return a + b + c. } int modC (char x. b.} pt2Function = &DoIt. int res. i <5. } } 178 Mikroelektronika . char y) { retorno x * y.20). char y) { retorno x.

As seguintes declarações são verdadeiras: & A [i] = a + i a [i] = * (A + i) De acordo com essas orientações.Soluções de software e hardware para o mundo embutido 179 .subtraindo dois ponteiros. A expressão id [exp] é definido como * ((Id) + (exp)) quando: . . mas: * / y = aa * + 3. Quando o nome de uma matriz aparece na avaliação da expressão (exceto com operadores & e sizeof).id é um ponteiro e exp é um número inteiro. presume-se que o ponteiro aponta para um array de objetos. Devido a este fato. pode ser escrito: pa = & a [4]. / / Y = a [4] + 3 Mikroelektronika . Ao realizar-arith aritmética com ponteiros. / / X = a [7] / * .id é um inteiro e exp é um ponteiro.adição / subtração ponteiro e um valor inteiro. . . A aritmética interna realizada em ponteiros depende do especificador de memória força ea presença de modificadores ponteiro imperiosa.atribuição de um ponteiro para outro. Suportes [ ] indicam índices da matriz..comparando dois ponteiros.comparando ponteiro a zero. ou . é convertido implicitamente para o ponteiro apontando para matriz primeiro elemento. as matrizes não são lvalues modificáveis. / / Pa aponta para um [4] x * = (aa + 3). . Matrizes e ponteiros Matrizes e ponteiros não são tipos completamente independente na mikroC PRO para PIC. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Aritmética de ponteiro Aritmétic a de ponteir o no mikroC PRO para PIC é limitado a: .

incrementa o ponteiro (* Aa) + +. se eles são do mesmo tipo. } se (Pb! = 0) {. a [i + 1] = 3 (I + 2) [a] = 0.. se (Pa == pb) {. o cuidado deve ser tomado quando usando a precedênci a do operador : * Pa + +.. Atribuindo a constante inteira de 0 a um ponteiro atribui um valor nulo ponteiro para ele. dessa forma.. e > =..! =.. / / * Igual a (aa + +). O s result ados des tas oper ações s ão as me smas que se eles foram usados em valores subscritos de elementos da matriz em questão: int * Pa = & a [4]. Todos os ponteiros podem ser testados com sucesso para a igualdade ou a desigual- dade de nulos: se (Pa == 0) {. / * Não será executado em 4 não é igual a 2 * /} se (Pb pa>) {. ou seja..> . mas melhor evitar essa sintaxe.. você deve usar um typecast operador. A conversão explícita de tipo não é necessário se um dos ponteiros é genérico (da vazio tipo). / / Incrementa o objeto apontado! Os exemplos a seguir também são válidas.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Além disso. <=. se o ponteiro do actu- pontos aliado a alguma coisa. ou seja. Dois ponteiros apontando para a mesma matriz pode ser comparada usando oper-relacional ators ==. / / Mesmo que: * ((i + 2) + a) = 0. } Nota: Comparando os ponteiros apontando para diferentes objetos / matrizes podem ser realizados em responsabilidade do programador.uma visão precisa do armazenamento de dados de física é necessário.testes. <. pb * = & a [2]. a [i + 2] = 0 Atribuição e comparação A atribuição simples operador (=) pode ser usado para atribuir o valor de um ponteiro para outro. 180 . Se eles forem de tipos diferentes.. pois ele pode fazer o código realmente ilegível: (A + 1) [i] = 3. / / Mesmo que: * ((a + 1) + i) = 3. / * Irá ser executado como 4 é superior a 2 * /} Você também pode comparar os ponteiros para o valor zero.

Soluções de software e hardware para o mundo embutido .Mikroelektroni ka .

* / / * Matriz A tem n elementos do tipo some_type * / int i. 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 além do último elemento). como ponteiro "um após o último elemento". / * 3 pa é u m pontei ro que ap onta par a a [3]. / * Um array contendo 10 elementos do tipo int * / int * Pa = & a [0]. para (I = 0.. i <n. Em caso da tipo tipo. Por exemplo: vazio f (some_type um [] int n) { / * Função f manipula elementos de uma matriz. / Pa * é ponteiro para int. / Pa * aponta agora para o próximo elemento de uma matriz: a [1] * / Não há nenhum elemento. some_type * p = & a [0]. é claro. A resultado de Além 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 além dela). Por exemplo: int a [10]. você terá o ponteiro do ponto de ção de um elemento passado a matriz. e com a última iteração p excede o último elemento de um array * / } . de modo a [3] agora é igual a 6 * / aa + +.. i + +) { / * . aqui nós fazemos algo com p * . 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.na última iteração. mas P 2 + é indefinido.. o tamanho de um passo é um byte. No entanto. que é legal. apontando para a [0] * / * (Pa + 3) = 6. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Ponteiro Adição Você pode usar operadores + + +. a aplicação de um engano operador (*) para uma "Ponteiro para um após o último elemento" leva a um comportamento indefinido. e + = adicionar um valor inteiro a um ponteiro. / * . mas o está autorizado a assumir tal valor. * / p + +. Isto permite-lhe gravar loops que o acesso a elementos em um array seqüência meios de incrementar ponteiro . Se for declarado um ponteiro para apontar para tipo. Se tipo tem uma tamanho de 10 bytes. então a adição de 5 para um ponteiro para tipo avança o ponteiro de 50 bytes na memória. P 1 + é legal.

/ * Neste ponto. p * é indefinido! * / } Mikroelektronika .Soluções de software e hardware para o mundo embutido 181 .

Por exemplo: int a [10]. . / * I é igual a 8 * / pi2 -= (I> 1). você pode subtrair dois ponteiros. Além disso. A diferença será igual à distância entre dois endereços apontou.4: pi2 agora aponta para [0] * / 182 Mikroelektronika . você pode usar os operadores -.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Ponteiro Subtração Semelhante ao lado. i= pi2 . em bytes.Soluções de software e hardware para o mundo embutido . int * PI1 = & a [0]. / * Pi2 = pi2 .PI1. int * Pi2 = & a [4].E -= para subtrair uma parte integrante valor de um ponteiro.

em qualquer seqüência. declarator membro-lista é uma lista de estrutura membros. O2. Diferentemente dos arrays. Aqui está um exemplo: / * Estrutura que define um ponto: * / struct Dot {float x. seja fundamental ou derivados (com algumas restrições que devem ser discutidos mais tarde). O tipo de membro não pode ser o mesmo que o tipo struct sendo atualmente declarou. um membro de estrutura pode ser um campo de bits. Estrutura da declaração e inicialização Estruturas são declaradas usando a palavra-chave struct: struct tag {Membro declarator lista}. Em adi- ção. Nota: o mik roC PRO para PIC não suporta anônimos estruturas (ANSI-mergulhador gência). uma lista de declarações de variáveis. A mik roC PRO para PIC tipo de estrutura permite-lhe lidar com estruturas de dados complexas quase tão facilmente como pecado gle variáveis. estruturas são consideradas objetos únicos. y.} M YSTRUCT. Esses membros podem ser de qualquer tipo. / * Estrutura que define um círculo * / struct Circle { flutuar r. } O1. / * Ilegal! * / struct MYSTRUCT {MYSTRUCT ps *. Aqui. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Estruturas Uma estrutura é um derivado tipo normalmente representa uma coleção definida pelo usuário de nome membros (ou componentes). uma estrutura pode conter anteriormente tipos de estrutura definidos quando se declara uma instância da estrutura declarada. struct ponto central. No entanto. como no se- mugido exemplo: struct {S MYS TRUCT. / * Declarar variáveis O1 e O2 do Círculo * / Mikr oele . / * OK * / Além disso. na verdade.}. um membro pode ser um ponteiro para a estrutura que está sendo declarada. Variáveis do tipo estruturado são declarou o mesmo que as variáveis de qualquer outro tipo.}. tag é o nome de uma estrutura.

ktronika .Soluções de software e hardware para o mundo embutido 183 .

ARRS [10]. Por exemplo: / * Referindo-se às declarações do exemplo acima: * / / * Declarar e inicializar pontos P e Q: * / struct Dot p = {1. mas além- objetos al deste tipo não pode ser declarado em outro lugar. struct A {struct B pb *.} / / Raio é de 1. Normalmente.5}. 0) Declarações incompletas declarações incompletas são também conhecidas como as declarações para a frente. não há necessidade de usar os dois tag e typedef: ou pode ser usado em es- tipo de declarações ture. 184 Mikroelektronika . Um ponteiro para um tipo de estrutura A pode legalmente incluídos na declaração de outra estrutura B antes A foi declarado: struct A.. MyStruct s. ARRS [10] / * mesma estrutura MYSTRUCT s.. porque não há definição para isso em esse ponto. Estruturas Untagged e TYPEDEFs Se a marca de estrutura é omitido. ps *. MyStruct}..CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Note que a tag estrutur a pode ser omitido. Q = {3. é permitido aqui. um estrutura untagged é criado. É possível criar um typedef ao declarar uma estrutura. MyStruct s.}. 1. em segui da adicionai s deste tipo não pode ser declarados em outro lugar. A primeira aparição de A chama-se incompleta. etc * / / * Sem tag: * / typedef struct {. 0}. porque a definição de B não precisa do tamanho da A. -0. MyStruct}. com ou sem a tag: / * Com tag: * / typedef struct MYSTRUCT {. A estrutura é inicializada atribuindo a ele uma seqüência delimitada por vírgulas de valores dentro aparelho. * ps. mas os objetos . semelhante à matriz.}. / / incompletos struct B {struct Um ano *. Para obter mais informações. o centro está em (0. O untagged estruturas podem ser usados para declarar os identificadores na delimitado por vírgula membro declarator-l ista ser do tipo de estrutur a dada (ou derivados) . 0.7. / * Declarar e inicializar círculo o1: * / struct Circulo o1 = {{1. consulte Estruturas Untagged abaixo.. Uma declaração incompleta...Soluções de software e hardware para o mundo embutido .}..

É não é necessário que o tamanho da estrutura é igual à soma das suas membros tamanhos. c. / * Func1 () retorna uma estrutura * / MYSTRUCT * func2 (void). Nota: Veja também a trabalhar com as estruturas. embora descrições de sua estrutura são idênticas: * / struct {Int M1. M2. Isso irá copiar todo o conteúdo da variável a destino. M2. é maior devido a certas limitações de armazenamento de memória. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem membros Untagged estrutura e união são ignorados durante a inicialização. Trabalhar com estruturas Estruturas representam tipos definidos pelo usuário. Por exemplo: / * A e b são do mesmo tipo: * / struct {Int M1. Note-se que duas variáveis são do mesmo tipo estruturado somente se ambos são definidos pela instrução ou mesmo usando o mesmo tipo identificador. / * Diretamente * / vazio func2 (MYSTRUCT SPTR *.). Estruturas e Funções A função pode retornar um tipo de estrutura ou um ponteiro para um tipo de estrutura: MYSTRUCT func1 (void). independentemente do interior complexidade de uma determinada estrutura.Soluções de software e hardware para o mundo embutido 185 .} a. M2. / * Mas. Atribuição As variáveis do mesmo tipo estruturado pode ser atribuído um para outro por meio de operador de atribuição simples (=). / * Func2 () retorna ponteiro para estrutura * / Uma estrutura pode ser passada como um argumento para uma função no das seguintes maneiras: vazio func1 (MYSTRUCT s. b.} d. struct {Int M1. Um conjunto de regras relativas à aplicação de estruturas é estritamente definido.). / * Através de um ponteiro * / Mikroelektronika . d _não_ são do mesmo tipo. Muitas vezes. Tamanho da Estrutura O tamanho da estrutura de memória pode ser recuperada por meio do operador sizeof.} c.

A expressão ps-m> é uma abreviação conveniente para (* Ps). (Ponto final) ..m é lvalue. s. é do tipo M. Suponha que o objeto s é do tipo struct S e ps é um ponteiro para s. S SPTR} *. O operador -> é chamado o selector membro indireto (ou ponteiro). M Por exemplo: struct MYSTRUCT { int i. e representa o objeto membro m em s. 186 Mikroelektronika . A expressão m SPTR-> é um lvalue menos m é um tipo de matriz. . se m é um membro iden- tifier do tipo M declarados em s. / / Atribui ao membro d de MYSTRUCT s A expressão s.23.Soluções de software e hardware para o mundo embutido .i = 3. e representa o objeto membro m em S. Suponha que o objeto s é do tipo struct S e m é um identificador de membro do tipo M declarados em s. então a expressão s.-> (Seta à direita) O operador .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Estrutura de Acesso ao Portal Estrutura e membros do sindicato são acessadas usando o oper seguinte seleção de dois ators: . desde que s é lvalue e m não é uma matriz do tipo. Então. / / Atribui r ao mem bro do M YSTRUCT i s SPTR -> d = 1.. = &S..m / / Acesso direto a um dos membros m é do tipo M. é chamado o selector membro direto e é usado para acessar diretamente um dos membros da estrutura. char str [21]. a expressão ps-m> / / Acesso indirecto aos membros m. / / Idêntico a (* ps) m. dupla d.

/ / atribuir 3. membro por membro de atribuição * / AA BB =. } AA. s. / / atribuir 1. dupla d. struct {B int i.23.d = bb. / / atribuir 2 a o membro j de A SPTR-> d = 1. j. dupla d.i.j = 2. aa. struct Um aa.. }.j = bb. dupla x. / * ILEGAL: * diferentes tipos / / * Mas você pode atribuir membro por um membro: * / aa.i = bb. mas os objeto s aa e bb são tipos de estrutura diferente. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Acessando estruturas aninhadas Se a estrutura B contém um campo cujo tipo é a estrutura A.Soluções de software e hardware para o mundo embutido 187 . struct {B int i.14.23 para o membro d de B aa. Mikroelektronika . . de modo que em struct A { int i. aa.d.x SPTR-> = 3. os membros do A pode ser acessado por duas aplicações do seletores membro: struct A { int j. / * OK: mesmo tipo. / / atribuir 3 a o membro i de B s.14 ax membro de uma Estrutura Singularidade Cada declaração de estrutura apresenta um tipo de estrutura única.aa. AAA. j.j. Bb}. dupla d.. As estruturas podem ser atribuídas apenas se a origem eo destino- nação tem o mesmo Tipo: aa = AAA. os objetos aa e aaa ambos são do tipo struct A. SPTR} * s..i = 3.

e 3 são utilizadas quando mu detém char. do tipo myunion. tmp = mu.>). Ontem} * mu. Tamanho da União O tamanho de uma união é o tamanho de seu membro maior.d / / OK: mu. com a palavra-chave União usados em vez de struct União tag {membro declarator lista}. Em nosso exemplo anterior. O id entifica dor pm é um ponteiro para a união myunion. o valor de apenas um dos membros da União podem ser armazenados a qualquer momento. pode ser usado para prender um 2-byte int. A diferença fundamental é que uma sindicalistas partilham a mesma mem - espaço de memória disponível.016. dupla d.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Sindicatos União tipos são tipos derivados partilha muitas das características sintáticas e funcional de tipos de estrutura.016 188 Mikroelektronika . quando mu detém a int bytes do objeto. A identificador mu. Aqui está um exemplo simples: União myunion { / / Tag sindicato é 'myunion' int i. os sizeof (myunion união) e sizeof (mu) bytes de retorno 4. mas duas não são utilizadas (Acolchoado).d = 4. mas apena s um deles. char ch.Soluções de software e hardware para o mundo embutido . Ao contrário das estruturas " membros.. em determ inado mom ento.d = 4. Nota: O mik roC PRO para PIC não suporta sindicatos anônimo (ANSI-diver gência). 4-byte dou- ble ou de by te úni c o char. União Acesso ao Portal membros da União podem ser acessados com os seletores estrutura membro (e -. ser cuidado ao fazer isto: / * Referindo-se às declarações do exemplo acima: * / pm = μ mu. Sindicatos Declaração Os sindicatos têm a mesma declaração como estruturas.

e vice-versa. } Aqui.i. Quando devidamente convertido.i. No entanto. um ponteiro para uma união pontos a cada um dos seus membros. Como tal. estrutura campos de bits necessários dois bytes. / / Resultado peculiar i am-> = 3. tmp = mu. Campos Bit Campos de bits são especificados os números de bits que podem ou não ter um associado iden- tifier. ele provavelmente não vai fornecer uma interpretação inteiro úteis. Estruturas e os sindicatos podem conter campos de bits que podem ser de até 16 bits. Declaração de campos de bits Campos de bits pode ser declarado apenas em estruturas e uniões.i corresponde a partes das anteriormente at ribuídas casal. você não precisa declarar campos de bits. Cada componente requer um identificador de cólon e sua largura em bits para ser explicitamente especificado. / / OK: mu. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem tmp = mu.i = 3 A terceir a linha é legal. Declare uma estrutura normal ly e atribuir campos individuais como este campos (precisam ser não assinado): struct tag { não assinado declarator bitfield-lista. Você não pode pegar o endereço de um campo de bits. Nota: Se você precisar manipular bits específicos das variáveis de 8 bits (Char e não assinado curto) ou registros.veja Acesso Individual Bits para mais informações. solução muito mais elegante é a utilização do mik roC PRO para a capacidade intrínseca da PIC para o acesso de bits individuais . tag é um nome opcional da estrutura. Campos de bits oferecem uma maneira de subdividir em partes de estruturas chamado de definido pelo usuário tamanhos.i é um tipo integr al . largura total de todos os componentes não pode exceder dois bytes (16 bits). declarator bitfield-lista é uma lista de campos de bits. Como um objeto. Campos individuais são . desde mu. o padr ão de bits em mu.

embaladas em dois bytes da direita para a esquer da. ignorando. você pode omitir identifi- er (s) para criar uma artificial "Estofo".Soluções de software e hardware para o mundo embutido 189 . assim bits irrelevante. Em bitfield-declarator lista. Mikroelektronika .

3 e 4 / / Bits 5. / / Passar bits 0 e 1. poderíamos 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. nenhum identificador aqui mybits: 3. vazio main () { .. hi_nibble: 4.Soluções de software e hardware para o mundo embutido . hi_nibble (Bits 7 .hi_nibble = 0x0C. / / Typecasting: / / 1.lo_nibble = 7.. se há uma necessidade de manipular bits apenas 2-4 de registrar-se como um bloco. endereço da estrutura para ponteiro para void / / 2. Value_For_PORT0.} myunsigned. / / Relevantes bits 2. Uso direto eo selector de membro indirectos (.. high_byte: 8. Acesso campos de bits Campos de bits pode ser acessado da mesma forma como o membros da estrutura.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Por exemplo. dereferencing para obter o valor } 190 Mikroelektronika . Aqui está um exemplo: typedef struct { lo_nibble: 4. 8). criar uma estrutura como esta: struct { não assinado : 2.. e ->). Por exemplo. 6 e 7 são implicitamente deixados de fora Myreg}. ponteiro para void para ponteiro para char / / 3. que declara o tipo estruturado myunsigned contendo três componentes: lo_nibble (Bits 3 . 4) e high_byte (Bits 15 . 0).. Value_For_PORT0. * P0 = (char *) (Void *) & Value_For_PORT0.

consulte a conversão de tipo explícito. 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. consulte o Conversões Standard. como a + b. . 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. objetos do tipo unsigned char byte sempre tem seus altos definido para zero quando convertido para int. a declaração e função exigente operandos devidamente digitado / argumentos. . A mik roC PRO para PIC define um conjunto de conversões para o padrão interno tipos. tipo conversão é necessário. e passá-lo um objeto de tipo diferente. Nesse caso. sem qualquer interferência do programador. No entanto. o programador pode exigir a conversão explicitamente meio do distribuir os papéis operador. Além disso. Para obter mais informações. e usamos uma expressão de tipo diferente. A conversão é necessária nas seguintes situações: . com cada operadora. Standard Conversões Ao usar a expressão aritmética. . e nós usamos um operando de dife- diferentes tipos. o mik roC PRO para PIC realiza conversões de tipo implícito antes a expressão é avaliada. Objetos do tipo signed char sempre usar a extensão de sinal. respectivamente. Essas conversões padrão incluem promoções "Inferiores" tipos de "Superior" tipos. Atribuir um objeto de caráter assinado (como uma variável) a um objeto resulta integral na extensão de sinal automático.Se uma instrução requer uma expressão do tipo especial (de acordo com def idioma rial).Se um operador requer um operando de tipo particular. .Se intializing um objeto (na declaração) com um objeto de tipo diferente. . onde um e b são de diferentes tipos de aritmética. Para obter mais informações. Conversão de objeto de um tipo que significa o tipo de objeto é alterado para outro tipo. dependendo se o tipo mais curto é assinado ou não assinado. Nessas situações.Se uma expressão a seguir a palavra-chave retorno não coincide com o declarado fun- ção tipo de retorno. nós muitas vezes têm de usar objetos de "Descasamento" tipos de expressões. CAPÍTULO 6 mikroC PRO para PIC Idioma Referência Conversões de Tipo A mik roC PRO para PIC é uma linguagem estritamente digitadas. no interesse da precisão e consistência. o compilador irá fornecer uma conversão automática implícita de tipos. desde pelo compilador quando necessário.Se uma função requer um parâmetro formal de determinado tipo.

Soluções de software e hardware para o mundo embutido 191 .Mikroelektronika .

com o mesmo valor 3. . Caso contrário. então o outro operando é convertido para tempo. 1.CAPÍTULO 6 Idioma Referência mikroC PRO para PIC Nota: Conversão de dados de ponto flutuante em valor integral (em tarefas ou através de typecast explícito) produz resultados corretos apenas se o flutuar valor não exceda o escopo de destino tipo integral. ? 3. todos os dois valores associados a um operador ou são int (Incluindo o tempo e não assinado modificadores) ou flutuar (Equivalente a dupla e long double na mikroC PRO para PIC).75 * / Ponteiro de conversão Tipos ponteiro pode ser convertidas para outros tipos de ponteiro usando o mecha typecasting- nismo: char * Str. ambos os operandos são int. ? 1 . se um dos operandos for unsigned long. sinal estendido 4. Detalhes: Aqui estão os passos que o mik roC PRO para PIC utiliza para converter os operandos em uma arith- expressão aritmética: Em primeiro lugar. unsigned short converte em int. enum converte em int. com o mesmo valor. zero-preenchida 5. int * Ip. 3. / 4? 15. char converte em int 2. Caso contrário. * 04/05 / *? (3 . curto converte em int. Aqui estão alguns exemplos de conversão implícita: 2 + 3. se um dos operandos for unsigned. ? 1 * 3.* 5. * / 3.* 5) / 4? (3 .* 3. se um dos operandos for longo prazo. Caso contrário. ? 3. com o mesmo valor Depois disso. Caso contrário.1? 5. com o mesmo valor.1 / *? 2. o outro operando é convertido para não assinado. o elenco * Tipo irá converter um ponteiro para o tipo "Pont eiro para tipo ". + 3. o outro operando é convertido para unsigned long. / *? (04/05) * 3. 4. qualquer tipo de pequeno integrais são convertidas de acordo com as seguintes regras: 1. Mais genericamente.1 * / 04/05 * 3. 2. Se um dos operandos for float. 5.) / 4? 15. / 4 . o outro operando é convertido para float. signed char converte em int. str = (char *) De IP. O resultado da expressão é do mesmo tipo que a dos dois operandos.

192 Mikroelektronika .SOFTWARE E soluções de hardware para embutidos mundo .

* /: Resultando num valor do tipo double (Double) a + b. o compilador irá fornecer uma conversão automática implícita de tipos quando necessário. sem qualquer interferência do usuário. o que é seu tipo. Além disso. especificadores de declaração e inicialização. definições. Parênteses são obrigatórios. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Concersions tipo explícito (conversão de tipo) Na maioria das situações. / * Linha a seguir irá coagir a dobrar. / * Linha a seguir para coagir um unsigned int * / (Unsigned int) a. b.informa o compil- er o que o nome representa.Matrizes de outros tipos . Por exemplo: / * Vamos ter duas variáveis do tipo char * / char a.Soluções de software e hardware para o mundo embutido 193 .Preprocessor macros Mikroelektronika . / / equivalente a ((double) a) + b. e enumeração membros Estrutura - membros da União Europeia - . etc Esta seção revisa os conceitos relacionados às declarações: declarações.Variáveis Constantes - . Declarações A declaração apresenta um ou vários nomes para um programa .Funções -Tipos .Tags estrutura sindical.Declaração de rótulos . o que operações são permitidas com ele. b então forçar a dupla automaticamente. o usuário pode converter explicitamente um operando em outro tipo usando o operador unário prefixo distribuir os papéis operador: (Tipo) de objeto Isto irá converter objeto a um especificada tipo. A gama de objetos que podem ser declaradas inclui: .

. Declarações e declarators A declaração contém especificador (s).) . ou apenas declarações. seguido por um ou mais identificadores (decla- res). } / * Definição da variável i * / int i. A declaração começa com especificadores de classe de armazenamento opcional.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Declarações e Definições Definindo declarações. * / / * Se limitou a informar compilador que máxima é uma função * / int max (). ao lado de introduzir o nome de um objeto. Cada uma das variáveis é declarad o de Tipo. int y) { retorno (X> y =)? x: y. são qualquer seqüência de identificador es distintos com inicializador es opcional. . Declarações de identificadores de variáveis têm o seguinte padrão: armazenamento de classe [qualificador de tipo] Tipo var1 [= in ic1]. Referenciando declarações. isto é. eu já está definido! * / int i. também conhecido como definições. tipo padrões para int. A especificador armazenamento de classe pode tomar os val ores externo. excepto se: . onde var1. estático.. também estabelecer a criação (onde e quando) de um objeto. Aqui está uma visão geral. especialmente em um declaração de vários programas. a alocação ção da memória física e sua inicialização possível.É o typedef declaração Não pode ser declarações de referência para muitos o mesmo identificador.Declara uma função sem especificar o seu corpo . Declaração é também uma definição. ou o . Por exemplo: / * Aqui está uma declaração de Max nondefining função. Os identificadores são separados por vírgulas e a lista é termi - nados por um ponto e vírgula. . e não tem Inicializador ou organismo (no caso de func. mas apenas uma definição para esse identificador é permitido. / * Seguindo a linha é um erro. e outros modificadores. var2. se omitido. basta fazer seus identificadores e tipos conhecidos para o compilador. var2 [= inic2]. especificadores de tipo.Tem o extern especificador.. . / * Aqui está uma definição do valor máximo da função: * / int max (int x. registrar..

194 Mikroelektronika .SOFTWARE E soluções de hardware para embutidos mundo .

Cada instância de um identificador específico com ligação interna representa o mesmo objeto ou função dentro de um único arquivo. Por exemplo: / * Cria três variáveis do tipo inteiro chamado x. Estes atributos são determinados pela localização e formato de suas declarações. y = 2. y e z e inicializar X e Y para os valores 1 e 2. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem padrão auto. A articulação é um processo que permite que cada instância de um identificador deve ser associado corretamente com um determinado objeto ou função. mas com- as linhas de origem omitida pelas directivas de pré-processamento condicional. e inicializá-lo para 0. z / / z continua a ser inicializado / * Criar um q variável de ponto flutuante com modificador estático. Opcional tipo de qualificação pode assumir valores const ou voláteis. Regras de Linkage . Um problema aris- es quando o mesmo identificador é declarado em escopos diferentes (por exemplo. Estas são todas as declarações de definição.25: * / float estático q = 0. estreitamente relacionado com o seu âmbito: ligação externa ou a ligação interna.25. em diferentes arquivos). togeth- er com um uso (ou implícitas por default) explícita do especificador de classe de armazenamento estáticas ou externo. o armazenamento é alocado e qualquer inicializadores opcional são aplicadas. ligando os arquivos com as bibliotecas de objeto resultante preexistente. Todos os identificadores têm uma ligação de dois atributos. Para mais detalhes. Cada instância de um identificador específico com ligação externa representa o mesmo objeto ou função em toda a conjunto de arquivos e bibliotecas que compõem o pro- grama. consulte as classes de armazenamento e de qualificação de tipo. Um termo unidade de tradução que se refere a um arquivo de código fonte. ou declarada mais de uma vez no mesmo escopo. juntamente com todos os arquivos incluídos. respectivamente: * / int x = 1. Linkage Um programa executável é normalmente criado através da compilação de vários independentes trans- unidades de lamento. em seguida.

Global nomes têm ligações externas. Se o mesmo identificador aparece com ligação interna e externa dentro do mesmo arquivo. Mikroelektronika . Os nomes locais têm ligações internas. o identificador terão ligação interna.Soluções de software e hardware para o mundo embutido 195 . identificador significa o mesmo objeto ao longo de todos os arquivos do programa. o mesmo identificador pode ser usado em diferentes arquivos para significar diferentes objetos.

nomes de alcance arquivo. Uma classe de armazenamento pode ser estabelecido pelo sin- fiscal de uma declaração. A classe de armazenamento dita a localização (segmento de dados. Uma definição externa é uma externa declaração que define um objeto ou uma função e também aloca um dispositivo de armazenamento. ou por ambos os fatores: tipo de armazenamento de classe identificador O armazenamento especificadores de classe no mik roC PRO para PIC são: auto Registre-se estáticas . então exatamente uma definição externa desse identificador deve estar em algum lugar todo o programa. nomes de alcance de arquivo. Não existe definição mais do que uma externa pode ser dado para cada identificador de unidade de tradução declarado com ligação interna. têm ligação interna 3. ou durante execução de alguns blocos de código). explicitamente declaradas como estático. A mik roC PRO para PIC compilador deduz destes atributos a partir de declarações implícitas ou explícitas no código-fonte. 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). tem ligação interna 2. têm ligação externa A classe de armazenamento especificadores auto e Registre-se não pode aparecer em uma externa dezembro- vai fazendo.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Linkage Regimento Interno 1. registo. typedef nomes têm ligações internas 4. heap ou pilha) de objeto e sua duração ou vida (o tempo todo funcionamento do programa. Se um identificador declarado com ligação externa é usada em uma expressão (excepto como parte do operando da sizeof). nomes de alcance arquivo. constantes enumeração tem ligação interna Linkage regras externas 1. por sua colocação no código-fonte. explicitamente declaradas como const e não explicitamente declarado como externo. que não satisfaçam a qualquer das afirmado anteriormente interna regras de articulação.

extern 196 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

Estático Um nome global declarada com o estáticas especificador tem ligação interna. Tipo. A declaração não é uma definição se tem o extern especificador e não é inicializado. o que significa que ela é local para um determinado arquivo. Veja também as funções. qualificação Os qualificadores do tipo const e voláteis são opcionais nas declarações e não realmente afetar o tipo de objeto declarado. Um nome local declar ada com o estáticas especi fic a dor tem duraç ão estátic a. ou corpo da função. Use estáticas com uma variável local para preservar o valor passado entre chamadas sucessivas à função que desempenha. é definido em um módulo separado do código-fonte. Ver Duração para mais informações. Extern Um nome declarado com o extern especificador tem ligação externa. Esta é o padrão para as variáveis locais e raramente é usada. Em declarações com o const qualificador de todos os objetos precisam ser inicializadas. Use o extern modificador para indicar que o armazenamento real e do valor inicial do variável. A palavra-chave extern é opcional para um Função protótipo. Eliminatórias Const O qualificador const implica que um objeto declarado não irá alterar o seu valor durante tempo de execução. menos que a função é redefinida como estático. A mik roC PRO para PIC trata objetos declarados com o const qualificador o mesmo como literais ou constantes de pré-processamento. Veja Linkage para mais informações. Registre-se No momento o modificador Registre-se tecnicamente não tem nenhum significado especial. Se o usuário tenta alterar um objeto declarado com o const compilador qualificador irá reportar um erro. . A mik roC PRO para PIC compilador simplesmente ignora os pedidos de atribuição de registo. Func- ções declaradas com extern são visíveis em todos os arquivos-fonte do programa. a menos que tenha sido anteriormente declarados como tendo ligação interna. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Auto A auto modificador é usado para definir que uma variável local tem uma duração local. auto não pode ser usado com globals. Veja Linkage para mais informações.

Mikroelektronika .Soluções de software e hardware para o mundo embutido 197 .

O especificador typedef ocupa o primeiro lugar na declaração: typedef <type_definition> sinónimos. É uma prática comum para nomear identificadores tipo personalizado com início de ing letra maiúscula . Pti é um sinônimo para o tipo "Ponteiro para int ". Uma declaração a partir do typedef especificador não introduz um objeto ou uma função de um determinado tipo. sinônimo "Distância" pode ser utilizado como identificador de tipo: * / Distância i. / * Agora. Array [10]. Use o modificador volátil para indicar que uma variável pode ser alterado por uma rotina de fundo. / / declara variável i de int unsigned long Na typedef declaração. Qualificador volátil O qualificador voláteis implica que uma variável pode alterar seu valor durante a execução independentemente do programa. Por exemplo: / * Vamos declarar uma sinônimo de "unsigned long int" * / unsigned int typedef longo Distância. mas em vez de objetos. Aqui. A typedef palavra-chave atribui sinônimo de <type_definition>. A sinônimo deve ser um identificador válido. Declarando um objeto a ser voláteis. adverte o compilador não fazer suposições sobre o valor de um objeto ao mesmo tempo avaliar expressões em que ela ocorre porque o valor do podem ser alteradas a qualquer momento.isso não é exigido pelo mik roC PRO para a PIC. mas sim um novo nome para um determinado tipo.14159. como em qualquer outra declaração. O typedef dezembro - combinar declarações são usadas para construir mais curto ou mais nomes convenientes para os tipos já definida pela linguagem ou declarada pelo usuário. o declaração typedef é idêntico a um"Normal" declaração. Por exemplo: typedef int * PTI. uma rotina de interrupção. e Array é um sinônimo para o tipo "Matriz de 10 int elementos ". Em outras palavras. vários tipos podem ser declarado de uma vez. Especificador typedef O especificador typedef introduz um sinônimo para um tipo especificado. asm Declarações 198 . declara tipos.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Por exemplo: const PI dupla = 3. ou a porta I / O.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

4 bytes). 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. 0 . Máxima (g_var) . e asm instruções de montagem Nota: O ponto e vírgula e LF são encerra âmbito asm para instruções de montagem único. 0 .. Superior (g_var) MOVF _g_var 3. Ou _asm): asm { bloco de instruções de montagem } Existem duas maneiras de embeding instruções de montagem único código C: asm instruções de montagem. que é do tipo longo (ou seja.Soluções de software e hardware para EMBEDDED MUNDO 199 . Também é recomend - ed para verificar "as linhas de código Incluir nos arquivos de saída" na caixa Configurações de saída Mikroelektronika .. Nomes simbólicos pode ser utilizado em substituição (anúncio será exibido estes nomes. Note-se que cannnot numerais ser usados como endereços absolutos de SFR e GPR variáveis em instruções de montagem. A mik roC PRO para PIC comentários (tanto de linha única e multi-linha) são permitidos em incorporado código de montagem. corresponde a Oi (g_var) MOVF _g_var 2. Segundo byte de _g_var. Coloca byte menos significativo de g_var no registo W MOVF _g_var 1. 0 . bem como endereços). As instruções de montagem podem ser agrupados pela asm palavra-chave (ou _. estiver de acessá-lo assim: MOVF _g_var 0. As declarações _asm e _asm Também são permitidas no mik roC PRO para PIC e têm o mesmo significado. 0 . CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem A mik roC PRO para PIC permite a incorporação de montagem no código-fonte por meio da declaração asm. Se você tem uma variável global "g_var". Este é a razão pela qual a sintaxe a seguir não é bloco asm: asm { bloco de instruções de montagem } Este código será interpretado como única linha asm vazio seguido pelo composto C declaração.

que opcionalmente pode ser fechado chaves. Além disso. Inicialização automática .1. -0.Uma lista de inicializador. O inicializador para um objeto automático pode ser qualquer expressão jurídica que ava- minado a uma atribuição compatível com valor para o tipo das variáveis envolvidas. consulte Matrizes. int y. O valor inicial de um objeto é o da expressão.} {m = 30. tópicos relacionados: mik roC PRO para PIC specifcs Inicialização O valor inicial de um objeto declarado pode ser definido no momento da declaração (initializa- ção).CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Nota: Compiler não esperar que os bancos de memória para ser alterado dentro do conjunto código. Se o usuário quiser Para fazer isso. Neste caso. / / Onde "complexo" é uma estrutura (float. 40}. o inicializador deve ser um dos seguintes procedimentos: . Para obter mais informações. Para mais informações. inicial- izes elementos sucessivos na matriz. Inicializadores para globals e estáticas objetos devem ser constantes ou expressões constantes- sões.2}. float) Para estruturas ou uniões com duração de armazenamento automático. você pode inicializar matrizes do tipo de personagem com uma seqüência literal. tipos escalares são inicializados com uma única expressão. então ele deve restaurar o banco de seleção anterior. as mesmas restrições para o tipo e conversões para atribuições simples são aplicados para inicializações também. Por exemplo: struct dot {int x. Uma parte da declaração que especifica a inicialização é chamado inicializador. Cada personagem na seqüência de caracteres. char * S = "Olá". . incluindo o terminador nulo.A única expressão compatível com o sindicato ou o tipo de estrutura. opcionalmente entre chaves. consulte Estruturas e Sindicatos. Por exemplo: int i = 1. struct c complexo = {0. a inicial valor do objeto é o da expressão.

A mik roC PRO para PIC não fornecer a inicialização automática para objetos.Softwares e soluções de hardware para Embedded World . Unini- 200 Mikroelektronika .

Tipo de função também pode ser um ponteiro. como Pascal. Cada programa deve ter uma única função externo chamado principal marcando a entrada ponto do programa. C não faz distinção entre procedimento e função - funções os dois papéis. float * significa que uma função . chamada de função é considerada ser uma expressão como outra qualquer. Isso pode ser restrita usando o estáticas classe de armazenamento especificador na declaração da função (ver Classes de armazenamento e ligação). Essas funções são equivalentes às procedimentos linguagem de programação de outras linguagens. O tipo pode ser omitida nas declarações função global. ligando-precom empilhados bibliotecas. e assumirá a função int tipo por padrão. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem globals tialized e objetos com duração estática terá valores aleatórios de mem- teoria. A sintaxe da declaração da função é: function_name tipo (parâmetro-declarator-list). Por exemplo. e pode ser de qualquer padrão ou usuário tipo definido. Esse nome é usado para chamar a fun- ção. ver as chamadas de função por mais da informação. Funções têm ligação externa por padrão e são normalmente acessíveis a partir de qualquer arquivo no programa. o valor de retorno da função não é usada. As funções são geralmente definidas como subprogramas gramas que retornar um valor baseado em uma série de parâmetros de entrada. Função Declaração As funções são declaradas em arquivos do usuário de origem ou disponibilizar. Valor de retorno da função pode ser usada em expressões . tipo representa o tipo de resultado da função. Nota: Verifique as especificidades PIC para obter mais informações sobre as funções ' limitações na Microcontroladores PIC compatível. Muitas vezes. ou dentro de arquivos de programa. FUNÇÕES As funções são centrais para a programação C. As funções são normalmente declarado como protótipos no padrão ou fornecido pelo usuário arquivos de cabeçalho. Para funções que não retornam valor vazio tipo deve ser usado.tecnicamente. denominada lado os efeitos. dependendo do lado os efeitos. C permite que uma função para criar resultados que não o seu valor de retorno. A function_name deve ser um identificador válido.

resultado é um ponteiro para float.Software e hardware SOLUÇÕES PARA mundo embutido 201 . O ponteiro genérico void * também é permitido. Mikroelektronika .

declara tor parâmetro-lis ta é uma lista de argumentos formai s que a função recebe. Estes declarators especificar o tipo de cada parâmetro de função. Quando declarar uma função. um função não tem argumentos. deixa claro. O nome de um parâmetro no protótipo de função tem o seu âmbito limitado ao protótipo. Ao contrário de declaração de variável. verificação de tipo e conversões de tipo. o usuário pode ler que arquivo para obter as informações necessárias para escrever programas que chamar essas funções. mas faz seu tipo. Se um arquivo de cabeçalho contém protótipos de função. mas pode ser declarado várias vezes. note que este é o caso somente quando vazio pode ser usado como um tipo de argumento. Isso permite que um parâmetro identificador de ter nomes diferentes em declarações diferentes de uma mesma função: / * Aqui estão dois protótipos da mesma função: * / int teste (const char *) / * Declara * Teste de função / int teste (p const char *) / * Declara a mesma função de teste * / Função protótipos são muito úteis na documentação de código. permite uma melhor controle sobre número de argumento. uma função Também não tem quaisquer argumentos. Protótipo de função A função pode ser definido apenas uma vez no programa. a função Cf_Init tem dois parâmetros: Controle de porta e porta de dados. char * Dataport). Por exemplo. então o Indentificador é usado apenas para o erro verificação. Além disso. 202 . Se um parâmetro protótipo inclui um identificador. supondo que as declarações são compatíveis. vulgarmente conhecida como a protótipo da função. se a lista é vazio. Se a lista é vazio. cada um argumento na lista de suas necessidades de especificador de tipo próprio e qualificador possível const ou voláteis. Dentr o parêntes es . o formal argumento o identificador não precisa ser especificado. O compilador usa essa informação para verificar a validade das chamadas de função. que é qual? O protótipo de função: vazio Cf_Init (char * Ctrlport.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC A função não pode retornar uma matriz ou de outra função. A questão é. Esse tipo de declaração.

Mikroelektroni ka - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo .

A corpo da função é tecnicamente um bloco . a instrução de retorno pode ser omitido por completo. ou se as variáveis locais são colocadas no espaço de Rx. se é a última declaração no corpo da função. use o retorno declaração. * Fi = (x == 0 & & y == 0)? 0: atan2 (y. Aqui está uma definição de função de exemplo: / * Função max retorna mais um dos seus dois argumentos: * / int max (int x. Todas as variáveis declaradas dentro do corpo da função são locais à função. dupla * R. y) para polares (r. têm um alcance de função. o que significa que fun- ção declarações não podem ser aninhados. fi): * / # Include <math. Mikroelektronika .h> vazio polar (dupla x. O retorno na declaração funções do vazio tipo não pode ter um parâmetro . x). dupla * Fi) { * R = sqrt (x * x + y * y). CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Definição de Função Definiç ão da função consiste em sua declar aç ã o e função do corpo.Soluções de software e hardware para o mundo embutido 203 . dupla y. retorno. / * essa linha pode ser omitido * / } Function reentrância reentrância funções é permitido se a função não tem parâmetros e locais vari- veis. A própria função só pode ser definido no âmbito do arquivo.uma seqüência de definições locais e instruções entre dentro de chaves {}. ou seja. int y) { retorno (X> y =)? x: y. Para retornar o resultado da função. } Aqui está uma pequena função que depende de efeitos colaterais em vez de valor de retorno: / * Função Descartes converte coordenadas (x.na verdade. Lembre-se que o PIC tem pilha e memória limitações que podem variar muito entre os MCUs.

Se um protótipo de função está em escopo. mas este não tem efeito sobre o argumento real- mentos na rotina de chamada. / / O código a segui r seria e rrado. as conversões de tipo implícitas regras serão aplicadas. Argumento Conversões Se um protótipo de função não tenha sido previamente declarada. e é inicializado com a expressão do retorno declaração. Após voltar de uma função. / / Para que ele possa alterar o valor de um argumento real: Soft_Uart_Read (e erro). Soft_Uart_Read leva o ponteiro para a variável de erro. O objeto pontiagudo pode ser ac essado por * usando o operador de indireção. Após a chamada de função. Use a função chamada operador (): function_name (expression_1. v ocê deve passar o valor / / Variável de erro para a função: Soft_Uart_Read (erro). em seguida. Em C. Isto significa que a chamada de função como um operando na expressão complexa é tratada como um resultado da função. / / Por exemplo. mas a ordem da sua avaliação não é especificado. os argumentos escalares são sempre passados para a função de valor. Número e tipos de argumentos reais devem coincidir com as dos parâmetros da função formal. todos os parâmetros formais são criados como objetos locais inicializado os valores dos argumentos reais.. o fun- da de consulta pode ser escrita como uma expressão de auto-contidas. Um objeto escalar podem ser passadas através do endereço. Se a função tem nenhum resultado (tipo resultado nulo) ou o não é necessário.CAPÍTULO 6 Idioma Referência mikroC PRO para PIC Chamadas de função e argumento de conversão Chamadas de função A função é chamada com argumentos reais colocados na mesma seqüência em que seus correspondentes parâmetros formais. expression_n) Cada expressão na chamada de função é uma argumento real. Se os tipos não partida. o mik roC PRO para PIC converte o argumento passado para o tipo de parâmetro declarado de acordo com as mesmas regras de conversão como em estado de atribuição . argumentos reai s podem ser de qualquer complexidade.. um objeto temporário é criado no local da chamada. . o mik roC PRO para PIC converte argumentos integral para uma função chamada de acordo com o aumento integral (Expansão) regras descritas no Standard conversões. se uma for- parâmetro formal for declarado como um ponteiro. A função pode modificar os valores dos seus parâmetros formais..

Software e Soluções de hardware para Embedded World . mentos. 204 Mikroelektronika .

o número de argumentos devem ser iguais. / Protótipo / extern longo func (longa par1.... res = func (ch-limite). mas também pode ter qualquer núme ro de além- argumentos al.... int e char. Por exemplo: vazio func (int n. / Chamada de função / } Desde que o programa tem a função protótipo para função. a pilha passado para func não combinar com o tamanho ou o conteúdo que func espera. tempo res. Considere o seguinte código: int limite = 32. de modo que qualquer discrepâncias entre os protótipos e definições reais serão detectados.. Os tipos necessidade de ser compatível apenas na medida em que uma tarefa pode convertê-los legalmente. main () { . que pode causar problemas. A utilizador pode sempre usar uma conversão explícita para converter um argumento para um tipo que é acei- capaz de um protótipo de função. Se você criar uma biblioteca de rotinas com o arquivo de cabeçalho correspondente protótipos. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Se um protótipo estiver presente. Nota: Se o protótipo da função não corresponde a definição da função real. Sem o protótipo da função. . considerar a inclusão que o arquivo de cabeçalho quando você compilar a biblioteca. tempo par2). O compilador também é capaz de forçar argumentos para alterar o tipo para uma adequada. respectivamente. sem espaços de intervenção.). char ch = 'A'. ele converte limite e ch para tempo.') reticências é composto por três períodos sucessivos. .') O ('. antes de coloca-los na pilha para a chamada para func. limite e ch seria colocada na pilha como um inteiro e um personagem. nesse caso. Esta declaração indica que a função será definida de tal forma que as chamadas devem ter pelo menos dois argument os. usando as regras de atribuição. char ch.. Reticências Operador ('. Uma elipse pode ser usado nas listas argumento formal de protótipos de função para indicar uma número variável de argumentos ou argumentos com tipos variados. o mik roC PRO para PIC irá detectar isto se e somente se essa definição está na mesma unidade de compilação como o protótipo.

Mikroelektronika .Soluções de software e hardware para o mundo embutido 205 .

9..2. } 206 Mikroelektronika ..10. char)) temp + = a1. A1).7.5.3.8.3. retorno a1.h> int addvararg (char .4. char temp.4.0). addvararg res = (1.6. va_start (AP.2.){ A1 ap va_list. } int res. while (temp = va_arg (ap.SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo . vazio main () { addvararg res = (1.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Exemplo: # Include <stdarg..0).5.

CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem OPERADORES Operadores são símbolos que provocam alguma computação quando aplicado a variáveis e outros objetos em uma expressão. Operadores Aritméticos Operadores de Atribuição Operadores bit a bit Operadores lógicos Referência / Operadores Indireta Os operadores relacionais Membro Seletores Estrutura Operador Vírgula . Operador condicional ? : Matriz do operador subscrito [] Função de operador de call () sizeof Operador Preprocessor Operadores # e # # Mikroelektronika .Soluções de software e hardware para o mundo embutido 207 .

Operadores Aritméticos Os operadores aritméticos são usados para realizar cálculos matemáticos. O tipo de char tecnicamente repre- senta números inteiros pequenos. Todos os operadores aritméticos associam da esquerda para a direita.Soluções de software e hardware para o mundo embutido . -> mo ! ~ + + . Ou da direita para a esquer da para a direita ( esquer ). Precedência Operando Operadores Associativis 15 s 2 () []. de modo que o char variáveis podem ser usadas como operandos em aritmética operações. Operadores na mesma categoria têm a mesma precedência. Se duplicatas de operadores aparecem na tabela.* 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 .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Operadores Presidence e Associativismo Há 15 categorias de precedência.+ . Cada categori a tem uma regra de associativi dade: da ). alguns deles contêm um único operador. essas regras resolver um agrupamento de expres- da ( ções com os operadores de precedência igual. Na ausência de parênteses. a primeira ocorrência é unário e segundo binário. 208 Mikroelektronika . Eles têm operandos numéricos e retornar os resultados numéricos.

Mikroelektronika . unário mudanças menos o sinal do operando 14 incremento adiciona um ao valor do operan do. subtração 12 * multiplicação 13 / divisão 13 operad or de módul o retorna o resto da inteiro % 13 divisão (não pode ser usado com pontos flutuantes) Operadores unários + mais unário não afeta o operando 14 . operando. ++ PostIncrement adiciona um ao valor do operando 14 depois que ele avalia. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Operador Operação Precedência Operadores Binários + Além 12 .Soluções de software e hardware para o mundo embutido 209 . enquanto pré- diminuição subtrai um antes de avaliar Nota: O operador * é sensível ao contexto e também pode representar a referência de ponteiro operador. enquanto pré-incremento adiciona uma antes um decremento subtrai de avaliar do valor da . Postdecrement subtrai um do 14 valor do operan do depois que ele avalia.

o sinal do resultado é igual ao sinal do primeiro operando: / * Por exemplo: * / 9% 3. . k -). / * k = k + 1. * 3..(Pré-incremento e preDecrement) adicionar ou subtrair um valor do operando antes da avaliação. j = 6 * / 210 Mikroelektronika . os operadores + + e . Por exemplo: int j = 5. enquanto a restante é simplesmente truncado: / * Por exemplo: * / 04/07 / * equivale a 1 * / 7 * 04/03 / * equivale a 5 * / / * Mas * / 7. k + +.(Pós e postdecrement) adicionar ou subtrair uma do valor do operando após a avaliação. k = j.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Binário Operadores aritméticos Divisão de dois números inteiros retorna um inteiro. / * igual a -1 * / Aritmética Os operadores podem ser usados para manipular caracteres: 'A' + 32. / 4.25.Soluções de software e hardware para o mundo embutido . que nos dá k = 5.K) ou postfix (por exemplo. j = k + +. / * K = j. / * igual a 0 * / 7% 3 / * equivale a 1 * / -7% 3. o que nos dá k = 6. j = k + +.são os únicos operadores em C que pode ser prefixo (Por exemplo. + + K. / * Igual a 5. Quando usado como sufi- correção. j = 6 * / mas: int j = 5. / * * É igual a 'A' (ASCII) / 'G' .'A' + 'a'. k = k + 1. porque estamos trabalhando com flutuadores * / Restante operando % trabalha apenas com números inteiros. Quando usado como prefixo. / * É igual a 'g' ( ASCII e EBCDIC) * / Operadores aritméticos unários Unários operadores + + e . os operadores + + e .

CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Os operadores relacionais Use operadores relacionais para testar a igualdade ou desigualdade de expressões. como: (14> 5) <3? 1 <3? 1 * / a <b <5 / * retorna 1. Todos os operadores relacionais associam da esquerda para a direita. como: 8 == (13> 5)? 8 == 1 ? 0 * / 14> 5 < 3 / * retorna 1.Soluções de software e hardware para o mundo embutido 211 .0 / e)) * / Não se esqueça que os operadores relacionais retornam 0 ou 1.0 / e / *? (A + 5)> = (c . Considere o seguinte exemplos: / * Ok: * / 5> 7 / * Retorna 0 * / 10 <20 = / * Retorna 1 * / / * Isso pode ser complicado: * / 13 8 ==> 5 / * Retorna 0. caso contrário ele retorna 0. ele retorna 1.1. co mo: (a <b) <5? (0 ou 1) <5? 1 * / Mikroelektronika .(1. Se uma expres- Sion avalia ser verdadeiro. Visão geral sobre operadores relacionais Operador Operação Precedência == igualdade 9 != não igual 9 > superior 10 < menos de 10 >= igual ou superior 10 <= inferior ou igual 10 Operadores relacionais em expressões Precedência dos operadores aritméticos e relacionais é designado de modo a permitir expressões complexas sem parênteses para esperar significado: a + 5> = c .

A única exceção é o com -bit a bit operador plementar ~ que associa a partir de direita para a esquerda. | e ^ realizar oper aç ões lógicas sobre os pares apropri a do de bits de seus operandos.Soluções de software e hardware para o mundo embutido . as devol uç õ es o bit mais à esquerda deslocamento e atribui à direita bit a 0 para a bit. Por exemplo: 212 Mikroelektronika . inverte cada bit 14 << desvio para a esquer d a bit a bit. Operador ~ complementa cada bit do seu operando. direita. move o bitpara os bits maisa >> à direita. 11 cartões bit da extrema-direita e se unsigned atribui 0a o bit mais à esquerda. sinal Operações Lógicas sobre Nível 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 &. Operadores bit a bit adjunto da esquerda para a direita.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Operadores bit a bit Usar os operadores bit a bit para modificar bits individuais dos operandos numéricos. compara pares de bits ^ e retorna 1 se os bits são compl em e ntar es . caso contrário retorna 0 bit a bit (inclusive) OR. Visão geral sobre operadores bit a bit Operador Operação Precedência & E bit a bit. outras 7 retorna sábio 0 ~ bit a bit complemento (unário). compara pares de bits e retorna 1 se | 6 um ou ambos os bits são 1. caso contrário retorna 0 bit a bit OU exclusivo (XOR). mov e os bits para a 11 esquer d a. caso contrário. dis. compar a pares de bits e retorna 1 se 8 ambos os bits forem 1.

ou seja. Shift Operadores bit a bit Operadores binários << e >> mover os bits do operando à esquerda por uma série de po- ções especificado pelo operando da direita. / * Igual * 0x444C / ~ 0x1234. / * Igual a 0x8010. / * Equivale 0xFFF5 * / 0xFF56u>> 4. Isso também é válido para operandos assinado Se todos os bits são descartados igual a um bit de sinal.001 << 5. estouro! * / Com o deslocamento para a direita (>>). deslocando operando sem sinal para a esquerda n posições é equivalente a multiplicando-se por 2n se todos os bits são descartados zero. Operando direito tem que ser positivo. / * Igual * 0x567C / ^ 0x1234 0x5678. Assim. / * Equivale 0x0FF5 * / Mikr oele ktro nika . respectivamente. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem 0x1234 e 0x 5678 / * Igual a 0x1230 * / / * Porque . Mudando operando para a direita por posições n é equivalente a divid- ing-lo por 2n. extrema-direita bits são descartados e os "Libertado" bits à esquerda são zeros atribuídos (no caso do operando sem sinal) ou o valor de um bit de sinal (no caso de assinado operando).. Com o deslocamento à esquerda (<<). / * Equivale a 000. Consulte os ponteiros para mais informações. 0x1230 * / / * Do mesmo modo: * / 0x1234 | 0x5678. bits à esquerda são descartados e"Novo" bits à direita são atribuídos zeros.. 0xFF56>> 4. 0x1234: 0001 0010 0011 0100 0x5678: 0101 0110 0111 1000 ---------------------------- E: 0001 0010 0011 0000 . / * Igual * 0xEDCB / Nota: O operador & também pode ser um operador de referência de ponteiro. 000.040 * / 0x3801 << 4. à esquerda ou à direita.

Soluções de software e hardware para o mundo embutido 213 ..

Soluções de software e hardware para o mundo embutido .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Bitwise versus lógica Não se esqueça da diferença de princípio entre a forma como os operadores bit a bit e lógica de trabalho. Lógico operador de negação ! associados da direita para a esquerda. Por exemplo: 0222222 e 0555555. / * Igual a 0 * / Operadores lógicos Operandos de operações lógicas são consideradas verdadeiras ou falsas. / * Igual * 0xEDCB / ! 0x1234.000 * / 0222222 e 0555555 &. Os operadores lógicos & & e | | associam da esquerda para a direita. Os operadores lógicos sempre retornam 0 ou 1. que é diferente de zero ou zero. relacionais e aritméticos foi designado como uma forma de permitir expressões complexas sem parênteses para ter uma expectativa de significado: c> = '0 '& & c <= '9'. / * Equivale a 1 * / ~ 0x1234. / * Lê: ((a + 1) == b) | | * / ((f (x))!) E lógico & & retorna 1 se ambas as expressões avaliar a ser zero. / * Equivale a 000. Operador Operação Precedência Visão geral sobre operadores lógicos && E lógico 5 || OR lógico 4 ! negação lógica 14 Operadores lógicos | | 0 x 0 0 1 x 1 1 Precedência dos operadores lógicos. Os operandos em uma expressão lógica deve ser de tipo escalar. caso contrário 214 Mikroelektronika . / * Lê: (c> = '0 ') & & (c <= '9') * / a + 1 == b | |! f (x).

&& 0 x ! 0 x 0 0 0 1 0 x 0 1 .

CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem retorna 0. Se a primeira expressão é avaliada como false. * (& c & d) não serão avaliados / Expressões lógicas e lateral Efeitos Regra geral sobre expressões lógicas complexas é que a avaliação das conse- comerciais e executivas pára lógica operandos no exato momento do resultado final é conhecido. então operandos b e c não serão avaliados. Por exemplo: a & & b | | c & d & / * l ê como: (a & & b) | | (c & d &) * / / * If (a & & b) é verdadeira (1). a segunda expressão não é ava- liada. Se a primeira expressão é avaliada como verdadeira. caso contrário retorna 0. se temos uma expressão a & & b & & c onde um é falso (0). Por exemplo: 0222222 e 0555555 / * Equivale a 000.SOFTWARE E soluções de hardware para embutidos mundo 215 .000 * / 0222222 e 0555555 e / * Equivale a 1 * / ~ 0x1234 / * Igual * 0xEDCB / ! 0x1234 / * Igual a 0 * / Mikroelektronika . Por exemplo: a> b & & c <d / * lê como (a> b) & & (c <d) * / / * If (a> b) é falso (0). o segunda expressão não será avaliados. (c <d) não serão avaliadas * / OU lógico | | retorna 1 se quer de expressão avalia a ser zero. como possíveis efeitos colaterais não vai acontecer! Lógico versus Bitwise Esteja ciente da diferença de princípio entre a forma como os operadores bit a bit e lógica de trabalho. Por exem- Por exemplo. Isso é muito importante se b e c são expressões.

b): * / max = (a> b)? a: b. Ambas as expressões têm de ser de vazio tipo. O tipo resultante é a de o ponteiro-para-não-vazio expressão. / * Converte pequena carta para o capital: * / / * (Sem parênteses são realmente necessário) * / c = (c> = 'a' & & c <= 'z')? (C . Ambas as expressões têm de ser compatíveis dos tipos struct ou união. 5. Ambas as expressões têm de ser de aritmética tipo. A sintaxe da condi- operador internacional é: expressão1? expression2: expression3 A expression1 é avaliada primeiro. expression2 e expression3 deve obedecer a uma das seguintes regras: 1.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Operador condicional? : O condicional operador ? : é o único operador ternário em C. O resultado será um valor de expres- sion2 ou expression3 dependendo de qual deles avalia. O tipo resultante é um ponteiro para um tipo qualificado. 2. O resultado tipo é um tipo de estrutura ou união de expression2 e expression3. Uma expressão é um ponteiro para um tipo de objeto ou incompleta. Aqui estão alguns exemplos práticos: / * Encontrar max (a. Ambas as expressões devem ser do tipo ponteiro para versões qualificados ou não qualificados de tipos compatíveis. Se express ão1 é avaliada como falso. 6. eo outro é um ponteiro para uma versão qualificados ou não qualificados dos nulas. Uma expressão é um ponteiro. então expression3 avalia e expression2 é ignorado.32): c. 4. O tipo resultante é nulas. expression2 e expression3 estão sujeitos às conversões aritméticas usuais. que determina o tipo do resultado. O resultado- ção tipo é um ponteiro para um tipo qualificado com todos os qualificadores do tipo ponto-tipos ed por ambas as expressões. então expression2 avalia e expression3 é ignorado. com todo o tipo qualificadores do tipo apontado por ambas as expressões. Nota: O facto de apenas uma dessas duas expressões é avaliada muito importante se espera-se que produzem efeitos colaterais! associados operador condicional da direita para a esquerda. 216 . Se o valor for verdadeiro. 3. Regras Operador Condicional expression1 deve ser uma expressão escalar. eo outro é um ponteiro constante nula.

Mikroelektroni ka .Soluções de software e hardware para o mundo embutido .

expres- sion1 + = expressão2 é o mesmo que expressão1 = expressão1 + expres - sion2. /. & =. temos 10 operador es de atribuição compos tos diferentes: + =. -=. <<.Soluções de software e hardware para o mundo embutido 217 . Todos eles associam da direita para a esquerda. <<= e >> =. Se expression1 e expression2 são de tipos diferentes. um operador de atribuição simples (=) é utilizados: = expressão1 expressão2 A expression1 é um objeto (posição de memória) para que o valor de expression2 é atribuído. Consulte o Tipo Conversões para mais informações. -. =. | ^ =. ou >>. =. Assim. *. + =) Irá gerar um erro. se for necessário.%. sepa -Spaces Avaliação operadores compostos (por exemplo. Operando expression1 tem que ser lvalue e expression2 pode ser qualquer expressão. Operador de atribuição composto C permite que as atribuições mais COMLEX por meio de operadores de atribuição compostos. Operador de atribuição simples Para uma atribuição de valor comum. ^. o resultado da expres- sion2 serão convertidos para o tipo de expressão1. C trata de atribuição de valores como a operação (Representada por um operador) ao invés de instrução. A expressão de atribuição em si não é lvalue. &. Mikroelektronika . CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Operadores de Atribuição Ao contrário de muitas outras linguagens de programação. |. A sintaxe dos operadores de atribuição composta são: op = expressão1 expressão2 onde op pode ser um dos operadores binários +. *= / =%. atribuição composto tem o mesmo efeito que expressão1 = expressão1 expressão2 op exceto o lvalue expression1 é avaliada apenas uma vez. Por exemplo.

se char é assinado ou não assinado. sem efeitos colaterais). O operador sizeof pode apanhar um identificador de tipo ou uma expressão unário como um operando.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Regulamento de Atribuição Para ambos os atribuição simples e compostos. O resultado da operação será o tamanho do tipo de resultado da expressão. Quer expression1 ou expression2 é um ponteiro para um ou tipo de objeto incompleto eo outro é um ponteiro para uma versão qualificados ou não qualificados de vazio. A unidade para o tamanho do tipo é sizeof (char) o que equival e a um byte. Você não pode usar sizeof com expressões do tipo de função. expression1 é do tipo aritmética qualificados ou não qualificados e expression2 é de aritmética tipo. expression1 tem uma versão qualificados ou não qualificados do tipo de estrutura ou união compatível com o tipo de expression2.Soluções de software e hardware para o mundo embutido . A operaç ão tamanho de (char) dá o resultado 1. O tipo de apontado pela esquerda tem todos os qualificadores do tipo apontado pelo direito. Sizeof Aplicada à Expressão Se aplicada a expressão. sizeof retorna o tamanho do tipo especificado. 2. Operador sizeof O operador unário prefixo sizeof retorna um inteiro que representa a constante tamanho do espaço de memória (em bytes) usado pelo seu operando (determinado pelo seu tipo. 4. 5. tipos incompletos. expression1 é um ponteiro e expression2 é um ponteiro constante nula. ou com lvalue que designa um objeto campo de bits. portanto. com algumas exceções). 3. expression1 e expression2 são ponteiros para as versões qualificados ou não qualificados de tipos compatíveis eo tipo apontado pelo esquerdo tem todos os qualificadores do tipo apontado pela direita. parênteses os nomes de tais tipos. Sizeof Aplicada ao tipo Se aplicada a um tipo de identificador. Assim: sizeof (char) /* retorna 1 * / sizeof (int) /* retorna 2 * / sizeof (unsigned long) /* retorna 4 * / sizeof (float) /* retorna 4 * / 218 Mikroelektronika . os operandos expression1 e expression2 deve obedecer a uma das seguintes regras: 1. o tamanho de um operando é determinado sem avaliar a expressão (e.

As expressões podem produzir lvalue. o que depende dos operadores utilizados. ou nenhum valor. Vírgula Expressões Uma das especificidades do C é que ela permite o uso da vírgula como um operador de seqüência para chamada forma expressões vírgula ou seqüências. sizeof dá o tamanho do ponteiro. / * J = sizeof (int) = 2 * / i = sizeof (a). j. operandos e pontuadores que especifica um computação. As expressões são avaliadas de acordo com uma conversão de certos agrupamentos. EXPRESSÃO A expressão é uma seqüência de operadores. uma [10].. o resultado é o número total de bytes na matriz (em outras palavras. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Quando o operando é um parâmetro do tipo não-matriz. A seguinte seqüência: . Formalmente. expressão Vírgula é uma vírgula lista de expressões delimitados . A precedência ea associatividade dos Os operadores estão resumidas no Operador de Precedência e associatividade. Expressões podem causar efeitos secundários efeitos se produzem um valor ou não.. presença de paren- teses e tipos de dados dos operandos. as expressões são definidas recursivamente: subexpressões pode ser aninhados sem limite formal. o expressões primárias são: constante (também referida como literal). o compilador apresentará um erro de falta de memória se não é possível compilar uma expressão que é muito complexo. Quando aplicada às estruturas e aos sindicatos. Em ANSI C.é formalmente tratado como uma única expressão para que ele possa ser utilizado em locais onde a expressão é esperado. No entanto. um nome de matriz não é convertido para um tipo de ponteiro): int i. definido de forma recursiva. e (expressão). rvalue. O caminho operandos e subexpressões são agrupados não necessariamente especificar o real ordem em que são avaliados pelo mik roC PRO para a PIC. sizeof dá a número total de bytes. Se o operando é um parâmetro declarado como tipo de matriz ou um tipo de função. O operador sizeof não pode ser aplicada a uma função. . / * I = 10 * sizeof (int) = 20 * / / * Para obter o número de elementos em um array * / num_elem int = i / j. identi- Fier. associativi- ty e regras de precedência. j = sizeof (a [1]). incluindo qualquer preenchimento.

Soluções de software e hardware para o mundo embutido 219 . expression_2. expression_1. Mikroelektronika .

y).) tem a prioridade mais baixa e associados da esquerda para a direito.. c é o mesmo que (A. use parênteses. x -. vírgula operador binário (.Soluções de software e hardware para o mundo embutido . Para evitar ambi- vocos com vírgulas no argumento da função e lista de inicializador. k). mas o seu (possível) efeito colateral acontecem. de modo que a. / * Retorna preincremented valor da variável c. c Isto permite escrever seqüências com qualquer número de expressões: expression_1. o que resulta na avaliação da esquerda para a direita de cada expressão. Resultado da expression_1 é descartado. com o valor eo tipo de expression_2 dando o resultado da express ão completa. função (i. C + +). e também calcula x * e y / Nota Não confunda operador vírgula (seqüência operadora) com pontuador vírgula que separa os elementos em um lista de funções e listas de discussão Inicializador.. . 5. expression_n. k). / * Retorna calculado o valor da variável z. Os resultados de outras expressões são descartados. y = x + 3.. b divide por 2 e incrementos de c * / resultado = (x = 10. 220 Mikroelektronika . mas também intializes a. expression_2. com o valor e tipo de expression_n dando a resultado da expressão inteira. b). Por exemplo: resultado = (a. b = 5 / = 2. e não quatro.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC resultados na esquerda para a direita avaliação de cada expressão. j + 4). (j = 1. b. z -= x * 3 . Para exemplo. chama a função func com três argumentos (i.

O rótulo identificador serve como meta para a instrução switch. Não há nenhuma declaração especial de uma etiqueta .apenas "Tags" a declaração.Instruções iteração (Loops) .Rotulado Demonstrações . Na ausência de Ir específicos e seleção declarações.Soluções de software e hardware para o mundo embutido 221 . label_iden- tifier tem escopo de uma função e no rótulo do mesmo não pode ser redefinido no mesma função. 2.Ir Demonstrações . Um rótulo é um identificador adicionado antes a declaração como esta: label_identifier: instrução.Declarações compostas (blocos) Rotulado Demonstrações Cada instrução em um programa podem ser rotulados. apenas caso e padrão demonstrações rotulados são utilizados: caso a expressão constante: instrução default: declaração Mikroelektronika . CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem DEMONSTRAÇÕES Demonstrações especificar um fluxo de controle como o programa executa. Os rótulos têm o seu próprio espaço: etiqueta de identificação pode corresponder a qualquer outro identificador no o programa. O rótulo identificador serve como meta para a instrução goto incondicional. os comandos são executados em seqüência na ordem de aparição no código-fonte.Expressão Demonstrações .Instruções de Seleção . As declarações podem ser divididos em: . Para este efeito. A declaração pode ser rotulado por duas razões: 1.

222 Mikroelektronika . uma declaração de nulidade é comumente usado em "Vazio" loops: para (. A maioria das declarações são expressão de at ribuição do Estado mentos ou chamadas de função. A declaração de nulidade é um caso es pecial. statement1 executa. a condição é mal formado.). Todos os efeitos colaterais desta avaliação sejam concluídas antes do próximo instrução inicia a execução. Q * + + * p = + +. constituído por um único ponto e vírgula (. A mais palavra-chave é opcional. outras sábio. mas o programa não precisa de um. A sintaxe da se afirmação é: se (Expressão) [statement1 mais statement2] Se expressão avalia a verdade.). A mik roC PRO para PIC executa uma instrução de expressão através da avaliação da expressão. O nulo declaração não faz nada e. mas não há indicações podem vir entre se e mais. statement2 executa. é útil em situações onde o mik roC PRO para PIC sintaxe espera uma declaração.Soluções de software e hardware para o mundo embutido .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Expressão Demonstrações Qualquer expressão seguido por um ponto e vírgula faz uma declaração de expressão: expressão. / * corpo de ste loop é um com ando nul o * / Instruções de Seleção Seleção ou declarações de controle de fluxo de selecionar um dos cursos alternativos de ação por testes de determinados valores. Existem dois tipos de declarações de seleção: se switch Se a Declaração A se declaração é usada para implementar uma instrução condicional. Por exem - plo. portanto. Se declaração é falsa. Parênteses em torno da expressão são obriga- ry. A expressão deve ser avaliada como um valor integral.

Não é possív el ter duas mesmo expressões constan tes avaliar a o mesmo valor. caso expression_n constante: statement_n. com cada mais vinculado ao mais próximo disponível se em sua esquerda: se (Expressão1) statement1 else if (Expression2) se (Expression3) statement2 mais instrução3 / * Este pertence: se * (expression3) / mais statement4 / * Este pertence: se * (expression2) / Nota # If e # Else declarações de pré-processamento (Directivas) semelhante ao se e mais declarações. com- bora la a todos os disponíveis constante. o fluxo do programa continua normalmente: as instruções a seguir será executado de forma natural. Parênteses em torno expressão são obrigatórios. com base em uma determinada condição. A sintaxe da switch afirmação é: switch (Expressão) { caso constante-expression_1: statement_1. Note -s e que constante s expres sões de deve avaliar a inteiro.] } Primeiro. as seguintes expressões a palavra-chave caso. em seguida. A switch declaração. . switch passa o control e para que a adequaç ão caso fazendo com que o declaração fol- tes da partida avalia. A regra geral é que a nested condicionais são analisados a partir do mais íntimo condicional. . independentemente da possível caso etiqueta. Switch Demonstrações A switch declaração é usada para passar o controle para um ramo do programa específico. . Se nenhum caso satisfaz a condição. . Se um jogo for encontr ado. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Instrução if aninhada Nested se demonstrações requerem maior atenção. padrão [ : Declaração. a padrão caso avalia (se o rótulo padrão é especi- cados). Ao encontrar uma correspondência. o expressão (Condição) é avaliada. mas têm efeitos muito diferentes. Eles controlam o que as linhas do arquivo de origem são compilada e que são ignorados.

Soluções de software e hardware para o mundo embutido 223 . se uma variável i tem valor entre 1 e 3. Por exemplo. a opção seguinte seria Mikroelektronika .

} Nested Switch Condici onal switch declaraç ões podem ser aninhados . se expressão avalia a falsa 224 Mikroelektronika . então. e abandonar o controle de comutador. caso 3: i + +. caso 1: Mid () break. A sintaxe da enquanto afirmação é: enquanto (Expressão) instrução A declaração executa repetidamente até que o valor de expressão é falsa. Isto é como nós poderíamos mudar o código para o appopriate rotina: switch (Fase) { caso 0: Lo (). c o m switch. break. A qui é um s i mpl es ex e mpl o. caso: Mensagem ("Estado inválido!"). caso 2: Oi () break. atribuído ao mais profundo que encerram switch declaração. caso 2: i + +.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC sempre devolvê-lo como 4: switch (I) { caso 1: i + +. O teste ocorre antes declaração é executad o. Há três formas de iter- demonstrações ração na mik roC PRO para PIC: enquanto fazer para Enquanto a Declaração A enquanto palavra-chave é usado para iterar condicionalmente um comunicado.Soluções de software e hardware para o mundo embutido . Assim. Suponha q ue temos u ma variá vel fase c o m ap enas Três estados diferentes (0. 1 ou 2) e uma função correspondente (evento) para cada uma dessas Estados. cada caso deve ser encerrado no intervalo. Iteração Demonstrações (Loops) instruções de iteração de loop permite um conjunto de instruções.rótulos caso e padrão são. } Para evitar a avaliação de qualquer outros casos.

Por exemplo: enquanto (Q * + + * p = + +). Note que não é a estrutura de controle apenas em C. A declaração é executado repetidamente enquanto o valor de expressão permanece diferente de zero. A sintaxe da fazer afirmação é: fazer declaração enquanto (Expressão). Parênteses em torno expressão são obrigatórios. Aqui está um exemplo de cálculo do produto escalar de dois vetores. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem na primeira passagem.Soluções de software e hardware para o mundo embutido 225 . Note que os parênteses em torno de expres- Sion são obrigatórios. i + +. enquanto (I <n) { s + = a [i] * b [i]. usando o enquanto declaração: int s = 0. } Note que o corpo do laço pode ser nulo declaração. } enquanto (I <n). portanto. fazer { s + = a [i] * b [i]. Aqui está um exemplo de cálculo do produto escalar de dois vetores. o loop não é executado. Outras estruturas com controlo final declaração. usando o fazer Estado mento: s = 0. A expressão é avaliada após cada iteração.). Mikroelektronika . i = 0. que expressamente termina com ponto e vírgula (. Do Declaração A fazer instrução é executada até que a condição se torne falsa. i + +. i = 0. o loop será executado declaração de pelo menos uma vez. o que significa que eles implicitamente incluir um ponto e vírgula ou chave de fechamento.

i + +). 226 Mikroelektronika . mas * Feio / mas é considerado um estilo de programação ruim. init-expressão define as variáveis de partida para do loop. i n <.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Para a declaração A para declaração implementa um loop iterativo. Você não pode passar em declarações init-expressão. Se condição de expressão é deixado de fora. / * Válido.Soluções de software e hardware para o mundo embutido . Aqui está um exemplo de cálculo do produto escalar de dois vetores. é assumi do que ser sempre verdadeira. Não existe outra maneira de fazer isso: para (S = 0. i + +) s + = a [i] * b [i]. "Vazio" para afirmação é comumente usado para criar um fim- menos loop em C: para (. i <n. i + + é funcionalmente o mesmo que + + I. Con- Consequentemente. Depois cada iteração do loop. porque não está em o serviço da rotina de loop.) é usado para o corpo do laço. Note que a declaração nula (. expressão de incremento incrementos de um contador de loop. i = 0. o cálculo do montante não deve ser uma parte da expressão de incremento. declaração é executado repetidamente até que o valor de condição de expressão é falsa.) Declaração A única maneira de quebrar este ciclo é por meio do quebrar declaração. incremento [expres- ] Sion) declaração Antes da primeir a iteração do loop. Assim. i = 0. Expressão [condição]. A sintaxe da para declaração é o seguinte: para (Expressão [init]. Embora legal. usando o para Estado mento: para (S = 0. condição de expressão é verificada antes da da primeira entrada do bloco. s + = a [ i] * b [i]. Todas as express ões são opcionai s.

quebrar é comumente utilizada na switch instruções para impedir a sua execução sobre o resultado positivo em primeiro lugar. default: Mensagem ("Estado inválido!").. Em que ponto a condição de continuação do laço é reavaliada. transfere o controle incondicionalmente. . caso 2: Oi (). break. break. } Mikroelektronika . . if (> val 0) continue. } Continuar a Declaração A continuar declaração no prazo de malhas é usada para "Ignorar a ciclo ".. quando executado..Soluções de software e hardware para o mundo embutido 227 ..... CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Ir Demonstrações A instrução de salto. ao mesmo tempo.. break.. uma vez que é mostrada abaixo: enquanto (.. Use o quebrar declaração dentro de loops para passar o controle para a primeira instrução seguinte ao interior switch. / / Continue saltos / / Continue saltos / / Continue saltos aqui aqui aqui } enquanto (.. Ele passa o controle ao fim do fim mais profundo que encerram cinta pertencente a uma construção de loop. para. ... if (> val 0) continuar. Especificamente.. Há quatro tais declarações no mik roC PRO para PIC: quebrar continuar goto retorno Break e continue Ruptura de Declaração Às vezes é necessário parar o loop dentro de seu corpo. ... .. Isso significa que conti- ue exige a próxima iteração se a continuação do laço condição for verdadeira. o continuar declaração dentro do loop vai saltar para a posição marcada- ção.. caso 1: Mid (). if (> val 0) continue. ou fazer bloco..) { fazer { para (.) { ...). Por exemplo: switch (Estado) { caso 0: Lo ().

. A expressão é opcional. se necessário.) { . enquanto saltando inicializações que bloco. } } . se omitido. resultando em programas estruturados legíveis. etc O uso de goto declaração é geralmente desencorajado.para mais infor- informaç ões nos rót ulos. . valor retornado será auto- automaticamente convertidos para o tipo de função esperado.por exemplo. goto é usado para sair de qualquer nível das estruturas de controle aninhadas. Uma possível aplicação da goto afirmação é sair de estruturas de controle aninhadas profundamente: para (. mas ele não pode ser usado para pular em um bloco. A label_identifier tem que ser um nome da etiqueta na mesma fun- ção em que o goto declaração é. A linha goto pode vir antes ou depois do rótulo. A sintaxe é: retorno [Expressão].. se é o último estado- mento no corpo da função. A sintaxe da goto afirmaç ão é: goto label_identifier. 228 Mikroelektronika . . pois praticamente todos os algoritmo pode ser realizado sem ele. a função retornará um valor aleatório da memória. 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. salta- ção no corpo do laço. se referem a declarações identificadas... Nota: A declara çã o retorno em funç ões do vazio tipo não pode ter expres- Sion . Erro: / * erro * código de tratamento / Instrução Return A retorno declaração é usada para sair da função atual de volta para o chamado rotina....na verdade..Soluções de software e hardware para o mundo embutido .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Goto Declaração A goto declaração é usada para salto incondicional para um rótulo local . opcionalmente retornar um valor. a retorno declaração pode ser omitido por completo. se (Desastre) goto Erro. . Isto irá avaliar expressão e retornar o resultado.) { para (.

CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Declarações compostas (blocos) A instrução composta. não a nível de carácter individual. Os blocos podem ser aninhados em qualquer profundidade até aos limites da memória. instruções compostas não terminam com ponto e vírgula (. Um identificador declarado dentro do bloco tem um alcance a partir do ponto da declaração e termina no chave de fechamento. ou incorporado em um comentário. .). Preprocessor directivas Toda a linha no código-fonte com um líder # é tida como um pré-processamento directiva (Ou linha de controlo). Por exemplo. o bloco pode ser considerado como um único declaração. Sintaticamente. i <n. Preprocessor é controlado por meio de directivas de pré-processamento e de pré-processamento operadores.Substituição específicas símbolos lexical com outros símbolos (veja Macros). em um caráter permanente. b [i] = temp.A inserção de texto de um arquivo specifed até um certo ponto no código (veja o arquivo de inclusão). o para loop espera uma declaração em seu corpo. Note que o pré-processador de texto analisa a nível simbólico. A inicial # pode ser precedido ou seguido de um espaço (excluindo novas linhas). PreProcessor Pré-processador é um processador de texto integrado que prepara o código fonte para compilação. } Note que. Ou seja.Compilação condicional que condicionalmente inclui ou omite partes do código (ver Compilação Condicional). ao contrário de outras declarações. Preprocessor permite: . i + +) { int temp = a [i]. Esta linha é sempre . nunca há um ponto e vírgula após o chave de fechamento. a menos # está dentro de uma seqüência literal. é uma lista (possivelmente vazia) de declarações em anexo em chaves correspondentes {}. . ou bloco. a [i] = b [i]. para que possamos passar um instrução composta: para (I = 0. A directiva nula consiste de uma linha contendo o caractere único #. mas também desempenha um papel no escopo de identificadores.

mas Mikroelektronika . directivas Preprocessor são geralmente colocados no início do código-fonte.Soluções de software e hardware para o mundo embutido 229 . ignorados.

se referem ao arquivo Inclusão. Aqui está uma directiva comumente utilizados: # Include <math. 230 Mikroelektronika . A mik roC PRO para PIC suporta directivas de pré-processamento padrão: # (Directiva null) # If # Define # Ifdef # Elif # Ifndef # Else # Include # Endif # Line # Erro # Undef Nota: Por enquanto pragma Funcall só é suportada.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC eles podem aparecer legalmente em qualquer ponto do programa. Continuação de linha com contrabarra (\) Para quebrar directiva em várias linhas terminar a linha com uma barra invertida (\): # Define MACRO Esta directiva continua a \ a linha a seguir.h> Para mais informações sobre arquivos. incluindo com o # Include directiva.Soluções de software e hardware para o mundo embutido . A directiva está em vigor a partir de sua declaração até o final do arquivo do programa. A mik roC PRO para PIC pré- directivas de pré-processamento do processador detecta e analisa as fichas embutido elas.

uma nova verificação é feita do recém -expandido texto. directiva.. os parâmetros de função semelhante. se a macro se expande em algo que se parece com uma directiva de pré-processamento.) / * Que nós poderíamos usar assim: * / main () { EVERLOOP { .token_sequence termina no encoun primeira linha não barra invertida novo registado. Nenhum ponto e vírgula (. A macr o não será expandi do durante sua expans ã o (assim # Define macro macro não irá expandir-se indefinidamente). Todas as ocorrências do macro identificador encontrado dentro literal cordas.. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Macros As macros fornecem um mecanismo de substituição do token. incluindo vírgulas. Qualquer seqüência de espaços. antes da compilação. Aqui está um exemplo: / * Aqui estão algumas macros simples: * / # Define err_msg "Fora do alcance!" # Define EVERLOOP para (. incluindo comentários na s eqüência token.tok en _s eq uenc e às vezes é chamado o corpo de uma macro. Isso permite a possibilidade de utilizar macros aninhados: o texto expandido pode conter identificadores de macro que estão sujeitos à substituição. Definindo macros e Expansões Macro A # Define directiva define uma macro: # Define macro_identifier <token_sequence> Cada ocorrência de macro_identifier no código fonte a seguir esta linha de controle ser substituído na posição original com o possivelmente vazio token_sequence (Há algumas exceções.} . } } . Um token vazio seqüência de resultados na remoção de cada macro afetados identificador a partir do código fonte. é substituído por um caractere de espaço único. Essas substituições são conhecidos como macro expansi ons . que são discutidos mais tarde). Qualquer personagem encontrado na seqüência token.) é necessário para finalizar uma directiva de pré-processamento. constantes de caracteres. aparecerá em uma expansão de macro- sion. se (Erro) {Lcd_Out_Cp (err_msg). Depois de cada indivíduo expansão macro. break. ou comentários no código-fonte não será ampliada... tal não será reco- cida pelo pré-processador. com ou sem um conjunto de formal. No entanto.

Soluções de software e hardware para o mundo embutido 231 .Mikroelektronika .

rescanning ocorre para detectar quaisquer identificadores macro incorporada elegíveis para a expansão. Um erro será relatado se o número de argumentos em duas listas não é a mesma. na verdade. Tais macros são chamados por escrito macro_identifier (<actual_arg_list>) no código-fonte subseqüentes. Cada vírgula delimitado identificador tem o papel de um formal argumento ou espaço reservado. como os encontrados na arg_list formal de o # Define linha . A sintaxe é idêntica à de uma chamada de função. conhecido como argumentos reais.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC A tentativa de redefinir uma macro já está definido identificador resultará em uma advertência a menos que uma nova definição é exatamente a mesma definição de token-a-símbolo como o actual um. O opcional actual_arg_ list deve conter o mes mo númer o de delimitar. existem algumas importantes diferenças semânticas. a linha do meio é chamado para defini-lo. . A opcional arg_list é uma seqüência de identificadores separados por vírgulas. Em seguida.v ír gul a ed seqüências token. Macros com parâmetros A sintaxe a seguir é usada para definir uma macro com parâmetros: # Define macro_identifier (<arg_list>) <token_sequence> Note que não pode haver espaç o em branco entre macro_ident ifier e "(". muitos biblioteca padrão C "Funções" são implementadas como macros. o macro eo identificador argumentos parêntese fechado é substituída pela seqüência de token. No entanto. se BLOCK_SIZE é atualmente não definidos.deve haver um argumento real para cada argumento formal. como os argu- lista desenvolviment o de uma função C. Ta l como com simples defin ições de mac ro. Uma macro resultados põem em dois conjuntos de substituições. A estratégia preferida quando as definições podem existir em outros arquivos de cabeçalho é tão seguinte forma: # Ifndef BLOCK_SIZE # Define BLOCK_SIZE 512 # Endif A linha média é ignorada se BLOCK_SIZE está defini do. qualquer for- argumentos mal que ocorre na seqüência de token são substituídos pelos correspondentes ar gum entos r eai s c ons tantes actua l_arg_li st. Primeiro.

Soluções de software e hardware para o mundo embutido . Aqui está um exemplo simples: / * Um macro simples que reto rna maio r de seu s 2 argum entos: * / 232 Mikroelektronika .

ele pode ser redefinido com # Define. A diferença entre estes dois formatos reside na busca algoritmo empregado no Mikroelektronika . O estado de ser definido ou indefinido é uma propriedade importante de um identificador indepe nde ntem ente da definiç ão atual. Indefinida Macros A # Undef diretiva é usada remover a definição de uma macro. Não confie na pré-processador para incluir os arquivos fonte (extensão) . oferecer um mecanismo flexível de nismos para controlar vários aspectos de uma compilação. / * Pré-processador irá t ransformar a linha anterior para: x = ((a + b)> (c + d))? (A + b) (c + d) * / É muito recomenda-se colocar parênteses em torno de cada argumento na macro corpo a fim de evitar possíveis problemas com a precedência do operador. c + d). CAPÍTULO 6 mikroC PRO para PIC Idioma Referência # Define _MAX (A. utilizando a seqüência igual ou diferente do token. A colocação de # Include não pode- portanto influenciar o alcance ea duração de qualquer identificadores no arquivo incluído.Soluções de software e hardware para o mundo embutido 233 . # Undef macro_identifier A directiva # Undef separa qualquer seqüênci a anteri or token macro_identi- fier. 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 cabeçalho em que ponto do código-fonte. Inclusão de arquivos A directiva de pré-processamento # Include puxa arquivos de cabeçalho (extensão. B) ((A)> (B))? (A): (B) / * Vamos chamá-lo: * / _MAX x = (a + b. A # Ifdef e # Ifndef directiv as condici on ai s.veja Adicionar / Remover arquivos do projeto para obter mais informações. e macro_identifier é indefinido. Depois de um macro identificador foi definido. a definição de macro foi esquecido. Nenhuma expansão macro ocorre dentro do # Undef linhas. h) no código-fonte. usado para testar se qualquer identificador está definido ou não.

h" Nota Há também uma terceira versão do # Include directiva. raramente usado. usuário personalizada caminhos de pesquisa A "Header_name" especifica uma versão fornecida pelo usuário incluem arquivos. o mikroC PRO para o PIC irá procurar o arquivo de cabeçalho nas seguintes posições. somente esse diretório será pesquisado. o pasta do projeto (pasta que contém o arquivo de projeto . PRO o mikroC para PIC pasta de instalação > "Incluir" pasta 3. nesta ordem: 1. a pesqui s a é feitas sucessivamente em cada um dos seguintes locais. o mik roC PRO para PIC pasta de instalação > "Incluir" pasta 2.CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC tentar localizar o arquivo de inclusão. 234 Mikroelektronika . o que pressupõe que nem < nem " aparecer como o primeiro caractere não-branco seguinte # Include: # Include macro_identifier É assume que a definição de macro que irá expandir macro identificador em um válido nome do cabeç al ho delimitada com um <header_name> ou "Header_name" formatos existe. usuário personalizada caminhos de pesquisa Caminho explícito Ao colocar um caminho explícito em header_name. Mcppi) 2. Se o # Include diretiv a é usada com o <header_name> versão. Para exemplo: # Include "C: \ my_files \ test. nesta ordem: 1.Software e Soluções de hardware para Embedded World .

Isto significa que os nomes de macro dentro de aspas não são expandida. Combinando as fichas separadas em uma nova token. o código a seguir. Isto é comumente usado para a construção de identificadores. a chamada SPLICE (cnt. Por exemplo. Os pré- processador remove espaços em branco e # #. Lcd_Custom_Out_Cp (IntToStr (temp)). # e # # proceder à substituição do operador e merg- ção durante a fase de pré-processamento de digitalização. \ Lcd_Custom_Out_Cp (IntToStr (val)). Operador # No pré-processador C. juntamente colocando # # entre eles (mais branco opcional em ambos os lados). Operador # # Operador # # é usado para colagem token. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem Preprocessor Operadores A # (Sinal de libra) é uma diretiva de pré-processamento quando ele ocorre como o primeiro não-branco caractere de espaço em uma linha. Ele pode ser colocado em frente de um argumento formal na definição de macro para converter o argumento real para após uma seqüência de substituição. Mikr oele ktro . 2) irá se expandir para o identificador cnt_2. Se você precisa de um argumento real (a seqüência exata de caracteres entre aspas). Dois símbolos podem ser colada (fundidas). uma sequência de caracteres entre aspas é considerado um símbolo e seu conteúdo não é analisada. LCD_PRINT (temp) será pré-processada para isso: Lcd_Custom_Out_Cp ("temp": "). Além disso. Agora. veja a definição de macro SPLICE para a colagem de dois símbolos em um identificador: # Define SPLICE (x. y) x _ # # # # y Agora. Por exemplo. use o # operador no corpo da macro. como resultado da pré-processamento. vamos ter macro LCD_PRINT para imprimir nome da variável e valor em LCD: # Define LCD_PRINT (val) Lcd_Custom_Out_Cp (# val ":").

Software e hardware SOLUÇÕES PARA mundo embutido 235 .nika .

o grupo logo após a linha # If directiva é retida na a unidade de tradução. se houver. # elif. mas no máximo um # Else directiva é permitido. Compilação condicional directivas de compilação condicional são normalmente utilizados para fazer programas de fonte fácil à mudança e fácil de compilar em ambientes de execução diferentes. seções pode ser qualquer texto do programa que tem significado para o compilador ou pré-processamento. Todas as diretivas de compilação condicional deve ser concluída na fonte ou no arquivo de inclusão em que eles começaram. # else. Qualquer númer o de # Elif directivas podem aparec er entre # If e # Endif directivas. Directivas # if. A # Else directiva. # elif. deve ser o Directiva com a última antes # Endif. substituindo a fonte apropriada- linhas de código com uma linha em branco.. Se a expressão que você escreve depois # If tem uma valor diferente de zero. e # Endif trabalho muito semelha nte ao comum demonstrações C condicional..Soluções de software e hardware para o mundo embutido . através da avaliaç ão constant_expression fol- 236 Mikroelektronika .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC Nota A mik roC PRO para PIC não suporta o método mais antigo nonportable de token colar com (L / ** / r). # else e # endif O condicional directivas # If. O mikroC PRO para o PIC suporta compilação condicional. [# 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. O pré-proc es s ador seleciona uma única seção. A sintaxe é: # If constant_expression_1 <section_1> [# Elif constant_expression_2 <section_2>] .

As expressões constantes estão sujeitas a expansão de macro. # elif. # elif. produzir o resultado oposto. CAPÍTULO 6 mikroC PRO para PIC Referência da Linguagem tes cada # If ou # Elif directiva até que encontre um verdadeiro (diferente de zero). o pré-processador selecciona o bloco de texto após o # Else cláusula. Se o # Else cláusula é omitido e todas as instâncias do constant_expression na # If bloco são falsas. ou # Endif directiv a pertenc e a mais próxima da anteri or o # If directiva. Um identificador definido como NULL é considerada como definida. não seção é selecionados para posterior processamento. A outra directiva. O resultado líquido da situação anterior é que o código apenas uma seção (Possivelmente vazia) será compilado. Qualquer seção processados podem conter cláusulas adicionais condicional. 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. # Ifndef. A sintaxe que se segue depois da # If. 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 não. Cada aninhadas # Else. ou se não # Elif directivas aparecem. e # Endif. Se todas as ocorrências da expressão constante são falsas. aninhados em qualquer profundidade. expressão constante- Sion.Soluções de software e hardware para o mundo embutido 237 . # else. Mikroelektronika . verdadeiros testes para o"Não definida" condição.

Soluções de software e hardware para o mundo embutido .CAPÍTULO 6 Referência da Linguagem mikroC PRO para PIC 238 Mikroelektronika .

CAPÍTULO 7 mikroC PRO para PIC Bibliotecas mik roC PRO para PIC prevê um conjunto de bibliotecas que simplificam a inicialização e uso de microcontroladores PIC complacente e seus módulos: Utilize o Gestor de Biblioteca para incluir mik roC PRO para PIC Bibliotecas em seu projeto. 239 .

PWM Biblioteca .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Bibliotecas Hardware PIC-específicas .Biblioteca LCD .OneWire Biblioteca .Biblioteca SPI Software .ANSI C Stdlib Biblioteca .CAN Biblioteca .ANSI C Biblioteca de Matemática .Trigonometria Biblioteca Veja também incorporada nas rotinas.Biblioteca Gráfica SPI LCD .Biblioteca Button .Setjmp Biblioteca .RS-485 Biblioteca .SPI LCD8 Biblioteca .Libray Muliti Media Card .UART Biblioteca .Biblioteca de código Manchester .Sprint Biblioteca .Teclado Biblioteca .Biblioteca SPI LCD .Biblioteca LCD Gráfico .ANSI C String Biblioteca Diversos Bibliotecas .Biblioteca USB HID Padrão ANSI C Bibliotecas . 240 Mikroelektronika .Biblioteca Ethernet SPI .Biblioteca Gráfica T6963C LCD .Biblioteca SPI .Time Library .Biblioteca UART Software .Biblioteca Memória Flash .Biblioteca CANSPI .Biblioteca Expander Porto .EEPROM Biblioteca .Ethernet PIC18FxxJ60 Biblioteca .Soluções de software e hardware para o mundo embutido .SPI Biblioteca Gráfica T6963C LCD .PS / 2 Biblioteca .Biblioteca de Som .Imprimir Biblioteca .Software Biblioteca I2C .ANSI C Ctype Biblioteca .Biblioteca ADC .Conversões Biblioteca .Biblioteca I2C .Biblioteca Compact Flash .

Soluções de software e hardware para o mundo embutido 241 . usa SPI_Glcd Glcd_Fonts e Port_Expander biblioteca que usa uma biblioteca SPI. PIC Bibliotecas Mikroelektronika . con- balcões de definidos em outras bibliotecas. Isto significa que se você verificar SPI_Glcd biblioteca em Manag-Biblioteca er. Informações relacionadas: gerente de Biblioteca. todas as bibliotecas de que ela depende serão verificados também. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas BIBLIOTECA DEPENDENCIES Alguns usam bibliotecas (depende) função e / ou variáveis. Por exemplo. Imagem abaixo mostra claramente repre- sentação sobre essas dependências CIES.

Biblioteca de código Manchester .EEPROM Biblioteca .Soluções de software e hardware para o mundo embutido .Biblioteca Ethernet SPI .UART Biblioteca .OneWire Biblioteca .PWM Biblioteca .Biblioteca LCD Gráfico .Ethernet PIC18FxxJ60 Biblioteca .Biblioteca USB HID 242 Mikroelektronika .Biblioteca SPI Software .Biblioteca UART Software .Biblioteca Gráfica T6963C Lcd .Biblioteca SPI Lcd .SPI Biblioteca Gráfica T6963C Lcd .Eu ˛ Biblioteca C .Imprimir Biblioteca .Biblioteca Lcd .Biblioteca SPI .Software I Biblioteca C ˛ .CAN Biblioteca .Biblioteca Memória Flash .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC HARDWARE BIBLIOTECAS .Biblioteca ADC .Biblioteca Gráfica SPI Lcd .Biblioteca CANSPI .Biblioteca Multi Media Card .Biblioteca Compact Flash .Biblioteca de Som .SPI Lcd8 Biblioteca .Biblioteca Expander Porto .Biblioteca do teclado .PS / 2 Biblioteca .RS-485 Biblioteca .

ADC_Read Protótipo não assinado ADC_Read (unsigned short canal). / / PORTA de entrada é ANSELH = 0. vazio main () { ANSEL = 0x04. / / Configure outras AN pinos como I / O digital TRISC = 0x3F. RC6 são saídas TRISB = 0. Consulte a ficha técnica apropriada para o canal-a-pino de mapeamento. Parâmetro canal representa o canal a partir do qual o valor analógico é a adquiridos. } Mikroelektronika . Requer Nada. / / Envia 2 bits mais significativos a RC7. Exemplo . / / PORTB é a saída fazer { temp_res = ADC_Read (2). / / Pins RC7. / / Envia abaixo de 8 bits a PORTB PORTC temp_res => 2.. / / Ler o valor analógico do canal 2 Exemplo Biblioteca Este exemplo de código lê o valor analógico do canal 2 e apresenta-lo no PORTB e PORTC.. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas ADC BIBLIOTECA ADC (Conversor Analógico Digital) módulo está disponível com um número de modelos PIC MCU. / / Obter os resultados de 10 bits da conversão AD PORTB = temp_res. Retorna 10-bit sem assinatura valor lido do canal especificado. / / Configure o pino AN2 como analógico TRISA = 0xFF. unsigned int temp_res. tmp = ADC_Read (2).Software e hardware SOLUÇÕES PARA mundo embutido 243 . Inicializa módulo PIC ADC interno para trabalhar com clock RC. Relógio determina Descrição o período de tempo necessário para a realização de conversão AD (min 12TAD). RC6 } while (1). Biblioteca função ADC_Read é incluído para oferecer-lhe confortáveis trabalhar com o módulo. não assinado tmp.

244 Mikroelektronika . dados defeituoso pode e quadros remotas são re-transmitidos auto- automaticamente. taxas de transferência de dados variam de até 1 Mbit / s em distâncias de 40m de rede abaixo de 250 Kbit / s em 250 cabos. Nota: Consultar o padrão CAN CAN sobre a resistência de terminação de barramento. Cabos utilizados são pares de fios trançados. de auto- e confinamento de falhas. semelhante ao da Ethernet. CAN suporta dois formatos de mensagens: formato padrão. e comprimento máximo do cabo é de 1000m. que é o bitrate mínimo definido pela norma.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Conexão HW ADC conexão HW CAN BIBLIOTECA mik roC PRO para PIC fornece uma biblioteca (driver) para trabalhar com o módulo CAN. e Extended format.Soluções de software e hardware para o mundo embutido . com 11 bits identificador. e pode ir ainda mais baixo em distâncias maiores da rede. para baixo a 200Kbit / s. CAN é um protocolo muito robusto que a detecção de erros e de sinalização. com 29 bits identificador Nota: CAN Biblioteca é apoiada apenas por MCUs com o módulo CAN.

Retorna Nada. esta é uma chamada atualmente suportadosem bloqueipor apenas o. Se for rotinas CAN0. ou seja. unsigned short Protótipo wait_flag). Mikroelektronika . Descrição Parâmetro wait_flag deve ser 0 ou 0xFF: Se definido como 0xFF. esta é uma chamada de bloqueio .a função não será "Retorno" até o modo solicitado está definido. modo Parâmetros deve ser um dos CAN_OP_MODE constantes (ver constantes CAN). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Rotinas da biblioteca CANSetOperationMode CANGetOperationMode CANInitialize CANSetBaudRate CANSetMask CANSetFilter CanRead CanWrite rotinas a seguir são para uso interno.comutada para Microregulador solicitadas Troller modoconectado deve ser ou não. Exemplo CANSetOperationMode (_CAN_MODE_CONFIG. 0xFF).Soluções de software e hardware para o mundo embutido 245 . Chamador ao CANdeve usar CANGetOpe transceptor rationMo (MCP2551 oudesimilares). compilador só: RegsToCANID CANIDToRegs Certifique-se de verificar as constantes podem necessário para utilizar algumas das funções. para verificar quea cor- é modo de operação conectado ao barramento CAN.rect antes da operação de modo a realização específica. cópias Modo para CANSTAT. Define CAN para o modo solicitado. CANSetOperationMode vazio CANSetOperationMode (unsigned short modo. Ele não verifica P18XXX8 se o módul o CAN é microcontroladores Requer PIC.

1. }. char CAN_CONFIG_FLAGS). Descrição função retorna modo de operação atual do módulo CAN. Inicializa CAN. char P HSEG2. Retorna Nada. = & _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. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores Requer PIC. CANInitialize (1.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANGetOperationMode Protótipo unsigned short CANGetOperationMode (). que é conectado ao barramento CAN.. 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 . 1.Software e Soluções de hardware para Embedded World . Exemplo se (CANGetOperationMode () == _CAN_MODE_NORMAL) {. Protótipo char PROPSEG.. eo restante para XTD_MSG Parâmetros: 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. Todas as transmissões pendentes são abortadas. o init) / / iniciali zar CAN 246 Mikroelektronika . Configura máscara de todos os registra a 0 para permitir que todas as mensagens.. 3. O modo de configuração é definido internamente por essa função. Retorna opmode atual. BRP c har. char PHSEG1. 3. Após uma execu- ção deste modo de funcionamento normal é definido. que éCAN) con- conectado init ao barramento CAN. CANInitialize vazio CANInitialize (char SJW. . Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares). registros de filtro são definidas de acordo com o valor de bandeira: Descrição 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..

(1-8) a função será ignorado. CANSetBaudRate (1. Retorna Nada.. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares) . char PHSEG1. 3.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido 247 . Parâmetros: 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 configuração 18XXX8 modo. Define CAN taxa de transmissão. 1.. . Em vez disso. você não pode simplesmente vigor um valor de bps. 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. 3. Mikroelektronika . Devido à complexidade do protocolo CAN. use esta função quando CAN está em modo de configuração. Consulte Descrição datasheet para mais detalhes. char BRP. Protótipo char PROPSEG. casodatasheet contrário. o init). Requer CAN_CONFIG_FLAGS é formado a partir de constantes rotinas podem atualmente suportado apenas por P18XXX8 predefinidasmicrocontroladores (ver constantes CAN) PIC. char PHSEG2. 1. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CANSetBoudRate vazio CANSetBaudRate (char SJW. char CAN_CONFIG_FLAGS).

rotinas podem atualmente suportado apenas por P18XXX8 PIC MCUs. char Protótipo CAN_CONFIG_FLAGS). Dado valor é um pouco ajustado para tampão apropriado registros de máscara. char Protótipo CAN_CONFIG_FLAGS). Função define filtro de mensagens. Retorna Nada. 248 Mikroelektronika . todos o s bits fi ltrados são relev antes: ser conectado CANSetMask a CAN transceptor ( _CAN_MAS K_B1. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Dado valor é um pouco ajustar- ed aos registos máscara apropriada buffer. Microcontrolador deve ser / / Set id B1_F1 filtro para 3: Exemplo ligado ao CAN(_CAN_FILTER_B1_F1. ou seja . a função será Requer ignorado. Descrição Parâmetros: 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. (MCP2551 -1. Exemplo CAN. quer _CAN_CONFIG_XTD_MSG CAN deve estar em modo de Ouconfiguração. a função será Requer ignorada. _CAN_CONFIG_STD_MSG caso contrário. Complemento irá fazer o truque e encha -o com os entes. tempo valor. / / Observe que -1 é apenas uma maneira mais barata de escrever 0xFFFFFFFF.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSetMask vazio CANSetFilter (char CAN_FILTER. Microcontrolador / / Seta todo s os deve bits de másca ra para 1 .Softwares e soluções de hardware para Embedded World . CANSetFilter vazio CANSetFilter (char CAN_FILTER. quer _CAN_CONFIG_XTD_MSG CAN deve estar em modo deOuconfiguração. tempo valor. _CAN_CONFIG_STD_MSG caso contrário. Descrição Parâmetros: CAN_MASK é um dos valores predefinidos constante (ver constantes CAN) valor é a máscara de registrar o valor CAN_CONFIG_FLAGS seleciona o tipo de mensagem para filtrar. Função define a máscara de filtragem avançada de mensagens. transceptor (MCP25513. Retorna Nada. ou similar) que é conectado ao barramento CAN. CANSetFilter _CAN_CONFIG_XTD_MSG). _CAN_COou NFIG_XTD similar) que é conectado ao barramento _MSG).

Exemplo / / . 1-8. é possível. TX).CAN rx. Se pelo menos um buffer de transmi ss ão vazia é encontr ada. char * dados. dados. dados. dados(MCP2551 [8].. Apenas 11 ou 29 bits podem ser usadas dependendo tipo de mensagem (padrão ou estendida) dados é matriz de bytes até 8 bytes de comprimento CAN datalen é o comprimento deve estar dos dados 1-8 no modo Normal. char * Datalen.. ou similar) que é conectado ao barramento CAN. Mikroelektronika . ela é Descrição extraídos e retornado. VN = CanRead (id. a função retorna zero. dados. / / . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CanRead char CanRead (long * Id. CanWrite unsigned shor t CanWrit e (long i d.. / / . Parâmetros: 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.. CAN) Microcontrolador deve ser ligado ao char tx.(ver constantes CAN) Microcontrolador deve ser ligado ao char VN.Soluções de software e hardware para o mundo embutido 249 . / / . a função retorna 0. CanWrite (id. 2.. a função envia mens agem sobre fila Descrição para a transmissão. Retorna Retorna zero se a mensagem não pode ser na fila (buffer cheio). Se pelo menos um buffer cheio receber for encontrada. Retorna Mensagem do buffer de recepção ou zero se nenhuma mensagem de encontrado. char * dados. tempo id.. Se o buffer está cheio. c har datal en. Se nenhum encontrada. a recepção Requer CAN_RX_MSG_FLAGS valor é formado a partir rotinas podem atualmente apoiada apenas por P18XXX8 de constantes MCUs PIC. Função lê mensagem do buffer de recebimento. len rx).transceptor len. tempo id. Parâmetros: id é a mensagem CAN identific ador ... char Protótipo CAN_TX_MSG_FLAGS). Exemplo tx = & _CAN_TX_PRIORITY_0 _CAN_TX_XTD_FRAME. Requer CAN_TX_MSG_FLAGS rotinas podem atualmente suportado apenasapor valor é formado partir de constantes P18XXX8 (ver constantes microcontroladores PIC.CAN transceptor (MCP2551 ou similar) que é conectado ao barramento CAN. rx = 0. char Protótipo CAN_RX_MSG_FLAGS *).

/ / XXXXXXX1 _CAN_CONFIG_PHSEG2_PRG_OFF = 0xFE. _CAN_CONFIG_STD_MSG = 0xFF. _CAN_CONFIG_P HSEG2_PRG _ON = 0xFF. CAN_OP_MODE CAN_OP_MODE constantes definem operação pode modo. / XXXXX0XX / _CAN_CONFIG_MSG_TYPE_BIT = 0x08. / XXX1XXXX / _CAN_CONFIG_DBL_BUFFER_OFF = 0xEF. _CAN_CONFIG_D BL_BUFFER _ON = 0xFF. _CAN_MODE_CONFIG = 0x80. como seu argumento: const char _CAN_CONFIG_DEFAULT = 0xFF. _CAN_MODE_SLEEP = 0x20. / XXXXXX0X / _CAN_CONFIG_SAMPLE_BIT = 0x04.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CAN Constantes Há um número de constantes predefinidas na biblioteca da CAN. / XXXXXX1X / _CAN_CONFIG_LINE_FILTER_OFF = 0xFD. Funções CANInitialize e CANSetBaudRate esperar que um deles (ou um bit a bit combinação). / XXXX1XXX / _CAN_CONFIG_XTD_MSG = 0xF7. / / Utilize esta opção para acesso opmode bits _CAN_MODE_NORMAL = 0x00. Para poder usar o biblioteca de forma eficaz. no final do capítulo. CAN_CONFIG_FLAGS CAN_CONFIG_FLAGS constantes definem bandeiras relacionadas com a configuração do módulo CAN. / XXX0XXXX / 250 Mikroelektronika . / / 11111111 _CAN_CONFIG_PHSEG2_PRG_BIT = 0x01. / XXXX0XXX / _CAN_CONFIG_DBL_BUFFER_BIT = 0x10. _CAN_MODE_LISTEN = 0x60. você precisa estar familiarizado com estes. _CAN_CONFIG_LINE_FILTER_ON = 0xFF. / XXXXX1XX / _CAN_CONFIG_S AMPLE_THR ICE = 0xFB. _CAN_MODE_LOOP = 0x40.Soluções de software e hardware para o mundo embutido . _CAN_CONFIG_SAMPLE_ONCE = 0xFF. Você pode querer verificar a exemplo. Função CANSetOperationMode espera que um dos estas como seu argumento: const char _CAN_MODE_BITS = 0xE0. / / XXXXXXX0 _CAN_CONFIG_LINE_FILTER_BIT = 0x02.

_CAN_TX_PRIORITY_0 = 0xFC. dados. CANSendMessage (id.. 1. / / Inicializa CAN CAN_TX_MSG_FLAGS CAN_TX_MSG_FLAGS estão relacionadas com bandeiras transmissão de uma mensagem CAN: const char _CAN_TX_PRIORITY_BITS = 0x03.. 3. _CAN_TX_NO_RTR_FRAME = 0xFF. / X01XXXXX / _CAN_CONFIG_A LL_VALID_ MSG = 0x9F. 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. / X0XXXXXX / Você pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. / / XXXXXX11 _CAN_TX_FRAME_BIT = 0x08. send_config). Por exemplo: / Valor / formulário para ser usado com CANSendMessage: send_config _CAN_TX_PRIORITY_0 = & _CAN_TX_XTD_FRAME & _CAN_TX_NO_RTR_FRAME. / X00XXXXX / Você pode usar AND bit a bit (&) para formar config byte fora desses valores. Mikroelektronika . 3 . o init). / X1XXXXXX / _CAN_TX_RTR_FRAME = 0xBF. / / XXXXXX00 _CAN_TX_PRIORITY_1 = 0xFD. _CAN_CONFIG_ALL_MSG = 0xFF. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas _CAN_CONFIG_MSG_BITS = 0x60. / X11XXXXX / _CAN_CONFIG_V ALID_XTD_ MSG = 0xDF. / / XXXXXX01 _CAN_TX_PRIORITY_2 = 0xFE. / / XXXXX1XX _CAN_TX_XTD_FRAME = 0xF7. _CAN_TX_STD_FRAME = 0xFF. / / XXXXXX10 _CAN_TX_PRIORITY_3 = 0xFF.. 1. / X10XXXXX / _CAN_CONFIG_V ALID_STD_ MSG = 0xBF. CANInitialize (1. . / XXXXX0XX / _CAN_TX_RTR_BIT = 0x40. 1..Soluções de software e hardware para o mundo embutido 251 . .

/ / Nós perdemos a nossa mensagem anterior. CAN_FILTER CAN_FILTER constantes definir códigos de filtro.SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo . _CAN_RX_FILTER_2 = 0x01.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CAN_RX_MSG_FLAGS CAN_RX_MSG_FLAGS são flags relacionados com a recepção da mensagem CAN. _CAN_RX_OVERFLOW = 0x08. _CAN_RX_FILTER_3 = 0x02.. const char _CAN_RX_FILTER_BITS = 0x07 / Uso / este acesso bits filtro _CAN_RX_FILTER_1 = 0x00. Função CANSetFilter espera uma destas como sua argumento: const char _CAN_FILTER_B1 _F1 = 0. cor- responder significado é TRUE ou então ele será FALSE. Função CANSetMask espera que um dos estas como seu argumento: # const char _CAN_MASK_B1 = 0. / / Define se a mensagem RTR mais limpo _CAN_RX_DBL_BU FFERED = 0x80 / / Define se a mens agem foi rígido ware buffer duplo Você pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. 252 Mikroelektronika . _CAN_FILTER_B2 _F2 = 3 º. _CAN_FILTER_B2 _F1 = 2. Por exemplo: se (MsgFlag & _CAN_RX_OVERFLOW! = 0) { . / / Define se a mensagem XTD mais limpo _CAN_RX_RTR_FRAME = 0x40. _CAN_RX_FILTER_4 = 0x03.. } CAN_MASK CAN_MASK constantes definem códigos máscara. _CAN_MASK_B2 = 1. / / Receptor estouro ocorreu. Se um bit especial é definido. / / Define se inválido mais limpo _CAN_RX_XTD_FRAME = 0x20. _CAN_FILTER_B1 _F2 = 1. _CAN_RX_FILTER_5 = 0x04. _CAN_RX_FILTER_6 = 0x05. / / Defina se Overflowed mais limpo _CAN_RX_INVALID_MSG = 0x10.

Exemplo Biblioteca Esta é uma simples demonstração de CAN Biblioteca rotinas de uso. enviando alguns dados para o seu endereço. Primeiro nó em seguida faz o mesmo e envia os dados incrementado de volta para o segundo nó. / mask 2 definir todos o s bits pa ra os CANSetFilter (_CAN_FILTER_B2_F4. / mask 1 definir todos o s bits pa ra os CANSetMask (_ CAN_MASK_ B2. / / Can_Send_Flags = 0. / / Definir o modo normal RxTx_Data [0] = 9. Sinalizador / recepção / const longo ID_1st = 12111. / / Bandeiras claras Can_Rcv_Flags = 0. Can_Init_Flags _CAN_CONFIG_SAMPLE_THRICE = & / Valor / formulário a ser utilizado _CAN_CONFIG_PHSEG2_PRG_ON & / / Com CANInit _CAN_CONFIG_XTD_MSG & _CAN_CONFIG_DBL_BUFFER_ON & _CAN_CONFIG_VALID_XTD_MSG. Can_Init_Flags). _ CAN_CONFI G_XTD_MSG ). PORTC / claro TRISC = 0. -1. CANInitialize (1. / / Can_Send_Flags = & _CAN_TX_PRIORITY_0 / valor / formulário a ser utilizado _CAN_TX_XTD_FRAME E / com CanWrite _CAN_TX_NO_RTR_FRAME. _ CAN_CONFI G_XTD_MSG ). / / Configura como PORTC saída Can_Init_Flags = 0. 0xFF). / / conjunto de dados inicial a ser enviada Mikroelektronika . etc Código para o nó CAN primeiro: unsigned char Can_Init_Flags.3. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas _CAN_FILTER_B2_F3 = 4. / / Inicializa o módulo CAN CANSetOperationMode (_CAN_MODE_CONFIG. / / modo de configuração definidas CANSetMask (_ CAN_MASK_ B1. Can_Send_Flags.1. _CAN_CONFIG_XTD_MSG). IDs / node / tempo Rx_ID. _CAN_FILTER_B2_F4 = 5.Soluções de software e hardware para o mundo embutido 253 .3. A segundo nó responde enviando de volta os dados incrementado em 1. vazio main () { PORTC = 0. 0xFF). Primeiro nó inicia a comunicação com o segundo nó. -1. ID_2nd.3. / / set id B2_F4 filtro para segundo nó ID CANSetOperationMode (_CAN_MODE_NORMAL. 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. ID_2nd = 3.

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. / / modo de configuração definidas CANSetMask (_CAN_MASK_B1. Can_Init_Flags). / / Bandeiras claras Can_Rcv_Flags = 0. Can_Send_Flags. RxTx_Da ta & Rx_Data_Len & Can_R cv_Flags).CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CanWrite (ID_1st.1. corrigir a PORTC RxTx_Data [0] + +. _CAN_CONFIG_XTD_MSG). / / Can_Send_Flags = & _CAN_TX_PRIORITY_0 / valor / formulário a ser utilizado _CAN_TX_XTD_FRAME E / com CanWrite _CAN_TX_NO_RTR_FRAME. Can_Send_Flags). RxTx_Data. / node / Identificações tempo Rx_ID.3. CanWrite (ID_1st. ID_2nd = 3. / / receber mensagem se ((Rx_ID == ID_2nd) & & Msg_Rcvd) {/ / se a mensagem recebida de seleção ID PORTC RxTx_Data = [0] / / id de saída de dados. -1. sinalizador / recepção / const longo ID_1st = 12111. / / incrementado enviar dados de volta } } } Código para o nó CAN segundo: unsigned char Can_Init_Flags. 0xFF). / / configura todos mask1 bits para os 254 Mikroelektronika . 1. 1. / / Can_Send_Flags = 0. / / incrementa os dados recebidos Delay_ms (10).Soluções de software e hardware para o mundo embutido . / / inicializa o módulo CAN externa CANSetOperationMode (_CAN_MODE_CONFIG. Can_Init_Flags = & _CAN_CONFIG_SAMPLE_THRICE / valor / formulário 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. RxTx_Data. / / Set PORTC como saída Can_Init_Flags = 0.3. PORTC / claro TRISC = 0. vazio main () { PORTC = 0. / / envia mensagem inicial while (1) {/ / faz um loop infinito Msg_Rcvd CanRead = (& Rx_ID. Can_Send_Flags).3.

/ / id corrigi r os dad os. a pro dução a PORTC RxTx_Data [0] + +. Can_Send_Flags). / receber mensagens se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleção ID PORTC RxTx_D ata = [0 ]. 0xFF). / / o modo NORMAL enquanto (1) {/ / faz um loop infinito Msg_Rcvd CanRead = (& Rx_ID. / set / ID da B2_F3 filtro para 1 nó ID CANSetOperationMode (_CAN_MODE_NORMAL. _CAN_CONFIG_XTD_MSG). RxTx_Data. / / incrementa os dados recebidos CanWrite (ID_2nd. -1. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CANSetMask (_CAN_MASK_B2. _CAN_CONFIG_XTD_MSG).Soluções de software e hardware para o mundo embutido 255 . 1. / / configura todos mask2 bits para os CANSetFilter (_CAN_FILTER_B2_F3. ID_1st. & Can_Rcv_Flags). / / envia incre - dados documentados de volta } } Conexão HW Exemplo de interface CAN transceptor com MCU e ônibus Mikroelektronika . RxTx_Data & Rx_Data_Len.

O usuário deve inicializar SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. CanSpi_CS. RC0_bit. 1 Mbit / s pode ser obtida em net- comprimentos de trabalho abaixo de 40m. Os cabos utilizados são pares de fios trançados. de auto-verificação e confinamento de falhas. O menor bitrate definido pelo padrão é 200Kbit / s. switch usando o SPI_Set_Active () rotina. Uma velocidade de comunicação eficaz CANSPI depende SPI e. Por exemplo. sbit sfr extern sbit CanSpi_Rst em linha de reposição. O CAN é um protocolo muito robusto que a detecção de erros e sinalização. com 11 bits de identificador e Extensão formato. em TRISC0_bit. CAN suporta dois formatos de mensagens: formato padrão. dados defeituoso pode e quadros remoto são re- transmitidas automaticamente. CanSpi_Rst_Direction. certamente.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSPI BIBLIOTECA O módulo SPI está disponível com uma série de microcontroladores PIC compatível. sbit sfr extern sbit CanSpi_Rst_Direction Direção do pino de Reset. As seguintes das variáveis dependências externas de CANSPI Biblioteca deve ser definida na Descrição: Exemplo: todos projetos usando CANSPI sbit sfr extern sbit CanSpi_CS em Biblioteca: Chip linha Select. O mikroC PRO para PIC oferece uma biblioteca (driver) para trabalhar com CANSPI mikroElektronika's Placas de expansão (com ou MCP2515 MCP2510) via interface SPI. A biblioteca utiliza o módulo de comunicação SPI. com 29 bits identificador. Selecione pino. RC2_bit. Para MCUs com dois módulos SPI é possível inicializar ambos e. em TRISC2_bit. taxas de transferência de dados dependem da distância. Quanto maior a distância menor bitrate máximo que pode ser alcançado. sbit sfr extern Direção do Chip sbit CanSpi_CS_Direction CanSpi_CS_Direction. CANSPI módulo refere-se a CANSPI mikroElektronika do Add-on board conectado ao módulo SPI de MCU. enquanto 250 Kbit / s pode ser obtida em comprimentos de rede abaixo 250m.Soluções de software e hardware para o mundo embutido . 256 Mikroelektronika . em seguida. semelhante ao Ethernet. é mais lento do que "Real" CAN. CanSpi_Rst. Nota: Consulte a norma CAN CAN sobre a resistência de terminação de ônibus.

CANSPIInitialize . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Rotinas da biblioteca .CANSPIread . Mikroelektronika .Soluções de software e hardware para o mundo embutido 257 .CANSPISetOperationMode .RegsToCANSPIID .CANSPISetFilter .CANSPISetBaudRate .CANSPIGetOperationMode .CANSPIIDToRegs Certifique-se de verificar constantes CANSPI necessário para utilizar algumas das funções.CANSPIWrite As rotinas a seguir são para um uso interno da biblioteca.CANSPISetMask . apenas: .

char WAIT). Valores válidos: CANSPI_OP_MODE con- balcões de (ver constantes CANSPI). ..ESPERA: CANSP I modo d e comuta ção pedi do de ve rificação .a função pelo"Retorno" não será MCUs com atéoomódulo SPI. a chamad a não é bloqueio. modo solicitado Requer MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra está definido. A rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI. Veja o exemplo de conexão na parte inferior desta /página. Chamador deve usar CANSPIGetOperation Mode para verificar a cor- modo de operação rect antes da operação de modo a realização específica. Requer MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra Câmar a ou hardware semelhante. Exemplo if (CANSPIGetOperationMode () == _CANSPI_MODE_NORMAL) { . Confira CAN- Descrição SPI_OP_MODE constantes (ver constantes CANSPI) ou folha de dados do dispositivo para ópera Modo de códigos ção. / Verifica se o módulo CANSPI está no modo normal e se é fazer alguma coisa. Define o módulo CANSPI para o modo solicitado. } 258 Mikroelektronika .Soluções de software e hardware para o mundo embutido . Se WAI T == 0.modo: CANSPI modo de operação do módulo. / / Configurar Vejano o módulo CANSPI o exemplo de conexão modo de configuração na parte (aguardar inferior desta dentro Exemplo página. Retorna modo de operação atual. o As rotinas está chamada CANSPI são suportados bloqueando apenas . Parâmetros: Descrição . CANSPIGetOperationMode Protótipo char CANSPIGetOperationMode (). 0xFF). A função retorna o modo de operação atual do módulo CANSPI. CANSPISetOperationMode até este modo estiver definido) CANSPISetOperationMode (_CANSPI_MODE_CONFIG. Câmar a ou hardware semelhante. Se AGUARDE! = 0..CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSPISetOperationMode Protótipo vazio CANSPISetOperationMode (char modo. A função não verifica se o módulo está ligado a CANSPI solicitadas modo ou não. Retorna Nada.

As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI.PHSEG2 conforme definido na ficha técnica do controlador CAN .Soluções de software e hardware para o mundo embutido 259 . O SPI módulo precisa ser inicializado. Stand-Alone controlador CAN no módulo CANSPI é definido como: .Taxa de transmissão é definida de acordo com determinados parâmetros . char CANSPI_CONFIG_FLAGS).PHSEG1 tal como definido no controlador CAN datasheet .Fcan relógio: 4 * Países Terceiros (FOSC) .CAN_CONFIG_FLAGS é formado a partir de constantes predefinidas (ver CANSPI con- balcões de) As variáveis globais: .Filtro e uma máscara tipo de estrutura da mensagem é definido de acordo com CAN_CONFIG_ FLAGS valor SAM. char Protótipo PHSEG2.SJW conforme definido na ficha técnica do controlador CAN .CanSpi_CS: Chip Selecionar linha .Filtro e as identificações de registros máscara são definidos como zero .CanSpi_Rst_Direction: Direção do pino de Reset devem ser definidas antes de utilizar esta função. Veja o exemplo de conexão na parte inferior desta página.Continuar a CAN operação em modo de Espera . char PHSEG1.CanSpi_Rst: linha de reset . Mikroelektronika . Retorna Nada.Desabilite pode capturar . MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Câmara ou sim- homólogos de hardware. Parâmetros: . char PROPSEG.CanSpi_CS_Direction: Direção do pino de Chip Select Requer .Não interromper as transmissões pendentes . Veja o SPI1_Init e SPI1_Init_Advanced rotinas.PROPSEG conforme definido na ficha técnica do controlador CAN .BRP conforme definido na ficha técnica do controlador CAN . WAKFIL e DBEN bits são definidos de acordo toCANSPI_CONFIG_FLAGS valor. SEG2PHTS. char BRP.Modo CAN: Normal Descrição . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CANSPIInitialize vazio CANSPIInitialize ( char SJW. Inicializa o módulo CANSPI.

/ / Fim conexões CANSPI módulo / / Inicializa o módulo CANSPI com a taxa de trans missão e bandeiras de aceitação de mensagens. . / / inicializa CANSPI módulo externo 260 Mikroelektronika . sbit CanSpi_Rst_Direction em TRISC2_bit. / / inicializa o módulo SPI CANSPIInitialize (1. C anSpi_Init_Flags).. SPI1_Init ().CAPÍTULO 7 Bibliotecas mikroC PRO para PIC / / Conexões CANSPI módulo sbit CanSpi_CS em RC0_bit.Soluções de software e hardware para o mundo embutido . 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.1.. sbit CanSpi_CS_Direction em TRISC0_bit.. juntamente com as regras de amostragem char CanSPi_Init_Flags. ..3.3.3. sbit CanSpi_Rst em RC2_bit.

Mikroelektronika .Soluções de software e hardware para o mundo embutido 261 . Consulte a ficha técnica para mais detalhes.SJW como definidos na ficha técnica do controlador CAN . Veja o exemplo de conexão na parte inferior desta . As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI. você não pode simplesmente forçar um valor bps. char PROPSEG. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CANSPISetBaudRate vazio CANSPISetBaudRate ( char SJW. char BRP. página. use esta função quando o CANSPI módulo está em modo de configuração. / CONFIGU RAÇÃO / set - Modo de ração (CANSPI mastr o módulo de estar em modo de conf iguração par a a taxa de transmissã o Exemplo configurações) 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.PHSEG2 conforme definido na ficha técnica do controlador CAN . Retorna Nada. 0xFF).PROPSEG conforme definido na ficha técnica do controlador CAN O módulo CANSPI deve estar no modo de configuração. Define a taxa de CANSPI módulo de transmissão.CAN_CO NFIG_FLA GS é formado a partir de constantes predefinidas (ver constantes CANSPI) função será Requer ignorados... Devido à complexidade do protocolo CAN. canspi_config_flags). Em vez disso. CANSPISetBaudRate (1. 1. 3.BRP conforme definido na ficha técnica do controlador CAN . 3. hardware semelhante. char Protótipo PHSEG2. caso contrário. Parâmetros: . char PHSEG1. 1.PHSEG1 conforme definido na ficha técnica do controlador CAN . SEG2PHTS e WAKFIL bits são definidos de acordo com CANSPI_CONFIG_FLAGS valor. char CANSPI_CONFIG_FLAGS). Veja CANSPISetOperationMode. Descrição SAM. CANSPISetOperationMode (CANSPI_MODE_ CONFIG. MCU tem para ser conectad o corretame nte mikroElek tr oni k a de CANSPI Extra / / Necessário Câmar a ou definir taxa de transmissão e regras de amostragem char canspi_config_flags. a .

/ / Complemento irá fazer o truque e encha-o com os entes. As rotinas são suportados CANSPI apenas por MCUs com o módulo SPI. -1. Retorna Nada. hardware / / Modo conjsemelhante.Soluções de software e hardware para o mundo embutido .máscara de valor do registo: val .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSPISetMask vazio CANSPIS etMask (c har CANSP I_MASK. para as configurações de máscara) Exemplo / / Set B1 todos os bits de máscara a 1 (todos os bits são filtrados relevante): / / Observe que -1 é apenas uma maneira mais barata de escrever 0x FFFFFFFF. 0xFF). t empo val. Vejaõeso exemplo unto de c onfiguraç de conexão (módu lo CANSPI deve est arna no parte mod o deinferior con fig desta página. Veja CANSPISetOperationMode. 262 Mikroelektronika . Parâmetros: Descrição . MCU tem de ser devidam ente conecta do a mikroEl ek tr oni k a de CANSP I Extra / / Definir a máscara de filtro adequado e valor tipo de mensagem Câmar a ou CANSPISetOperationMode (_CANSPI_MODE_CONFIG. Valores válidos: CANSPI_MAS K costants (Ver constantes CANSPI) . Valores válidos: CANSPI_CONFIG_ALL_VALID_MSG.CAN_MASK: CANSPI número de máscara de módulo. Configur a uma máscar a de filtragem avanç ada de mens agens . O módulo (Ver CANSPI constantes deve estar no modo de configuração.CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. a CANSPI) função será Requer ignorados. CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG. caso contrário. O parâmetr o valor é pouco ajustadas aos registos máscara apropriada. _CANSPI_CONFIG_MATCH_MSG _TYPE & _CANSPI_CONFIG_XTD_MSG). CANSPISetMask (_CANSPI_MASK_B1. CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG. char CAN SPI_CON- Protótipo FIG_FLAGS).

Vejaõeso exemplo unto de c onfiguraç de conexão (módu lo CANSPI deve est arna no parte mod o deinferior con fig desta Exemplo página. CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG. (Ver constantes CANSPI) O módulo CANSPI deve estar no modo de configuração.valor do registro do filtro: val . As rotinas CANSPI são suportados apenas pelo MCUs com o SPI módulo. para as definições do filtro) / * Defina id B1_F1 filtro para 3: * / CANSPISetFilter (_CANSPI_FILTER_B1_F1. Veja CANSPISetOperationMode. hardware / / Modo conjsemelhante. 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 Câmar a ou CANSPISetOperationMode (_CANSPI_MODE_CONFIG. 0xFF). Mikroelektronika . O parâmetro valor é pouco adaptado ao dis- comeu registros filtro.Soluções de software e hardware para o mundo embutido 263 . _CANSPI_CONFIG_XTD_MSG). a função será Requer ignorados. Parâmetros: . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CANSPISetFilter vazio CANSPISetFilter (char CANSPI_FILTER. CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG. Configura a mensagem de filtro. Valores válidos: CANSPI_CONFIG_ALL_VALID_MSG.CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar.CAN_FILTER: módulo de filtro CANSPI número. Retorna Nada. char Protótipo CANSPI_CONFIG_FLAGS). Valores válidos: CANSPI_FILTER Descrição constantes (ver constantes CANSPI) . tempo val. caso contrário. 3.

rx_flags. Veja opara mensagens exemplo recebidas. fazer alguma coisa.ID da mens age m é recuper ada e armaz e nada na localizaç ão forneci das pela id Descrição parâmetr o . Retorna ..Soluções de software e hardware para o mundo embutido . rx_flags = 0. data_len. } 264 Mikroelektronika .0 se nada for recebido . tempo msg_id. CAN_RX_MSG_FLAGS: -MCU tem de ser devidambandeiras de mensagem ente conecta do a mikroElde ek trendereço oni k a de de armaz CANSP enament o I Extra Câmar a ou /hardware / Verificação o módulo CANSPI semelhante. char Protótipo CANSPI_RX_MSG_FLAGS *).... char msg_rcvd. 0xFF). . na de conexão Se parte algum foi inferior desta receberam página.Mensagem bandeiras são recuperados e armazenados para a localização fornecida pela CAN_RX_MSG_FLAGS parâmetro Parâmetros: O módulo CANSPI deve estar em um modo no qual é possível receber.Mensagem dados são recuperados e armazenados em um buffer fornecido pelo o rd_data parâmetro . / / Limpa bandeiras de mensagem if (= msg_rcvd CANSPIRead (msg_id.Tamanho da mensagem é recuperada e armazenada a localização fornecida pela data_len parâmetro . rx_flags)) { . dados data_len. char * Data_len..0xFF se um dos buffers de recepção está cheio (mensagem recebidos) Se pelo menos um buffer de recebi mento integr al for encontr ad o. char * Rd_data. . ele será proces s ado nas seguintes maneira: . / / Definir o modo normal (módulo CANSPI deve estar no modo em que receber é possível) . Veja CANSPISetOperationMode.data_len: endereço de armazenamento de dados de comprimento. char dados [8].ID: identificador de mensagem de armazenamento endereço Requer -Asrd_data: buffer de dados (uma matriz de pelo bytesMCUs até 8 combyteso de comprimento) rotinas CANSPI são suportados apenas módulo SPI. Exemplo CANSPISetOperationMode (CA_NSPI_MODE_NORMAL.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSPIRead char CANSPIRead (long * Id. ..

a função envia mensagem em fila para a transmissão. / / Mensagem de flags CANSPIWrite (msg_id. char CAN- Protótipo SPI_TX_MSG_FLAGS). Descrição Parâmetros: ..wr_data: dados a serem enviados (um array de bytes até 8 bytes de O módulo CANSPI deve estar no modo em que a transmissão seja possível. 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 Câmar a ou dados hardware semelhante. Retorna . Exemplo . tx_flags). Veja o exemplo de conexão na parte inferior desta char tx_flags. dependendo de tipo de mensagem (padrão ou estendida) . CANSPISetOperationMode (_CANSPI_MODE_NORMAL. char dados [8]. 2.data_len: dados de comprimento.0xFF se pelo menos um buffer de transmissão está disponível Se pelo menos um vazio buffer de transmissão for encontrado. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas CANSPIWrite char CANSPIWrite (long id. dados. tempo msg_id. Valores válidos: 1 a 8 Requer CANSPISetOperationMode.Soluções de software e hardware para o mundo embutido 265 .. . char * Wr_data.id: identificador de mensagem CAN. Mikroelektronika . 0xFF). página.CAN_RX_MSG_FLAGS: bandeiras de mensagem As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI. / / Definir o modo normal (CANSPI de ve estar no modo em que a transmissão é possível) tx_flags = _CANSPI_TX_PRIORITY_0 & _CANSPI_TX_XTD_FRAME. char data_len. comprimento) Veja .0 Se todos os buffers de transmissão estão ocupados . Valores válidos: 11 ou 29 valores pouco.

Check -exame plo. _CANSPI_CONFIG_PHSEG2_PRG_ON = 0xFF. CANSPI_OP_MODE A CANSPI_OP_MODE CANSPI constantes definem o modo de operação. _CANSPI_CONFIG_SAMPLE_ONCE = 0xFF. _CANSPI_MODE_SLEEP = 0x20. / XXXX0XXX / 266 Mikroelektronika . CANSPISetBaudRate. CANSPISetMask e CANSPISetFilter esperar um desses (ou uma combinação bit a bit - ção). / / XXXXXXX1 _CANSPI_CONFIG_PHSEG2_PRG_OFF = 0xFE.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSPI Constantes Há um número de constantes predefinidas na biblioteca CANSPI. _CANSPI_MODE_CONFIG = 0x80. / / XXXXXXX0 _CANSPI_CONFIG_LINE_FILTER_BIT = 0x02. / XXXXXX1X / _CANSPI_CONFIG_LINE_FILTER_OFF = 0xF D. a fim de ser capaz de usar a biblioteca eficazmente. _CANSPI_CONFIG_STD_MSG = 0xFF. _CANSPI_MODE_LISTEN = 0x60. / XXXX1XXX / _CANSPI_CONFIG_XTD_MSG = 0xF7. As funções CANSPIInitialize. / XXXXX1XX / _CANSPI_CONFIG_SAMPLE_THRICE = 0xFB. Função CANSPISetOperationMode espera uma destas como é argumento: const char _CANSPI_MODE_BITS = 0xE0.Soluções de software e hardware para o mundo embutido . como seu argumento: const char _CANSPI_CONFIG_DEFAULT = 0xFF. / / 11111111 _CANSPI_CONFIG_PHSEG2_PRG_BIT = 0x01. / XXXXXX0X / _CANSPI_CONFIG_SAMPLE_BIT = 0x04. no final do capítulo. / XXXXX0XX / _CANSPI_CONFIG_MSG_TYPE_BIT = 0x08. _CANSPI_CONFIG_LINE_FILTER_ON = 0xFF. / / Utilize esta opção para acesso opmode bits _CANSPI_MODE_NORMAL = 0x00. Você precisa ser familiarizado com eles. _CANSPI_MODE_LOOP = 0x40. CANSPI_CONFIG_FLAGS A CANSPI_CONFIG _FLAGS constantes definem bandeir as relacionad as com o módul o CANSP I configuração.

. / XXXXX1XX / _CANSPI_TX_XTD_FRAME = 0xF7.. 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. _CANSPI_CONFIG_ALL_MSG = 0xFF. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas _CANSPI_CONFIG_DBL_BUFFER_BIT = 0x10. o i nit). / X11XXXXX / _CANSPI_CONFIG_VALID_XTD_MSG = 0xDF. 1. send_config). / XXXXX0XX / _CANSPI_TX_RTR_BIT = 0x40.. / XXX1XXXX / _CANSPI_CONFIG_DBL_BUFFER_OFF = 0xEF. 1. 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. _CANSPI_TX_NO_RTR_FRAME = 0xFF. 1. / X00XXXXX / Você pode usar AND bit a bit (&) para formar config byte fora desses valores. / / XXXXXX10 _CANSPI_TX_PRIORITY_3 = 0xFF. CANSPIInitialize (1. 3. / / XXXXXX11 _CANSPI_TX_FRAME_BIT = 0x08. dados. / X0XXXXXX / Você pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Mikroelektronika . / XXX0XXXX / _CANSPI_CONFIG_MSG_BITS = 0x60. / / XXXXXX00 _CANSPI_TX_PRIORITY_1 = 0xFD. _CANSPI_TX_STD_FRAME = 0xFF.Soluções de software e hardware para o mundo embutido 267 . / X01XXXXX / _CANSPI_CONFIG_ALL_VALID_MSG = 0x9F. _CANSPI_CONFIG_DBL_BUFFER_ON = 0xFF. . / X10XXXXX / _CANSPI_CONFIG_VALID_STD_MSG = 0xBF. 3. CANSPIWrite (id. _CANSPI_TX_PRIORITY_0 = 0xFC. .. / X1XXXXXX / _CANSPI_TX_RTR_FRAME = 0xBF. / / XXXXXX01 _CANSPI_TX_PRIORITY_2 = 0xFE. / / Inicializa CANSPI CANSPI_TX_MSG_FLAGS CANSPI_TX_MSG_FLAGS são flags relacionados com a transmissão de uma mensagem CAN: const char _CANSPI_TX_PRIORITY_BITS = 0x03.

_CANSPI_RX_FILTER_6 = 0x05. como é o argumento: const char _CANSPI_FILTER_B1_F1 = 0. / / Receptor estouro ocorreu. _CANSPI_FILTER_B2_F1 = 2. Funções CANSPISetFilter espera que um destes. _CANSPI_RX_FILTER_4 = 0x03.. _CANSPI_RX_OVERFLOW = 0x08 / / Defina se Overflowed mais limpo _CANSPI_RX_INVALID_MSG = 0x10. _CANSPI_FILTER_B1_F2 = 1. 268 Mikroelektronika . _CANSPI_FILTER_B2_F2 = 3 º. / / Utilize esta opção para filtrar o acesso bits _CANSPI_RX_FILTER_1 = 0x00. _CANSPI_MASK_B2 = 1. _CANSPI_RX_FILTER_3 = 0x02. _CANSPI_RX_FILTER_5 = 0x04. / / Define se inválido 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 difícil ware buffer duplo Você pode usar AND bit a bit (&) para ajustar o sinalizadores apropriados. Se um partic u- bit lar estiver definido. } CANSPI_MASK A CANSPI_MASK constantes definem códigos máscara. Função CANSPISetMask espera um desses como é argumento: const char _CANSPI_MASK_B1 = 0. CANSPI_FILTER A CANSPI_FILTER constantes definir códigos de filtro.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC CANSPI_RX_MSG_FLAGS CANSPI_RX_MS G_FLAGS são flags relacionados com a recepç ã o da mens ag em CAN.Soluções de software e hardware para o mundo embutido .. _CANSPI_RX_FILTER_2 = 0x01. const char _CANSPI_RX_FILTER_BITS = 0x07. / / Nós perdemos a nossa mensagem anterior. então correspondente significado é TRUE ou então ele será FALSE. Por exemplo: se (MsgFlag & _CANSPI_RX_OVERFLOW! = 0) { .

Exemplo Biblioteca Esta é uma simples demonstração de CANSPI Biblioteca de rotinas de utilização. enviando alguns dados para o seu endereço. / PORTB set / como saída Can_Init_Flags = 0. Primeiro nó ini- Ates a comunicação com o segundo nó. / PORTB / clear TRISB = 0. etc Código para o nó CANSPI primeiro: unsigned char Can_Init_Flags.Soluções de software e hardware para o mundo embutido 269 . sbit CanSpi_Rst em RC2_bit. Mikroelektronika . faz o mesmo e envia os dados de volta para incrementado segundo nó. / / Bandeiras claras Can_Rcv_Flags = 0. sbit CanSpi_Rst_Direction em TRISC2_bit. / / Can_Send_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. sbit CanSpi_CS_Direction em TRISC0_bit. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas _CANSPI_FILTER_B2_F3 = 4. / / Configurar um pinos como I / O digital ANSELH = 0. Can_Init_Flag s = & _CA NSPI_CONF IG_SAMPLE _THRICE / valor / Formulári 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. ID_2nd = 3. 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 / / pavilhão de recepção const longo ID_1st = 12111. O segundo nó responde enviando de volta os dados incrementado em 1. _CANSPI_FILTER_B2_F4 = 5. Can_Send_Flags. Primeiro nó em seguida. / / Conexões CANSPI módulo sbit CanSpi_CS em RC0_bit. PORTB = 0. / / Fim conexões CANSPI módulo vazio main () { ANSEL = 0. IDs / node / tempo Rx_ID.

/ / Inicializa r CANSPI externa módulo CANSPISetOperationMode (_CANSPI_MODE_CONFIG. / / modo de configuração definidas CANSPISetMask (_CANSPI_MASK_B1. _CANSPI_CONFIG_XTD_MSG). CANSPIWrite (ID_1st. ID_2nd. RxTx_Data. _CANSPI_CONFIG_XTD_MSG).3. 1. Can_Ini t_Flags). 0xFF). / / o modo NORMAL RxTx_Data [0] = 9. RxTx_Data. / receber mensagens se ((Rx_ID == ID_2nd) & & Msg_Rcvd) { / / Mensagem se cheque recebido id PORTB RxTx_Data = [0].3.Soluções de software e hardware para o mundo embutido .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC SPI1_Init (). 0xFF). / / envia inicial Mensagem while (1) {/ / faz um loop infinito Msg_Rcvd CANSPIRead = (& Rx_ID. / / inicializar o módulo SPI1 CANSPIInitialize (1. Can_Send_Flags). / / Conjunto de dados inicial a ser enviada CANSPIWrite (ID_1st. Can_Send_Flags). / / Set id B2_F4 de filtro para segundo nó ID CANSPISetOperationMode (_CANSPI_MODE_NORMAL. & Can_Rcv_Flags). 1. _CANSPI_CONFIG_XTD_MSG). corrigir a PORTC RxTx_Data [0] + +. / / Incremento de dados recebidos Delay_ms (10).3. / / set todos mask2 bits para os CANSPISetFilter (_CANSPI_FILTER_B2_F4. -1. / / set todos mask1 bits para os CANSPISetMask (_CANSPI_MASK_B2. -1. / / Incrementado enviar dados de volta } } } 270 Mikroelektronika . / / Id saída de dados. RxTx_Data & Rx_Data_Len.1.

_CANSPI_CONFIG_XTD_MSG). 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. / / Can_Send_Flags _CANSPI_TX_PRIORITY_0 = & / Valor / formulário a ser utilizado _CANSPI_TX_XTD_FRAME E / com CANSPIWrite _CANSPI_TX_NO_RTR_FRAME. -1. sinalizador / recepção / const longo ID_1st = 12111. sbit CanSpi_Rst em RC2_bit. / / set Mikroelektronika . IDs / node / tempo Rx_ID.3.3. sbit CanSpi_CS_Direction em TRISC0_bit.3. sbit CanSpi_Rst_Direction em TRISC2_bit.1. / / Conexões CANSPI módulo sbit CanSpi_CS em RC0_bit. -1. / / Inicializa externa módulo CANSPI CANSPISetOperationMode (_CANSPI_MODE_CONFIG. Can_Send_Flags. SPI1_Init (). / CONFIGURAÇÃO / set - Modo de Ração CANSPISetMask (_CANSPI_MASK_B1. / / Fim conexões CANSPI módulo vazio main () { ANSEL = 0. / PORTB / clear TRISB = 0. / / Bandeiras claras Can_Rcv_Flags = 0. / / Can_Send_Flags = 0. 0xFF). Can_Init_Flag s = & _CA NSPI_CONF IG_SAMPLE _THRICE / valor / Formulári 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. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Código para o nó CANSPI segundo: unsigned char Can_Init_Flags. Can_Init_Flags). / PORTB set / como saída Can_Init_Flags = 0. / / Inicializa SPI1 módulo CANSPIInitialize (1. _CANSPI_CONFIG_XTD_MSG). / / set todos mask1 bits para os CANSPISetMask (_CANSPI_MASK_B2.Soluções de software e hardware para o mundo embutido 271 . PORTB = 0. ID_2nd = 3. / / Configurar um pinos como I / O digital ANSELH = 0.

/ receber mensagens se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleção ID PORTB = RxTx _Data [0 ] / / id de saída de dado s. RxTx_Data. / / incrementa os dados recebidos CANSPIWrite (ID_2nd. 1. / / o modo NORMAL enquanto (1) {/ / faz um loop infinito Msg_Rcvd CANSPIRead = (& Rx_ID.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC todos mask2 bits para os CANSPISetFilter (_CANSPI_FILTER_B2_F3. corrig ir a POR TC RxTx_Data [0] + +. Can_Send_Flags). & Can_Rcv_Flags).Software e Soluções de hardware para Embedded World . RxTx_Data & Rx_Data_Len. 0xFF). ID_1st. _CANSPI_CONFIG_XTD_MSG). / / envia dados incrementado de volta } } } Conexão HW Exemplo de interface CAN MCP2510 transceptor com MCU via interface SPI 272 Mikroelektronika . / / Configura id do B2_F3 filtro para 1 ID do nó CANSPISetOperationMode (_CANSPI_MODE_NORMAL.

Mikr oele ktro nika - Solu ções . pode ser de grande ajuda. por exemplo. mas su- sivamente através 512B buffer. Grande capacidade e tempo de acesso excelente de apenas alguns microssegundos torná-los muito atrativos para aplicações de microcontroladores. se a tabela FAT1 fica corrompido. com- comumente usados com câmeras digitais. primário / secundário partições e tabelas de partições. os dados são divididos em setores. a biblioteca funcionará com a primeiro disponível partição (lógica) primário que tem tamanho diferente de zero. certifique -se de não substituir ou setor de inicialização FAT como poderia fazer o seu cartão no PC ou câmera digital ilegível. Os cartões CF são amplamente utilizados elementos de memória. Nota: As rotinas para manipulação de arquivos só podem ser utilizados com sistema de arquivos FAT16. Rotinas para manipulaç ão de arquivos. o Cf_Fat rotinas. não são execut adas diretamente. Se o MMC / SD placa tem Volume Boot Record (ou seja. física e unidades lógicas. ferramentas de mapeamento de unidade. Nota: Se o cartão SD / MMC tem Master Boot Record (MBR). Um setor compreende geralmente 512 bytes. consulte outros recursos. mas o arquivo de dados está sendo leitura da tabela FAT1 só. Nota: As funções Biblioteca preencher ambas as tabelas e FAT1 FAT2 ao escrever em arquivos. Nota: Antes de escrever a operação. não há recuperação. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas COMPACT FLASH BIBLIOTECA O Compact Flash Biblioteca fornece rotinas para acessar dados em Compact Flash cartão (abrev. CF ainda no texto). ou seja. a biblioteca trabalha com cartão de inteira como uma única partição. Para mais informações sobre MBR. Nota: As funções Biblioteca criar e ler arquivos no diretório raiz só. há apenas uma partição lógica e não MBR). Wikipedia e similares. No cartão CF. como Winhex.

de software e hardware para o mundo embutido 273 .

CF_A0. RB2_bit. Habilitar pino. em PORTD. alfinete. ção em TRISB7_bit. CF_RDY_direction. RB5_bit. 274 Mikroelektronika . sbit sfr extern Direção do endereço 1 sbit CF_A1_direction CF_A1_direction. em TRISB5_b it. CF_CD1. sbit sfr extern Direção do endereço 0 sbit CF_A0_direction CF_A0_direction. alfinete. alfinete. sbit sfr extern Direção do Chip detecta sbit CF_CD1_direc- CF_CD1_direction. sbit sfr extern sinal. RB7_bit. sbit CF_RDY em Pronto linha de sinal. CF_WE. RB1_bit. RB6_bit. sbit sfr extern sbit CF_A2 em Endereço pino 2. em TRISB6_b it. RB4_bit. ção em TRISB4_bit. sbit sfr extern Direção da Saída sbit CF_OE_direction CF_OE_direction. RB3_bit. sbit sfr extern sbit CF_CE1 em Chip linha de sinal Enable. ção em TRISB3_bit. RB0_bit. CF_CE1. CF_A1. em TRISB0_b it. sbit sfr extern Direção do endereço 2 sbit CF_A2_direction CF_A2_direction. alfinete. sbit sfr extern Direção do Write Enabl e sbit CF_WE_direction CF_WE_direction. CF_RDY. sbit sfr extern sbit CF_A1 em Endereço pino 1. alfinete. em TRISB1_b it.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC As seguintes variáveis deve ser definida em Descrição: Exemplo: todos os projetos usando Compact Biblioteca sfr externdechar Flash: char CF_Data_Port Compact Flash Porta de CF_Data_Port. sbit sfr extern dados. em TRISB2_b it. CF_A2.Soluções de software e hardware para o mundo embutido . sbit sfr extern sbit CF_A0 em Endereço pino 0. sbit sfr extern sbit CF_OE em Habilitar saída de linha do CF_OE. sbit sfr extern sbit CF_WE em Write Enable linha de sinal. alfinete. sbit sfr extern Direção do Chip Enable sbit CF_CE1_direc- CF_CE1_direction. sbit sfr extern sbit CF_RDY_direc- Direção da o pino Ready. sbit CF_CD1 em Chip detecta sinal de linha.

Cf_Issue_ID_Command Mikroelektronika .Cf_Fat_Append .Cf_Detect .Cf_Fat_Get_File_Date .Cf_Read_Sector .Cf_Fat_Init .Cf_Read_Init .Cf_Fat_Reset .Cf_Fat_Assign .Cf_Fat_Get_File_Size .Cf_Enable .Cf_Fat_QuickFormat .Cf_Fat_Delete .Soluções de software e hardware para o mundo embutido 275 .Cf_Write_Sector Rotinas para manipulação de arquivos: .Cf_Write_Byte . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Rotinas da biblioteca .Cf_Fat_Set_File_Date .Cf_Fat_Get_Swap_File A rotina a seguir é para o uso interno do compilador apenas: .Cf_Read_Byte .Cf_Fat_Rewrite .Cf_Fat_Read .Cf_Disable .Cf_Fat_Write .Cf_Init .Cf_Write_Init .

sbit CF_WE_direction em TRISB6_bit.Soluções de software e hardware para o mundo embutido . / / Set pinagem compact flash char Cf_Data_Port em PORTD. sbit CF_A1_direction em TRISB1_bit.. CF_OE Saída: permitir que o sinal de linha .. Cf_Init (). / / inicializa CF 276 Mikroelektronika . sbit CF_CD1_direction em TRISB4_bit. Retorna Nada. CF_A2 : Endereço 2 pinos . CF_A2_direction : Direção do pino de endereço 2 . sbit CF_CE1_direction em TRISB3_bit. CF_CD1_direction : Direção da Chip detecta o pino . CF_OE_direction : Direção de permitir a saída do pino .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Cf_Init Protótipo vazio Cf_Init (). CF_A0 : Pino endereço 0 . sbit CF_OE_direction em TRISB5_bit. CF_CE1_direction : Direção da Chip permitirá pin . sbit CF_RDY_direction em TRISB7_bit. CF_CD1 : Chip detecta sinal de linha . Descrição Inicializa as portas de forma adequada para a comunicação com o cartão CF. sbit CF_A0 em RB0_bit. As variáveis globais: . sbit CF_WE em RB6_bit. sbit CF_A2 em RB2_bit. sbit CF_CE1 em RB3_bit. CF_A1 : Pino Endereço 1 . CF_A1_direction : Direção da Endereço pino 1 . / / Fim do pinout compact flash . CF_A0_direction : Direção do endereço 0 pin devem ser definidas antes de utilizar esta função. CF_RDY_direction : Direção do pino Ready . sbit CF_OE em RB5_bit. CF_RDY : Linha de sinal Ready . CF_WE Escrever habilitar a linha de sinal . sbit CF_RDY em RB7_bit. CF_Data_Port : Compact Flash porta de dados . Exemplo sbit CF_A1 em RB1_bit. sbit CF_A0_direction em TRISB0_bit. CF_CE1 : Linha de sinal Enable Requer . sbit CF_A2_direction em TRISB2_bit. sbit CF_CD1 em RB4_bit. CF_WE_direction : Direção do Write enable pinos .

chame Cf_Enable. Para Descrição ativar o dispositivo novamente. Rotina desativa o dispositivo e libera as linhas de dados para outros dispositivos.Caso contrário Descrição Verifica se há presença de cartão CF. Rotina deve ser chama do somente se você tiver desati v ado o Descrição disposi tiv o por meio da rotina Cf_Di s abl e.Se o cartão CF foi detectada Retorna . para cartão CF.Soluções de software e hardware para o mundo embutido 277 . Cf_Enable Protótipo vazio Cf_Enable (void).1 . lendo o chip detectar alfinete. Estas duas rotinas em conjunto permitem livreportas As / ocupam MCU linha de dados quando correspondente se trabalha deverá ser com inicializado devidamente vários dispositivos. / / Desativar flash compacto Exemplo Cf_Disable (). enquanto (! Cf_Detect ()). Estas duas rotinas em conjunto permitir você livre / ocupam linha de dados quando se trabalha com vários dispositivos. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Cf_Detect Protótipo unsigned short Cf_Detect (void). / / Espera até o cartão CF está inserido: Exemplo fazer nop asm. As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Requer Veja Cf_Init. Retorna Nada. Veja Cf_Init. Ativa o disposi tiv o. Mikroelektronika . / / Ativar o flash compacto Exemplo Cf_Enable ().0 . Cf_Disable Protótipo vazio Cf_Disable (void). Retorna Nada. Requer Veja Cf_Init. As portas MCU correspondente deverá ser devidamente inicializado para o cartão Requer CF. .

/ / Lê um byte de memória Compact Flash: Exemplo dados char. As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Retorna um byte lido do buffer sector Compact Flash. Retorna Nota: Superior byte do não assinado valor de retorno está desmarcada. Descrição Lê um byte de Compac t Flash sector Local de buffer atual mente apontado pelos ponteir os internos ler. Cf_Read_Byte Protótipo unsigned short Cf_Read_Byte (void). . 1).. . Descrição Parâmetros: . Inicializa cartão CF para leitura. unsigned short Protótipo sector_count). Retorna Nada.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Cf_Read_Init vazio Cf_Read_Init (unsigned long endereço. / / Inicializa o flash compacto para a leitura do setor 590 Exemplo Cf_Read_Init (590.sector_count: número de setores a serem preparados para a leitura de operação. = dados Cf_Read_Byte ().. Requer Veja Cf_Init. Estas indicaç ões serão autoicr em ented da leitura. Requer Veja Cf_Init. As portas MCU correspondente deverá ser devidamente inicializado para cartão CF.endereço: o primeiro setor a ser preparado para operação de leitura. cartão CF deve ser inicializado para a leitura operação. 278 Mikroelektronika .Software e hardware SOLUÇÕES PARA mundo embutido . Veja Cf_Read_Init.

1). Retorna Nada. Exemplo . / / Inicializa o flash compact o para escrever para o setor 590 Exemplo Cf_Write_Init (590. Inicializa cartão CF para a escrita. Cf_Write_Byte (dados). unsigned short sectcnt). Mikroelektronika . Cf_Write_Byte Protótipo vazio Cf_Write_Byte (unsigned short data_). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Cf_Write_Init Protótipo vazio Cf_Write_Init (unsigned long endereço.endereço: o primeiro setor a ser preparado para operação de escrita.. Parâmetros: . Requer Veja Cf_Init. Requer Veja Cf_Init. seu conteúdo será transferi d o para a memóri a flash Descrição apropri ad o sector. Grava um byte no buffer local Compact Flash sector actualmente apontada pelo escrito ponteiros. Estas indicações serão autoicremented da leitura. Quando buffer sector está cheio.sectcnt: número de setores a serem preparados para a escrita operação. cartão CF deve ser inicializado para escrever a operação.. Descrição Parâmetros: .Data_: byte a ser escrito. Veja Cf_Write_Init.Soluções de software e hardware para o mundo embutido 279 . char = dados 0xAA. Retorna Nada. As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. . As portas MCU correspondente deverá ser devidamente inicializado para cartão CF.

Ler dados são armazenados em buffer desde pela buffer parâmetro. . Lê um setor (512 bytes).. / / Ler o setor 22 Exemplo unsigned short dados [512]. Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. dados)... Veja Cf_Init. buffer: buffer de dados de pelo menos 512 bytes de comprimento. Grava 512 bytes de dados fornecidos pelo buffer parâmetro para um sector da CF. Veja Cf_Init. Retorna Nada. Retorna Nada. . 280 Mikroelektronika . Cf_Read_Sector (22. Cf_Write_Sector vazio Cf_Write_Sector (unsigned long sector_number.Soluções de software e hardware para o mundo embutido .Sector_number: setor a ser escrito.. dados). Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. . unsigned short Protótipo * Buffer). Descrição Parâmetros: .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Cf_Read_Sector vazio Cf_Read _Sector ( unsigned long sect or_number . / / Escreve para o setor 22 Exemplo unsigned short dados [512]. unsigne d short Protótipo * Buffer).Buffer: buffer de dados de 512 bytes de comprimento. Cf_Write_Sector (22. Descrição Parâmetros: sector_number: o setor a ser lido.

o volume não será identificado. Se menos d e 11 Descrição caracter es são prestadas . lê CF setor de inicialização FAT16 e extrai os dados necessários Requer necessários pelo a biblioteca. Mikroelektronika . formatei e inicializado com sucesso Retorna .0 . cf_fat_label)) Exemplo Além disso. perm an ec erá inalterad a //--.Cf_fat_label: rótulo de volume (11 caract eres).255 . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Cf_Fat_Init Protótipo unsigned short Cf_Fat_Init ().0 ..Se o setor de inicialização FAT16 não foi encontrado .Forma to e ini cializar a bibli oteca d o FAT - (Exceto volume campo de rótulo) e(& se (! Cf_Fat_QuickFormat somente as tabelas FAT{ e ROOT serão apagados.Soluções de software e hardware para o mundo embutido 281 . Se a string é null passado.se o formato FAT16 foi unseccessful .. a etiqueta será preenc hi do com espaç os .Caso o cartão não foi detectado Descrição Inicializa cartão CF.255 . Parâmetros: . . o } rótulo de novo volume será definido. ela Requer Nada.1 .Caso o cartão não foi detectado Formatos para FAT16 e inicializa o cartão CF. . Nota: Se o cartão CF já conté m um setor de inicializ ação válido.. ..1 .Se o cartão CF foi detectado. Nota: Esta rotina pode ser utilizado em substituição ou em conjunto com a rotina Cf_Fat_Init. Nada. } Cf_Fat_QuickFormat Protótipo unsigned char Cf_Fat_QuickForm at (cf_fat_label cha r *).Se o cartão CF foi detectado e inicializado com sucesso Retorna . / / Inicia a biblioteca do FAT Exemplo se (! Cf_Fa t_Init ( )) {/ / Inicia a biblio teca do FAT .

mikro tx">). mas um novo arquivo é criado. Másc bibliotec Descrição nomes de arquiv ara o pode ser inserido como cadeia MAIÚS C ULA S de 11 bytes de 0 0x01 Leia apenas compri m ento. Veja Cf_F at_Ini t.3 (Nome_do_ar quiv o.T0x04 X T) . / / Cria arquivo com os atributos de arquivo se ele já não existe Exemplo Cf_Fat_Assign ("MIKRO007. Requer Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. os 3 últimos caracter es da string são consider ados Sistema a extensão de arquivo. Descrição O nome do arquivo e extensão são maiúsculas e minúsculas. apagar .. Cada bit corresponde à 4 0x10 Subdiretório atribuíveis arquivo apropriado: 5 0x20 Arquivo 6 0x40 Dispositivo (uso interno somente.tx". escrev er .1 se o arquivo já existe ou o arquivo não existe. Nota: nomes de arquivo longos (LFN) não são suportados.". 282 Mikroelektronika .). ou seja . O nom e do arquivo devem estar em formato DOS 8. um novo arquivo com o nome especificado será criado. nunca encontrado no bandeir Arquivo disco) a criação. char file_cre_attr). Além disso. assim que o usuário não tem que tomar cuidado com isso..0 se o arquivo não existe e nenhum arquivo novo é criado. Todos óper a arquiv o subseq üente- ções será aplicado sobre o arquivo designado.TXT".CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Cf_Fat_Assign Protótipo unsigned short Cf_Fat_Assign (char * Nome do arquivo. sem 1 ponto caractere 0x02entre o nome do arquivo e extensão Oculto (ie "MIKROELETXT" -> MIKRO2E LE . .file_cre_attr: Volume Label attributs.ex tensão).filename: nome do arquivo que deve ser atribuído para operações de arquivo. Se o arquiv o não existe e essa 7 0x80 bandei r a é conjunto. 0xA0). Parâmetros: . a fim de manter a compati bili dade com a primeira versão desta Bita. Neste caso. Retorna . Atribui arquivo para operaç ões de arquivo (ler. para que o usuário não tem que cuidar disso. se tiverem menos de compri mento necessária ("mikro.Soluções de software e hardware para o mundo embutido . O nome do arquivo e extensão ser automatic am ente preenc hi do com espaços pela bibliotec a. A biblioteca irá convertê-los para sustentar- caso er automaticamente. 3 0x08 bandeiras e criação do arquivo .

O arquivo char deve ser aberto para leitura.. Exemplo . Abre atualmente atribuídos arquivo para leitura.. Veja Cf_Fat_Reset. tamanho. Veja Cf_Fat_Assign. caráter. O arquivo deve ser previamente definidos. Cf_F at_Ini t. Cf_F at_Ini t. Veja Cf_Fat_Assign. Retorna Nada. Após o arquivo foi aberto para leitura de seu tamanho é Requer Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o.. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Cf_Fat_Reset Protótipo vazio Cf_Fat_Reset (unsigned long * Tamanho). Descrição Parâmetros: .Size: tamanho do buffer para armazenar arquivo. Exemplo .. Retorna Nada. O arquivo deve unsigned long ser previamente definidos. Cf_Fat_Read Protótipo vazio Cf_Fat_Read (unsigned short * Bdata). Lê um byte do arquivo atualmente atribuídos aberto para leitura. Ao exe-função ponteiros de arquivo cução será definido para o próximo caractere no arquivo.Soluções de software e hardware para o mundo embutido 283 . Mikroelektronika . Cf_Fat_Read (e personagem). Veja devolvido através deste parâmetro.Bdata: buffer para armazenar ler byte. Após esta execução função de leitura de bytes é Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. Descrição Parâmetros: . Veja Requer devolvido através deste parâmetro. Cf_Fat_Reset (tamanho).

O / arquivo / Abre deve ser atribuído o arquivo anteriormente.Soluções de software e hardware para o mundo embutido . Abre atual mente atribuídos arquiv o para acresc entar . Exemplo Cf_Fat_Delete (). Cf_Fat_Delete Protótipo vazio Cf_Fat_Delete (). O / arquivo / Abre deve ser previamente o arquivo definidos.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Cf_Fat_Rewrite Protótipo vazio Cf_Fat_Rewrite (). Retorna Nada. Cf_F at_Ini t. Veja Cf_Fat_Assign. Veja Cf_Fat_Assign. então qualquer mandado de arquivo Cartão subseqüente- CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. Retorna Nada. Retorna Nada. Veja Cf_Fat_Assign. Abre atualmente atribuídos arquivo para gravação. Requer Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. Veja Requer Cf_F at_Ini t. 284 Mikroelektronika . Se o arquivo não está vazio o seu Descrição conteúdo será apagados. Veja Requer ing operação terá início a partir daí. Cf_Fat_Append Protótipo vazio Cf_Fat_Append (). para anexando Exemplo Cf_Fat_Append (). Veja Cf_F at_Ini t. Após este ficheiro Descrição execuç ão da funç ão ponteiros será posicionado após o último byte no arquivo. Cartão CF e FC bibliotec a deve ser inicializad o para o arquiv o operaç ões . para escrita Exemplo Cf_Fat_Rewrite (). O arquivo / / Deletar deveo ser previamente arquivo atualdefinidos. Descrição Exclui atualmente atribuídos arquivo do cartão CF.

Veja Requer Cf_F at_Ini t. Retorna Nada. Valores válidos: 1980-2107 . unsigned short Protótipo mês. O arquivo char deve ser aberto file_contents para escrita. 42) / / gravar dados no atribuída arquivo Cf_Fat_Set_File_Date vazio Cf_Fat_Set_File_Date (unsigned int ano. Dia: atributo dia. O arquivo deve ser previamente atribuído. O arquivo deve ser aberto(2005.Soluções de software e hardware para o mundo embutido 285 . Valores válidos: 0-23 . Retorna Nada. unsigned short segundos).. unsigned short di a. Cf_Fat_Set_File_Date para escrita. Exemplo . Horário: Horário de atributo. Valores válidos: 12/01 . Descrição Parâmetros: . Exemplo Mikroelektronika .30. . unsign ed short horas. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Cf_Fat_Write Protótipo vazio Cf_Fat_Write (char * FData. Veja Cf_Fat_Assign. Veja Cf_Fat_Rewrite ou Cf_Fat_Append.41. Qualqu er oper aç ã o de arquiv o posteri or es escrita vou escrev er essa selo de tempo de arquivo atualmente atribuídos's / attributs data. Valores válidos: 0-59 Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. Descrição Parâmetros: . Veja Cf_Fat_Assign.FData: dados a serem gravados. [42].0). Segundo: segundo atributo. Cf_Fat_Write (file_contents. Arquivo devem ser previamente definidos. Veja Cf_Fat_Rewrite ou Cf_Fat_Append.9. Minutos: minutos atributo.Ano: atributo ano. un signed sh ort minutos. não assinado data_len). Valores válidos: 31/01 . Grava solicitado o númer o de bytes para arquiv o atual m ente aberto para gravaç ão atribuída.. Valores válidos: 0-59 . Define a data / hora. Veja Requer Cf_F at_Ini t.17.Data_len: número de bytes a ser escrito. Mês: atributo mês. Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o.

& dias.. Requer Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. Ao minuto execução da Minutos: O arquivo função não assinado deve ano.. O arquivo deve unsigned long ser previamente definidos. Veja Cf_Fat_Assign. e minutos).Horário: de buffer para armazenar horas atributo. Após meses de execução da função atributo é retornado por esse parâmetro. buffer para armazenar minutos atributo. Lê data / hora atributos de arquivo atualmente atribuído. ser previamente designados.Soluções de software e hardware para o mundo embutido . Veja Cf_Fat_Assign. atributo é retornado char mês.. Cf_Fat_Get_File_Date (& anos. Exemplo . Após a função de atributo é dia de execução devolvido através deste parâmetro. Após a função de atributo ano de execução Descrição é retornado por esse parâmetro. horas. por esse parâmetro. 286 Mikroelektronika . Após horas de execução da função Cartão CF e FC bibliotec a deve ser inicializad o para operaç ões de arquiv o. Cf_Fat_Get_File_Size my_file_size = (). at_Ini t. Cf_F . . em bytes..Mês: buffer para armazenar atributo mês para.Ano: buffer para armazenar atributo ano para. Descrição Esta função lê o tamanho de arquivo atualmente atribuído. Parâmetros: . Retorna Nada. unsigned short * horas. Veja Cf_F at_Ini t. . não assinado curto * Min).CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Cf_Fat_Set_File_Date vazio Cf_Fat_Get_File_Date (unsigned int * Ano.Dia: buffer para armazenar atributo dia para. Veja Requer atributo é retornado por esse parâmetro. unsigned short * Dia. Exemplo . minutos. dia. e horas. & meses. . my_file_size. Cf_Fat_Set_File_Size Protótipo unsigned long Cf_Fat_Get_File_Size (). unsigned short Protótipo * Mês. Retorna Tamanho do arquivo atualmente atribuídos em bytes.

Neste caso 7 0x80 os 3 últimos caracteres da nocadeia disco) são consideradas Não utilizado como extensão de arquivo. usando o Cf_Read_Sector () e Cf_Write_Sector () funções diretamente. busca de con- setores consec utiv os irá ignorar setores ocupados por esse arquiv o. assim que o usuário não tem que tomar cuidado com isso. . O nome do arquivo e extensão será automatic am ente preenc hi do com espaços pela bibliotec a.Sectors_cnt: número de setores consecutivos q ue o usuário quer que o arquivo d e troca para ter. com nenhum ponto chsaracter 6 entre 0x40 Dispositivo (uso interno somente. os dados podem ser re-escrita em um "normal" arquivo. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Cf_Fat_Get_Swap_File unsigned long Cf_Fat_Get_Swap_File (unsigned long sectors_cnt. O nome do arquivo devem estar em formato DOS 8. se houver espaço livre Retorna suficiente no cartão CF para criar um arquivo de tamanho necessário.File_attr: criação de arquivos e bandeiras attributs. Parâmetros: . Cada bit corresponde à atribuíveis arquivo apropriado: Mikroelektronika . Se um arquivo com o nome especific ado já existe na mídia. A biblioteca irá convertê-los para 2 0x04 Sistema caso apropriado automaticamente. nunca encontrado o nome do arquivo e extensão (ie "MIKROELETXT" -> MIKROELE. 1 do 0x02 O nome arquivo e extensão são maiúsculas e Oculto minúsculas. O objetivo do arquivo de swap é fazer com que a leitura ea escrita aos meios de comunic aç ão do FC o mais rápido possível. e formatado da maneira mais adequada.ex tensão). para Leiaque o usuário não tem que cuidar apenas disso.tx". recome nda-s e recomenda-se a apagar o arquivo como se ele existe antes de chamar essa função. char file_attr). se tiverem menos Bit mento de compri Másc Descrição necessária 0 ara ("mikro. nomes de arquivos Subdiretório podem ser 5 como0x20 entrou uma string em maiúsculas de 11 bytes Arquivo de comprimento. esta função irá eliminá-las depois alocação de espaço de memória novo para um novo arquivo swap. onde o usuári o pode livremente escrev er / l er os dados. .Filename: nome do arquivo que deve ser atribuído para operações de arquivo.". Protótipo char * Nome do arquivo. 0 caso Esta funçãocontrário é usada para criar um arquivo de swap de pré-nome e tamanho da CF mídia. É objetivo principal na bibliotec a do mikroC é ser usado para a aquisição rápida de Descrição dados. mikro tx">). . 0x01 ou seja .TXT). Trocar arquivos podem ser conside- rado como uma "janel a" na mídia. Se ele não é apagado e há é ainda bastante espaço para um novo arquivo de permuta. quando a aquisição de tempo crítico foi concluída. sem que possa causar danos ao sistema FAT. .Número do setor de partida para o arquivo de swap recém-criado. 0x08 a fim Volume Label para 4manter0x10 compatibilidade com a primeira versão desta biblioteca. Portanto.3Além disso.Soluções de software e hardware para o mundo embutido 287 .3 (Nome_do_ar quiv o.

sbit CF_OE em RB5_bit. / / Set pinagem compact flash char Cf_Data_Port em PORTD. sbit CF_WE_direction em TRISB6_bit. cujo tamanho será de pelo menos 1.000 setores. sbit CF_CE1_direction em TRISB3_bit. sbit CF_A1 em RB1_bit. sbit CF_A0 em RB0_bit. sbit CF_A2_direction em TRISB2_bit. 0x20). //-------------. sbit CF_CD1_direction em TRISB4_bit. sbit CF_A0_direction em TRISB0_bit. 288 Mikroelektronika . "mikroE. Criar e modificar vários arquivos de uma só vez.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Requer Cartão CF e FC bibliotec a deve ser inicializado para oper aç ões de arquiv o. char err_txt [20] = "FAT16 não encontrado". . 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). UART_Write (Hi (tamanho)). / / Fim do pinout cf const LINE_LEN = 39.. UART_Write (Lo (tamanho)). Veja Cf_Fat_Init. sbit CF_A1_direction em TRISB1_bit. char file_contents [LINE_LEN] = "XX CF FAT16 bibli oteca por Anton Riec kertn ". UART_Write (Máxima (tamanho)). sbit CF_RDY em RB7_bit. sbit CF_WE em RB6_bit. sbit CF_RDY_direction em TRISB7_bit.Soluções de software e hardware para o mundo embutido . if (tamanho) { UART_Write (0xAA).Tente criar um arquivo de swap com o arquivo atributo. sbit CF_A2 em RB2_bit. sbit CF_CE1 em RB3_bit. UART_Write (0xAA). Abertura de arquivos existentes e reescrevê-lo (a escrita de iniciar-de-arquivo). / / Se for bem sucedido. sbit CF_CD1 em RB4_bit.. ele envia o n º do setor de começar tudo de UART unsigned long tamanho. UART_Write (Superior (tamanho)). } Exemplo Biblioteca O exemplo a seguir demonstra vários aspectos da biblioteca Cf_Fat16: Criação do novo arquivo e escrever para baixo.txt". Exemplo size = Cf_Fat_Get_Swap_File (1000. sbit CF_OE_direction em TRISB5_bit.

Cf_Fat_Assign (e nome do arquivo. unsigned long i. LINE_LEN -1) / / gravar dados para o atribuído arquivo } } } / / Abre um arquivo existente e reescreve -lo vazio M_Open_File_Rewrite () { filename [7] = 'C'.TXT". UART1_Write (10). 0). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas char nome [14] = "MIKRO00x.Soluções de software e hardware para o mundo embutido 289 . char Buffer [512]. LINE_LEN -1) / / gravar dados para o atribuído arquivo } } / / Cria muitos novos arquivos e grava os dados que lhes vazio M_Create_Multiple_Files () { para (loop2 = 'B'. loop + +) { UART1_Write ('.'). loop + +) { file_contents [0] loop = 10 + 48. tamanho. Cf_Fat_Write (file_contents. UART1_Write (13). / / Os nomes de arquivos unsigned short loop. for (loop = 1. / / UART1 es crever u m texto e nova li nha (ali mentação de linha de reto rno + tra nsporte) vazio UART1_Write_Line (char * Uart_text) { UART1_Write_Text (uart_text). loop <= 99. file_contents [1%] loop = 10 + 48. Cf_Fat_Assign (& Nome. Cf_Fat_Rewrite (). loop <= 44. loop2 <= 'Z'. loop2. loop2 + +) { UART1_Write (loop2) / / o sinal de progresso filename [7] = loop2 / / definir nome Cf_Fat_Assign (e nome do arquivo. loop <= 55. file_contents [1%] loop = 10 + 48. 0xA0) / / File Find existente ou criar um uma nova Cf_Fat_Rewrite () / / Para limpar o arquivo e começar com os novos dados for (loop = 1. Cf_Fat_Write (file_contents. } / / Cria novo arquivo e grava alguns dados a ele vazio M_Create_New_File () { filename [7] = 'A'. 0xA0) / / encontrar o arquivo existente ou criar um novo Cf_Fat_Rewrite () / / Para limpar o arquivo e começar com os novos dados for (loop = 1. file_contents [0] = loop / 10 + 48. loop + +) { Mikroelektronika .

0). / descomente esta linha de pesquisa para arquivos que NÃO existe 290 Mikroelektronika .0). tamanho do procedimento de retorno de arquivo for (i = 1. } / / Testa se o arquivo já exis te.6. Cf_Fat_Write (file_contents. / arquivo / Prepare-se para anexar Cf_Fat_Write ("para 2005n mikroElektronika". <i = tamanho. / / Escreve os dados para UART } } / / Exclui um arquivo. unsigned char outstr [12].Soluções de software e hardware para o mundo embutido . 0). e se sim envia s ua data de criação / / E tamanho do arquivo via UART vazio M_Test_File_Exist () { unsigned long fsize. vazio M_Delete_File () { filename [7] 'F'. Cf_Fat_Append (). 0). hora.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC file_contents [0] loop = 10 + 65. unsigned short mês. / / Para ler o arquivo. / / Escreve dados para o atribuído arquivo } } / / Abre um arquivo existente e acrescenta dados a ele / / (E altera a data / hora) vazio M_Open_File_Append () { filename [7] = 'B'. / descomente / esta linha de pesquisa para arquivos que FAZ existe / / Filename [7] 'F'. dia.10. i + +) { Cf_Fat_Read (e personagem). ele vai ser criada / / E depois que foi excluída. filename [7] = 'B'. lê os dados a partir dele e coloca -UART vazio M_Open_File_Read () { caráter char. Cf_Fat_Reset (e tamanho). LINE_LEN -1). Cf_Fat_Assign (filename. UART1_Write (personagem). Cf_Fat_Assign (& Nome. / / Gravar dados atribuído arquivo } / / Abre um arquivo existente.35. Cf_Fat_Assign (& Nome. filename [7] = 'B'. minuto. unsigned int ano. file_contents [1%] loop = 10 + 65. 27).21. Cf_Fat_Set_File_Date (2005. Cf_Fat_Delete (). Se o arquivo não existir.

} mais { //--.obter a sua data Cf_Fat_Get_File_Date (& anos. & hora e minuto). UART1_Write (0x55). "mikroE. } } / / Tenta criar um arquivo de swap. //--. UART1_Write ('. Descomente a função (s) para testar a operação desejada (s) vazio main () { # Define COMPLETE_EXAMPLE / comentar essa linha para fazer sim - exemplo pler / menor Mikroelektronika . } } } / / Main.Soluções de software e hardware para EMBEDDED MUNDO 291 . outstr). cujo tamanho s erá de pelo menos 10 0 / / Setores (consulte a Ajuda para mais detalhes) vazio M_Create_Swap_File () { unsigned int i. WordToStr (ano.sinal que ele UART1_Write (0x55). tamanho). outstr). UART1_Write_Line (err_txt).txt". UART1_Write_Text (outstr). UART1_Write_Text (outstr). UART1_Write_Text (outstr). i + +) { Cf_Write_Sector (tamanho + +. for (i = 0. WordToStr (outstr horas). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas se (Cf_Fat_Assign (Nome. buffer). UART1_Write_Text (outstr). / ver a ajuda sobre esta função para obter detalhes se (Tamanho) { LongToStr ((long assinado) err_txt.arquivo não foi encontrado . 0x20). UART1_Write_Line (outstr). i <512. dia). & dia.foi encontrado . size = Cf_Fat_Get_Swap_File (5000.'). i + +) Buffer [i] = i. Delay_ms (1000). 0)) { arquivo //--. & meses. WordToStr (outstr minutos). i <5000. for (i = 0. ByteToStr (outstr mês). WordToStr (outstr. LongToStr ((long assinado) fsize. UART1_Write_Text (outstr).Obter o tamanho do arquivo Cf_Fat_Get_File_Size fsize = ().

em vez de rotina init se uma formatação é necessário se (Cf_Fat_Init () == 0) { Delay_ms (2000). M_Delete_File ()."). / / Se o cartão não estiver presente. M_Test_File_Exist (). # Endif UART1_Write_Line ("O Fim do teste. } mais { UART1_Write_Line (err_txt) / / Nota: Cf_Fat_Init tenta inicial - ize um cartão mais de uma vez. # Ifdef COMPLETE_EXAMPLE M_Create_Multiple_Files (). Descomente-los um por um para testar certos recursos M_Create_New_File (). / / espera por um tempo até que o cartão é estabilizado / / Período depende usado cartão CF //--.Soluções de software e hardware para o mundo embutido . M_Create_Swap_File (). M_Open_File_Rewrite (). UART1_Write_Line ("PIC-Started"). initializa- ção pode durar mais tempo (dependendo da velocidade do clock) } } 292 Mikroelektronika .Iniciar o teste UART1_Write_Line ("Iniciar teste. M_Open_File_Append (). M_Open_File_Read (). //--. / / Configu rar um p inos com o digita l CMCON | = 7. Delay_ms (10). / relatório da CPI presentes / / Use fat16 formatação rápida. / / Desligue comparadores / / Inicializar UART1 módulo UART1_Init (19200).CAPÍTULO 7 Bibliotecas mikroC PRO para PIC ADCON1 | = 0x0F.Teste rotinas.").

CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Conexão HW Pin diagrama de cartão de memória CF Mikroelektronika .Soluções de software e hardware para o mundo embutido 293 .

19). Descrição que significa que ele suporta MCUs com mais de 256 bytes de EEPROM. EEPROM_Write e EEPROM_Read. Exemplo . Embora PIC irá escrever o valor correto. unsigned short de dados). mik roC PRO para PIC inclui biblioteca para o trabalho confortável com EEPROM. Descrição Lê dados a par tir de deter minado endereço. Retorna Nada. Requer Certifique-se de um atraso mínimo de 20ms entre o uso sucessivo de rotinas EEPROM_Write e EEPROM_Read. Requer módulo EEPROM. Rotina irá restaur ar a Requer módulo EEPROM. Rotinas da biblioteca . Grava dados ao especificado endereço.Soluções de software e hardware para o mundo embutido . 294 Mikroelektronika . ter = EEPROM_Read (0x3F). Embora PIC irá escrever o valor correto. Retorna Retorna byte do endereço especificado.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC EEPROM BIBLIOTECA Memória EEPROM de dados está disponível com uma série de microcontroladores PIC.Eeprom_Write EEPROM_Read Protótipo unsigned short EEPROM_Read (unsigned int endereço). unsigned short ter..Eeprom_Read . endereço do parâmetro é do tipo inteiro. EEPROM_Write Protótipo vazio EEPROM_Write (unsigned int endereço.. Esteja ciente de que todas as interrupções serão desabilitados durante a execução do EEPROM_Write rotina (bit GIE de registr o INTCO N serão apaga dos) . endereço do parâmetro é do tipo inteiro. PREVI- Requer Certifique-se de um atraso mínimo de 20ms entre o uso sucessivo de rotinas Estado ous deste bit na saída. o que significa que ele suporta MCUs com mais de 256 bytes de EEPROM. EEPROM_Read pode retornar um resultado indefinido. Exemplo EEPROM_Write (0x32. EEPROM_Read pode retornar um resultado indefinido.

/ / Configurar um pinos como I / O digital ANSELH = 0. ii <32. de (ii = 0. ii). 0xAA). / / Lê os dados de endereço 0x50 e mostrar lo em PORTC Delay_ms (1000). / / Escreve alguns dados no endereço 0150 Delay_ms (1000). PORTB = 0. / / Lê os d ados de endereço 2 e mostrar lo em PORTB PORTC EEPROM_Read = (0x50). / / Blink P ORTB e d iodos PO RTC PORTB = 0xFF. TRISC = 0.Soluções de software e hardware para o mundo embutido 295 . de (ii = 0. / / Variável de loop / vazio main () { ANSEL = 0. ii + +) / / Preencha buffer de dados EEPROM_Write (ii + 0x80. 0x55). char II. PORTB = 0x00. / / Escreve os dados de endereço 0x80 + ii EEPROM_Write (0x02. TRISB = 0. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Exemplo Biblioteca O exemplo demonstra o uso de EEPROM Biblioteca. ii <32. PORTC = 0x00. / / Para indicar início de leitura PORTC = 0xFF. Delay_ms (1000). Delay_ms (1000). PORTC = 0. PORTB EEPROM_Read = (0x02). TRISD = 0. PORTD = 0. / / Escreve alguns dados no endereç o 2 EEPROM_Write (0x50. } } Mikroelektronika . ii + +) {/ / Ler bloco de 32 bytes de 0x80 endereço PORTD EEPROM_Read = (0x80 + II) / / dados e exibição em PORTD Delay_ms (250).

O módulo Ethernet atende a todas as especificações IEEE 802. .O cliente DHCP. 296 . Nota: A variável bibliot eca Global Ethernet_userTimerSec é usado para manter trilha de tempo para todos os clientes implementações (ARP.Fragmentação do pacote não é suportado.h") em P18 usa \ pasta do compilador. . Ele também oferece um módulo de DMA interna para transferência rápida de dados e hardware IP assistida cálculos de soma de verificação. Nota: Para usuários avançados.Requisições ARP. sem reconstrução de pacotes). Provisões são feitas também para duas saídas de LED para indicar link e rede atividade Esta biblioteca fornece a posibilidade de utilizar facilmente recurso de ethernet do MCUs acima mencionados.Cliente UDP.Os pedidos UDP. relevantes para o usuário. incluindo implementações completas de ambos os Media Access Control (MAC) e Física transceptor Layer (PHY) módulos. .Os pedidos TCP (sem pilha. com descrição de todas as rotinas e variáveis globais. existem arquivos de cabeçalho ("eth_j60LibDef. É de responsabilidade do usuário para incrementar essa variável cada segundo em que o código se algum dos clientes é usado. implementado no PIC18FxxJ60 Ethernet Biblioteca. É incorpora uma série de sistemas de filtragem de pacotes para limitar o pacote de entrada- ets. Dois transformadores de pulso e um passivo poucos componentes são todos que são necessários para conectar o microcontrolador diretamente a uma rede Ethernet de trabalho.h" e "Eth_j60LibPrivate. . .3 para conectividade de 10-BaseT para um par trançado de rede. UDP de DNS e DHCP). .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Biblioteca Ethernet PIC18FXXJ60 PIC18FxxJ60 família de microcontroladores apresentam um módulo controlador Ethernet incorporado.ICMP echo requests. .O protocolo IPv4.O cliente DNS. .O cliente com cache ARP. Esta é uma solução completa de conectividade. . Ethernet biblioteca PIC18FxxJ60 suporta: .

Soluções de software e hardware para o mundo embutido .Mikroelektroni ka .

Ethernet_putConstString .Ethernet_putString .Ethernet_doDHCPLeaseTime .Ethernet_putByte .Ethernet_initDHCP .Ethernet_putBytes .Ethernet_Disable .Ethernet_putConstBytes .Ethernet_getDnsIpAddress .Ethernet_UserTCP .Ethernet_dnsResolve . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Rotinas da biblioteca .Ethernet_confNetwork .Ethernet_renewDHCP Mikroelektronika .Ethernet_getBytes .Ethernet_Enable .Ethernet_getIpMask .Ethernet_getIpAddress .Ethernet_arpResolve .Ethernet_getGwIpAddress .Ethernet_getByte .Ethernet_Init .Ethernet_doPacket .Soluções de software e hardware para o mundo embutido 297 .Ethernet_UserUDP .Ethernet_sendUDP .

Protótipo unsigned char FullDuplex).Metade loopback duplex com deficiência. o endereç o IP deve ser Exemplo unsigned char myMacAddr [6] = {0x00.Buffer RAM de leitura / gravação ponteiros no modo de auto-incremento. 0x14.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_Init vazio Ethernet_Init (unsigned char * Mac.FullDuplex: Ethernet Switch modo duplex. myIpAddr = {192.LED de configuração: padrão (LEDA link-status.Non-Back-to-Back-Inter Packet Gap: 0x0012 em modo full duplex. . Retorna Nada. . .Receber endereço final buffer: 0x19AD. 0xA5. Esta é a rotina MAC do módulo.Controle de fluxo com TX e RX pausa quadros em modo full duplex. # Define um Ethernet_FULLDUPLEX Nota: Se um servid o r DHCP está a ser utiliza d o. Válido valores: 0 (Half duplex # Define Ethernet_HALFDUPLEX 0 modo) e 1 (Modo full duplex). 168.Transmitir o endereço inicial do buffer: 0x19AE. Ethernet_FULLDUPLEX). Nada. . Esta função é internamente subdividida em 2 partes para ajudá-vinculador quando vem com pouca memória.0. . .Recebe o endereço inicial do buffer: 0x0000. 1. 298 Mikroelektronika . . . atividade LEDB-link). . . Requer . unsigned char * Ip.0. configur aç õ es do control a dor Ether net (parâmetr os não menci o nados aqui são definidos como padr ão) : .IP: memória intermédia que contém o endereço IP válido.Mac: RAM buffer que contém o endereço MAC válido. 0x3f} / / meu endereço MAC defin id o char unsigned como 0.Software e hardware SOLUÇÕES PARA mundo embutido . 0x76.Back-to-Back-Inter Packet Gap: 0x15 em modo full duplex. 0x12 em half-duplex modo.Receber filtros definidos como padrão: CRC + MAC + MAC Unicast Broadcast na OU modo. Parâmetros: . 60} / / o meu IP addr Ethernet_Init (myIpAddr myMacAddr. 0x19. 0x0C12 em modo half duplex. .Transmitir endereço final buffer: 0x1fff.Quadros são preenchidos com 60 + bytes CRC. . Ele inicializa controlador Ethernet.Tamanho máximo do pacote é definido como 1518. Descrição .0.

Multicast receber bandeira _Ethernet_MULTICAST Quando 2 0x04 definido. Quando tráfego de rede conjunto. Quando _Ethernet_CRC definido. Não será. o que significa que o pacote será recebido se qualquer um dos filtros Mikroelektronika . Para este efeito. Esta é a rotina MAC do módul o. multicast. mexer com ativar / desativar receber / transmitir a lógica ou qualquer outra . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ethernet_Enable Protótipo void Ethernet_Enable (enFlt unsigned char). Cada const 0 0x01o tráfego de rede / receber bandeiras filtro. tráfegoMAC adequado / tráfego filtro /de derecepção: difusão será filtro. bit corresponde _Ethernet_BROADCAST Descrição a apro.EnFlt: MAC tráfego Broadcast / receber bandeira filtro. Nota: Esta rotina vai mudar configuração do filtro receber on-the-fly. Esta rotina permite que o tráfego de rede apropri ada no o módul o de MCU Ethernet interna por meio de ela receber filtros (unicast. Tipo específico de tráfego de rede será ativado se uma bit corres pond ente do parâmetr o essa rotina de entrada está definido.Soluções ativados de software e hardware para o mundo embutido 299 aceita. 3 0x08 não utilizado none 4 0x10 não utilizado none 5 0x20 CRC marca de verificação. Adicionalmente. 1 0x02 MAC habilitado. MAC tráfego unicast será habilitado. como a Pattern Match. no qualquer forma. pacotes com 6 0x40 campo CRCnão inválido será utilizado none descarta dos . Portanto. _Ethernet_UNICAST Quando conjunto. 7 0x80 MAC tráfego Unicast / receber bandeira filtro. Nota: Advance filtragem disponíveis no MCU módulo Ethernet internas. o tráfegonãomulticast utilizadoMAC será none habilitado. broadcast. Retorna Nada. Bi Másc Descrição biblioteca t Parâmetros: predefinidos ara . mais do que um tipo de tráfego de rede podem ser ativados ao mesmo tempo. exceto CRC. Magic Packet e Hash Table não pode ser ativada por este rotina. habilitado com esta rotina irá trabalhar em Ou modo. todos os filtros. CDC). constantes bibliotec a predefi ni da (ver tabel a abaix o) pode ser ORed para formar ade- valor de entrada apropriado.

3 0x08 não utilizado none 4 0x10 não usados none CRC marc a de verificaç ã o. multicast. Tipo específico de tráfego de rede será desativada se o bit correspondente do parâmetro essa rotina de entrada está definido. bandeira 1 0x02 _Ethernet_MULTICAST desativado. no qualquer forma.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Requer módulo Ethernet deve ser inicializado. CRC). Portanto. ao mesmo tempo. mais do que um tipo de tráfico de rede fic pode ser desativado. Quando conjunto. Para o efeito. Veja Ethernet_Init. / / enable Exemplo CRC verificação e tráfego Unicast Ethernet_Disable Protótipo vazio Ethernet_Enable (enFlt unsigned char). utilizado none 7 0x80 MAC tráfego Unicast / receber bandeira filtro. MAC MAC tráfego tráfego/ receber Multicast de difusão será filtro. constantes predefinidas biblioteca (Ver tabela abaixo) pode ser ORed para formar o valor de entrada apropriado. Não será. Nota: Esta rotina vai mudar configuração do filtro receber on-the-fly. Retorna Nada. como deficiênci a. biblioteca Másc Descrição predefinidos tráfego de rede adequado / filtro de recepção: ara MAC tráfego Broadcast / filtro de recepção const 0 0x01 _Ethernet_BROADCAST Descrição pavilhão. _Ethernet_UNICAST Quando conjunto. Quando 2 0x04 definido. o tráfegonãomulticast MAC será utilizado none desativado. O módulo de MCU Ethernet interno 300 Mikroelektronika devem -serSoluções de software devidamente e hardware cofigured por meiopara o mundo de rotina embutido Ethernet_Init. mexer com ativar / desativar receber / transmitir a lógica ou qualquer outra parte o módulo de MCU Ethernet interno. Pattern Match. Magic Packet e Hash Table não pode ser desativado por esta rotina. Cada bit corresponde a Bit apro. Esta rotina desabilita o tráfego de rede apropriada no Módulo MCU Ethernet interna por meio de ela receber filtros (unicast. Quando 5 0x20 defini do.DisFlt: o tráfego de rede / receber bandeiras filtro. transmissão. . Esta é a rotina MAC do módulo. verificaç ão de CRC será _Ethernet_CR C ser desativ ad o e pacotes com CRC inválido 6 0x40 camponãoserão aceitos. Ethernet_Enable (_Ethernet_CRC | _Ethernet_UNICAST). Parâmetros: . MAC tráfego unicast será com Nota: Advance filtragem disponíveis no MCU interna Ethernet módulo.

Recebeu de pacotes IP não foi IPv4. Ethernet controlador precisa ser reiniciado. } Mikroelektronika . É processos pacote recebido seguinte se existir.Requisições ARP e ICMP são respondidas automaticamente.Soluções de software e hardware para o mundo embutido 301 .Mediante pedido TCP Ethernet_UserT CP a função é chamada para posterior processamento. . . Os pacotes são processados da seguinte forma: Descrição . nem ender eç o de broadc as t IP). . . . / de sativar Exemplo CRC verificação e tráfego Unicast Ethernet_doPacket Protótipo unsigned char Ethernet_doPacket ().Mediante pedido da UDP Ethernet_UserUDP função é chamado para processamento adicional. Veja Ethernet_Init . .Mediante o processamento de pacot es de sucesso (zero pacotes recebidos ou recebidos Retorna pacote processado com sucesso).. Ethernet_Disa ble (_Eth ernet_CRC | _Ether net_UNICA ST).O pacote recebi do não foi enviado para nós (não o nosso IP.Por erro de recepção ou receber corrupção buffer.2 .0 .. . Requer módulo Ethernet deve serdeve Nota: Ethernet_doPacket inicializado. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Requer módulo Ethernet deve ser inicializado.Pacote recebido foi de tipo desconhecido para a biblioteca. ser chamado mais rápido possível no código do se (Ethernet_doPacket () == 0) {/ / processo pacotes recebidos Exemplo usuário. Vejao Ethernet_Init. .. Esta é a rotina MAC do módulo.4 .3 .1 .

Veja Ethernet_Init. * Buffer N: número de=bytes "mikroElektronika". Ethernet_putBytes (buffer. 16). unsigned char n). Parâmetros: . Parâmetros: . Ele armazena um byte para endereço apontado pelo cur- Descrição ponteiro escrever controlador alugar Ethernet (EWRPT). Ele armaz en a o númer o solicitado de bytes em Ether net RAM do controlador a partir de correntes Ethernet controlador escrever ponteiro (EWRPT) Descrição Local. / / coloque uma matriz de RA M em Ethernet buffer do controlador 302 Mikroelektronika . Retorna Nada. Esta é a rotina MAC do módulo... Veja Ethernet_Init. a ser escrito.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_putByte Protótipo vazio Ethernet_putByte (unsigned char v). char dados. Ethernet.Ptr: RAM tampão contendo bytes a serem gravados na memória RAM controlador Requer módulo Ethernet deve ser inicializado. char . Exemplo .. Esta é a rotina MAC do módul o.V: valor para armazenar Requer módulo Ethernet deve ser inicializado. Retorna Nada.. Exemplo . Ethernet_putByte (dados) / / colocar um byte em Ethernet controller buffer Ethernet_putBytes Protótipo vazio Ethernet_putBytes (unsigned char * Ptr.Software e hardware SOLUÇÕES PARA mundo embutido .

Veja Ethernet_Init.Soluções de software e hardware para o mundo embutido 303 . Esta é a rotina MAC do módul o. Parâmetros: . const char * Buffer = "mikroElektronika". N: número de bytes a ser 16). Ele armazena string todo (excluindo a terminação nula) em Descrição RAM Ethernet controller a partir de control ador Ethernet atual ponteir o escrever (EWRPT) local. Retorna Número de bytes gravados na memória RAM controlador Ethernet. Retorna Nada. char * Buffer = "MikroElektronika". Ethernet_putString (buffer). Esta é a rotina MAC do módulo.. . escrito. Veja Ethernet_Init. Parâmetros: .. Exemplo . Exemplo . não assinado Protótipo char n). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ethernet_putConstBytes vazio Ethernet_putConstBytes (const unsigned char * Ptr. Ethernet.Ptr: string a ser gravado na memória RAM controlador Ethernet. Requer módulo Ethernet deve ser inicializado. / / colocar um array em const buffer do controlador Ethernet Ethernet_putString Protótipo unsigned int Ethernet_putString (unsigned char * Ptr).. / / coloque uma seqüência de RAM em Ethernet buffer do controlador Mikroelektronika .Ptr: const tampão contendo bytes a serem gravados na memória RAM controlador Requer módulo Ethernet deve ser inicializado. Ele armaz ena o númer o de bytes solicitado const em Eth- RAM a partir do controlador ernet do controlador Ethernet atual ponteiro Descrição escrever (EWRPT) local.. Ethernet_putConstBytes (buffer.

char buffer.Addr: endereço do controlador Ethernet começar RAM.Soluções de software e hardware para o mundo embutido .N: número [16]. Retorna Número de bytes gravados na memória RAM controlador Ethernet. Requer módulo Ethernet deve ser inicializado.. Valores válidos: Requer módulo Ethernet deve ser inicializado. Ele busca eques ted númer o de bytes de Ethernet RAM do controlador a partir de determinado endereço. Parâmetros: ... bytes a ser lido. a leitura início do control a dor Ether net atual leia localização (ERDPT) ponteiro. Ethernet_getBytes (buffer.. Ele busca um byte de ender eç o apontad o pelo Descrição atual Requer ponteiro ler Ethernet módulo Ethernet devecontroller (ERDPT). Esta é a rotina MAC do módul o. Exemplo . Exemplo .Ptr: buffer para armazenar bytes lidos a partir da RAM controlador Ethernet... Ethernet_putConstString (buffer). Parâmetros: . const char * Buffer = "mikroElektronika". ser inicializado. Retorna Nada. não assinado int addr. 0x100. a pa rtir a partir do endereço 0x100 304 Mikroelektronika . Ele armaz ena string const todo (excluindo a rescisão nulo Descrição ção) para a RAM do controlador Ethernet a partir de controlador Ethernet atual escrever ponteiro (EWRPT) local.Ptr: const string a ser gravado na memória RAM controlador Ethernet. / / lê 16 bytes. buffer = Ethernet_getByte (). Veja Ethernet_Init. Protótipo unsigned char n). char buffer de .. Veja Ethernet_Init. Esta é a rotina MAC do módul o. Retorna Byte lido RAM controlador Ethernet.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_putConstString Protótipo unsigned int Ethernet_ putConstS tring (co nst unsig ned char * Ptr). 16 ). . Esta é a rotina MAC do módul o. Exemplo . 0 . / / lê um byte de con-Ethernet buffer Troller's Ethernet_getBytes vazio Ethernet_getBytes (unsigned char * Ptr. 8192. / / colocar um const string em buffer do controlador Ethernet Ethernet_getByte Protótipo unsigned char Ethernet_getByte (). Veja Ethernet_Init. Se o valor de 0xFFFF é passado como Descrição o parâmetr o de ender eç o.

.Comprimento do campo de resposta HTTP TCP / dados . O acesso do usuário es para o pedido de TCP / HTTP usando algumas das rotinas Ether net_ get. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ethernet_UserTCP unsigned int Ethernet_UserTCP (unsigned char * RemoteHost. Veja Ethernet_Init. A função deve retornar o tamanho em bytes da resposta HTTP TCP / ou 0 se não houver Descrição não é nada para transmitir.RemotePort: porto cliente TCP. código dedeve O código usuário. unsigned int localPo rt. apenas definir esta Função com retorno (0) como uma única instrução. A usuário coloca dados no buffer de transmi ss ão usando algumas das rotinas Ethernet_p ut. Nota: O códig o fonte da funçã o é forneci do com exempl os de projetos Exemplo Essa função é chama do internam ente pela bibliotec a e não deve ser chamado pelo adequa dos. não assinado Protótipo int RemotePort. . Ele é chamado internamente pela biblioteca.RemoteHost: endereço IP do cliente. Se não houver necessidade de responder às solicitações TCP / HTTP. . unsigned int reqLeng th). Requer módulo Ethernet deve ser inicializado. . Mikroelektronika .ReqLength: TCP / solicitação HTTP comprimento do campo de dados.caso contrário.SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo 305 . Parâmetros: . ser ajustado pelo usuário para obter resposta desejada.LocalPort: porta para que o pedido é enviado.0 . Retorna . Esta é a rotina de módulo TCP.Não deveria ser um resposta ao pedido.

deve ser ajustado pelo usuário para obter resposta desejada. unsign ed int de stPort. O usuário coloca dados no buffer de transmissão usando algumas das rotinas Ethernet_put. Estes locais não devem ser alterados Requer pelo módulousuário. unsigned char endereçoip [4] / / endereço IP do usuário buffer Exemplo .Comprimento do campo de dados UDP resposta . / / recupera o endere ço IP 306 Mikroelektronika .não deve haver uma resposta ao pedido. Veja Ethernet_Init. Ethern et_getIpA ddress () . código Ethernet_getlpAddress Protótipo unsigned char * Ethernet_getIpAddress (). u nsigned i nt reqLen gth). Descrição Nota: Usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em que é buffer próprio ender eç o IP. Retorna Ponter para a variável global exploração endereço IP. não assinado Protótipo int RemotePor t.RemoteHost: endereço IP do cliente. .ReqLength: solicitação UDP comprimento do campo de dados.. Exemplo adequfunção Essa a d o s. Retorna . em qualquer Ethernet caso! deve ser inicializado. A fun- ção deve retornar o tamanho em bytes da resposta UDP. Nota: O códig o fonte da funçã o é forne cid a com exemp lo s de proje to s Requer módulo Ethernet deve ser inicializado.RemotePort: porta do cliente. Esta é a rotina de módulo UDP. O acesso do usuário es para o pedido UDP usando algumas das rotinas Ethernet_g et. Veja Ethernet_Init.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_UserUDP unsigned int Ethernet_UserUDP (unsigned char * RemoteHost. memcpy (ipadd r.DestPort: porta para que o pedido é enviado.. ou 0 se nada para transmitir.Soluções de software e hardware para o mundo embutido .outra forma. Parâmetros: . 4). Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar endereço IP atribuído.0 . Se você não precisa responder às solicitações UDP.é chamado internamente pela biblioteca e não deve ser chamado pelo código de O usuário. . . basta definir esta função com Descrição um return (0) como única instrução. . Ele é chamado internamente pela biblioteca.

4). Ethernet_getDnsIpAddress ().. unsigned char dnsIpAddr [4]. Esta rotina deve ser usado quando o servidor DHCP está presente na rede para buscar atribuído o endereço IP do gateway. / / busca de DNS endereço do servidor Mikroelektronika . Veja Ethernet_Init. memcpy (gwIpAddr. Descrição Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em seu próprio gateway buffer endereço IP. unsigned char gwIpAddr [4]. Estes locais não devem ser alteradas pelo usuário. Retorna Ponter para a variável global exploração endereço IP do gateway. Protótipo unsigned char * Ethernet_getDnsIpAddress Retorna Ponter para a variável global exploração DNS o endereço IP.. Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar atribuído endereço IP do DNS. Estes locais não devem ser alteradas pelo usuário. em qualquer caso! Requer módulo Ethernet deve ser inicializado... Ethernet_getGwIpAd dress ().Soluções de software e hardware para o mundo embutido 307 . 4). em qualquer caso! Requer módulo Ethernet deve ser inicializado. Descrição Nota: O usuário deve sempre copiar o endereço IP de a localização RAM retornado por esta rotina em seu própri o buffer DNS o ender eç o IP. / / busca gateway endereço IP Ethernet_getDnslpAddress (). memcpy (dnsIpAddr. / user / Buffer DNS o endereço IP Exemplo . Veja Ethernet_Init. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ethernet_getGwlpAddress Protótipo unsigned char * Ethernet_getGwIpAddress (). / / user gateway buffer endereço IP Exemplo .

/ network / somente se o módul o de DHCP não é usada.255. Estes locais não devem ser alteradas pelo usuário. Caso contrári o.GwIpAddr endereço IP do gateway. endereço IP unsigned char dnsIpAddr [4] = {192. Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar atribuído máscara sub-rede IP. / / recupera IP m áscara Ethernet_confNetwork vazio Ethernet_confNetwork (char * IPMask. 255. 1} / / serv DNS er endereço IP . 0}. Nota: Os parâm e tro s de rede acima mencio n a d as devem ser fixad as por Requer módulo Ethernet deve ser inicializado. máscara de sub-rede. 1. .. gwIpAddr dnsIpAddr). / gateway / Exemplo (Roteador). Ethernet_getIpMask ( ). Configura os parâmetros de rede (IP.0) substituir essas unsigned char configur[4] gwIpAddr aç ões . Veja Ethernet_Init. Descrição Nota: O usuário deve sempre copiar o endereço IP do Local de RAM retornado por esta rotina em seu própri o IP buffer másc ar a.. máscara de sub-rede. Ethernet_confNetwork (IPMask. Descrição Parâmetros: . Retorna Nada. . 1.. esta rotin a unsigned char IPMask [4] = {255. 4). / user / IP buffer máscara Exemplo . Veja Ethernet_Init. unsigned char IPMask [4]. 255. char * GwIpAddr.255.IPMask: máscara de sub-rede IP. / network / set parâmetros de configuração 308 Mikroelektronika . gateway IP endereço IP de DNS endereço) quando o DHCP não é usada.. 168. memcpy (IPMask. char Protótipo * DnsIpAddr). em qualquer caso! Requer módulo Ethernet deve ser inicializado.Soluções de software e hardware para o mundo embutido .DnsIpAddr: DNS o endereço IP. 1}. o DHCP irá máscara (por exemplo: 255.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_getlpMask Protótipo unsigned char * Ethernet_getIpMask () Retorna Ponter para a variável global exploração IP. = {192. 168.

Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina não assinado char IpAddr [4] = {192. Pkt: pacotes para transmitir. Parâmetros: Descrição . Os pacotes entrada serão processados normalmente durante acima do endereço IP. 5). / / pega o endereço MAC por trás da a resposta. 10001. Esta é a rotina de módulo UDP.IP: endereço IP a ser resolvido. Ethernet_sendUDP (IpAddr. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ethernet_arpResolve unsigned char * Ethernet_arpResolve (unsigned char * Ip. Parâmetros: . 168.Tmax: tempo em segundos para esperar por uma resposta.0 . .Pacote UDP foi enviada com sucesso.Ender eç o MAC para trás o ender eç o IP . .. Requer módulo Ethernet deve ser inicializado.De outra forma. DestPort: destino número da porta UDP..0 . para o endereço IP acima. Ele envia uma solicitação ARP para determinado endereço IP e aguarda ARP resposta. 1} / / endereço IP remoto Exemplo . unsigned char IpAddr [4] = {192. SourcePort: número da porta UDP local de origem. unsigned int pktLen). não assinado Protótipo int sourcePort. aguarde 5 segundos para a resposta este tempo. 168.1 .de5). aguarda ARP Ethernet_arpResolve (IpAddr. . Veja Ethernet_Init. PktLen: comprimento em bytes do pacote para transmitir. dinheiro ARP pode armazenar até 3 entradas.De outra forma. "Olá". Retorna . . 1. Se o endereço IP solicitado foi resolvido. / / envia Olá mes - sábio. . . Para ARP referem-se a estrutura de caixa "Eth_j60LibDef.o ender eç o IP solicitado foi resolvido. Requer módulo Ethernet deve ser inicializado. unsigned char * Pkt. 1} / / endereço IP Exemplo .. não assinado Protótipo char tmax). de porta UDP 10001 para a porta UDP 10001 Mikroelektronika . Retorna . DestIP: remoto endereço IP do host.Soluções de software e hardware para o mundo embutido 309 . Ethernet_sendUDP unsigned char Ethernet_sendUDP (unsigned char * DestIP.. Esta é a rotina do módulo ARP. um ARP entrada de dinheiro é usada para armazena- Descrição ção da configuração.h" cabeçalho do arquivo na pasta do compilador Uses/P18. Veja Ethernet_Init. 10001. unsigned int destPort. 1. Ele envia um pacote UDP na rede. .

Parâmetros: . de locais devem Exemplo não podem ser alteradas pelo usuário. módulo Os pacotes Ethernet de inicializado. o seu ender eç o IP é armaz enado na variável global bibliotec a e um ponteir o que contém este ender eç o é retornado Descrição pela rotina. Este é o DNS módul o de rotina. unsigned char * RemoteHostIpAddr [4] / / usuário do host buffer endereço IP . Ethernet_dnsResolve ("swisstime. o IP.ethz..ch / / Serviços Área: Suíça e Europa memcpy (remoteHostIpAddr.ethz.0 .De outra forma.21: swisstime. SuíçaeçFed.Software e Soluções de hardware para Embedded World .Ponteir o para o local onde o ender eç o IP ..Host: nome do host para ser resolvido. Ele envia um pedido DNS para deter mi na do nome de host e aguar da resposta do DNS. em qualquer caso! Tecnologia / / 129. 4).o nome do host solicitado foi Retorna resolvido. deve ser entrada serão processados Veja normalmente durante Ethernet_Init. Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina aguarda DNS Requer a resposta. 310 Mikroelektronika . UDP porta 53 é usada como porta de DNS. .132. .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_dnsResolve unsigned char * Ethernet_dnsResolve (unsigned char * Host. Se o nome do host solicitado foi resolvido.2. . esse tempo. Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por / / Servidor SNTP: esta rotina / Zurique em seu / Suíça: próprio dehost Laboratório resolvido Sistemas buffer daender Integráveis.Tmax: tempo em segundos para esperar por uma resposta. 5). n ão assinado Protótipo char tmax).ch". Esses Inst.

Soluções de software e hardware para o mundo embutido 311 .Ethernet_getGwIpAddress . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ethernet_initDHCL Protótipo unsigned char Ethernet_initDHCP (unsigned char tmax). (5). .Parâmetros de rede foram obtidos com sucesso. Nota: Quando o módulo de DHCP é usado.Ethernet_getIpAddress .buscar IP. . . Esta é a rotina de módul o de DHCP. másc ar a de sub-red e) e aguar da pela resposta de DHCP . Parâmetros: .. Os pacotes de entrada serão processados normalmente durante Exemplo Ethernet_initDHCP este tempo.De outra forma. Ele envia um pedido DHCP para os parâmetr os de rede (IP. . variável biblioteca global Ethernet_user TimerSec é usado para controlar o tempo.buscar DNS o endereço IP..0 . É responsabilidade do usuário incremento dessa variável em cada segundo é o código. aguarde 5 segundos para a resposta .Ethernet_getIpMask .buscar o endereço IP. IP começ ar Descrição rotinas: . Veja Ethernet_Init. / / pega rede configuração do servidor DHCP. Estes parâmetr os podem ser obtidos usando a bibliotec a apropri ada. Se os parâmetr os solicitados foram obtidos com sucesso.Ethernet_getDnsIpAddress . aguarda DNS ..Tmax: tempo em segundos para esperar por uma resposta. Mikroelektronika .1 . Porta UDP 68 é usado como porta de cliente DHCP e UDP 67 é usado como serv DHCP er porta. máscara de sub-rede. Retorna . DNS e ender eç os IP. seus valores são armaz enados em a biblioteca de variáveis globais. a resposta. gateway .buscar endereço IP do gateway.. Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina Requer módulo Ethernet deve ser inicializado.

é Requer hora de Ethernet deve ser inicializado. Ela cuida de concessão de endereço IP vez Descrição por decre- tando o tempo de concessão global biblioteca do contador.0 .. Veja Ethernet_Init. Veja Ethernet_Init. Retorna . if (Ethernet_doDHCPLeaseTime ()) Exemplo Ethernet_renewDHCP (5). módulo contato com o servidor DHCP e renovar o aluguel.Tempo de concessão ainda não tenha terminado ainda. Esta é a rotina de módulo de DHCP. Ele envia o ender eç o IP arrendam ento pedido de renov aç ão de tempo para Descrição Servidor DHCP..CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Ethernet_doDHCPLeaseTime Protótipo unsigned char Ethernet_doDHCPLeaseTime ().. é hora de renovar.. while (1) { . com 5 segundos para uma resposta .. Requer módulo Ethernet deve ser inicializado.Soluções de software e hardware para o mundo embutido . / / É hora de renovar o IP Endereço de locação } Ethernet_renewDHCP Protótipo unsigned char Ethernet_renewDH CP (unsigned char tm ax). } 312 Mikroelektronika .. .0 . while (1) { .De outra forma (pedido de renovação expirou).sobre o sucesso (tempo de concessão foi renovada). Quando esse tempo expirar. Exemplo if (Ethernet_doDHCPLeaseTime ()) . Retorna .Tmax: tempo em segundos para esperar por uma resposta. / / é hora de renovar o endereço IP. .1 .1 .. Esta é a rotina de módul o de DHCP.Tempo de concessão expirou.. Parâmetros: .

O conselho vai responder aos pedidos em qualquer porta UDP: devolve o pedido de char superior com um cabeçalho feito de IP da máquina remota e número da porta .O conselho vai responder a solicitações HTTP na porta 80. Font-family: terminal "> <th <tr> colspan=2> ADC </ th> </ tr> <tr> <td> AN2 </ td> <script> document. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Exemplo Biblioteca Este código mostra como usar a biblioteca Ethernet PIC18FxxJ60: .1 200 OKnContent tipo:" / / Cabeçalho HTTP const unsigned char httpMimeTyp eHTML [] = "text / htmln n".url=http://192. / / Tipo MIME TEXTO unsigned char HttpMethod [] = "GET /". / * * Página web.O Conselho responderá a ARP e ICMP echo requests .60"> <HTML> <HEAD> </ HEAD> <BODY> <h1> PIC18FxxJ60 Mini Web Server </ h1> <a href=/> Recarregar </ a> src=/s> <script </ script> <table> <td valign=top> borda da tabela <= 1 style = "font -size: 20px .write (AN2) </ script> </ td> </ tr> <tr> <td> AN3 </ td> <script> document.168. / / Tipo de MIME HTML const unsigned char httpMimeTypeScript [] = "text plainnn /". # Define _Ethernet_HALFDUPLEX 0 # Define Ethernet_FULLDUPLEX 1 /************************************************* *********** * Cordas ROM constante * / const unsigned char httpHeader [] = "HTTP/1. os dados fragmentado é tratado mais efi- cientemente pelo linker * * Esta página HTML chama as placas para obter o seu estatuto. / T7 irá mudar para RD0 RD7 pouco e retornar HTML página principal todos os outros pedidos de retorno também HTML página principal.. e constrói se com javascript * / const char * Indexpage = / / Mude o endereço IP da página para ser atualizada "<meta Http-equiv="refresh" content="3.. com o método GET caminhos: / Vai retornar a página HTML principal / S irá retornar o status da placa como texto / T0 .write (AN3) </ script> < / td> </ tr> Mikroelektronika . divididos em 2 partes: * Quando chegar curto de ROM.20.Soluções de software e hardware para o mundo embutido 313 .

write (str).} document. 20.255. / / O meu endereço IP unsigned char gwIpAddr [4] = {192. /*********************************** RAM variáveis * * / unsigned char myMacAddr [6] = {0x00. </ Script> ". </ Script> </ Table> </ td> </ tr> </ table> Este é HTTP pedido # <script> Document. 168. / / Meu endereço MAC unsigned char myIpAddr [4] = {192. 0x14. i. 255. 255. 20.255. i. / / buffer para a resposta dinâmica unsigned long httpCounter = 0 / / contador de HTTP pedidos 314 Mikroelektronika ."> .0) unsigned char dnsIpAddr [4] = {192. IP endereço unsigned char IPMask [4] = {255. if (PORTD & (1 <<i)) {str + = "<td bgcolor=red> ON". 0x19. for (i = 0.write (REQ) </ script> </ BODY> </ HTML> ". / gateway / (Roteador). 0x76.write (str). str = "". i + +) {Str + = "bgcolor=yellow> <td LED #" + i + "</ td>". i <8. if (PORTB e (1 <<i)) {str + = "<td bgcolor=red> ON".} str +="</ td> </ tr ".} mais {Str + = "<td bgcolor=#cccccc> OFF". i <3. i + +) {Str + = "<td bgcolor=pink> # botão" + i + "</ td>".Soluções de software e hardware para o mundo embutido . 168. 6}.} mais {Str + = "<td bgcolor=#cccccc> OFF".} document.font-family: <tr> <th colspan=3> PORTD </ th> </ tr> <script> var str.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC </ Table> </ td> borda da tabela <= 1 style = "font-size: 20px. 1}. / / Endereço IP do servidor DNS unsigned char GetRequest [15] / / buffer solicitação HTTP unsigned char dyna [30]. font-family: terminal "> <tr> <th colspan=2> PORTB </ th> </ tr> <script> var str. / máscara de rede / (Por exemplo: 255. 60}.} +="</ Str td> <a href=/t" +i+"> Toggle </ a> </ td> </ tr ". 20. 0xA5. str = "". 0}. const char * IndexPage2 = "</ table> </ td> <table border=1 style="font-size:20px terminal . 168. 0x3f}. for (i = 0.

O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. } / * / * Mikroelektronika . while (* s) { Ethernet_putByte (* s + +). * / / * PutConstString unsigned int (const char * s) { ctr unsigned int = 0. o código será ser um pouco * Pouco maior.Software e hardware SOLUÇÕES PARA mundo embutido 315 . * * / # Define putConstString Ethernet_putConstString / * * Colocar a string apontada por s para o controlador Ethernet de trans - mit buffer * / / * PutString unsigned int (char * s) { ctr unsigned int = 0. No entanto. } retorno (CTR). } / * / * * Ele vai ser muito mais rápido de usar a biblioteca Ethernet_putConstString rou- dente * Em vez de putConstString rotina acima. } retorno (CTR). ctr + +. Se você optar por ir com o def-putConstString rial acima * A linha # define abaixo devem ser comentadas. while (* s) { Ethernet_putByte (* s + +). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas /******************************************* * funções * / / * * Colocar a string constante a pontada por s para o con-Ethernet Troller do buffer de transmissão. ctr + +.

ou 0 se nada para transmitir * * Se você não precisa de responder a pedidos HTTP. * * / # Define putString Ethernet_putString / * * Esta função é chamada pela biblioteca * O usuário acessa o pedido HT TP por chamadas suce ssivas para Ethernet_getByte () * O usuário coloca os dados no buffer de transmissão por chamadas sucessivas para Ethernet_putByte () * A função deve retornar o tamanho em bytes da resposta HTTP. Se você optar por ir com a definição putString - ção acima * A linha # define abaixo devem ser comentadas. } / / Obtém 10 bytes primeiro. unsigned int l ocalPort. if (memcmp (GetRequest. i + +) { GetRequest [i] = Ethernet_getByte (). * Apenas definir essa função com um return (0) como única instrução * * / unsigned int Ethernet_UserTCP (unsigned char * RemoteHost. 5)) / / só método GET é suportados aqui { return (0). } 316 Mikroelektronika . } GetRequest [10] = 0. unsigned i nt reqLength) { unsigned int len = 0.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC * Ele vai ser muito mais rápido de usar a biblioteca Ethernet_putString rotina * Em vez de putString rotina acima. / / comprimento resposta minha unsigned char i / / de propósito geral char if (localPort! = 80) / / Eu ouço apenas para solicitação da web na porta 80 { return (0). somente o pedido. No entanto. não assinado int RemotePort. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. i <10. o resto não importa aqui for (i = 0.Soluções de software e hardware para o mundo embutido . o código será uma pouco * Pouco maior. HttpMethod.

len + = (". len + = putString (Dyna). len + = (".Soluções de software e hardware para o mundo embutido 317 ."). len + = putString (Dyna). len + = putString (Dyna). Dyna). IntToStr (PORTB. Dyna). / máscara de bits para if (GetRequest (isdigit [6])) / / se 0 <= pouco <= número 9. Dyna)."). len + = putConstString (AN2 var = "). Dyna). len + = (". len + = putConstString (REQ var = "). len + = putString (Dyna). IntToStr (PORTD."). len + = (". os bits 8 e 9 não existe. putConstString } else if (GetRequest [5] == 't') / / se o nome do caminho começa a pedido com t. putConstString / / Adiciona valor PORTD (LEDs) para responder len + putConstString = ("var PORTD = ")."). putConstString / / Adiciona valor PORTB (botões) para responder len + = putConstString (PORTB var = "). len + = putConstString ("AN3 var ="). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas httpCounter + +. alternar PORTD núm ero de bits (LED) que vem depois { unsigned char bitmask = 0. len + = (". mas não importa { Mikroelektronika ."). putConstString / / Adiciona os pedidos HTTP contador para responder IntToStr (httpCounter. putConstString / / Adiciona valor AN3 para responder IntToStr (ADC_Read (3). armazenamento dinâmico de dados em buffer de transmissão { / / A string de texto respondeu por essa solicitação pode ser interpretadas como declarações de javascript / / Por navegadores putConstString len = (httpHeader). / / cabeçalho HTTP len + = putConstString (httpMimeTypeScript) / / com MIME de texto tipo / / Adiciona valor AN2 para responder IntToStr (ADC_Read (2). / / Mais um pedido feito if (GetRequest [5] 's' ==) / / se o nome do caminho começa com pedido s. len + = putString (Dyna). Dyna).

ByteToStr (remoteHost [3]. Dy na) / / byte pri meiro end ereço IP dyna [3] = '. reqLen gth unsig ned int) { unsigned int len / / comprimento resposta minha / / Resposta é feito do endereço IP do host remoto de seres humanos.'. dyna + 16). 318 Mikroelektronika . dyna + 8) / / terceiro dyna [11] = '. leia - formato capaz ByteToStr (r emoteHos t [0]. não assinado int RemotePo rt. ByteToStr (remoteHost [2]. em seguida. o anfitrião remoto WordToStr (RemotePort. dyna + 12) / / quarta dyna [15] = ':'. ou 0 se nada para transmitir * * Se você não precisa responder aos pedidos UDP. / / converter para inteiro ASCII máscara de bits = 1 <bitmask </ / criar máscara de bits PORTD ^ = bitmask. / / part e segunda página HTML } retorno (len).'. dyna + 4) / / segundo dyna [7] = '. unsi gned int destPort .'0 '.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC bitmask GetRequest = [6] . / alternar / PORTD com xor operador } } if (len == 0) / / o que fazer para por defeito { putConstString len = (httpHeader). / / retorna para a biblioteca com o número de bytes para transmitir } / * * Esta função é chamada pela biblioteca * O usuário acessa o pedido U DP por c hamadas sucessiva s para Ethernet_getByte () * O usuário coloca os dados no buffer de transmissão por chamadas sucessivas para Ethernet_putByte () * A função deve retornar o tamanho em bytes da resposta UDP.Soluções de software e hardware para o mundo embutido . ByteToStr (remoteHost [1]. / HTML parte da primeira página len + = putC onstStri ng (index Page2). / / Adiciona o separador / / Número da porta. / / cabeçalho HTTP len + = putConstString (httpMimeTypeHTML) / / com o tipo MIME HTML len + = putConstString (indexpage).'. * Apenas definir essa função com um return (0) como única instrução * * / unsigned int Ethernet_UserUDP (unsigned char * RemoteHost.

/ PORTB set / como entrada para os botões PORTD = 0. dyna + 22). WordToStr (destPort. / / Em seguida.Endereços Ethernet_confNetwork (IPMask.Soluções de software e hardware para o mundo embutido 319 . } retorno (len). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas dyna [21] '['. use pré . gwIpAddr dnsIpAddr). coloca a corda pedido convertido em char superior para o buffer de transmissão while (reqLength -) { Ethernet_putByte (toupper (Ethernet_getByte ())). / / Define PORTA como entrada para o ADC / / Exceto R A0 e RA1 que será utiliza do como / / Ethernet e LEDA LEDB PORTB = 0. 28). TRISD = 0. dyna [28] = 0. TRISB = 0xff. Mikroelektronika . / / Volta para a biblioteca com o comprimento do resposta UDP } / * * Entrada principal * / vazio main () { ADCON1 0x0B = / / conversores ADC será usado com AN2 e AN3 CMCON = 0x07 / / desliga os comparadores PORTA = 0. / / Set PORTD como saída / * * Inicializar controlador Ethernet * / Ethernet_Init (myIpAddr myMacA ddr. Ethernet_FULLDU PLEX). / / O comprimento total do ped ido é o comprimento do seqüência dinâmica mais o texto do pedido len = 28 + reqLength. / / Coloca a dinâmica string no buffer de transmissão Ethernet_putBytes (dyna. / / Dhcp não serão utilizados aqui. dyna [27] ']'. TRISA 0xFC =. portanto.

teste o valor de retorno para obter o código de erro * / Ethernet_doPacket () / / processo de pacotes Ethernet de entrada / * * Adicionar o seu material aqui.Software e Soluções de hardware para Embedded World . os pacotes podem ser perdidos * / } } 320 Mikroelektronika .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC while (1) / / Faz para sempre { / * * Se necessário. se necessário * Ethernet_doPacket () deve ser chamado o mais rápido possível * Caso contrário.

Note-se que protótipos diferentes para as famílias PIC16 e PIC18.FLASH_Write_16 . Para este grupo de leitura MCU. 3.FLASH_Erase . a fim de torná-lo mais fácil de utilizá-los. Por favor. Leia operações apoiadas. flash tem de ser apagado antes de escrita (operação de gravação não é executado como apagar e- escrever).FLASH_Erase_Write .FLASH_Erase_Write_1024 Mikroelektronika . Para este grupo de função só ler MCU é apli cadas. biblioteca flash MCU é dependente. operações de memória Flash são MCU dependentes: 1. Rotinas da biblioteca . 2.FLASH_Erase_1024 . Leia e Escrever operações apoiadas (escrever é executado como apagar e gravação). consultar os dados antes de MCU usando a biblioteca do flash. Note-se que escrever operação que é executada como apagá-e-escrever.FLASH_Write_32 . funções escrever e apagar são implementadas.FLASH_Write .FLASH_Write_64 .FLASH_Read . pode escrever bytes menor do que apaga.FLASH_Erase_Write_64 . Escrever e Apagar operações apoiadas. Para este grupo de MCU ler e escrever funções são implementadas. Como a família P18 significantlly diferem no número de bytes que podem ser apagados e / ou escrita para MCUs específico.Soluções de software e hardware para o mundo embutido 321 . Nota: Devido às especificidades P16/P18 flash família.FLASH_Erase_64 .FLASH_Read_N_Bytes . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas BIBLIOTECA DE MEMÓRIA FLASH Esta biblioteca fornece rotinas para acessar microcontrolador de memória Flash. Ainda mais um bloco de memória. o sufixo justificativo é acrescentado aos nomes dos funções. Ler.FLASH_Write_8 .

Software e hardware SOLUÇÕES PARA mundo embutido .. / / Para PIC18 unsigned short tmp. Requer Nada. data_buf fer.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC FLASH_Read / / Para PIC16 não assinado FLASH_Read (unsigned endereço). FLASH_Read_N_Bytes Protótipo vazio FLASH_Read_N_Bytes (long endereço. Char * data_. Retorna Retorna dados byte da memória Flash. Exemplo . Retorna Nada. tmp FLASH_Read = (0x0D00). Protótipo / / Para PIC18 unsigned short FLASH_Read (long endereço). Descrição Lê dados do endereço especificado no Flash memória. unsigned int N)... 322 Mikroelektronika . sizeof (data_bu ffer)). Descrição Lê dados de N do especificado endereço em memória Flash para varibale apontado por dados Requer Nada. .. Exemplo FLASH_Read_N (0x0D00.

toWrite). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas FLASH_Write / / Para PIC16 vazio FLASH_Write (unsigned endereço. i + +) toWrite [i] = i. 0x0D00: em que seja necessário para encontrar o tamanho do bloco de dados que serão gravados. / / Escreve o conteúdo da matr iz para o endereço 0 x0D00: FLASH_Write_64 (0x0D00. vazio FLASH_Write_64 (long endereço. . vazio FLASH_Write_32 (long endereço. Char * de dados). Retorna Nada. P16: Esta função pode apagar segm en to de memória antes de escrever bloco Descrição de dado s a ele (MCU depende nte) . i <64. unsigned short toWrite [64]. o segmento de memóri a. por isso precisa ser chamada função é como muitas vezes chamado Escrever MCU (dependente). / / Para PIC18 Protótipo vazio FLASH _Write_8 (long e ndereço. em 64 posições datasheet paraa mais partirdetalhes. P18: Esta função não realiza apagar antes de escre ver. Grava bloco de dados para a memória Flash. Além disso. valores consecutivos Consulte a MCU consecutivas. Char * de dados). vazio FLASH_Write_16 (long endereço. Exemplo / / Inicializa array: para (I = 0.Soluções de software e hardware para o mundo embutido 323 .. A memóri arecomenda-s e ser flash que irá a escrever. como termuitos escrito pode bytes que ser como apagar apagada antes . Char * de dados). tamanho do bloco é MCU dependentes.que FLASH_Wri essa te Requer escreve 4 locais de memóri a flash em uma linha. Portanto.. Mikroelektronika . unsigned int * de dados). que serão apagados pode ser maior que o tamanho do bloco de dados que serão gravados (MCU dependente). Char * de dado s).

Descrição Apagar em seguida. Nada. vazio FLASH_Erase_1024 (long endereço). i <64. dados char *). escrever conteúdo a matriz para o endereço 0x0D00: FLASH_Erase_Write_64 (0x0D00.. int i. Exemplo / / Inicializa array: for (i = 0. ão operações (consultar os dados para detalhes). vazio FLASH_Erase_Write_1024 (long endereço.Soluções de software e hardware para o mundo embutido . . toWrite). Apaga um bloco de memória a partir de um determinado endereço. Apagar um bloco de memória de 64 bytes de memória. Para P16 familly é Descrição implementar- ed somente para aquel es MCU. dados char *).CAPÍTULO 7 Bibliotecas mikroC PRO para PIC FLASH_Erase / / Para PIC16 vazio FLASH_Erase (unsigned endereço). Retorna Nada. i + +) toWrite [i] = i. cuja memóri a flash não supor ta apagar e Requer gravaç Nada. char toWrite [64]. Protótipo / / Para PIC18 vazio FLASH_Erase_64 (long endereço). 324 Mikroelektronika . Retorna Nenhum. / / Apagar bloco de memória no endereço 0x0D00 em seguida. a partir do endereço Exemplo 0x0D00: FLASH_Erase_64 (0x0D00).. escrever de memória bloco a partir de um determinado Requer endereço. FLASH_Erase_Write / / Para PIC18 Protótipo vazio FLASH_Erase_Write_64 (long endereço.

i + +) { / / Escr eva alg uns dado s para F lash Delay_ms (100). / / Desde rotina FLASH_Write realiza escreve em blocos de 4 palavras. // FLASH P16 é de 14 bits. é recomendada a realização de flash escreve em 16 palavras pedaços. / / Definir PORTB como saída PORTC = 0. // e MS PORTC Byte Delay_ms (500). 0x3FAA 1. i <4. 0x3FAA 10. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Exemplo Biblioteca O exemplo demonstra simples escrever para a memória flash para PIC16F887. / / PORTB inicial valor TRISB = 0. data AR [4] [4] = {{0 0x3 FAA. PORTB = 0. i + +) { data_ = FLASH_Read (addr + +). } } Mikroelektronika . / / É por isso que 4 bits mais baixos do começo endereço [03:00] deve ser zero. dataAR [i]). 0x3FAA 11} {0x3FAA 12. 5 0x3FAA. char i = 0. } Delay_ms (500). 7 0x3FAA} {0x3FAA 8.Soluções de software e hardware para o mundo embutido 325 . unsigned int addr. 0x3FAA 13. // Exibir dados em PORTB LS Byte PORTC data_ => 8. / / MSB dois vai ser sempre '00 ' PORTB data_ =. 0x3FAA 15}}. lê os dados e exibe-lo em PORTB e PORTC. 0x3FAA 6. / / PORTC valor inicial TRISC = 0. vazio main () { ANSEL = 0. válida para P16F887 para (I = 0 . / / Por isso. em seguida. addr = 0x0430. 9 0x3FAA. / / endereço inicial do Flash. 0x3FAA 14. / / Configurar um pinos como I / O digital ANSELH = 0. addr = 0x0430. data_. i <16. de modo Delay_us (10). para (I = 0. / / Escreve todos os blocos / / Para a memória do programa são feitas até 16 palavras por apagar / / Oito palavras operações de gravação. 0x3FAA 2. {0x3FAA 4. FLASH_Write (addr + i * 4. 0x3FAA 3}. A operação de gravação é / / borda alinhados e não pode ocorrer através das fronteiras. / / precisamos chamá-la quatro vezes seguidas. / / Definir PORTC como saída Delay_ms (500).

em TRISB4_bit. sbit sfr extern Direção do Chip sbit GLCD_CS1_Direction GLCD_CS1_Direction. RB1_bit. GLCD_RST. PORTD. alfinete. GLCD_CS2. As dependências externas do LCD Gráfico Biblioteca As seguintes variáveis Descrição: Exemplo: devem ser defin id o em todo s os extern sfr projec tochar s char GLCD_DataPort em usand o LCD Gráfico GLCD porta de dados. GLCD_RW. sbit sfr extern Direção do sbit GLCD_RW_Direction GLCD_RW_Direction. RB5_bit. RB3_bit. sbit GLCD_RS_Direction GLCD_RS_Direction.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC GRÁFICO LCD BIBLIOTECA A mik roC PRO para PIC fornece uma biblioteca para o funcionamento 128x64 gráfico LCD (com comumente usado Samsung controlador KS108/KS107). em TRISB1_bit. sbit sfr extern Registre-se selecionar a sbit GLCD_RS em GLCD_RS. sbit sfr extern Direção do Chip sbit GLCD_CS2_Direction GLCD_CS2_Direction. sbit GLCD_CS2 em Chip Select 2 linha. RB0_bit. 326 Mikroelektronika . Selecione um alfinete.Soluções de software e hardware para o mundo embutido . em TRISB2_bit. em TRISB3_bit. alfinete. em TRISB0_bit. sbit sfr extern sbit GLCD_RST em linha de reposição. Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool. RB4_bit. sbit sfr extern Direção do Reset sbit GLCD_RST_Direction GLCD_RST_Direction. sbit GLCD_RW em Read / Write linha. RB2_bit. sbit sfr extern linha. GLCD_DataPort. sbit sfr extern Direção da Habilitar sbit GLCD_EN_Direction GLCD_EN_Direction. sbit sfr extern Direção do Regis. Read / Write pino. ter pinos de seleção. Biblio tec a: sbit sfr extern sbit GLCD_CS1 em Chip Selecione uma GLCD_CS1. sbit sfr extern sbit GLCD_EN em Habilitar linha. em TRISB5_bit. sbit sfr extern linha. GLCD_EN. Selecione de 2 pinos.

Glcd_Write_Text .Glcd_Set_Side .Glcd_V_Line .Glcd_Init .Glcd_Rectangle .Glcd_Image Mikroelektronika . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Rotinas da biblioteca rotinas básicas: .Glcd_Dot .Soluções de software e hardware para o mundo embutido 327 .Glcd_Read_Data .Glcd_Set_X .Glcd_Circle .Glcd_Write_Char .Glcd_H_Line .Glcd_Fill .Glcd_Box .Glcd_Write_Data rotinas avançadas: .Glcd_Line .Glcd_Set_Font .Glcd_Set_Page .

Descrição Inicializa o módulo GLCD. GLCD_DataPort: porta de dados . sbit GLCD_CS2_Direction em TRISB1_bit. GLCD_RW: leitura / gravação de pino . GLCD_CS1: Chip selecione um pino de sinal . Cada uma das linhas de controle é tanto um porto e pin-config mensurável. sbit GLCD_RST_Direction em TRISB5_bit. / / GLCD configurações de pinagem char GLCD_DataPort em PORTD. GLCD_EN: pino do sinal Enable Requer . sbit GLCD_RW em RB3_bit. 328 Mikroelektronika . Retorna Nada. GLCD_CS2: Chip selecionar dois pinos de sinal . sbit GLCD_RS em RB2_bit. sbit GLCD_CS1 em RB0_bit... GLCD_RS_Direction: Direção do sinal selecione Registrar pin . sbit GLCD_EN em RB4_bit. ANSELH = 0. sbit GLCD_CS2 em RB1_bit. GLCD_EN_Direction: Direção do sinal Enable pin . GLCD_RST_Direction: Direção do pino do sinal Reset devem ser definidas antes de utilizar esta função. . sbit GLCD_RW_Direction em TRISB3_bit.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Glcd_Init Protótipo vazio Glcd_Init (). sbit GLCD_RS_Direction em TRISB2_bit. GLCD_RS: Cadastre-se pino de sinal selecione . Exemplo sbit GLCD_RST em RB5_bit. sbit GLCD_EN_Direction em TRISB4_bit. GLCD_RST: Reset sinal . ANSEL = 0. Glcd_Init (). GLCD_RW_Direction: Direção da leitura / gravação do sinal do pino . sbit GLCD_CS1_Direction em TRISB0_bit. As variáveis globais: . GLCD_CS2_Direction: Direção do Chip selecione 2 pinos . enquanto que as linhas de dados devem ser em uma única porta (pinos <00:07>). GLCD_CS1_Direction: Direção do Chip selecione um pino .Soluções de software e hardware para o mundo embutido .

63 Nota: Para lateral. Descrição Parâmetros: . veja Glcd_Init rotina. As duas linhas seguintes são equival entes . e ambos selecione no lado esquer do Exemplo da GLCD: Glcd_Select_Side (0). precisa ser inicializado.X_pos: posição no eixo-x. Parâmetros: Descrição . Retorna Nada.Soluções de software e hardware para o mundo embutido 329 . Valores válidos: 0 .. 127 O parâmetro x_pos especifica o lado GLCD: valores 0-63 especificar o lado esquerdo. Valores válidos: 0 . Seleciona lado GLCD. desta página. os valores de 64-127 especificar o lado direito. Nota: Para lateral. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Glcd_Set_Side Protótipo vazio Glcd_Set_Side (unsigned short x_pos).. Glcd_Set_X Protótipo vazio Glcd_Set_X (unsigned short x_pos). Retorna Nada. eixo x e na págin a explicação layout ver esquem a em baixo Requer desta GLCD página. veja Glcd_Init rotina. Exemplo Glcd_Set_X (25). Consulte a ficha GLCD para explicação detalhada. Define a posição do eixo x para x_pos pontos a partir da margem esquerda do GLCD dentro do select- lado ed.X_pos: posição no eixo-x. Glcd_Select_Side (10). eixo x e explicaç ão de layou t de págin a ver esquem áti c a na parte inferior Requer GLCD precisa ser inicializado. Mikroelektronika .

Descrição Lê dados a partir do local atual de memória GLCD e se move para a próximo local. . Glcd_Set_X e Glcd_Set_Page. 7 Nota: Para lateral. eixo-x e de página deve ser definido primeiro.. Glcd_Read_Data Protótipo unsigned short Glcd_Read_Data (). 330 Mikroelektronika . desta página..Soluções de software e hardware para o mundo embutido . Valores válidos: 0 . Exemplo Glcd_Set_Page (5). Requer lado GLCD posição. eixo x e explicaç ão de layou t de págin a ver esquem a em baixo Requer GLCD precisa ser inicializado.página: número da página.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Glcd_Set_Page Protótipo vazio Glcd_Set_Page (unsigned short página). = dados Glcd_Read_Data (). veja Glcd_Init rotina. Exemplo Glcd_Set_Side. Seleciona a página do GLCD. Parâmetros: Descrição . veja rotina Glcd_Init. GLCD precisa ser inicializado. Retorna Um byte de memória GLCD. Veja as funções unsigned short dados. Retorna Nada..

Descrição Parâmetros: .Software e hardware SOLUÇÕES PARA mundo embutido 331 . uso Glcd_Fill (0xFF). Para preencher a tela completamente. Requer lado GLCD posição. Retorna Nada. veja Glcd_Init rotina. Retorna Nada..ddata: dados a serem gravados GLCD precisa ser inicializado. eixo-x e de página deve ser definido primeiro. Mikroelektronika . veja Glcd_Init rotina. Requer GLCD precisa ser inicializado. Glcd_Write_Data (dados). Glcd_Fill Protótipo vazio Glcd_Fill (unsigned short padrão).padrão: byte para preencher GLCD memória com Para limpar a tela GLCD. use Glcd_Fill (0). Parâmetros: Descrição . Veja as funções unsigned short dados. Preenche a memória GLCD com o padrão de byte. Glcd_Set_X e Glcd_Set_Page. Grava um byte para a posição atual em GLCD memóri a e move para a próxima Local. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Glcd_Write_Data Protótipo vazio Glcd_Write_Data (unsigned short ddata). .. / / Limpar ecrã Exemplo Glcd_Fill (0). Exemplo Glcd_Set_Side.

int y_start. Protótipo não assinado cor curto). um coloca um ponto. 2). Desenha uma linha na GLCD. Valores válidos: 0 . 20.x_end: coordenada x da extremidade da linha.cor: parâmetro de cor.. 332 Mikroelektronika .cor: parâmetro de cor..CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Glcd_Dot vazio Glcd_Dot (unsigned short x_pos. Requer GLCD precisa ser inicializado. Nota: Para x e explicação layout eixo y ver esquema no final deste página.. / / Inverter o ponto no no canto superior esquerdo Exemplo Glcd_Dot (0.. int x_end. unsigned y_pos curto. Valores válidos: 0 . Parâmetros: .. Protótipo unsigned short cor). 2 O parâmetro cor determina a cor da linha: 0 branco. 1)..y_start: coordenada y do início da linha. Glcd_Line vazio Glcd_Line (int x_start. 127 Descrição . 2 O parâmetro cor determina um ponto do estado: 0 limpa ponto. y_pos).0 ) e (20. 1 preto e 2 inverte cada ponto.Soluções de software e hardware para o mundo embutido . Valores válidos: 0 . 63 . 30.x_start: coordenada x do início da linha. Valores válidos: 0 . Retorna Nada. 127 . int y_end. 63 . Valores válidos: 0 . Valores válidos: 0 . veja Glcd_Init rotina.x_pos: x posição. / / Desenha uma lin ha entre os pont os (0. Valores válidos: 0 . veja Glcd_Init rotina. 30) Exemplo Glcd_Line (0. 0. Requer GLCD precisa ser inicializado. e 2 inverte ponto estado. 127 Descrição . Retorna Nada. 63 .. Parâmetros: .y_end: coordenada y da linha final. 0.y_pos: y posição.. Válido valores: 0 . Desenha um ponto na GLCD nas coordenadas (x_pos.

Retorna Nada. Requer GLCD precisa ser inicializado. x_pos: coordenada x da linha vertical.Software e hardware SOLUÇÕES PARA mundo embutido 333 . Retorna Nada. 10. Requer GLCD precisa ser inicializado. 127 -X_end: coordenada x da extremidade da linha. 25. Valores válidos: 0 . unsigned short x_end. 63 .5) e (10. Valores válidos: 0 ..20) Exemplo Glcd_H_Line (10. 50. veja Glcd_Init rotina. 63 . 1). Parâmetros: Descrição .. 127 . Valores válidos: 0 . veja Glcd_Init rotina. 1). Desenha uma linha vertical no GLCD. Mikroelektronika . Valores válidos: 0 . 2 O parâmetro cor determina a cor da linha: 0 branco. Valores válidos: 0 . Glcd_H_Line vazio Glcd_H_Line (unsigned short x_start.. Valores válidos: 0 . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Glcd_V_Line vazio Glcd_V_Line (unsigned short y_start.x_start: coordenada x do início da linha.y_pos: coordenada y da linha horizontal. Parâmetros: Descrição . Valores válidos: 0 . 127 . unsigned short cor). y_end: y coordenar o fim da linha.cor: parâmetro de cor. Protótipo unsigned short y_pos. Desenha uma linha horizontal sobre GLCD.. 63 . / / Desenha uma linha horizontal entre os pontos (10. 1 preto e 2 inverte cada ponto. unsigned short cor). y_start: coordenada y do início da linha. 2 O parâmetro cor determina a cor da linha: 0 branco. Valores válidos: 0 . / / Desenha uma linha vertical entre os pontos (10. 1 preto e 2 inverte cada ponto. cor: parâmetro de cor. unsigned short y_end. 20.20) e (50.... Protótipo unsigned short x_pos..25) Exemplo Glcd_V_Line (5.

unsigned short y_bottom_right. veja Glcd_Init rotina.x_bott om_right : x coordenadas do canto inferior direito caixa. 1).y_uppe r_left: coordena da y do canto superior esquerdo do retângu lo. 0 branco. unsigned short y_bottom_right.x_upper_left: coordenada x do retângul o superior esquerdo canto.y_upper_left: coordenada y do canto superior esquerdo caixa. unsigned short x_bottom_right. unsigne d short Protótipo y_upper_left.. unsigned short x_bottom_right. unsigned short cor). 63 . . 127 .x_bottom_right: coordenada x do canto inferior direito do retângulo.1 5) e (20 . Desenha um retângulo na GLCD. Válido valores: 0 . 63 . unsigned short cor).y_bottom_right: coordenada y do canto inferior direito r etângul o canto.cor: parâmetro de cor. O parâmetro cor determina a cor da caixa de preenchimento: 0 branco. unsigned short Protótipo y_upper_left. 40. Retorna Nada. Parâmetros: ..x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores válidos: 0 . 40. 5... 127 . 2 Requer GLCD precisa O parâmetro corser inicializado.cor: parâmetro de cor. 20.um / Desenha e 2retângulo de cada ponto.5) e (40. entre os pontos (5. 63 . Valores Descrição válidos: 0 .40) cada ponto. um preto. Valores válidos: 0 Descrição . Exemplo Glcd_Box (5. e 2 / / Desenha inverte uma cai xa entre os pont os (5. 1)..CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Glcd_Rectangle vazio Glcd_Re ctangle ( unsigned short x_u pper_left .. 15.. 2 Requer GLCD precisa ser inicializado. Valores válidos: 0 .40) Exemplo Glcd_Rectangle (5. Válido valores: 0 . Valores válidos: 0 . 40.. Retorna Nada. 1 do retângulo: inverte / preto.. Valores válidos: 0 . 127 . determina vejaborda a cor da Glcd_Init rotina. Valores válidos: 0 . 127 .y_bottom_right: coordenada y do canto inferior direito caixa. Desenha uma caixa de GLCD. Parâmetros: . 63 . Glcd_Box vazio Glcd_Box (unsigned short x_upper_left. Valores válidos: 0 .Soluções de software e hardware para o mundo embutido . 334 Mikroelektronika .

Raio: Raio de tamanho . Parâmetros: Descrição . int raio..cor: parâmetro de cor. não assinado Protótipo curto cor). Define a fonte que será usada com Glcd_Write_Char e Glcd_Write_T ext rotinas. Valores válidos: 0 . Valores válidos: 0 . int y_center. Requer GLCD precisa ser inicializado. unsigned short aFontHeig ht. veja Glcd_Init rotina. dados Glcd_Set_Font (& MyFont. 10. 2 O parâmetro cor determina a cor da linha do círculo: 0 branco. e 2 inverte cada ponto. 7. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Glcd_Circle vazio Glcd_Circle (int x_center. unsigned short Protótipo aFontWidth. que se inicia com o espaço (32): Exemplo O usuári o pode usar fontes de 5. Retorna Nada. Precisa ser formatado como um array de byte Descrição . veja Glcd_Init rotina. aFontOffs é 20). 63 ..Soluções de software e hardware para o mundo embutido 335 Usa pasta ou criar sua próprias fontes. e 'A' é 45 no mikroC PRO para PIC conjunto de caracteres. Parâmetros: . unsigned int aFontOf fs). se 'A' é 65 de caracter es ASCII. Valores válidos: 0 . 1).y_center: coordenada y do centro do círculo. Desenha um círculo em GLCD. 50.aFontOffs: número que representa a diferença entre mikroC para o PRO PIC conjunto de caracter es ASCII e definir regular (por exempl o.aFontWidth: largura dos caracteres da fonte em pontos.aFontHeight: altura dos caracteres da fonte em pontos.x_center: coordenada x do círculo centro.50) e rai o = 10 Exemplo Glcd_Circle (50. . / / Use o costume 5x7 fonte "MyFont". Demo fontes providas com a bibliotec a tem um desloc amento de 32. o que significa que início Requer GLCD com oprecisa espaço. 127 . Glcd_Set_Font vazio Glcd_Set_Font (const char * ActiveFont. Retorna Nada. . no arquiv o "__Li b_G LCD F onts " arquiv o 32).ser inicializado. localizado na Mikroelektronika .. um negro.activeFont: fonte a ser definido. / / Desenha um círculo com cen tro em (50. .

Parâmetros: .. Use Glcd_Set_F ont a especi- Requer esta página. fy a fonte para exibição. 2. Retorna Nada.CDH: caractere a ser escrito . (127-FontWidth) Descrição . fonte padrão forneci dos com 5x8 a / /biblioteca será Escreve 'C' usada. 2 O parâmetro cor determina a cor do personagem: 0 branco. Nota: Para eixo x e explicação de layout de página ver esquema na parte inferior da GLCD precisa ser inicializado. Um preto. Valores válidos: 0 .x_pos: caractere inicial posição no eixo-x.cor: parâmetro de cor. Válido valores: 0 . 336 Mikroelektronika .. 7 .. 1). unsigned short x_pos. Impressões sobre o caráter GLCD. Valores válidos: 0 . 10. unsigned short cor). e 2 inverte cada ponto.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Glcd_Write_Char vazio Glcd_Write_Char (unsigned short CDH. veja Glcd_Init rotina.Soluções de software e hardware para o mundo embutido . se não é fonte especifi c ado. Protótipo unsigned short page_num.page_num: o número da página na qual personagem vai ser escrito. na posição 10 no interior da página 2: personagem Exemplo Glcd_Write_Char ('C'.

1). Use Glcd_Set_Font para especificar esta página. unsigned short cor). Valores válidos: 0 . texto: texto a ser escrito Descrição . 5x8 fornecido com o /biblioteca será "Olá / Escreve texto usada. Parâmetros: Descrição . 7 . Glcd_Image Protótipo vazio Glcd_Image (const unsigned short código * Imagem). mundo!" na posição 10 no interior da página 2: Exemplo Glcd_Write_Text ("Olá mundo!". Requer a fonte para exibição. para a exibição em GLCD. Valores válidos: 0 . Mikroelektronika . page_num: o número da página na qual o texto será escrito. Retorna Nada. matriz bitmap deve estar na memória de código. 2. veja Glcd_Init rotina. 2 O parâmetro cor determina a cor do texto: 0 branco. Imprime texto na GLCD. e 2 inverte cada ponto. Nota: Para eixo x e explicação de layout de página ver esquema na parte inferior da GLCD precisa ser inicializado. Exibe bitmap em GLCD. Retorna Nada. 10.Soluções de software e hardware para o mundo embutido 337 .. Parâmetros: . veja Glcd_Init rotina. cor: parâmetro de cor. se nenhuma fonte é especificada.imagem: a imagem a ser exibida. uns igned sho rt x_pos. . x_pos: posição do texto a partir do eixo-x. Use o mikroC PRO para PIC integr ada GLCD Bitmap Editor para converter a imagem para Requer GLCD precisa ser inicializado. não assi nado Protótipo curto page_num. fonte padrão.. em seguida. uma matriz constante. / / Desenha my_image imagem GLCD Exemplo Glcd_Image (my_image). um preto. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Glcd_Write_Text vazio Glcd_Wr ite_Text (char * T exto.

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Exemplo Biblioteca O exemplo a seguir demonstra as rotinas da biblioteca GLCD: inicialização. sbit GLCD_RST_Direction em TRISB5_bit.------- ------------ const char código truck_bmp [1024].final declarações / / Conexões GLCD módulo char GLCD_DataPort em PORTD. //-----------------------------------------------. / / Configurar uma pinos como digital ANSELH = 0. função de atraso Delay_ms (2000). } vazio main () { unsigned short II. sbit GLCD_RST em RB5_bit. sbit GLCD_RS em RB2_bit. / / Fim conexões GLCD módulo vazio delay2S () { / / 2 segundos. exibindo imagens. Glcd_Init (). sbit GLCD_RW em RB3_bit. círculos. sbit GLCD_CS2 em RB1_bit. sbit GLCD_CS2_Direction em TRISB1_bit. retângulos e caixas. desenhar linhas. C1ON_bit = 0. sbit GLCD_CS1_Direction em TRISB0_bit. char * SomeText. claro (padrão de preenchimento). / / Limpar GLCD while (1) { 338 Mikroelektronika .-------------. / / Inicializar GLCD Glcd_Fill (0x00). sbit GLCD_EN em RB4_bit. / comparadores Desativar C2ON_bit = 0. # Define COMPLETE_EXAMPLE / comentar essa linha para fazer exemplo mais simples e menores ANSEL = 0. sbit GLCD_RW_Direction em TRISB3_bit. / / Declarações ----------------------------------------------. sbit GLCD_EN_Direction em TRISB4_bit. o texto visualização e manuseio. sbit GLCD_RS_Direction em TRISB2_bit. sbit GLCD_CS1 em RB0_bit.Soluções de software e hardware para o mundo embutido .

/ Change / fonte someText = "8x7 Fonte". 5. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas # Ifdef COMPLETE_EXAMPLE Glcd_Image (truck_bmp). 2). 32). / / Desenhar retângulo Glcd_Line (0. 0. 127. / / Preencha GLCD Glcd_Set_Font (Character8x7. II. / / Limpar GLCD Glcd_Box (62. 1). ii + = 5) {/ / Desenha linhas horizontais e verticais Delay_ms (250). 54. 2. / font Escolha / v.56. Glcd_Write_Text (someText. / / Desenha caixa Glcd_Rectangle (5. delay2S ().40. 3. 8. } delay2S (). / / Desenha a imagem delay2S (). 63. Glcd_H_Line (2.1). II.Soluções de software e hardware para o mundo embutido 339 .124. __Lib_GLCDFonts. # Endif Glcd_Fill (0x00). Glcd_Write_Text (someText. ii <60. 0. 70. ii + +) / / Desenha círculos Glcd_Circle (63.32. / font / Alterar someText = "3X5 únicas capitais". 2) / / Esc reve o texto para (Ii = 1. 1. 1).5.84. 5. 120. 60.35. Glcd_Fill (0x00). 1). Glcd_V_Line (2. 7. de (ii = 5. / / Alterar a fonte someText = "5x7 Fonte". 3 * ii. # Ifdef COMPLETE_EXAMPLE Glcd_Fill (0xFF). 2) / / Escreve o texto delay2S (). delay2S (). 32). 5. 7. 7. 2) / / Escreve o texto delay2S (). Glcd_Set_Font (font5x7.c Na pasta Usos # Endif Glcd_Write_Text ("mikroE" . 1). 32). / / Desenha caixa delay2S (). Glcd_Box (12.20. / / Limpar GLCD # Ifdef COMPLETE_EXAMPLE Glcd_Set_Font (Character8x7. / / Desenha uma linha delay2S (). Mikroelektronika . 7. 8. Glcd_Set_Font (System3x5.1). <ii = 10.57. 32).

5. 4.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido . 6. 5. / / Escreve a string delay2S (). Glcd_Set_Fon t (FontS ystem5x7_ v2.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Glcd_Write_Text (someText. 7 . Glcd_Write_Text (someText. 2). 32). 5. / / Altera r fonte someText = "5x7 Fonte (v2)". # Endif } } Conexão HW GLCD conexão HW 340 Mikroelektronika . 2) / / Escreve o texto delay2S ().

Precisa ser chamada antes de usar outras funções de I ˛ C Library. o compilador precisa saber o valor do parâmetro em tempo de compilação. Retorna Nada.I2C1_Wr .I2C1_Start . Você não precisa configurar as portas manualmente para usando o módulo. Requer Nota: O cálculo do valor do relógio que eu ˛ C é realizada pelo compilador. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas BIBLIOTECA I ² C I ˛ C completo módulo mestre MSSP está disponível com um número de modelos PIC MCU. e não uma variável. I2C1_Init (100000). Rotinas da biblioteca . Exemplo I2C1_Init (100000). biblioteca terá cuidado com Biblioteca a inicialização.Soluções de software e hardware para o mundo embutido 341 . se realizado em o nível biblioteca.I2C1_Init . sim - ply alterar o número 1 no protótipo com o número adequado de módulo.I2C1_Stop I2C1_Init Protótipo vazio I2C1_Init (unsigned long relógio). Mikroelektronika . A fim de usar a desejar eu ˛ rotina da biblioteca C.I2C1_Is_Idle . mik roC PRO para PIC fornece biblioteca que apoia o comandante do I ˛ modo C. É por isso que este parâmetro deve ser uma constante. Inicializa I C ˛ com desejado relógio (Ver folha de dados do dispositivo para os valores Descrição corretos em respeito com FOSC). Nota: Alguns MCUs ter vários módulos ˛ C. ou seja. como seria produzir um código relativamente grande. Portanto. requer MSSP módulo sobre PORTB ou PORTC.I2C1_Repeated_Start .I2C1_Rd .

I2C1_Repeated_Start Protótipo vazio I2C1_Repeated_Start (void).CAPÍTULO 7 Bibliotecas mikroC PRO para PIC I2C1_Start Protótipo unsigned short I2C1_Start (void). Veja I2C1_Start.Software e hardware SOLUÇÕES PARA mundo embutido . I2C1_Is_Idle Protótipo unsigned short I2C1_Is_Idle (void). a função retorna 0.. . ter = I2C1_Rd (0). Retorna Se não houver erro. Exemplo se (I2C1_Is_Idle ()) {. Veja I2C1_Init. Requer I2C deve ser configurado antes de usar esta função. Ler e enviar dados não reconhece sinal: Exemplo unsigned short ter... Exemplo I2C1_Repeated_Start (). ele envia reconhecer. Requer I2C deve ser configurado antes de usar esta função. START deve ser emitido. caso contrário retorna 0. Veja I2C1_Init. Retorna Retorna 1 se o bus I2C é livre.. a fim de utilizar esta função. Descrição Determina se o bus I2C é gratuito e as questões START. Retorna Retorna um byte a partir do escravo. Retorna Nada. Requer I2C deve ser configurado antes de usar esta função. Exemplo I2C1_Start (). Requer I2C deve ser configurado antes de usar esta função. Descrição Questões repetidas START. Descrição Testa se I2C bus está livre. Veja I2C1_Init. caso contrário. Veja I2C1_Init. e não envia reconhec er sinal se o parâmetr o ack é 0. Além disso. Descrição Lê um byte a partir do escrav o. 342 Mikroelektronika .} I2C1_Rd Protótipo unsigned short I2C1_Rd (unsigned short ack).

a fim de utilizar esta função. Mikroelektronika . Requer I2C deve ser configurado antes de usar esta função. Além disso. Retorna Retorna 0 se não houve erros. Exemplo I2C1_Stop (). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas I2C1_Wr Protótipo unsigned sh ort I2C1 _Wr (uns igned sh ort dat a_). Requer I2C deve ser configurado antes de usar esta função. Descrição Problemas de sinal STOP. START deve ser emitido. Descrição Envia byte de dados (parâmetros) através do barramento I2C. Retorna Nada. Exemplo I2C1_Write (0xA3). Veja I2C1_Init. Veja I2C1_Start. Veja I2C1_Init.SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido 343 . I2C1_Stop Protótipo vazio I2C1_Stop (void).

podemos ler os dados via I ˛ C da EEPROM e enviar seu valor para PORTB. // enviar dados (dados a serem escritos) I2C1_Stop (). vazio main () { ANSEL = 0. // enviar (endereço do dispositivo + R) byte PORTB I2C1_Rd = (0U). // emissão de sinal de paragem I2C } 344 Mikroelektronika . // inicializar comunicação I2C I2C1_Start (). // emissão de sinal de paragem I2C Delay_100ms (). TRISB = 0. // Leia os dados (não reconhece) I2C1_Stop (). I2C1_Start ().Soluções de software e hardware para o mundo embutido . PORTB = 0. Então.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Exemplo Biblioteca Este código demonstra o uso da biblioteca C eu ˛. // sinal questão de I2C repetidas início I2C1_Wr (0xA3). / / Configurar PORTB como saída I2C1_Init (100000). // enviar bytes (endereço do local EEPROM) I2C1_Wr (0xF0). Programa envia dados para EEPROM (os dados são gravados no endereço 2). // emitir sinal de início I2C I2C1_Wr (0xA2). // enviar bytes (envio de dados) I2C1_Repeated_Start (). PIC MCU está conectado (SCL. // enviar bytes via I2C (endereço do dispositivo + W) I2C1_Wr (2). // emitir sinal de início I2C I2C1_Wr (0xA2). os pinos SDA) a EEPROM 24C02. para verificar se o ciclo foi bem sucedida (veja a figura abaixo como fazer a interface com PIC 24C02). / / Configurar um pinos como I / O digital ANSELH = 0. // enviar bytes via I2C (dispositivo Endereço + W) I2C1_Wr (2).

Soluções de software e hardware para o mundo embutido 345 . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Conexão HW Interface com PIC 24C02 via I2C Mikroelektronika .

Teclado porto devem ser definidas antes de utilizar esta função. 4x3 ou teclado. As dependências externas do teclado Biblioteca As seguintes variáveis devem Descrição: Exemplo: ser definida em todos os projectos sfr extern char char keypadPort em PORTD. Descrição Inicializa porta para trabalhar com o teclado.Keypad_Init .Soluções de software e hardware para o mundo embutido .Keypad_Key_Press . Teclado Porto..Keypad_Key_Click Keypad_Init Protótipo vazio Keypad_Init (void). 4x2. Keypad_Init ().CAPÍTULO 7 Bibliotecas mikroC PRO para PIC TECLADO BIBLIOTECA A mik roC PRO para PIC fornece uma biblioteca para trabalhar com 4x4 teclado. / / Conexões teclado módulo char keypadPort em PORTD.keypadPort . Exemplo / / Fim do teclado conexões do módulo . A variável global: Requer . keypadPort. Para uma explicação conexões ver esquema no bot - Tom desta página. Usando o teclado Biblioteca: Rotinas da biblioteca . 346 Mikroelektronika . As rotinas de biblioteca pode também ser usado com 4x1.. Retorna Nada.

char kp. Se mais de uma tecla é pressionada. simultaneamente.. Se nenhuma tecla for pressionada. Chamar a atenção para Keypad_Key_Click é uma chamada de bloqueio: a função espera até que alguma tecla for Descrição pressionado e liberado. Se nenhuma tecla for clicado. a função vai esperar até todas as teclas pressionad as são liberados. dependendo a chave. retorna 0. consulte Keypad_Init. a função retorna 1 a 16. Requer Porto precisa ser inicializado para trabalhar com a biblioteca do teclado. 16). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Keypad_Key_Press Protótipo char Keypad_Key_Press (void).. Quando liberado. kp Keypad_Key_Click = (). Retorna O código de uma tecla clicada (1 . char kp.. 16).Soluções de software e hardware para o mundo embutido 347 . kp Keypad_Key_Press = ().. Depoi s que a função irá retor nar o Requer código do ser inicializado para trabalhar com a biblioteca do teclado. Descrição Lê a tecla do teclado quando a chave fica pressionado. Retorna O código de uma tecla pressionada (1 . Mikroelektronika . Keypad_Init. Exemplo . Exemplo . Keypad_Key_Click Protótipo char Keypad_Key_Click (void). retorna 0... consulte Porto precisa primeira tecla pressionada.

. fazer { kp = 0. char txt [6]. sbit LCD_D4 em RB0_bit. / / código da loja na variáv el -chave kp enquanto (Kp!). / / Fim do módulo LCD conexões vazio main () { cnt = 0. uma pequena de byte único dis -counter desempenha no segundo número de linha de LCD de teclas pressionadas. Além disso. F] e exibido no LCD. / / Zerar contador Keypad_Init (). / / Conexões teclado módulo keypadPort char na PORTD. sbit LCD_EN_Direction em TRISB5_bit. kp unsigned short. sbit LCD_D5_Direction em TRISB1_bit. / / Inicializar Teclado Lcd_Init (). sbit LCD_D7 em RB3_bit.. 348 Mikroelektronika . sbit LCD_D5 em RB1_bit. 1.. / / Cursor para fora Lcd_Out (1. Neste exemplo. O código a ser devolvido pelo Keypad_Key_Click () função é na faixa a partir de 1 . o código retornado é transformado em ASCII Códigos [0 . Lcd_Out (1. / / Inicializar Lcd Lcd_Cmd (_LCD_CLEAR). oldstate = 0. / / cód igo da l oja na va riável -c have kp kp = Keypad_ Key_Clic k (). / / Escreve o texto da mensagem no LCD Lcd_Out (2.. 1. sbit LCD_D4_Direction em TRISB0_bit. / / Fim conexões teclado módulo / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit. sbit LCD_EN em RB5_bit. 4 linhas e 1 . Ele suporta teclados com 1 . sbit LCD_D7_Direction em TRISB3_bit. 1. cnt. "Key: "). sbit LCD_RS_Direction em TRISB4_bit. 16.Soluções de software e hardware para o mundo embutido . / / O visor claro Lcd_Cmd (_LCD_CURSOR_OFF). "1").. 4 colunas. / / Reset variável código-chave / / Espera tecla a ser pressionada e liberada fazer / Kp / = Key pad_Key_ Press ().CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Exemplo Biblioteca Este é um exemplo simples do uso da Biblioteca do teclado. "Times:"). 9. sbit LCD_D6 em RB2_bit. sbit LCD_D6_Direction em TRISB2_bit. A.

10 ". caso 1: Kp = 49. } Lcd_Chr (1. break. } Mikroelektronika . txt). break. / / '*' / Descomente / este bloco para keypad4x3 / / Case 11: kp = 48. break. break. break. / 3 caso 4: kp = 65. break. break. } WordToStr (txt CNT). / / '#' / / Default: kp + = 48. / / 8 caso 11: kp = 57. / / 1 / Descomente para bloquear este keypad4x4 caso 2: kp = 50. break. break. 10. kp). / B caso 9: kp = 55. Lcd_Out (2. / / A caso 5: kp = 52. / / 5 caso 7: kp = 54. transformação chave para o seu valor ASCII switch (KP) { / / Case 10: kp = 42. break. / / Valor expositor em LCD } enquanto (1). "). / / 7 caso 10: kp = 56. / / * caso 14: kp = 48. break. break. / 6 caso 8: kp = 66. / 2 caso 3: kp = 51.Soluções de software e hardware para o mundo embutido 349 . / 4 caso 6: kp = 53. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas / / Valor Preparar para a produção. } mais {/ / Tecla pressionada é o mesmo que anterior cnt + +. oldstate = kp. / / Mostra o valor ASCII chave em LCD se (Cnt == 255) { / / Se contador estouro varialble cnt = 0. break. break. break. break. break. / / # caso 16: kp = 68. 10. / / 0 caso 15: kp = 35. break. C / caso 13: kp = 42. / / Valor de Transformação contra a cadeia Lcd_Out (2. / / 9 caso 12: kp = 67. / / '0 ' / / Case 12: kp = 35. break. D / / } se (Kp! Oldstate =) {/ / tecla pressionada difere da anterior cnt = 1.

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Conexão HW 4x4 para conexão da HMI regime 350 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

sbit sfr extern Dados de 6 pinos de direção. sbit sfr extern sbit LCD_D5 em Dados de 5 linhas. sbit sfr extern sbit LCD_D6 em Dados de 6 linhas. sbit sfr extern Dados de 5 pinos de direção. LCD_EN: RB5_bit. Um exemplo de con-LCD nections é dada sobre o esquema na parte inferior desta página. LCD_EN_Direction. LCD_D4. RB0_bit. sbit sfr extern sbit LCD_D7 em Dados linha 7. RB1_bit. sbit sfr extern sbit LCD_D4 em Os dados de 4 linhas. sbit sfr extern Dados de 4 pinos de direção. LCD_D6. sbit sfr extern alfinete. sbit LCD_D5_D irection LCD_D5_Direction. sbit LCD_D4_D irection LCD_D4_Direction. Externas dependências da Biblioteca LCD As seguintes variáveis deve ser definida em Descrição: Exemplo: todo s os projetos usando sbitLcd sfr extern sbit LCD_RS em Registre-line Select. em TRISB2_bit. sbit LCD_EN_D irection Habilitar direção dos pinos. Mikroelektronika . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas LCD BIBLIOTECA A mik roC PRO para PIC fornece uma biblioteca de comunicação com LCDs (com HD44780 controladores compatíveis) através do interface de 4 bits. em TRISB1_bit. em TRISB0_bit. sbit sfr extern sbit LCD_RS_D irection Registr e Selecione a direção LCD_RS_Direction. em TRISB3_bit. sbit sfr extern sbit LCD_EN em Habilitar linha. em TRISB4_bit. LCD_D5. sbit sfr extern sbit LCD_D7_D irection Dados de 7 pinos direção. LCD_D7. RB2_bit. RB3_bit. em TRISB5_bit. LCD_RS:Biblioteca: RB4_bit. LCD_D7_Direction. Para criar um conjunto de personagens personalizadas LCD usam LCD personalizado Personagem Tool.Soluções de software e hardware para o mundo embutido 351 . sbit LCD_D6_D irection LCD_D6_Direction.

Lcd_Out .LCD_RS_Direction: Direção do Registo Selecione pinos . .LCD_D4: Os dados de 4 bits .Direção dos Dados de 6 pinos: LCD_D6_Direction .LCD_D5: Dados bit 5 .LCD_RS: Registo Select (dados / instruções) pinos de sinal Requer .. / / Direção Pin sbit LCD_RS_Direction em TRISB4_bit..LCD_EN_Direction: Direção do sinal Enable pin devem ser definidas antes de utilizar esta função. sbit LCD_D6_Direction em TRISB2_bit.LCD_EN: Habilitar sinal do pino .CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Rotinas da biblioteca .LCD_D7: Dados bit 7 . sbit LCD_EN_Direction em TRISB5_bit.LCD_D6: Dados bit 6 .Lcd_Out_Cp . As variáveis globais: . sbit LCD_D7 em RB3_bit. / / Configurações de pinagem Lcd sbit LCD_RS em RB4_bit. Retorna Nada. sbit LCD_EN em RB5_bit. sbit LCD_D6 em RB2_bit. sbit LCD_D5 em RB1_bit. 352 Mikroelektronika . sbit LCD_D4_Direction em TRISB0_bit.Direção dos Dados 5 pinos: LCD_D5_Direction .Direção do pino Dado 7: LCD_D7_Direction .Soluções de software e hardware para o mundo embutido .Lcd_Init .Direção dos Dados de 4 pinos: LCD_D4_Direction . sbit LCD_D7_Direction em TRISB3_bit.Lcd_Chr . Exemplo sbit LCD_D4 em RB0_bit. Lcd_Init ().Lcd_Chr_Cp . sbit LCD_D5_Direction em TRISB1_bit.Lcd_Cmd Lcd_Init Protótipo vazio Lcd_Init (). Descrição Inicializa o módulo LCD.

Descrição Parâmetros: .texto: texto a ser escrito Requer O módulo LCD deve ser inicializado. Parâmetros: . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Lcd_Out Protótipo vazio Lcd_Out (char linha.coluna: número da coluna a partir posição . Lcd_Out_CP Protótipo vazio Lcd_Out_CP (char * Texto). Veja rotina Lcd_Init. Ambas as variáveis string e-litro als pode ser passado como um texto. Imprime texto na tela LCD na posição atual do cursor. Veja rotina Lcd_Init. Retorna Nada.texto: texto a ser escrito Requer O módulo LCD deve ser inicializado.linha: número da linha de partida posição . 3. / / Escreve o texto "Olá!" no LCD a partir da linha 1. / / Escreve o texto "Aqui!" na posição atual do cursor: Exemplo Lcd_Out_CP ("Aqui!"). Retorna Nada. char coluna. Mikroelektronika .SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido 353 . char * Texto). coluna 3: Exemplo Lcd_Out (1. Ambas as variáveis e literais string Descrição pode ser passado como um texto. Imprime texto na tela LCD a partir de deter mi nada posição. "Olá!").

Lcd_Chr_Cp Protótipo vazio Lcd_Chr_CP (char out_char).coluna: escrever o número da coluna posição . 'i'). Retorna Nada. Ambas as variáveis e literais Descrição pode ser passado como um personagem. Veja rotina Lcd_Init.linha: escrito Posição de linha número . / / Escreve caracter "i" na linha 2. Parâmetros: . Imprime caracter es em LCD na posição especifi c ada. Ambas as variáveis e literais podem ser passado como um personagem. / / Escrever "e" caractere na posição atual do cursor: Exemplo Lcd_Chr_CP ('e'). Veja rotina Lcd_Init. Retorna Nada. coluna 3: Exemplo Lcd_Chr (2. 354 Mikroelektronika . char coluna. 3.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Lcd_Chr Protótipo vazio Lcd_Chr (char linha. Imprime caracteres em LCD na posição atual do cursor.out_char: caractere a ser escrito Requer O módulo LCD deve ser inicializado.Softwares e soluções de hardware para Embedded World .out_char: caractere a ser escrito Requer O módulo LCD deve ser inicializado. Descrição Parâmetros: . char out_char).

Parâmetros: Descrição . Desligue Mostrar o cursordados RAM não é afetada. consul te Disponív el LCD Requer O módulo LCD deve ser inicializado.out_char: comando a ser enviado Nota: Cons tantes pré-defi ni das podem ser passados para a função. Retorna Nada. retorna uma tela deslocado para sua posição original LCD_CURSOR_OFF posição. / / Clear LCD: Exemplo Lcd_Cmd (_LCD_CLEAR). Disponível Comandos LCD Lcd Comando Finalidade LCD_FIRST_ROW Move o cursor para a linha 1 LCD_SECOND_ROW Move o cursor para a linha 2 LCD_THIRD_ROW Move o cursor para a 3 ª fila LCD_FOURTH_ROW Move o cursor para a linha 4 LCD_CLEAR O visor claro LCD_RETURN_HOME Retornar cursor para a posição inicial. Comandos. sem alterar RAM exibir dados LCD_SHIFT_RIGHT Shift direito de exibição sem alterar RAM exibição de dados Mikroelektronika . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Lcd_Cmd Protótipo vazio Lcd_Cmd (char out_char). Envia comando para LCD.Soluções de software e hardware para o mundo embutido 355 . Veja a tabela Lcd_Init. LCD_UNDERLINE_ON Sublinhar o cursor em LCD_BLINK_CURSOR_ON Intermitência do cursor em LCD_MOVE_CURSOR_LEFT Move o cursor para esquerda sem alterar RAM exibir dados LCD_MOVE_CURSOR_RIGHT Mover cursor para direita sem alterar a RAM de dados de exibição LCD_TURN_ON Vire a tela LCD LCD_TURN_OFF Ligue o monitor LCD LCD_SHIFT_LEFT Shift display esquerdo.

/ / Inicializar LCD Lcd_Cmd (_LCD_CLEAR). sbit LCD_D6 em RB2_bit. char i. sbit LCD_D4_Direction em TRISB0_bit. sbit LCD_RS_Direction em TRISB4_bit. Lcd_Init (). Lcd_Cmd (_LCD_CLEAR). / / Escreve o texto em primeiro linha Lcd_Out (2. sbit LCD_D5 em RB1_bit.6. / / Escreve o texto na primeira linha Lcd_Out (2. / / Exibe Limpar Lcd_Cmd (_LCD_CURSOR_OFF).CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Exemplo Biblioteca O código a seguir demonstra o uso da rotinas Lcd Biblioteca: / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit. sbit LCD_EN_Direction em TRISB5_bit. char txt4 [] = "Exemplo". txt3). / / Você pode alterar a velocidade de movimento aqui } vazio main () { TRISB = 0. ANSEL = 0. sbit LCD_D7_Direction em TRISB3_bit. / Cursor / off Lcd_Out (1.1. sbit LCD_EN em RB5_bit. / / Escreve o texto na segunda linha Delay_ms (2000). TRISB = 0xff. txt4). sbit LCD_D4 em RB0_bit.Soluções de software e hardware para o mundo embutido .6. char txt2 [] = "EasyPIC5". sbit LCD_D6_Direction em TRISB2_bit. txt2). / / Configurar um pinos como I / O digital ANSELH = 0.5. PORTB = 0xFF. / / Exibe Limpar Lcd_Out (1. char txt3 [] = "Lcd4bit". sbit LCD_D7 em RB3_bit. sbit LCD_D5_Direction em TRISB1_bit. txt1). / / Escreve o texto na segunda linha 356 Mikroelektronika . / / Variável do laço vazio Move_Delay () { / / Função usada para o texto em movimento Delay_ms (500). / / Fim conexões do módulo do LCD char txt1 [] = "MikroElektronika".

Move_Delay (). i + +) {/ / Move o texto à direita 4 vezes Lcd_Cmd (_LCD_SHIFT_RIGHT). } while (1) { / / Loop infinito for (i = 0. i + +) {/ / Move o texto à direita 7 vezes Lcd_Cmd (_LCD_SHIFT_RIGHT).Soluções de software e hardware para o mundo embutido 357 . Move_Delay (). } for (i = 0. i <8. i <4. Move_Delay (). CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Delay_ms (2000). / / Texto em Movimento for (i = 0. i <8. i + +) { / / Move o texto para a esquerda 7 vezes Lcd_Cmd (_LCD_SHIFT_LEFT). } } } Mikroelektronika .

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC conexão HW LCD conexão HW 358 Mikroelektronika .Soluções de software e hardware para o mundo embutido .

) Nota: Manchester biblioteca de código implementa atividades baseadas em tempo. etc. byte é recebido. a sincronização alcançados. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas MANCHESTER BIBLIOTECA DO CÓDIGO A mik roC PRO para PIC fornece uma biblioteca para manipulação Manchester sinais codificados. O código de Manchester é um código em que os dados e sinais de clock são combinados para formar um único fluxo de dados de auto-sincronização. Notas: O Manchester recebe rotinas são o bloqueio de chamadas (Man_Receive_Init e Man_Synchro). Isto significa que a MCU irá esperar até que a tarefa tem sido per- formados (por exemplo. As dependências externas do Manchester Code Library Mikr oele ktro nika - Solu ções de soft ware e hard ware para o mun do emb utido . cada bit codificado contém uma transição no ponto médio de um período de pouco. por isso interrompe necessidade a ser desativado quando usá-lo. o segundo semestre é o valor do bit verdade e no primeiro semestre é o complemento de o valor do bit verdade (como mostrado na figura abaixo). a direção da transição determina se o bit é 0 ou 1.

TXPIN. TXPIN_Direction.Biblioteca de RC0_bit. sbit MANTXPIN em linha de transmissão. sbit sfr extern MAN. pino. RXPIN. sbit MANRXPIN em Receber linha. em TRISC0_bit. sbit sfr extern MAN. sbit MANRXPIN_Direction Direção do recebi mento do RXPIN_Direction. sbit sfrcódigo: extern MAN. . sbit MANTXPIN_Direction Direção do pino de transmissão. RC1_bit. em TRISC1_bit.359 As seguin te s variáveis deve ser definida em todos Descrição: Exemplo: os pro- ECTS com Manchester sbit sfr extern MAN.

0 .Manchester_1 .Man_Synchro .Se a inicialização e sincronização foram bem sucedidas.Manchester_Out Man_Receive_Init Protótipo unsigned int Man_Receive_Init (). 360 Mikroelektronika .Man_Receive .Após a sincronização sem êxito..1 .Soluções de software e hardware para o mundo embutido .Man_Send_Init . Retorna . A função de receptor configura o pino e realiza processo de sincronização no Para recuperar a taxa de transmissão do sinal de entrada. Man_Receive_Init (). Descrição Nota: Em caso de múltipl os erros persistentes na recepç ão. . Exemplo sbit MANRXPIN_Direction em TRISC0_bit. o usuário deve chamar esse As variáveis globais: rotina uma vez ou Man_Synchro rotina para permitir a sincronização. .Manchester_0 . / / Inicializar Receptor sbit MANRXPIN em RC0_bit.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Rotinas da biblioteca .255 . .Aquando usuário abortar. compilador só: . Requer MANRXPIN: Receber linha MANRXPIN_Direction: Direção do pino de recepção devem ser definidas antes de utilizar esta função..Man_Send .Man_Break As rotinas a seguir são para uso interno.Man_Receive_Init .

erro = 0.erro: erro bandeira. . Veja Man_Receive_Init. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Man_Receive Protótipo unsigned char Man_Receive (unsigned char * Erro).Soluções de software e hardware para o mundo embutido 361 .. Descrição A função configura Transmissor pino.. o erro pavilhão Para utilizar esta função. Retorna Nada. Exemplo = dados Man_Receive (e erro). Mikroelektronika . Retorna Um byte ler a partir do sinal de entrada. / / Inicializar do transmissor: sbit MANTXPIN em RC1_bit. Man_Send_Init (). Requer será definido como não-zero. A função extrai um byte a partir do sinal de entrada.. Descrição Parâmetros: . o usuário deve preparar o MCU para o recebimento. Se o formato do sinal não coincide com o esperado. unsigned char dados = 0. se (Erro) {/ * Tratamento de erros /} Man_Send_Init Protótipo vazio Man_Send_Init (). Exemplo sbit MANTXPIN_Direction em TRISC1_bit. . As variáveis globais: Requer MANTXPIN: linha de transmissão MANTXPIN_Direction: Direção do pino de transmissão devem ser definidas antes de utilizar esta função..

a su- sincronização de sucesso. Requer Para utilizar esta função. o usuário deve preparar o MCU para o envio.Metade do comprimento de bit manchester. Man_Synchro Protótipo unsigned char Man_Synchro (). Exemplo .Se a sincronização não foi bem sucedida. unsigned int man__half_bit_len.. man__half_bit_len Man_Synchro = (). unsigned char msg. 362 Mikroelektronika . Veja Man_Receive_Init. Man_Send (msg). Parâmetros: Descrição ..CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Man_Send Protótipo vazio Man_Send (unsigned char tr_data).255 .Soluções de software e hardware para o mundo embutido . Requer Para utilizar esta função. Retorna Nada. Retorna . expressas em múltiplos de 10us . . Descrição Medidas de metade do comprimento do bit manchester com resolução 10us. Exemplo .. Veja Man_Send_Init. primeiro você deve preparar o MCU para o recebimento.tr_data: dados a serem enviados Nota: Baud taxa utilizada é de 500 bps. Envia um byte..

Este mecanis m o é sim- lhantes ao WDT.GIE = 0. / / Global interrupção desativar .T0IF) { se (Contador> = 20) { Man_Break (). } Mikroelektronika . INTCON..T0IF = 0.T0IE = 1 / / Enable estouro Timer0 interrupção data1 = Man_Receive (e erro). / / incrementa contador INTCON. (Ver nota no topo desta se (INTCON. / / Tenta Man_Receive com bloqueio de mecanismo de prevenção INTCON.. / / zerar o contador } mais contador + +. contador = 0..GIE = 1 / / Global interrupção permitir INTCON. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Man_Break Protótipo vazio Man_Break (). bandeira / / Limpa estouro Timer0 interrupção } Exemplo } vazio main () { OPTION_REG = 0x04. Retorna Nada. Man_Receive está bloqueando a rotina e ele pode bloquear o fluxo do programa. Man_Receive_Init (). .. Chame esse Descrição rotina de interrupç ão para desbloquear a execução do programa.. Nota: As interrupções devem ser desativados antes de usar o Manchester Requer Nada. contador = 0. / prescaler TMR0 / set a 1:32 . rotinas de novoerro. vazio interrupção { página). char data1..Soluções de software e hardware para o mundo embutido 363 .

vazio main () { ErrorCount = 0. sbit LCD_D5_Direction em TRISB1_bit.Soluções de software e hardware para o mundo embutido . sbit LCD_D6_Direction em TRISB2_bit.F5 = 0.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Exemplo Biblioteca O código a seguir é o código para o receptor de Manchester. / / Move o cursor para a linha 1 enquanto (1) {/ / Espera o "start" byte temp = Man_Receive (& error) / / byte tenta receber se (Temp == 0x0B) / / byte "Iniciar". / / Configurar um pinos como I / O digital ANSELH = 0. sbit LCD_EN em RB5_bit. / / Fim módulo Manchester conexões char erro. sbit LCD_D4_Direction em TRISB0_bit. sbit LCD_EN_Direction em TRISB5_bit. sbit LCD_RS_Direction em TRISB4_bit. que mostra como usar o Manchester Biblioteca para recepção dos dados: / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit. Lcd_Init (). sbit LCD_D7 em RB3_bit. / / Nós temos a seqüência de partida 364 Mikroelektronika . / / Clear LCD Man_Receive_Init (). / / Fim conexões do módulo do LCD / / Conexões Manchester módulo sbit MANRXPIN em RC0_bit. sbit LCD_D4 em RB0_bit. ErrorCount. sbit MANRXPIN_Direction em TRISC0_bit. ANSEL = 0. veja o exemplo do Transmissor break. / / Inicializar Receptor enquanto (1) { / / Loop infinito Lcd_Cmd (_LCD_FIRST_ROW). sbit MANTXPIN_Direction em TRISC1_bit. sbit LCD_D6 em RB2_bit. sbit LCD_D7_Direction em TRISB3_bit. sbit MANTXPIN em RC1_bit. sbit LCD_D5 em RB1_bit. / / Inicializar LCD Lcd_Cmd (_LCD_CLEAR). de temperatura. TRISC.

/ / Escreve ponto de interrogação no LCD ErrorCount + + / / Update erro contra se (ErrorCou nt> 20) {/ / Em c aso de v ários er ros temp = Man_Synchro (). / Sair / Se byte "End" foi recebido do loop } } Mikroelektronika . CAPÍTULO 7 mikroC PRO para PIC Bibliotecas se (Erro) / / Saída para que não loop para sempre break. tente ao inicializar Receptor de novo ErrorCount = 0. } enquanto (Temp = 0x0E!). / / erro Zerar contador } } mais {/ / Nenhum erro ocorreu se (Temp! = 0x0E) / / Se o byt e "End" foi recebida (ver Transmissor exemplo) Lcd_Chr_CP (temp) / / não escrever byte recebido em LCD } Delay_ms (25).Soluções de software e hardware para o mundo embutido 365 . / / Tente sincronizar novamente / Man_Receive_Init / (). / Alternativa. } fazer { temp = Man_Receive (& error) / / byte Tentativa receber se (Erro) {/ / Se o erro ocorreu Lcd_Chr_CP ('?').

/ / Aguarde um momento index + +. sbit MANTXPIN em RC1_bit. / / Fim conexões Manchester módulo char índice. } } 366 Mikroelektronika . / / Enviar caráter Delay_ms (90). char s1 [] = "mikroElektronika". / / Espera por um tempo caracter = s1 [0]. / / Incrementar variável índice caracter = s1 [índice]. que mostra como usar o Manchester Biblioteca de transmissão de dados: / / Conexões Manchester módulo sbit MANRXPIN em RC0_bit. sbit MANRXPIN_Direction em TRISC0_bit. / / Enviar "start" byte Delay_ms (100).Software e hardware SOLUÇÕES PARA mundo embutido . / / Inicializar transmissor enquanto (1) { / / Loop infinito Man_Send (0x0B). / / Inicializar variável índice enquanto (Personagem) { / / String termina com zero Man_Send (personagem). de caráter. / / Tome primeiro char da string = índice 0. sbit MANTXPIN_Direction em TRISC1_bit.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC O código a seguir é o código para o transmissor de Manchester. vazio main () { Man_Send_Init (). / / Leve o próximo caractere da string } Man_Send (0x0E). / / Enviar "fim" byte Delay_ms (1000).

CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Exemplo de conexão Conexão simples transmissor Simples Receptor conexão Mikroelektronika .Soluções de software e hardware para o mundo embutido 367 .

inclusive.Funções de biblioteca popular ambas as tabelas e FAT1 FAT2 ao escrever em arquivos. cartões MMC são cur- atualmente disponível nos tamanhos até e incluindo 1 GB.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC MULTI MEDIA LIBRARY CARD O Multi Media Card (MMC) é uma memória flash padrão de cartão. mas o arquivo de dados está a ser lido da tabela FAT1 só. mp3 players. não há recuperação se FAT1 tabela está corrompido. Os cartões SD estão atualmente disponíveis em tamanhos de até 2 GB. Secure Digital Card Secure Digital (SD) é um cartão de memória flash padrão.Escravo Selecione deficientes . mp3 players.saída de dados Serial mudanças na transição do estado inativo para ativo relógio Estado relógio SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV16. . mik roC PRO para PIC fornece uma biblioteca para acessar dados sobre Multi Media Card via SPI biblioteca communication. _SPI_LOW_2_HIGH). .Para MCUs com dois módulos SPI é possível inicializar ambos e em seguida. 368 Mikroelektronika . _SPI_CLK_IDLE_LOW.Soluções de software e hardware para o mundo embutido . Deve ser chamado antes de inicializar Mmc_Init. e são usados em celulares. . O us uário deve inicializar SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. Nota: O mód u lo SPI tem de ser inicializ ad o atrav és SPI1_Ini t_Advanc ed rotina com os seguintes parâmetros: . Notas: .Rotinas para manipulação de arquivos só podem ser utilizados com sistema de arquivos FAT16. ou seja.Funções de biblioteca criar e ler arquivos no diretório raiz só.Mestrado SPI .Modo de 8bit .This também suporta cartões SD (Secure Digital) de memória. mudar usando o SPI_Set_Active () rotina.Biblioteca trabalha com a família PIC18 só.dados amostrados no meio de dados em tempo de saída . . câmeras digitais.prescaler primária 16 . e são usados em celulares. baseado na velha Multi Media Card (MMC) de formato.relógio de marcha lenta . . PDAs e.A biblioteca utiliza o módulo de comunicação SPI. _SPI_DATA_SAMPLE_MIDDLE. câmeras digitais e PDA's.

Mmc_Fat_QuickFormat . Veja o Mmc_Init e rotinas Mmc_Fat_Init.Soluções de software e hardware para EMBEDDED MUNDO 369 . sbit sbit sfr extern Direção da Mmc_Chip_Select_Direction Mmc_Chip_Select_Direction.Mmc_Fat_Set_File_Date .Mmc_Fat_Get_File_Size .Mmc_Write_Sector .Mmc_Fat_Reset . o usuário poderá reinicializar SPI em maior velocidade. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Nota: Uma vez o cartão MMC / SD é inicializado. chip.Mmc_Fat_Delete .Mmc_Fat_Write . Rotinas da biblioteca .Mmc_Fat_Get_Swap_File Mikroelektronika .Mmc_Fat_Get_File_Date . As dependências externas do MMC Biblioteca As seguintes variáveis devem Descrição: Exemplo: ser definida em todos os projectos sbit sfr extern sbit Mmc_Chip_Select em Chip pinos de usando a biblioteca Mmc_Chip_Select.Mmc_Init .Mmc_Read_Cid .Mmc_Fat_Read .Mmc_Fat_Append . RC2_bit MMC: seleção.Mmc_Read_Sector .Mmc_Fat_Assign . pinos selecionar em TRISC2_bit.Mmc_Read_Csd Rotinas para manipulação de arquivos: .Mmc_Fat_Rewrite .Mmc_Fat_Init .

Exemplo / / MMC módulo de conexões .Soluções de software e hardware para o mundo embutido .. ou 1 se ocorreu um erro. / / MMC módulo de conexões sbit sfr Mmc_Chip_Select em RC2_bit. dbuff char *). Mmc_Init precisa ser chamada antes de usar outras funções deste biblioteca. caso contrário retorna 0.CAPÍTULO 7 Bibliotecas mikroC PRO para PIC Mmc_Init Protótipo unsigned char Mmc_Init (). .Se o cartão SD / MMC foi detectado e inicializado com sucesso Retorna .Mmc_Chip_Select: Chip Selecionar linha . Requer Biblioteca precisa ser inicializado. dados). Exemplo = erro Mmc_Read_Sector (sector. veja Mmc_Init. 370 Mikroelektronika . Retorna Retorna 0 se ler era bem sucedida.Direção do pino de Chip Select: Mmc_Chip_Select_Direct ion devem ser definidas antes de utilizar esta função. = erro Mmc_Init (). / / linha de inicialização com o CS em RC2_bit Mmc_Read_Sector Protótipo unsigned char Mmc_Read_Sector (unsigned long sector.0 . Descrição Ler dados s ão ar mazenados na matriz de dados. A função retorna 0 se ler foi bem sucedida. ou 1 se ocorreu um erro. sfr sbit Mmc_Chip_Select_Direction em TRISC2_bit. As variáveis globais: Requer . Função lê um setor (512 bytes) a partir do cartão MMC no endereço sector sector. SPI1_Init ().Caso contrário Inicializa hardwar e de comuni c aç ã o SPI.1 .. A função retorna 1 se MMC é Descrição presentes e com sucesso inicializado.

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas

Mmc_Write_Sector
Protótipo unsigned char Mmc_Write_Sector (unsigned long sector, char * Dbuff);

Retorna Retorna 0 se escrever bem-sucedida; retorna 1 se houve erro no envio
comando de escrita; retorna 2 se houve um erro na escrita.
Função grava 512 bytes de dados a MMC no endereç o sector sector.
Descrição A função retorna 0 se gravação foi bem sucedida, ou 1 se houver um erro no
envio
comando de escrita, ou 2, se houve um erro na escrita.
Requer Biblioteca precisa ser inicializado, veja Mmc_Init.

Exemplo erro: = Mmc_Write_Sector (sector, dados);

Mmc_Read_Cid
Protótipo unsigned char Mmc_Read_Cid (char data_for_registers *);

Retorna Retorna 0 se ler foi bem sucedida, ou 1 se ocorreu um erro.

Descrição Função lê registo CID e retorna 16 bytes de conteúdo em
data_for_registers.

Requer Biblioteca precisa ser inicializado, veja Mmc_Init.
Exemplo = erro Mmc_Read_Cid (dados);

Mmc_Read_Csd
Protótipo unsigned char Mmc_Read_Csd (char data_for_registers *);

Retorna Retorna 0 se ler foi bem sucedida, ou 1 se ocorreu um erro.

Descrição Função lê registrar CSD e retorna 16 bytes de conteúdo em
data_for_registers.

Requer Biblioteca precisa ser inicializado, veja Mmc_Init.

Exemplo = erro Mmc_Read_Csd (dados);

Mikroelektronika - Soluções de software e hardware para o mundo embutido 371

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

Mmc_Fat_Init
Protótipo unsigned short Mmc_Fat_Init ();

- 0 - Se o cartão SD / MMC foi detectado e inicializado com sucesso
Retorna - 1 - Se o setor de inicialização FAT16 não foi encontrado
- 255 - Se o cartão SD / MMC não foi detectada

Inicializa cartão SD / MMC, lê SD / MMC setor de inicialização FAT16 e extratos
Descrição
necess á-
dados necessárias necessários para a biblioteca.
Nota: Cartão SD / MMC tem de ser formatado para FAT16 sistema de
As variáveis globais:
arquivos.
- Mmc_Chip_Select: Chip Selecionar linha
Requer - Direção do pino de Chip Select: Mmc_Chip_Select_Direct ion

devem ser definidas antes de utilizar esta função.

O módul o de hardwar e adequado SPI deve ser previamente inicializada. Veja o
SPI1_Init, rotinas SPI1_Init_Advanced.

/ / MMC módulo de conexões
sbit sfr Mmc_Chip_Select em RC2_bit;
sbit sfr Mmc_Chip_Select_Direction em TRISC2_bit;
/ / Módulo MMC conexões

/ / Inicializar SPI1 módulo e ponteiro conjunto (s) para SPI1 funções
SPI1_Init_Advanced (MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE,
Exemplo
CLK_IDLE_LOW, LOW_2_HIGH);

/ / Use fat16 formatação rápida, em vez de rotina init se uma formatação
é necessário
se (! Mmc_Fat_Init ()) {
/ / Reinicializa SPI1 a uma velocidade maior
SPI1_Init_Advanced (MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE,
CLK_IDLE_LOW, LOW_2_HIGH);
...
}

372 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas

Mmc_Fat_QuickFormat
Protótipo unsigned char Mmc_Fat_QuickFormat (char * Mmc_fat_label);

- 0 - Se o cartão SD / MMC foi detectado e inicializado com sucesso
Retorna - 1 - Se o formato FAT16 foi unseccessful
- 255 - Se o cartão SD / MMC não foi detectada

Formatos para FAT16 e inicializa cartão SD / MMC.

Parâmetros:

- mmc_fat_label: rótulo de volume (11 caracteres). Se menos de 11 ca-
Descrição tros são forneci d os , o rótulo será preenc hi d o com espaç os . Se a string null é
passad o
volume não será identificado

Nota: Esta rotina pode ser utilizad o em substitu ição ou em conjunto com

rou-Mmc _F at_Init
tine.

Nota: Se o cartão SD / MMC já contém um setor de inicialização válido, ela
Requer A hardware apropriado módulo SPI deve ser previamente inicializada.
permanecerá
/tabelas
/ Inicializar SPI1 módulo
inalter adas (excetoe ponteiro
o campoconjunto (s) de
de rótulo para SPI1 funções
volume) e apenas FAT e raiz será
SPI1_Init_Advanced
apagados. Além disso, (MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE,
o rótulo de novo volume será definido.
CLK_IDLE_LOW, LOW_2_HIGH);

/ / Formato e inicializar MMC / SD c artão e MMC_FAT16 biblio teca glob -
Exemplo als
se (! Mmc_Fat_QuickFormat (& mmc_fat_label)) {

/ / Reinicializar o módulo SPI a uma velocidade maior (principal alteração
prescaler).
SPI1_Init_Advanced (MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE,
CLK_IDLE_LOW, LOW_2_HIGH);
...
}

Mikroelektronika - Soluções de software e hardware para o mundo embutido 373

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

Mmc_Fat_Assign
Protótipo unsigned short Mmc_Fat_Assign (char * Nome do arquivo, char file_cre_attr);

- 1 - Se o arquivo já existe ou o arquivo não existe, mas novo arquivo é criado.
Retorna
- 0 - Se arquivo não existe e nenhum arquivo novo é criado.
Atribui arquivo para operaç ões de arquivo (ler, escrev er , apagar ...). Todos os
teatros arquivo subseqüe nte-
ções será aplicado sobre o arquivo designado.

Parâmetros:
- filename: nome do arquivo que deve ser atribuído para operaç ões de ar quivo. O nome
do arquivo
devem estar em formato DOS 8.3 (Nome_do_ar quiv o.ex tensão). O nome do arquivo e
extensão
será automatic am ente preenc hi do com espaços pela bibliotec a, se tiverem menos
de compri mento
necessária ("mikro.tx", ou seja - ". mikro tx">), assim o usuário não faz tem que tomar
cuidado com isso.
Descrição
O nome do arquivo e extensão são maiúsculas e minúsculas. A biblioteca irá convertê-los
para
caso apropriado automaticamente, assim que o usuário não tem que tomar cuidado com
isso. Além disso, em
Para manter a compatibilidade com a primeira versão do presente biblioteca, nomes de
Bit podem
arquivo Másca Descrição
0 ra
0x01 como string em maiúsculas Leia
ser introduzida de 11apenas
bytes de comprimento, com
nenhum
1 ponto
0x02 caráter Oculto
entre2o nome0x04
do arquivo e extensão (ie "MIKROELETXT" Sistema-> MIKROELE.TXT). Neste
caso 3 últimos caracteres da string são considerados arquivos extensão.
3 0x08 Volume Label
- file_cre_attr:
4 0x10 bandeiras e criação do arquivo attributs. Cada bit corresponde
Subdiretório
5 0x20 Arquivo
a 6 0x40 Dispositivo (uso interno somente, nunca encontrado
atribuíveis arquivo apropriado:
Arquivono bandeir
disco) a criação. Se o arquiv o não existe e este
7 0x80
sinalizador estiver defini do,
novo arquivo com nome especificado será criado.

Requer MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo.
Veja
Mmc_Fat_Init.
/ / Cria arquivo com atribuíveis arquivo se ele já não existe
Exemplo
Mmc_Fat_Assign ('MIKROELE.TXT, 0xA0);

Nota: nomes de arquivo longos (LFN) não são suportados.
374 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas

Mmc_Fat_Reset
Protótipo vazio Mmc_Fat_Reset (unsigned long * Tamanho);

Retorna Nada.

Procedi m ento redefi ne o ponteir o do arquivo (move para o início do arquiv o) do
Descrição
atribuído
arquivo, assim que o arquivo possa ser lido.
Requer Parâmetro tamanho
O arquivo deve lojas o tamanho
ser atribuído, consultedo arquivo atribuído, em bytes.
Mmc_Fat_Assign.
Exemplo Mmc_Fat_Reset (tamanho);

Mmc_Fat_Rewrite
Protótipo vazio Mmc_Fat_Rewrite ();

Retorna Nada.

Descrição Procedi m ento redefi ne o pontei r o do arquiv o e limpa o atribuído arquiv o de dados
para que novos
Requer pode ser escrito
O arquivo no atribuído,
deve ser arquivo. consulte Mmc_Fat_Assign.

Exemplo Mmc_Fat_Rewrite;

Mmc_Fat_Append
Protótipo vazio Mmc_Fat_Append ();

Retorna Nada.

Descrição O processo de mover o ponteiro do arquivo para o final de o arquivo atribuídos,
de modo que
Requer os dados podem
O arquivo seratribuído,
deve ser acrescentados aoMmc_Fat_Assign.
consulte arquivo.

Exemplo Mmc_Fat_Append;

Mikroelektronika - Soluções de software e hardware para o mundo embutido 375

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

Mmc_Fat_Read
Protótipo vazio Mmc_Fat_Read (unsigned short * Bdata);

Retorna Nada.
Process o lê o byte no qual o ponteir o aponta para o arquiv o e armaz ena dados em
Descrição dados de parâmetro. O ponteiro do arquivo aumenta automaticamente a cada
chamada de
Mmc_Fat_Read.
O arquiv o deve ser atribuíd o, consulte Mmc _F at_As si gn. Além disso, o ponteir o
Requer
do arquiv o deve ser ini-
Exemplo Mmc_Fat_Reset(mydata);
Mmc_Fat_Read ver; tialized.

Mmc_Fat_Delete
Protótipo vazio Mmc_Fat_Delete ();

Retorna Nada.
Descrição Exclui atualmente atribuídos arquivo do cartão MMC / SD.
MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo.
Requer Veja
Mmc_Fat_Init.
O
/ arquivo deveo ser
/ Deletar atribuído
arquivo anteriormente. Veja Mmc_Fat_Assign.
atual
Exemplo
Mmc_Fat_Delete ();

Mmc_Fat_Write
Protótipo vazio Mmc_Fat_Write (char * FData, não assinado data_len);

Retorna Nada.
Procedi mento escreve um pedaç o de bytes (FData) para o arquivo atualmente
Descrição
atribuído, no
posição do ponteiro de arquivo.
O arquiv o deve ser atribuíd o, consulte Mmc _F at_As si gn. Além disso, o ponteir o
Requer
do arquiv o deve ser ini-
tialized; ver Mmc_Fat_Append
Mmc_Fat_Write (txt, 255); ou Mmc_Fat_Rewrite.
Exemplo
Mmc_Fat_Write ('Olá mundo', 255);

376 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas

Mmc_Fat_Set_File_Date
vazio Mmc_Fat_Set_File_Date (unsigned int ano, unsigned short
Protótipo mês, unsigned short di a, unsign ed short horas, un signed sh ort
minutos, unsigned short segundos);
Retorna Nada.
Grava timestamp sistema para um arquivo. Use essa rotina antes de cada
Descrição
gravar o arquivo;
Caso contrário,
A arquiv o arquivo
o deve ser será
atribuído, anexado
consulte um timestamp
Mmc_F at_A ssi gn. desconhecido.
Além disso, o ponteir o do
Requer
arquiv o deve ser ini-
Mmc_Fat_Reset
/ / 01 de abrilver; detialized.
2005, 18:07:00
Exemplo
Mmc_Fat_Set_File_Date (2005, 4, 1, 18, 7, 0);

Mmc_Fat_Get_File_Date
vazio Mmc_Fat_Get_File_Date (unsigned int * Ano, unsigned short * Mês,
Protótipo
unsigned short * Dia, unsigned short * horas, unsigned short * Min);
Retorna Nada.
Recuper a a data ea hora para o arquiv o selecionad o. Segund os não estão sendo
Descrição
recuperado, uma vez que são escritas em incrementos de 2 seg.
Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.
/ / Obtém Data / hora do arquivo
não assinado anos;
char dat, MNTH, horas, minutos;
Exemplo
...
nome_arquivo = "MYFILEABTXT";
Mmc_Fat_Assign (nome_arquivo);
Mmc_Fat_Get_File_Date (tvh, MNTH, dat, horas, minutos);

Mmc_Fat_Get_File_Size
Protótipo unsigned long Mmc_Fat_Get_File_Size ();

Retorna Esta função retorna o tamanho do arquivo ativo (em bytes).
Descrição Recupera o tamanho de arquivo atualmente selecionado.
Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.
/ / Obtém Data / hora do arquivo
não assinado anos;
char dat, MNTH, horas, minutos;
Exemplo
...
file_name = "MYFILEXXTXT";
Mmc_Fat_Assign (nome_arquivo);
mmc_size = Mmc_Fat_Get_File_Size;

Mikroelektronika - Soluções de software e hardware para o mundo embutido 377

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

Mmc_Fat_Get_Swap_File
unsigned long Mmc_Fat_Get_Swap_File (unsigned long * Sectors_cnt char
Protótipo
nome do arquivo, char file_attr);
- Númer o do setor de partida para o arquiv o de swap recém- cri ado, se não foi o
Retorna suficiente
espaço livre na Cartão SD / MMC para criar arquivos de tamanho necessário.
0 - função
-Esta De outra forma. para criar um arquiv o de swap de pré-nom e e tamanho do
é usada
MMC / SD. Se um arquivo com o nome especificado já existe na mídia, pesquisa
consec utiv os para setor es irão ignorar setor es ocupados por esse arquiv o.
Portanto, é
recome nda-s e apagar o arquiv o como se ele existe antes de chamar essa função.
Se não for
apagada e ainda há bastante espaç o para novo arquivo de permuta, esta função irá
apagar
depois alocar espaço de memória novo para novo arquivo swap.

O objetivo do arquivo de swap é fazer com que a leitura ea escrita para a mídia SD / MMC

como
Descrição
rápido possível, usando o Mmc_Read_Sector () e Mmc_Write_Sector ()
funções diretamente, sem que possa causar danos ao sistema FAT. Trocar arquivos
podem ser
considerado como uma "janela" na mídia, onde o usuário pode livremente escrever / ler os
dados.
É objetiv o principal da bibliotec a mikroC é ser usado para a aquisiç ão rápida de
dados , quando
a aquisição de tempo crítico tiver terminado, os dados podem ser re-escrita em um
"normal"
arquivo, e formatado da maneira mais adequada.

Parâmetros:

- sectors_cnt: número de setores consecutivos que o usuário quer que o arquivo

de swap para
ter.
- filename: nome do arquivo que deve ser atribuído para operações de arquivo.
O nome do arquivo
devem estar em formato DOS 8.3 (Nome_do_ar quiv o.ex tensão). O nome do arquivo e
extensão
será automaticamente preenchido com espaços pela biblioteca, se tiverem
menos de
compri m ento necess ári o (isto é, "mikro.tx " -> ". mikro tx"), para que o usuári o não
possua a tomar
378 cuidado -com
Mikroelektronika isso. O enome
Software do arquivo
Soluções e extensãopara
de hardware são Embedded
maiúsculas eWorld
minúsculas. A
biblioteca será con-
vert-los ao caso apropri ado automatic am ente, assim que o usuário não tem que
cuidar de

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas

- file_attr: bandeiras e criação do arquivo attributs. Cada bit corresponde a
apro-
comeu atribuíveis ficheiro:
Bit Másca Descrição
0 ra
0x01 Leia apenas
Descrição 1 0x02 Oculto
2 0x04 Sistema
3 0x08 Volume Label
4 0x10 Subdiretório
5 0x20 Arquivo
6 0x40 Dispositivo (uso interno somente, nunca encontrado no
7 0x80 disco) Não utilizado
Nota: nomes de arquivo longos (LFN) não são suportados.

Requer MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo.
Veja
Mmc_Fat_Init.
//-------------- Tenta criar um arquivo de swap, cujo tamanho será no
pelo menos 100 setores.
/ / Se for bem sucedido, ele envia o n º do setor de início mais de UART
vazio M_Create_Swap_File () {
size = Mmc_Fat_Get_Swap_File (100);
Exemplo se (Tamanho <> 0) {
UART_Write (0xAA);
UART_Write (Lo (tamanho));
UART_Write (Hi (tamanho));
UART_Write (Superior (tamanho));
UART_Write (Máxima (tamanho));
UART_Write (0xAA);
}
}

Mikroelektronika - Soluções de software e hardware para o mundo embutido 379

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca

O exemplo a seguir demonstra MMC teste biblioteca. Ao piscar, insira um
Cartão SD / MMC para o módulo, quando deve receber a "Init-OK" mensagem.
Depois, você pode experimentar com MMC ler e escrever funções e observar o
resultados através do Terminal USART.

/ / MMC módulo de conexões
sbit Mmc_Chip_Select em RC2_bit;
sbit Mmc_Chip_Select_Direction em TRISC2_bit;
/ / Eof módulo de conexões MMC

/ / Variáveis para rotinas MMC
unsigned char SectorData [512], / / Buffer para o setor MMC leitura / escrita
unsigned char data_for_registers [16] / / buffer para CID e registra CSD

/ / UART1 es crever u m texto e nova li nha (ali mentação 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);
}

/ / Byte exibição em hexadecimal
vazio PrintHex (unsigned char i) {
unsigned char oi, eis;

oi = I & 0xF0; / / Nibble alto
oi => Oi> 4;
oi Oi + = '0 ';
se (Oi> '9 ') oi oi = 7;
eis = (I & 0x0F) + '0 '; / / Nibble baixo
se (Lo> '9 ') = lo lo 7;

UART1_Write (oi);
UART1_Write (eis);
}

vazio main () {

const char FILL_CHAR 'm';
unsigned int i, SectorNo;
char mmc_error;
bit data_ok;

ADCON1 | = 0x0F; / / Configu rar um p inos com o digita l
CMCON | = 7; / / Desligue comparadores

/ / Inicializar UART1 módulo

380 Mikroelektronika - Softwares e soluções de hardware para Embedded World

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas
UART1_Init (19200);
Delay_ms (10);

UART1_Write_Line ("PIC-Started"); / relatório da CPI presentes

/ / Inicializar módulo SPI1
SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE,
_SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);

/ / Inicializar um cartão MMC
mmc_error Mmc_Init = ();
if (mmc_error == 0)
UART1_Write_Line (MMC Init-OK "); / / Se o MMC apresentar relatório
mais
UART1_Write_Line (MMC Init erro "); / / Se o relatório de erros

/ / Preencha buffer MMC com mesmos personagens
for (i = 0; i <= 511; i + +)
SectorData [i] = FILL_CHAR;

/ / Escreve sector
mmc_error = Mmc_Write_Sector (SectorNo, SectorData);
if (mmc_error == 0)
UART1_Write_Line ("Escreva-OK");
mais / / Se houver erros .....
UART1_Write_Line ("Write Error");

/ / Leitura da CID registo
mmc_error = Mmc_Read_Cid (data_for_registers);
if (mmc_error == 0) {
UART1_Write_Text ("CID:");
for (i = 0; i <= 15; i + +)
PrintHex (data_for_registers [i]);
UART1_Write_Line ("");
}
mais
UART1_Write_Line (CID-erro ");

/ / Leitura da CSD registo
mmc_error = Mmc_Read_Csd (data_for_registers);
if (mmc_error == 0) {
UART1_Write_Text (CSD: ");
for (i = 0; i <= 15; i + +)
PrintHex (data_for_registers [i]);
UART1_Write_Line ("");
}
mais
UART1_Write_Line (CSD erro ");

/ / Ler sector

Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO 381

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

mmc_error = Mmc_Read_Sector (SectorNo, SectorData);
if (mmc_error == 0) {
UART1_Write_Line ("Read-OK");
/ / Os dados correspondem Chech
data_ok = 1;
for (i = 0; i <= 511; i + +) {
UART1_Write (SectorData [i]);
se (SectorData [i]! = FILL_CHAR) {
data_ok = 0;
break;
}
}
UART1_Write_Line ("");
se (Data_ok)
UART1_Write_Line ("Content-OK");
mais
UART1_Write_Line ("Erro de conteúdo");
}
mais / / Se houver erros .....
UART1_Write_Line ("Erro de leitura");

/ / Fim do teste do Sinal
UART1_Write_Line ("O Fim do teste.");
}

382 Mikroelektronika - Soluções de software e hardware para o mundo embutido

CAPÍTULO 7
mikroC PRO para PIC Bibliotecas

Conexão HW

interface MMC

MMC vista traseira

Mikroelektronika - Soluções de software e hardware para o mundo embutido 383

CAPÍTULO 7
Bibliotecas mikroC PRO para PIC

ONEWIRE BIBLIOTECA

A biblioteca OneWire fornece rotinas para comunicação através da OneWire Dallas
protocolo, por exemplo, com DS18x20 termômetro digital. OneWire é um Mestre / Escravo
protocolo, e toda a comunicação cabeamento necessário é um único fio. OneWire habilitado
dispositivos devem ter drivers de coletor aberto (com um único resistor de pull -up) sobre o
linha compartilhada de dados.

Escravo no ônibus OneWire pode até mesmo chegar a sua fonte de alimentação da linha de
dados.
Para datasheet detalhadas sobre o dispositivo esquemático ver.

Algumas características básicas deste protocolo são:

- sistema único mestre,
- baixo custo,
- baixas taxas de transferência (até 16 kbps),
- bastante longas distâncias (até 300 metros),
- pequenos pacotes de dados de transferência.

Cada dispositivo OneWire também tem um número de registo único de 64 bits (Dispositivo de 8
bits
tipo, 48-bit número de série e de 8 bits CRC), para vários escravos podem coexistir na
mesmo barramento.
Note que a freqüência do oscilador FOSC precisa ser pelo menos 4MHz, a fim de utilizar o
rotinas com os termômetros digitais Dallas.

Nota: Esta biblioteca implementa as atividades baseadas em tempo, assim interrupções
precisam ser dis-
abled quando utilizando a biblioteca OneWire.

Rotinas da biblioteca

- Ow_Reset
- Ow_Read
- Ow_Write

384 Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido

Requer Nada. Descrição Lê um byte de dados através do barramento OneWire. 5. Os parâmetr os da porta e especifi c ar o pino Requer localização Funciona com do oDS1820. Descrição Grava um byte de dados do argumento ( par).. tmp Ow_Read = (& PORTA. unsigned short tmp.Soluções de software e hardware para o mundo embutido 385 . Ow_Read Protótipo unsigned short Ow_Read (unsigned short * Porto. se estiver presente. através de ônibus OneWire. Requer Nada. 5). Exemplo Ow_Write (& PORTA. Retorna Nada. não assinado pino curto). Exemplo . Dallas DS1820 sensor de temperatura apenas. Para repor o DS1820 que está ligado ao pino RA5: Exemplo Ow_Reset (& PORTA.. Retorna Leitura de dados de um dispositivo externo sobre o barramento OneWire. não assinado Protótipo curto PAR). e 1 caso não esteja presente. CAPÍTULO 7 mikroC PRO para PIC Bibliotecas Ow_Reset Protótipo unsigned short Ow_Reset (unsigned short * Porto. unsigned short pinos). Ow_Write vazio Ow_Write (unsigned short * Por to. Descrição Problem as sinal de reset OneWi r e para DS1820. 0xCC). 5). Mikroelektronika . Retorna 0 DS1820. unsigned short pino.

MCU obtém a temperatura do sensor e imprime no mostrador. sbit LCD_D6 em RB2_bit. sbit LCD_D7_Direction em TRISB3_bit. sbit LCD_D4_Direction em TRISB0_bit. Faça Certifique-se de linha de tração PORTA.8. temp2write temp2write = ~ + 1. sbit LCD_EN_Direction em TRISB5_bit. sbit LCD_D6_Direction em TRISB2_bit.10. mais texto [0] = '0 '. / / Verificar se a temperatura é negativa se (Temp2write & 0x8000) { texto [0] = '-'.B5-up e para desligar os LEDs PORTA. / / Fim conexões do módulo do LCD / / Def