manual mikroc pro portugues[www.mecatronicadegaragem.blogspot.com]

706
www.mecatronicadegaragem.blogspot.com

Upload: aitczak

Post on 30-Jul-2015

4.773 views

Category:

Documents


368 download

TRANSCRIPT

Page 1: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

www.mecatronicadegaragem.blogspot.com

Page 2: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Obse

rvaç

ão do

le

itor

mikroC PRO para PIC

Abril de 2009.

nota Reader's

AVISO LEGAL: mikroC 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 mikroC 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"). mikroElektronika 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 mikroC PRO para PIC compilador, você concorda com os termos deste acordo. Somente uma pessoa pode usar a versão licenciada do mikroC PRO para PIC compilador de uma vez. Copyright © mikroElektronika 2003-2009.

Este manual cobre mikroC 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 [email protected] endereço. Por favor, inclua as informações seguintes em seu relatório:

- Seu sistema operacional - Versão do mikroC 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: [email protected]

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

www.mecatronicadegaragem.blogspot.com

Page 3: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdo

CAPÍTULO 1

CAPÍTULO 2

CAPÍTULO 3

CAPÍTULO 4

CAPÍTULO 5

CAPÍTULO 6

CAPÍTULO 7

Introdução mikroC PRO para PIC Meio Ambiente MikroICD (In Circuit Debugger) mikroC PRO para PIC Especificidades PIC Especificidades mikroC PRO para PIC Referência da Linguagem mikroC PRO para PIC Bibliotecas

www.mecatronicadegaragem.blogspot.com

Page 4: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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

www.mecatronicadegaragem.blogspot.com

Page 5: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 6: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 7: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

Mensagens de aviso do compilador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mensagens de erro vinculador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Visão geral do software Simulator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Janela de Inspeção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exibir janela RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cronômetro janela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Simulador de opções de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criar nova biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Biblioteca de várias versões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91 91 92 93 93 95 96 97 98 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

www.mecatronicadegaragem.blogspot.com

Page 8: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 rx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 SFR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

CAPÍTULO 6

Visão geral sobre elementos lexicais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

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

www.mecatronicadegaragem.blogspot.com

Page 9: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 10: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 11: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 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

www.mecatronicadegaragem.blogspot.com

Page 12: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 13: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 14: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Biblioteca CANSPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 das dependências externas de CANSPI Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 CANSPISetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 CANSPIGetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 CANSPIInitialize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 CANSPISetBaudRate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 CANSPISetMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 CANSPISetFilter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 CANSPIRead. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 CANSPIWrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Constantes CANSPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 CANSPI_OP_MODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 CANSPI_CONFIG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 CANSPI_TX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 CANSPI_RX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 CANSPI_MASK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 CANSPI_FILTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Compact Flash Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Cf_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Cf_Detect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Cf_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Cf_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Cf_Read_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Cf_Read_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Cf_Write_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Cf_Write_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Cf_Read_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Cf_Write_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Cf_Fat_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Cf_Fat_QuickFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Cf_Fat_Assign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Cf_Fat_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Cf_Fat_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Cf_Fat_Rewrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Cf_Fat_Append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Cf_Fat_Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Cf_Fat_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

XIV

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

www.mecatronicadegaragem.blogspot.com

Page 15: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Cf_Fat_Set_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Cf_Fat_Get_Swap_File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Biblioteca EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 EEPROM_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 EEPROM_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

Ethernet PIC18FxxJ60 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 família PIC18FxxJ60 do microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Ethernet_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Ethernet_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Ethernet_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Ethernet_doPacket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Ethernet_putByte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Ethernet_putBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Ethernet_putConstBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Ethernet_putString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Ethernet_putConstString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Ethernet_getByte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Ethernet_getBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Ethernet_UserTCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Ethernet_UserUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Ethernet_getlpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Ethernet_getGwlpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Ethernet_getDnslpAddress ();. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Ethernet_getlpMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Ethernet_confNetwork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Ethernet_arpResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Ethernet_sendUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Ethernet_dnsResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Ethernet_initDHCL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Ethernet_doDHCPLeaseTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Ethernet_renewDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

Biblioteca Flash Memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 FLASH_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 FLASH_Read_N_Bytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 FLASH_Write. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 FLASH_Erase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

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

XV

www.mecatronicadegaragem.blogspot.com

Page 16: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

FLASH_Erase_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

LCD Gráfico Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 As dependências externas do LCD Gráfico Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . 326 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Glcd_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Glcd_Set_Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Glcd_Set_X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Glcd_Set_Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Glcd_Read_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Glcd_Write_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Glcd_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Glcd_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Glcd_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Glcd_V_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Glcd_H_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Glcd_Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Glcd_Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Glcd_Circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Glcd_Set_Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Glcd_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Glcd_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Glcd_Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

I ˛ Biblioteca C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 I2C1_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 I2C1_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Repeated_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Is_Idle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Rd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 I2C1_Wr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 I2C1_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

Biblioteca do teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 As dependências externas do teclado Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Keypad_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Keypad_Key_Press. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Keypad_Key_Click. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

Biblioteca de LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

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

www.mecatronicadegaragem.blogspot.com

Page 17: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

As dependências externas do LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Lcd_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Lcd_Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Lcd_Out_CP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Lcd_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Lcd_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Lcd_Cmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Disponível Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 HW conexão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

Manchester Biblioteca de código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 As dependências externas do Manchester Code Library. . . . . . . . . . . . . . . . . . . . . 359 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Man_Receive_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Man_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Man_Send_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Man_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Man_Synchro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Man_Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Exemplo de conexão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

Multi Media Library Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Secure Digital Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 As dependências externas do MMC Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Mmc_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Mmc_Read_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Mmc_Write_Sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Mmc_Read_Cid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Mmc_Read_Csd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Mmc_Fat_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Mmc_Fat_QuickFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Mmc_Fat_Assign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Mmc_Fat_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Mmc_Fat_Rewrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Mmc_Fat_Append. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Mmc_Fat_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Mmc_Fat_Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Mmc_Fat_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Mmc_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Mmc_Fat_Get_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Mmc_Fat_Get_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Mmc_Fat_Get_Swap_File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

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

XVII

www.mecatronicadegaragem.blogspot.com

Page 18: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

Biblioteca OneWire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Ow_Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 Ow_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 Ow_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

Porto Biblioteca Expander. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 As dependências externas do Porto Expander Biblioteca. . . . . . . . . . . . . . . . . . . . . . . 389 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Expander_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Expander_Read_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Expander_Write_Byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Expander_Read_PortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Expander_Read_PortB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Expander_Read_PortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Expander_Write_PortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Expander_Write_PortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Expander_Write_PortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Expander_Set_DirectionPortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Expander_Set_DirectionPortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Expander_Set_DirectionPortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Expander_Set_PullUpsPortA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Expander_Set_PullUpsPortB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Expander_Set_PullUpsPortAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

PS / 2 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 As dependências externas do PS / 2 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Ps2_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Ps2_Key_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Teclas de função. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Biblioteca PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 PWM1_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 PWM1_Set_Duty. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 PWM1_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 PWM1_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

XVIII

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

www.mecatronicadegaragem.blogspot.com

Page 19: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

RS-485 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 As dependências externas da RS-485 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 RS485Master_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 RS485Master_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 RS485Master_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 RS485slave_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 RS485slave_Receive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 RS485slave_Send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Mensagem cálculos formato e CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

Software I ˛ C Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 das dependências externas de Soft_I2C Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Soft_I2C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Soft_I2C_Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Soft_I2C_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Soft_I2C_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Soft_I2C_Stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Soft_I2C_Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

Software Biblioteca SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 As dependências externas de software SPI Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . 428 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Soft_Spi_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Soft_Spi_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Soft_SPI_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Software Library UART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Soft_UART_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Soft_UART_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Soft_UART_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Soft_Uart_Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

Biblioteca de som. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Sound_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Sound_Play. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

Biblioteca SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

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

XIX

www.mecatronicadegaragem.blogspot.com

Page 20: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Spi_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Spi1_Init_Advanced. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Spi1_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Spi1_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 SPI_Set_Active. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

Biblioteca SPI Ethernet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 As dependências externas do SPI Ethernet Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . 450 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 PIC16 e PIC18:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Só PIC18: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Spi_Ethernet_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Spi_Ethernet_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Spi_Ethernet_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Spi_Ethernet_doPacket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Spi_Ethernet_putByte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Spi_Ethernet_putBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Spi_Ethernet_putConstBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Spi_Ethernet_putString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Spi_Ethernet_putConstString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Spi_Ethernet_getByte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Spi_Ethernet_getBytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 Spi_Ethernet_UserTCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Spi_Ethernet_UserUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 SPI_Ethernet_getIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 SPI_Ethernet_getGwIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 SPI_Ethernet_getDnsIpAddress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 SPI_Ethernet_getIpMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 SPI_Ethernet_confNetwork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 SPI_Ethernet_arpResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 SPI_Ethernet_sendUDP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 SPI_Ethernet_dnsResolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 SPI_Ethernet_initDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 SPI_Ethernet_doDHCPLeaseTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 SPI_Ethernet_renewDHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

Biblioteca SPI LCD gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 As dependências externas do SPI LCD Gráfico Biblioteca. . . . . . . . . . . . . . . . . . . . . 479 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Spi_Glcd_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 SPI_Glcd_Set_Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

XX

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

www.mecatronicadegaragem.blogspot.com

Page 21: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

SPI_Glcd_Set_Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 SPI_Glcd_Set_X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Spi_Glcd_Read_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 SPI_Glcd_Write_Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 SPI_Glcd_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 SPI_Glcd_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 SPI_Glcd_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 SPI_Glcd_V_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 SPI_Glcd_H_Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 SPI_Glcd_Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 SPI_Glcd_Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 SPI_Glcd_Circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 SPI_Glcd_Set_Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Spi_Glcd_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 Spi_Glcd_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Spi_Glcd_Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

Biblioteca SPI LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 As dependências externas do SPI LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Spi_Lcd_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Spi_Lcd_Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Spi_Lcd_Out_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Spi_Lcd_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Spi_Lcd_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Spi_Lcd_Cmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Disponível Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Conexão HW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

LCD8 SPI (interface de 8 bits) Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 As dependências externas do SPI LCD Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Spi_Lcd8_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Spi_Lcd8_Out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Spi_Lcd8_Out_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Spi_Lcd8_Chr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Spi_Lcd8_Chr_Cp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Spi_Lcd8_Cmd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Disponível Comandos LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

Biblioteca SPI Gráfica T6963C LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 As dependências externas do SPI T6963C LCD Gráfico Biblioteca. . . . . . . . . . . . . . 507

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

XXI

www.mecatronicadegaragem.blogspot.com

Page 22: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Spi_T6963C_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Spi_T6963C_WriteData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 pi_T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Spi_T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_WaitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Spi_T6963C_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Spi_T6963C_write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Spi_T6963C_line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Spi_T6963C_rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Spi_T6963C_box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Spi_T6963C_circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Spi_T6963C_image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Spi_T6963C_Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Spi_T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_clearBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Spi_T6963C_DisplayGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Spi_T6963C_displayTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Spi_T6963C_setGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Spi_T6963C_setTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Spi_T6963C_panelFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Spi_T6963C_GrFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Spi_T6963C_txtFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Spi_T6963C_cursor_height. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Spi_T6963C_graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Spi_T6963C_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Spi_T6963C_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Spi_T6963C_cursor_blink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528

T6963C Biblioteca LCD gráfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 As dependências externas da T6963C Biblioteca LCD gráfico. . . . . . . . . . . . . . . . . 530 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 T6963C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 T6963C_writeData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_waitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

XXII

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

www.mecatronicadegaragem.blogspot.com

Page 23: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

T6963C_write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 T6963C_write_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 T6963C_line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 T6963C_rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 T6963C_box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 T6963C_circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 T6963C_image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 T6963C_sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 T6963C_clearBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 T6963C_displayGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 T6963C_displayTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 T6963C_setGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 T6963C_SetTxtPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 T6963C_PanelFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 T6963C_grFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 T6963C_txtFill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 T6963C_cursor_height. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 T6963C_Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 T6963C_text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 T6963C_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 T6963C_Cursor_Blink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

Biblioteca UART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Uart_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Uart_Data_Ready. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 UART1_Tx_Idle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 UART1_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 UART1_Read_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 UART1_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 UART1_Write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 UART_Set_Active. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

USB HID Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Arquivo descritor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Hid_Enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Hid_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 id_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560

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

XXIII

www.mecatronicadegaragem.blogspot.com

Page 24: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

Hid_Disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563

Padrão ANSI C bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 ANSI C Library Ctype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 isalnum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isalpha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 iscntrl. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isdigit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isgraph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 islower. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 ispunct. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 isspace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 isupper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 isxdigit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 toupper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 tolower. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 ANSI C biblioteca matemática. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 acos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 asin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 atan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 atan2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 ceil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 cos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 cosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 eval_poly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 exp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 fabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 chão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 frexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 ldexp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 log10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 modf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 pow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 pecado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 sinh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 sqrt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 bronzeado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 tanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Biblioteca C ANSI stdlib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

XXIV

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

www.mecatronicadegaragem.blogspot.com

Page 25: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mikroC PRO para PIC

Tabela de Conteúdos

abs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 atof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 atoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 atol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 div. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 ldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 uldiv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 laboratórios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 máx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 min. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 rand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 srand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 xtoi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Estruturas Div. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 ANSI C Biblioteca String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Funções da Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 memchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memcmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memcpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memmove. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 memset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 strcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strcmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strcpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strlen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 strncat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 strncpy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 strspn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 trncmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 strstr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 strcspn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 strpbrk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 strrchr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579

Bibliotecas Diversos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Biblioteca de botão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581

Biblioteca de conversões. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 ByteToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 ShortToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 WordToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 IntToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

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

XXV

www.mecatronicadegaragem.blogspot.com

Page 26: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tabela de Conteúdos

mikroC PRO para PIC

LongintToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 LongWordToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 FloatToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Dec2Bcd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Bcd2Dec16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Dec2Bcd16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588

Biblioteca PrintOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 PrintOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

Biblioteca setjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Setjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Longjmp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

Biblioteca de Sprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Funções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 sprintf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 sprintl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 sprinti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600

Time Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Time_dateToEpoch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Time_epochToDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Time_dateDiff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

Biblioteca Trigonometria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 sinE3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 cosE3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

XXVI

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

www.mecatronicadegaragem.blogspot.com

Page 27: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO

1

Introdução ao mikroC PRO para PIC

A mikroC 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, sem compromis- ção de desempenho ou controle.

1

www.mecatronicadegaragem.blogspot.com

Page 28: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 29: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

2 Mikroelektronika - Soluções de software e hardware para o mundo embutidowww.mecatronicadegaragem.blogspot.com

Page 30: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 1

mikroC PRO para PIC Introdução

acompanhar a execução do programa no nível de hardware. fluxo de inspecionar o programa e depurar lógica executável com o software integrado Simulator. Obtenha relatórios detalhados e gráficos: mapa de memória RAM e ROM, as estatísticas de código, a montagem anúncio, chamando a árvore, e muito mais. mikroC PRO para PIC fornece inúmeros exemplos de expandir, desenvolver e utilizar como a construção de tijolos em seus projetos. Copie-as por completo, se acharem necessário- é por isso que Foram incluídos os com o compilador.

Por onde começar

No caso que você é um iniciante em programação de microcontroladores PIC, leia cuidado plenamente o PIC capítulo Específicos. Poderia dar-lhe algumas indicações úteis sobre PIC restrições, a portabilidade do código, e boas práticas de programação.

Se você é experiente em programação C, provavelmente você vai querer consultar mikroC PRO para PIC Especificidades primeiro. Por questões de idioma, você pode sempre se referem ao o global Language Reference. Uma lista completa de bibliotecas é incluído disponível em mikroC PRO PIC para Bibliotecas.

Se você não é muito experiente em programação C, não entre em pânico! mikroC PRO para PIC fornece inúmeros exemplos tornando mais fácil para você ir rapidamente. Nós sug rem que você primeiro consultar projetos e arquivos de origem e, em seguida iniciar a navegação na exemplos que você é o mais interessado em

Mikroelektronika - Softwares e soluçõe

www.mecatronicadegaragem.blogspot.com

Page 31: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

s de hardware para Embedded World 3

www.mecatronicadegaragem.blogspot.com

Page 32: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 1 Introdução mikroC PRO para PIC

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

4

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

www.mecatronicadegaragem.blogspot.com

Page 33: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 1

mikroC PRO para PIC Introdução

GARANTIA LIMITADA

Respeitosamente excetuando os Redistribuíveis, que são fornecidos "Como estão", sem guerra rantia de nenhum tipo, garante que o Software mikroElektronika Associates, uma vez actuali- ed e usados corretamente, irá executar substancialmente de acordo com o acom- ção, documentação e software de mídia estará livre de defeitos de materiais e obra, por um período de 90 (noventa) dias a contar da data de recebimento. Qualquer implícita garantias de Software são limitadas a 90 (noventa) dias.

mikroElektronika Associates ' e seus fornecedores inteira responsabilidade, e seu exclusivo recurso deverá ser, no mikroElektronika Associates ' opção, (a) a devolução do preço pago, 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. Não devolva o produto até se ter "Sócios" Mikroelektronika PRIMEIRA e obteve um RETURN Número da autorização. Este Garantia limitada é nula se a falha do Software resultou de um acidente, abuso ou má utilização. Qualquer substituição de Software será garantido para o resto do período da garantia original ou 30 (trinta) dias, o que for maior.

AO MÁXIMO PERMITIDO POR LEI, Mikroelektronika ASSOCIADOS E SEUS FORNECEDORES REJEITAM TODAS OUTRAS GARANTIAS E CONDIÇÕES, EXPRESSA OU IMPLÍCITA, INCLUÍDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA, E NÃO-VIOLAÇÃO, NO QUE DIZ RESPEITO AO SOFTWARE E PRESTAÇÃO OU FALTA DE PRESTAÇÃO DE SERVIÇOS DE APOIO.

EM HIPÓTESE ALGUMA A Mikroelektronika ASSOCIADOS OU SEUS FORNECEDORES SER RESPONSÁVEL POR QUAISQUER DANOS, INCIDENTAIS OU CONSEQÜENCIAIS DANOS (INCLUINDO, SEM LIMITAÇÃO, DANOS POR PERDA DE LUCROS E INFORMAÇÃO DE NEGÓCIOS, 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, MESMO ASSOCIATES Mikroelektronika FOI AVISADO DA POSSIBILIDADE DE TAIS DANOS. EM QUALQUER CASO, ASSOCIATES Mikroelektronika ' TODA RESPONSABILIDADE EM QUALQUER PRESTAÇÃO DE LICENÇA SERÁ LIMITADA AO VALOR PAGO POR VOCÊ SOFTWARE FORNECIDO, entretanto, se você entrou A Associates Mikroelektronika CONTRATO DE SERVIÇOS DE APOIO, ASSOCIATES Mikroelektronika ' TODA A RESPONSABILIDADE SOBRE Serviços de apoio serão regidos pelos termos DESSA ACORDO.

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

www.mecatronicadegaragem.blogspot.com

Page 34: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, fabricado ou destinado ao uso ou revenda como on-line de equipamentos de controle em ambientes perigosos que exijam prova de falhas desempenho, tais como na 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 armas sistemas, em que a falha do Software possa levar diretamente à morte, ferimentos pessoais, ou danos físicos ou ambientais graves ("Atividades de Alto Risco"). mikroElektron- ika Associados e seus fornecedores se isentam especificamente qualquer guerra, expressas ou implícitas, rantia de adequação para Atividades de Alto Risco. 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 disposição desta declaração é considerada nula ou inexeqüível, o restante permanecerá válido e exeqüível de acordo com a sua termos. Se qualquer medida prevista é determinada como tendo falhado a sua finalidade essencial, todas as limitações de responsabilidade e exclusões dos danos previstos no GARANTIAS Limited- ty permanecerá em vigor. Esta afirmação lhe dá direitos legais específicos, você pode ter outros, que variam, de país para país. mikroElektronika Associates reserva todos os direitos não especificamente concedida nesta declaração. mikroElektronika Visegradska 1A, 11000 Belgrade, A Europa. Telefone: + 381 11 36 28 830 Fax: +381 11 36 28 831 Web: www.mikroe.com E-mail: [email protected]

6

www.mecatronicadegaragem.blogspot.com

Page 35: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 36: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 1

mikroC PRO para PIC Introdução

SUPORTE TÉCNICO

No caso de você encontrar qualquer problema, você é bem-vindo ao nosso fórum de suporte em www.mikroe.com/forum/. Aqui, você também pode encontrar informações úteis, dicas de hardware, prática e trechos de código. Seus comentários e sugestões sobre o futuro desenvolvi- mento do mikroC PRO para PIC são sempre apreciado - sinta-se livre para deixar uma nota ou dois na nossa lista de desejos.

Em nossa Base de Conhecimento www.mikroe.com/en/kb/ você pode encontrar as respostas a Fre- quentemente Perguntas e soluções para problemas conhecidos. Se você não consegue encontrar o solução para o problema na Base de Conhecimento em seguida, informar ao Posto de Apoio www.mikroe.com/en/support/. Desta forma, podemos gravar e rastrear bugs mais eficiente, o que é do nosso interesse mútuo. Nós respondemos a todos os relatórios de bugs e ques- ção de forma adequada, cada vez melhor o nosso suporte técnico.

Mikroelektronika - Soluções de software e hardware par

www.mecatronicadegaragem.blogspot.com

Page 37: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

a o mundo embutido 7

www.mecatronicadegaragem.blogspot.com

Page 38: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 1 Introdução mikroC PRO para PIC

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

8

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

www.mecatronicadegaragem.blogspot.com

Page 39: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, e adicione o comentário se achar necessário. Por favor, não modificar a linha de assunto.

Ao receber e verificar o seu pedido, nós enviaremos a chave de licença para o e-mail endereço especificado no formulário.

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

9

www.mecatronicadegaragem.blogspot.com

Page 40: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 - apenas iniciá-lo em qualquer lugar sua computador para ativar sua cópia do compilador e remover o limite de demonstração. Você não precisa reiniciar seu computador ou instalar qualquer componente adicional. Além disso, não há necessidade de executar o mikroC PRO para PIC no momento da ativação. Notas:

A chave de licença é válida até que você formatar o disco rígido. No caso de precisar de esteira do disco rígido, você deve solicitar uma nova chave de ativação. Por favor, mantenha o programa de ativação em um lugar seguro. Toda vez que você atualizar o compilador você deve começar este programa novamente para reativar a licença.

10

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

www.mecatronicadegaragem.blogspot.com

Page 41: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO

2

mikroC PRO para PIC Meio Ambiente

O mikroC PRO para PIC é um ambiente amigável e intuitivo.

11

www.mecatronicadegaragem.blogspot.com

Page 42: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Resumo IDE

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

12

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

www.mecatronicadegaragem.blogspot.com

Page 43: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

MENU PRINCIPAL OPÇÕES

As opções disponíveis do menu principal são:

Tópicos relacionados: Os atalhos de teclado

Meio Ambiente

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

13

www.mecatronicadegaragem.blogspot.com

Page 44: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Arquivo Descrição

Abra uma nova janela do editor.

Abra o arquivo de origem para edição ou arquivo de i i li ã Reabrir ficheiro utilizado recentemente.

Salve as alterações para o editor ativo.

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

Feche o arquivo fonte ativa.

Visualização de Impressão.

Sair IDE.

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

FILE OPÇÕES O menu File é o principal ponto de entrada para a manipulação com os arquivos de origem. Tópicos relacionados: Os atalhos de teclado, Arquivo Barra, Fonte Gestão de Ficheiros

14

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

www.mecatronicadegaragem.blogspot.com

Page 45: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

Opções do menu Editar

Editar

Meio Ambiente

Descrição Desfazer última alteração. Refazer a última alteração. Recortar o texto selecionado para o clipboard. Copiar o texto selecionado para o clipboard. Colar o texto da prancheta. Deletar texto selecionado. Selecione todo o texto no editor ativo. Localizar texto em editor ativo. Localizar próxima ocorrência de texto no editor ativo. Localizar a ocorrência anterior do texto no editor ativo. Substitua o texto no editor ativo. Localizar texto em arquivo corrente, em todos os arquivos abertos,

ou em arquivos da pasta desejada. Saltar para a linha desejada no editor ativo. Advanced Código opções do Editor

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

15

www.mecatronicadegaragem.blogspot.com

Page 46: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Avançado » Descrição

Código de comentário selecionados ou colocados com linha-

h h l Descomente código selecionado ou remover única linha

á i h h l Recuo código selecionado.

Outdent código selecionado.

Alterações selecionada caso de texto em i ú l Alterações selecionada caso o texto em iú l Alterações selecionada caso de texto para

titl

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC Pesquisar Texto Caixa de diálogo para procurar o documento para o texto especificado. A busca é por- formado na direção especificada. Se a string não for encontrada uma mensagem é exibida.

16

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

www.mecatronicadegaragem.blogspot.com

Page 47: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Localizar em arquivos

Caixa de diálogo para a busca de uma seqüência de texto no arquivo atual, todos os arquivos abertos, ou em arquivos em um disco.

A string a ser procurada é especificado no texto para encontrar campo. Se a pesquisa em diretórios opção é selecionado, os arquivos para busca estão especificados na máscara de arquivos e campos de Caminho.

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

www.mecatronicadegaragem.blogspot.com

Page 48: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

ido 17

www.mecatronicadegaragem.blogspot.com

Page 49: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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. opção de expressões regulares Ao marcar esta caixa, você será capaz de avançar em sua pesquisa, por meio de regular expressões. Tópicos relacionados: Os atalhos de teclado, Barra de Edição, Edição Avançada Barra de ferramentas

18

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

www.mecatronicadegaragem.blogspot.com

Page 50: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Arquivo Descrição

Mostrar barras de ferramentas / Hide.

Mostrar / Esconder as janelas de depuração.

Show / Hide Lista de rotina em editor ativo.

Show / Hide janela Project Settings.

Show / Hide Código do Windows Explorer.

Show / Hide janela Project Manager.

Show / Hide Library Manager.

Mostrar / ocultar janela de favoritos.

Show / Hide Erro janela Mensagens.

Mostrar / ocultar janela do Editor de Macro.

Mostrar a janela da Lista de Janelas.

CAPÍTULO 2

mikroC PRO para PIC

Menu Opções de visualização

Meio Ambiente

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

19

www.mecatronicadegaragem.blogspot.com

Page 51: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Abre uma nova janela do editor.

Abra o arquivo de origem para edição ou arquivo de imagem para i li ã

Salve as alterações para a janela ativa.

Salvar alterações em todas as janelas abertas.

Feche o editor atual.

Feche todas as editores.

Visualização de Impressão.

Ícone Descrição

Desfazer última alteração.

Refazer a última alteração.

Recortar o texto selecionado para o clipboard.

Copiar o texto selecionado para o clipboard.

Colar o texto da prancheta.

CAPÍTULO 2 Meio Ambiente

BARRAS Arquivo da Barra de Ferramentas Arquivo Toolbar é uma barra de ferramentas padrão, com as seguintes opções: Edit Toolbar Edit Toolbar é uma barra de ferramentas padrão, com as seguintes opções:

mikroC PRO para PIC

20

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

www.mecatronicadegaragem.blogspot.com

Page 52: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Comentar o código selecionado ou colocar comentário de linha única, se não h h l ã Descomente código selecionado ou remover o comentário de linha única, se houver

h l Selecione o texto de partida para acabar com delimitador delimitador.

Ir para acabar com delimitador.

Vá para a linha.

Recuo selecionados linhas de código.

Outdent selecionados linhas de código.

Gerar o código HTML apropriado para publicar código fonte de corrente em

Ícone Descrição

Localizar texto na atual editor.

Localizar a próxima ocorrência.

Encontrar ocorrência anterior.

Substitua texto.

Localizar texto em arquivos.

CAPÍTULO 2

mikroC PRO para PIC

Edição Avançada Barra

Advanced Edit Toolbar vem com as seguintes opções:

Localizar / Substituir Barra

Localizar / Substituir Toolbar é uma barra de ferramentas padrão, com as seguintes opções:

Meio Ambiente

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

21

www.mecatronicadegaragem.blogspot.com

Page 53: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Novo projeto

Projeto Open

Save Project

Fechar projeto atual.

Editar configurações do projeto.

Adicionar projecto existente ao projeto do grupo.

Remover projeto existente do grupo do projeto.

Add File To Project

Remover o arquivo de projeto

Ícone Descrição

Criar o projeto atual.

Construir todos os projetos abertos.

Construir e projeto de programa ativo.

Iniciar programador e carga arquivo HEX atual.

Abrir código assembly no editor.

Abra lisitng arquivo no editor.

Ver estatísticas para o projeto atual.

CAPÍTULO 2 Meio Ambiente

Projeto Barra Projeto Barra vem com as seguintes opções: Construir Toolbar Construir Toolbar vem com as seguintes opções:

mikroC PRO para PIC

22

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 54: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

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

Executar / Pausar depurador.

Parar depurador.

Step Into.

Passe por cima.

Saia.

Executar até o cursor.

Alternar ponto de interrupção.

breakpoints Toggle.

Limpar os pontos de interrupção.

Exibir janela de observação

Exibir janela cronômetro

CAPÍTULO 2

mikroC PRO para PIC

Depurador

Depurador Toolbar vem com as seguintes opções:

Estilos de Barra

Estilos da barra de ferramentas permite que você facilmente personalizar o seu espaço de trabalho.

Meio Ambiente

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

23

www.mecatronicadegaragem.blogspot.com

Page 55: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Executar Terminal USART

EEPROM

ASCII Gráfico

Sete ferramenta decodificador segmento.

menu Opções

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Barra de Ferramentas Barra de Ferramentas vem com seguintes opções padrão: A barra de ferramentas podem ser facilmente personalizados, adicionando novas ferramentas em Opções (F12) janela. Tópicos relacionados: Os atalhos de teclado, integrada Ferramentas, depurador do Windows

24

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

www.mecatronicadegaragem.blogspot.com

Page 56: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

PROJETO MENU OPÇÕES

Meio Ambiente

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

25

www.mecatronicadegaragem.blogspot.com

Page 57: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Projeto Descrição

Criar o projeto ativo.

Construir todos os projetos.

Construir e programa de projeto ativo.

Exibir Assembléia.

Editar caminhos de pesquisa.

Pasta do Projeto Limpeza

Adicionar arquivo ao projeto.

Remover arquivo de projeto.

Projetos de importação de versões anteriores do ik C Abra o Assistente de Novo projeto

Abrir projeto já existente.

Salvar atual projeto.

Editar as configurações do projeto

Abra grupo de projeto.

Fechar grupo de projeto.

Salve o arquivo de projeto ativo com o nome dif t Aberto recentemente utilizadas projeto.

Fechar projeto ativo.

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC Tópicos relacionados: Os atalhos de teclado, o Projeto Barra, criando novos Projeto, Projeto Manager, as configurações do projeto

26

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

www.mecatronicadegaragem.blogspot.com

Page 58: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Executar Descrição

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

Parar depurador.

Pausa Debugger.

Step Into.

Step Over.

Step Out.

Ir para interrupção em projeto atual.

Alternar ponto de interrupção.

Breakpoints.

Breakpoints Clear.

Mostrar / Esconder Janela de Inspeção

Show / Hide Window Cronómetro

Alternar entre Pascal fonte e desmon- assembléia.

CAPÍTULO 2

mikroC PRO para PIC

MENU OPÇÕES RUN

Tópicos relacionados: Os atalhos de teclado, barra de ferramentas Debug

Meio Ambiente

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

27

www.mecatronicadegaragem.blogspot.com

Page 59: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 ódi f b Executar Lcd caráter personalizado.

Execute o editor bitmap GLCD.

Executar HID Terminal.

Executar terminal de comunicação UDP.

Executar mikroBootloader.

Abra a janela Opções.

CAPÍTULO 2 Meio Ambiente

Menu Ferramentas Opções Tópicos relacionados: Os atalhos de teclado, Barra de Ferramentas

mikroC PRO para PIC

28

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

www.mecatronicadegaragem.blogspot.com

Page 60: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ajuda Descrição

Abrir arquivo de ajuda.

Open Document migração de código.

Verifique se a versão do compilador novo tá di í l mikroElektronika Open Forum de Suporte

em d d Abra mikroElektronika Página da Web em

um Informações sobre como se inscrever

Abra a janela Sobre.

CAPÍTULO 2

mikroC PRO para PIC

HELP OPÇÕES

Tópicos relacionados: Os atalhos de teclado

Meio Ambiente

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

29

www.mecatronicadegaragem.blogspot.com

Page 61: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ctrl + Shift + S Salvar tudo

Ctrl + V Colar

Ctrl + X Corte

Ctrl + Y Excluir linha inteira

Ctrl + Z Desfazer

Ctrl + Shift + Z Refazer

Editor Atalhos avançada

Ctrl + Espaço Código Assistente

Ctrl + Shift + S

Parâmetros de Assistente

Ctrl + D Encontrar declaração

Ctrl + E Pesquisa incremental

Ctrl + L Lista de rotina

Ctrl + G linha Goto

Ctrl + J Inserir Código Modelo

Ctrl + Shift +. Comentar Código

Ctrl + Shift +, Descomente Código

Ctrl + número marcador Goto

Ctrl + Shift + ú

marcador definido

Ctrl + Shift + I Recuo seleção

Ctrl + Shift + U Unindent selecção

TAB Recuo seleção

Shift + TAB seleção Unindent

Alt + Seleção Selecionar colunas

Ctrl + Alt + S l ã

Selecionar colunas

Ctrl + Alt + L Converter a seleção para minúsculas

Ctrl + Alt + U Converter a seleção para maiúsculas

Ctrl + Alt + T Converter em titlecase

IDE Atalhos

F1 Ajuda

Ctrl + N Nova Unidade

Ctrl + O Abrir

Ctrl + Shift + O

Projeto Open

Ctrl + Shift + N

Novo projeto

Ctrl + K Encerrar o projeto

Ctrl + F4 Fechar Unidade

Ctr + Shift + E

Edit Project

Ctrl + F9 Construir

Shift + F9 Build All

Ctrl + F11 Construir e programar

Shift + F4 Ver Breakpoints

Ctrl + Shift + F5

Limpar os pontos de i t ã F11 Start me Programador

Ctrl + Shift + F1

Gerente de Projetos

F12 Opções

Alt + X Fechar mikroC PRO para PIC

Editor Atalhos Basic

F3 Localizar, Localizar próxima

Shift + F3 Procurar o Anterior

Alt + F3 Pesquisa Grep, em arquivos

Ctrl + A Selecionar Tudo

Ctrl + C Cópia

Ctrl + F Pesquisar

Ctrl + R Substituir

Ctrl + P Imprimir

Ctrl + S Salvar unidade

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.

30

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

www.mecatronicadegaragem.blogspot.com

Page 62: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 + A Show Advanced Breakpoints

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

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

31

www.mecatronicadegaragem.blogspot.com

Page 63: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

IDE GERAL A mikroC PRO para PIC é um ambiente amigável e intuitivo:

O editor de código reguláveis Sintaxe Destacar, código dobrando, Código Adjunto, Assistente parâmetros, Auto Corrigir erros de digitação comuns e Tem Código placas (Auto Complete). O Code Explorer está à sua disposição para facilitar o gerenciamento do projeto. 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. A fonte de nível de software simulador permite depurar passo lógico executável-a- etapa, observando o fluxo do programa. O assistente para Novo projeto é uma maneira rápida, confiável e fácil maneira de criar um projeto. Arquivos de ajuda são de sintaxe e sensível ao contexto. Como em qualquer aplicação de Windows modernos, você pode personalizar o layout do mikroC PRO para PIC para atender às suas necessidades. sublinha Spell Checker identificadores que são desconhecidos para o projeto. Desta forma, ele ajuda o programador a detectar potenciais problemas cedo, muito antes do pro- A ECT é compilado. Corretor ortográfico pode ser desativado, escolhendo a opção na Diálogo Preferências (F12).

32

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

www.mecatronicadegaragem.blogspot.com

Page 64: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, dependendo de como você organizar as janelas no IDE.

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

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

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

33

www.mecatronicadegaragem.blogspot.com

Page 65: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Passo 3: Mova o ponteiro sobre a parte correspondente do losango guia. Um contorno da janela aparece na a área designada. Passo 4: Para encaixar a janela na posição indicada, solte o botão do mouse. Dica: Para mover uma janela acoplável sem rotura no lugar, pressione CTRL enquanto arrastando-o. Salvar Layout Depois de ter um layout de janela que você gosta, você pode salvar o layout, digitando o nome para o layout e pressionando o ícone Save Layout .

Para definir o layout, selecione o layout desejado na lista suspensa Layout e clique em

Definir o ícone Layout .

Para remover o layout a partir da lista drop-down, selecione o layout desejado na lista

e clique no botão Excluir Icon Layout .

34

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

www.mecatronicadegaragem.blogspot.com

Page 66: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Clique na janela que deseja manter visível a dar-lhe o foco. Clique no ícone de alfinete na barra de título da janela.

.

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

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

35

www.mecatronicadegaragem.blogspot.com

Page 67: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Editor avançado de código O editor de código é um editor de texto avançado moda para satisfazer as necessidades dos profissionais. Geral edição do código é o mesmo que trabalhar com qualquer editor de texto padrão, incluindo familiar Copiar, Colar e Desfazer ações, 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, modelos de código e Auto Correto Editor de diálogo Configurações. Para acessar as configurações, clique em Ferramentas > Opções da menu drop-down, clique no botão Mostrar Ícone Opções ou a tecla F12 imprensa.

36

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

www.mecatronicadegaragem.blogspot.com

Page 68: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, todas válidas iden- tifiers coincidindo com as letras que você digitou será solicitado em um painel flutuante (veja a imagem abaixo). Agora você pode continuar digitando para estreitar a escolha, ou você pode selecionar um da lista usando as setas do teclado e Enter.

Código Folding

dobramento de código é IDE recurso que permite aos usuários ocultar ou exibir sec- ções de um arquivo de origem. Desta forma é mais fácil de gerenciar grandes regiões de código dentro uma janela, enquanto a visualização apenas as subsecções do código que são relevantes durante uma sessão de edição especial.

Ao digitar, o símbolo de dobragem de código (- e +) aparecerá automaticamente. Use a dobra- ção de símbolos para ocultar / mostrar as subseções código.

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

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

37

www.mecatronicadegaragem.blogspot.com

Page 69: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC Parâmetro Assistente O Assistente de parâmetro será invocado automaticamente quando você abre parênteses "(" ou pressione Shift + Ctrl + Espaço. Se o nome de uma função válida precede o paren- tese, em seguida, os parâmetros esperados serão exibidos em um painel flutuante. Como você digite o parâmetro real, o próximo parâmetro esperado ficará em negrito. Modelos de Código (Auto Complete) Você pode inserir o modelo de código, digitando o nome do modelo (por exemplo, whiles), em seguida, pressione Ctrl + J eo editor de código irá gerar automaticamente um código. Você pode adicionar seu modelos próprios para a lista. Selecione Ferramentas > Opções no menu drop-down menu, ou clique no botão Mostrar Ícone Opções e selecione a guia Auto Completar. Aqui você pode digitar o apropriado palavra-chave, descrição e código do seu template. macros Autocomplete pode sistema e recuperar informações sobre o projeto:

- - - - -

% DATE% - Data atual do sistema %% TIME - Hora atual do sistema %% DISPOSITIVO - Nome do dispositivo (MCU), conforme especificado nas configurações do projeto %% DEVICE_CLOCK - Relógio, conforme especificado no projeto definições %% COMPILER - Compilador versão atual

38

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

www.mecatronicadegaragem.blogspot.com

Page 70: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Essas macros podem ser usados no código do modelo, ver modelo ptemplate fornecido com mikroC PRO para PIC instalação.

Correção automática

O recurso Auto Correct corrige erros comuns de digitação. Para acessar a lista de rec- erros reconhecida, 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. Você também pode adicionar os seus

próprios

preferências para a lista.

Além disso, o editor de código tem um recurso para comentar ou descomente o código selecionado pelo sim- plo de um clique do mouse, utilizando o ícone

comentar

e Icon Descomente a partir de

Barra de ferramentas de código.

Verificador Ortográfico

O verificador ortográfico sublinha desconhecido objetos no código, para que eles possam ser facilmente notado e corrigido antes de compilar o seu projeto.

Selecione Ferramentas > Opções a partir do menu drop-down, ou clique no ícone Mostrar opções

e, em seguida, selecione a aba Verificador Ortográfico.

Bookmarks

Bookmarks tornar a navegação através de um código grande mais fácil. Para definir um marcador, utilize Ctrl + Shift + número. Para saltar para um marcador, utilize Ctrl + número.

Goto Line

A opção Goto Line torna a navegação através de um código grande mais fácil. Use a curto corte Ctrl + G para ativar essa opção.

Comentário / Descomente

Além disso, o editor de código tem um recurso para comentar ou descomentar selecionado código simples clique de um mouse, utilizando o ícone comentar e inco-

www.mecatronicadegaragem.blogspot.com

Page 71: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

mento Icon do Código de Barra.

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

39

www.mecatronicadegaragem.blogspot.com

Page 72: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Expandir / Recolher todos os nós da árvore.

Localize declaração no código.

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Explorador de código O Code Explorer dá visão clara de cada item declaradas dentro do código fonte. Você pode saltar a uma declaração de qualquer item pelo botão direito dele. Além disso, além da lista de objetos definidos e declarados, código de explorer exibe mensagem de erro sobre a primeira e sua localização no código. As seguintes opções estão disponíveis no Gerenciador de Código:

40

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

www.mecatronicadegaragem.blogspot.com

Page 73: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

LISTA DE ROTINA

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

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

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

41

www.mecatronicadegaragem.blogspot.com

Page 74: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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. Apenas um deles pode estar ativo no momento. Definição do projeto em ativos modalidade é realizada por duplo clique sobre o projeto desejado no Project Manager. Na sequência opções estão disponíveis no Project Manager:

42

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

www.mecatronicadegaragem.blogspot.com

Page 75: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Salvar projeto do Grupo.

Abra grupo de projeto.

Feche o projeto ativo.

Fechar grupo de projeto.

Adicione projeto para o grupo de projeto.

Retire do projeto grupo de projeto.

Adicionar arquivo ao projeto ativo.

Remover arquivos selecionados a partir do projeto.

Construir o projeto ativo.

programador executar mikroElektronika do Flash.

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

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

Tópicos relacionados: Configurações do projeto, o Project Menu de Opções, Opções do menu File, Project Toolbar, barra de ferramentas Build, Adicionar / Remover arquivos do Project

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

43

www.mecatronicadegaragem.blogspot.com

Page 76: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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. Oscilador - digite o valor da freqüência do oscilador. Construir / Debugger Tipo - escolha depurador tipo.

Tópicos relacionados: Edit Project, Personalizando Projetos

44

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

www.mecatronicadegaragem.blogspot.com

Page 77: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Biblioteca janela do Gerenciador de listas de todas as bibliotecas (extencion. MCL), que são instantaneamente armazenados no Usa pasta do compilador. A biblioteca desejável é adicionado ao projeto, selecionando seleção caixa ao lado do nome da biblioteca. Para ter todas as funções de biblioteca acessível, 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,

pressione o botão Limpar tudo e todas as bibliotecas serão apurados a partir do projeto. Somente as bibliotecas selecionadas serão ligadas.

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

45

www.mecatronicadegaragem.blogspot.com

Page 78: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

Atualizar Biblioteca de verificação de arquivos em "Usos" pasta. Útil quando novos bibli di i d i d i " " Reconstruir todas as bibliotecas disponíveis. Útil quando fontes da biblioteca estão disponíveis e

id d d f t Inclui todas as bibliotecas disponíveis no projeto atual.

Nenhuma biblioteca da lista serão incluídos no projeto atual.

Restauração da biblioteca para o estado apenas antes de salvar último j t

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC tópicos relacionados: mikroC PRO para PIC Bibliotecas, Criação de um novo Biblioteca

46

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

www.mecatronicadegaragem.blogspot.com

Page 79: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

ERRO JANELA

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

A janela de erro está localizado no separador Mensagem, e mostra a localização eo tipo de erros, o compilador encontrou. O compilador também relata advertências, mas estas não afetam a saída, os erros só pode interefere com a geração de hex.

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

Temas relacionados: Mensagens de erro

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

47

www.mecatronicadegaragem.blogspot.com

Page 80: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

ESTATÍSTICAS Após a compilação com sucesso, você poderá analisar estatísticas de seu código. Clique no Estatísti- tiques Icon . Uso o Windows Memory Fornece uma visão geral de RAM e ROM uso nas diversas formas. Uso de memória RAM Exibe uso da memória RAM de uma forma torta-like.

48

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

www.mecatronicadegaragem.blogspot.com

Page 81: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

RAM locais utilizados Exibe usados locais de memória RAM e seus nomes.

SFR Locais Exibe uma lista de utilizados SFR locais.

Meio Ambiente

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

49

www.mecatronicadegaragem.blogspot.com

Page 82: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

Uso de memória ROM ROM Exibe o uso do espaço de memória em forma de pizza-like. Memória ROM Constantes Exibe constantes memória ROM e seus endereços.

mikroC PRO para PIC

50

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

www.mecatronicadegaragem.blogspot.com

Page 83: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Função ordenados por nome Classifica e exibe funções por seus endereços, nomes simbólicos, e único nomes assembler.

Funções ordenados por tamanho Classifica e exibe funções, pela sua dimensão, na ordem ascendente.

Mikroelektronika - Software e Soluções de hardware para Embedded World

51

www.mecatronicadegaragem.blogspot.com

Page 84: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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.

52

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

www.mecatronicadegaragem.blogspot.com

Page 85: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

Funções Ordenado por Gráfico Tamanho Classifica e exibe funções por seus tamanhos em um formato gráfico semelhante.

Funções ordenadas por endereço Gráfico Classifica e exibe funções por seus endereços em um formato gráfico semelhante.

Meio Ambiente

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

53

www.mecatronicadegaragem.blogspot.com

Page 86: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

Função Árvore Exibe Função Árvore com os dados relevantes para cada função. Memória Resumo Apresenta resumo de memória RAM e memória ROM de forma torta-like.

mikroC PRO para PIC

54

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

www.mecatronicadegaragem.blogspot.com

Page 87: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Ícone Descrição

teclas "gravação" começa para posterior reprodução.

Pára keystrokesthat captura começou quando o Start com Recordig- mando foi selecionado.

Permite uma macro que foi gravada para ser repetidos.

Novo macro.

Excluir macro.

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. Uma macro permite "gravar" uma série de teclas e depois em 'playback', ou repetir, as teclas gravadas.

A Macro oferece os seguintes comandos:

Tópicos Relacionados: Avançado editor de código, modelos de código

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

55

www.mecatronicadegaragem.blogspot.com

Page 88: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Ferramentas integradas USART Terminal A mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 89: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

EEPROM Editor

O Editor é usado EEPROM para manipulação de memória EEPROM MCU. Você pode lançá-lo a partir do menu drop-down Ferramentas > EEPROM Editor. Quando Utilize este definição EEPROM está marcada compilador gerará Intel hex project_name.ihex que contém dados a partir do editor EEPROM.

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

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

57

www.mecatronicadegaragem.blogspot.com

Page 90: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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

www.mecatronicadegaragem.blogspot.com

Page 91: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 92: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

LCD Gráfico Editor de Bitmap A mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 93: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

HID Terminal

A mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 94: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente mikroC PRO para PIC

UDP Terminal A mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 95: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Mikroelektronika - Software e Soluções de hardware para

www.mecatronicadegaragem.blogspot.com

Page 96: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Embedded World 63

www.mecatronicadegaragem.blogspot.com

Page 97: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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

www.mecatronicadegaragem.blogspot.com

Page 98: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 99: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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 mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 100: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 101: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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üência alvo, então o padrão "Curta" corresponderia "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 "\". Por exemplo, metacaractere "^" início da seqüência de partidas, mas "\" ^ jogos caráter "^", e "\ \" jogos "\", 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. Se você precisa de um código de caracteres de largura (Unicode), você pode usar '\ 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 hexadecimal 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

Mikroelekt

www.mecatronicadegaragem.blogspot.com

Page 102: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

ronika - Soluções de software e hardware para o mundo embutido 67

www.mecatronicadegaragem.blogspot.com

Page 103: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

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

www.mecatronicadegaragem.blogspot.com

Page 104: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Metacaracteres - separadores Line

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

Exemplos:

^ PORTA - 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 ^ $ - seqüência de partidas » PORTA » só se for a cadeia apenas em linha PORT.r - seqüências de jogos como 'Porta', 'PORTB', 'PORT1' e assim por diante

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

Metacaracteres - classes pré-definidas

\ W - Uma caracteres alfanuméricos (incluindo "_") \ W - Um personagem nonalphanumeric \ D - Um personagem numéricos \ D - Um caráter não-numéricos \ S - Todo o espaço (o mesmo que [\ T \ n \ r \ f]) \ S - Um espaço não

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

Exemplo:

routi \ de - Seqüências de jogos como "Routi1e ',' routi6e ' e assim por diante, mas não "Routime ',' rotina ' e assim por diante.

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

69

www.mecatronicadegaragem.blogspot.com

Page 105: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Metacaracteres - Os limites de palavra Um limite de palavra ("B \") é um ponto entre dois personagens que tem um código alfanumérico caráter ("W \") de um lado, e um personagem nonalphanumeric ("W \") em os outros lateral (em qualquer ordem), contando os personagens imaginários fora o começo eo fim da cadeia como um correspondente "W \".

\ B - Corresponder a um limite de palavra) \ B - Correspondem a um não (limite de palavra)

Metacaracteres - Iterators Qualquer item de uma expressão regular pode ser seguido por um outro tipo de metacharac- tros - iteradores. Usando este metacaracteres, você pode especificar o número de ocorrências de personagem anterior, metacaractere ou subexpressão.

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

Assim, os dígitos em chaves do forma, {M, n}, especificar o número mínimo de vezes para combinar com o item n eo máximo m. A forma {N} é equivalente a {N, n} e corresponde exatamente n tempos. A forma {N,} fósforos ou mais vezes. Não há limite ao tamanho da n ou m, mas grande número será mastigar mais memória e retardar execução. Assim, os dígitos em chaves do formulário, {N, m}, especificar o número mínimo de vezes para combinar com o item n eo máximo m. A forma {N} é equivalente a {N, n} e corresponde exatamente n tempos. A forma {N,} fósforos ou mais vezes. Não há limite ao tamanho da n ou m, mas um grande número vai mastigar mais memória e retardar execução. Se uma chaveta ocorre em qualquer outro contexto, ela é tratada como uma personagem regular.

70

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

www.mecatronicadegaragem.blogspot.com

Page 106: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Exemplos:

r Contagem .* ß- seqüências de partidas como 'Contra' countelkjdflkj9r, e "Countr ' contagem. + r - seqüências de jogos como 'Contra' countelkjdflkj9r, mas não "Countr ' contagem.? r - seqüências de jogos como "Countar ',' contador ' e "Countr ' mas não "Countelkj9r ' r {2} counte - seqüência de partidas "Counteer ' counte {2} r - seqüências de jogos como "Counteer ',' counteeer ',' counteeer ' etc r {2,3} counte - seqüências de jogos como "Counteer, ou "Counteeer ' mas não "Counteeeer '

Uma pequena explanação sobre a "ganância". "Greedy" leva o maior número possível ", não gananciosos " toma o mínimo possível. Por exemplo, '+ B' e '* B' aplicada à corda "Abbbbc ' retorno "Bbbb", 'B +? retorna 'B', 'B *? retorna uma string vazia, 'B {2,3}? retorna 'BB', 'B {2,3}' retorna 'BBB'.

Metacaracteres - Alternativas

Você pode especificar uma série de alternativas para um padrão de uso "|" separá-los, de modo que bat | | pouco bot irá corresponder a qualquer dos "Bit", "Bat", ou "Bot" na seqüência alvo como seria "B (i | a | o) t)". A primeira alternativa inclui tudo, desde a última pat delimitador tern ("(", "[" Ou o início do padrão) até o primeiro "|", E a última alternativa contém tudo, desde a última "|" para o próximo padrão delim- iter. Por este motivo, é comum a prática de incluir alternativas entre parênteses, a minimizar a confusão sobre onde começam e terminam.

Alternativas são julgados a partir da esquerda para a direita, para a primeira alternativa encontrada para que o expressão inteira partidas, é aquele que é escolhido. Isto significa que as alternativas não são necessariamente gananciosos. Por exemplo: quando a correspondência rou | goleada contra "Rou- tine ", apenas o "Rou" parte irá corresponder, como é que a primeira alternativa julgado, e com sucesso corresponde a seqüência alvo (isto pode não parecer importante, mas é im- importante quando você está capturando texto correspondente usando parênteses). Também lembro que "|" é interpretado como um literal entre colchetes, por isso, se você escrever [Bit | morcego | bot] você é realmente apenas a correspondência [Biao |].

Exemplos:

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

Mikr

www.mecatronicadegaragem.blogspot.com

Page 107: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 108: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Metacaracteres - Subexpressões O bracketing construir ( ... ) também pode ser usado para definir regular subexpres- sões. Subexpressões estão contados com base na esquerda para a direita do seu open- ção entre parênteses. subexpressão Primeiro tem o número '1 '. Exemplos:

(Int) {8,10} seqüências de jogos que contenham 8, 9 ou 10 instâncias do 'int' routi ([0-9] | a +) e "Routi0e 'corresponde a' routi1e ',' rotina ',' routinne, "Routinnne 'etc

Metacaracteres - Referências Anteriores Metacaracteres \ 1 através \ 9 são interpretadas como referências anteriores. \ PREVI-partidas previamente combinados subexpressão #. Exemplos:

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

72

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

www.mecatronicadegaragem.blogspot.com

Page 109: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

mikroC PRO para PIC OPÇÕES DE LINHA DE COMANDO

Uso: mikroCPIC1618.exe [- <opts> [- <opts>]] [<ENTRADA> [- <opts>] [] - <opts>]] INFILE pode ser de *. C, *. mcl e *. Pld tipo.

Os seguintes parâmetros e pouco mais (ver manual) são válidos:

- P: MCU para que a compilação será feito. - PARA: Definir oscilador [em MHz]. - SP: Adicionar o diretório para a lista de caminho de pesquisa. - SE: Adicionar o diretório para o # include lista de pesquisa. - N: Os arquivos de saída gerados a caminho do arquivo especificado por filename. - B: Salvar arquivos binários compilados (*. mcl) para 'diretório'. - O: opções de saída diversas. - DBG: Gerar informações de depuração. - L: Verificar e reconstruir novas bibliotecas. - D: Criar todos os arquivos como bibliotecas. - Y: Dynamic link para strings literais. - C: Ligue maiúsculas e minúsculas. - UCD: CID tipo de compilação.

Exemplo:

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

Parâmetros utilizados no exemplo:

- MSF: Short Message Format, usado para fins internos de IDE. - DBG: Gerar informações de depuração. - p16F887: MCU 16F887 selecionado. - C: Ligue maiúsculas e minúsculas. - O11111114: Várias opções de saída. - fo10: Defina a frequência do oscilador [em MHz]. - N "C: \ Lcd \ Lcd.mcppi" SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ defs \ ": os arquivos de saída gerados a caminho do arquivo especificado por filename.

- -SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ defs \ "adicionar o diretório para a lista de caminho de pesquisa.

- SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ usa \": Adicione o diretório para a lista de caminho de pesquisa.

- -SP "C: \ Lcd \" adicionar o diretório para a lista de caminho de pesquisa. - "Lcd.c" __Lib_Math.mcl "__Lib_MathDouble.mcl" "__Lib_System.mcl" __Lib_Delays.mcl "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl": Especifique arquivos de entrada.

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

73

www.mecatronicadegaragem.blogspot.com

Page 110: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

PROJETOS A mikroC PRO para PIC organiza as aplicações em projetos, que consiste de um único arquivo de projeto (extensão . Mcppi) e um ou mais arquivos fonte (extensão). 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. O arquivo de projeto contém as seguintes informações:

- - - - - - - - -

nome do projeto e uma descrição opcional, dispositivo de destino, bandeiras dispositivo (config palavra), relógio do dispositivo, lista dos arquivos do projeto de origem com os caminhos, arquivos de cabeçalho (*. h), arquivos binários (*. mcl) arquivos de imagem, outros arquivos.

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

Novo projeto

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

74

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

www.mecatronicadegaragem.blogspot.com

Page 111: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

Assistente de Novas Etapas do Projeto

Comece a criar seu novo projeto, clicando no botão Next:

Primeiro Passo - Selecione o dispositivo da lista de dispositivos de drop-down.

Meio Ambiente

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

75

www.mecatronicadegaragem.blogspot.com

Page 112: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Passo dois - Digite o valor da freqüência do oscilador. Passo três - Especifique o local onde o projeto será salvo.

76

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

www.mecatronicadegaragem.blogspot.com

Page 113: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Passo Quatro - 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.

Passo Cinco - Clique no botão Concluir para criar seu novo projeto.

Tópicos relacionados: Gerente de Projetos, Project Configurações

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

77

www.mecatronicadegaragem.blogspot.com

Page 114: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

PROJETOS A mikroC PRO para PIC organiza as aplicações em projetos, consistindo de um único arquivo de projeto (extensão . Mcppi) e um ou mais arquivos fonte (extensão). 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. O arquivo de projeto contém as seguintes informações:

- - - - - - - - -

nome do projeto e uma descrição opcional, dispositivo de destino, bandeiras dispositivo (config palavra), relógio do dispositivo, lista dos arquivos do projeto de origem com os caminhos, arquivos de cabeçalho (*. h), arquivos binários (*. mcl) arquivos de imagem, outros arquivos.

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

Novo projeto

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

78

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

www.mecatronicadegaragem.blogspot.com

Page 115: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

Assistente de Novas Etapas do Projeto

Comece a criar seu novo projeto, clicando no botão Next:

Primeiro Passo - Selecione o dispositivo da lista de dispositivos drop-down.

Meio Ambiente

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

79

www.mecatronicadegaragem.blogspot.com

Page 116: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Passo dois - Digite o valor da freqüência do oscilador. Passo três - Especifique o local onde o projeto será salvo.

80

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

www.mecatronicadegaragem.blogspot.com

Page 117: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Passo Quatro - 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.

Passo Cinco - Clique no botão Concluir para criar seu novo projeto:

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

81

www.mecatronicadegaragem.blogspot.com

Page 118: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

PERSONALIZAÇÃO PROJETOS Edit Project Você pode alterar as configurações básicas do projeto na janela de configurações do projeto. Você pode chip de mudar, e freqüência de oscilação. Qualquer mudança na configuração do projeto Janela afeta atualmente projeto ativo, então no caso de mais de um projeto estiver aberto, você têm de assegurar que exatamente o projeto desejado é definido como um activo no projecto Manager. Além disso, você pode alterar os bits de configuração do chip selecionado no Edit Projeto janela. Gerenciando Grupo de Projecto mikroC PRO para PIC IDE covenient fornece a opção que permite vários projetos ser abertas simultaneamente. Se você tem vários projetos sendo conectado em alguns Assim, você pode criar um grupo de projetos. O grupo do projecto pode ser salva, clicando no ícone Save Project Group da a janela do Project Manager. O grupo do projecto pode ser reabriu clicando no Open Project Icon Group. Todos os dados relevantes sobre o grupo do projeto são armazenadas em o arquivo de grupo de projeto (extensão . Mpgroup) Adicionar / Remover arquivos do Project O projeto pode conter os seguintes tipos de arquivo:

- - - - - -

arquivos de origem . H arquivos de cabeçalho . Mcl binária arquivos PLD nível de projeto define os arquivos arquivos de imagem . Hexadecimal, . Asm e . Lst arquivos, consulte os arquivos de saída. Esses arquivos não podem ser adicionados ou retirados do projeto.

- Outros arquivos

82

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

www.mecatronicadegaragem.blogspot.com

Page 119: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

A lista de arquivos fonte relevante é armazenado no arquivo de projeto (extensão . Mcppi).

Para adicionar o arquivo de origem para o projeto, clique em Adicionar Arquivo à Project Icon. Cada adicionou arquivo de origem deve ser independente, isto é, deve ter todas as definições necessárias após pré-processamento. Para remover o arquivo (s) do projeto, clique no botão Remover Arquivo do Project Icon.

Nível do projeto define:

Projeto Nível Define (. PLD) arquivos também podem ser adicionados ao projeto. Projeto define nível arquivos permitem que você tenha define que são visíveis em todos os arquivos de origem no projeto. Um arquivo deve conter uma definição de cada linha da seguinte forma:

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

Define um símbolo macro nomeada. Para especificar um valor, use = Valor. Se = Valor é omitido, 1 será adotado. Não digitar caracteres espaço em branco imediatamente antes da "=". Se um caractere de espaço em branco é inserido imediatamente após a "=", A macro é definido como zero token. Esta opção pode ser especificada repetidamente. Cada aparecimento de símbolo será substituído pelo valor antes da compilação. Existem dois níveis de projeto pré-define. Veja em nível de projeto predefinido define

Nota: Para inclusão dos arquivos de cabeçalho (extensão . H), use o direção pré-processador tiva # Include. Veja arquivo de inclusão para mais informações.

Tópicos relacionados: Gerente de Projetos, Project Settings, Edit Project

www.mecatronicadegaragem.blogspot.com

Page 120: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Mikroelektronika - Soluções de software e hardware para o mundo embutido 83www.mecatronicadegaragem.blogspot.com

Page 121: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Arquivos de origem Arquivos de origem contendo o código C deve ter a extensão. A lista de arquivos de origem relevantes para a aplicação é armazenado no arquivo de projeto com extensão mcppi., juntamente com outras informações de projeto. Você pode compilar arquivos de origem somente se eles são parte do projeto. Use a diretiva de pré-processamento # Include para incluir arquivos de cabeçalho com a extensão . H. 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. Gerenciando arquivos de origem Criar novo arquivo de origem Para criar um novo arquivo de origem, faça o seguinte: 1. Selecione Arquivo > Nova Unidade a partir do menu drop-down, ou pressione Ctrl + N, ou clique no

Novo Ícone do arquivo

Arquivo da Barra de Ferramentas.

2. Uma nova guia será aberta. Este é um arquivo de origem novo. Selecione Arquivo > Guardar da

drop-down menu, ou pressione Ctrl + S, ou clique no botão Save File Icon

a partir do arquivo

Barra de ferramentas e nomeá-lo como quiser.

Se você usar o novo assistente de projeto, um arquivo de origem vazio, o nome do projeto com extensão, será criado automaticamente. A mikroC PRO para PIC não requer que você ter um arquivo de origem o mesmo nome que o projeto, é só uma questão de conveniência.

Abrindo um arquivo existente

1. Selecione Arquivo > Abrir a partir do menu drop-down, ou imprensa Ctrl + S, ou clique no botão Abrir

File Icon Arquivo da Barra de Ferramentas. Em Abrir caixa de diálogo Procurar para o local do

arquivo que deseja abrir, selecione-o e clique no botão Abrir. 2. Os selecionados arquivo é exibido em sua própria guia. Se o arquivo selecionado já está aberto, a sua

guia Editor atual ficará ativo.

www.mecatronicadegaragem.blogspot.com

Page 122: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Imprimindo um arquivo aberto

1. Certifique-se que a janela que contém o arquivo que você deseja imprimir está ativo. 2. Selecione Arquivo > Imprimir da drop-down menu, ou pressione Ctrl + P. 3. Na janela de visualização de impressão, definir um layout desejado no documento e clique no

botão OK. O arquivo será impresso na impressora selecionada.

84

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

www.mecatronicadegaragem.blogspot.com

Page 123: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

Salvando arquivo

1. Certifique-se que a janela que contém o arquivo que você deseja salvar está ativo. 2. Selecione Arquivo > Guardar a partir do menu drop-down, ou pressione Ctrl + S, ou clique no botão Salvar

File Icon Arquivo da Barra de Ferramentas.

Salvando arquivo com um nome diferente

1. Certifique-se que o janela contendo o arquivo que você deseja salvar está ativo. 2. Selecione Arquivo > Salvar como a partir do menu drop-down. O diálogo Novo nome do arquivo

ser exibido. 3. Na caixa de diálogo, navegue até a pasta onde você deseja salvar o arquivo. 4. No campo Nome do arquivo, modificar o nome do arquivo que você deseja salvar. 5. Clique no botão Salvar.

A fechar o ficheiro

1. Certifique-se que a guia que contém o arquivo que você deseja fechar é a aba ativa. 2. Selecione Arquivo > Fechar a partir do menu drop-down, ou para a direita, clique na guia do arquivo que

que deseja fechar e selecione Fechar opção no menu de contexto. 3. Se o arquivo foi alterado desde que foi salvo pela última vez, você será solicitado a salvar

suas alterações.

Tópicos Relacionados: Menu Arquivo, Arquivo Barra, Gerente de Projetos, Project Settings,

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

85

www.mecatronicadegaragem.blogspot.com

Page 124: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

CLEAN Pasta do projeto Este menu dá-lhe a opção de escolher quais arquivos do seu projeto atual que você quer para excluir. Os arquivos marcados em negrito podem ser facilmente recriadas através da construção de um projeto. Outros arquivos devem ser marcada para exclusão apenas com um grande cuidado, porque IDE não pode recuperá-los. Temas relacionados: Personalizando Projetos

86

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

www.mecatronicadegaragem.blogspot.com

Page 125: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

COMPILAÇÃO

Quando você criou o projeto e escrito o código fonte, é tempo para compilar ele. Selecione Projeto > Construir a partir do menu drop-down, ou clique no ícone Build

a partir de

Barra de ferramentas de projeto. Se mais mais do que um projeto está aberto, você pode compilar todos abertos projetos selecionando Projeto > Build All a partir do menu drop-down, ou clique no botão Construir Todos Icon do Projeto Toolbar.

barra de progresso será exibida para informá-lo sobre o status de compilação. Se não houver alguns erros, você será notificado na janela de erro. Se não forem encontrados erros, o mikroC PRO para PIC irá gerar arquivos de saída.

Arquivos de saída

Após a compilação bem-sucedida, o mikroC PRO para PIC irá gerar arquivos de saída em o projeto pasta (pasta que contém o arquivo de projeto . Mcppi). Arquivos de saída são resumidos na tabela abaixo:

Assembléia Ver

Depois de compilar o programa no mikroC PRO para PIC, 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 (. asm arquivo) em uma janela nova aba. Assembléia é legível com nomes simbólicos.

Tópicos relacionados: Menu Project, Project Barra de ferramentas, janela de erro, Gerente de Projeto, Pro- Configurações ject

Mi

www.mecatronicadegaragem.blogspot.com

Page 126: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Formato Descrição Tipo de A i

Intel HEX hex Intel registros estilo. Use esse arquivo para o programa PIC MCU

. Hexa

Binária mikro Compilado Biblioteca. distribuição binária do aplicativo que pode ser incluída em outros projetos.

. Mcl

Lista de Arquivos Resumo dos PIC colocação de memória: a instrução

d i d i ó l

. Lst

Montador de

i

Homem montagem legíveis com nomes simbólicos, extraídos a partir da lista de arquivos.

. Asm

kroelektronika - Soluções de software e hardware para o mundo embutido 87

www.mecatronicadegaragem.blogspot.com

Page 127: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

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

mikroC PRO para PIC

88

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

www.mecatronicadegaragem.blogspot.com

Page 128: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

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

Meio Ambiente

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

www.mecatronicadegaragem.blogspot.com

Page 129: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

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

mikroC PRO para PIC

90

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

www.mecatronicadegaragem.blogspot.com

Page 130: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC

Mensagens de advertência do compilador:

Meio Ambiente

- - - - - - - - - - - - - -

Ruim ou falta de parâmetro FOSC. 8MHz valor padrão usado caminho de pesquisa especificado não existe: [% S] Especificados inclua o caminho não existe: [% S] O resultado não é definido em função: [% S] Inicialização de objeto externo [% S] conversão ponteiro Suspicious A conversão implícita do ponteiro para int linha pragma Desconhecido ignorado: [% S] A conversão implícita de int para ptr Gerado taxa de transmissão é [% S] bps (= erro [% S] por cento) modelo de memória Desconhecido [% S], o modelo usado em vez de memória pequeno bit IRP deve ser definida manualmente para acesso indirecto a [% S] variável Variável [% S] tenha sido declarada, mas não utilizado " Ilegal tipo de arquivo: [% S]

Mensagens de erro vinculador:

- - - - - - -

Redefinição das [% S] já definido no [% S] principal função não é definida rotina do sistema não é encontrado para inicialização de: [% S] definição agregada Bad [% S] Não Resolvidos extern [% S] Bad função absoluta endereço [% S] RAM insuficiente [% S]

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

91

www.mecatronicadegaragem.blogspot.com

Page 131: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Visão geral do software simulador A fonte de nível de software Simulator é um componente integrante do mikroC PRO para PIC ambiente. 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. Após a conclusão de escrever o seu programa, escolha Lançamento tipo de compilação no projeto janela de configurações: Depois de ter compilado com sucesso o seu projeto, você pode executar o Software Simu- lator selecionando Executar > Iniciar o depurador a partir do menu drop-down, ou clicando em o ícone Iniciar o depurador a partir da barra de ferramentas do depurador. Iniciando o Sim

Software ulador torna mais opções disponíveis: Step Into, Step Over, Step Out, Run to Cursor, etc linha que está a ser executada é a cor em destaque (azul por padrão).

Nota: O Simulador de Software simula o fluxo do programa e execução de instruções de linhas de produção, mas não pode inteiramente PIC emular o comportamento do dispositivo, ou seja, não atualização temporizadores, sinalizadores de interrupção, etc

92

www.mecatronicadegaragem.blogspot.com

Page 132: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 133: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Doubleclicking o ponto de interrupção pretendido causará cursor para navegar para o correspon- ding local no código-fonte.

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. Para mostrar a Janela de Inspeção, selecione Ver > Debug Windows > Assista no menu drop-down menu.

O relógio apresenta janela de variáveis e registradores do MCU, juntamente com seus endereços e valores.

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"). Basta selecionar desejado variable/reg- Ister de Selecione variável da lista menu drop-down e clique no botão Adicionar

. pelo seu nome de identificação (Nome da variável de montagem). 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 .

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

93

www.mecatronicadegaragem.blogspot.com

Page 134: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

As variáveis também podem ser retirados a janela Watch, basta selecionar a variável que você deseja remover e clique no botão Remover.

Adicionar Tudo Button

Botão Remover tudo

agrega todas as variáveis.

remove todas as variáveis.

Você também pode expandir / recolher variáveis complexas, ou seja, variáveis de tipo struct, cordas ... Os valores são atualizados à medida que avançar a simulação. itens alterados recentemente são de cor vermelha.

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. Além disso, você pode escolher o formato da variável / register representação entre decimal, hexadecimal, float, binária ou de caracteres. Todas as representações, exceto float são assinados por padrão. Para a representação assinada clique na caixa de seleção ao lado o Assinado etiqueta.

94

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

www.mecatronicadegaragem.blogspot.com

Page 135: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

.

Exibir janela RAM

Depurador Ver RAM janela está disponível a partir do menu drop-down, Ver > Depurar Windows > Ver RAM.

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

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

95

www.mecatronicadegaragem.blogspot.com

Page 136: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

Cronômetro Janela O Software Simulador de Cronômetro janela está disponível a partir do menu drop-down, 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. 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. Delta representa o número de ciclos entre as linhas de ação onde o Software Simulador começou e terminou. Nota: O usuário pode alterar o relógio na janela cronômetro, que será recalculado- Os valores finais para a última frequência especificada. Mudando o relógio no cronômetro Janela não afeta as configurações de projeto real - apenas fornece uma simulação.

96

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

www.mecatronicadegaragem.blogspot.com

Page 137: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Nome Descrição Função Key

Barra de

Início Depurador Simulador de Software Iniciar. [F9]

Executar / Pausar

d

Executar ou pausar Software Simulator. [F6]

Parar Depurador

Stop Simulador de Software. [Ctrl + F2]

Toggle

Breakpoints

Alternar ponto de interrupção na posição do cursor atual posição. Para visualizar todos os pontos de interrupção, selecione Executar > Veja os pontos de interrupção no menu d d

[F5]

Corra para cur- sor

Executar todas as instruções entre os actuais instrução e posição do cursor.

[F4]

Step Into

Execute o atual C (simples ou multi-ciclo) instrução, e então pare. Se a instrução é um rou- chamada nicotina, entra na rotina e parar na primeira i t ã i t à h d

[F7]

Step Over Execute o atual C (simples ou multi-ciclo) instrução, e então pare.

[F8]

Step Out Executar todas as demais instruções do rotina atual, o retorno e depois parar.

[Ctrl + F8]

CAPÍTULO 2

mikroC PRO para PIC

SIMULADOR DE OPÇÕES DE SOFTWARE

Tópicos Relacionados: Executar Menu Debug Barra

Meio Ambiente

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

97

www.mecatronicadegaragem.blogspot.com

Page 138: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente

mikroC PRO para PIC

CRIANDO NOVOS BIBLIOTECA mikroC PRO para PIC permite que você crie suas próprias bibliotecas. A fim de criar um biblioteca em mikroC PRO para PIC siga os passos abaixo: 1. Criar um novo arquivo de origem C, consulte Gerenciando arquivos de origem 2. Salve o arquivo em uma das subpastas da pasta do compilador Usos:

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

3. Escreva um código para a sua biblioteca e salvá-lo. 4. Adicionar __Lib_Example arquivo em algum projeto, consulte Project Manager. Recompile o

projeto. Se você quiser usar esta biblioteca para todos os MCUs, então você deve ir para Ferramentas > Opções > Saída configurações e verificar Construir todos os arquivos como a biblioteca caixa. Isto irá construir bibliotecas em uma forma comum que irá funcionar com todos os MCUs. Se isso caixa não estiver marcada, então biblioteca será construída para MCU selecionado. Tenha em mente que o compilador apresentará um erro se uma biblioteca construída de MCU específico é utilizadas para outra.

5. Compilado arquivo __Lib_Example.mcl deve aparecem em ... \ mikroC PRO para

PIC \ usa \ pasta. 6. Abra o arquivo de definição para o MCU que você deseja usar. Este arquivo é colocado na

pasta compilador Defs:

Letra_da_unidade: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ Defs \

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

7. Adicione o segmento de 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>

www.mecatronicadegaragem.blogspot.com

Page 139: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

98

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

www.mecatronicadegaragem.blogspot.com

Page 140: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2

mikroC PRO para PIC Meio Ambiente

</ LIB>

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

9. Clique no botão Atualizar no Gerenciador de bibliotecas

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

Biblioteca de várias versões

Biblioteca Alias representa o nome original que está vinculada a Biblioteca correspondente . Mcl arquivo. Por exemplo biblioteca UART para 16F887 é diferente da UART biblioteca para 18F4520 MCU. Assim, duas diferentes versões UART Biblioteca foram feitas, consulte mlk arquivos para estes dois MCUs. Note-se que estas duas bibliotecas têm a mesma Biblioteca Alias (UART) em ambos os mlk arquivos. Esta abordagem permite que você tenha uma representação idêntica de UART biblioteca para os MCUs em Library Manager.

Tópicos relacionados: Library Manager, Gerente de Projetos, Gerenciamento de arquivos de origem

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

99

www.mecatronicadegaragem.blogspot.com

Page 141: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 2 Meio Ambiente mikroC PRO para PIC

100

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

www.mecatronicadegaragem.blogspot.com

Page 142: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 mikroC 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

www.mecatronicadegaragem.blogspot.com

Page 143: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 144: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 3

mikroC PRO para PIC mikroICD

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

103

www.mecatronicadegaragem.blogspot.com

Page 145: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Nome Descrição Função chave

Depurar Depurador Iniciar. [F9]

Executar / Pausar

d

Executar ou pausar Debugger. [F6]

Toggle

Breakpoints

Alternar ponto de interrupção na posição atual do cursor- ção. Para visualizar todos os pontos de interrupção, selecione Executar> Ver os pontos de interrupção no menu d d

[F5]

Executar até o

cursor

Executar todas as instruções entre a corrente instrução e posição do cursor.

[F4]

Step Into

Execute o atual C (simples ou multi-ciclo) instrução, e então pare. Se a instrução é uma rotina chamada, introduza a rotina e parar na primeira ins- ção seguinte a chamada.

[F7]

Step Over

Execute o atual C (simples ou multi-ciclo) instrução, e então pare. Se a instrução é um rou- chamada tine, ignorá-lo e parar na primeira instrução

ó h d

[F8]

RAM Flush RAM PIC Flush atual. Todas as variáveis valores será alterado de acordo com os valores de

N / A

Desmontagem Ver

Alternar entre a desmontagem ea fonte de C vista.

[Alt + D]

CAPÍTULO 3 mikroICD

mikroICD Debugger Options

mikroC PRO para PIC

104

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

www.mecatronicadegaragem.blogspot.com

Page 146: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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]); }

}

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

105

www.mecatronicadegaragem.blogspot.com

Page 147: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 148: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 "mikroElektronika" no LCD char char. Ponto de interrupção é definido no Lcd_Chr eo programa irá parar cada vez que essa função seja alcançado. Depois de alcançar ponto de interrupção que deve pressionar F6 novamente para continuar a execução do programa.

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

www.mecatronicadegaragem.blogspot.com

Page 149: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

embutido 107

www.mecatronicadegaragem.blogspot.com

Page 150: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 151: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 152: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

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

109

www.mecatronicadegaragem.blogspot.com

Page 153: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 154: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

111

www.mecatronicadegaragem.blogspot.com

Page 155: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 156: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, Ver > Depurar Windows > Ver RAM.

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

Erros comuns

Tentando PIC mikroICD programa enquanto estiver ativa. Tentando depurar Lançamento construir versão Type do programa. Tentando depurar o código do programa que mudou não foi compilado e pro gramada em PIC. Tentando selecionar linha que é vazia de Run para o cursor [F4] e Breakpoints Toggle [F5] funções. Tentando depurar PIC com mikroICD enquanto Watch Dog Timer está habilitado. Tentando depurar PIC com mikroICD enquanto Power Up Timer é habilitado.

Não é possível forçar o Código de Proteção ao tentar depurar PIC com mikroICD. Tentando depurar PIC com mikroICD com resistores pull-up definido como ON RB6 e RB7. Para corrigir mikroICD depuração não usa pull-ups.

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

113

www.mecatronicadegaragem.blogspot.com

Page 157: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 3 mikroICD mikroC PRO para PIC

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

114

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

www.mecatronicadegaragem.blogspot.com

Page 158: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Valor inscrito no Endereço campo deve ser em formato hexagonal.

Nota: Quebra de memória do programa pode usar a opção Passcount. 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, para todos os contadores passcount avançada Breakpoints será apagado.

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. 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. O valor informado no campo de endereço deve ser em formato hexagonal.

Nota: Quebra de memória do programa pode usar a opção Passcount. 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. Quando alguns avançada Breakpoint interrompe a execução do programa, 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. Se Acesso de leitura é selecionado, o Arquivo Registre Igualdade opção pode ser usada para definir o valor correspondente. 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. Os valores inscritos no Endereço e Valor campos devem ser em formato hexagonal.

Nota: Arquivo Registre-Break também pode usar a opção Passcount da mesma forma como Memória do Programa Break.

www.mecatronicadegaragem.blogspot.com

Page 159: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 160: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 3 mikroICD mikroC PRO para PIC

Emulador de Recursos Evento Breakpoints

Ruptura em Underflow / Stack Overflow: não implementado. Ruptura em Watchdog Timer: não implementado. Ruptura no sono: pausa na instrução SLEEP. instrução SLEEP não será executados. Se você optar por continuar a depuração mikroICD [F6] em seguida, o pró- grama de execução terá início a partir da primeira instrução após a instrução SLEEP.

Cronômetro Cronômetro usa Breakpoint # 2 e Breakpoint # 3 Como ponto de partida e as condições Stop- ções. Para usar o cronômetro define estes dois pontos de interrupção e verificar o Habilitar Cronômetro checkbox. opções de cronômetro: Parado na condição de início

Parado em Iniciar Condição (Breakpoint # 2): quando marcada, a execução do programa vai parar na Breakpoint # 2. Caso contrário, Breakpoint # 2 será usado somente para iniciar o cronómetro. Parado em Parar Condição (Breakpoint # 3): quando marcada, a execução do programa vai parar na Breakpoint # 3. Caso contrário, Breakpoint # 3 será usado somente para parar o cronômetro. Reset Cronómetro na Run: quando marcada, o cronômetro será apagada antes continuando a execução do programa e à contagem próximo vai começar do zero. Outros- sábio, a contagem próximo terá início a partir do valor anterior Cronómetro

116

www.mecatronicadegaragem.blogspot.com

Page 161: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 162: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO

4

mikroC PRO para PIC Especificidades

Os tópicos a seguir abordam as especificidades da mikroC PRO compilador para PIC:

- Questões ANSI Standard - Globals e constantes predefinidas - Acessando bits individuais - Interrompe - PIC Ponteiros Directivas Linker - - Built-in Rotinas - Otimização de Código - Memória especificadores de tipo

117

www.mecatronicadegaragem.blogspot.com

Page 163: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

118 - E E SOLUÇÕES PARA PARA MUNDIAL

CAPÍTULO 4 Especificidades

mikroC PRO para PIC

Problemas ANSI Standard Divergência em relação ao padrão ANSI C - Tentativa declarações não são suportados. Idioma Exstensions C mikroC PRO para PIC tem conjunto adicional de palavras-chave que não pertencem ao o ANSI Palavras-chave linguagem padrão C:

- - - - - - -

código dados rx em sbit bit sfr

Tópicos relacionados: Palavras-chave, PIC específicas

Globals e constantes predefinidas

Para facilitar a programação dos PIC MCUs conformes, o mikroC PRO para PIC imple- mentos uma série de variáveis globais e constantes predefinidas.

Todos os PIC Registos SFR e seus pedaços estão implicitamente declarados como variáveis globais. Estes identificadores possuem uma ligação externa, e são visíveis na projeto inteiro. Ao criar um projeto, o mikroC PRO para PIC incluirá uma adequada (*) arquivo da pasta defs, contendo declarações de disponíveis Registos SFR e constantes.

Para um conjunto completo de variáveis globais e constantes predefinidas, procure "Defs" na mikroC PRO para PIC pasta de instalação, ou sonda o Assistente de código para letras específicas (Ctrl + Espaço no editor de código).

Mikroelektronika - SOFTWARESOFTWAREHARDWAREHARDWARE SOLUTIONSEMBEDDEDEMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com

Page 164: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4

mikroC PRO para PIC Especificidades

nível de projectos predefinidos define

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

-

-

-

-

Primeiro um é igual ao nome do dispositivo selecionado para o projeto ou seja, se 16F887 é dispositivo selecionado, em seguida, 16F887 token será definida como 1, então ele pode ser usado para compilação condicional:

# Ifdef P16F887 ... # Endif

A segunda é __FOSC__ valor da freqüência (em kHz) para os quais o projeto é construído. A terceira é para a identificação mikroC PRO para PIC compilador:

# Ifdef __MIKROC_PRO_FOR_PIC__ ... # Endif

um quarto é para identificar a versão de compilação. Por exemplo, se desejar construir uma versão Sion é de 142, o usuário deve colocar isso no seu código:

# If __MIKROC_PRO_FOR_PIC_BUILD__ == 142 ... # Endif

O usuário pode definir nível de projeto personalizado define.

Bits Acesso Individual

A mikroC PRO para PIC permite que você acesse os bits individuais de variáveis de 8 bits. É também suporta tipos de dados e pouco sbit

Acessar Bits individuais de Variáveis

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

/ / Bit Clear Global Interrupt (GIE) GIE_bit = 0;

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

/ / 0 em pouco claras registo INTCON INTCON.B0 = 0; / / Bit Conjunto 5 em ADCON0 registo ADCON0.F5 = 1;

119

www.mecatronicadegaragem.blogspot.com

Page 165: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

- 119

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 166: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4 Especificidades

mikroC PRO para PIC

Não há necessidade de qualquer declaração especial. Este tipo de acesso seletivo é um característica intrínseca de mikroC PRO para PIC e pode ser usado em qualquer lugar do código. Iden- tifiers B0-B7 não são sensíveis e têm um espaço específico. Você pode sobre- montá-los com seus próprios membros B0-B7 dentro de qualquer estrutura dada. Veja Globals e constantes predefinidas para obter mais informações sobre nomes de registo / bit. Nota: Se visando a portabilidade, evitar este estilo de acessar bits individuais, use o bit campos. tipo sbit A mikroC PRO para PIC compilador tem sbit tipo de dados que oferece acesso a bits SFR endereçável. Você pode acessá-los da seguinte forma: sbit LEDA em PORTA.B0; sbit bit_name em <bit-position> name.B SFR; sbit LEDB em PORTB.F0; sbit bit_name em <bit-position> SFR-name.F;

/ / Se você estiver familiarizado com um MCU em particular e os seus portos e di- registros do Regulamento (TRIS), você pode acessar bits por seus nomes: sbit LEdC em RC0_bit; sbit bit_name em R <port-letter> _bit <bit-position>;

sbit TRISC0 em TRISC0_bit; sbit bit_name em TRIS <port-letter> _bit <bit-position>; tipo bit A mikroC PRO para PIC compilador fornece um pouco o tipo de dados que podem ser utilizados para vari- declarações capaz. Não pode ser usado para lista de argumentos e valores de retorno de função.

bit bf;

/ / Variável de bit /

Não existem ponteiros para variáveis de bits:

bit * Ptr;

/ / Inválido

Uma matriz do tipo bit não é válido:

bit arr [5];

/ / Inválido

120

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

www.mecatronicadegaragem.blogspot.com

Page 167: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4

mikroC PRO para PIC Especificidades

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. mikroC 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.

mikroC 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.

Mikroelektronika - Soluções de soft

www.mecatronicadegaragem.blogspot.com

Page 168: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

ware e hardware para o mundo embutido 121

www.mecatronicadegaragem.blogspot.com

Page 169: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4 Especificidades

mikroC PRO para PIC

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

www.mecatronicadegaragem.blogspot.com

Page 170: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4

mikroC PRO para PIC Especificidades

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

www.mecatronicadegaragem.blogspot.com

Page 171: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4 Especificidades

mikroC PRO para PIC

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 diretiva para especificar o endereç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 Funcall <func_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 quadro alocação no compilados pilha.

Tópicos relacionados: Linker directivas

124

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

www.mecatronicadegaragem.blogspot.com

Page 172: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

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

Descrição

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 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 argumentos devem ser variável do tipo escalar (isto é, aritmética Tipos e

t i ) Exemplo d = 0x1AC30F4;

tmp = Lo (d) / / Igual 0xF4

CAPÍTULO 4

mikroC PRO para PIC Especificidades

Criada em Rotinas

mikroC 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 chamada não imputadoso 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

- - - - - - - - - - -

Lo Oi Superior Maior Delay_us Delay_ms Vdelay_ms Delay_Cyc Clock_Khz Clock_Mhz Get_Fosc_kHz

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

125

www.mecatronicadegaragem.blogspot.com

Page 173: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

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

Descrição

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 encontrados em registo.

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

Requer Os argumentos devem ser variável do tipo escalar (isto é, aritmética Tipos e

t i ) Exemplo d = 0x1AC30F4;

tmp = Hi (d); / / 0x30 Equals

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

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

Descrição

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 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 argumentos devem ser variável do tipo escalar (isto é, aritmética Tipos e

t i ) Exemplo d = 0x1AC30F4;

tmp = Superior (d) / / Igual 0xAC

CAPÍTULO 4 Especificidades

Oi

Superior

mikroC PRO para PIC

126

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

www.mecatronicadegaragem.blogspot.com

Page 174: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Delay_us (const time_in_us);

Retorna Nada.

Descrição

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.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a não conta contra o limite de chamadas aninhadas. 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 * /

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

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

Descrição

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 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 argumentos devem ser variável do tipo escalar (isto é, aritmética Tipos e

t i ) Exemplo d = 0x1AC30F4;

Maior tmp = (d); / / 0x01 Equals

CAPÍTULO 4

mikroC PRO para PIC

Maior

Delay_us

Especificidades

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

127

www.mecatronicadegaragem.blogspot.com

Page 175: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Vdelay_ms (unsigned time_in_ms);

Retorna Nada.

Descrição

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.

Note-se que Vdelay_ms é uma função da biblioteca, em vez de um built-in de rotina, é pre- tantes neste tópico por uma questão de conveniência.

Requer Nada.

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

Protótipo vazio Delay_ms (const time_in_ms);

Retorna Nada.

Descrição

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.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a não conta contra o limite de chamadas aninhadas. 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 /

CAPÍTULO 4 Especificidades

Delay_ms

Vdelay_ms

mikroC PRO para PIC

128

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

www.mecatronicadegaragem.blogspot.com

Page 176: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Delay_Cyc (char Cycles_div_by_10);

Retorna Nada.

Descrição

Cria um atraso baseado no relógio MCU. Atraso dura 10 vezes o param-entrada eter em ciclos MCU.

Note-se que Delay_Cyc é uma função da biblioteca, em vez de um built-in de rotina, é pre- 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 * /

Protótipo não assinado Clock_Khz (void);

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

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

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

Requer Nada.

Exemplo clk = Clock_Khz ();

CAPÍTULO 4

mikroC PRO para PIC

Delay_Cyc

Clock_Khz

Especificidades

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

129

www.mecatronicadegaragem.blogspot.com

Page 177: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned long Get_Fosc_kHz (void);

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

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

Note-se que Get_Fosc_kHz é uma função da biblioteca, em vez de um built-in de rotina, é

pre- Requer Nada.

Exemplo clk = Clock_Khz ();

Protótipo unsigned short Clock_Mhz (void);

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

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

mais próximo.

Este é um "Inline" rotina, o código é gerado no local da chamada, para chamar a Requer Nada.

Exemplo clk = Clock_Mhz ();

CAPÍTULO 4 Especificidades mikroC PRO para PIC

Clock_Mhz

Get_Fosc_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 seja, 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

www.mecatronicadegaragem.blogspot.com

Page 178: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4

mikroC PRO para PIC Especificidades

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, mikroC PRO para PIC específicos, tipos específicos de memória

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

www.mecatronicadegaragem.blogspot.com

Page 179: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

utido 131

www.mecatronicadegaragem.blogspot.com

Page 180: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 4 Especificidades mikroC PRO para PIC

132

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

www.mecatronicadegaragem.blogspot.com

Page 181: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO

5

PIC ESPECIFICOS

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

133

www.mecatronicadegaragem.blogspot.com

Page 182: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 5 PIC Especificidades

mikroC PRO para PIC

Tipos de Eficiência Primeiro de tudo, você deve saber que ALU PIC, que realiza operações aritméticas, é otimizado para trabalhar com bytes. Embora mikroC PRO para PIC é capaz de han- manuseio tipos de dados muito complexos, PIC pode engasgar com elas, especialmente se você estiver de trabalho ção em alguns dos modelos mais antigos. Isto pode aumentar o tempo necessário para realizar mesmo operações simples. conselhos Universal é a utilização de o menor possível tipo em cada situação. Ela se aplica a toda a programação em geral, e duplamente com microcontroladores. Conheça a sua ferramenta. Quando se chega ao cálculo, nem todos os microcontroladores PIC são de desempenho igual. Por exemplo, a família PIC16 carece de recursos de hardware para multi- ply dois bytes, por isso é compensado por um algoritmo de software. Por outro lado, PIC18 família tem HW multiplicadores, e como resultado, a multiplicação de obras consideravelmente mais rápido. Limitações chamadas aninhadas chamada aninhadas representa uma chamada de função dentro do corpo da função, quer para si mesmo (recursivo chamadas) ou para outra função. chamadas de funções recursivas são suportados pelo mikroC 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 às limitações do PIC de memória e pilha. mikroC PRO para PIC limita o número de não-recursivo chamadas aninhadas para:

- 8 chamadas para a família PIC12, - 8 chamadas para a família PIC16, - 31 chamadas para a família PIC18.

Note-se que alguns dos built-in rotinas não contam contra esse limite, devido à sua "Inline" implementação. Número de chamadas aninhadas permitido diminui um, se você usar qualquer uma das segui- ing operadores do código: / *%. Isso diminui ainda mais se você usar as interrupções no programa. Número de reduções é especificada pelo número de funções chamadas a partir de inter- rupt. Verifique reentrância funções. Se o número permitido de chamadas aninhadas for excedido, o compilador apresentará um relatório de uma pilha overflow erro.

www.mecatronicadegaragem.blogspot.com

Page 183: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

134

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

www.mecatronicadegaragem.blogspot.com

Page 184: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 5

mikroC PRO para PIC PIC Especificidades

PIC18FxxJxx Especificidades

Endereço SFR compartilhados

mikroC PRO para PIC não fornece ajuste automático de bits para suplente acessando reg- Ister. Este é um novo recurso adicionado ao pic18fxxjxx família e será apoiado no futuro. Em vários locais no banco SFR, um único endereço é usado para acessar os dois dife- ent registros de hardware. Nestes casos, um "Legado" registro do PIC18 padrão SFR conjunto (como OSCCON, T1CON, etc) as suas quotas de endereço com um suplente, reg- Ister. Estes registos alternativos estão associadas com opções de configuração avançada para os periféricos, ou com o novo dispositivo não os recursos incluídos na SFR PIC18 padrão mapa. Uma lista completa de endereços de registro compartilhado e os registos associados lhes é fornecido na ficha técnica.

PIC16 Especificidades

Quebrando Páginas

Em aplicações orientadas para PIC16, nenhuma única rotina deve exceder uma página (2.000 instruções). Se a rotina não cabe em uma página, vinculador irá reportar um erro. Quando confrontar com este problema, talvez você devesse repensar o design do seu aplicativo - tente quebrar a rotina especial em vários pedaços, 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. Com- empilhadeira automaticamente limpar o bit 9 em cima da partida, de modo que os ponteiros vão se referir a bancos 0 e 1. Para acessar os objetos em bancos de 2 ou 3 através de ponteiro, o usuário deve man- vamente definir a PIA, e restaurar a zero após a operação. As regras se aplicam a declarou qualquer abordagem indireta: matrizes, estruturas e atribuições dos sindicatos, etc

Nota: É muito importante cuidar do PIA corretamente, se você pretende seguir esta abordagem. Se você encontrar esse método é inadequado, com muitas variáveis, você pode considerar a atualização para PIC18.

Nota: Se você tem muitas variáveis no código, tente reorganizá-las com o vinculador directiva absoluta. Variáveis que são abordados apenas diretamente devem ser transferidos para 3 e 4 bancos para aumentar a eficiência.

tópicos relacionados: mikroC PRO para PIC especificidades

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

135

www.mecatronicadegaragem.blogspot.com

Page 185: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Descrição

Este especificador de memória permite a variável a ser armazenado no espaço de Rx (arquivo Register).

Nota: Na maioria dos casos, não haverá espaço suficiente para as variáveis do

usuário em R N il d R

Exemplo / / Coloca y no Rx espaço y rx sfr char;

Descrição Este especificador de memória é usado quando a variável que armazena os dados

d SRAM i t Exemplo / / Coloca PORTG nos dados ram

dados sfr 0x65 PORTG unsigned short absoluta;

Descrição A código tipo de memória pode ser usada para a atribuição constantes no programa

ó i Exemplo / / Coloca txt na memória do programa

const char código txt [] = "ENTER PARAMETER:";

CAPÍTULO 5 PIC Especificidades mikroC PRO para PIC

TIPO DE MEMÓRIA especificadores

A mikroC PRO para PIC suporta o uso de todas as áreas de memória. Cada variável pode ser explicitamente atribuído a um espaço de memória específicos, incluindo um especificador de tipo de memória na declaração, ou implicitamente atribuído.

Os especificadores seguintes tipos de memória podem ser usados:

- - - -

código dados rx sfr

especificadores de tipo de memória podem ser incluídas no declaração da variável.

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

dados

rx

136

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

www.mecatronicadegaragem.blogspot.com

Page 186: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Descrição Este especificador de memória em combinação com (rx, dados) permite ao utilizador aceder es- cial registros função. Ele também instrui o compilador para manter mesmo identificador em C

Exemplo rx sfr y char;

CAPÍTULO 5

mikroC PRO para PIC PIC Especificidades

sfr

Nota: Se nenhum dos especificadores de memória são usadas quando se declara uma variável, dados especificador será definir como padrão pelo compilador.

Tópicos relacionados: Acesso individual bits, SFR, constantes, funções

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

137

www.mecatronicadegaragem.blogspot.com

Page 187: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 5 PIC Especificidades mikroC PRO para PIC

138

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

www.mecatronicadegaragem.blogspot.com

Page 188: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO

6

mikroC PRO para PIC Referência da Linguagem

O mikroC PRO para PIC Language Reference descreve a sintaxe, a semântica ea execução do mikroC PRO para a linguagem PIC.

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.

www.mecatronicadegaragem.blogspot.com

Page 189: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

139www.mecatronicadegaragem.blogspot.com

Page 190: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6 Referência da Linguagem

- 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

- Conceitos

Objetos e lvalues Escopo e visibilidade Espaços de nome Duração

- 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

mikroC PRO para PIC

140

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

www.mecatronicadegaragem.blogspot.com

Page 191: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC

- Declarações

Introdução às declarações Linkage Classes de armazenamento Tipo, qualificação Especificador typedef ASM Declaração Inicialização

- Funções

Introdução às Funções Chamadas de função e argumento de conversão

- 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

- 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)

Referência da Linguagem

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

141

www.mecatronicadegaragem.blogspot.com

Page 192: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6 Referência da Linguagem

- Preprocessor

Introdução à pré-processador Preprocessor directivas Macros Inclusão de arquivos Preprocessor Operadores Compilação condicional

mikroC PRO para PIC

142

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

www.mecatronicadegaragem.blogspot.com

Page 193: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 mikroC PRO para PIC lexical elementos. Eles descrevem as diferentes categorias de unidades de palavra-like (tokens), reconheceu pela mikroC PRO para a PIC.

Na fase de simbolização de compilação, o arquivo de código fonte é analisado (isto é, mano- ken baixo) em tokens e espaços em branco. Os tokens no mikroC 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.

WHITESPACE

Espaço em branco é um nome coletivo dado a espaços (brancos), horizontais e verticais tabulações, caracteres de nova linha e comentários. Espaços em branco podem servir para indicar onde fichas de início e fim, mas para além desta função, qualquer excedente espaços em branco são descartados. Por exemplo, duas seqüências

int i; flutuar f;

e

int

i;

flutuar f;

são lexicalmente equivalente e analisar de forma idêntica para dar seis fichas:

int i ; flutuar f ;

Mikroelektronika - Software e Soluções de hardware para Embedded World

143

www.mecatronicadegaragem.blogspot.com

Page 194: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Em que caso eles sejam protegidos contra o processo de análise normal (eles permanecem como parte da da seqüência). Por exemplo,

char [nome] = "mikro foo";

analisa em sete fichas, 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 (\). Ambos barra invertida e nova linha caracteres são descartados, permitindo que duas linhas físicas de um texto a ser tratados como uma unidade. Então, o seguinte código

"MikroC PRO \

Compilador para PIC "

analisa em "MikroC PRO para PIC Compiler". Consulte a String Constantes para mais da informação.

144

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

www.mecatronicadegaragem.blogspot.com

Page 195: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Os comentários são para uso do programador só, pois eles são retirados do texto de origem antes da análise. Há duas formas para delinear com- mentos: o método de C e C + + método. Ambos são apoiados por mikroC PRO para PIC.

Você também deve seguir as orientações sobre a utilização de espaços em branco e os delimitadores de comentários, discutido mais adiante neste tópico para evitar problemas de portabilidade outros.

comentários C

C comentário é qualquer seqüência de caracteres colocados após a par / símbolo *. A com- mento termina na primeira ocorrência do * / par após a inicial / *. Toda a seqüência, incluindo quatro símbolos delimitador de comentário, é substituídos por um espaço depois expansão de macro.

Na mikroC PRO para a PIC,

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

analisa como:

int i;

Note-se que o mikroC PRO para PIC não suporta um colar nonportable token estratégia usando /**/. Para mais informações sobre colar token, consulte o Preprocessor Operadores.

C + + comentários

A mikroC PRO para PIC permite que os comentários de uma linha usando duas barras adjacentes (//). O comentário pode começar em qualquer posição e se estende até a próxima linha nova.

O código a seguir

int i;

/ / Isto é um comentário

int j;

analisa como:

int i; int j;

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

145

www.mecatronicadegaragem.blogspot.com

Page 196: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

comentários Nested

ANSI C não permite comentários aninhados. A tentativa de um ninho de comentário como esse

/ *

int / * declaração * / i, / *

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

i; * /

o que geraria um erro de sintaxe.

146

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

www.mecatronicadegaragem.blogspot.com

Page 197: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Idioma Referência

TOKENS

Token é o menor elemento de um programa compilador C que pode reconhecer. A pars- er separa os tokens do fluxo de entrada, criando o maior símbolo possível usando os caracteres de entrada em uma esquerda para a direita-scan.

A mikroC PRO para PIC reconhece os seguintes tipos de fichas:

- - - - -

palavras-chave identificadores constantes operadores pontuadores (também conhecido como separadores)

Símbolo de Extração Exemplo

Aqui está um exemplo da extração de token. Dê uma olhada no código exemplo a seguir seqüência:

inter =

a + + + b;

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

O programador que tem escrito o código pode ter a intenção de escrever inter = um + (+ + b), mas não funciona dessa maneira. O compilador iria analisá-lo no sete fichas a seguir:

inter = um + + + b ;

/ / / / / / / / / / / / / /

variável identificador operador de atribuição variável identificador operador postIncrement operador de adição variável identificador terminador de instrução

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

De acordo com as regras de precedência de operador, a nossa seqüência de código é, na verdade:

inter (a + +) + b;

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

147

www.mecatronicadegaragem.blogspot.com

Page 198: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

A mikroC PRO para PIC suporta:

- - - - -

constantes inteiro constantes ponto flutuante constantes de caracteres Constantes cadeia de caracteres (strings literais) 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.

Integer Constantes

As constantes inteiras podem ser decimal (base 10), hexadecimal (base 16) base, binários ( 2) ou octal (base 8). Na ausência de sufixos primordiais, o tipo de dados de um constante inteira é derivado do seu valor.

Long e sufixos Unsigned

O sufixo L (Ou l) ligado a qualquer força constante que constante a ser representado como um tempo. Da mesma forma, o sufixo U (Ou u) obriga a uma constante a ser não assinado. Ambos L e U sufixos podem ser utilizados com a mesma constante em qualquer forma ou processo: ul, Lu, UL, etc

Na ausência de qualquer sufixo (U, u, L, ou l), uma constante é atribuído o "Menor" de os seguintes tipos, que podem acomodar seu valor: curto, curto não assinado, int, unsigned int long int, int unsigned long.

Caso contrário:

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

148

www.mecatronicadegaragem.blogspot.com

Page 199: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 200: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Valor atribuído à constante Assumindo Tipo

<-2147483648 Erro: Fora da faixa!

-2147483648 - -32769 tempo

-32768 - -129 int

-128 - 127 curto

128 - 255 unsigned short

256 - 32767 int

32768 - 65535 unsigned int

65536 - 2147483647 tempo

2147483648 - 4294967295 unsigned long

> 4294967295 Erro: Fora da faixa!

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Decimais

constantes Decimal de -2147483648 a 4294967295 são permitidos. Constantes excedam esses limites vai produzir uma "Out of range" erro. constantes Decimal não deve usar um zero inicial. Uma constante inteira que tem um zero inicial é interpretá- ed como uma constante octal. Assim,

int i = 10; int i = 010; int i = 0;

/ Decimal * 10 * / / Decimal * 8 * / / * Decimal 0 = 0 * octal /

Na ausência de quaisquer sufixos imperiosa, o tipo de dados de um constante decimal é derivada de seu valor, conforme demonstrado abaixo:

Constantes hexadecimais

Todas as constantes a partir de 0x (Ou 0X) estão a ser tomadas hexadecimal. Na ausência sufixos de qualquer substituição, o tipo de dados de um hexadecimal constante é derivada da seu valor, de acordo com as regras apresentadas acima. Por exemplo, 0xC367 serão trata- ed como unsigned int.

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

149

www.mecatronicadegaragem.blogspot.com

Page 201: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Na ausência de qualquer excesso de andar sufixos, o tipo de dados de um binário constante é derivada de seu valor, de acordo com as regras apresentadas acima. Por exemplo, 0b11101 serão tratados como curto.

Octal Constantes

Todas as constantes com um zero inicial são tidas como octal. Se uma constante octal contém os dígitos ilegal 8 ou 9, é reportado um erro. Na ausência de qualquer substituindo o sufixo- es, o tipo de dados de uma constante octal é derivado do seu valor, de acordo com as regras apresentados acima. Por exemplo, 0777 serão tratados como int.

Floating Point Constantes

Uma constante de ponto flutuante é composto por:

- Decimal inteiro - Ponto decimal - Decimal fração - e ou E e um expoente inteiro assinado (opcional) - 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. Ou dec- ponto imal ou carta e (Ou E) com um expoente inteiro assinado (mas não ambos) pode ser omitir- Ted. Estas regras permitem convencionais e científicas (expoente) notações.

Negativo constantes flutuantes são tomadas como constantes positivas com um operador unário menos (-) como prefixo.

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

Aqui estão alguns exemplos:

0. -1.23 23.45e6 2e-5 3E +10 0,09 E34

/ / / / / / / / / / / /

=

= = =

= =

0.0 -1.23 23.45 * 10 ^ 6 2.0 * 10 ^ -5 3.0 * 10 ^ 10 0.09 * 10 ^ 34

A mikroC PRO para PIC de ponto flutuante constantes são do tipo casal. Note-se que o mikroC PRO PIC para a implementação de ANSI Standard considera flutuar e dupla (Juntamente com a long double variante) para ser do mesmo tipo.

150

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 202: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 'A', '+', ou '\ N'. No mikroC PRO para PIC, constantes de caractere único são da unsigned int tipo. constantes Multi caracteres são referidos como con-corda balcões de ou literais de cadeia. Para obter mais informações referem-se a String Constantes.

Sequências de Escape

Uma barra invertida (\) é usada para introduzir uma seqüência de escape, que permite uma representação visual de certos caracteres não gráficos. Uma das mais comuns constantes de escape é o caractere de nova linha (\ n). 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, por exemplo, '\ X3F' para a questão marca. Qualquer valor dentro dos limites legais para o tipo de dados char (0 para 0xFF para o mikroC PRO para PIC) pode ser usado. Números maiores irá gerar o erro do compilador"Fora de alcance". Por exemplo, o número octal \ 777 é maior do que o valor máximo permitido (\ 377) e irá gerar um erro. O primeiro caractere nonoctal ou não hexadecimais encontrados em uma seqüência de escape octal ou hexadecimal marca o fim da seqüência.

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

A tabela a seguir mostra as seqüências de escape disponíveis:

Seqüência \ A

\ B

\ F

\ N

\ R

\ T

\ V

\ \

\ '

\ "

\?

\ O

\ XH

\ XH

Valor 0x07 0x08 0x0C 0x0A 0x0D 0x09 0x0B 0x5C 0x27 0x22 0x3F

Char BEL BS FF LF CR HT VT \ » '' ? qualquer qualquer qualquer

Descrição sinal audível Retrocesso Formfeed Newline (Avanço de linha) Retorno de carro Tab (horizontal) Vertical Tab Backslash aspas simples (apóstrofo) Aspas duplas Ponto de interrogação S = string de até 3 dígitos octais H = seqüência de dígitos hexadecimais H = seqüência de dígitos hexadecimais

Mikr

www.mecatronicadegaragem.blogspot.com

Page 203: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

oelektronika - Soluções de software e hardware para o mundo embutido 151www.mecatronicadegaragem.blogspot.com

Page 204: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Aqui está um exemplo:

Lcd_Out_Cp ("\ x091.0 Intro");

Este destina-se a ser interpretada como \ X09 e "Intro 1.0". No entanto, o mikroC PRO PIC para compila-lo como o número hexadecimal \ X091 e literal de cadeia "0,0 Intro ". Para evitar tais problemas, podemos reescrever o código da seguinte forma:

Lcd_Out_Cp ("\ X09", "1.0 Introdução");

Para obter mais informações sobre a linha anterior, referem-se a String Constantes.

Ambigüidades também pode ocorrer se uma seqüência de escape octal é seguido por um nonoctal dígitos. Por exemplo, as seguintes constantes:

"\ 118"

seria interpretado como um de dois caracteres constante composta dos personagens \ 11 e 8, porque 8 não é um dígito octal legal.

String Constantes

constantes da corda, também conhecido como literais string, são um tipo especial de constantes que armazenar seqüências fixas de caracteres. Uma seqüência literal é uma seqüência de qualquer número de caracteres entre aspas duplas:

"Esta é uma string."

A string nula, ou string vazia, é escrito como "". Uma seqüência literal é armazenada internamente como uma determinada seqüência de caracteres mais um caractere nulo final. Uma seqüência de caracteres nula é armazenado como um único caractere nulo.

Os caracteres entre aspas pode incluir seqüências de escape. Este código, por exemplo:

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

impressões como isso:

"Nome" \

Endereço

www.mecatronicadegaragem.blogspot.com

Page 205: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

152

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

www.mecatronicadegaragem.blogspot.com

Page 206: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

O "nome" é precedido por dois guias, o endereço é precedido por um guia. A linha é seguido por duas novas linhas. A \ " fornece interior aspas. A fuga seqüência de caracteres \ \ é traduzida em \ pelo compilador.

literais string adjacentes separados apenas por espaços em branco são concatenados durante o análise de fase. Por exemplo:

"Este é" apenas "

"Um exemplo".

é equivalente a

"Este é apenas um exemplo."

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. "

Enumeração Constantes

constantes de enumeração são identificadores definidos no enum declarações do tipo. A identi- verificadores são normalmente escolhido como mnemônicos de contribuir para a legibilidade. Enumeração con- são de balcões de int tipo. Eles podem ser usados em qualquer expressão, onde constantes inteiro são válidos.

Por exemplo:

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

A identificadores (inquiridores) utilizados devem ser exclusivos dentro do escopo do enum dec- vai fazendo. inicializadores negativas são permitidas. Veja Enumerações para obter detalhes sobre enum declarações.

Mikroelektronika - Software e Soluções de hardware

www.mecatronicadegaragem.blogspot.com

Page 207: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

para Embedded World 153

www.mecatronicadegaragem.blogspot.com

Page 208: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Qualquer coisa declarados como const não podem alterar seu valor. Também é ilegal a criação de um ponteiro que pode violar um cedível não do objeto constante.

Considere os seguintes exemplos:

int i; int * Pi; int * const cp = &I; int const ci = 7; int const * PCI;

/ / / / / / / / / /

i é um int pi é um ponteiro para int (não inicializado) cp é um ponteiro constante para int A CI é uma constante int PCI é um ponteiro para int constante

int const * const cpc = &ci; / / CCP é um ponteiro constante para um / / Int constante

As seguintes atribuições legais:

i = IC; * Cp = ci;

+ + PCI; pci = cpc;

/ / / / / / / / / / / /

Atribuir-const int para int Atribuir-const int objeto de pontas-de-por-um-const-ponteiro Incrementar um ponteiro-para-const Atribuir um const-ponteiro-para-a-const a um pointer-para-const

Os seguintes atribuições são ilegais:

ci = 0; ci -; * Pci = 3;

cp = &ci;

cpc + +; pi = PCI;

/ / / / / / / / / / / / / / / / / / / /

NO - não pode atribuir a um const int NO - não pode mudar um const int NO - não pode atribuir a um objeto apontou para pelo ponteiro para const. NO - não pode atribuir a um ponteiro const, ainda que o valor não sofrerá alterações. NO - const mudança cant-ponteiro NO - se essa atribuição era permitido, você seria capaz de atribuir a * pci (Um valor constante), atribuindo a * pi.

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.

154

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 209: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, sim, 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, constantes de enumeração, simples constantes (sem matrizes constantes ou estruturas), sizeof operadores.

Expressões constantes não podem conter nenhum dos seguintes operadores, a menos que o Os operadores estão contidos no operando de uma sizeof operador: atribuição, decremento, vírgula, chamada de função, de incremento.

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

expressão constante pode ser usado em qualquer uma constante é legal.

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

155

www.mecatronicadegaragem.blogspot.com

Page 210: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

156 - E E SOLUÇÕES PARA PARA O MUNDO

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. Além de palavras-chave C padrão, todos os SFR relevantes são definidos como variáveis globais e representam palavras reservadas que não pode ser redefinido (por exemplo: TMR0, PCL etc.) Sondar o Assistente de código para letras específicas (Ctrl + Espaço no Editor) ou consulte a pré- definidos e constantes globais.

Aqui está um alfabética lista de palavras-chave em C:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

asm auto quebrar caso char const continuar padrão fazer dupla mais enum extern flutuar para goto se int tempo Registre-se retorno curto assinado sizeof estáticas struct switch typedef União não assinado vazio voláteis enquanto

Além disso, o mikroC PRO para PIC inclui um número de identificadores predefinidos utilizados em bibliotecas. Você pode substituí-los por suas próprias definições, se você quer desenvolver sua próprias bibliotecas. Para obter mais informações, consulte mikroC PRO PIC para Bibliotecas.

Mikroelektronika - SOFTWARESOFTWAREHARDWAREHARDWARE SOLUTIONSEMBEDDEDEMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com

Page 211: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, variáveis simbólicas constantes, user-defined tipos de dados e rótulos. 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).

Os identificadores podem conter as letras de A a Z e A a Z, caractere"_", E dígitos 0-9. A única restrição é que o primeiro caractere deve ser uma letra ou um sublinhado.

Caso sensibilidade

A mikroC PRO para PIC identificadores não são sensíveis ao caso por padrão, de modo que Soma, suma, e soma representam um equivalente identificador. sensibilidade processo pode ser ativado ou sus- pendido na janela Configurações de saída. Mesmo entre maiúsculas e minúsculas é desligado Palavras-chave permanecem maiúsculas e minúsculas e devem ser escritas em minúsculas.

Singularidade e Âmbito

Embora os nomes de identificador são arbitrários (de acordo com as regras descritas), se o mesmo nome é usado por mais de um identificador dentro do mesmo escopo ea partilha do espaço de mesmo nome, então o erro surge. nomes duplicados são legais para nome diferente espaços, independentemente das regras de escopo. Para obter mais informações sobre o escopo, consulte Escopo e visibilidade.

Exemplos Identifier

Aqui estão alguns identificadores válidos:

temperature_V1 Pressão no_hit dat2string SUM3 _vtext

... e aqui estão alguns identificadores inválidos:

7temp % Maior int j23.07.04

/ / / / / / / /

NO NO NO NO

- - - -

não pode não pode não pode não pode

começar com um numeral conter caracteres especiais jogo palavra reservada conter caracteres especiais (ponto)

www.mecatronicadegaragem.blogspot.com

Page 212: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

157

www.mecatronicadegaragem.blogspot.com

Page 213: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Pontuadores

A mikroC PRO para PIC pontuadores (também conhecido como separadores) são:

- - - - - - - - -

[] - Suportes () - Parênteses {} - Suspensórios ,- Vírgula ;- Ponto e vírgula :- Cólon *- Asterisco =- sinal de igual #- sinal de libra

A maioria destes pontuadores também funcionam como operadores.

Suportes

Suportes [] subscritos indicam única matriz e multidimensional:

char ch, str [] = "mikro";

int mat [3] [4]; CH = str [3];

/ * 3 x 4 * matriz / / * Elemento 4 /

Parênteses

Parênteses () são usados para agrupar expressões, isolar expressões condicionais, e indicam as chamadas de função e os parâmetros de função:

d = c * (A + b);

if (d == z) + + x; func (); void func2 (int n);

/ * Substituir * precedência normal /

/ * * Essencial com instrução condicional / / * Chamada da função, não args * /

/ * 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, consulte Operadores Precedência e associatividade e Expres- sões.

158

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

www.mecatronicadegaragem.blogspot.com

Page 214: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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; func ();

}

Fechamento da chave serve como um terminador para o comando composto, então um ponto e vírgula não é exigida após }, Exceto em declarações estrutura. Às vezes, o ponto e vírgula pode ser ilegal, como no

if (declaração)

{... }; / * Ponto-evírgula ilegal! * / mais

{... };

Para obter mais informações, consulte a instruções compostas.

Vírgula

Vírgula (,) separa os elementos de uma lista de argumentos da função:

void (int n, float f pc, char) func;

Vírgula também é usado como um operador em expressões vírgula. Misturando dois usos da vírgula é legal, mas você deve usar parênteses para distingui-los. Note-se que (exp1, exp2) evalutates ambos, mas é igual para o segundo:

função (i, j); chamada * / função com dois argumentos * / func ((exp1, exp2), (exp3, EXP4, exp5)) / * também chamadas de funções com duas args! * /

Ponto e vírgula

Vírgula (;) é um terminador de instrução. Qualquer expressão C legal (incluindo o vazio expressão), seguido por um ponto e vírgula é interpretado como uma declaração, conhecida como expressão comunicado. A expressão é avaliada e seu valor é descartado. Se o declaração de expressão não tem efeitos secundários, a mikroC PRO para PIC pode ignorá-la.

a + b; + + A; ;

/ * Avaliar a + b, mas descarta valor * / / * O efeito de lado em um, mas descarta valor de + + a * / / * Expressão vazia, ou um comando nulo * /

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

159

www.mecatronicadegaragem.blogspot.com

Page 215: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, i + +);

Para obter mais informações, consulte Demonstrações.

Cólon

Use dois pontos (:) para indicar a instrução rotulada:

start: x = 0;

... goto início;

As etiquetas são discutidos nas declarações identificadas.

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 *;

/ * 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; double_ptr *** duplo;

/ * Um ponteiro para um array de inteiros * / / * Um ponteiro para uma matriz de duplas * /

Você também pode usar o asterisco como um operador, quer dereference um ponteiro ou como mul- operador tiplication:

i * = int_ptr; a = b * 3,14;

Para obter mais informações, consulte os ponteiros.

Cadastre-se igual

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

www.mecatronicadegaragem.blogspot.com

Page 216: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, 2, 3, 4, 5}; int x = 5;

sinal de igual é usado também como um operador de atribuição em expressões:

int a, b, c; a = b + c;

Para obter mais informações, consulte Operadores de Atribuição.

Cadastre Libra (Directiva Preprocessor)

Libra sinal (#) indica uma directiva de pré-processamento, quando ele ocorre como o primeiro não- caracteres em branco em uma linha. Significa uma ação compilador, não necessariamente asso- ciado com uma geração de código. Veja as directivas do pré-processador para obter mais infor- ção.

# 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. Veja os Operadores Preprocessor.

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

161

www.mecatronicadegaragem.blogspot.com

Page 217: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

CONCEITOS

Esta seção aborda alguns conceitos básicos da linguagem, essencial para a compreensão de como funcionam os programas de C. Em primeiro lugar, precisamos estabelecer os seguintes termos que serão utilizados em toda a ajuda:

- - - -

Objetos e lvalues Escopo e visibilidade Espaços de nome 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). Esse uso de um termo objeto é diferente de um mesmo termo, utilizado em linguagens orientadas a objeto, que é mais geral. Nosso definiton da palavra seria englobam funções, variáveis, constantes simbólicas, tipos de dados definidos pelo usuário, e etiquetas.

Cada valor tem um nome associado e tipo (também conhecido como um tipo de dados). A nome é usado para acessar o objeto e pode ser um identificador simples ou complexas expres- Sion que se refere exclusivamente o objeto.

Objetos e declarações

Declarações necessário estabelecer um mapeamento entre identificadores e objetos. Cada declaração associa um identificador com um tipo de dados.

Associando os identificadores de objetos requer que cada identificador de ter pelo menos dois attrib- nutos: classe de armazenamento e tipo (por vezes referido como o tipo de dados). A mikroC PRO para PIC compilador deduz destes atributos a partir de declarações implícitas ou explícitas no código-fonte. Normalmente, apenas o tipo é especificado explicitamente a classe de armazenamento e espe- ifier assume o auto valor automático.

De um modo geral, um identificador não possa ser legalmente utilizado em um programa antes de sua dec- ponto vai fazendo no código-fonte. excepções a esta regra legal (conhecido como ref progressistas erences) são os rótulos, as chamadas para funções não declarado, e struct ou tags união. A gama de objetos que podem ser declaradas inclui:

- Variáveis - Funções - Tipos - Matrizes de outros tipos - Estrutura, união e tags enumeração

www.mecatronicadegaragem.blogspot.com

Page 218: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

162

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

www.mecatronicadegaragem.blogspot.com

Page 219: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC

- - - - -

membros da estrutura membros da União constantes Enumeração Declaração de rótulos Preprocessor macros

Referência da Linguagem

A natureza recursiva da sintaxe declarator permite declarators complexo. Você provavelmente vai querer usar typedefs para melhorar a legibilidade se construir objetos complexos.

Lvalues

Lvalue é um objeto locator: uma expressão que designa um objeto. Um exemplo de lvalue expressão é * P, onde P é qualquer expressão que avalia um ponteiro não nulo. 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. Um ponteiro const para uma constante, por exem- plo, não é um lvalue modificáveis. Um ponteiro para uma constante pode ser alterado (mas seu deref- valor referenciadas não podem).

Historicamente, eu defendia "Esquerda", 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 exemplo, se a e b são NonCon- identificadores inteiro constante com armazenamento de memória corretamente alocados, eles são ambos os mod- lvalues ifiable e atribuições, como a = 1 e b = a + b são legais.

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. Tais expressões são às vezes chamados rval- ues (Abreviação de valores à direita).

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

www.mecatronicadegaragem.blogspot.com

Page 220: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

utido 163

www.mecatronicadegaragem.blogspot.com

Page 221: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Existem diferentes categorias de escopo: bloco (ou local), fun- ção, protótipo da função, e arquivo. Estas categorias dependem de como e onde iden- tifiers são declaradas.

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). declarações dos parâmetros com uma definição de função ção também tem escopo de bloco, limitado ao âmbito de aplicação do corpo da função. Arquivo: Arquivo identificadores de escopo, também conhecido como globais, são declaradas fora de todas as blocos, o seu âmbito é, do ponto de declaração para o fim do arquivo de origem. Função: Os identificadores apenas de alcance função são rótulos de instrução. Label nomes podem ser usados com as declarações goto lugar na função em que o rótulo é declarada. Rótulos são declarados implicitamente por escrito LABEL_NAME: fol seguidos por um comunicado. Rótulo nomes devem ser exclusivos dentro de uma função. 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. Este escopo termina no final do protótipo da função.

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.

Alcance e visibilidade geralmente coincidem, mas há circunstâncias em que um objeto se torna temporariamente ocultas pelo aparecimento de uma segunda via do identificador: o objeto ainda existe, mas o identificador original não pode ser usado para acessá-lo até o âmbito da segunda via do identificador termina.

Tecnicamente, a visibilidade não pode ultrapassar o âmbito de aplicação, mas pode ultrapassar um escopo de visibilidade. Veja o seguinte exemplo:

vazio f (int i) { int j; j = 3;

{ dupla j; j = 0,1;

/ Auto / por padrão / / Int i e j estão no escopo e visível

/ Block nested / / J é o nome local no bloco aninhado / / I e j dupla são visíveis; / / Int j = 3, em abrangência, mas oculto

www.mecatronicadegaragem.blogspot.com

Page 222: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

}

164

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

www.mecatronicadegaragem.blogspot.com

Page 223: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC

j + = 1;

/ / Saída dupla j de alcance / / Int j visível e = 4

Referência da Linguagem

} / / 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. A mikroC PRO para PIC utiliza quatro categorias distintas de identificadores:

1. goto nomes de rótulo - deve ser exclusivo dentro da função em que se encontram

declarou. 2. Estrutura, união e enumeração marcas - deve ser exclusivo dentro do bloco no

que eles são definidos. Tags declarada fora de qualquer função deve ser exclusivo. 3. Estrutura e nomes de membros da União - deve ser exclusivo dentro da estrutura ou

União, nos quais eles são definidos. Não há nenhuma restrição sobre o tipo ou deslocamento de membros com o nome do membro mesmo em diferentes estruturas.

4. Variáveis, typedefs, funções e membros de enumeração - deve ser único, com no âmbito em que eles são definidos. Externamente identificadores devem ser declaradas única entre as variáveis declaradas no exterior.

nomes duplicados são legais para espaços de nomes diferentes, independentemente das regras de escopo.

Por exemplo:

int azul = 73;

{ / / Abrir um bloco de

enum {cores preto, vermelho, verde, violeta, azul, branco c}; / Azul = 3 * enumerador agora esconde declaração externa de azul * / int

struct {cores int i, j;}; dupla vermelho = 2;

}

azul = 37;

/ / ILEGAL: cores duplicadas tag / / Ilegal: redefinição de vermelho / / Volta no âmbito int azul

Duração

Duração, estreitamente relacionado com uma classe de armazenamento, define um período em que o declarado iden- tifiers têm real, objetos físicos alocados na memória. Nós também distinguir entre com- tempo de bate-estacas e objetos em tempo de execução. Variáveis, por exemplo, ao contrário typedefs e tipos, têm real memória alocada em tempo de execução. Existem dois tipos de duração: estáticas e local.

Mikroelektro

www.mecatronicadegaragem.blogspot.com

Page 224: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 225: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, logo que a execução é sub- forma, esta alocação de armazenamento dura até que o programa termina. duração estática objetos reside normalmente em dados fixos segmentos alocados de acordo com a memória especificador em vigor. Todos os globals têm duração estática. Todas as funções, sempre que definidos, são objectos com 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.

Na mikroC PRO para PIC, objetos duração estáticos são não inicializado para zero (ou nulo) na ausência de qualquer inicializador explícito.

Não misture com duração estática arquivo ou escopo global. Um objeto pode ter duração estática e âmbito local - veja o exemplo abaixo.

Local Duração

objetos duração locais também são conhecidos como automática objetos. Eles são criados no pilha (ou num registo), quando um bloco de inclusão ou de uma função é inserida. Eles são desalocado quando o programa sai que bloco ou função. Local objetos duração deve ser explicitamente inicializado, caso contrário, seu conteúdo é imprevisível. O especificador de classe de armazenamento auto pode ser usado na declaração de variáveis locais duração, mas geralmente é redundante, pois auto é padrão para as variáveis declaradas dentro de um bloco.

Um objeto com duração locais também têm um alcance local, porque não existe fora do seu bloco de inclusão. Por outro lado, um objeto de âmbito local pode tem estática dura- ção. Por exemplo:

vazio f () {

/ * Variável duração locais; init uma sobre cada chamada para f * / int a = 1; / * A variável de duração estática; b init apenas em primeira convocação para f * / static int b = 1; / * Checkpoint! * / a + +; b + +;

}

vazio main () { / * No posto, vamos f (); / / A = 1, b = 1, após f (); / / a / b = 1 = 2, após f (); / / a / b = 1 = 3, após

/ / Etc }

ter: * / primeira chamada, segunda chamada, terceira chamada,

166

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

www.mecatronicadegaragem.blogspot.com

Page 226: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

TIPOS

A mikroC PRO para PIC é uma linguagem estritamente digitado, o que significa que cada objeto, função, e expressão deve ter um tipo estritamente definido, conhecido no tempo de com- compilação. Note-se que o mikroC PRO para PIC funciona exclusivamente com tipos numéricos.

O tipo serve:

para determinar a alocação de memória correto exigido inicialmente. para interpretar o bit padrões encontrados no objeto durante o acesso posterior.

em muitas situações de verificação de tipo, para garantir que as atribuições ilegais são presos.

A mikroC PRO para PIC suporta o padrão muitos (pré) e definidas pelo usuário tipos de dados, inclusive assinado e sem assinatura inteiros de vários tamanhos, de ponto flutuante números com precisão várias matrizes, estruturas e uniões. Além disso, o ponto dores para a maioria destes objetos podem ser criados e manipulados na memória.

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. Um dado tipo de dados pode ser visto como um conjunto de valores (muitas vezes dependente da implementação), que identificadores do mesmo tipo podem assumir, juntamente com um conjunto de operações permitidas com esses valores. O operador em tempo de compilação sizeof permite determinar o tamanho em bytes de qualquer padrão ou tipo definido pelo usuário.

A mikroC 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 mikroC PRO para PIC pode sempre acessar, interpretar, e (possivelmente) mudar o padrão de bits nhece na memória correspondente a cada objeto ativo em seu programa.

Tipo Categorias

Um comum maneira de categorizar os tipos é dividi-los em:

- Fundamental - Derivada

Os tipos fudamental representam tipos que não podem ser divididas em partes menores. Eles são por vezes referido como não estruturados tipos. Os tipos fundamentais são void, char, int, float, e casal, juntamente com curtas, longas, assinado e não assinado vari- formigas de alguns deles. Para obter mais informações sobre os tipos fundamentais, consulte o tópico Fun- Tipos fundamentais. Os tipos derivados também são conhecidos como estruturado tipos e incluem ponteiros para

www.mecatronicadegaragem.blogspot.com

Page 227: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

outros tipos, arrays de outros tipos, tipos de funções, estruturas e sindicatos. Para obter mais informações sobre os tipos de derivados, consulte o tópico tipos derivados.

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

167

www.mecatronicadegaragem.blogspot.com

Page 228: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, mentos, e são o modelo de representação de dados elementares sobre o nível da máquina. A tipos fudamental são muitas vezes referidos como tipos não-estruturados, e são utilizados como na criação de elementos mais complexos tipos derivados ou definida pelo usuário.

Os tipos fundamentais incluem:

-Aritmética Tipos - Enumerações - Tipo Void

Aritmética Tipos

Os especificadores de tipo aritméticos são construídos a partir de palavras-chave: void, char, int, float e casal, juntamente com os prefixos curtas, longas, assinado e não assinado. A partir dessas palavras-chave pode criar dois tipos integral e de ponto flutuante.

Tipos Integral

Os tipos char e int, juntamente com suas variantes, são considerados como parte integrante tipos de dados. As variantes são criados usando um dos modificadores de prefixo curtos, longos, assinado e não assinado.

Na tabela abaixo é uma visão geral dos tipos integrais - Palavras-chave entre parênteses pode ser (e são muitas vezes) omitido.

Os modificadores assinado e não assinado pode ser aplicado tanto char e int. Na ausência do prefixo unsigned, assinada é automaticamente assumida por tipos integrais. A única exceção é char, que é não assinado por padrão. As palavras-chave assinado e sem assinatura, quando usado por si só, significa assinado int e unsigned int, , respectivamente.

Os modificadores curto e tempo só pode ser aplicada a int. As palavras-chave curto e de comprimento, utilizada por conta própria, quer dizer short int e int tempo, respectivamente.

168

www.mecatronicadegaragem.blogspot.com

Page 229: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 230: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Tipo Tamanho em B t

Faixa (Não assinado) char 1 0 .. 255

assinado char 1 - 128 .. 127

(Assinado) (int) short 1 - 128 .. 127

unsigned short (int) 1 0 .. 255

(Assinado) int 2 -32768 .. 32767

unsigned (int) 2 0 .. 65535

(Assinado) (int) de i

4 -2147483648 .. 2147483647

unsigned long (int) 4 0 .. 4294967295

Tipo Tamanho em Bytes Faixa

flutuar 4 -1,5 * 1045 .. +3.4 * 1038

dupla 4 -1,5 * 1045 .. +3.4 * 1038

long double 4 -1,5 * 1045 .. +3.4 * 1038

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Tipos de ponto flutuante

Os tipos flutuar e casal, juntamente com o long double variante, são consi- siderada tipos de ponto flutuante. A mikroC PRO PIC para a implementação de um Padrão ANSI considera que todas são do mesmo tipo.

ponto flutuante na mikroC PRO para PIC é implementado usando o AN575 Microchip 32-bit do formato (IEEE 754 complacente).

Uma visão geral do ponto flutuante tipos é mostrada na tabela abaixo:

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

169

www.mecatronicadegaragem.blogspot.com

Page 231: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Enumerações

Uma enumeração tipo de dados é usado para representar um discreto, abstrata conjunto de val- ues com as devidas nomes simbólicos.

Enumeração Declaração

Enumeração é declarado assim:

enum tag {lista de enumeração-};

Aqui, tag é um nome opcional da enumeração; enumeração de-lista é uma vírgula delimitado lista de valores discretos, os entrevistadores (ou enumeração constantes). Cada enu- merator é atribuído um valor fixo integral. Na ausência de explícita inicializadores, o enumerador primeiro é definido como zero, eo valor de cada enumerador sucesso é definido ao valor de seu antecessor, acrescido de um.

Variáveis da enum tipo são declaradas as mesmas variáveis de qualquer outro tipo. Para exemplo, a seguinte declaração:

enum {cores preto, vermelho, verde, violeta, azul, branco c};

estabelece um único tipo integral, enum cores, variável c deste tipo, e um conjunto de enumeradores com valores inteiros constantes (preto = 0, vermelho = 1, ...). Na mikroC PRO para a PIC, uma variável de um tipo enumerado pode ser atribuído qualquer valor do tipo int - além da não verificação de tipo que é imposta. Isto é:

c = vermelho; c = 1;

/ / OK / / Ainda bem, significa o mesmo

Com explícita inicializadores integral, você pode definir um ou mais entrevistadores, específicas valores. O inicializador pode ser qualquer expressão que produz um número inteiro positivo ou negativo valor (após promoções inteiro possível). Quaisquer nomes subseqüentes sem inicializadores vai ser aumentada por um. Estes valores são geralmente únicas, mas as duplicatas são legais.

A ordem de constantes podem ser explicitamente re-arranjadas. Por exemplo:

enum {cores preto,

vermelho, verde, azul = 6, violeta, branco = 4};

/ / / / / / / / / / / /

valor valor valor valor valor valor

0 1 2 6 7 4

170

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

www.mecatronicadegaragem.blogspot.com

Page 232: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

expressão inicializador pode incluir entrevistadores previamente declarado. Por exemplo, em a seguinte declaração:

enum memory_sizes bit = {1, nibble = 4 bits *, byte = 2 * mordidela,

kilobyte = 1024 bytes *};

nibble adquiriria o valor 4, o valor de 8 bytes e kilobytes o valor 8192.

Anomous Tipo Enum

Em nossa declaração anterior, 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;

/ * Declarar variáveis e bg * fronteira

Como com struct e declarações união, 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, verde, violeta, azul, branco cor};

Enumeração Âmbito

tags Enumeração compartilhar o espaço de mesmo nome de marcas de estrutura e união. Enu- merators compartilhar o mesmo espaço de nomes como identificadores de variáveis comuns:

int azul = 73;

{/ / abrir um bloco de

enum {cores preto, vermelho, verde, violeta, azul, branco c}; / Azul = 3 * enumerador agora esconde declaração externa de azul * / int

struct {cores int i, j;}; dupla vermelho = 2;

}

azul = 37;

/ / ILEGAL: cores duplicadas tag / / ILEGAL: redefinição de vermelho / / Volta no âmbito int azul

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

171

www.mecatronicadegaragem.blogspot.com

Page 233: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Tipo Void

vazio é um tipo especial indicando o ausência de qualquer valor. Não há objetos de vazio, ao contrário, vazio é utilizada para obter os tipos mais complexos.

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.

vazio print_temp (char temp) {

Lcd_Out_Cp ("Temperatura:"); Lcd_Out_Cp (temp); Lcd_Chr_Cp (223); / personagem / graus Lcd_Chr_Cp ('C');

}

Use vazio como uma função de posição se a função não tem parâmetros. Alter- nativamente, você pode escrever apenas parênteses vazios:

main (void) {/ / mesmo que main () ...

}

Genéricos Ponteiros

Ponteiros podem ser declarados como vazio, o que significa que eles podem apontar para qualquer tipo. Esses ponteiros são chamados genéricas.

172

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

www.mecatronicadegaragem.blogspot.com

Page 234: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Tipos derivados

Os tipos derivados também são conhecidos como tipos estruturados. Eles são usados como elementos na criação de mais complexos tipos definidos pelo usuário.

Os tipos derivados incluem:

- - - -

matrizes ponteiros estruturas sindicatos

Matrizes

Matriz é a mais simples e mais comumente usado tipo estruturado. Uma variável de matriz tipo na verdade é um array de objetos do mesmo tipo. Estes objectos representam ele- mentos de uma matriz e são identificados por sua posição na matriz. Uma matriz consiste em uma região contígua de armazenamento exatamente grande o suficiente para armazenar todos os seus elementos.

Declaração Array

declaração de matriz é semelhante à declaração de variável, 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. A tipo pode ser qualquer tipo escalar (excepto void), enumeração tipo definido pelo usuário, o ponteiro, ou outra matriz. Resultado da expressão constante dentro dos colchetes determina um número de elementos na matriz. Se uma expressão é dada em um declarator matriz, ele deve avaliar a um constante inteira positiva. O valor é um número de elementos em uma matriz.

Cada um dos elementos de um array é indexado de 0 ao número de elementos menos um. Se um número de elementos é n, os elementos de matriz podem ser abordadas como variáveis Array_Name [0] .. [N-1] Array_Name de tipo.

Aqui estão alguns exemplos de declaração de matriz:

# Define MAX = 50 int flutuar flutuar

vector_one [10] / * declara um array de 10 inteiros * / vector_two [MAX]; / * declara uma matriz de 50 carros alegóricos * / vector_three [MAX - 20] / * declara uma matriz de 30 carros alegóricos * /

www.mecatronicadegaragem.blogspot.com

Page 235: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 236: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Inicialização de matriz

Uma matriz pode ser inicializada na declaração, atribuindo-lhe um delimitado por vírgula seqüência de valores dentro de chaves. Ao inicializar uma matriz na declaração, poderá omitir o número de elementos - será determinada automaticamente de acordo com a número de elementos atribuídos. Por exemplo:

/ * Declare uma matriz que contém o número de dias de cada mês: * / int dia [12] = {} 31,28,31,30,31,30,31,31,30,31,30,31;

/ * Esta declaração é idêntico ao anterior * / int dias [] = {} 31,28,31,30,31,30,31,31,30,31,30,31;

Se você especificar os valores de comprimento e de partida, o número de valores de partida deve não pode exceder o comprimento especificado. A oposto é possível, neste caso, o arrasto "Excesso" elementos serão atribuídos a alguns valores de tempo de execução encontradas a partir de mem- teoria.

No caso da matriz de char, você pode usar um menor seqüência literal notação. Por exemplo:

/ * As duas declarações são idênticas: * / const char msg1 [] = {'T', 'E', 's', 't', '\ 0'}; const char msg2 [] = "Teste";

Para obter mais informações sobre os literais cadeia de caracteres, consulte a String Constantes.

n Expressões Matrizes

Quando o nome de uma matriz aparece na avaliação da expressão (excepto com a ópera- res & e sizeof), é convertido implicitamente para o ponteiro que aponta para a primeira matriz elemento. Veja matrizes e ponteiros para mais informações.

Arrays multi-dimensionais

Uma matriz é unidimensional, se for do tipo escalar. arrays unidimensionais são algumas- vezes referido como vetores.

Matrizes multidimensionais são construídos por declarar arrays de tipo de matriz. Estes matrizes são armazenadas na memória de tal maneira que as mudanças mais à direita subscrito mais rápido, ou seja, as matrizes são armazenadas "Em linhas". Aqui está um exemplo de matriz de 2 dimensões:

flutuar m [50] [20];

/ * Array de 2 dimensões de tamanho 50x20 * /

A variável m é uma matriz de 50 elementos, que por sua vez, são matrizes de 20 carros alegóricos cada. Assim, temos uma matriz de 50x20 elementos: o primeiro elemento é m [0] [0], a última

174

www.mecatronicadegaragem.blogspot.com

Page 237: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 238: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

é m [49] [19]. O primeiro elemento da linha 5 seria m [4] [0].

Se você não inicializar a matriz na declaração, você pode omitir a primeira dimensão da array multi-dimensional. Nesse caso, a matriz está localizado em outro lugar, por exemplo, em outro arquivo. Esta é uma técnica comumente usada quando passar matrizes como parâmetros de função:

int a [3] [2] [4];

/ * Matriz 3-dimensional de tamanho 3x2x4 * /

vazio func (int [n] [2] [4]) {/ * podemos omitir primeira dimensão * /

... n [2] [1] [3] + +; incremento * / * o último elemento /

}

vazio main () {

... func (a);

}

Você pode inicializar um array multi-dimensional com um conjunto adequado de valores dentro suspensórios. Por exemplo:

int a [3] [2] = {{1,2}, {2,6}, {3,7}};

Ponteiros

Ponteiros são objetos especiais para a realização (ou "Apontando para") endereços de memória. Na mikroC PRO para PIC, endereço de um objeto na memória podem ser obtidas por meio de um operador unário &. Para alcançar o objeto pontiagudo, usamos um operador de indireção (*) em um ponteiro.

Um ponteiro do tipo "Ponteiro para objeto do tipo" guarda o endereço da (ou seja, aponta para) um objeto do tipo. Como os ponteiros são objetos, você pode ter um ponteiro apontando para um ponteiro (e assim por diante). Outros objetos comumente apontado incluem matrizes, estruturas e sindicatos.

Um ponteiro para uma função é melhor pensar como um endereço, normalmente em um segmento de código, onde o código executável que a função é armazenado, isto é, o endereço para o qual o controle é transferido quando essa função é chamado.

Embora ponteiros contêm números com a maioria das características de inte-assinado gers, eles têm suas próprias regras e restrições para as declarações, as atribuições, con- versões, e aritmética. Os exemplos nas seções seguintes ilustram algumas dessas regras e as restrições.

Mikroelektronika -

www.mecatronicadegaragem.blogspot.com

Page 239: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 240: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, mas com * à frente do identificador. Um tipo no início da declaração especifica o tipo de um objeto pontiagudo. Um ponto- er deve ser declarado como apontando para algum tipo particular, ainda que este tipo é vazio, o que realmente significa um ponteiro para qualquer coisa. Ponteiros para vazio são muitas vezes chamados genéricos ponteiros, e são tratados como ponteiros para char na mikroC PRO para a PIC.

Se tipo é qualquer tipo pré-definido ou definido pelo usuário, incluindo vazio, a declaração

Tipo * p;

/ * Ponteiro Uninitialized * /

declara p ser do tipo "Ponteiro para tipo ". Todos escopo, duração e regras de visibilidade são aplicada ao p objeto apenas declarada. Você pode ver a declaração da seguinte maneira: se * P é um objeto de tipo, em seguida, p tem que ser um ponteiro para tal objeto (objeto de tipo).

Nota: Você deve inicializar ponteiros antes de usá-los! Nosso ponto declarado anteriormente, er * P não é inicializado (isto é atribuído um valor), por isso não pode ser usado ainda.

Nota: No caso de declarações ponteiro múltiplos, cada um requer um identificador indireta operador. Por exemplo:

int * Pa, pb, * pc *;

/ * É o mesmo que: * /

int * Pa; int * Pb; int * PC;

Uma vez declarada, porém, um ponteiro pode normalmente ser transferido assim que ele aponta para um objeto de outro tipo. O mikroC PRO para PIC permite transferir sem ponteiros typecasting, mas o compilador irá avisá-lo a menos que o ponteiro foi originalmente declarado estar apontando para nulas. Você pode atribuir a void * ponteiro para o não-void * ponteiro - referem-se a vazio para mais detalhes.

176

www.mecatronicadegaragem.blogspot.com

Page 241: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 242: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Atribuindo a constante inteira de 0 a um ponteiro atribui um valor do ponteiro nulo para ele.

Por exemplo:

int * Pn = 0;

/ * Aqui está um ponteiro nulo * /

/ * Nós podemos testar o ponteiro como isto: * / se (Pn == 0) {... }

O tipo de ponteiro "Ponteiro para void" não deve ser confundido com o ponteiro nulo. A declaração

vazio * Vice-presidente;

declara que vp é um ponteiro genérico, capaz de ser designado por qualquer das "Ponteiro para tipo " valor, inclusive nulo, sem reclamar.

Atribuições sem casting adequado entre um "Ponteiro para type1 " e um "Ponteiro para type2 ", onde type1 e type2 diferentes tipos, pode invocar um aviso do compilador ou erro. Se type1 é uma função e type2 não é (ou vice-versa), atribuições ponteiro são ilegais. Se type1 é um ponteiro para vazio, nenhuma conversão é necessária. Se type2 é um ponteiro para vazio, nenhuma conversão é necessária.

Função Ponteiros

Função ponteiros são ponteiros, variáveis, ou seja, que apontam para o endereço de um fun- ção.

/ / Definir um ponteiro de função

int (* Pt2Function) (char, float, char);

Nota: Assim funções e ponteiros de função com a convenção de chamada diferentes (argu- mento da ordem, tipo de argumentos ou tipo de retorno é diferente) são incompatíveis com cada outras.

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

177

www.mecatronicadegaragem.blogspot.com

Page 243: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Basta ter o nome de uma função adequada e conhecidos. Usando o operador de endereço e de frente o nome da função é opcional.

/ / Atribuir um endereço para o ponteiro de função

int DoIt (float a, b, char, char c) {return a + b + c;} pt2Function = &DoIt; / cessão /

Exemplo:

int ADDC (char x, char y) {

retorno x + y; }

int SUBC (char x, char y) {

retorno x, y;

} int mulC (char x, char y) {

retorno x * y; } int CIVD (char x, char y) {

retorno x / y;

}

int modC (char x, char y) {

retorno x, y%;

}

/ / Array de ponteiro para funções que recebem dois caracteres e retorna int int (* Arrpf []) (char, char) = { ADDC, SUBC, mulC, CIVD, modC};

int res; char i; vazio main () {

para (I = 0; i <5; i + +) {

res = arrpf [i] (10,20); }

}

178

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

www.mecatronicadegaragem.blogspot.com

Page 244: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC

Aritmética de ponteiro

Aritmética de ponteiro no mikroC PRO para PIC é limitado a:

Referência da Linguagem

- - - - -

atribuição de um ponteiro para outro, comparando dois ponteiros, comparando ponteiro a zero, adição / subtração ponteiro e um valor inteiro, subtraindo dois ponteiros.

A aritmética interna realizada em ponteiros depende do especificador de memória força ea presença de modificadores ponteiro imperiosa. Ao realizar-arith aritmética com ponteiros, presume-se que o ponteiro aponta para um array de objetos.

Matrizes e ponteiros

Matrizes e ponteiros não são tipos completamente independente na mikroC PRO para PIC. Quando o nome de uma matriz aparece na avaliação da expressão (exceto com operadores & e sizeof), é convertido implicitamente para o ponteiro apontando para matriz primeiro elemento. Devido a este fato, as matrizes não são lvalues modificáveis.

Suportes [ ] indicam índices da matriz. A expressão

id [exp]

é definido como

* ((Id) + (exp))

quando: - id é um ponteiro e exp é um número inteiro, ou - id é um inteiro e exp é um ponteiro.

As seguintes declarações são verdadeiras:

& A [i] a [i]

= =

a + i * (A + i)

De acordo com essas orientações, pode ser escrito:

pa = & a [4]; x * = (aa + 3); / * .. mas: * / y = aa * + 3;

/ / Pa aponta para um [4] / / X = a [7]

/ / Y = a [4] + 3

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

179

www.mecatronicadegaragem.blogspot.com

Page 245: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6 Referência da Linguagem

Além disso, o cuidado deve ser tomado quando usando a precedência do operador:

mikroC PRO para PIC

* Pa + +; (* Aa) + +;

/ / * Igual a (aa + +), incrementa o ponteiro / / Incrementa o objeto apontado!

Os exemplos a seguir também são válidas, mas melhor evitar essa sintaxe, pois ele pode fazer o código realmente ilegível:

(A + 1) [i] = 3; / / Mesmo que: * ((a + 1) + i) = 3, ou seja, a [i + 1] = 3

(I + 2) [a] = 0; / / Mesmo que: * ((i + 2) + a) = 0, ou seja, a [i + 2] = 0

Atribuição e comparação

A atribuição simples operador (=) pode ser usado para atribuir o valor de um ponteiro para outro, se eles são do mesmo tipo. Se eles forem de tipos diferentes, 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).

Atribuindo a constante inteira de 0 a um ponteiro atribui um valor nulo ponteiro para ele.

Dois ponteiros apontando para a mesma matriz pode ser comparada usando oper-relacional ators ==,! =, <, <=,>, e > =. Os resultados destas operações são as mesmas que se eles foram usados em valores subscritos de elementos da matriz em questão:

int * Pa = & a [4], pb * = & a [2];

se (Pa == pb) {... / * Não será executado em 4 não é igual a 2 * /} se (Pb pa>) {... / * Irá ser executado como 4 é superior a 2 * /}

Você também pode comparar os ponteiros para o valor zero- testes, dessa forma, se o ponteiro do actu- pontos aliado a alguma coisa. Todos os ponteiros podem ser testados com sucesso para a igualdade ou a desigual- dade de nulos:

se (Pa == 0) {... } se (Pb! = 0) {... }

Nota: Comparando os ponteiros apontando para diferentes objetos / matrizes podem ser realizados em responsabilidade do programador- uma visão precisa do armazenamento de dados de física é necessário.

180

www.mecatronicadegaragem.blogspot.com

Page 246: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 247: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Ponteiro Adição

Você pode usar operadores + + +, e + = adicionar um valor inteiro a um ponteiro. 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).

Se for declarado um ponteiro para apontar para tipo, acrescentando um valor integral n para o ponteiro incrementos o valor do ponteiro n * sizeof (tipo) enquanto o ponteiro permanece dentro do intervalo legal (primeiro elemento para um além do último elemento). 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. Em caso da tipo tipo, o tamanho de um passo é um byte.

Por exemplo:

int a [10]; int * Pa = & a [0]; * (Pa + 3) = 6; agora é igual a 6 * / aa + +;

/ * Um array contendo 10 elementos do tipo int * / / Pa * é ponteiro para int, apontando para a [0] * / / * 3 pa é um ponteiro que aponta para a [3], de modo a [3]

/ Pa * aponta agora para o próximo elemento de uma matriz:

a [1] * /

Não há nenhum elemento, como ponteiro "um após o último elemento", é claro, mas o está autorizado a assumir tal valor. C "Garantias" que o resultado disso é definida mesmo quando aponta para uma matriz de elemento passado. Se os pontos P para o último elemento de matriz, P 1 + é legal, mas P 2 + é indefinido.

Isto permite-lhe gravar loops que o acesso a elementos em um array seqüência meios de incrementar ponteiro - na última iteração, você terá o ponteiro do ponto de ção de um elemento passado a matriz, que é legal. No entanto, a aplicação de um engano operador (*) para uma "Ponteiro para um após o último elemento" leva a um comportamento indefinido.

Por exemplo:

vazio f (some_type um [] int n) {

/ * Função f manipula elementos de uma matriz; * / / * Matriz A tem n elementos do tipo some_type * /

int i; some_type * p = & a [0];

para (I = 0; i <n, i + +) {

/ * .. aqui nós fazemos algo com p * .. * / p + +; / * .. e com a última iteração p excede

o último elemento de um array * / } / * Neste ponto, p * é indefinido! * /

}

www.mecatronicadegaragem.blogspot.com

Page 248: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

181

www.mecatronicadegaragem.blogspot.com

Page 249: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Ponteiro Subtração

Semelhante ao lado, você pode usar os operadores -, - E -= para subtrair uma parte integrante valor de um ponteiro.

Além disso, você pode subtrair dois ponteiros. A diferença será igual à distância entre dois endereços apontou, em bytes.

Por exemplo:

int int int

a [10]; * PI1 = & a [0]; * Pi2 = & a [4];

i = pi2

pi2 - PI1; -= (I> 1);

/ * I é igual a 8 * / / * Pi2 = pi2 - 4: pi2 agora aponta para [0] * /

182

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

www.mecatronicadegaragem.blogspot.com

Page 250: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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). Esses membros podem ser de qualquer tipo, seja fundamental ou derivados (com algumas restrições que devem ser discutidos mais tarde), em qualquer seqüência. Em adi- ção, um membro de estrutura pode ser um campo de bits.

Diferentemente dos arrays, estruturas são consideradas objetos únicos. A mikroC PRO para PIC tipo de estrutura permite-lhe lidar com estruturas de dados complexas quase tão facilmente como pecado gle variáveis.

Nota: o mikroC PRO para PIC não suporta anônimos estruturas (ANSI-mergulhador gência).

Estrutura da declaração e inicialização

Estruturas são declaradas usando a palavra-chave struct:

struct tag {Membro declarator lista};

Aqui, tag é o nome de uma estrutura; declarator membro-lista é uma lista de estrutura membros, na verdade, uma lista de declarações de variáveis. Variáveis do tipo estruturado são declarou o mesmo que as variáveis de qualquer outro tipo.

O tipo de membro não pode ser o mesmo que o tipo struct sendo atualmente declarou. No entanto, um membro pode ser um ponteiro para a estrutura que está sendo declarada, como no se- mugido exemplo:

struct {S MYSTRUCT;} MYSTRUCT;

/ * Ilegal! * /

struct MYSTRUCT {MYSTRUCT ps *;}; / * OK * /

Além disso, uma estrutura pode conter anteriormente tipos de estrutura definidos quando se declara uma instância da estrutura declarada. Aqui está um exemplo:

/ * Estrutura que define um ponto: * / struct Dot {float x, y;};

/ * Estrutura que define um círculo * / struct Circle {

flutuar r; struct ponto central;

} O1, O2; / * Declarar variáveis O1 e O2 do Círculo * /

Mikroele

www.mecatronicadegaragem.blogspot.com

Page 251: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 252: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Note que a tag estrutura pode ser omitido, mas os objetos, em seguida adicionais deste tipo não pode ser declarados em outro lugar. Para obter mais informações, consulte Estruturas Untagged abaixo.

A estrutura é inicializada atribuindo a ele uma seqüência delimitada por vírgulas de valores dentro aparelho, semelhante à matriz. Por exemplo:

/ * Referindo-se às declarações do exemplo acima: * /

/ * Declarar e inicializar pontos P e Q: * / struct Dot p = {1, 1..}, Q = {3,7, -0,5};

/ * Declarar e inicializar círculo o1: * / struct Circulo o1 = {{1, 0, 0}...} / / Raio é de 1, o centro está em (0, 0)

Declarações incompletas

declarações incompletas são também conhecidas como as declarações para a frente. 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; / / incompletos struct B {struct Um ano *;}; struct A {struct B pb *;};

A primeira aparição de A chama-se incompleta, porque não há definição para isso em esse ponto. Uma declaração incompleta, é permitido aqui, porque a definição de B não precisa do tamanho da A.

Estruturas Untagged e TYPEDEFs

Se a marca de estrutura é omitido, um estrutura untagged é criado. O untagged estruturas podem ser usados para declarar os identificadores na delimitado por vírgula membro declarator-lista ser do tipo de estrutura dada (ou derivados), mas além- objetos al deste tipo não pode ser declarado em outro lugar. É possível criar um typedef ao declarar uma estrutura, com ou sem a tag:

/ * Com tag: * / typedef struct MYSTRUCT {... MyStruct}; MyStruct s, * ps, ARRS [10] / * mesma estrutura MYSTRUCT s, etc * /

/ * Sem tag: * / typedef struct {... MyStruct}; MyStruct s, ps *, ARRS [10];

Normalmente, não há necessidade de usar os dois tag e typedef: ou pode ser usado em es- tipo de declarações ture.

184

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

www.mecatronicadegaragem.blogspot.com

Page 253: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

membros Untagged estrutura e união são ignorados durante a inicialização.

Nota: Veja também a trabalhar com as estruturas.

Trabalhar com estruturas

Estruturas representam tipos definidos pelo usuário. Um conjunto de regras relativas à aplicação de estruturas é estritamente definido.

Atribuição

As variáveis do mesmo tipo estruturado pode ser atribuído um para outro por meio de operador de atribuição simples (=). Isso irá copiar todo o conteúdo da variável a destino, independentemente do interior complexidade de uma determinada estrutura. 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. Por exemplo:

/ * A e b são do mesmo tipo: * / struct {Int M1, M2;} a, b;

/ * Mas, c, d _não_ são do mesmo tipo, embora

descrições de sua estrutura são idênticas: * / struct {Int M1, M2;} c; struct {Int M1, M2;} d;

Tamanho da Estrutura

O tamanho da estrutura de memória pode ser recuperada por meio do operador sizeof. É não é necessário que o tamanho da estrutura é igual à soma das suas membros tamanhos. Muitas vezes, é maior devido a certas limitações de armazenamento de memória.

Estruturas e Funções

A função pode retornar um tipo de estrutura ou um ponteiro para um tipo de estrutura:

MYSTRUCT func1 (void); MYSTRUCT * func2 (void);

/ * Func1 () retorna uma estrutura * / / * 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;); vazio func2 (MYSTRUCT SPTR *;);

/ * Diretamente * / / * Através de um ponteiro * /

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

185

www.mecatronicadegaragem.blogspot.com

Page 254: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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:

- . (Ponto final) - -> (Seta à direita)

O operador . é chamado o selector membro direto e é usado para acessar diretamente um dos membros da estrutura. Suponha que o objeto s é do tipo struct S e m é um identificador de membro do tipo M declarados em s, então a expressão

s.m

/ / Acesso direto a um dos membros m

é do tipo M, e representa o objeto membro m em S.

O operador -> é chamado o selector membro indireto (ou ponteiro). Suponha que o objeto s é do tipo struct S e ps é um ponteiro para s. Então, se m é um membro iden- tifier do tipo M declarados em s, a expressão

ps-m>

/ / Acesso indirecto aos membros m; / / Idêntico a (* ps) m.

é do tipo M, e representa o objeto membro m em s. A expressão ps-m> é uma abreviação conveniente para (* Ps). M

Por exemplo:

struct MYSTRUCT {

int i; char str [21]; dupla d;

S SPTR} *, = &S;

...

s.i = 3; SPTR -> d = 1,23;

/ / Atribuir ao membro do MYSTRUCT i s / / Atribui ao membro d de MYSTRUCT s

A expressão s.m é lvalue, desde que s é lvalue e m não é uma matriz do tipo. A expressão m SPTR-> é um lvalue menos m é um tipo de matriz.

186

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

www.mecatronicadegaragem.blogspot.com

Page 255: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, os membros do A pode ser acessado por duas aplicações do seletores membro:

struct A {

int j; dupla x; }; struct {B

int i; struct Um aa; dupla d; SPTR} * s,;

...

s.i = 3; s.aa.j = 2; SPTR-> d = 1,23; aa.x SPTR-> = 3,14;

/ / / / / / / /

atribuir atribuir atribuir atribuir

3 a 2 a 1.23 3.14

o membro i de B o membro j de A para o membro d de B ax membro de uma

Estrutura Singularidade

Cada declaração de estrutura apresenta um tipo de estrutura única, de modo que em

struct A {

int i, j; dupla d; } AA, AAA;

struct {B

int i, j; dupla d; Bb};

os objetos aa e aaa ambos são do tipo struct A, mas os objetos aa e bb são tipos de estrutura diferente. As estruturas podem ser atribuídas apenas se a origem eo destino- nação tem o mesmo Tipo:

aa = AAA; AA BB =;

/ * OK: mesmo tipo, membro por membro de atribuição * / / * ILEGAL: * diferentes tipos /

/ * Mas aa.i = aa.j = aa.d =

você pode atribuir membro por um membro: * / bb.i; bb.j; bb.d;

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

187

www.mecatronicadegaragem.blogspot.com

Page 256: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. A diferença fundamental é que uma sindicalistas partilham a mesma mem- espaço de memória disponível.

Nota: O mikroC PRO para PIC não suporta sindicatos anônimo (ANSI-diver gência).

Sindicatos Declaração

Os sindicatos têm a mesma declaração como estruturas, com a palavra-chave União usados em vez de struct

União tag {membro declarator lista};

Ao contrário das estruturas " membros, o valor de apenas um dos membros da União podem ser armazenados a qualquer momento. Aqui está um exemplo simples:

União myunion {

/ / Tag sindicato é 'myunion'

int i; dupla d; char ch;

Ontem} * mu,;

A identificador mu, do tipo myunion, pode ser usado para prender um 2-byte int, 4-byte dou- ble ou de byte único char, mas apenas um deles, em determinado momento. O identificador pm é um ponteiro para a união myunion.

Tamanho da União

O tamanho de uma união é o tamanho de seu membro maior. Em nosso exemplo anterior, os sizeof (myunion união) e sizeof (mu) bytes de retorno 4, mas duas não são utilizadas (Acolchoado), quando mu detém a int bytes do objeto, e 3 são utilizadas quando mu detém 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.d = 4,016; tmp = mu.d / / OK: mu.d = 4,016

188

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

www.mecatronicadegaragem.blogspot.com

Page 257: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC

tmp = mu.i;

i am-> = 3; tmp = mu.i;

/ / Resultado peculiar / / OK: mu.i = 3

Referência da Linguagem

A terceira linha é legal, desde mu.i é um tipo integral. No entanto, o padrão de bits em mu.i corresponde a partes das anteriormente atribuídas casal. Como tal, ele provavelmente não vai fornecer uma interpretação inteiro úteis.

Quando devidamente convertido, um ponteiro para uma união pontos a cada um dos seus membros, e vice-versa.

Campos Bit

Campos de bits são especificados os números de bits que podem ou não ter um associado iden- tifier. Campos de bits oferecem uma maneira de subdividir em partes de estruturas chamado de definido pelo usuário tamanhos.

Estruturas e os sindicatos podem conter campos de bits que podem ser de até 16 bits.

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, você não precisa declarar campos de bits. solução muito mais elegante é a utilização do mikroC PRO para a capacidade intrínseca da PIC para o acesso de bits individuais - veja Acesso Individual Bits para mais informações.

Declaração de campos de bits

Campos de bits pode ser declarado apenas em estruturas e uniões. 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; }

Aqui, tag é um nome opcional da estrutura; declarator bitfield-lista é uma lista de campos de bits. Cada componente requer um identificador de cólon e sua largura em bits para ser explicitamente especificado. largura total de todos os componentes não pode exceder dois bytes (16 bits).

Como um objeto, estrutura campos de bits necessários dois bytes. Campos individuais são embaladas em

www.mecatronicadegaragem.blogspot.com

Page 258: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

dois bytes da direita para a esquerda. Em bitfield-declarator lista, você pode omitir identifi- er (s) para criar uma artificial "Estofo", ignorando, assim bits irrelevante.

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

189

www.mecatronicadegaragem.blogspot.com

Page 259: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Por exemplo, se há uma necessidade de manipular bits apenas 2-4 de registrar-se como um bloco, criar uma estrutura como esta:

struct {

não assinado : 2, / / Passar bits 0 e 1, nenhum identificador aqui mybits: 3; / / Relevantes bits 2, 3 e 4

/ / Bits 5, 6 e 7 são implicitamente deixados de fora Myreg};

Aqui está um exemplo:

typedef struct

lo_nibble: hi_nibble: high_byte:

{ 4; 4; 8;} myunsigned;

que declara o tipo estruturado myunsigned contendo três componentes: lo_nibble (Bits 3 .. 0), hi_nibble (Bits 7 .. 4) e high_byte (Bits 15 .. 8).

Acesso campos de bits

Campos de bits pode ser acessado da mesma forma como o membros da estrutura. Uso direto eo selector de membro indirectos (. e ->). Por exemplo, 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;

vazio main () {

... Value_For_PORT0.lo_nibble = 7; Value_For_PORT0.hi_nibble = 0x0C; * P0 = (char *) (Void *) & Value_For_PORT0;

/ / Typecasting: / / 1. endereço da estrutura para ponteiro para void / / 2. ponteiro para void para ponteiro para char / / 3. dereferencing para obter o valor

}

190

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

www.mecatronicadegaragem.blogspot.com

Page 260: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Idioma Referência

Conversões de Tipo

A mikroC PRO para PIC é uma linguagem estritamente digitadas, com cada operadora, a declaração e função exigente operandos devidamente digitado / argumentos. No entanto, nós muitas vezes têm de usar objetos de "Descasamento" tipos de expressões. Nesse caso, tipo conversão é necessário.

Conversão de objeto de um tipo que significa o tipo de objeto é alterado para outro tipo. A mikroC PRO para PIC define um conjunto de conversões para o padrão interno tipos, desde pelo compilador quando necessário. Para obter mais informações, consulte o Conversões Standard.

A conversão é necessária nas seguintes situações:

- Se uma instrução requer uma expressão do tipo especial (de acordo com def idioma rial), e usamos uma expressão de tipo diferente, - Se um operador requer um operando de tipo particular, e nós usamos um operando de dife- diferentes tipos, - Se uma função requer um parâmetro formal de determinado tipo, e passá-lo um objeto de tipo diferente, - Se uma expressão a seguir a palavra-chave retorno não coincide com o declarado fun- ção tipo de retorno, - Se intializing um objeto (na declaração) com um objeto de tipo diferente.

Nessas situações, o compilador irá fornecer uma conversão automática implícita de tipos, sem qualquer interferência do programador. Além disso, o programador pode exigir a conversão explicitamente meio do distribuir os papéis operador. Para obter mais informações, consulte a conversão de tipo explícito.

Standard Conversões

Ao usar a expressão aritmética, como a + b, onde um e b são de diferentes tipos de aritmética, o mikroC PRO para PIC realiza conversões de tipo implícito antes a expressão é avaliada. Essas conversões padrão incluem promoções "Inferiores" tipos de "Superior" tipos, no interesse da precisão e consistência.

Atribuir um objeto de caráter assinado (como uma variável) a um objeto resulta integral na extensão de sinal automático. Objetos do tipo signed char sempre usar a extensão de sinal; objetos do tipo unsigned char byte sempre tem seus altos definido para zero quando convertido para int.

Convertendo um tipo mais parte integrante de um tipo mais curto trunca os bits de ordem superior e folhas de bits de baixa ordem inalterada. Convertendo um tipo mais curto parte integrante de um mais tipo qualquer sinal estende-se ou zero preenche os bits extra de o novo valor, dependendo se o tipo mais curto é assinado ou não assinado, respectivamente.

Mikroele

www.mecatronicadegaragem.blogspot.com

Page 261: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

ktronika - Soluções de software e hardware para o mundo embutido 191

www.mecatronicadegaragem.blogspot.com

Page 262: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Detalhes:

Aqui estão os passos que o mikroC PRO para PIC utiliza para converter os operandos em uma arith- expressão aritmética: Em primeiro lugar, qualquer tipo de pequeno integrais são convertidas de acordo com as seguintes regras:

1. 2. 3. 4. 5.

char converte em int signed char converte em int, com o mesmo valor curto converte em int, com o mesmo valor, sinal estendido unsigned short converte em int, com o mesmo valor, zero-preenchida enum converte em int, com o mesmo valor

Depois disso, 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).

1. Se um dos operandos for float, o outro operando é convertido para float. 2. Caso contrário, se um dos operandos for unsigned long, o outro operando é convertido para unsigned long. 3. Caso contrário, se um dos operandos for longo prazo, então o outro operando é convertido para tempo. 4. Caso contrário, se um dos operandos for unsigned, o outro operando é convertido para não assinado. 5. Caso contrário, ambos os operandos são int.

O resultado da expressão é do mesmo tipo que a dos dois operandos. Aqui estão alguns exemplos de conversão implícita:

2 + 3.1 04/05 * 3. 3. * 04/05

/ *? 2. + 3.1? 5.1 * / / *? (04/05) * 3. ? 1 * 3. ? 1 .* 3. ? 3. * / / *? (3 .* 5) / 4? (3 .* 5.) / 4? 15. / 4? 15. / 4. ? 3,75 * /

Ponteiro de conversão

Tipos ponteiro pode ser convertidas para outros tipos de ponteiro usando o mecha typecasting- nismo:

char * Str; int * Ip; str = (char *) De IP;

Mais genericamente, o elenco * Tipo irá converter um ponteiro para o tipo "Ponteiro para tipo ".

www.mecatronicadegaragem.blogspot.com

Page 263: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

192

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

www.mecatronicadegaragem.blogspot.com

Page 264: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Concersions tipo explícito (conversão de tipo)

Na maioria das situações, o compilador irá fornecer uma conversão automática implícita de tipos quando necessário, sem qualquer interferência do usuário. Além disso, 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. Parênteses são obrigatórios.

Por exemplo:

/ * Vamos ter duas variáveis do tipo char * / char a, b;

/ * Linha a seguir para coagir um unsigned int * / (Unsigned int) a;

/ * Linha a seguir irá coagir a dobrar,

b então forçar a dupla automaticamente, * /: Resultando num valor do tipo double

(Double) a + b; / / equivalente a ((double) a) + b;

Declarações

A declaração apresenta um ou vários nomes para um programa - informa o compil- er o que o nome representa, o que é seu tipo, o que operações são permitidas com ele, etc Esta seção revisa os conceitos relacionados às declarações: declarações, definições, especificadores de declaração e inicialização.

A gama de objetos que podem ser declaradas inclui:

- Variáveis Constantes - - Funções -Tipos - Tags estrutura sindical, e enumeração membros Estrutura - membros da União Europeia - - Matrizes de outros tipos - Declaração de rótulos - Preprocessor macros

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

193

www.mecatronicadegaragem.blogspot.com

Page 265: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Declarações e Definições

Definindo declarações, também conhecido como definições, ao lado de introduzir o nome de um objeto, também estabelecer a criação (onde e quando) de um objeto, isto é, a alocação ção da memória física e sua inicialização possível. Referenciando declarações, ou apenas declarações, basta fazer seus identificadores e tipos conhecidos para o compilador.

Aqui está uma visão geral. Declaração é também uma definição, excepto se:

- Declara uma função sem especificar o seu corpo - Tem o extern especificador, e não tem Inicializador ou organismo (no caso de func.) - É o typedef declaração Não pode ser declarações de referência para muitos o mesmo identificador, especialmente em um declaração de vários programas, mas apenas uma definição para esse identificador é permitido.

Por exemplo:

/ * Aqui está uma declaração de Max nondefining função; * / / * Se limitou a informar compilador que máxima é uma função * / int max ();

/ * Aqui está uma definição do valor máximo da função: * / int max (int x, int y) {

retorno (X> y =)? x: y; }

/ * Definição da variável i * / int i;

/ * Seguindo a linha é um erro, eu já está definido! * / int i;

Declarações e declarators

A declaração contém especificador (s), seguido por um ou mais identificadores (decla- res). A declaração começa com especificadores de classe de armazenamento opcional, especificadores de tipo, e outros modificadores. Os identificadores são separados por vírgulas e a lista é termi- nados por um ponto e vírgula.

Declarações de identificadores de variáveis têm o seguinte padrão:

armazenamento de classe [qualificador de tipo] Tipo var1 [= inic1], var2 [= inic2], ... ;

onde var1, var2, ... são qualquer seqüência de identificadores distintos com inicializadores opcional. Cada uma das variáveis é declarado de Tipo, se omitido, tipo padrões para int. A especificador armazenamento de classe pode tomar os valores externo, estático, registrar, ou o

194

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

www.mecatronicadegaragem.blogspot.com

Page 266: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

padrão auto. Opcional tipo de qualificação pode assumir valores const ou voláteis. Para mais detalhes, consulte as classes de armazenamento e de qualificação de tipo.

Por exemplo:

/ * Cria três variáveis do tipo inteiro chamado x, y e z e inicializar X e Y para os valores 1 e 2, respectivamente: * /

int x = 1, y = 2, z / / z continua a ser inicializado

/ * Criar um q variável de ponto flutuante com modificador estático,

e inicializá-lo para 0,25: * / float estático q = 0,25;

Estas são todas as declarações de definição, o armazenamento é alocado e qualquer inicializadores opcional são aplicadas.

Linkage

Um programa executável é normalmente criado através da compilação de vários independentes trans- unidades de lamento, em seguida, ligando os arquivos com as bibliotecas de objeto resultante preexistente. Um termo unidade de tradução que se refere a um arquivo de código fonte, juntamente com todos os arquivos incluídos, mas com- as linhas de origem omitida pelas directivas de pré-processamento condicional. Um problema aris- es quando o mesmo identificador é declarado em escopos diferentes (por exemplo, em diferentes arquivos), ou declarada mais de uma vez no mesmo escopo.

A articulação é um processo que permite que cada instância de um identificador deve ser associado corretamente com um determinado objeto ou função. Todos os identificadores têm uma ligação de dois atributos, estreitamente relacionado com o seu âmbito: ligação externa ou a ligação interna. Estes atributos são determinados pela localização e formato de suas declarações, togeth- er com um uso (ou implícitas por default) explícita do especificador de classe de armazenamento estáticas ou externo.

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. Cada instância de um identificador específico com ligação interna representa o mesmo objeto ou função dentro de um único arquivo.

Regras de Linkage

Os nomes locais têm ligações internas, o mesmo identificador pode ser usado em diferentes arquivos

www.mecatronicadegaragem.blogspot.com

Page 267: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

para significar diferentes objetos. Global nomes têm ligações externas; identificador significa o mesmo objeto ao longo de todos os arquivos do programa. Se o mesmo identificador aparece com ligação interna e externa dentro do mesmo arquivo, o identificador terão ligação interna.

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

195

www.mecatronicadegaragem.blogspot.com

Page 268: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Linkage Regimento Interno

1. nomes de alcance arquivo, explicitamente declaradas como estático, tem ligação interna 2. nomes de alcance arquivo, explicitamente declaradas como const e não explicitamente declarado

como externo, têm ligação interna 3. typedef nomes têm ligações internas 4. constantes enumeração tem ligação interna

Linkage regras externas

1. nomes de alcance de arquivo, que não satisfaçam a qualquer das afirmado anteriormente interna regras de articulação, têm ligação externa

A classe de armazenamento especificadores auto e Registre-se não pode aparecer em uma externa dezembro- vai fazendo. 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. Uma definição externa é uma externa declaração que define um objeto ou uma função e também aloca um dispositivo de armazenamento. Se um identificador declarado com ligação externa é usada em uma expressão (excepto como parte do operando da sizeof), então exatamente uma definição externa desse identificador deve estar em algum lugar todo o programa.

Classes de armazenamento

Associando os identificadores de objetos requer que cada identificador para ter pelo menos dois attrib- nutos: classe de armazenamento e tipo (por vezes referido como o tipo de dados). A mikroC PRO para PIC compilador deduz destes atributos a partir de declarações implícitas ou explícitas no código-fonte.

A classe de armazenamento dita a localização (segmento de dados, registo, heap ou pilha) de objeto e sua duração ou vida (o tempo todo funcionamento do programa, ou durante execução de alguns blocos de código). Uma classe de armazenamento pode ser estabelecido pelo sin- fiscal de uma declaração, por sua colocação no código-fonte, ou por ambos os fatores:

tipo de armazenamento de classe identificador

O armazenamento especificadores de classe no mikroC PRO para PIC são:

auto Registre-se estáticas extern

www.mecatronicadegaragem.blogspot.com

Page 269: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

196

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

www.mecatronicadegaragem.blogspot.com

Page 270: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Esta é o padrão para as variáveis locais e raramente é usada. auto não pode ser usado com globals. Veja também as funções.

Registre-se No momento o modificador Registre-se tecnicamente não tem nenhum significado especial. A mikroC PRO para PIC compilador simplesmente ignora os pedidos de atribuição de registo.

Estático Um nome global declarada com o estáticas especificador tem ligação interna, o que significa que ela é local para um determinado arquivo. Veja Linkage para mais informações.

Um nome local declarada com o estáticas especificador tem duração estática. Use estáticas com uma variável local para preservar o valor passado entre chamadas sucessivas à função que desempenha. Ver Duração para mais informações.

Extern Um nome declarado com o extern especificador tem ligação externa, a menos que tenha sido anteriormente declarados como tendo ligação interna. A declaração não é uma definição se tem o extern especificador e não é inicializado. A palavra-chave extern é opcional para um Função protótipo.

Use o extern modificador para indicar que o armazenamento real e do valor inicial do variável, ou corpo da função, é definido em um módulo separado do código-fonte. Func- ções declaradas com extern são visíveis em todos os arquivos-fonte do programa, menos que a função é redefinida como estático.

Veja Linkage para mais informações.

Tipo, 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.

Eliminatórias Const

O qualificador const implica que um objeto declarado não irá alterar o seu valor durante tempo de execução. Em declarações com o const qualificador de todos os objetos precisam ser inicializadas.

A mikroC PRO para PIC trata objetos declarados com o const qualificador o mesmo como literais ou constantes de pré-processamento. Se o usuário tenta alterar um objeto declarado com o const compilador qualificador irá reportar um erro.

www.mecatronicadegaragem.blogspot.com

Page 271: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 272: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Por exemplo:

const PI dupla = 3,14159;

Qualificador volátil

O qualificador voláteis implica que uma variável pode alterar seu valor durante a execução independentemente do programa. Use o modificador volátil para indicar que uma variável pode ser alterado por uma rotina de fundo, uma rotina de interrupção, ou a porta I / O. 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.

Especificador typedef

O especificador typedef introduz um sinônimo para um tipo especificado. 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 especificador typedef ocupa o primeiro lugar na declaração:

typedef <type_definition> sinónimos;

A typedef palavra-chave atribui sinônimo de <type_definition>. A sinônimo deve ser um identificador válido. Uma declaração a partir do typedef especificador não introduz um objeto ou uma função de um determinado tipo, mas sim um novo nome para um determinado tipo. Em outras palavras, o declaração typedef é idêntico a um"Normal" declaração, mas em vez de objetos, declara tipos. É uma prática comum para nomear identificadores tipo personalizado com início de ing letra maiúscula - isso não é exigido pelo mikroC PRO para a PIC. Por exemplo:

/ * Vamos declarar uma sinônimo de "unsigned long int" * / unsigned int typedef longo Distância;

/ * Agora, sinônimo "Distância" pode ser utilizado como identificador de tipo: * / Distância i; / / declara variável i de int unsigned long

Na typedef declaração, como em qualquer outra declaração, vários tipos podem ser declarado de uma vez. Por exemplo:

typedef int

* PTI, Array [10];

Aqui, Pti é um sinônimo para o tipo "Ponteiro para int ", e Array é um sinônimo para o tipo "Matriz de 10 int elementos ". asm Declarações

198

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

www.mecatronicadegaragem.blogspot.com

Page 273: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

A mikroC PRO para PIC permite a incorporação de montagem no código-fonte por meio da declaração asm. As declarações _asm e _asm Também são permitidas no mikroC PRO para PIC e têm o mesmo significado. Note-se que cannnot numerais ser usados como endereços absolutos de SFR e GPR variáveis em instruções de montagem. Nomes simbólicos pode ser utilizado em substituição (anúncio será exibido estes nomes, bem como endereços).

As instruções de montagem podem ser agrupados pela asm palavra-chave (ou _, 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;

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. 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.

A mikroC PRO para PIC comentários (tanto de linha única e multi-linha) são permitidos em incorporado código de montagem.

Se você tem uma variável global "g_var", que é do tipo longo (ou seja, 4 bytes), estiver de acessá-lo assim:

MOVF _g_var 0, 0 MOVF _g_var 1, 0 MOVF _g_var 2, 0 MOVF _g_var 3, 0

; Coloca byte menos significativo de g_var no registo W ; Segundo byte de _g_var; corresponde a Oi (g_var) ; Superior (g_var) ; Máxima (g_var)

... etc Se você quiser saber detalhes sobre a sintaxe asm apoiado por mikroC PRO para PIC ele é recomendado para estudar asm lst e arquivos gerados pelo compilador. 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 - Soluções de software e hardware para EMBEDDED MUNDO 199

www.mecatronicadegaragem.blogspot.com

Page 274: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, então ele deve restaurar o banco de seleção anterior.

tópicos relacionados: mikroC PRO para PIC specifcs

Inicialização

O valor inicial de um objeto declarado pode ser definido no momento da declaração (initializa- ção). Uma parte da declaração que especifica a inicialização é chamado inicializador.

Inicializadores para globals e estáticas objetos devem ser constantes ou expressões constantes- sões. 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.

tipos escalares são inicializados com uma única expressão, que opcionalmente pode ser fechado chaves. O valor inicial de um objeto é o da expressão, as mesmas restrições para o tipo e conversões para atribuições simples são aplicados para inicializações também.

Por exemplo:

int i = 1; char * S = "Olá"; struct c complexo = {0,1, -0,2}; / / Onde "complexo" é uma estrutura (float, float)

Para estruturas ou uniões com duração de armazenamento automático, o inicializador deve ser um dos seguintes procedimentos:

- Uma lista de inicializador. - A única expressão compatível com o sindicato ou o tipo de estrutura. Neste caso, a inicial valor do objeto é o da expressão.

Por exemplo:

struct dot {int x; int y;} {m = 30, 40};

Para mais informações, consulte Estruturas e Sindicatos.

Além disso, você pode inicializar matrizes do tipo de personagem com uma seqüência literal, opcionalmente entre chaves. Cada personagem na seqüência de caracteres, incluindo o terminador nulo, inicial- izes elementos sucessivos na matriz. Para obter mais informações, consulte Matrizes. Inicialização automática

A mikroC PRO para PIC não fornecer a inicialização automática para objetos. Unini-

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

www.mecatronicadegaragem.blogspot.com

Page 275: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

FUNÇÕES

As funções são centrais para a programação C. As funções são geralmente definidas como subprogramas gramas que retornar um valor baseado em uma série de parâmetros de entrada. Valor de retorno da função pode ser usada em expressões - tecnicamente, chamada de função é considerada ser uma expressão como outra qualquer.

C permite que uma função para criar resultados que não o seu valor de retorno, denominada lado os efeitos. Muitas vezes, o valor de retorno da função não é usada, dependendo do lado os efeitos. Essas funções são equivalentes às procedimentos linguagem de programação de outras linguagens, como Pascal. C não faz distinção entre procedimento e função - funções os dois papéis.

Cada programa deve ter uma única função externo chamado principal marcando a entrada ponto do programa. As funções são normalmente declarado como protótipos no padrão ou fornecido pelo usuário arquivos de cabeçalho, ou dentro de arquivos de programa. Funções têm ligação externa por padrão e são normalmente acessíveis a partir de qualquer arquivo no programa. 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).

Nota: Verifique as especificidades PIC para obter mais informações sobre as funções ' limitações na Microcontroladores PIC compatível.

Função Declaração

As funções são declaradas em arquivos do usuário de origem ou disponibilizar, ligando-precom empilhados bibliotecas. A sintaxe da declaração da função é:

function_name tipo (parâmetro-declarator-list);

A function_name deve ser um identificador válido. Esse nome é usado para chamar a fun- ção, ver as chamadas de função por mais da informação.

tipo representa o tipo de resultado da função, e pode ser de qualquer padrão ou usuário tipo definido. Para funções que não retornam valor vazio tipo deve ser usado. O tipo pode ser omitida nas declarações função global, e assumirá a função int tipo por padrão.

Tipo de função também pode ser um ponteiro. Por exemplo, float * significa que uma função resultado é um ponteiro para float. O ponteiro genérico void * também é permitido.

www.mecatronicadegaragem.blogspot.com

Page 276: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

201

www.mecatronicadegaragem.blogspot.com

Page 277: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Dentro parênteses, declarator parâmetro-lista é uma lista de argumentos formais que a função recebe. Estes declarators especificar o tipo de cada parâmetro de função. O compilador usa essa informação para verificar a validade das chamadas de função. Se a lista é vazio, um função não tem argumentos. Além disso, se a lista é vazio, uma função Também não tem quaisquer argumentos, note que este é o caso somente quando vazio pode ser usado como um tipo de argumento.

Ao contrário de declaração de variável, cada um argumento na lista de suas necessidades de especificador de tipo próprio e qualificador possível const ou voláteis.

Protótipo de função

A função pode ser definido apenas uma vez no programa, mas pode ser declarado várias vezes, supondo que as declarações são compatíveis. Quando declarar uma função, o formal argumento o identificador não precisa ser especificado, mas faz seu tipo.

Esse tipo de declaração, vulgarmente conhecida como a protótipo da função, permite uma melhor controle sobre número de argumento, verificação de tipo e conversões de tipo. O nome de um parâmetro no protótipo de função tem o seu âmbito limitado ao protótipo. 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 *) int teste (p const char *)

/ * Declara * Teste de função / / * Declara a mesma função de teste * /

Função protótipos são muito úteis na documentação de código. Por exemplo, a função Cf_Init tem dois parâmetros: Controle de porta e porta de dados. A questão é, que é qual? O protótipo de função:

vazio Cf_Init (char * Ctrlport, char * Dataport);

deixa claro. Se um arquivo de cabeçalho contém protótipos de função, o usuário pode ler que arquivo para obter as informações necessárias para escrever programas que chamar essas funções. Se um parâmetro protótipo inclui um identificador, então o Indentificador é usado apenas para o erro verificação.

202

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

www.mecatronicadegaragem.blogspot.com

Page 278: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Definição de Função

Definição da função consiste em sua declaração e função do corpo. A corpo da função é tecnicamente um bloco - uma seqüência de definições locais e instruções entre dentro de chaves {}. Todas as variáveis declaradas dentro do corpo da função são locais à função, ou seja, têm um alcance de função.

A própria função só pode ser definido no âmbito do arquivo, o que significa que fun- ção declarações não podem ser aninhados.

Para retornar o resultado da função, use o retorno declaração. O retorno na declaração funções do vazio tipo não pode ter um parâmetro - na verdade, a instrução de retorno pode ser omitido por completo, se é a última declaração no corpo da função.

Aqui está uma definição de função de exemplo:

/ * Função max retorna mais um dos seus dois argumentos: * /

int max (int x, int y) {

retorno (X> y =)? x: y; }

Aqui está uma pequena função que depende de efeitos colaterais em vez de valor de retorno:

/ * Função Descartes converte coordenadas (x, y) para polares (r, fi): * / # Include <math.h>

vazio polar (dupla x, dupla y, dupla * R, dupla * Fi) {

* R = sqrt (x * x + y * y); * Fi = (x == 0 & & y == 0)? 0: atan2 (y, x); retorno; / * essa linha pode ser omitido * /

}

Function reentrância

reentrância funções é permitido se a função não tem parâmetros e locais vari- veis, ou se as variáveis locais são colocadas no espaço de Rx. Lembre-se que o PIC tem pilha e memória limitações que podem variar muito entre os MCUs.

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

203

www.mecatronicadegaragem.blogspot.com

Page 279: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Use a função chamada operador ():

function_name (expression_1, ..., expression_n)

Cada expressão na chamada de função é uma argumento real. Número e tipos de argumentos reais devem coincidir com as dos parâmetros da função formal. Se os tipos não partida, as conversões de tipo implícitas regras serão aplicadas. argumentos reais podem ser de qualquer complexidade, mas a ordem da sua avaliação não é especificado.

Após a chamada de função, todos os parâmetros formais são criados como objetos locais inicializado os valores dos argumentos reais. Após voltar de uma função, um objeto temporário é criado no local da chamada, e é inicializado com a expressão do retorno declaração. Isto significa que a chamada de função como um operando na expressão complexa é tratada como um resultado da função.

Se a função tem nenhum resultado (tipo resultado nulo) ou o não é necessário, em seguida, o fun- da de consulta pode ser escrita como uma expressão de auto-contidas.

Em C, os argumentos escalares são sempre passados para a função de valor. A função pode modificar os valores dos seus parâmetros formais, mas este não tem efeito sobre o argumento real- mentos na rotina de chamada. Um objeto escalar podem ser passadas através do endereço, se uma for- parâmetro formal for declarado como um ponteiro. O objeto pontiagudo pode ser acessado por * usando o operador de indireção.

/ / Por exemplo, Soft_Uart_Read leva o ponteiro para a variável de erro, / / Para que ele possa alterar o valor de um argumento real: Soft_Uart_Read (e erro);

/ / O código a seguir seria errado, você deve passar o valor / / Variável de erro para a função: Soft_Uart_Read (erro);

Argumento Conversões

Se um protótipo de função não tenha sido previamente declarada, o mikroC 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 um protótipo de função está em escopo, o mikroC 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 mentos.

www.mecatronicadegaragem.blogspot.com

Page 280: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

204

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 281: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Se um protótipo estiver presente, o número de argumentos devem ser iguais. Os tipos necessidade de ser compatível apenas na medida em que uma tarefa pode convertê-los legalmente. 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.

Nota: Se o protótipo da função não corresponde a definição da função real, o mikroC PRO para PIC irá detectar isto se e somente se essa definição está na mesma unidade de compilação como o protótipo. Se você criar uma biblioteca de rotinas com o arquivo de cabeçalho correspondente protótipos, considerar a inclusão que o arquivo de cabeçalho quando você compilar a biblioteca, de modo que qualquer discrepâncias entre os protótipos e definições reais serão detectados.

O compilador também é capaz de forçar argumentos para alterar o tipo para uma adequada. Considere o seguinte código:

int limite = 32; char ch = 'A'; tempo res;

/ Protótipo / extern longo func (longa par1, tempo par2);

main () {

... res = func (ch-limite); / Chamada de função /

}

Desde que o programa tem a função protótipo para função, ele converte limite e ch para tempo, usando as regras de atribuição, antes de coloca-los na pilha para a chamada para func.

Sem o protótipo da função, limite e ch seria colocada na pilha como um inteiro e um personagem, respectivamente, nesse caso, a pilha passado para func não combinar com o tamanho ou o conteúdo que func espera, que pode causar problemas.

Reticências Operador ('...')

O ('...') reticências é composto por três períodos sucessivos, sem espaços de intervenção. 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. Por exemplo:

vazio func (int n, char ch, ...);

Esta declaração indica que a função será definida de tal forma que as chamadas devem ter pelo menos dois argumentos, int e char, mas também pode ter qualquer número de além- argumentos al.

www.mecatronicadegaragem.blogspot.com

Page 282: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 283: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6 Referência da Linguagem

Exemplo:

# Include <stdarg.h>

int addvararg (char ,...){ A1 ap va_list; char temp; va_start (AP, A1);

while (temp = va_arg (ap, char))

temp + = a1; retorno a1; }

int res; vazio main () {

addvararg res = (1,2,3,4,5,0);

addvararg res = (1,2,3,4,5,6,7,8,9,10,0);

}

mikroC PRO para PIC

206

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

www.mecatronicadegaragem.blogspot.com

Page 284: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 285: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Precedência Operando

Operadores Associativis 15 2 () []. ->

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, alguns deles contêm um único operador. Operadores na mesma categoria têm a mesma precedência.

Se duplicatas de operadores aparecem na tabela, a primeira ocorrência é unário e segundo binário. Cada categoria tem uma regra de associatividade: da esquerda para a direita (

), Ou da direita para a

esquerda (

). Na ausência de parênteses, essas regras resolver um agrupamento de expres-

ções com os operadores de precedência igual.

Operadores Aritméticos

Os operadores aritméticos são usados para realizar cálculos matemáticos. Eles têm operandos numéricos e retornar os resultados numéricos. O tipo de char tecnicamente repre- senta números inteiros pequenos, de modo que o char variáveis podem ser usadas como operandos em aritmética operações.

Todos os operadores aritméticos associam da esquerda para a direita.

208

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

www.mecatronicadegaragem.blogspot.com

Page 286: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Operador Operação Precedência Operadores Binários

+ Além 12

- subtração 12

* multiplicação 13

/ divisão 13

% operador de módulo retorna o resto da inteiro divisão (não pode ser usado com pontos flutuantes)

13

Operadores unários

+ mais unário não afeta o operando 14

- unário mudanças menos o sinal do operando 14

+ + incremento adiciona um ao valor do operando.

PostIncrement adiciona um ao valor do operando depois que ele avalia, enquanto pré-incremento adiciona uma

t d li

14

- decremento subtrai um do valor da

operando. Postdecrement subtrai um do valor do operando depois que ele avalia, enquanto pré-

di i i b i d li

14

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Nota: O operador * é sensível ao contexto e também pode representar a referência de ponteiro operador.

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

209

www.mecatronicadegaragem.blogspot.com

Page 287: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, enquanto a restante é simplesmente truncado:

/ * Por exemplo: * / 04/07 / * equivale a 1 * / 7 * 04/03 / * equivale a 5 * /

/ * Mas * / 7. * 3. / 4.; / * Igual a 5,25, porque estamos trabalhando com flutuadores * /

Restante operando % trabalha apenas com números inteiros, o sinal do resultado é igual ao sinal do primeiro operando:

/ * Por exemplo: * / 9% 3; / * igual a 0 * / 7% 3 / * equivale a 1 * / -7% 3; / * igual a -1 * /

Aritmética Os operadores podem ser usados para manipular caracteres:

'A' + 32; 'G' - 'A' + 'a';

/ * * É igual a 'A' (ASCII) / / * É igual a 'g' (ASCII e EBCDIC) * /

Operadores aritméticos unários

Unários operadores + + e - são os únicos operadores em C que pode ser prefixo (Por exemplo, + + K, - K) ou postfix (por exemplo, k + +, k -).

Quando usado como prefixo, os operadores + + e - (Pré-incremento e preDecrement) adicionar ou subtrair um valor do operando antes da avaliação. Quando usado como sufi- correção, os operadores + + e - (Pós e postdecrement) adicionar ou subtrair uma do valor do operando após a avaliação.

Por exemplo:

int j = 5; j = k + +;

mas:

int j = 5; j = k + +;

/ * k = k + 1, k = j, o que nos dá k = 6, j = 6 * /

/ * K = j, k = k + 1, que nos dá k = 5, j = 6 * /

210

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

www.mecatronicadegaragem.blogspot.com

Page 288: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Operador Operação Precedência

== igualdade 9

! = não igual 9

> superior 10

< menos de 10

> = igual ou superior 10

<= inferior ou igual 10

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. Se uma expres- Sion avalia ser verdadeiro, ele retorna 1, caso contrário ele retorna 0.

Todos os operadores relacionais associam da esquerda para a direita.

Visão geral sobre operadores relacionais

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 - 1.0 / e

/ *? (A + 5)> = (c - (1,0 / e)) * /

Não se esqueça que os operadores relacionais retornam 0 ou 1. Considere o seguinte exemplos:

/ * Ok: * / 5> 7 10 <20 =

/ * Retorna 0 * / / * Retorna 1 * /

/ * Isso pode ser complicado: * / 13 8 ==> 5 / * Retorna 0, como: 8 == (13> 5)? 8 == 1 ? 0 * / 14> 5 < 3 / * retorna 1, como: (14> 5) <3? 1 <3? 1 * / a <b <5 / * retorna 1, como: (a <b) <5? (0 ou 1) <5? 1 * /

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

211

www.mecatronicadegaragem.blogspot.com

Page 289: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Operador Operação Precedência

& E bit a bit; compara pares de bits e retorna 1 se ambos os bits forem 1, caso contrário retorna 0

8

| bit a bit (inclusive) OR; compara pares de bits e retorna 1 se um ou ambos os bits são 1, caso contrário retorna 0

6

^ bit a bit OU exclusivo (XOR); compara pares de bits e retorna 1 se os bits são complementares, outras

retorna sábio 0 7

~ bit a bit complemento (unário); inverte cada bit 14

<< desvio para a esquerda bit a bit; move os bits para a esquerda, as devoluções

bi i à d ib i 0 bi i à

11

>> deslocamento à direita bit a bit; move os bits para a direita, dis- cartões bit da extrema-direita e se unsigned atribui 0

11

& 0 1

0 0 0

1 0 1

^ 0 1

0 0 1

1 1 0

| 0 1

0 0 1

1 1 1

~ 0 1

1 0

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.

Operadores bit a bit adjunto da esquerda para a direita. A única exceção é o com-bit a bit operador plementar ~ que associa a partir de direita para a esquerda.

Visão geral sobre operadores bit a bit

Operações Lógicas sobre Nível de Bit

Operadores bit a bit &, | e ^ realizar operações lógicas sobre os pares apropriado de bits de seus operandos. Operador ~ complementa cada bit do seu operando. Por exemplo:

212

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

www.mecatronicadegaragem.blogspot.com

Page 290: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC

0x1234 e 0x5678

/ * Igual a 0x1230 * /

Referência da Linguagem

/ * Porque ..

0x1234: 0001 0010 0011 0100 0x5678: 0101 0110 0111 1000 ----------------------------

E: 0001 0010 0011 0000

.. ou seja, 0x1230 * /

/ * Do mesmo modo: * /

0x1234 | 0x5678; ^ 0x1234 0x5678; ~ 0x1234;

/ * Igual * 0x567C / / * Igual * 0x444C / / * Igual * 0xEDCB /

Nota: O operador & também pode ser um operador de referência de ponteiro. Consulte os ponteiros para mais informações.

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, à esquerda ou à direita, respectivamente. Operando direito tem que ser positivo.

Com o deslocamento à esquerda (<<), bits à esquerda são descartados e"Novo" bits à direita são atribuídos zeros. Assim, deslocando operando sem sinal para a esquerda n posições é equivalente a multiplicando-se por 2n se todos os bits são descartados zero. Isso também é válido para operandos assinado Se todos os bits são descartados igual a um bit de sinal.

000.001 << 0x3801 <<

5; 4;

/ * Equivale a 000.040 * / / * Igual a 0x8010, estouro! * /

Com o deslocamento para a direita (>>), 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). Mudando operando para a direita por posições n é equivalente a divid- ing-lo por 2n.

0xFF56>> 0xFF56u>>

4; 4;

/ * Equivale 0xFFF5 * / / * Equivale 0x0FF5 * /

Mikroelektronika

www.mecatronicadegaragem.blogspot.com

Page 291: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 292: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Operador Operação Precedência

& & E lógico 5

| | OR lógico 4

! negação lógica 14

| | 0 x

0 0 1

x 1 1

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. Por exemplo:

0222222 e 0555555; 0222222 e 0555555 &;

~ 0x1234; ! 0x1234;

/ * Equivale a 000.000 * / / * Equivale a 1 * /

/ * Igual * 0xEDCB / / * Igual a 0 * /

Operadores lógicos

Operandos de operações lógicas são consideradas verdadeiras ou falsas, que é diferente de zero ou zero. Os operadores lógicos sempre retornam 0 ou 1. Os operandos em uma expressão lógica deve ser de tipo escalar.

Os operadores lógicos & & e | | associam da esquerda para a direita. Lógico operador de negação ! associados da direita para a esquerda.

Visão geral sobre operadores lógicos

Operadores lógicos

Precedência dos operadores lógicos, 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'; a + 1 == b | |! f (x);

/ * Lê: (c> = '0 ') & & (c <= '9') * / / * Lê: ((a + 1) == b) | | * / ((f (x))!)

E lógico & & retorna 1 se ambas as expressões avaliar a ser zero, caso contrário

214

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

www.mecatronicadegaragem.blogspot.com

Page 293: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

& & 0 x

0 0 0

x 0 1

! 0 x

1 0

www.mecatronicadegaragem.blogspot.com

Page 294: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

retorna 0. Se a primeira expressão é avaliada como false, o segunda expressão não será avaliados. Por exemplo:

a> b & & c <d / * lê como (a> b) & & (c <d) * / / * If (a> b) é falso (0), (c <d) não serão avaliadas * /

OU lógico | | retorna 1 se quer de expressão avalia a ser zero, caso contrário retorna 0. Se a primeira expressão é avaliada como verdadeira, a segunda expressão não é ava- liada. Por exemplo:

a & & b | | c & d & / * lê como: (a & & b) | | (c & d &) * / / * If (a & & b) é verdadeira (1), * (& 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. Por exem- Por exemplo, se temos uma expressão a & & b & & c onde um é falso (0), então operandos b e c não serão avaliados. Isso é muito importante se b e c são expressões, 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 exemplo:

0222222 e 0555555 0222222 e 0555555 e

~ 0x1234 ! 0x1234

/ * Equivale a 000.000 * / / * Equivale a 1 * /

/ * Igual * 0xEDCB / / * Igual a 0 * /

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

215

www.mecatronicadegaragem.blogspot.com

Page 295: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Operador condicional? :

O condicional operador ? : é o único operador ternário em C. A sintaxe da condi- operador internacional é:

expressão1? expression2: expression3

A expression1 é avaliada primeiro. Se o valor for verdadeiro, então expression2 avalia e expression3 é ignorado. Se expressão1 é avaliada como falso, então expression3 avalia e expression2 é ignorado. O resultado será um valor de expres- sion2 ou expression3 dependendo de qual deles avalia.

Nota: O facto de apenas uma dessas duas expressões é avaliada muito importante se espera-se que produzem efeitos colaterais!

associados operador condicional da direita para a esquerda. Aqui estão alguns exemplos práticos:

/ * Encontrar max (a, b): * / max = (a> b)? a: b;

/ * Converte pequena carta para o capital: * / / * (Sem parênteses são realmente necessário) * / c = (c> = 'a' & & c <= 'z')? (C - 32): c;

Regras Operador Condicional

expression1 deve ser uma expressão escalar; expression2 e expression3 deve obedecer a uma das seguintes regras:

1. Ambas as expressões têm de ser de aritmética tipo. expression2 e expression3

estão sujeitos às conversões aritméticas usuais, que determina o tipo do resultado. 2. Ambas as expressões têm de ser compatíveis dos tipos struct ou união. O resultado

tipo é um tipo de estrutura ou união de expression2 e expression3. 3. Ambas as expressões têm de ser de vazio tipo. O tipo resultante é nulas. 4. Ambas as expressões devem ser do tipo ponteiro para versões qualificados ou não qualificados

de tipos compatíveis. O tipo resultante é um ponteiro para um tipo qualificado, com todo o tipo qualificadores do tipo apontado por ambas as expressões.

5. Uma expressão é um ponteiro, eo outro é um ponteiro constante nula. O resultado- ção tipo é um ponteiro para um tipo qualificado com todos os qualificadores do tipo ponto-tipos ed por ambas as expressões.

6. Uma expressão é um ponteiro para um tipo de objeto ou incompleta, eo outro é um ponteiro para uma versão qualificados ou não qualificados dos nulas. O tipo resultante é a de o ponteiro-para-não-vazio expressão.

216

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

www.mecatronicadegaragem.blogspot.com

Page 296: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, C trata de atribuição de valores como a operação (Representada por um operador) ao invés de instrução.

Operador de atribuição simples

Para uma atribuição de valor comum, 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. Operando expression1 tem que ser lvalue e expression2 pode ser qualquer expressão. A expressão de atribuição em si não é lvalue.

Se expression1 e expression2 são de tipos diferentes, o resultado da expres- sion2 serão convertidos para o tipo de expressão1, se for necessário. Consulte o Tipo Conversões para mais informações.

Operador de atribuição composto

C permite que as atribuições mais COMLEX por meio de operadores de atribuição compostos. A sintaxe dos operadores de atribuição composta são:

op = expressão1 expressão2

onde op pode ser um dos operadores binários +, -, *, /,%, &, |, ^, <<, ou >>.

Assim, temos 10 operadores de atribuição compostos diferentes: + =, -=, *= / =%, =, & =, | ̂ =, =, <<= e >> =. Todos eles associam da direita para a esquerda. sepa-Spaces Avaliação operadores compostos (por exemplo, + =) Irá gerar um erro.

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, expres- sion1 + = expressão2 é o mesmo que expressão1 = expressão1 + expres- sion2.

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

217

www.mecatronicadegaragem.blogspot.com

Page 297: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Regulamento de Atribuição

Para ambos os atribuição simples e compostos, os operandos expression1 e expression2 deve obedecer a uma das seguintes regras:

1. expression1 é do tipo aritmética qualificados ou não qualificados e expression2 é de

aritmética tipo. 2. expression1 tem uma versão qualificados ou não qualificados do tipo de estrutura ou união

compatível com o tipo de expression2. 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.

4. 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. O tipo de apontado pela esquerda tem todos os qualificadores do tipo apontado pelo direito.

5. expression1 é um ponteiro e expression2 é um ponteiro constante nula.

Operador sizeof

O operador 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, com algumas exceções). O operador sizeof pode apanhar um identificador de tipo ou uma expressão unário como um operando. Você não pode usar sizeof com expressões do tipo de função, tipos incompletos, parênteses os nomes de tais tipos, ou com lvalue que designa um objeto campo de bits.

Sizeof Aplicada à Expressão

Se aplicada a expressão, o tamanho de um operando é determinado sem avaliar a expressão (e, portanto, sem efeitos colaterais). O resultado da operação será o tamanho do tipo de resultado da expressão.

Sizeof Aplicada ao tipo

Se aplicada a um tipo de identificador, sizeof retorna o tamanho do tipo especificado. A unidade para o tamanho do tipo é sizeof (char) o que equivale a um byte. A operação tamanho de (char) dá o resultado 1, se char é assinado ou não assinado.

Assim:

sizeof (char) sizeof (int) sizeof (unsigned long) sizeof (float)

/ * / * / * / *

retorna retorna retorna retorna

1 2 4

4

* / * / * / * /

218

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

www.mecatronicadegaragem.blogspot.com

Page 298: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Quando o operando é um parâmetro do tipo não-matriz, o resultado é o número total de bytes na matriz (em outras palavras, um nome de matriz não é convertido para um tipo de ponteiro):

int i, j, uma [10]; ... j = sizeof (a [1]); i = sizeof (a);

/ * J = sizeof (int) = 2 * / / * I = 10 * sizeof (int) = 20 * /

/ * Para obter o número de elementos em um array * / num_elem int = i / j;

Se o operando é um parâmetro declarado como tipo de matriz ou um tipo de função, sizeof dá o tamanho do ponteiro. Quando aplicada às estruturas e aos sindicatos, sizeof dá a número total de bytes, incluindo qualquer preenchimento. O operador sizeof não pode ser aplicada a uma função.

EXPRESSÃO

A expressão é uma seqüência de operadores, operandos e pontuadores que especifica um computação. Formalmente, as expressões são definidas recursivamente: subexpressões pode ser aninhados sem limite formal. No entanto, o compilador apresentará um erro de falta de memória se não é possível compilar uma expressão que é muito complexo.

Em ANSI C, o expressões primárias são: constante (também referida como literal), identi- Fier, e (expressão), definido de forma recursiva.

As expressões são avaliadas de acordo com uma conversão de certos agrupamentos, associativi- ty e regras de precedência, o que depende dos operadores utilizados, presença de paren- teses e tipos de dados dos operandos. A precedência ea associatividade dos Os operadores estão resumidas no Operador de Precedência e associatividade. O caminho operandos e subexpressões são agrupados não necessariamente especificar o real ordem em que são avaliados pelo mikroC PRO para a PIC.

As expressões podem produzir lvalue, rvalue, ou nenhum valor. Expressões podem causar efeitos secundários efeitos se produzem um valor ou não.

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. expressão Vírgula é uma vírgula lista de expressões delimitados - é formalmente tratado como uma única expressão para que ele possa ser utilizado em locais onde a expressão é esperado. A seguinte seqüência:

expression 1, expression_2;

www.mecatronicadegaragem.blogspot.com

Page 299: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

219

www.mecatronicadegaragem.blogspot.com

Page 300: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

resultados na esquerda para a direita avaliação de cada expressão, com o valor eo tipo de expression_2 dando o resultado da expressão completa. Resultado da expression_1 é descartado.

vírgula operador binário (,) tem a prioridade mais baixa e associados da esquerda para a direito, de modo que a, b, c é o mesmo que (A, b), c Isto permite escrever seqüências com qualquer número de expressões:

expression_1, expression_2, ... expression_n;

o que resulta na avaliação da esquerda para a direita de cada expressão, com o valor e tipo de expression_n dando a resultado da expressão inteira. Os resultados de outras expressões são descartados, mas o seu (possível) efeito colateral acontecem.

Por exemplo:

resultado = (a, b = 5 / = 2, C + +); / * Retorna preincremented valor da variável c,

mas também intializes a, b divide por 2 e incrementos de c * /

resultado = (x = 10, y = x + 3, x -, z -= x * 3 - - y); / * Retorna calculado o valor da variável z,

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. Para evitar ambi- vocos com vírgulas no argumento da função e lista de inicializador, use parênteses. Para exemplo,

função (i, (j = 1, j + 4), k);

chama a função func com três argumentos (i, 5, k), e não quatro.

220

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

www.mecatronicadegaragem.blogspot.com

Page 301: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

DEMONSTRAÇÕES

Demonstrações especificar um fluxo de controle como o programa executa. Na ausência de Ir específicos e seleção declarações, os comandos são executados em seqüência na ordem de aparição no código-fonte.

As declarações podem ser divididos em:

- - - - - -

Rotulado Demonstrações Expressão Demonstrações Instruções de Seleção Instruções iteração (Loops) Ir Demonstrações Declarações compostas (blocos)

Rotulado Demonstrações

Cada instrução em um programa podem ser rotulados. Um rótulo é um identificador adicionado antes a declaração como esta:

label_identifier: instrução;

Não há nenhuma declaração especial de uma etiqueta - apenas "Tags" a declaração. label_iden- tifier tem escopo de uma função e no rótulo do mesmo não pode ser redefinido no mesma função.

Os rótulos têm o seu próprio espaço: etiqueta de identificação pode corresponder a qualquer outro identificador no o programa.

A declaração pode ser rotulado por duas razões:

1. O rótulo identificador serve como meta para a instrução goto incondicional,

2. O rótulo identificador serve como meta para a instrução switch. Para este efeito, apenas caso e padrão demonstrações rotulados são utilizados:

caso a expressão constante: instrução default: declaração

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

221

www.mecatronicadegaragem.blogspot.com

Page 302: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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;

A mikroC PRO para PIC executa uma instrução de expressão através da avaliação da expressão. Todos os efeitos colaterais desta avaliação sejam concluídas antes do próximo instrução inicia a execução. A maioria das declarações são expressão de atribuição do Estado mentos ou chamadas de função.

A declaração de nulidade é um caso especial, constituído por um único ponto e vírgula (;). O nulo declaração não faz nada e, portanto, é útil em situações onde o mikroC PRO para PIC sintaxe espera uma declaração, mas o programa não precisa de um. Por exem- plo, uma declaração de nulidade é comumente usado em "Vazio" loops:

para (; Q * + + * p = + +;);

/ * corpo deste loop é um comando nulo * /

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. A sintaxe da se afirmação é:

se (Expressão) [statement1 mais statement2]

Se expressão avalia a verdade, statement1 executa. Se declaração é falsa, statement2 executa. A expressão deve ser avaliada como um valor integral; outras sábio, a condição é mal formado. Parênteses em torno da expressão são obriga- ry.

A mais palavra-chave é opcional, mas não há indicações podem vir entre se e mais.

222

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

www.mecatronicadegaragem.blogspot.com

Page 303: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Instrução if aninhada

Nested se demonstrações requerem maior atenção. A regra geral é que a nested condicionais são analisados a partir do mais íntimo condicional, 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, mas têm efeitos muito diferentes. Eles controlam o que as linhas do arquivo de origem são compilada e que são ignorados.

Switch Demonstrações

A switch declaração é usada para passar o controle para um ramo do programa específico, com base em uma determinada condição. A sintaxe da switch afirmação é:

switch (Expressão) {

caso constante-expression_1: statement_1; . . .

caso expression_n constante: statement_n; padrão [ : Declaração;]

}

Primeiro, o expressão (Condição) é avaliada. A switch declaração, em seguida, com- bora la a todos os disponíveis constante, as seguintes expressões a palavra-chave caso. Se um jogo for encontrado, switch passa o controle para que a adequação caso fazendo com que o declaração fol- tes da partida avalia. Note-se que constantes expressões de deve avaliar a inteiro. Não é possível ter duas mesmo expressões constantes avaliar a o mesmo valor.

Parênteses em torno expressão são obrigatórios.

Ao encontrar uma correspondência, o fluxo do programa continua normalmente: as instruções a seguir será executado de forma natural, independentemente da possível caso etiqueta. Se nenhum caso satisfaz a condição, a padrão caso avalia (se o rótulo padrão é especi- cados).

www.mecatronicadegaragem.blogspot.com

Page 304: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Por exemplo, se uma variável i tem valor entre 1 e 3, a opção seguinte seria

Mikroelektronika - Soluções de software e hardware para o mundo embutido 223www.mecatronicadegaragem.blogspot.com

Page 305: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6 Referência da Linguagem

sempre devolvê-lo como 4:

mikroC PRO para PIC

switch

caso caso caso

(I) { 1: i + +; 2: i + +; 3: i + +;

}

Para evitar a avaliação de qualquer outros casos, e abandonar o controle de comutador, cada caso deve ser encerrado no intervalo.

Aqui é um simples exemplo, com switch. Suponha que temos uma variável fase com apenas Três estados diferentes (0, 1 ou 2) e uma função correspondente (evento) para cada uma dessas Estados. Isto é como nós poderíamos mudar o código para o appopriate rotina:

switch (Fase) {

caso 0: Lo (); break; caso 1: Mid () break; caso 2: Oi () break; caso: Mensagem ("Estado inválido!");

}

Nested Switch

Condicional switch declarações podem ser aninhados - rótulos caso e padrão são, então, atribuído ao mais profundo que encerram switch declaração.

Iteração Demonstrações (Loops)

instruções de iteração de loop permite um conjunto de instruções. Há três formas de iter- demonstrações ração na mikroC PRO para PIC:

enquanto fazer para

Enquanto a Declaração

A enquanto palavra-chave é usado para iterar condicionalmente um comunicado. A sintaxe da enquanto afirmação é:

enquanto (Expressão) instrução

A declaração executa repetidamente até que o valor de expressão é falsa. O teste ocorre antes declaração é executado. Assim, se expressão avalia a falsa

224

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

www.mecatronicadegaragem.blogspot.com

Page 306: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

na primeira passagem, o loop não é executado. Note que os parênteses em torno de expres- Sion são obrigatórios.

Aqui está um exemplo de cálculo do produto escalar de dois vetores, usando o enquanto declaração:

int s = 0, i = 0; enquanto (I <n) {

s + = a [i] * b [i]; i + +;

}

Note que o corpo do laço pode ser nulo declaração. Por exemplo:

enquanto (Q * + + * p = + +);

Do Declaração

A fazer instrução é executada até que a condição se torne falsa. A sintaxe da fazer afirmação é:

fazer declaração enquanto (Expressão);

A declaração é executado repetidamente enquanto o valor de expressão permanece diferente de zero. A expressão é avaliada após cada iteração, portanto, o loop será executado declaração de pelo menos uma vez.

Parênteses em torno expressão são obrigatórios.

Note que não é a estrutura de controle apenas em C, que expressamente termina com ponto e vírgula (;). Outras estruturas com controlo final declaração, o que significa que eles implicitamente incluir um ponto e vírgula ou chave de fechamento.

Aqui está um exemplo de cálculo do produto escalar de dois vetores, usando o fazer Estado mento:

s = 0, i = 0; fazer {

s + = a [i] * b [i]; i + +;

} enquanto (I <n);

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

225

www.mecatronicadegaragem.blogspot.com

Page 307: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Para a declaração

A para declaração implementa um loop iterativo. A sintaxe da para declaração é o seguinte:

para

(Expressão [init];

Expressão [condição];

incremento [expres-

] Sion) declaração

Antes da primeira iteração do loop, init-expressão define as variáveis de partida para do loop. Você não pode passar em declarações init-expressão.

condição de expressão é verificada antes da da primeira entrada do bloco; declaração é executado repetidamente até que o valor de condição de expressão é falsa. Depois cada iteração do loop, expressão de incremento incrementos de um contador de loop. Con- Consequentemente, i + + é funcionalmente o mesmo que + + I.

Todas as expressões são opcionais. Se condição de expressão é deixado de fora, é assumido que ser sempre verdadeira. Assim, "Vazio" para afirmação é comumente usado para criar um fim- menos loop em C:

para (;) Declaração

A única maneira de quebrar este ciclo é por meio do quebrar declaração.

Aqui está um exemplo de cálculo do produto escalar de dois vetores, usando o para Estado mento:

para (S = 0, i = 0; i <n, i + +) s + = a [i] * b [i];

Não existe outra maneira de fazer isso:

para (S = 0, i = 0; i n <; s + = a [i] * b [i], i + +);

/ * Válido, mas

* Feio /

mas é considerado um estilo de programação ruim. Embora legal, o cálculo do montante não deve ser uma parte da expressão de incremento, porque não está em o serviço da rotina de loop. Note que a declaração nula (;) é usado para o corpo do laço.

226

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

www.mecatronicadegaragem.blogspot.com

Page 308: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Ir Demonstrações

A instrução de salto, quando executado, transfere o controle incondicionalmente. Há quatro tais declarações no mikroC 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. Use o quebrar declaração dentro de loops para passar o controle para a primeira instrução seguinte ao interior switch, para, ao mesmo tempo, ou fazer bloco.

quebrar é comumente utilizada na switch instruções para impedir a sua execução sobre o resultado positivo em primeiro lugar. Por exemplo:

switch (Estado) {

caso 0: Lo (); break; caso 1: Mid (); break; caso 2: Oi (); break; default: Mensagem ("Estado inválido!");

}

Continuar a Declaração

A continuar declaração no prazo de malhas é usada para "Ignorar a ciclo ". Ele passa o controle ao fim do fim mais profundo que encerram cinta pertencente a uma construção de loop. Em que ponto a condição de continuação do laço é reavaliada. Isso significa que conti- ue exige a próxima iteração se a continuação do laço condição for verdadeira.

Especificamente, o continuar declaração dentro do loop vai saltar para a posição marcada- ção, uma vez que é mostrada abaixo: enquanto (..) { ... if (> val 0) continue; ... / / Continue saltos aqui }

fazer { ... if (> val 0) continuar; ... / / Continue saltos aqui enquanto (..);

para (..;..;..) { ... if (> val 0) continue; ... / / Continue saltos aqui }

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

227

www.mecatronicadegaragem.blogspot.com

Page 309: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 - para mais infor- informações nos rótulos, se referem a declarações identificadas. A sintaxe da goto afirmação é:

goto label_identifier;

Isto irá transferir o controle para a localização de um selo local especificado pelo label_identi- Fier. 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.

goto é usado para sair de qualquer nível das estruturas de controle aninhadas, mas ele não pode ser usado para pular em um bloco, enquanto saltando inicializações que bloco- por exemplo, salta- ção no corpo do laço, etc

O uso de goto declaração é geralmente desencorajado, pois praticamente todos os algoritmo pode ser realizado sem ele, resultando em programas estruturados legíveis. Uma possível aplicação da goto afirmação é sair de estruturas de controle aninhadas profundamente:

para (...) {

para (...) { ...

se (Desastre) goto Erro; ... }

} . . .

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, opcionalmente retornar um valor. A sintaxe é:

retorno [Expressão];

Isto irá avaliar expressão e retornar o resultado. valor retornado será auto- automaticamente convertidos para o tipo de função esperado, se necessário. A expressão é opcional, se omitido, a função retornará um valor aleatório da memória.

Nota: A declaração retorno em funções do vazio tipo não pode ter expres- Sion - na verdade, a retorno declaração pode ser omitido por completo, se é o último estado- mento no corpo da função.

228

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

www.mecatronicadegaragem.blogspot.com

Page 310: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Declarações compostas (blocos)

A instrução composta, ou bloco, é uma lista (possivelmente vazia) de declarações em anexo em chaves correspondentes {}. Sintaticamente, o bloco pode ser considerado como um único declaração, mas também desempenha um papel no escopo de identificadores. Um identificador declarado dentro do bloco tem um alcance a partir do ponto da declaração e termina no chave de fechamento. Os blocos podem ser aninhados em qualquer profundidade até aos limites da memória.

Por exemplo, o para loop espera uma declaração em seu corpo, para que possamos passar um instrução composta:

para (I = 0; i <n, i + +) {

int temp = a [i]; a [i] = b [i]; b [i] = temp;

}

Note que, ao contrário de outras declarações, instruções compostas não terminam com ponto e vírgula (;), Ou seja, nunca há um ponto e vírgula após o chave de fechamento.

PreProcessor

Pré-processador é um processador de texto integrado que prepara o código fonte para compilação. Preprocessor permite:

- A inserção de texto de um arquivo specifed até um certo ponto no código (veja o arquivo de inclusão), - Substituição específicas símbolos lexical com outros símbolos (veja Macros), - Compilação condicional que condicionalmente inclui ou omite partes do código (ver Compilação Condicional).

Note que o pré-processador de texto analisa a nível simbólico, não a nível de carácter individual. Preprocessor é controlado por meio de directivas de pré-processamento e de pré-processamento operadores.

Preprocessor directivas

Toda a linha no código-fonte com um líder # é tida como um pré-processamento directiva (Ou linha de controlo), a menos # está dentro de uma seqüência literal, em um caráter permanente, ou incorporado em um comentário. A inicial # pode ser precedido ou seguido de um espaço (excluindo novas linhas).

A directiva nula consiste de uma linha contendo o caractere único #. Esta linha é sempre ignorados.

directivas Preprocessor são geralmente colocados no início do código-fonte, mas

www.mecatronicadegaragem.blogspot.com

Page 311: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Mikroelektronika - Soluções de software e hardware para o mundo embutido 229www.mecatronicadegaragem.blogspot.com

Page 312: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

eles podem aparecer legalmente em qualquer ponto do programa. A mikroC PRO para PIC pré- directivas de pré-processamento do processador detecta e analisa as fichas embutido elas. A directiva está em vigor a partir de sua declaração até o final do arquivo do programa.

Aqui está uma directiva comumente utilizados:

# Include <math.h>

Para mais informações sobre arquivos, incluindo com o # Include directiva, se referem ao arquivo Inclusão.

A mikroC PRO para PIC suporta directivas de pré-processamento padrão:

# (Directiva null) # Define # Elif # Else # Endif # Erro

# If # Ifdef # Ifndef # Include # Line # Undef

Nota: Por enquanto pragma Funcall só é suportada.

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.

230

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

www.mecatronicadegaragem.blogspot.com

Page 313: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Referência da Linguagem

Macros

As macros fornecem um mecanismo de substituição do token, antes da compilação, com ou sem um conjunto de formal, os parâmetros de função semelhante.

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, que são discutidos mais tarde). Essas substituições são conhecidos como macro expansions.token_sequence às vezes é chamado o corpo de uma macro. Um token vazio seqüência de resultados na remoção de cada macro afetados identificador a partir do código fonte.

Nenhum ponto e vírgula (;) é necessário para finalizar uma directiva de pré-processamento. Qualquer personagem encontrado na seqüência token, incluindo vírgulas, aparecerá em uma expansão de macro- sion.token_sequence termina no encoun primeira linha não barra invertida novo registado. Qualquer seqüência de espaços, incluindo comentários na seqüência token, é substituído por um caractere de espaço único.

Depois de cada indivíduo expansão macro, uma nova verificação é feita do recém-expandido texto. Isso permite a possibilidade de utilizar macros aninhados: o texto expandido pode conter identificadores de macro que estão sujeitos à substituição. No entanto, se a macro se expande em algo que se parece com uma directiva de pré-processamento, directiva, tal não será reco- cida pelo pré-processador. Todas as ocorrências do macro identificador encontrado dentro literal cordas, constantes de caracteres, ou comentários no código-fonte não será ampliada.

A macro não será expandido durante sua expansão (assim # Define macro macro não irá expandir-se indefinidamente). Aqui está um exemplo:

/ * Aqui estão algumas macros simples: * / # Define err_msg "Fora do alcance!" # Define EVERLOOP para (;) / * Que nós poderíamos usar assim: * / main () {

EVERLOOP { ... se (Erro) {Lcd_Out_Cp (err_msg); break;} ...

} }

Mikroele

www.mecatronicadegaragem.blogspot.com

Page 314: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

ktronika - Soluções de software e hardware para o mundo embutido 231

www.mecatronicadegaragem.blogspot.com

Page 315: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. 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á definido, se BLOCK_SIZE é atualmente não definidos, a linha do meio é chamado para defini-lo.

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_identifier e "(". A opcional arg_list é uma seqüência de identificadores separados por vírgulas, como os argu- lista desenvolvimento de uma função C. Cada vírgula delimitado identificador tem o papel de um formal argumento ou espaço reservado.

Tais macros são chamados por escrito

macro_identifier (<actual_arg_list>)

no código-fonte subseqüentes. A sintaxe é idêntica à de uma chamada de função; na verdade, muitos biblioteca padrão C "Funções" são implementadas como macros. No entanto, existem algumas importantes diferenças semânticas.

O opcional actual_arg_list deve conter o mesmo número de delimitar-vírgula ed seqüências token, conhecido como argumentos reais, como os encontrados na arg_list formal de o # Define linha - deve haver um argumento real para cada argumento formal. Um erro será relatado se o número de argumentos em duas listas não é a mesma.

Uma macro resultados põem em dois conjuntos de substituições. Primeiro, o macro eo identificador argumentos parêntese fechado é substituída pela seqüência de token. Em seguida, qualquer for- argumentos mal que ocorre na seqüência de token são substituídos pelos correspondentes argumentos reais constantes actual_arg_list. Tal como com simples definições de macro, rescanning ocorre para detectar quaisquer identificadores macro incorporada elegíveis para a expansão.

Aqui está um exemplo simples:

www.mecatronicadegaragem.blogspot.com

Page 316: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

/ * Um macro simples que retorna maior de seus 2 argumentos: * /

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

www.mecatronicadegaragem.blogspot.com

Page 317: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 6

mikroC PRO para PIC Idioma Referência

# Define _MAX (A, B) ((A)> (B))? (A): (B)

/ * Vamos chamá-lo: * / _MAX x = (a + b, c + d);

/ * Pré-processador irá transformar 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.

Indefinida Macros

A # Undef diretiva é usada remover a definição de uma macro.

# Undef macro_identifier

A directiva # Undef separa qualquer seqüência anterior token macro_identi- fier, a definição de macro foi esquecido, e macro_identifier é indefinido. Nenhuma expansão macro ocorre dentro do # Undef linhas.

O estado de ser definido ou indefinido é uma propriedade importante de um identificador independentemente da definição atual. A # Ifdef e # Ifndef directivas condicionais, usado para testar se qualquer identificador está definido ou não, oferecer um mecanismo flexível de nismos para controlar vários aspectos de uma compilação.

Depois de um macro identificador foi definido, ele pode ser redefinido com # Define, utilizando a seqüência igual ou diferente do token.

Inclusão de arquivos

A directiva de pré-processamento # Include puxa arquivos de cabeçalho (extensão. h) no código-fonte. Não confie na pré-processador para incluir os arquivos fonte (extensão) - veja Adicionar / Remover arquivos do projeto para obter mais informações.

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. A colocação de # Include não pode- portanto influenciar o alcance ea duração de qualquer identificadores no arquivo incluído.

A diferença entre estes dois formatos reside na busca algoritmo empregado no

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

233

www.mecatronicadegaragem.blogspot.com

Page 318: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

tentar localizar o arquivo de inclusão.

Se o # Include diretiva é usada com o <header_name> versão, a pesquisa é feitas sucessivamente em cada um dos seguintes locais, nesta ordem:

1. o mikroC PRO para PIC pasta de instalação > "Incluir" pasta 2. 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, nesta ordem:

1. o pasta do projeto (pasta que contém o arquivo de projeto . Mcppi) 2. PRO o mikroC para PIC pasta de instalação > "Incluir" pasta 3. usuário personalizada caminhos de pesquisa

Caminho explícito

Ao colocar um caminho explícito em header_name, somente esse diretório será pesquisado. Para exemplo:

# Include "C: \ my_files \ test.h"

Nota

Há também uma terceira versão do # Include directiva, raramente usado, 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çalho delimitada com um <header_name> ou "Header_name" formatos existe.

234

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 319: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Além disso, # e # # proceder à substituição do operador e merg- ção durante a fase de pré-processamento de digitalização.

Operador #

No pré-processador C, uma sequência de caracteres entre aspas é considerado um símbolo e seu conteúdo não é analisada. Isto significa que os nomes de macro dentro de aspas não são expandida.

Se você precisa de um argumento real (a seqüência exata de caracteres entre aspas), como resultado da pré-processamento, use o # operador no corpo da macro. Ele pode ser colocado em frente de um argumento formal na definição de macro para converter o argumento real para após uma seqüência de substituição.

Por exemplo, vamos ter macro LCD_PRINT para imprimir nome da variável e valor em LCD:

# Define LCD_PRINT (val) Lcd_Custom_Out_Cp (# val ":"); \

Lcd_Custom_Out_Cp (IntToStr (val));

Agora, o código a seguir,

LCD_PRINT (temp)

será pré-processada para isso:

Lcd_Custom_Out_Cp ("temp": "); Lcd_Custom_Out_Cp (IntToStr (temp));

Operador # #

Operador # # é usado para colagem token. Dois símbolos podem ser colada (fundidas), juntamente colocando # # entre eles (mais branco opcional em ambos os lados). Os pré- processador remove espaços em branco e # #, Combinando as fichas separadas em uma nova token. Isto é comumente usado para a construção de identificadores.

Por exemplo, veja a definição de macro SPLICE para a colagem de dois símbolos em um identificador:

# Define SPLICE (x, y) x _ # # # # y

Agora, a chamada SPLICE (cnt, 2) irá se expandir para o identificador cnt_2.

Mikroelektro

www.mecatronicadegaragem.blogspot.com

Page 320: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 321: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Nota

A mikroC PRO para PIC não suporta o método mais antigo nonportable de token colar com (L / ** / r).

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. O mikroC PRO para o PIC suporta compilação condicional, substituindo a fonte apropriada- linhas de código com uma linha em branco.

Todas as diretivas de compilação condicional deve ser concluída na fonte ou no arquivo de inclusão em que eles começaram.

Directivas # if, # elif, # else e # endif

O condicional directivas # If, # elif, # else, e # Endif trabalho muito semelhante ao comum demonstrações C condicional. Se a expressão que você escreve depois # If tem uma valor diferente de zero, o grupo logo após a linha # If directiva é retida na a unidade de tradução.

A sintaxe é:

# If constant_expression_1 <section_1>

[# Elif constant_expression_2 <section_2>]

... [# Elif constant_expression_n <section_n>]

[# Else <final_section>]

# Endif

Cada # If directiva em um arquivo de origem devem ser acompanhados por um fechamento # Endif directiva. Qualquer número de # Elif directivas podem aparecer entre # If e # Endif directivas, mas no máximo um # Else directiva é permitido. A # Else directiva, se houver, deve ser o Directiva com a última antes # Endif.

seções pode ser qualquer texto do programa que tem significado para o compilador ou pré-processamento. O pré-processador seleciona uma única seção, através da avaliação constant_expression fol-

236

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

www.mecatronicadegaragem.blogspot.com

Page 322: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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), expressão constante- Sion. As expressões constantes estão sujeitas a expansão de macro.

Se todas as ocorrências da expressão constante são falsas, ou se não # Elif directivas aparecem, 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, não seção é selecionados para posterior processamento.

Qualquer seção processados podem conter cláusulas adicionais condicional, aninhados em qualquer profundidade. Cada aninhadas # Else, # elif, ou # Endif directiva pertence a mais próxima da anterior o # If directiva.

O resultado líquido da situação anterior é que o código apenas uma seção (Possivelmente vazia) será compilado.

Directivas # ifdef e # ifndef

A # Ifdef e # Ifndef diretrizes podem ser usadas em qualquer lugar # If podem ser utilizados e eles podem testar se um identificador é actualmente definida ou não. A linha

# Ifdef identificador

tem exatamente o mesmo efeito que # Se um se identificador está definido e as mesmo efeito que # Se 0 se identificador é atualmente indefinida. A outra directiva, # Ifndef, verdadeiros testes para o"Não definida" condição, produzir o resultado oposto.

A sintaxe que se segue depois da # If, # elif, # else, e # Endif.

Um identificador definido como NULL é considerada como definida.

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

237

www.mecatronicadegaragem.blogspot.com

Page 323: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

238

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

www.mecatronicadegaragem.blogspot.com

Page 324: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO

7

mikroC PRO para PIC Bibliotecas

mikroC 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 mikroC PRO para PIC Bibliotecas em seu projeto.

239

www.mecatronicadegaragem.blogspot.com

Page 325: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Bibliotecas Hardware PIC-específicas

- Biblioteca ADC - CAN Biblioteca - Biblioteca CANSPI - Biblioteca Compact Flash - EEPROM Biblioteca - Ethernet PIC18FxxJ60 Biblioteca - Biblioteca Memória Flash - Biblioteca LCD Gráfico - Biblioteca I2C - Teclado Biblioteca - Biblioteca LCD - Biblioteca de código Manchester - Libray Muliti Media Card - OneWire Biblioteca - Biblioteca Expander Porto - Imprimir Biblioteca - PS / 2 Biblioteca - PWM Biblioteca - RS-485 Biblioteca - Software Biblioteca I2C - Biblioteca SPI Software - Biblioteca UART Software - Biblioteca de Som - Biblioteca SPI - Biblioteca Ethernet SPI - Biblioteca Gráfica SPI LCD - Biblioteca SPI LCD - SPI LCD8 Biblioteca - SPI Biblioteca Gráfica T6963C LCD - Biblioteca Gráfica T6963C LCD - UART Biblioteca - Biblioteca USB HID

Padrão ANSI C Bibliotecas

mikroC PRO para PIC

- ANSI - ANSI - ANSI - ANSI

C C C C

Ctype Biblioteca Biblioteca de Matemática Stdlib Biblioteca String Biblioteca

Diversos Bibliotecas

- Biblioteca Button - Conversões Biblioteca - Sprint Biblioteca - Setjmp Biblioteca - Time Library - Trigonometria Biblioteca

Veja também incorporada nas rotinas.

240

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

www.mecatronicadegaragem.blogspot.com

Page 326: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

BIBLIOTECA DEPENDENCIES Alguns usam bibliotecas (depende) função e / ou variáveis, con- balcões de definidos em outras bibliotecas. Imagem abaixo mostra claramente repre- sentação sobre essas dependências CIES.

Por exemplo, usa SPI_Glcd Glcd_Fonts e Port_Expander biblioteca que usa uma biblioteca SPI. Isto significa que se você verificar SPI_Glcd biblioteca em Manag-Biblioteca er, todas as bibliotecas de que ela depende serão verificados também.

Informações relacionadas: gerente de Biblioteca, PIC Bibliotecas

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

241

www.mecatronicadegaragem.blogspot.com

Page 327: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

HARDWARE BIBLIOTECAS - Biblioteca ADC - CAN Biblioteca - Biblioteca CANSPI - Biblioteca Compact Flash - EEPROM Biblioteca - Ethernet PIC18FxxJ60 Biblioteca - Biblioteca Memória Flash - Biblioteca LCD Gráfico - Eu ˛ Biblioteca C - Biblioteca do teclado - Biblioteca Lcd - Biblioteca de código Manchester - Biblioteca Multi Media Card - OneWire Biblioteca - Biblioteca Expander Porto - Imprimir Biblioteca - PS / 2 Biblioteca - PWM Biblioteca - RS-485 Biblioteca - Software I Biblioteca C ˛ - Biblioteca SPI Software - Biblioteca UART Software - Biblioteca de Som - Biblioteca SPI - Biblioteca Ethernet SPI - Biblioteca Gráfica SPI Lcd - Biblioteca SPI Lcd - SPI Lcd8 Biblioteca - SPI Biblioteca Gráfica T6963C Lcd - Biblioteca Gráfica T6963C Lcd - UART Biblioteca - Biblioteca USB HID

mikroC PRO para PIC

242

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

www.mecatronicadegaragem.blogspot.com

Page 328: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo não assinado ADC_Read (unsigned short canal);

Retorna 10-bit sem assinatura valor lido do canal especificado.

Descrição

Inicializa módulo PIC ADC interno para trabalhar com clock RC. Relógio determina o período de tempo necessário para a realização de conversão AD (min 12TAD).

Parâmetro canal representa o canal a partir do qual o valor analógico é a adquiridos. Consulte a ficha técnica apropriada para o canal-a-pino de

t Requer Nada.

Exemplo não assinado tmp; ... tmp = ADC_Read (2); / / Ler o valor analógico do canal 2

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. Biblioteca função ADC_Read é incluído para oferecer-lhe confortáveis trabalhar com o módulo.

ADC_Read

Exemplo Biblioteca

Este exemplo de código lê o valor analógico do canal 2 e apresenta-lo no PORTB e PORTC.

unsigned int temp_res;

vazio main () { ANSEL = 0x04; TRISA = 0xFF; ANSELH = 0; TRISC = 0x3F; TRISB = 0;

fazer {

/ / / / / / / / / /

Configure o pino AN2 como analógico PORTA de entrada é Configure outras AN pinos como I / O digital Pins RC7, RC6 são saídas PORTB é a saída

}

temp_res = ADC_Read (2); PORTB = temp_res; PORTC temp_res => 2;

} while (1);

/ / Obter os resultados de 10 bits da conversão AD / / Envia abaixo de 8 bits a PORTB / / Envia 2 bits mais significativos a RC7, RC6

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

243

www.mecatronicadegaragem.blogspot.com

Page 329: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Conexão HW

ADC conexão HW CAN BIBLIOTECA mikroC PRO para PIC fornece uma biblioteca (driver) para trabalhar com o módulo CAN. CAN é um protocolo muito robusto que a detecção de erros e de sinalização, de auto- e confinamento de falhas. dados defeituoso pode e quadros remotas são re-transmitidos auto- automaticamente, semelhante ao da Ethernet. 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, e pode ir ainda mais baixo em distâncias maiores da rede, para baixo a 200Kbit / s, que é o bitrate mínimo definido pela norma. Cabos utilizados são pares de fios trançados, e comprimento máximo do cabo é de 1000m. CAN suporta dois formatos de mensagens:

formato padrão, com 11 bits identificador, e Extended format, com 29 bits identificador

Nota: CAN Biblioteca é apoiada apenas por MCUs com o módulo CAN. Nota: Consultar o padrão CAN CAN sobre a resistência de terminação de barramento.

244

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

www.mecatronicadegaragem.blogspot.com

Page 330: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSetOperationMode (unsigned short modo, unsigned short wait_flag);

Retorna Nada.

Descrição

Define CAN para o modo solicitado, ou seja, cópias Modo para CANSTAT. modo Parâmetros deve ser um dos CAN_OP_MODE constantes (ver constantes CAN).

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. Se for 0, esta é uma chamada sem bloqueio. Ele não verifica se o módulo CAN é

t d

Requer

rotinas CAN atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que é

d b CAN Exemplo CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF);

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

CANSetOperationMode CANGetOperationMode CANInitialize CANSetBaudRate CANSetMask CANSetFilter CanRead CanWrite

rotinas a seguir são para uso interno, compilador só:

RegsToCANID CANIDToRegs

Certifique-se de verificar as constantes podem necessário para utilizar algumas das funções.

CANSetOperationMode

Bibliotecas

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

245

www.mecatronicadegaragem.blogspot.com

Page 331: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANInitialize (char SJW, BRP char, char PHSEG1, char PHSEG2, char PROPSEG, char CAN_CONFIG_FLAGS);

Retorna Nada.

Descrição

Inicializa CAN. Todas as transmissões pendentes são abortadas. Configura máscara de todos os registra a 0 para permitir que todas as mensagens. O modo de configuração é definido internamente por essa função. Após uma execu- ção deste modo de funcionamento normal é definido. registros de filtro são definidas de acordo com o valor de bandeira:

se (CAN_CONFIG_FLAGS & _CAN_CONFIG_VALID_XTD_MSG! = 0) / / Defina todos os filtros para XTD_MSG

else if (Config e _CAN_CONFIG_VALID_STD_MSG! = 0) / / Defina todos os filtros para STD_MSG

mais / / Definir a metade dos filtros para DST, eo restante para XTD_MSG

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)

t l d fi id 18XXX8 d t h t (1 8)

Requer

rotinas podem atualmente apoiada apenas por P18XXX8 MCUs PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que é con-

Exemplo

init = & _CAN_CONFIG_SAMPLE_THRICE _CAN_CONFIG_PHSEG2_PRG_ON & _CAN_CONFIG_STD_MSG & _CAN_CONFIG_DBL_BUFFER_ON & _CAN_CONFIG_VALID_XTD_MSG & _CAN_CONFIG_LINE_FILTER_OFF;

... CANInitialize (1, 1, 3, 3, 1, o init) / / inicializar CAN

Protótipo unsigned short CANGetOperationMode ();

Retorna opmode atual.

Descrição função retorna modo de operação atual do módulo CAN.

Requer rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que é

Exemplo se (CANGetOperationMode () == _CAN_MODE_NORMAL) {... };

CAPÍTULO 7 Bibliotecas

CANGetOperationMode

CANInitialize

mikroC PRO para PIC

246

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 332: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSetBaudRate (char SJW, char BRP, char PHSEG1, char PHSEG2, char PROPSEG, char CAN_CONFIG_FLAGS);

Retorna Nada.

Descrição

Define CAN taxa de transmissão. Devido à complexidade do protocolo CAN, você não pode

simplesmente vigor um valor de bps. Em vez disso, use esta função quando CAN está em modo de configuração. Consulte datasheet para mais detalhes.

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)

l d fi id 18XXX8 d h (1 8) Requer

CAN deve ser na configuração modo, caso contrário, a função será ignorado. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que é con-

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;

... CANSetBaudRate (1, 1, 3, 3, 1, o init);

CAPÍTULO 7

mikroC PRO para PIC

CANSetBoudRate

Bibliotecas

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

247

www.mecatronicadegaragem.blogspot.com

Page 333: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSetFilter (char CAN_FILTER, tempo valor, char CAN_CONFIG_FLAGS);

Retorna Nada.

Descrição

Função define a máscara de filtragem avançada de mensagens. Dado valor é um pouco ajustar- ed aos registos máscara apropriada buffer.

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, quer

Requer CAN deve estar em modo de configuração; caso contrário, a função será ignorada. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC.

Exemplo / / Seta todos os bits de máscara para 1, ou seja, todos os bits filtrados são relevantes:

CANSetMask (_CAN_MASK_B1, -1, _CAN_CONFIG_XTD_MSG); / / Observe que -1 é apenas uma maneira mais barata de escrever 0xFFFFFFFF.

Complemento irá fazer o truque e encha-o com os entes.

Protótipo vazio CANSetFilter (char CAN_FILTER, tempo valor, char CAN_CONFIG_FLAGS);

Retorna Nada.

Descrição

Função define filtro de mensagens. Dado valor é um pouco ajustado para tampão apropriado registros de máscara.

Parâmetros:

CAN_FILTER é um dos valores predefinidos constante (ver constantes CAN) valor é o filtro registrar o valor CAN_CONFIG_FLAGS seleciona o tipo de mensagem para filtrar, quer

Requer

CAN deve estar em modo de configuração, caso contrário, a função será ignorado. rotinas podem atualmente suportado apenas por P18XXX8 PIC MCUs. Microcontrolador deve

Exemplo / / Set id B1_F1 filtro para 3:

CANSetFilter (_CAN_FILTER_B1_F1, 3, _CAN_CONFIG_XTD_MSG);

CAPÍTULO 7 Bibliotecas

CANSetMask

CANSetFilter

mikroC PRO para PIC

248

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

www.mecatronicadegaragem.blogspot.com

Page 334: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short CanWrite (long id, char * dados, char datalen, char CAN_TX_MSG_FLAGS);

Retorna Retorna zero se a mensagem não pode ser na fila (buffer cheio).

Descrição

Se pelo menos um buffer de transmissão vazia é encontrada, a função envia mensagem sobre fila para a transmissão. Se o buffer está cheio, a função retorna 0. Parâmetros:

id é a mensagem CAN identificador. 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

é i d d d 1 8 Requer

CAN deve estar no modo Normal. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microcontrolador deve ser li d CAN t t (MCP2551 i il ) é t d b t CAN

Exemplo

char tx, dados; tempo id; / / ... tx = & _CAN_TX_PRIORITY_0

_CAN_TX_XTD_FRAME; / / ... CanWrite (id, dados, 2, TX);

Protótipo char CanRead (long * Id, char * dados, char * Datalen, char CAN_RX_MSG_FLAGS *);

Retorna Mensagem do buffer de recepção ou zero se nenhuma mensagem de encontrado.

Descrição

Função lê mensagem do buffer de recebimento. Se pelo menos um buffer cheio receber for encontrada, ela é extraídos e retornado. Se nenhum encontrada, a função retorna zero. Parâmetros:

id é a mensagem identificador dados é um array de bytes até 8 bytes de comprimento

é i t d d d 1 8 Requer

CAN deve estar no modo em que a recepção é possível. rotinas podem atualmente apoiada apenas por P18XXX8 MCUs PIC. Microcontrolador deve ser ligado ao CAN transceptor (MCP2551 ou similar) que é conectado ao barramento CAN.

Exemplo

char VN, rx, len, dados [8]; tempo id; / / ... rx = 0; / / ... VN = CanRead (id, dados, len rx);

CAPÍTULO 7

mikroC PRO para PIC

CanRead

CanWrite

Bibliotecas

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

249

www.mecatronicadegaragem.blogspot.com

Page 335: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

CAN Constantes Há um número de constantes predefinidas na biblioteca da CAN. Para poder usar o biblioteca de forma eficaz, você precisa estar familiarizado com estes. Você pode querer verificar a exemplo, no final do capítulo. CAN_OP_MODE

CAN_OP_MODE

constantes definem operação pode

modo.

Função

CANSetOperationMode espera que um dos estas como seu argumento:

const char _CAN_MODE_BITS _CAN_MODE_NORMAL _CAN_MODE_SLEEP _CAN_MODE_LOOP _CAN_MODE_LISTEN _CAN_MODE_CONFIG

= = = =

= =

0xE0, 0x00, 0x20, 0x40, 0x60, 0x80;

/ / Utilize esta opção para acesso opmode bits

CAN_CONFIG_FLAGS

CAN_CONFIG_FLAGS constantes definem bandeiras relacionadas com a configuração do módulo CAN. Funções CANInitialize e CANSetBaudRate esperar que um deles (ou um bit a bit combinação), como seu argumento:

const char

_CAN_CONFIG_DEFAULT

_CAN_CONFIG_PHSEG2_PRG_BIT _CAN_CONFIG_PHSEG2_PRG_ON _CAN_CONFIG_PHSEG2_PRG_OFF

= 0xFF,

= 0x01, = 0xFF, = 0xFE,

/ / 11111111 / / XXXXXXX1 / / XXXXXXX0

_CAN_CONFIG_LINE_FILTER_BIT = 0x02, _CAN_CONFIG_LINE_FILTER_ON = 0xFF, _CAN_CONFIG_LINE_FILTER_OFF = 0xFD,

/ XXXXXX1X / / XXXXXX0X /

_CAN_CONFIG_SAMPLE_BIT

= 0x04,

_CAN_CONFIG_SAMPLE_ONCE _CAN_CONFIG_SAMPLE_THRICE

_CAN_CONFIG_MSG_TYPE_BIT _CAN_CONFIG_STD_MSG _CAN_CONFIG_XTD_MSG

_CAN_CONFIG_DBL_BUFFER_BIT _CAN_CONFIG_DBL_BUFFER_ON _CAN_CONFIG_DBL_BUFFER_OFF

= 0xFF, = 0xFB,

= 0x08, = 0xFF, = 0xF7,

= 0x10, = 0xFF, = 0xEF,

/ XXXXX1XX / / XXXXX0XX / / XXXX1XXX / / XXXX0XXX / / XXX1XXXX / / XXX0XXXX /

250

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

www.mecatronicadegaragem.blogspot.com

Page 336: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC _CAN_CONFIG_MSG_BITS

= 0x60,

Bibliotecas

_CAN_CONFIG_ALL_MSG _CAN_CONFIG_VALID_XTD_MSG _CAN_CONFIG_VALID_STD_MSG _CAN_CONFIG_ALL_VALID_MSG

= 0xFF, = 0xDF, = 0xBF, = 0x9F;

/ X11XXXXX / / X10XXXXX / / X01XXXXX / / X00XXXXX /

Você pode usar AND bit a bit (&) para formar config byte fora desses valores. Por exemplo:

init = & _CAN_CONFIG_SAMPLE_THRICE

_CAN_CONFIG_PHSEG2_PRG_ON & _CAN_CONFIG_STD_MSG & _CAN_CONFIG_DBL_BUFFER_ON & _CAN_CONFIG_VALID_XTD_MSG & _CAN_CONFIG_LINE_FILTER_OFF;

... CANInitialize (1, 1, 3, 3, 1, o init); / / Inicializa CAN

CAN_TX_MSG_FLAGS

CAN_TX_MSG_FLAGS estão relacionadas com bandeiras transmissão de uma mensagem CAN:

const char

_CAN_TX_PRIORITY_BITS = 0x03, _CAN_TX_PRIORITY_0 _CAN_TX_PRIORITY_1 _CAN_TX_PRIORITY_2 _CAN_TX_PRIORITY_3

= = = =

0xFC, 0xFD, 0xFE, 0xFF,

/ / / / / / / /

XXXXXX00 XXXXXX01 XXXXXX10 XXXXXX11

_CAN_TX_FRAME_BIT

= 0x08,

_CAN_TX_STD_FRAME _CAN_TX_XTD_FRAME

= 0xFF, = 0xF7,

/ / XXXXX1XX / XXXXX0XX /

_CAN_TX_RTR_BIT = 0x40, _CAN_TX_NO_RTR_FRAME = 0xFF, _CAN_TX_RTR_FRAME = 0xBF;

/ X1XXXXXX / / X0XXXXXX /

Você pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. 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;

... CANSendMessage (id, dados, 1, send_config);

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

251

www.mecatronicadegaragem.blogspot.com

Page 337: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. Se um bit especial é definido; cor- responder significado é TRUE ou então ele será FALSE. const char

_CAN_RX_FILTER_BITS _CAN_RX_FILTER_1 _CAN_RX_FILTER_2 _CAN_RX_FILTER_3 _CAN_RX_FILTER_4 _CAN_RX_FILTER_5 _CAN_RX_FILTER_6 _CAN_RX_OVERFLOW _CAN_RX_INVALID_MSG _CAN_RX_XTD_FRAME _CAN_RX_RTR_FRAME _CAN_RX_DBL_BUFFERED

= = = = = = = = = = =

=

0x07 / Uso / este acesso bits filtro 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, / / Defina se Overflowed mais limpo 0x10, / / Define se inválido mais limpo 0x20, / / Define se a mensagem XTD mais limpo 0x40, / / Define se a mensagem RTR mais limpo 0x80 / / Define se a mensagem foi rígido

ware buffer duplo

Você pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Por exemplo:

se (MsgFlag & _CAN_RX_OVERFLOW! = 0) { ... / / Receptor estouro ocorreu. / / Nós perdemos a nossa mensagem anterior.

}

CAN_MASK

CAN_MASK constantes definem códigos máscara. Função CANSetMask espera que um dos estas como seu argumento:

# const char

_CAN_MASK_B1 = 0, _CAN_MASK_B2 = 1;

CAN_FILTER

CAN_FILTER constantes definir códigos de filtro. Função CANSetFilter espera uma destas como sua argumento:

const char

_CAN_FILTER_B1_F1 _CAN_FILTER_B1_F2 _CAN_FILTER_B2_F1 _CAN_FILTER_B2_F2

= = = =

0; 1, 2, 3 º,

252

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

www.mecatronicadegaragem.blogspot.com

Page 338: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

_CAN_FILTER_B2_F3 = 4, _CAN_FILTER_B2_F4 = 5;

Exemplo Biblioteca

Esta é uma simples demonstração de CAN Biblioteca rotinas de uso. Primeiro nó inicia a comunicação com o segundo nó, enviando alguns dados para o seu endereço. A segundo nó responde enviando de volta os dados incrementado em 1. Primeiro nó em seguida faz o mesmo e envia os dados incrementado de volta para o segundo nó, etc Código para o nó CAN primeiro:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx buffer de dados char Msg_Rcvd; Sinalizador / recepção / const longo ID_1st = 12111, ID_2nd = 3; IDs / node / tempo Rx_ID;

vazio main () {

PORTC = 0; TRISC = 0;

Can_Init_Flags = 0; Can_Send_Flags = 0; Can_Rcv_Flags = 0;

PORTC / claro / / Configura como PORTC saída

/ / / / Bandeiras claras / /

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_Init_Flags _CAN_CONFIG_SAMPLE_THRICE = &

_CAN_CONFIG_PHSEG2_PRG_ON &

/ Valor / formulário a ser utilizado / / Com CANInit

_CAN_CONFIG_XTD_MSG & _CAN_CONFIG_DBL_BUFFER_ON & _CAN_CONFIG_VALID_XTD_MSG;

CANInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializa o módulo CAN CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF); / / modo de configuração definidas CANSetMask (_CAN_MASK_B1, -1, _CAN_CONFIG_XTD_MSG); / mask1 definir todos os bits para os CANSetMask (_CAN_MASK_B2, -1, _CAN_CONFIG_XTD_MSG); / mask2 definir todos os bits para os CANSetFilter (_CAN_FILTER_B2_F4, ID_2nd, _CAN_CONFIG_XTD_MSG); / / set id B2_F4 filtro para segundo nó ID

CANSetOperationMode (_CAN_MODE_NORMAL, 0xFF);

/ / Definir o modo normal

RxTx_Data [0] = 9;

/ / conjunto de dados inicial a ser enviada

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

www.mecatronicadegaragem.blogspot.com

Page 339: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

CanWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / envia mensagem inicial while (1) {/ / faz um loop infinito Msg_Rcvd CanRead = (& Rx_ID, RxTx_Data & Rx_Data_Len & Can_Rcv_Flags); / /

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, corrigir a PORTC RxTx_Data [0] + +; / / incrementa os dados recebidos

Delay_ms (10); CanWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / incrementado enviar dados de volta

} }

}

Código para o nó CAN segundo: unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx buffer de dados char Msg_Rcvd; sinalizador / recepção / const longo ID_1st = 12111, ID_2nd = 3; / node / Identificações tempo Rx_ID;

vazio main () {

PORTC = 0; TRISC = 0;

Can_Init_Flags = 0; Can_Send_Flags = 0; Can_Rcv_Flags = 0;

PORTC / claro / / Set PORTC como saída

/ / / / Bandeiras claras / /

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_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,3,3,3,1, Can_Init_Flags); / / inicializa o módulo CAN externa CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF); / / modo de configuração definidas CANSetMask (_CAN_MASK_B1, -1, _CAN_CONFIG_XTD_MSG); / / configura todos mask1

bits para os

254

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

www.mecatronicadegaragem.blogspot.com

Page 340: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

CANSetMask (_CAN_MASK_B2, -1, _CAN_CONFIG_XTD_MSG); / / configura todos mask2 bits para os

CANSetFilter (_CAN_FILTER_B2_F3, ID_1st, _CAN_CONFIG_XTD_MSG); / set / ID da B2_F3 filtro para 1 nó ID

CANSetOperationMode (_CAN_MODE_NORMAL, 0xFF); / / o modo NORMAL

enquanto (1) {/ / faz um loop infinito

Msg_Rcvd CanRead = (& Rx_ID, RxTx_Data & Rx_Data_Len, & Can_Rcv_Flags); / receber mensagens

se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleção ID PORTC RxTx_Data = [0]; / / id corrigir os dados, a produção a PORTC RxTx_Data [0] + +; / / incrementa os dados recebidos CanWrite (ID_2nd, RxTx_Data, 1, Can_Send_Flags); / / envia incre-

dados documentados de volta }

}

Conexão HW

Exemplo de interface CAN transceptor com MCU e ônibus

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

255

www.mecatronicadegaragem.blogspot.com

Page 341: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida na todos

projetos usando CANSPI

Descrição: Exemplo:

sbit sfr extern CanSpi_CS;

Chip linha Select. sbit CanSpi_CS em RC0_bit;

sbit sfr extern CanSpi_Rst;

linha de reposição. sbit CanSpi_Rst em RC2_bit;

sbit sfr extern CanSpi_CS_Direction;

Direção do Chip Selecione pino.

sbit CanSpi_CS_Direction em TRISC0_bit;

sbit sfr extern CanSpi_Rst_Direction;

Direção do pino de Reset. sbit CanSpi_Rst_Direction em TRISC2_bit;

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. 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. O CAN é um protocolo muito robusto que a detecção de erros e sinalização, de auto-verificação e confinamento de falhas. dados defeituoso pode e quadros remoto são re- transmitidas automaticamente, semelhante ao Ethernet. taxas de transferência de dados dependem da distância. Por exemplo, 1 Mbit / s pode ser obtida em net- comprimentos de trabalho abaixo de 40m, enquanto 250 Kbit / s pode ser obtida em comprimentos de rede abaixo 250m. Quanto maior a distância menor bitrate máximo que pode ser alcançado. O menor bitrate definido pelo padrão é 200Kbit / s. Os cabos utilizados são pares de fios trançados. CAN suporta dois formatos de mensagens:

formato padrão, com 11 bits de identificador e Extensão formato, com 29 bits identificador.

Nota:

Consulte a norma CAN CAN sobre a resistência de terminação de ônibus. Uma velocidade de comunicação eficaz CANSPI depende SPI e, certamente, é mais lento do que "Real" CAN. A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. CANSPI módulo refere-se a CANSPI mikroElektronika do Add-on board conectado ao módulo SPI de MCU.

das dependências externas de CANSPI Biblioteca

256

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

www.mecatronicadegaragem.blogspot.com

Page 342: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

Bibliotecas

- - - - - - - -

CANSPISetOperationMode CANSPIGetOperationMode CANSPIInitialize CANSPISetBaudRate CANSPISetMask CANSPISetFilter CANSPIread CANSPIWrite

As rotinas a seguir são para um uso interno da biblioteca, apenas:

- RegsToCANSPIID - CANSPIIDToRegs

Certifique-se de verificar constantes CANSPI necessário para utilizar algumas das funções.

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

257

www.mecatronicadegaragem.blogspot.com

Page 343: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSPISetOperationMode (char modo, char WAIT);

Retorna Nada.

Descrição

Define o módulo CANSPI para o modo solicitado.

Parâmetros:

- modo: CANSPI modo de operação do módulo. Valores válidos: CANSPI_OP_MODE con- balcões de (ver constantes CANSPI). - ESPERA: CANSPI modo de comutação pedido de verificação. Se WAIT == 0, a chamada não é bloqueio. A função não verifica se o módulo está ligado a CANSPI solicitadas modo ou não. Chamador deve usar CANSPIGetOperationMode para verificar a cor- modo de operação rect antes da operação de modo a realização específica. Se AGUARDE! = 0, o

Requer

As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Câmara ou h d lh t V j l d ã t i f i d t á i

Exemplo / / Configurar o módulo CANSPI no modo de configuração (aguardar dentro CANSPISetOperationMode até este modo estiver definido) CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF);

Protótipo char CANSPIGetOperationMode ();

Retorna modo de operação atual.

Descrição A função retorna o modo de operação atual do módulo CANSPI. Confira CAN- SPI_OP_MODE constantes (ver constantes CANSPI) ou folha de dados do dispositivo para ópera Modo de códigos ção

Requer A rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Câmara ou hardware semelhante Veja o exemplo de conexão na parte inferior desta página

Exemplo

/ / Verifica se o módulo CANSPI está no modo normal e se é fazer alguma coisa. if (CANSPIGetOperationMode () == _CANSPI_MODE_NORMAL) {

... }

CAPÍTULO 7 Bibliotecas

CANSPISetOperationMode

CANSPIGetOperationMode

mikroC PRO para PIC

258

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

www.mecatronicadegaragem.blogspot.com

Page 344: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSPIInitialize ( char SJW, char BRP, char PHSEG1, char PHSEG2, char PROPSEG, char CANSPI_CONFIG_FLAGS);

Retorna Nada.

Descrição

Inicializa o módulo CANSPI. Stand-Alone controlador CAN no módulo CANSPI é definido como:

- Desabilite pode capturar - Continuar a CAN operação em modo de Espera - Não interromper as transmissões pendentes - Fcan relógio: 4 * Países Terceiros (FOSC) - Taxa de transmissão é definida de acordo com determinados parâmetros - Modo CAN: Normal - Filtro e as identificações de registros máscara são definidos como zero - Filtro e uma máscara tipo de estrutura da mensagem é definido de acordo com CAN_CONFIG_FLAGS valor

SAM, SEG2PHTS, WAKFIL e DBEN bits são definidos de acordo toCANSPI_CONFIG_FLAGS valor.

Parâmetros:

- SJW conforme definido na ficha técnica do controlador CAN - BRP conforme definido na ficha técnica do controlador CAN - PHSEG1 tal como definido no controlador CAN datasheet - PHSEG2 conforme definido na ficha técnica do controlador CAN - PROPSEG conforme definido na ficha técnica do controlador CAN - CAN_CONFIG_FLAGS é formado a partir de constantes predefinidas (ver CANSPI con- balcões de)

Requer

As variáveis globais:

- CanSpi_CS: Chip Selecionar linha - CanSpi_Rst: linha de reset - CanSpi_CS_Direction: Direção do pino de Chip Select - CanSpi_Rst_Direction: Direção do pino de Reset devem ser definidas antes de utilizar esta função.

As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI. O SPI módulo precisa ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Câmara ou sim- homólogos de hardware. Veja o exemplo de conexão na parte inferior desta

CAPÍTULO 7

mikroC PRO para PIC

CANSPIInitialize

Bibliotecas

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

259

www.mecatronicadegaragem.blogspot.com

Page 345: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

/ / Conexões CANSPI módulo

mikroC PRO para PIC

sbit CanSpi_CS em RC0_bit; sbit CanSpi_CS_Direction em TRISC0_bit; sbit CanSpi_Rst em RC2_bit; sbit CanSpi_Rst_Direction em TRISC2_bit; / / Fim conexões CANSPI módulo

/ / Inicializa o módulo CANSPI com a taxa de transmissão e bandeiras de aceitação de mensagens, juntamente com as regras de amostragem char CanSPi_Init_Flags;

Exemplo ... CanSPi_Init_Flags = _CANSPI_CONFIG_SAMPLE_THRICE e / form /

valor a ser utilizado _CANSPI_CONFIG_PHSEG2_PRG_ON & / / Com

CANSPIInitialize _CANSPI_CONFIG_XTD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG;

... SPI1_Init (); / / inicializa o módulo SPI CANSPIInitialize (1,3,3,3,1, CanSpi_Init_Flags); / / inicializa

CANSPI módulo externo

260

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

www.mecatronicadegaragem.blogspot.com

Page 346: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSPISetBaudRate ( char SJW, char BRP, char PHSEG1, char PHSEG2, char PROPSEG, char CANSPI_CONFIG_FLAGS);

Retorna Nada.

Descrição

Define a taxa de CANSPI módulo de transmissão. Devido à complexidade do

protocolo CAN, você não pode simplesmente forçar um valor bps. Em vez disso, use esta função quando o CANSPI módulo está em modo de configuração.

SAM, SEG2PHTS e WAKFIL bits são definidos de acordo com CANSPI_CONFIG_FLAGS

valor. Consulte a ficha técnica para mais detalhes.

Parâmetros:

- SJW como definidos na ficha técnica do controlador CAN - BRP conforme definido na ficha técnica do controlador CAN - PHSEG1 conforme definido na ficha técnica do controlador CAN - PHSEG2 conforme definido na ficha técnica do controlador CAN f d fi id fi h té i d t l d CAN

Requer

O módulo CANSPI deve estar no modo de configuração, caso contrário, a função será ignorados. Veja CANSPISetOperationMode.

As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI.

MCU tem para ser conectado corretamente mikroElektronika de CANSPI Extra

Exemplo

/ / Necessário definir taxa de transmissão e regras de amostragem char canspi_config_flags; ... CANSPISetOperationMode (CANSPI_MODE_CONFIG, 0xFF); / CONFIGURAÇÃO / set- Modo de ração (CANSPI mastro módulo de estar em modo de configuração para a taxa de transmissão 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;

CANSPISetBaudRate (1, 1, 3, 3, 1, canspi_config_flags);

CAPÍTULO 7

mikroC PRO para PIC

CANSPISetBaudRate

Bibliotecas

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

261

www.mecatronicadegaragem.blogspot.com

Page 347: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSPISetMask (char CANSPI_MASK, tempo val, char CANSPI_CON- FIG_FLAGS);

Retorna Nada.

Descrição

Configura uma máscara de filtragem avançada de mensagens. O parâmetro valor é pouco ajustadas aos registos máscara apropriada.

Parâmetros:

- CAN_MASK: CANSPI número de máscara de módulo. Valores válidos: CANSPI_MASK costants (Ver constantes CANSPI)

- máscara de valor do registo: val - CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. Valores válidos:

CANSPI_CONFIG_ALL_VALID_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG.

(Ver constantes CANSPI)

Requer

O módulo CANSPI deve estar no modo de configuração, caso contrário, a função será ignorados. Veja CANSPISetOperationMode.

As rotinas são suportados CANSPI apenas por MCUs com o módulo SPI.

MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra

Exemplo

/ / Definir a máscara de filtro adequado e valor tipo de mensagem CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / Modo conjunto de configurações (módulo CANSPI deve estar no modo de config para as configurações de máscara)

/ / 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 0xFFFFFFFF. / / Complemento irá fazer o truque e encha-o com os entes. CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_MATCH_MSG_TYPE & _CANSPI_CONFIG_XTD_MSG);

CAPÍTULO 7 Bibliotecas

CANSPISetMask

mikroC PRO para PIC

262

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

www.mecatronicadegaragem.blogspot.com

Page 348: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio CANSPISetFilter (char CANSPI_FILTER, tempo val, char CANSPI_CONFIG_FLAGS);

Retorna Nada.

Descrição

Configura a mensagem de filtro. O parâmetro valor é pouco adaptado ao dis- comeu registros filtro.

Parâmetros:

- CAN_FILTER: módulo de filtro CANSPI número. Valores válidos: CANSPI_FILTER constantes (ver constantes CANSPI)

- valor do registro do filtro: val - CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. Valores válidos:

CANSPI_CONFIG_ALL_VALID_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG.

(Ver constantes CANSPI)

Requer

O módulo CANSPI deve estar no modo de configuração, caso contrário, a função

será ignorados. Veja CANSPISetOperationMode.

As rotinas CANSPI são suportados apenas pelo MCUs com o SPI módulo.

MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra

Exemplo

/ / Definir o valor do filtro adequado e tipo de mensagem CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / Modo conjunto de configurações (módulo CANSPI deve estar no modo de config para as definições do filtro)

/ * Defina id B1_F1 filtro para 3: * / CANSPISetFilter (_CANSPI_FILTER_B1_F1, 3, _CANSPI_CONFIG_XTD_MSG);

CAPÍTULO 7

mikroC PRO para PIC

CANSPISetFilter

Bibliotecas

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

263

www.mecatronicadegaragem.blogspot.com

Page 349: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char CANSPIRead (long * Id, char * Rd_data, char * Data_len, char CANSPI_RX_MSG_FLAGS *);

Retorna - 0 se nada for recebido - 0xFF se um dos buffers de recepção está cheio (mensagem recebidos)

Descrição

Se pelo menos um buffer de recebimento integral for encontrado, ele será processado nas seguintes maneira:

- ID da mensagem é recuperada e armazenada na localização fornecidas pela id

parâmetro - Mensagem dados são recuperados e armazenados em um buffer fornecido pelo o rd_data parâmetro - Tamanho da mensagem é recuperada e armazenada a localização fornecida pela data_len parâmetro

- Mensagem bandeiras são recuperados e armazenados para a localização fornecida pela CAN_RX_MSG_FLAGS parâmetro

Requer

O módulo CANSPI deve estar em um modo no qual é possível receber. Veja CANSPISetOperationMode.

As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI.

MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra

Câmara ou

Exemplo

/ / Verificação o módulo CANSPI para mensagens recebidas. Se algum foi receberam fazer alguma coisa. char msg_rcvd, rx_flags, data_len; char dados [8]; tempo msg_id; ... CANSPISetOperationMode (CA_NSPI_MODE_NORMAL, 0xFF); / / Definir o modo normal (módulo CANSPI deve estar no modo em que receber é possível) ... rx_flags = 0; / / Limpa bandeiras de mensagem if (= msg_rcvd CANSPIRead (msg_id, dados data_len, rx_flags)) {

... }

CAPÍTULO 7 Bibliotecas

CANSPIRead

mikroC PRO para PIC

264

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

www.mecatronicadegaragem.blogspot.com

Page 350: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char CANSPIWrite (long id, char * Wr_data, char data_len, char CAN- SPI_TX_MSG_FLAGS);

Retorna - 0 Se todos os buffers de transmissão estão ocupados - 0xFF se pelo menos um buffer de transmissão está disponível

Descrição

Se pelo menos um vazio buffer de transmissão for encontrado, a função envia mensagem em fila para a transmissão.

Parâmetros:

- id: identificador de mensagem CAN. Valores válidos: 11 ou 29 valores

pouco, dependendo de tipo de mensagem (padrão ou estendida)

Requer

O módulo CANSPI deve estar no modo em que a transmissão seja possível. Veja CANSPISetOperationMode.

As rotinas CANSPI são suportados apenas pelo MCUs com o módulo SPI.

MCU tem de ser devidamente conectado ao mikroElektronika de CANSPI Extra

Câmara ou

Exemplo

/ / Envia mensagem prorrogado mensagem CAN com a identificação adequada e dados char tx_flags; char dados [8]; tempo msg_id; ... CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / Definir o modo normal (CANSPI deve estar no modo em que a transmissão é possível)

tx_flags = _CANSPI_TX_PRIORITY_0 & _CANSPI_TX_XTD_FRAME; / / Mensagem de flags CANSPIWrite (msg_id, dados, 2, tx_flags);

CAPÍTULO 7

mikroC PRO para PIC

CANSPIWrite

Bibliotecas

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

265

www.mecatronicadegaragem.blogspot.com

Page 351: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

CANSPI Constantes Há um número de constantes predefinidas na biblioteca CANSPI. Você precisa ser familiarizado com eles, a fim de ser capaz de usar a biblioteca eficazmente. Check-exame plo, no final do capítulo. CANSPI_OP_MODE A CANSPI_OP_MODE CANSPI constantes definem o modo de operação. Função CANSPISetOperationMode espera uma destas como é argumento: const char

_CANSPI_MODE_BITS _CANSPI_MODE_NORMAL _CANSPI_MODE_SLEEP _CANSPI_MODE_LOOP _CANSPI_MODE_LISTEN _CANSPI_MODE_CONFIG

= 0xE0, = 0x00, = 0x20, = 0x40, = 0x60, = 0x80;

/ / Utilize esta opção para acesso opmode bits

CANSPI_CONFIG_FLAGS

A CANSPI_CONFIG_FLAGS constantes definem bandeiras relacionadas com o módulo CANSPI configuração. As funções CANSPIInitialize, CANSPISetBaudRate, CANSPISetMask e CANSPISetFilter esperar um desses (ou uma combinação bit a bit- ção), como seu argumento:

const char

_CANSPI_CONFIG_DEFAULT

_CANSPI_CONFIG_PHSEG2_PRG_BIT _CANSPI_CONFIG_PHSEG2_PRG_ON _CANSPI_CONFIG_PHSEG2_PRG_OFF

= 0xFF,

= 0x01, = 0xFF, = 0xFE,

/ / 11111111 / / XXXXXXX1 / / XXXXXXX0

_CANSPI_CONFIG_LINE_FILTER_BIT = 0x02, _CANSPI_CONFIG_LINE_FILTER_ON = 0xFF, _CANSPI_CONFIG_LINE_FILTER_OFF = 0xFD,

/ XXXXXX1X / / XXXXXX0X /

_CANSPI_CONFIG_SAMPLE_BIT

= 0x04,

_CANSPI_CONFIG_SAMPLE_ONCE _CANSPI_CONFIG_SAMPLE_THRICE

_CANSPI_CONFIG_MSG_TYPE_BIT _CANSPI_CONFIG_STD_MSG _CANSPI_CONFIG_XTD_MSG

= 0xFF, = 0xFB,

= 0x08, = 0xFF, = 0xF7,

/ XXXXX1XX / / XXXXX0XX / / XXXX1XXX / / XXXX0XXX /

266

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

www.mecatronicadegaragem.blogspot.com

Page 352: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC _CANSPI_CONFIG_DBL_BUFFER_BIT

= 0x10,

Bibliotecas

_CANSPI_CONFIG_DBL_BUFFER_ON _CANSPI_CONFIG_DBL_BUFFER_OFF

_CANSPI_CONFIG_MSG_BITS _CANSPI_CONFIG_ALL_MSG _CANSPI_CONFIG_VALID_XTD_MSG _CANSPI_CONFIG_VALID_STD_MSG _CANSPI_CONFIG_ALL_VALID_MSG

= 0xFF, = 0xEF,

= 0x60, = 0xFF, = 0xDF, = 0xBF, = 0x9F;

/ XXX1XXXX / / XXX0XXXX / / X11XXXXX / / X10XXXXX / / X01XXXXX / / X00XXXXX /

Você pode usar AND bit a bit (&) para formar config byte fora desses valores. Por exemplo:

init = & _CANSPI_CONFIG_SAMPLE_THRICE

_CANSPI_CONFIG_PHSEG2_PRG_ON & _CANSPI_CONFIG_STD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG & _CANSPI_CONFIG_LINE_FILTER_OFF;

... CANSPIInitialize (1, 1, 3, 3, 1, o init); / / 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_TX_PRIORITY_0 _CANSPI_TX_PRIORITY_1 _CANSPI_TX_PRIORITY_2 _CANSPI_TX_PRIORITY_3

= = = =

0xFC, 0xFD, 0xFE, 0xFF,

/ / / / / / / /

XXXXXX00 XXXXXX01 XXXXXX10 XXXXXX11

_CANSPI_TX_FRAME_BIT

= 0x08,

_CANSPI_TX_STD_FRAME _CANSPI_TX_XTD_FRAME

= 0xFF, = 0xF7,

/ XXXXX1XX / / XXXXX0XX /

_CANSPI_TX_RTR_BIT = 0x40, _CANSPI_TX_NO_RTR_FRAME = 0xFF, _CANSPI_TX_RTR_FRAME = 0xBF;

/ X1XXXXXX / / X0XXXXXX /

Você pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Por exemplo:

/ * Valor de forma a ser usado como sinalizador de mensagem de envio: * / send_config = _CANSPI_TX_PRIORITY_0 &

_CANSPI_TX_XTD_FRAME & _CANSPI_TX_NO_RTR_FRAME;

... CANSPIWrite (id, dados, 1, send_config);

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

267

www.mecatronicadegaragem.blogspot.com

Page 353: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

CANSPI_RX_MSG_FLAGS CANSPI_RX_MSG_FLAGS são flags relacionados com a recepção da mensagem CAN. Se um particu- bit lar estiver definido, então correspondente significado é TRUE ou então ele será FALSE. const char

_CANSPI_RX_FILTER_BITS _CANSPI_RX_FILTER_1 _CANSPI_RX_FILTER_2 _CANSPI_RX_FILTER_3 _CANSPI_RX_FILTER_4 _CANSPI_RX_FILTER_5 _CANSPI_RX_FILTER_6

= = = = = = =

0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,

/ / Utilize esta opção para filtrar o acesso bits

_CANSPI_RX_OVERFLOW = 0x08 / / Defina se Overflowed mais limpo _CANSPI_RX_INVALID_MSG = 0x10, / / 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. Por exemplo:

se (MsgFlag & _CANSPI_RX_OVERFLOW! = 0) { ... / / Receptor estouro ocorreu. / / Nós perdemos a nossa mensagem anterior.

}

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_MASK_B2 = 1;

CANSPI_FILTER

A CANSPI_FILTER constantes definir códigos de filtro. Funções CANSPISetFilter espera que um destes, como é o argumento:

const char

_CANSPI_FILTER_B1_F1 _CANSPI_FILTER_B1_F2 _CANSPI_FILTER_B2_F1 _CANSPI_FILTER_B2_F2

= = = =

0; 1, 2, 3 º,

268

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

www.mecatronicadegaragem.blogspot.com

Page 354: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

_CANSPI_FILTER_B2_F3 = 4, _CANSPI_FILTER_B2_F4 = 5;

Exemplo Biblioteca

Esta é uma simples demonstração de CANSPI Biblioteca de rotinas de utilização. Primeiro nó ini- Ates a comunicação com o segundo nó, enviando alguns dados para o seu endereço. O segundo nó responde enviando de volta os dados incrementado em 1. Primeiro nó em seguida, faz o mesmo e envia os dados de volta para incrementado segundo nó, etc

Código para o nó CANSPI primeiro:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx buffer de dados char Msg_Rcvd / / pavilhão de recepção const longo ID_1st = 12111, ID_2nd = 3; IDs / node / tempo Rx_ID;

/ / Conexões CANSPI módulo sbit CanSpi_CS sbit CanSpi_CS_Direction sbit CanSpi_Rst

em em em

RC0_bit; TRISC0_bit; RC2_bit;

sbit CanSpi_Rst_Direction em TRISC2_bit; / / Fim conexões CANSPI módulo

vazio main () {

ANSEL = 0; ANSELH = 0;

PORTB = 0; TRISB = 0;

Can_Init_Flags = 0; Can_Send_Flags = 0; Can_Rcv_Flags = 0;

/ / Configurar um pinos como I / O digital / PORTB / clear / PORTB set / como saída

/ / / / Bandeiras claras / /

Can_Send_Flags = & _CANSPI_TX_PRIORITY_0 / valor / form a ser usado

_CANSPI_TX_XTD_FRAME E / com CANSPIWrite _CANSPI_TX_NO_RTR_FRAME;

Can_Init_Flags = & _CANSPI_CONFIG_SAMPLE_THRICE / valor / Formulário a ser utilizado

_CANSPI_CONFIG_PHSEG2_PRG_ON E / com CANSPIInit _CANSPI_CONFIG_XTD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON &

_CANSPI_CONFIG_VALID_XTD_MSG;

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

269

www.mecatronicadegaragem.blogspot.com

Page 355: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

SPI1_Init ();

/ / inicializar o módulo SPI1

mikroC PRO para PIC

CANSPIInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializar CANSPI externa

módulo CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / modo de configuração definidas CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_XTD_MSG); / / set

todos mask1 bits para os CANSPISetMask (_CANSPI_MASK_B2, -1, _CANSPI_CONFIG_XTD_MSG); / / set

todos mask2 bits para os

CANSPISetFilter (_CANSPI_FILTER_B2_F4, ID_2nd, _CANSPI_CONFIG_XTD_MSG); / / Set id B2_F4 de filtro para segundo nó ID

CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / o modo NORMAL

RxTx_Data [0] = 9;

/ / Conjunto de dados inicial a ser enviada

CANSPIWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / envia inicial

Mensagem

while (1) {/ / faz um loop infinito

Msg_Rcvd CANSPIRead = (& Rx_ID, RxTx_Data & Rx_Data_Len, & Can_Rcv_Flags); / receber mensagens

se ((Rx_ID == ID_2nd) & & Msg_Rcvd) { / / Mensagem se cheque recebido id

PORTB RxTx_Data = [0]; / / Id saída de dados, corrigir a PORTC

RxTx_Data [0] + +; / / Incremento de dados recebidos

Delay_ms (10); CANSPIWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags);

/ / Incrementado enviar dados de volta }

} }

270

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

www.mecatronicadegaragem.blogspot.com

Page 356: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Código para o nó CANSPI segundo:

unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx de dados buffer char Msg_Rcvd; sinalizador / recepção / const longo ID_1st = 12111, ID_2nd = 3; IDs / node / tempo Rx_ID;

/ / Conexões CANSPI módulo sbit CanSpi_CS sbit CanSpi_CS_Direction sbit CanSpi_Rst

em em em

RC0_bit; TRISC0_bit; RC2_bit;

sbit CanSpi_Rst_Direction em TRISC2_bit; / / Fim conexões CANSPI módulo

vazio main () {

ANSEL = 0; ANSELH = 0;

PORTB = 0; TRISB = 0;

Can_Init_Flags = 0; Can_Send_Flags = 0; Can_Rcv_Flags = 0;

/ / Configurar um pinos como I / O digital / PORTB / clear / PORTB set / como saída

/ / / / Bandeiras claras / /

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;

Can_Init_Flags = & _CANSPI_CONFIG_SAMPLE_THRICE / valor / Formulário a ser utilizado

_CANSPI_CONFIG_PHSEG2_PRG_ON E / com CANSPIInit _CANSPI_CONFIG_XTD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG & _CANSPI_CONFIG_LINE_FILTER_OFF;

SPI1_Init ();

/ / Inicializa SPI1 módulo

CANSPIInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializa externa

módulo CANSPI CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / CONFIGURAÇÃO / set-

Modo de Ração CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_XTD_MSG); / / set

todos mask1 bits para os CANSPISetMask (_CANSPI_MASK_B2, -1, _CANSPI_CONFIG_XTD_MSG); / / set

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

271

www.mecatronicadegaragem.blogspot.com

Page 357: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

todos mask2 bits para os CANSPISetFilter (_CANSPI_FILTER_B2_F3, ID_1st, _CANSPI_CONFIG_XTD_MSG); / / Configura id do B2_F3 filtro para 1 ID do nó

CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / o modo NORMAL

enquanto (1) {/ / faz um loop infinito

Msg_Rcvd CANSPIRead = (& Rx_ID, RxTx_Data & Rx_Data_Len, & Can_Rcv_Flags); / receber mensagens

se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleção ID PORTB = RxTx_Data [0] / / id de saída de dados, corrigir a PORTC RxTx_Data [0] + +; / / incrementa os dados recebidos

CANSPIWrite (ID_2nd, RxTx_Data, 1, Can_Send_Flags); / / envia dados incrementado de volta

} }

} Conexão HW Exemplo de interface CAN MCP2510 transceptor com MCU via interface SPI

272

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 358: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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). Os cartões CF são amplamente utilizados elementos de memória, com- comumente usados com câmeras digitais. Grande capacidade e tempo de acesso excelente de apenas alguns microssegundos torná-los muito atrativos para aplicações de microcontroladores.

No cartão CF, os dados são divididos em setores. Um setor compreende geralmente 512 bytes. Rotinas para manipulação de arquivos, o Cf_Fat rotinas, não são executadas diretamente, mas su- sivamente através 512B buffer.

Nota: As rotinas para manipulação de arquivos só podem ser utilizados com sistema de arquivos FAT16.

Nota: As funções Biblioteca criar e ler arquivos no diretório raiz só.

Nota: As funções Biblioteca preencher ambas as tabelas e FAT1 FAT2 ao escrever em arquivos, mas o arquivo de dados está sendo leitura da tabela FAT1 só, ou seja, não há recuperação, se a tabela FAT1 fica corrompido.

Nota: Se o cartão SD / MMC tem Master Boot Record (MBR), a biblioteca funcionará com a primeiro disponível partição (lógica) primário que tem tamanho diferente de zero. Se o MMC / SD placa tem Volume Boot Record (ou seja, há apenas uma partição lógica e não MBR), a biblioteca trabalha com cartão de inteira como uma única partição. Para mais informações sobre MBR, física e unidades lógicas, primário / secundário partições e tabelas de partições, consulte outros recursos, por exemplo, Wikipedia e similares.

Nota: Antes de escrever a operação, 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. ferramentas de mapeamento de unidade, como Winhex, pode ser de grande ajuda.

Mikroelektronika - Soluções de soft

www.mecatronicadegaragem.blogspot.com

Page 359: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

ware e hardware para o mundo embutido 273

www.mecatronicadegaragem.blogspot.com

Page 360: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida em todos os projetos usando Compact Bibli t d Fl h

Descrição: Exemplo:

sfr extern char CF_Data_Port;

Compact Flash Porta de

d d

char CF_Data_Port em PORTD;

sbit sfr extern CF_RDY;

Pronto linha de sinal. sbit CF_RDY em RB7_bit;

sbit sfr extern CF_WE;

Write Enable linha de sinal. sbit CF_WE em RB6_bit;

sbit sfr extern CF_OE;

Habilitar saída de linha do

i l

sbit CF_OE em RB5_bit;

sbit sfr extern CF_CD1;

Chip detecta sinal de linha. sbit CF_CD1 em RB4_bit;

sbit sfr extern CF_CE1;

Chip linha de sinal Enable. sbit CF_CE1 em RB3_bit;

sbit sfr extern CF_A2;

Endereço pino 2. sbit CF_A2 em RB2_bit;

sbit sfr extern CF_A1;

Endereço pino 1. sbit CF_A1 em RB1_bit;

sbit sfr extern CF_A0;

Endereço pino 0. sbit CF_A0 em RB0_bit;

sbit sfr extern CF_RDY_direction;

Direção da o pino Ready. sbit CF_RDY_direc- ção em TRISB7_bit;

sbit sfr extern CF_WE_direction;

Direção do Write Enable alfinete.

sbit CF_WE_direction em TRISB6_bit;

sbit sfr extern CF_OE_direction;

Direção da Saída Habilitar pino.

sbit CF_OE_direction em TRISB5_bit;

sbit sfr extern CF_CD1_direction;

Direção do Chip detecta alfinete.

sbit CF_CD1_direc- ção em TRISB4_bit;

sbit sfr extern CF_CE1_direction;

Direção do Chip Enable alfinete.

sbit CF_CE1_direc- ção em TRISB3_bit;

sbit sfr extern CF_A2_direction;

Direção do endereço 2 alfinete.

sbit CF_A2_direction em TRISB2_bit;

sbit sfr extern CF_A1_direction;

Direção do endereço 1 alfinete.

sbit CF_A1_direction em TRISB1_bit;

sbit sfr extern CF_A0_direction;

Direção do endereço 0 alfinete.

sbit CF_A0_direction em TRISB0_bit;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

274

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

www.mecatronicadegaragem.blogspot.com

Page 361: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

Bibliotecas

- - - - - - - - - -

Cf_Init Cf_Detect Cf_Enable Cf_Disable Cf_Read_Init Cf_Read_Byte Cf_Write_Init Cf_Write_Byte Cf_Read_Sector Cf_Write_Sector

Rotinas para manipulação de arquivos:

- - - - - - - - - - - - -

Cf_Fat_Init Cf_Fat_QuickFormat Cf_Fat_Assign Cf_Fat_Reset Cf_Fat_Read Cf_Fat_Rewrite Cf_Fat_Append Cf_Fat_Delete Cf_Fat_Write Cf_Fat_Set_File_Date Cf_Fat_Get_File_Date Cf_Fat_Get_File_Size Cf_Fat_Get_Swap_File

A rotina a seguir é para o uso interno do compilador apenas:

- Cf_Issue_ID_Command

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

275

www.mecatronicadegaragem.blogspot.com

Page 362: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Cf_Init ();

Retorna Nada.

Descrição Inicializa as portas de forma adequada para a comunicação com o cartão CF.

Requer

As variáveis globais:

- CF_Data_Port : Compact Flash porta de dados - CF_RDY : Linha de sinal Ready - CF_WE Escrever habilitar a linha de sinal - CF_OE Saída: permitir que o sinal de linha - CF_CD1 : Chip detecta sinal de linha - CF_CE1 : Linha de sinal Enable - CF_A2 : Endereço 2 pinos - CF_A1 : Pino Endereço 1 - CF_A0 : Pino endereço 0 - CF_RDY_direction : Direção do pino Ready - CF_WE_direction : Direção do Write enable pinos - CF_OE_direction : Direção de permitir a saída do pino - CF_CD1_direction : Direção da Chip detecta o pino - CF_CE1_direction : Direção da Chip permitirá pin - CF_A2_direction : Direção do pino de endereço 2 - CF_A1_direction : Direção da Endereço pino 1 - CF_A0_direction : Direção do endereço 0 pin

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

Exemplo

/ / Set pinagem compact flash char Cf_Data_Port em PORTD;

sbit CF_RDY em RB7_bit; sbit CF_WE em RB6_bit; sbit CF_OE em RB5_bit; sbit CF_CD1 em RB4_bit; sbit CF_CE1 em RB3_bit; sbit CF_A2 em RB2_bit; sbit CF_A1 em RB1_bit; sbit CF_A0 em RB0_bit;

sbit CF_RDY_direction em TRISB7_bit; sbit CF_WE_direction em TRISB6_bit; sbit CF_OE_direction em TRISB5_bit; sbit CF_CD1_direction em TRISB4_bit; sbit CF_CE1_direction em TRISB3_bit; sbit CF_A2_direction em TRISB2_bit; sbit CF_A1_direction em TRISB1_bit; sbit CF_A0_direction em TRISB0_bit; / / Fim do pinout compact flash ... Cf_Init (); / / inicializa CF

CAPÍTULO 7 Bibliotecas

Cf_Init

mikroC PRO para PIC

276

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

www.mecatronicadegaragem.blogspot.com

Page 363: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Cf_Detect (void);

Retorna - 1 - Se o cartão CF foi detectada - 0 - Caso contrário

Descrição Verifica se há presença de cartão CF, lendo o chip detectar alfinete.

Requer As portas MCU correspondente deverá ser devidamente inicializado para o cartão CF. Veja

Exemplo

/ / Espera até o cartão CF está inserido: fazer nop asm;

enquanto (! Cf_Detect ());

Protótipo vazio Cf_Disable (void);

Retorna Nada.

Descrição Rotina desativa o dispositivo e libera as linhas de dados para outros dispositivos. Para ativar o dispositivo novamente, chame Cf_Enable. Estas duas rotinas em conjunto permitem livre / ocupam linha de dados quando se trabalha com vários dispositivos.

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja

Exemplo / / Desativar flash compacto

Cf_Disable ();

Protótipo vazio Cf_Enable (void);

Retorna Nada.

Descrição Ativa o dispositivo. Rotina deve ser chamado somente se você tiver desativado o dispositivo por meio da rotina Cf_Disable. Estas duas rotinas em conjunto permitir você livre / ocupam linha de dados quando se trabalha com vários di iti

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja

Exemplo / / Ativar o flash compacto

Cf_Enable ();

CAPÍTULO 7

mikroC PRO para PIC

Cf_Detect

Cf_Enable

Cf_Disable

Bibliotecas

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

277

www.mecatronicadegaragem.blogspot.com

Page 364: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Cf_Read_Byte (void);

Retorna Retorna um byte lido do buffer sector Compact Flash.

Nota: Superior byte do não assinado valor de retorno está desmarcada.

Descrição Lê um byte de Compact Flash sector Local de buffer atualmente apontado pelos ponteiros internos ler. Estas indicações serão autoicremented da leitura.

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja Cf_Init.

cartão CF deve ser inicializado para a leitura operação Veja Cf Read Init

Exemplo / / Lê um byte de memória Compact Flash: dados char; ... = dados Cf_Read_Byte ();

Protótipo vazio Cf_Read_Init (unsigned long endereço, unsigned short sector_count);

Retorna Nada.

Descrição

Inicializa cartão CF para leitura.

Parâmetros:

- endereço: o primeiro setor a ser preparado para operação de leitura. - sector_count: número de setores a serem preparados para a leitura de

ã Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF.

Veja Cf I i

Exemplo / / Inicializa o flash compacto para a leitura do setor 590 Cf_Read_Init (590, 1);

CAPÍTULO 7 Bibliotecas

Cf_Read_Init

Cf_Read_Byte

mikroC PRO para PIC

278

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

www.mecatronicadegaragem.blogspot.com

Page 365: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Cf_Write_Byte (unsigned short data_);

Retorna Nada.

Descrição

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, seu conteúdo será transferido para a memória flash apropriado sector.

Parâmetros:

- Data : byte a ser escrito

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja Cf_Init.

cartão CF deve ser inicializado para escrever a operação Veja Cf Write Init Exemplo

char = dados 0xAA; ... Cf_Write_Byte (dados);

Protótipo vazio Cf_Write_Init (unsigned long endereço, unsigned short sectcnt);

Retorna Nada.

Descrição

Inicializa cartão CF para a escrita.

Parâmetros:

- endereço: o primeiro setor a ser preparado para operação de escrita. - sectcnt: número de setores a serem preparados para a escrita operação.

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja Cf I i

Exemplo / / Inicializa o flash compacto para escrever para o setor 590 Cf_Write_Init (590, 1);

CAPÍTULO 7

mikroC PRO para PIC

Cf_Write_Init

Cf_Write_Byte

Bibliotecas

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

279

www.mecatronicadegaragem.blogspot.com

Page 366: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Cf_Read_Sector (unsigned long sector_number, unsigned short * Buffer);

Retorna Nada.

Descrição

Lê um setor (512 bytes). Ler dados são armazenados em buffer desde pela buffer parâmetro.

Parâmetros:

sector_number: o setor a ser lido. buffer: buffer de dados de pelo menos 512 bytes de comprimento.

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja Cf I i

Exemplo / / Ler o setor 22 unsigned short dados [512]; ... Cf_Read_Sector (22, dados);

Protótipo vazio Cf_Write_Sector (unsigned long sector_number, unsigned short * Buffer);

Retorna Nada.

Descrição

Grava 512 bytes de dados fornecidos pelo buffer parâmetro para um sector da CF.

Parâmetros:

- Sector_number: setor a ser escrito. - Buffer: buffer de dados de 512 bytes de comprimento.

Requer As portas MCU correspondente deverá ser devidamente inicializado para cartão CF. Veja

Exemplo / / Escreve para o setor 22 unsigned short dados [512]; ... Cf_Write_Sector (22, dados);

CAPÍTULO 7 Bibliotecas

Cf_Read_Sector

Cf_Write_Sector

mikroC PRO para PIC

280

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

www.mecatronicadegaragem.blogspot.com

Page 367: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char Cf_Fat_QuickFormat (cf_fat_label char *);

Retorna - 0 - Se o cartão CF foi detectado, formatei e inicializado com sucesso - 1 - se o formato FAT16 foi unseccessful - 255 - Caso o cartão não foi detectado

Descrição

Formatos para FAT16 e inicializa o cartão CF.

Parâmetros:

- Cf_fat_label: rótulo de volume (11 caracteres). Se menos de 11 caracteres são prestadas, a etiqueta será preenchido com espaços. Se a string é null passado, o volume não será identificado.

Nota: Esta rotina pode ser utilizado em substituição ou em conjunto com a rotina

Cf_Fat_Init.

Nota: Se o cartão CF já contém um setor de inicialização válido, ela

Requer Nada.

Exemplo //--- Formato e inicializar a biblioteca do FAT - se (! Cf_Fat_QuickFormat (& cf_fat_label)) { ... }

Protótipo unsigned short Cf_Fat_Init ();

Retorna - 0 - Se o cartão CF foi detectado e inicializado com sucesso - 1 - Se o setor de inicialização FAT16 não foi encontrado - 255 - Caso o cartão não foi detectado

Descrição Inicializa cartão CF, lê CF setor de inicialização FAT16 e extrai os dados necessários

Requer Nada.

Exemplo / / Inicia a biblioteca do FAT se (! Cf_Fat_Init ()) {/ / Inicia a biblioteca do FAT ... }

CAPÍTULO 7

mikroC PRO para PIC

Cf_Fat_Init

Cf_Fat_QuickFormat

Bibliotecas

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

281

www.mecatronicadegaragem.blogspot.com

Page 368: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Retorna - 0 se o arquivo não existe e nenhum arquivo novo é criado. - 1 se o arquivo já existe ou o arquivo não existe, mas um novo arquivo é criado.

Descrição

Atribui arquivo para operações de arquivo (ler, escrever, apagar ...). Todos ópera arquivo subseqüente- ções será aplicado sobre o arquivo designado.

Parâmetros: - 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_arquivo.extensão). O nome do arquivo e extensão ser automaticamente preenchido com espaços pela biblioteca, se tiverem menos de comprimento necessária ("mikro.tx", ou seja - ". mikro tx">), para que o usuário não tem que cuidar disso. O nome do arquivo e extensão são maiúsculas e minúsculas. A biblioteca irá convertê-los para sustentar- caso er automaticamente, assim que o usuário não tem que tomar cuidado com isso. Além disso, a fim de manter a compatibilidade com a primeira versão desta biblioteca, nomes de arquivo pode ser inserido como cadeia MAIÚSCULAS de 11 bytes de comprimento, sem caractere ponto entre o nome do arquivo e extensão (ie "MIKROELETXT" -> MIKROELE.TXT). Neste caso, os 3 últimos caracteres da string são considerados a extensão de arquivo. - file_cre_attr: bandeiras e criação do arquivo attributs. Cada bit corresponde à atribuíveis arquivo apropriado:

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf F t I it

Exemplo / / Cria arquivo com os atributos de arquivo se ele já não existe Cf_Fat_Assign ("MIKRO007.TXT", 0xA0);

Bit Másc

Descrição

0 0x01 Leia apenas

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 di )

7 0x80 Arquivo bandeira criação. Se o arquivo não existe e essa bandeira é

CAPÍTULO 7 Bibliotecas

Cf_Fat_Assign

mikroC PRO para PIC

282

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

www.mecatronicadegaragem.blogspot.com

Page 369: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Retorna Nada.

Descrição

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.

Parâmetros:

- Bdata: buffer para armazenar ler byte. Após esta execução função de leitura

d b t é Requer

Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja

Cf_Fat_Init. O arquivo deve ser previamente definidos. Veja Cf_Fat_Assign.

Exemplo

char caráter; ... Cf_Fat_Read (e personagem);

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

Retorna Nada.

Descrição

Abre atualmente atribuídos arquivo para leitura.

Parâmetros:

- Size: tamanho do buffer para armazenar arquivo. Após o arquivo foi aberto

para leitura de seu tamanho é Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja

Cf_Fat_Init. O i d i d fi id V j Cf F A i

Exemplo unsigned long tamanho; ... Cf_Fat_Reset (tamanho);

CAPÍTULO 7

mikroC PRO para PIC

Cf_Fat_Reset

Cf_Fat_Read

Bibliotecas

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

283

www.mecatronicadegaragem.blogspot.com

Page 370: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Cf_Fat_Append ();

Retorna Nada.

Descrição Abre atualmente atribuídos arquivo para acrescentar. Após este ficheiro execução da função ponteiros será posicionado após o último byte no arquivo, então qualquer mandado de

i b Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja

Cf_Fat_Init.

Exemplo / / Abre o arquivo para anexando Cf_Fat_Append ();

Protótipo vazio Cf_Fat_Rewrite ();

Retorna Nada.

Descrição Abre atualmente atribuídos arquivo para gravação. Se o arquivo não está vazio o seu conteúdo será

d Requer Cartão CF e FC biblioteca deve ser inicializado para o arquivo operações. Veja

Cf_Fat_Init. O i d ib íd i V j Cf F A i

Exemplo / / Abre o arquivo para escrita Cf_Fat_Rewrite ();

Protótipo vazio Cf_Fat_Delete ();

Retorna Nada.

Descrição Exclui atualmente atribuídos arquivo do cartão CF.

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf_Fat_Init. O i d i d fi id V j Cf F A i

Exemplo / / Deletar o arquivo atual Cf_Fat_Delete ();

CAPÍTULO 7 Bibliotecas

Cf_Fat_Rewrite

Cf_Fat_Append

Cf_Fat_Delete

mikroC PRO para PIC

284

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

www.mecatronicadegaragem.blogspot.com

Page 371: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Cf_Fat_Set_File_Date (unsigned int ano, unsigned short mês, unsigned short dia, unsigned short horas, unsigned short minutos, unsigned short segundos);

Retorna Nada.

Descrição

Define a data / hora. Qualquer operação de arquivo posteriores escrita vou escrever essa selo de tempo de arquivo atualmente atribuídos's / attributs data.

Parâmetros:

- Ano: atributo ano. Valores válidos: 1980-2107 - Mês: atributo mês. Valores válidos: 12/01 - Dia: atributo dia. Valores válidos: 31/01 - Horário: Horário de atributo. Valores válidos: 0-23 - Minutos: minutos atributo. Valores válidos: 0-59

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf_Fat_Init. O arquivo deve ser previamente atribuído. Veja Cf_Fat_Assign.

Exemplo Cf_Fat_Set_File_Date (2005,9,30,17,41,0);

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

Retorna Nada.

Descrição

Grava solicitado o número de bytes para arquivo atualmente aberto para gravação atribuída.

Parâmetros:

- FData: dados a serem gravados.

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf_Fat_Init. Arquivo devem ser previamente definidos. Veja Cf_Fat_Assign.

Exemplo

char file_contents [42]; ... Cf_Fat_Write (file_contents, 42) / / gravar dados no atribuída arquivo

CAPÍTULO 7

mikroC PRO para PIC

Cf_Fat_Write

Cf_Fat_Set_File_Date

Bibliotecas

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

285

www.mecatronicadegaragem.blogspot.com

Page 372: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Cf_Fat_Get_File_Date (unsigned int * Ano, unsigned short * Mês, unsigned short * Dia, unsigned short * horas, não assinado curto * Min);

Retorna Nada.

Descrição

Lê data / hora atributos de arquivo atualmente atribuído.

Parâmetros: - Ano: buffer para armazenar atributo ano para. Após a função de atributo ano de execução

é retornado por esse parâmetro. - Mês: buffer para armazenar atributo mês para. Após meses de execução da função

atributo é retornado por esse parâmetro. - Dia: buffer para armazenar atributo dia para. Após a função de atributo é dia de execução

devolvido através deste parâmetro. - Horário: de buffer para armazenar horas atributo. Após horas de

d f

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf_Fat_Init. O i d i d i d V j Cf F A i

Exemplo não assinado ano; char mês, dia, horas, minutos; ... Cf_Fat_Get_File_Date (& anos, & meses, & dias, e horas, e minutos);

Protótipo unsigned long Cf_Fat_Get_File_Size ();

Retorna Tamanho do arquivo atualmente atribuídos em bytes.

Descrição Esta função lê o tamanho de arquivo atualmente atribuído, em bytes.

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf_Fat_Init. O i d i d fi id V j Cf F A i

Exemplo unsigned long my_file_size; ... Cf_Fat_Get_File_Size my_file_size = ();

CAPÍTULO 7 Bibliotecas

Cf_Fat_Set_File_Date

Cf_Fat_Set_File_Size

mikroC PRO para PIC

286

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

www.mecatronicadegaragem.blogspot.com

Page 373: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned long Cf_Fat_Get_Swap_File (unsigned long sectors_cnt, char * Nome do arquivo, char file_attr);

Retorna - Número do setor de partida para o arquivo de swap recém-criado, se houver espaço livre suficiente no cartão CF para criar um arquivo de tamanho necessário. á i

Descrição

Esta função é usada para criar um arquivo de swap de pré-nome e tamanho da CF mídia. Se um arquivo com o nome especificado já existe na mídia, busca de con- setores consecutivos irá ignorar setores ocupados por esse arquivo. Portanto, recomenda-se recomenda-se a apagar o arquivo como se ele existe antes de chamar essa função. Se ele não é apagado e há é ainda bastante espaço para um novo arquivo de permuta, esta função irá eliminá-las depois alocação de espaço de memória novo para um novo arquivo swap. O objetivo do arquivo de swap é fazer com que a leitura ea escrita aos meios de comunicação do FC o mais rápido possível, usando o Cf_Read_Sector () e Cf_Write_Sector () funções diretamente, sem que possa causar danos ao sistema FAT. Trocar arquivos podem ser conside- rado como uma "janela" na mídia, onde o usuário pode livremente escrever / ler os dados. É objetivo principal na biblioteca do mikroC é ser usado para a aquisição rápida de dados, quando a aquisição de tempo crítico foi concluída, 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 troca 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_arquivo.extensão). O nome do arquivo e extensão será automaticamente preenchido com espaços pela biblioteca, se tiverem menos de comprimento necessária ("mikro.tx", ou seja - ". mikro tx">), para que o usuário não tem que cuidar disso. 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, a fim para manter compatibilidade com a primeira versão desta biblioteca, nomes de arquivos podem ser entrou como uma string em maiúsculas de 11 bytes de comprimento, com nenhum ponto chsaracter entre o nome do arquivo e extensão (ie "MIKROELETXT" -> MIKROELE.TXT). Neste caso os 3 últimos caracteres da cadeia são consideradas como extensão de arquivo. - File_attr: criação de arquivos e bandeiras attributs. Cada bit corresponde à atribuíveis arquivo apropriado:

Bit Másc

Descrição 0 0x01 Leia apenas 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

di ) 7 0x80 Não utilizado

CAPÍTULO 7

mikroC PRO para PIC

Cf_Fat_Get_Swap_File

Bibliotecas

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

287

www.mecatronicadegaragem.blogspot.com

Page 374: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Requer Cartão CF e FC biblioteca deve ser inicializado para operações de arquivo. Veja Cf F I i

Exemplo

//-------------- Tente criar um arquivo de swap com o arquivo atributo, cujo tamanho será de pelo menos 1.000 setores. / / Se for bem sucedido, ele envia o n º do setor de começar tudo de UART unsigned long tamanho; ... size = Cf_Fat_Get_Swap_File (1000, "mikroE.txt", 0x20); if (tamanho) {

UART_Write (0xAA); UART_Write (Lo (tamanho)); UART_Write (Hi (tamanho)); UART_Write (Superior (tamanho)); UART_Write (Máxima (tamanho)); UART_Write (0xAA);

}

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca

O exemplo a seguir demonstra vários aspectos da biblioteca Cf_Fat16: Criação do novo arquivo e escrever para baixo; Abertura de arquivos existentes e reescrevê-lo (a escrita de iniciar-de-arquivo); Abertura arquivo de dados existentes e acrescentando a ele (a escrita de ponta-de-arquivo): abrir um arquivo e ler dados de lo (enviá-lo ao terminal USART); Criar e modificar vários arquivos de uma só vez;

/ / Set pinagem compact flash char Cf_Data_Port em PORTD;

sbit sbit sbit sbit sbit sbit sbit sbit

CF_RDY CF_WE CF_OE CF_CD1 CF_CE1 CF_A2 CF_A1 CF_A0

em em em em em em em em

RB7_bit; RB6_bit; RB5_bit; RB4_bit; RB3_bit; RB2_bit; RB1_bit; RB0_bit;

sbit CF_RDY_direction sbit CF_WE_direction sbit CF_OE_direction sbit CF_CD1_direction sbit CF_CE1_direction sbit CF_A2_direction sbit CF_A1_direction sbit CF_A0_direction

em em em em em em em em

TRISB7_bit; TRISB6_bit; TRISB5_bit; TRISB4_bit; TRISB3_bit; TRISB2_bit; TRISB1_bit; TRISB0_bit;

/ / Fim do pinout cf

const LINE_LEN = 39; char err_txt [20] = "FAT16 não encontrado"; char file_contents [LINE_LEN] = "XX CF FAT16 biblioteca por Anton Rieckertn ";

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

www.mecatronicadegaragem.blogspot.com

Page 375: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

char nome [14] = "MIKRO00x.TXT";

/ / Os nomes de arquivos

unsigned short loop, loop2; unsigned long char

i, tamanho; Buffer [512];

/ / UART1 escrever um texto e nova linha (alimentação de linha de retorno + transporte) vazio UART1_Write_Line (char * Uart_text) {

UART1_Write_Text (uart_text); UART1_Write (13); UART1_Write (10);

}

/ / Cria novo arquivo e grava alguns dados a ele vazio M_Create_New_File () {

filename [7] = 'A'; Cf_Fat_Assign (e nome do arquivo, 0xA0) / / File Find existente ou criar um

uma nova Cf_Fat_Rewrite () / / Para limpar o arquivo e começar com os novos dados for (loop = 1; loop <= 99; loop + +) {

UART1_Write ('.'); file_contents [0] = loop / 10 + 48; file_contents [1%] loop = 10 + 48; Cf_Fat_Write (file_contents, LINE_LEN-1) / / gravar dados para o

atribuído arquivo }

}

/ / Cria muitos novos arquivos e grava os dados que lhes vazio M_Create_Multiple_Files () {

para (loop2 = 'B'; loop2 <= 'Z'; loop2 + +) { UART1_Write (loop2) / / o sinal de progresso filename [7] = loop2 / / definir nome Cf_Fat_Assign (e nome do arquivo, 0xA0) / / encontrar o arquivo existente ou criar

um novo Cf_Fat_Rewrite () / / Para limpar o arquivo e começar com os novos dados for (loop = 1; loop <= 44; loop + +) {

file_contents [0] loop = 10 + 48; file_contents [1%] loop = 10 + 48; Cf_Fat_Write (file_contents, LINE_LEN-1) / / gravar dados para o

atribuído arquivo }

} }

/ / Abre um arquivo existente e reescreve-lo vazio M_Open_File_Rewrite () {

filename [7] = 'C'; Cf_Fat_Assign (& Nome, 0); Cf_Fat_Rewrite (); for (loop = 1; loop <= 55; loop + +) {

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

www.mecatronicadegaragem.blogspot.com

Page 376: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

file_contents [0] loop = 10 + 65; file_contents [1%] loop = 10 + 65;

mikroC PRO para PIC

Cf_Fat_Write (file_contents, LINE_LEN-1); / / 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'; Cf_Fat_Assign (& Nome, 0); Cf_Fat_Set_File_Date (2005,6,21,10,35,0); Cf_Fat_Append (); / arquivo / Prepare-se para anexar Cf_Fat_Write ("para 2005n mikroElektronika", 27); / / Gravar dados

atribuído arquivo }

/ / Abre um arquivo existente, lê os dados a partir dele e coloca-UART vazio M_Open_File_Read () {

caráter char;

filename [7] = 'B'; Cf_Fat_Assign (& Nome, 0); Cf_Fat_Reset (e tamanho); / / Para ler o arquivo, tamanho do procedimento de retorno de arquivo for (i = 1; <i = tamanho; i + +) {

Cf_Fat_Read (e personagem); UART1_Write (personagem); / / Escreve os dados para UART

} }

/ / Exclui um arquivo. Se o arquivo não existir, ele vai ser criada / / E depois que foi excluída. vazio M_Delete_File () {

filename [7] 'F'; Cf_Fat_Assign (filename, 0); Cf_Fat_Delete ();

}

/ / Testa se o arquivo já existe, e se sim envia sua data de criação / / E tamanho do arquivo via UART vazio M_Test_File_Exist () {

unsigned long unsigned int

fsize; ano;

unsigned short mês, dia, hora, minuto; unsigned char outstr [12]; filename [7] = 'B'; / descomente / esta linha de pesquisa para arquivos que

FAZ existe / / Filename [7] 'F'; / descomente esta linha de pesquisa para arquivos que NÃO existe

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

www.mecatronicadegaragem.blogspot.com

Page 377: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

se (Cf_Fat_Assign (Nome, 0)) { arquivo //--- foi encontrado - obter a sua data Cf_Fat_Get_File_Date (& anos, & meses, & dia, & hora e minuto); WordToStr (ano, outstr); UART1_Write_Text (outstr); ByteToStr (outstr mês); UART1_Write_Text (outstr); WordToStr (outstr, dia); UART1_Write_Text (outstr); WordToStr (outstr horas); UART1_Write_Text (outstr); WordToStr (outstr minutos); UART1_Write_Text (outstr); //--- Obter o tamanho do arquivo Cf_Fat_Get_File_Size fsize = (); LongToStr ((long assinado) fsize, outstr); UART1_Write_Line (outstr);

} mais {

//--- arquivo não foi encontrado - sinal que ele UART1_Write (0x55); Delay_ms (1000); UART1_Write (0x55);

} } / / Tenta criar um arquivo de swap, cujo tamanho será de pelo menos 100 / / Setores (consulte a Ajuda para mais detalhes) vazio M_Create_Swap_File () {

unsigned int i;

for (i = 0; i <512; i + +) Buffer [i] = i;

size = Cf_Fat_Get_Swap_File (5000, "mikroE.txt", 0x20); / ver a ajuda

sobre esta função para obter detalhes

se (Tamanho) {

LongToStr ((long assinado) err_txt, tamanho); UART1_Write_Line (err_txt);

for (i = 0; i <5000; i + +) {

Cf_Write_Sector (tamanho + +, buffer); UART1_Write ('.');

} }

} / / Main. Descomente a 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 - Soluções de software e hardware para EMBEDDED MUNDO 291

www.mecatronicadegaragem.blogspot.com

Page 378: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

ADCON1 | = 0x0F; CMCON | = 7;

mikroC PRO para PIC

/ / Configurar um pinos como digital / / Desligue comparadores

/ / Inicializar UART1 módulo UART1_Init (19200); Delay_ms (10);

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

/ / Use fat16 formatação rápida, em vez de rotina init se uma formatação

é necessário se (Cf_Fat_Init () == 0) {

Delay_ms (2000); / / espera por um tempo até que o cartão é estabilizado / / Período depende usado cartão CF

//--- Iniciar o teste UART1_Write_Line ("Iniciar teste."); //--- Teste rotinas. Descomente-los um por um para testar certos

recursos M_Create_New_File (); # Ifdef COMPLETE_EXAMPLE

M_Create_Multiple_Files (); M_Open_File_Rewrite (); M_Open_File_Append (); M_Open_File_Read (); M_Delete_File (); M_Test_File_Exist (); M_Create_Swap_File ();

# Endif UART1_Write_Line ("O Fim do teste.");

} mais { UART1_Write_Line (err_txt) / / Nota: Cf_Fat_Init tenta inicial-

ize um cartão mais de uma vez. / / Se o cartão não estiver presente, initializa-

ção pode durar mais tempo (dependendo da velocidade do clock) }

}

292

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

www.mecatronicadegaragem.blogspot.com

Page 379: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

Pin diagrama de cartão de memória CF

Bibliotecas

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

293

www.mecatronicadegaragem.blogspot.com

Page 380: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio EEPROM_Write (unsigned int endereço, unsigned short de dados);

Retorna Nada.

Descrição

Grava dados ao especificado endereço. endereço do parâmetro é do tipo inteiro, que significa que ele suporta MCUs com mais de 256 bytes de EEPROM. Esteja ciente de que todas as interrupções serão desabilitados durante a execução do EEPROM_Write

ti (bit GIE d i t INTCON ã d ) R ti i á t PREVI

Requer Requer módulo EEPROM. Certifique-se de um atraso mínimo de 20ms entre o uso sucessivo de rotinas EEPROM_Write e EEPROM_Read. Embora PIC irá escrever o valor correto, EEPROM_Read pode retornar um resultado indefinido.

Exemplo EEPROM_Write (0x32, 19);

Protótipo unsigned short EEPROM_Read (unsigned int endereço);

Retorna Retorna byte do endereço especificado.

Descrição Lê dados a partir de determinado endereço. endereço do parâmetro é do tipo inteiro, o que significa que ele suporta MCUs com mais de 256 bytes de EEPROM.

Requer Requer módulo EEPROM. Certifique-se de um atraso mínimo de 20ms entre o uso sucessivo de rotinas EEPROM_Write e EEPROM_Read. Embora PIC irá escrever o valor correto, EEPROM_Read pode retornar um resultado indefinido.

Exemplo unsigned short ter; ... ter = EEPROM_Read (0x3F);

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. mikroC PRO para PIC inclui biblioteca para o trabalho confortável com EEPROM.

Rotinas da biblioteca

- Eeprom_Read - Eeprom_Write

EEPROM_Read

EEPROM_Write

294

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

www.mecatronicadegaragem.blogspot.com

Page 381: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Exemplo Biblioteca

O exemplo demonstra o uso de EEPROM Biblioteca.

Bibliotecas

char II;

vazio main () {

ANSEL = 0; ANSELH = 0;

PORTB = 0; PORTC = 0; PORTD = 0;

TRISB = 0; TRISC = 0; TRISD = 0;

/ / Variável de loop / / / Configurar um pinos como I / O digital

de (ii = 0; ii <32; ii + +)

EEPROM_Write (ii + 0x80, ii);

EEPROM_Write (0x02, 0xAA); EEPROM_Write (0x50, 0x55);

Delay_ms (1000); PORTB = 0xFF; PORTC = 0xFF; Delay_ms (1000); PORTB = 0x00; PORTC = 0x00; Delay_ms (1000);

/ / Preencha buffer de dados / / Escreve os dados de endereço 0x80 + ii

/ / Escreve alguns dados no endereço 2 / / Escreve alguns dados no endereço 0150

/ / Blink PORTB e diodos PORTC / / Para indicar início de leitura

PORTB

mostrar PORTC

mostrar

EEPROM_Read = (0x02); lo em PORTB EEPROM_Read = (0x50); lo em PORTC

/ / Lê os dados de endereço 2 e / / Lê os dados de endereço 0x50 e

Delay_ms (1000);

de (ii = 0; ii <32; ii + +) {/ / Ler bloco de 32 bytes de 0x80 endereço

PORTD EEPROM_Read = (0x80 + II) / / dados e exibição em PORTD Delay_ms (250); }

}

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

295

www.mecatronicadegaragem.blogspot.com

Page 382: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Biblioteca Ethernet PIC18FXXJ60

PIC18FxxJ60 família de microcontroladores apresentam um módulo controlador Ethernet incorporado. Esta é uma solução completa de conectividade, incluindo implementações completas de ambos os Media Access Control (MAC) e Física transceptor Layer (PHY) módulos. 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.

O módulo Ethernet atende a todas as especificações IEEE 802.3 para conectividade de 10-BaseT para um par trançado de rede. É incorpora uma série de sistemas de filtragem de pacotes para limitar o pacote de entrada- ets. 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. 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.

Ethernet biblioteca PIC18FxxJ60 suporta:

- O protocolo IPv4. - Requisições ARP. - ICMP echo requests. - Os pedidos UDP. - Os pedidos TCP (sem pilha, sem reconstrução de pacotes). - O cliente com cache ARP. - O cliente DNS. - Cliente UDP. - O cliente DHCP. - Fragmentação do pacote não é suportado.

Nota: A variável biblioteca Global Ethernet_userTimerSec é usado para manter trilha de tempo para todos os clientes implementações (ARP, UDP de DNS e DHCP). É de responsabilidade do usuário para incrementar essa variável cada segundo em que o código se algum dos clientes é usado.

Nota:

Para usuários avançados, existem arquivos de cabeçalho ("eth_j60LibDef.h"

e

"Eth_j60LibPrivate.h") em P18 usa \ pasta do compilador, com descrição de todas as rotinas e variáveis globais, relevantes para o usuário, implementado no PIC18FxxJ60 Ethernet Biblioteca.

296

www.mecatronicadegaragem.blogspot.com

Page 383: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 384: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

Bibliotecas

- - - - - - - - - - - - - - - - - - - - - - - -

Ethernet_Init Ethernet_Enable Ethernet_Disable Ethernet_doPacket Ethernet_putByte Ethernet_putBytes Ethernet_putString Ethernet_putConstString Ethernet_putConstBytes Ethernet_getByte Ethernet_getBytes Ethernet_UserTCP Ethernet_UserUDP Ethernet_getIpAddress Ethernet_getGwIpAddress Ethernet_getDnsIpAddress Ethernet_getIpMask Ethernet_confNetwork Ethernet_arpResolve Ethernet_sendUDP Ethernet_dnsResolve Ethernet_initDHCP Ethernet_doDHCPLeaseTime Ethernet_renewDHCP

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

297

www.mecatronicadegaragem.blogspot.com

Page 385: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ethernet_Init (unsigned char * Mac, unsigned char * Ip, unsigned char FullDuplex);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele inicializa controlador Ethernet. Esta função é internamente subdividida em 2 partes para ajudá-vinculador quando vem com pouca memória.

configurações do controlador Ethernet (parâmetros não mencionados aqui são

definidos como padrão):

- Recebe o endereço inicial do buffer: 0x0000. - Receber endereço final buffer: 0x19AD. - Transmitir o endereço inicial do buffer: 0x19AE. - Transmitir endereço final buffer: 0x1fff. - Buffer RAM de leitura / gravação ponteiros no modo de auto-incremento. - Receber filtros definidos como padrão: CRC + MAC + MAC Unicast Broadcast na OU modo. - Controle de fluxo com TX e RX pausa quadros em modo full duplex. - Quadros são preenchidos com 60 + bytes CRC. - Tamanho máximo do pacote é definido como 1518. - Back-to-Back-Inter Packet Gap: 0x15 em modo full duplex; 0x12 em half-duplex

modo. - Non-Back-to-Back-Inter Packet Gap: 0x0012 em modo full duplex; 0x0C12 em

modo half duplex. - Metade loopback duplex com deficiência. - LED de configuração: padrão (LEDA link-status, atividade LEDB-link).

Parâmetros: - Mac: RAM buffer que contém o endereço MAC válido. - IP: memória intermédia que contém o endereço IP válido. l (H lf d l

Requer Nada.

Exemplo

# Define Ethernet_HALFDUPLEX 0 # Define um Ethernet_FULLDUPLEX

unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} / / meu endereço MAC unsigned char myIpAddr = {192, 168, 1, 60} / / o meu IP addr

Ethernet_Init (myIpAddr myMacAddr, Ethernet_FULLDUPLEX);

CAPÍTULO 7 Bibliotecas

Ethernet_Init

mikroC PRO para PIC

298

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

www.mecatronicadegaragem.blogspot.com

Page 386: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo void Ethernet_Enable (enFlt unsigned char);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Esta rotina permite que o tráfego de rede apropriada no o módulo de MCU Ethernet interna por meio de ela receber filtros (unicast, multicast, broadcast, CDC). Tipo específico de tráfego de rede será ativado se uma bit correspondente do parâmetro essa rotina de entrada está definido. Portanto, mais do que um tipo de tráfego de rede podem ser ativados ao mesmo tempo. Para este efeito, constantes biblioteca predefinida (ver tabela abaixo) pode ser ORed para formar ade- valor de entrada apropriado.

Parâmetros: - EnFlt: o tráfego de rede / receber bandeiras filtro. Cada bit corresponde a apro- tráfego de rede adequado / filtro de recepção:

Nota: Advance filtragem disponíveis no MCU módulo Ethernet internas, como a

Pattern Match, Magic Packet e Hash Table não pode ser ativada por este rotina. Adicionalmente, todos os filtros, exceto CRC, habilitado com esta rotina irá trabalhar em O d i ifi t á bid l d filt

Bi t

Másc

Descrição biblioteca predefinidos

0 0x01 MAC tráfego Broadcast / receber bandeira filtro.

Quando j MAC áf d dif á

_Ethernet_BROADCAST

1 0x02 MAC tráfego Multicast / receber bandeira filtro. Quando

d fi id áf l i MAC á

_Ethernet_MULTICAST

2 0x04 não utilizado none

3 0x08 não utilizado none

4 0x10 não utilizado none

5 0x20 CRC marca de verificação. Quando definido, pacotes com

CRC i álid á

_Ethernet_CRC

6 0x40 não utilizado none

7 0x80 MAC tráfego Unicast / receber bandeira filtro. Quando

j MAC áf i á

_Ethernet_UNICAST

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_Enable

Bibliotecas

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

299

www.mecatronicadegaragem.blogspot.com

Page 387: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ethernet_Enable (enFlt unsigned char);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Esta rotina desabilita o tráfego de rede apropriada no Módulo MCU Ethernet interna por meio de ela receber filtros (unicast, multicast, transmissão, CRC). Tipo específico de tráfego de rede será desativada se o bit correspondente do parâmetro essa rotina de entrada está definido. Portanto, mais do que um tipo de tráfico de rede fic pode ser desativado, ao mesmo tempo. Para o efeito, constantes predefinidas biblioteca (Ver tabela abaixo) pode ser ORed para formar o valor de entrada apropriado.

Parâmetros: - DisFlt: o tráfego de rede / receber bandeiras filtro. Cada bit corresponde a apro- tráfego de rede adequado / filtro de recepção:

Nota: Advance filtragem disponíveis no MCU interna Ethernet módulo, como

Pattern Match, Magic Packet e Hash Table não pode ser desativado por esta rotina. Nota: Esta rotina vai mudar configuração do filtro receber on-the-fly. Não será, no qualquer forma, mexer com ativar / desativar receber / transmitir a lógica ou qualquer outra parte

Bit Másc

Descrição biblioteca predefinidos

0 0x01 MAC tráfego Broadcast / filtro de recepção

pavilhão. Quando j MAC áf d dif á

_Ethernet_BROADCAST

1 0x02 MAC tráfego Multicast / receber bandeira filtro. Quando

d fi id áf l i MAC á

_Ethernet_MULTICAST

2 0x04 não utilizado none 3 0x08 não utilizado none 4 0x10 não usados none

5 0x20 CRC marca de verificação. Quando definido, verificação de CRC será ser desativado e pacotes com CRC inválido

_Ethernet_CRC

6 0x40 não utilizado none

7 0x80 MAC tráfego Unicast / receber bandeira filtro. Quando

j MAC áf i á

_Ethernet_UNICAST

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo Ethernet_Enable (_Ethernet_CRC | _Ethernet_UNICAST); / / enable CRC verificação e tráfego Unicast

CAPÍTULO 7 Bibliotecas

Ethernet_Disable

mikroC PRO para PIC

300

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

www.mecatronicadegaragem.blogspot.com

Page 388: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char Ethernet_doPacket ();

Retorna

- 0 - Mediante o processamento de pacotes de sucesso (zero pacotes recebidos

ou recebidos pacote processado com sucesso).

- 1 - Por erro de recepção ou receber corrupção buffer. Ethernet controlador precisa ser reiniciado.

- 2 - O pacote recebido não foi enviado para nós (não o nosso IP, nem endereço de broadcast IP). R b d IP f i IP 4

Descrição

Esta é a rotina MAC do módulo. É processos pacote recebido seguinte se existir. Os pacotes são processados da seguinte forma:

- Requisições ARP e ICMP são respondidas automaticamente. - Mediante pedido TCP Ethernet_UserTCP a função é chamada para posterior processamento. - Mediante pedido da UDP Ethernet_UserUDP função é chamado para processamento adicional.

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo se (Ethernet_doPacket () == 0) {/ / processo pacotes recebidos

... }

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init ..

Exemplo Ethernet_Disable (_Ethernet_CRC | _Ethernet_UNICAST); / desativar CRC verificação e tráfego Unicast

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_doPacket

Bibliotecas

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

301

www.mecatronicadegaragem.blogspot.com

Page 389: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ethernet_putBytes (unsigned char * Ptr, unsigned char n);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele armazena o número solicitado de bytes em Ethernet RAM do controlador a partir de correntes Ethernet controlador escrever ponteiro (EWRPT) Local.

Parâmetros:

- Ptr: RAM tampão contendo bytes a serem gravados na memória RAM controlador

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo char * Buffer = "mikroElektronika"; ... Ethernet_putBytes (buffer, 16); / / coloque uma matriz de RAM em Ethernet buffer do controlador

Protótipo vazio Ethernet_putByte (unsigned char v);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele armazena um byte para endereço apontado pelo cur- ponteiro escrever controlador alugar Ethernet (EWRPT).

Parâmetros:

V l Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo char dados; ... Ethernet_putByte (dados) / / colocar um byte em Ethernet controller buffer

CAPÍTULO 7 Bibliotecas

Ethernet_putByte

Ethernet_putBytes

mikroC PRO para PIC

302

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

www.mecatronicadegaragem.blogspot.com

Page 390: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ethernet_putConstBytes (const unsigned char * Ptr, não assinado char n);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele armazena o número de bytes solicitado const em Eth- RAM a partir do controlador ernet do controlador Ethernet atual ponteiro escrever (EWRPT) local.

Parâmetros:

- Ptr: const tampão contendo bytes a serem gravados na memória RAM controlador

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo const char * Buffer = "mikroElektronika"; ... Ethernet_putConstBytes (buffer, 16); / / colocar um array em const buffer do controlador Ethernet

Protótipo unsigned int Ethernet_putString (unsigned char * Ptr);

Retorna Número de bytes gravados na memória RAM controlador Ethernet.

Descrição

Esta é a rotina MAC do módulo. Ele armazena string todo (excluindo a terminação nula) em RAM Ethernet controller a partir de controlador Ethernet atual ponteiro escrever (EWRPT) local.

Parâmetros:

- Ptr: string a ser gravado na memória RAM controlador Ethernet.

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo char * Buffer = "MikroElektronika"; ... Ethernet_putString (buffer); / / coloque uma seqüência de RAM em Ethernet buffer do controlador

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_putConstBytes

Ethernet_putString

Bibliotecas

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

303

www.mecatronicadegaragem.blogspot.com

Page 391: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ethernet_getBytes (unsigned char * Ptr, não assinado int addr, unsigned char n);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele busca equested número de bytes de Ethernet RAM do controlador a partir de determinado endereço. Se o valor de 0xFFFF é passado como o parâmetro de endereço, a leitura início do controlador Ethernet atual leia localização (ERDPT) ponteiro. Parâmetros: - Ptr: buffer para armazenar bytes lidos a partir da RAM controlador Ethernet. Add d d t l d Eth t RAM V l álid

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo char buffer [16]; ... Ethernet_getBytes (buffer, 0x100, 16); / / lê 16 bytes, a partir a partir do endereço 0x100

Protótipo unsigned int Ethernet_putConstString (const unsigned char * Ptr);

Retorna Número de bytes gravados na memória RAM controlador Ethernet.

Descrição

Esta é a rotina MAC do módulo. Ele armazena string const todo (excluindo a rescisão nulo ção) para a RAM do controlador Ethernet a partir de controlador Ethernet atual escrever ponteiro (EWRPT) local. Parâmetros: Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo const char * Buffer = "mikroElektronika"; ... Ethernet_putConstString (buffer); / / colocar um const string em buffer do controlador Ethernet

Protótipo unsigned char Ethernet_getByte ();

Retorna Byte lido RAM controlador Ethernet.

Descrição Esta é a rotina MAC do módulo. Ele busca um byte de endereço apontado pelo atual ponteiro ler Ethernet controller (ERDPT).

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo char buffer; ... buffer = Ethernet_getByte (); / / lê um byte de con-Ethernet buffer Troller's

CAPÍTULO 7 Bibliotecas

Ethernet_putConstString

Ethernet_getByte

Ethernet_getBytes

mikroC PRO para PIC

304

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

www.mecatronicadegaragem.blogspot.com

Page 392: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int Ethernet_UserTCP (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int localPort, unsigned int reqLength);

Retorna - 0 - Não deveria ser um resposta ao pedido. - Comprimento do campo de resposta HTTP TCP / dados - caso contrário.

Descrição

Esta é a rotina de módulo TCP. Ele é chamado internamente pela biblioteca. O acesso do usuário es para o pedido de TCP / HTTP usando algumas das rotinas Ethernet_get. A usuário coloca dados no buffer de transmissão usando algumas das rotinas Ethernet_put. A função deve retornar o tamanho em bytes da resposta HTTP TCP / ou 0 se não houver não é nada para transmitir. Se não houver necessidade de responder às solicitações TCP / HTTP, apenas definir esta Função com retorno (0) como uma única instrução.

Parâmetros:

- RemoteHost: endereço IP do cliente. - RemotePort: porto cliente TCP. - LocalPort: porta para que o pedido é enviado. - ReqLength: TCP / solicitação HTTP comprimento do campo de dados.

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo Essa função é chamado internamente pela biblioteca e não deve ser chamado pelo código de usuário.

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_UserTCP

Bibliotecas

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

305

www.mecatronicadegaragem.blogspot.com

Page 393: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int Ethernet_UserUDP (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int destPort, unsigned int reqLength);

Retorna - 0 - não deve haver uma resposta ao pedido. - Comprimento do campo de dados UDP resposta - outra forma.

Descrição

Esta é a rotina de módulo UDP. Ele é chamado internamente pela biblioteca. O acesso do usuário es para o pedido UDP usando algumas das rotinas Ethernet_get. O usuário coloca dados no buffer de transmissão usando algumas das rotinas Ethernet_put. A fun- ção deve retornar o tamanho em bytes da resposta UDP, ou 0 se nada para transmitir. Se você não precisa responder às solicitações UDP, basta definir esta função com um return (0) como única instrução.

Parâmetros:

- RemoteHost: endereço IP do cliente. - RemotePort: porta do cliente. - DestPort: porta para que o pedido é enviado. - ReqLength: solicitação UDP comprimento do campo de dados.

Nota: O código fonte da função é fornecida com exemplos de projetos

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo Essa função é chamado internamente pela biblioteca e não deve ser chamado pelo código de á i

Protótipo unsigned char * Ethernet_getIpAddress ();

Retorna Ponter para a variável global exploração endereço IP.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar endereço IP atribuído.

Nota: Usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em que é buffer próprio endereço IP. Estes locais não devem ser alterados pelo usuário, em qualquer caso!

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo unsigned char endereçoip [4] / / endereço IP do usuário buffer ... memcpy (ipaddr, Ethernet_getIpAddress (), 4); / / recupera o endereço IP

CAPÍTULO 7 Bibliotecas

Ethernet_UserUDP

Ethernet_getlpAddress

mikroC PRO para PIC

306

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

www.mecatronicadegaragem.blogspot.com

Page 394: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char * Ethernet_getDnsIpAddress

Retorna Ponter para a variável global exploração DNS o endereço IP.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar atribuído endereço IP do DNS.

Nota: O usuário deve sempre copiar o endereço IP de a localização RAM retornado por esta rotina em seu próprio buffer DNS o endereço IP. Estes locais não devem ser alteradas pelo usuário, em qualquer caso!

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo unsigned char dnsIpAddr [4]; / user / Buffer DNS o endereço IP ... memcpy (dnsIpAddr, Ethernet_getDnsIpAddress (), 4); / / busca de DNS endereço do servidor

Protótipo unsigned char * Ethernet_getGwIpAddress ();

Retorna Ponter para a variável global exploração endereço IP do gateway.

Descrição

Esta rotina deve ser usado quando o servidor DHCP está presente na rede para buscar atribuído o endereço IP do gateway.

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. Estes locais não devem ser alteradas pelo usuário, em qualquer caso!

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo unsigned char gwIpAddr [4]; / / user gateway buffer endereço IP ... memcpy (gwIpAddr, Ethernet_getGwIpAddress (), 4); / / busca gateway endereço IP

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_getGwlpAddress

Ethernet_getDnslpAddress ();

Bibliotecas

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

307

www.mecatronicadegaragem.blogspot.com

Page 395: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ethernet_confNetwork (char * IPMask, char * GwIpAddr, char * DnsIpAddr);

Retorna Nada.

Descrição

Configura os parâmetros de rede (IP, máscara de sub-rede, gateway IP endereço IP de DNS endereço) quando o DHCP não é usada.

Parâmetros:

- IPMask: máscara de sub-rede IP. - GwIpAddr endereço IP do gateway. - DnsIpAddr: DNS o endereço IP.

Nota: Os parâmetros de rede acima mencionadas devem ser fixadas por esta

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo

unsigned char IPMask [4] = {255, 255, 255, 0}; / network / máscara (por exemplo: 255.255.255.0) unsigned char gwIpAddr [4] = {192, 168, 1, 1}; / gateway / (Roteador), endereço IP unsigned char dnsIpAddr [4] = {192, 168, 1, 1} / / serv DNS er endereço IP ... Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr); / network / set parâmetros de configuração

Protótipo unsigned char * Ethernet_getIpMask ()

Retorna Ponter para a variável global exploração IP, máscara de sub-rede.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar atribuído máscara sub-rede IP.

Nota: O usuário deve sempre copiar o endereço IP do Local de RAM retornado por esta rotina em seu próprio IP buffer máscara. Estes locais não devem ser alteradas pelo usuário, em qualquer caso!

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo unsigned char IPMask [4]; / user / IP buffer máscara ... memcpy (IPMask, Ethernet_getIpMask (), 4); / / recupera IP máscara

CAPÍTULO 7 Bibliotecas

Ethernet_getlpMask

Ethernet_confNetwork

mikroC PRO para PIC

308

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

www.mecatronicadegaragem.blogspot.com

Page 396: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char * Ethernet_arpResolve (unsigned char * Ip, não assinado char tmax);

Retorna - Endereço MAC para trás o endereço IP - o endereço IP solicitado foi resolvido. - 0 - De outra forma.

Descrição

Esta é a rotina do módulo ARP. Ele envia uma solicitação ARP para determinado endereço IP e aguarda ARP resposta. Se o endereço IP solicitado foi resolvido, um ARP entrada de dinheiro é usada para armazena- ção da configuração. dinheiro ARP pode armazenar até 3 entradas. Para ARP referem-se a estrutura de caixa "Eth_j60LibDef.h" cabeçalho do arquivo na pasta do compilador Uses/P18.

Parâmetros:

- IP: endereço IP a ser resolvido. - Tmax: tempo em segundos para esperar por uma resposta.

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo não assinado char IpAddr [4] = {192, 168, 1, 1} / / endereço IP ... Ethernet_arpResolve (IpAddr, 5); / / pega o endereço MAC por trás da acima do endereço IP, aguarde 5 segundos para a resposta

Protótipo unsigned char Ethernet_sendUDP (unsigned char * DestIP, não assinado int sourcePort, unsigned int destPort, unsigned char * Pkt, unsigned int pktLen);

Retorna - 1 - Pacote UDP foi enviada com sucesso. - 0 - De outra forma.

Descrição

Esta é a rotina de módulo UDP. Ele envia um pacote UDP na rede.

Parâmetros: - DestIP: remoto endereço IP do host. - SourcePort: número da porta UDP local de origem. - DestPort: destino número da porta UDP. - Pkt: pacotes para transmitir. - PktLen: comprimento em bytes do pacote para transmitir.

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo unsigned char IpAddr [4] = {192, 168, 1, 1} / / endereço IP remoto ... Ethernet_sendUDP (IpAddr, 10001, 10001, "Olá", 5); / / envia Olá mes- sábio, para o endereço IP acima, de porta UDP 10001 para a porta UDP 10001

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_arpResolve

Ethernet_sendUDP

Bibliotecas

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

309

www.mecatronicadegaragem.blogspot.com

Page 397: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char * Ethernet_dnsResolve (unsigned char * Host, não assinado char tmax);

Retorna - Ponteiro para o local onde o endereço IP - o nome do host solicitado foi

resolvido. - 0 - De outra forma.

Descrição

Este é o DNS módulo de rotina. Ele envia um pedido DNS para determinado nome de host e aguarda resposta do DNS. Se o nome do host solicitado foi resolvido, o seu endereço IP é armazenado na variável global biblioteca e um ponteiro que contém este endereço é retornado pela rotina. UDP porta 53 é usada como porta de DNS.

Parâmetros:

- Host: nome do host para ser resolvido. - Tmax: tempo em segundos para esperar por uma resposta.

Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina

aguarda DNS t O t d t d ã d l t d t

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo

unsigned char * RemoteHostIpAddr [4] / / usuário do host buffer endereço IP ... / / Servidor SNTP: / Zurique / Suíça: Laboratório de Sistemas Integráveis, da Suíça Fed. Inst. de Tecnologia / / 129.132.2.21: swisstime.ethz.ch / / Serviços Área: Suíça e Europa memcpy (remoteHostIpAddr, Ethernet_dnsResolve ("swisstime.ethz.ch", 5), 4);

CAPÍTULO 7 Bibliotecas

Ethernet_dnsResolve

mikroC PRO para PIC

310

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 398: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char Ethernet_initDHCP (unsigned char tmax);

Retorna - 1 - Parâmetros de rede foram obtidos com sucesso. - 0 - De outra forma.

Descrição

Esta é a rotina de módulo de DHCP. Ele envia um pedido DHCP para os parâmetros de rede (IP, gateway, DNS e endereços IP, máscara de sub-rede) e aguarda pela resposta de DHCP. Se os parâmetros solicitados foram obtidos com sucesso, seus valores são armazenados em a biblioteca de variáveis globais.

Estes parâmetros podem ser obtidos usando a biblioteca apropriada, IP começar

rotinas:

- Ethernet_getIpAddress - buscar o endereço IP. - Ethernet_getGwIpAddress - buscar endereço IP do gateway. - Ethernet_getDnsIpAddress - buscar DNS o endereço IP. - Ethernet_getIpMask - buscar IP, máscara de sub-rede.

Porta UDP 68 é usado como porta de cliente DHCP e UDP 67 é usado como serv DHCP er porta.

Parâmetros:

- Tmax: tempo em segundos para esperar por uma resposta.

Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo ... Ethernet_initDHCP (5); / / pega rede configuração do servidor DHCP, aguarde 5 segundos para a resposta ...

CAPÍTULO 7

mikroC PRO para PIC

Ethernet_initDHCL

Bibliotecas

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

311

www.mecatronicadegaragem.blogspot.com

Page 399: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char Ethernet_renewDHCP (unsigned char tmax);

Retorna - 0 - sobre o sucesso (tempo de concessão foi renovada). - 1 - De outra forma (pedido de renovação expirou).

Descrição

Esta é a rotina de módulo de DHCP. Ele envia o endereço IP arrendamento pedido de renovação de tempo para Servidor DHCP.

Parâmetros:

T t d t Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo

while (1) { ... if (Ethernet_doDHCPLeaseTime ())

Ethernet_renewDHCP (5); / / é hora de renovar o endereço IP, com 5 segundos para uma resposta ...

}

Protótipo unsigned char Ethernet_doDHCPLeaseTime ();

Retorna - 0 - Tempo de concessão ainda não tenha terminado ainda. - 1 - Tempo de concessão expirou, é hora de renovar.

Descrição Esta é a rotina de módulo de DHCP. Ela cuida de concessão de endereço IP vez por decre- tando o tempo de concessão global biblioteca do contador. Quando esse tempo expirar, é

Requer módulo Ethernet deve ser inicializado. Veja Ethernet_Init.

Exemplo

while (1) { ... if (Ethernet_doDHCPLeaseTime ())

... / / É hora de renovar o IP Endereço de locação }

CAPÍTULO 7 Bibliotecas

Ethernet_doDHCPLeaseTime

Ethernet_renewDHCP

mikroC PRO para PIC

312

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

www.mecatronicadegaragem.blogspot.com

Page 400: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

Este código mostra como usar a biblioteca Ethernet PIC18FxxJ60:

- O Conselho responderá a ARP e ICMP echo requests - 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, com o método GET caminhos: / Vai retornar a página HTML principal / S irá retornar o status da placa como texto / T0 ... / 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.

# Define _Ethernet_HALFDUPLEX # Define Ethernet_FULLDUPLEX

1

0

/************************************************* *********** * Cordas ROM constante * /

const unsigned char httpHeader [] = "HTTP/1.1 200 OKnContent tipo:" / / Cabeçalho HTTP const unsigned char / / Tipo de MIME HTML const unsigned char

httpMimeTypeHTML [] = "text / htmlnn";

httpMimeTypeScript [] = "text plainnn /";

/ / Tipo MIME TEXTO unsigned char HttpMethod [] = "GET /"; / * * Página web, divididos em 2 partes: * Quando chegar curto de ROM, os dados fragmentado é tratado mais efi-

cientemente pelo linker * * Esta página HTML chama as placas para obter o seu estatuto, 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;url=http://192.168.20.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 ; Font-family: terminal "> <th <tr> colspan=2> ADC </ th> </ tr> <tr> <td> AN2 </ td> <script> document.write (AN2) </ script> </ td> </ tr> <tr> <td> AN3 </ td> <script> document.write (AN3) </ script> </ td> </ tr>

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

313

www.mecatronicadegaragem.blogspot.com

Page 401: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

</ Table> </ td> borda da tabela <= 1 style = "font-size: 20px; font-family: terminal "> <tr> <th colspan=2> PORTB </ th> </ tr> <script> var str, i; str = ""; for (i = 0; i <8; i + +) {Str + = "<td bgcolor=pink> # botão" + i + "</ td>"; if (PORTB e (1 <<i)) {str + = "<td bgcolor=red> ON";} mais {Str + = "<td bgcolor=#cccccc> OFF";} str +="</ td> </ tr ";} document.write (str); </ Script> ";

const char

* IndexPage2 = "</ table> </ td>

<table border=1 style="font-size:20px terminal ;"> ;font-family: <tr> <th colspan=3> PORTD </ th> </ tr> <script> var str, i; str = ""; for (i = 0; i <3; i + +) {Str + = "bgcolor=yellow> <td LED #" + i + "</ td>"; if (PORTD & (1 <<i)) {str + = "<td bgcolor=red> ON";} mais {Str + = "<td bgcolor=#cccccc> OFF";} +="</ Str td> <a href=/t"+i+"> Toggle </ a> </ td> </ tr ";} document.write (str); </ Script> </ Table> </ td> </ tr> </ table> Este é HTTP pedido # <script> Document.write (REQ) </ script> </ BODY> </ HTML> ";

/*********************************** RAM variáveis * * /

unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f}; / / Meu endereço MAC unsigned char / / O meu endereço IP unsigned char

myIpAddr [4] = {192, 168, 20, 60};

gwIpAddr [4] = {192, 168, 20, 6}; / gateway /

(Roteador), IP endereço unsigned char IPMask [4] = {255, 255, 255, 0}; / máscara de rede / (Por exemplo: 255.255.255.0) unsigned char dnsIpAddr [4] = {192, 168, 20, 1}; / / Endereço IP do servidor DNS

unsigned char unsigned char unsigned long

GetRequest [15] / / buffer solicitação HTTP dyna [30]; / / buffer para a resposta dinâmica httpCounter = 0 / / contador de HTTP pedidos

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

www.mecatronicadegaragem.blogspot.com

Page 402: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

/******************************************* * funções * /

/ * * Colocar a string constante apontada por s para o con-Ethernet

Troller do buffer de transmissão. * /

/ * PutConstString unsigned int (const char * s) { ctr unsigned int = 0;

while (* s)

{ Ethernet_putByte (* s + +); ctr + +; }

retorno (CTR); } / *

/ * * Ele vai ser muito mais rápido de usar a biblioteca Ethernet_putConstString rou- dente * Em vez de putConstString rotina acima. No entanto, o código será

ser um pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com o def-putConstString

rial acima * A linha # define abaixo devem ser comentadas. * * /

# 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;

while (* s)

{ Ethernet_putByte (* s + +);

ctr + +; }

retorno (CTR); } / *

/ *

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

www.mecatronicadegaragem.blogspot.com

Page 403: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. No entanto, o código será uma

pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com a definição putString-

ção acima * A linha # define abaixo devem ser comentadas. * * /

# Define putString Ethernet_putString

/ * * Esta função é chamada pela biblioteca * O usuário acessa o pedido HTTP por chamadas sucessivas 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,

ou 0 se nada para transmitir * * Se você não precisa de responder a pedidos HTTP, * Apenas definir essa função com um return (0) como única instrução * * /

unsigned int Ethernet_UserTCP (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int localPort, unsigned int reqLength)

{ unsigned int unsigned char

len = 0; / / comprimento resposta minha i / / de propósito geral char

if (localPort! = 80) / / Eu ouço apenas para solicitação da web na porta 80

{ return (0); }

/ / Obtém 10 bytes primeiro, somente o pedido, o resto não

importa aqui for (i = 0; i <10; i + +)

{ GetRequest [i] = Ethernet_getByte (); }

GetRequest [10] = 0;

if (memcmp (GetRequest, HttpMethod, 5)) / / só método GET é

suportados aqui { return (0); }

316

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

www.mecatronicadegaragem.blogspot.com

Page 404: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC httpCounter + +;

/ / Mais um pedido feito

Bibliotecas

if (GetRequest [5] 's' ==) / / se o nome do caminho começa com pedido

s, 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), Dyna); len + = putConstString (AN2 var = "); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona valor AN3 para responder IntToStr (ADC_Read (3), Dyna); len + = putConstString ("AN3 var ="); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona valor PORTB (botões) para responder len + = putConstString (PORTB var = "); IntToStr (PORTB, Dyna); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona valor PORTD (LEDs) para responder len + putConstString = ("var PORTD = "); IntToStr (PORTD, Dyna); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona os pedidos HTTP contador para responder IntToStr (httpCounter, Dyna); len + = putConstString (REQ var = "); len + = putString (Dyna); len + = (";"); putConstString }

else if (GetRequest [5] == 't') / / se o nome do caminho começa a pedido com t, alternar PORTD número de bits (LED) que vem depois

{ unsigned char bitmask = 0; / máscara de bits para

if (GetRequest (isdigit [6])) / / se 0 <= pouco <= número 9, os bits 8 e 9 não existe, mas não importa

{

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

www.mecatronicadegaragem.blogspot.com

Page 405: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

bitmask GetRequest = [6] - '0 '; / / converter para inteiro ASCII

máscara de bits = 1 <bitmask </ / criar máscara de bits PORTD ^ = bitmask; / alternar / PORTD com xor operador

} }

if (len == 0) / / o que fazer para por defeito

{ putConstString len = (httpHeader); / / cabeçalho HTTP len + = putConstString (httpMimeTypeHTML) / / com o tipo MIME HTML len + = putConstString (indexpage); / HTML parte da primeira página len + = putConstString (indexPage2); / / parte segunda página HTML

}

retorno (len); / / retorna para a biblioteca com o número de

bytes para transmitir }

/ * * Esta função é chamada pela biblioteca * O usuário acessa o pedido UDP por chamadas sucessivas 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, ou

0 se nada para transmitir * * Se você não precisa responder aos pedidos UDP, * Apenas definir essa função com um return (0) como única instrução * * /

unsigned int Ethernet_UserUDP (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int destPort, reqLength unsigned int)

{ unsigned int len / / comprimento resposta minha

/ / Resposta é feito do endereço IP do host remoto de seres humanos, leia-

formato capaz ByteToStr (remoteHost [0], Dyna) / / byte primeiro endereço IP dyna [3] = '.'; ByteToStr (remoteHost [1], dyna + 4) / / segundo dyna [7] = '.'; ByteToStr (remoteHost [2], dyna + 8) / / terceiro dyna [11] = '.'; ByteToStr (remoteHost [3], dyna + 12) / / quarta

dyna [15] = ':';

/ / Número da porta, em seguida, o anfitrião remoto WordToStr (RemotePort, dyna + 16);

/ / Adiciona o separador

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

www.mecatronicadegaragem.blogspot.com

Page 406: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

dyna [21] '['; WordToStr (destPort, dyna + 22); dyna [27] ']'; dyna [28] = 0;

/ / O comprimento total do pedido é 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, 28);

/ / Em seguida, coloca a corda pedido convertido em char superior

para o buffer de transmissão while (reqLength -)

{ Ethernet_putByte (toupper (Ethernet_getByte ())); }

retorno (len);

resposta UDP }

/ * * Entrada principal * /

/ / Volta para a biblioteca com o comprimento do

vazio main () { ADCON1 0x0B = / / conversores ADC será usado com AN2 e AN3 CMCON = 0x07 / / desliga os comparadores

PORTA = 0; TRISA 0xFC =; / / Define PORTA como entrada para o ADC

/ / Exceto RA0 e RA1 que será utilizado como / / Ethernet e LEDA LEDB

PORTB = 0; TRISB = 0xff;

PORTD = 0; TRISD = 0;

/ PORTB set / como entrada para os botões / / Set PORTD como saída

/ * * Inicializar controlador Ethernet * /

Ethernet_Init (myIpAddr myMacAddr, Ethernet_FULLDUPLEX);

/ / Dhcp não serão utilizados aqui, portanto, use pré- Endereços Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr);

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

319

www.mecatronicadegaragem.blogspot.com

Page 407: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

while (1)

mikroC PRO para PIC

/ / Faz para sempre

{ / * * Se necessário, 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, se necessário * Ethernet_doPacket () deve ser chamado o mais rápido possível * Caso contrário, os pacotes podem ser perdidos * /

} }

320

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 408: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

BIBLIOTECA DE MEMÓRIA FLASH

Esta biblioteca fornece rotinas para acessar microcontrolador de memória Flash. Note-se que protótipos diferentes para as famílias PIC16 e PIC18.

Nota: Devido às especificidades P16/P18 flash família, biblioteca flash MCU é dependente. Como a família P18 significantlly diferem no número de bytes que podem ser apagados e / ou escrita para MCUs específico, o sufixo justificativo é acrescentado aos nomes dos funções, a fim de torná-lo mais fácil de utilizá-los. operações de memória Flash são MCU dependentes:

1. Leia operações apoiadas. Para este grupo de função só ler MCU é apli

cadas. 2. Leia e Escrever operações apoiadas (escrever é executado como apagar e gravação). Para

este grupo de MCU ler e escrever funções são implementadas. Note-se que escrever operação que é executada como apagá-e-escrever, pode escrever bytes menor do que apaga.

3. Ler, Escrever e Apagar operações apoiadas. Para este grupo de leitura MCU, funções escrever e apagar são implementadas. Ainda mais um bloco de memória, flash tem de ser apagado antes de escrita (operação de gravação não é executado como apagar e- escrever).

Por favor, consultar os dados antes de MCU usando a biblioteca do flash.

Rotinas da biblioteca

- - - - - - - - - - - - -

FLASH_Read FLASH_Read_N_Bytes FLASH_Write FLASH_Write_8 FLASH_Write_16 FLASH_Write_32 FLASH_Write_64 FLASH_Erase FLASH_Erase_64 FLASH_Erase_1024 FLASH_Erase_Write FLASH_Erase_Write_64 FLASH_Erase_Write_1024

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

321

www.mecatronicadegaragem.blogspot.com

Page 409: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo

/ / Para PIC16 não assinado FLASH_Read (unsigned endereço);

/ / Para PIC18 unsigned short FLASH_Read (long endereço);

Retorna Retorna dados byte da memória Flash.

Descrição Lê dados do endereço especificado no Flash memória.

Requer Nada.

Exemplo

/ / Para PIC18 unsigned short tmp; ... tmp FLASH_Read = (0x0D00); ...

Protótipo vazio FLASH_Read_N_Bytes (long endereço, Char * data_, unsigned int N);

Retorna Nada.

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, data_buffer, sizeof (data_buffer));

CAPÍTULO 7 Bibliotecas

FLASH_Read

FLASH_Read_N_Bytes

mikroC PRO para PIC

322

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

www.mecatronicadegaragem.blogspot.com

Page 410: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo

/ / Para PIC16 vazio FLASH_Write (unsigned endereço, unsigned int * de dados); / / Para PIC18 vazio FLASH_Write_8 (long endereço, Char * de dados); vazio FLASH_Write_16 (long endereço, Char * de dados); vazio FLASH_Write_32 (long endereço, Char * de dados); vazio FLASH_Write_64 (long endereço, Char * de dados);

Retorna Nada.

Descrição

Grava bloco de dados para a memória Flash. tamanho do bloco é MCU dependentes.

P16: Esta função pode apagar segmento de memória antes de escrever bloco

de dados a ele (MCU dependente). Além disso, o segmento de memória, que serão apagados pode ser maior que o tamanho do bloco de dados que serão gravados (MCU dependente). Portanto, recomenda-se a escrever, como muitos bytes como apagar. FLASH_Write

4 l i d ó i fl h li h i i h d

Requer A memória flash que irá ser escrito pode ter que ser apagada antes que essa função é h d MCU (d d ) C l MCU d h i d lh

Exemplo

Escrever valores consecutivos em 64 posições consecutivas, a partir 0x0D00:

unsigned short toWrite [64]; ... / / Inicializa array: para (I = 0; i <64; i + +) toWrite [i] = i;

/ / Escreve o conteúdo da matriz para o endereço 0x0D00: FLASH_Write_64 (0x0D00, toWrite);

CAPÍTULO 7

mikroC PRO para PIC

FLASH_Write

Bibliotecas

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

323

www.mecatronicadegaragem.blogspot.com

Page 411: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo

/ / Para PIC18

vazio FLASH_Erase_Write_64 (long endereço, dados char *);

vazio FLASH_Erase_Write_1024 (long endereço, dados char *);

Retorna Nenhum.

Descrição Apagar em seguida, escrever de memória bloco a partir de um determinado d Requer Nada.

Exemplo

char toWrite [64]; int i; ... / / Inicializa array: for (i = 0; i <64; i + +) toWrite [i] = i;

/ / Apagar bloco de memória no endereço 0x0D00 em seguida, escrever conteúdo a matriz para o endereço 0x0D00: FLASH_Erase_Write_64 (0x0D00, toWrite);

Protótipo

/ / Para PIC16 vazio FLASH_Erase (unsigned endereço); / / Para PIC18 vazio FLASH_Erase_64 (long endereço); vazio FLASH_Erase_1024 (long endereço);

Retorna Nada.

Descrição Apaga um bloco de memória a partir de um determinado endereço. Para P16 familly é implementar- ed somente para aqueles MCU, cuja memória flash não suporta apagar e gravação

( l d d d lh ) Requer Nada.

Exemplo Apagar um bloco de memória de 64 bytes de memória, a partir do endereço 0x0D00:

S 64 (0 0 00)

CAPÍTULO 7 Bibliotecas

FLASH_Erase

FLASH_Erase_Write

mikroC PRO para PIC

324

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

www.mecatronicadegaragem.blogspot.com

Page 412: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

O exemplo demonstra simples escrever para a memória flash para PIC16F887, em seguida, lê os dados e exibe-lo em PORTB e PORTC.

char i = 0; unsigned int addr, data_, dataAR [4] [4] = {{0 0x3FAA, 0x3FAA 1, 0x3FAA 2, 0x3FAA 3},

{0x3FAA 4, 5 0x3FAA, 0x3FAA 6, 7 0x3FAA}

{0x3FAA 8, 9 0x3FAA, 0x3FAA 10, 0x3FAA 11}

{0x3FAA 12, 0x3FAA 13, 0x3FAA 14, 0x3FAA 15}};

vazio main () {

ANSEL = 0; ANSELH = 0;

/ / Configurar um pinos como I / O digital

PORTB = 0; TRISB = 0; PORTC = 0; TRISC = 0;

/ / / / / / / /

PORTB inicial valor Definir PORTB como saída PORTC valor inicial Definir PORTC como saída

Delay_ms (500);

/ / 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. A operação de gravação é / / borda alinhados e não pode ocorrer através das fronteiras. / / Por isso, é recomendada a realização de flash escreve em 16 palavras

pedaços. / / É por isso que 4 bits mais baixos do começo endereço [03:00] deve ser zero. / / Desde rotina FLASH_Write realiza escreve em blocos de 4 palavras, / / precisamos chamá-la quatro vezes seguidas. addr = 0x0430, / / endereço inicial do Flash, válida para P16F887 para (I = 0; i <4; i + +) {/ / Escreva alguns dados para Flash

Delay_ms (100); FLASH_Write (addr + i * 4, dataAR [i]);

} Delay_ms (500);

addr = 0x0430; para (I = 0; i <16; i + +) {

}

}

data_ = FLASH_Read (addr + +); Delay_us (10); PORTB data_ =; PORTC data_ => 8; Delay_ms (500);

/ / / /

/ / / /

FLASH P16 é de 14 bits, de modo MSB dois vai ser sempre '00 ' Exibir dados em PORTB LS Byte e MS PORTC Byte

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

325

www.mecatronicadegaragem.blogspot.com

Page 413: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis devem ser definido em todos os projectos

usando LCD Gráfico

Descrição: Exemplo:

sfr extern char GLCD_DataPort;

GLCD porta de dados. char GLCD_DataPort em PORTD;

sbit sfr extern GLCD_CS1;

Chip Selecione uma

li h

sbit GLCD_CS1 em RB0_bit;

sbit sfr extern GLCD_CS2;

Chip Select 2 linha. sbit GLCD_CS2 em RB1_bit;

sbit sfr extern GLCD_RS;

Registre-se selecionar a

li h

sbit GLCD_RS em RB2_bit;

sbit sfr extern GLCD_RW;

Read / Write linha. sbit GLCD_RW em RB3_bit;

sbit sfr extern GLCD_EN;

Habilitar linha. sbit GLCD_EN em RB4_bit;

sbit sfr extern GLCD_RST;

linha de reposição. sbit GLCD_RST em RB5_bit;

sbit sfr extern GLCD_CS1_Direction;

Direção do Chip Selecione um alfinete.

sbit GLCD_CS1_Direction em TRISB0_bit;

sbit sfr extern GLCD_CS2_Direction;

Direção do Chip Selecione de 2 pinos.

sbit GLCD_CS2_Direction em TRISB1_bit;

sbit sfr extern GLCD_RS_Direction;

Direção do Regis- ter pinos de seleção.

sbit GLCD_RS_Direction em TRISB2_bit;

sbit sfr extern GLCD_RW_Direction;

Direção do Read / Write pino.

sbit GLCD_RW_Direction em TRISB3_bit;

sbit sfr extern GLCD_EN_Direction;

Direção da Habilitar alfinete.

sbit GLCD_EN_Direction em TRISB4_bit;

sbit sfr extern GLCD_RST_Direction;

Direção do Reset alfinete.

sbit GLCD_RST_Direction em TRISB5_bit;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

GRÁFICO LCD BIBLIOTECA A mikroC PRO para PIC fornece uma biblioteca para o funcionamento 128x64 gráfico LCD (com comumente usado Samsung controlador KS108/KS107). Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool. As dependências externas do LCD Gráfico Biblioteca

326

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

www.mecatronicadegaragem.blogspot.com

Page 414: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

rotinas básicas:

Bibliotecas

- - - - - -

Glcd_Init Glcd_Set_Side Glcd_Set_X Glcd_Set_Page Glcd_Read_Data Glcd_Write_Data

rotinas avançadas:

- - - - - - - - - - - -

Glcd_Fill Glcd_Dot Glcd_Line Glcd_V_Line Glcd_H_Line Glcd_Rectangle Glcd_Box Glcd_Circle Glcd_Set_Font Glcd_Write_Char Glcd_Write_Text Glcd_Image

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

327

www.mecatronicadegaragem.blogspot.com

Page 415: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Init ();

Retorna Nada.

Descrição Inicializa o módulo GLCD. Cada uma das linhas de controle é tanto um porto e pin-config mensurável, enquanto que as linhas de dados devem ser em uma única porta ( i <00 07>)

Requer

As variáveis globais:

- GLCD_CS1: Chip selecione um pino de sinal - GLCD_CS2: Chip selecionar dois pinos de sinal - GLCD_RS: Cadastre-se pino de sinal selecione - GLCD_RW: leitura / gravação de pino - GLCD_EN: pino do sinal Enable - GLCD_RST: Reset sinal - GLCD_DataPort: porta de dados - GLCD_CS1_Direction: Direção do Chip selecione um pino - GLCD_CS2_Direction: Direção do Chip selecione 2 pinos - GLCD_RS_Direction: Direção do sinal selecione Registrar pin - GLCD_RW_Direction: Direção da leitura / gravação do sinal do pino - 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.

Exemplo

/ / GLCD configurações de pinagem char GLCD_DataPort em PORTD;

sbit GLCD_CS1 em RB0_bit; sbit GLCD_CS2 em RB1_bit; sbit GLCD_RS em RB2_bit; sbit GLCD_RW em RB3_bit; sbit GLCD_EN em RB4_bit; sbit GLCD_RST em RB5_bit;

sbit GLCD_CS1_Direction em TRISB0_bit; sbit GLCD_CS2_Direction em TRISB1_bit; sbit GLCD_RS_Direction em TRISB2_bit; sbit GLCD_RW_Direction em TRISB3_bit; sbit GLCD_EN_Direction em TRISB4_bit; sbit GLCD_RST_Direction em TRISB5_bit; ... ANSEL = 0; ANSELH = 0; Glcd_Init ();

CAPÍTULO 7 Bibliotecas

Glcd_Init

mikroC PRO para PIC

328

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

www.mecatronicadegaragem.blogspot.com

Page 416: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Set_Side (unsigned short x_pos);

Retorna Nada.

Descrição

Seleciona lado GLCD. Consulte a ficha GLCD para explicação detalhada.

Parâmetros:

- X_pos: posição no eixo-x. Valores válidos: 0 .. 127

O parâmetro x_pos especifica o lado GLCD: valores 0-63 especificar o lado esquerdo, os valores de 64-127 especificar o lado direito.

Nota: Para lateral, eixo x e explicação de layout de página ver esquemática na

parte inferior

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo

As duas linhas seguintes são equivalentes, e ambos selecione no lado esquerdo da GLCD:

Glcd_Select_Side (0); Glcd_Select_Side (10);

Protótipo vazio Glcd_Set_X (unsigned short x_pos);

Retorna Nada.

Descrição

Define a posição do eixo x para x_pos pontos a partir da margem esquerda do GLCD dentro do select- lado ed.

Parâmetros:

- X_pos: posição no eixo-x. Valores válidos: 0 .. 63

Nota: Para lateral, eixo x e na página explicação layout ver esquema em baixo d á i Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo Glcd_Set_X (25);

CAPÍTULO 7

mikroC PRO para PIC

Glcd_Set_Side

Glcd_Set_X

Bibliotecas

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

329

www.mecatronicadegaragem.blogspot.com

Page 417: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Set_Page (unsigned short página);

Retorna Nada.

Descrição

Seleciona a página do GLCD.

Parâmetros:

- página: número da página. Valores válidos: 0 .. 7

Nota: Para lateral, eixo x e explicação de layout de página ver esquema em

baixo

Requer GLCD precisa ser inicializado, veja rotina Glcd_Init.

Exemplo Glcd_Set_Page (5);

Protótipo unsigned short Glcd_Read_Data ();

Retorna Um byte de memória GLCD.

Descrição Lê dados a partir do local atual de memória GLCD e se move para a próximo local.

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as

funções Exemplo

unsigned short dados; ... = dados Glcd_Read_Data ();

CAPÍTULO 7 Bibliotecas

Glcd_Set_Page

Glcd_Read_Data

mikroC PRO para PIC

330

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

www.mecatronicadegaragem.blogspot.com

Page 418: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Write_Data (unsigned short ddata);

Retorna Nada.

Descrição

Grava um byte para a posição atual em GLCD memória e move para a próxima Local.

Parâmetros:

- ddata: dados a serem gravados

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as

funções Exemplo

unsigned short dados; ... Glcd_Write_Data (dados);

Protótipo vazio Glcd_Fill (unsigned short padrão);

Retorna Nada.

Descrição

Preenche a memória GLCD com o padrão de byte.

Parâmetros:

- padrão: byte para preencher GLCD memória com

Para limpar a tela GLCD, use Glcd_Fill (0).

Para preencher a tela completamente, uso Glcd_Fill (0xFF).

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Limpar ecrã Glcd_Fill (0);

CAPÍTULO 7

mikroC PRO para PIC

Glcd_Write_Data

Glcd_Fill

Bibliotecas

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

331

www.mecatronicadegaragem.blogspot.com

Page 419: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Dot (unsigned short x_pos, unsigned y_pos curto, não assinado cor curto);

Retorna Nada.

Descrição

Desenha um ponto na GLCD nas coordenadas (x_pos, y_pos).

Parâmetros:

- x_pos: x posição. Valores válidos: 0 .. 127 - y_pos: y posição. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina um ponto do estado: 0 limpa ponto, um coloca um ponto, e 2 inverte ponto estado.

Nota: Para x e explicação layout eixo y ver esquema no final deste página.

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Inverter o ponto no no canto superior esquerdo Glcd_Dot (0, 0, 2);

Protótipo vazio Glcd_Line (int x_start, int y_start, int x_end, int y_end, unsigned short cor);

Retorna Nada.

Descrição

Desenha uma linha na GLCD.

Parâmetros:

- x_start: coordenada x do início da linha. Válido valores: 0 .. 127 - y_start: coordenada y do início da linha. Valores válidos: 0 .. 63 - x_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - y_end: coordenada y da linha final. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha uma linha entre os pontos (0,0) e (20,30) Glcd_Line (0, 0, 20, 30, 1);

CAPÍTULO 7 Bibliotecas

Glcd_Dot

Glcd_Line

mikroC PRO para PIC

332

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

www.mecatronicadegaragem.blogspot.com

Page 420: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_H_Line (unsigned short x_start, unsigned short x_end, unsigned short y_pos, unsigned short cor);

Retorna Nada.

Descrição

Desenha uma linha horizontal sobre GLCD.

Parâmetros:

- x_start: coordenada x do início da linha. Valores válidos: 0 .. 127 -X_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - y_pos: coordenada y da linha horizontal. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto.

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha uma linha horizontal entre os pontos (10,20) e (50,20) Glcd_H_Line (10, 50, 20, 1);

Protótipo vazio Glcd_V_Line (unsigned short y_start, unsigned short y_end, unsigned short x_pos, unsigned short cor);

Retorna Nada.

Descrição

Desenha uma linha vertical no GLCD.

Parâmetros:

- y_start: coordenada y do início da linha. Valores válidos: 0 .. 63 - y_end: y coordenar o fim da linha. Valores válidos: 0 .. 63 - x_pos: coordenada x da linha vertical. Valores válidos: 0 .. 127 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto.

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha uma linha vertical entre os pontos (10,5) e (10,25) Glcd_V_Line (5, 25, 10, 1);

CAPÍTULO 7

mikroC PRO para PIC

Glcd_V_Line

Glcd_H_Line

Bibliotecas

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

333

www.mecatronicadegaragem.blogspot.com

Page 421: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Rectangle (unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short cor);

Retorna Nada.

Descrição

Desenha um retângulo na GLCD.

Parâmetros:

- x_upper_left: coordenada x do retângulo superior esquerdo canto. Valores válidos: 0

.. 127 - y_upper_left: coordenada y do canto superior esquerdo do retângulo. Valores válidos: 0 .. 63 - x_bottom_right: coordenada x do canto inferior direito do retângulo. Válido

valores: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito retângulo canto. Válido

valores: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha um retângulo entre os pontos (5,5) e (40,40) Glcd_Rectangle (5, 5, 40, 40, 1);

Protótipo vazio Glcd_Box (unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short cor);

Retorna Nada.

Descrição

Desenha uma caixa de GLCD.

Parâmetros: - x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores válidos: 0 .. 127 - y_upper_left: coordenada y do canto superior esquerdo caixa. Valores válidos: 0 .. 63 - x_bottom_right: x coordenadas do canto inferior direito caixa. Valores válidos: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito caixa. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha uma caixa entre os pontos (5,15) e (20,40) Glcd_Box (5, 15, 20, 40, 1);

CAPÍTULO 7 Bibliotecas

Glcd_Rectangle

Glcd_Box

mikroC PRO para PIC

334

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

www.mecatronicadegaragem.blogspot.com

Page 422: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Set_Font (const char * ActiveFont, unsigned short aFontWidth, unsigned short aFontHeight, unsigned int aFontOffs);

Retorna Nada.

Descrição

Define a fonte que será usada com Glcd_Write_Char e Glcd_Write_Text rotinas.

Parâmetros:

- activeFont: fonte a ser definido. Precisa ser formatado como um array

de byte - aFontWidth: largura dos caracteres da fonte em pontos. - aFontHeight: altura dos caracteres da fonte em pontos. - aFontOffs: número que representa a diferença entre mikroC para o PRO

PIC conjunto de caracteres ASCII e definir regular (por exemplo, se 'A' é 65 de caracteres ASCII, e 'A' é 45 no mikroC PRO para PIC conjunto de caracteres, aFontOffs é 20). Demo fontes providas com a biblioteca tem um deslocamento de 32, o que significa que início com o espaço

Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Use o costume 5x7 fonte "MyFont", que se inicia com o espaço (32): Glcd_Set_Font (& MyFont, 5, 7, 32);

Protótipo vazio Glcd_Circle (int x_center, int y_center, int raio, não assinado curto cor);

Retorna Nada.

Descrição

Desenha um círculo em GLCD.

Parâmetros:

- x_center: coordenada x do círculo centro. Valores válidos: 0 .. 127 - y_center: coordenada y do centro do círculo. Valores válidos: 0 .. 63 - Raio: Raio de tamanho - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor da linha do círculo: 0 branco, um negro, 2 i t d t Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha um círculo com centro em (50,50) e raio = 10 Glcd_Circle (50, 50, 10, 1);

CAPÍTULO 7

mikroC PRO para PIC

Glcd_Circle

Glcd_Set_Font

Bibliotecas

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

335

www.mecatronicadegaragem.blogspot.com

Page 423: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Write_Char (unsigned short CDH, unsigned short x_pos, unsigned short page_num, unsigned short cor);

Retorna Nada.

Descrição

Impressões sobre o caráter GLCD.

Parâmetros:

- CDH: caractere a ser escrito - x_pos: caractere inicial posição no eixo-x. Valores válidos: 0 .. (127-FontWidth) - page_num: o número da página na qual personagem vai ser escrito. Válido

valores: 0 .. 7 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor do personagem: 0 branco, Um preto, e 2 inverte cada ponto.

Nota: Para eixo x e explicação de layout de página ver esquema na parte inferior

da Requer

GLCD precisa ser inicializado, veja Glcd_Init rotina. Use Glcd_Set_Font a especi- fy a fonte para exibição, se não é fonte especificado, fonte padrão fornecidos com 5x8 bibli t á d

Exemplo / / Escreve 'C' personagem na posição 10 no interior da página 2: Glcd_Write_Char ('C', 10, 2, 1);

CAPÍTULO 7 Bibliotecas

Glcd_Write_Char

mikroC PRO para PIC

336

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

www.mecatronicadegaragem.blogspot.com

Page 424: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Glcd_Write_Text (char * Texto, unsigned short x_pos, não assinado curto page_num, unsigned short cor);

Retorna Nada.

Descrição

Imprime texto na GLCD.

Parâmetros:

- texto: texto a ser escrito - x_pos: posição do texto a partir do eixo-x. - page_num: o número da página na qual o texto será escrito. Valores válidos: 0 .. 7 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor do texto: 0 branco, um preto, e 2 inverte cada ponto.

Nota: Para eixo x e explicação de layout de página ver esquema na parte inferior

da Requer

GLCD precisa ser inicializado, veja Glcd_Init rotina. Use Glcd_Set_Font para especificar a fonte para exibição, se nenhuma fonte é especificada, fonte padrão, em seguida, 5x8 fornecido com o bibli t á d Exemplo / / Escreve texto "Olá mundo!" na posição 10 no interior da página 2: Glcd_Write_Text ("Olá mundo!", 10, 2, 1);

Protótipo vazio Glcd_Image (const unsigned short código * Imagem);

Retorna Nada.

Descrição

Exibe bitmap em GLCD.

Parâmetros:

- imagem: a imagem a ser exibida. matriz bitmap deve estar na memória de código.

Use o mikroC PRO para PIC integrada GLCD Bitmap Editor para converter a

imagem para Requer GLCD precisa ser inicializado, veja Glcd_Init rotina.

Exemplo / / Desenha my_image imagem GLCD Glcd_Image (my_image);

CAPÍTULO 7

mikroC PRO para PIC

Glcd_Write_Text

Glcd_Image

Bibliotecas

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

337

www.mecatronicadegaragem.blogspot.com

Page 425: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca O exemplo a seguir demonstra as rotinas da biblioteca GLCD: inicialização, claro (padrão de preenchimento), exibindo imagens, desenhar linhas, círculos, retângulos e caixas, o texto visualização e manuseio. / / Declarações ----------------------------------------------- ------- ------------ const char código truck_bmp [1024]; //------------------------------------------------ -------------- final declarações

/ / Conexões GLCD módulo char GLCD_DataPort em PORTD;

sbit sbit sbit sbit sbit sbit

GLCD_CS1 GLCD_CS2 GLCD_RS GLCD_RW GLCD_EN GLCD_RST

em em em em em em

RB0_bit; RB1_bit; RB2_bit; RB3_bit; RB4_bit; RB5_bit;

sbit GLCD_CS1_Direction em TRISB0_bit; sbit GLCD_CS2_Direction em TRISB1_bit; sbit GLCD_RS_Direction sbit GLCD_RW_Direction sbit GLCD_EN_Direction

em TRISB2_bit; em TRISB3_bit; em TRISB4_bit;

sbit GLCD_RST_Direction em TRISB5_bit; / / Fim conexões GLCD módulo

vazio delay2S () {

/ / 2 segundos, função de atraso

Delay_ms (2000); }

vazio main () {

unsigned short II; char * SomeText;

# Define COMPLETE_EXAMPLE / comentar essa linha para fazer

exemplo mais simples e menores ANSEL = 0; / / Configurar uma pinos como digital ANSELH = 0; C1ON_bit = 0; / comparadores Desativar C2ON_bit = 0;

Glcd_Init (); Glcd_Fill (0x00);

while (1) {

/ / Inicializar GLCD / / Limpar GLCD

338

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

www.mecatronicadegaragem.blogspot.com

Page 426: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC # Ifdef COMPLETE_EXAMPLE

Bibliotecas

Glcd_Image (truck_bmp); delay2S (); delay2S ();

# Endif

Glcd_Fill (0x00);

Glcd_Box (62,40,124,56,1); Glcd_Rectangle (5,5,84,35,1); Glcd_Line (0, 0, 127, 63, 1);

/ / Desenha a imagem

/ / Limpar GLCD

/ / Desenha caixa / / Desenhar retângulo / / Desenha uma linha

delay2S ();

de (ii = 5; ii <60; ii + = 5) {/ / Desenha linhas horizontais e verticais

Delay_ms (250); Glcd_V_Line (2, 54, II, 1); Glcd_H_Line (2, 120, II, 1);

}

delay2S ();

Glcd_Fill (0x00); / / Limpar GLCD # Ifdef COMPLETE_EXAMPLE

Glcd_Set_Font (Character8x7, 8, 7, 32); / font Escolha / v. __Lib_GLCDFonts.c Na pasta Usos

# Endif Glcd_Write_Text ("mikroE", 1, 7, 2) / / Escreve o texto

para (Ii = 1; <ii = 10; ii + +)

Glcd_Circle (63,32, 3 * ii, 1); delay2S ();

Glcd_Box (12,20, 70,57, 2); delay2S ();

# Ifdef COMPLETE_EXAMPLE

Glcd_Fill (0xFF);

/ / Desenha círculos / / Desenha caixa / / Preencha GLCD

Glcd_Set_Font (Character8x7, 8, 7, 32); / Change / fonte someText = "8x7 Fonte"; Glcd_Write_Text (someText, 5, 0, 2) / / Escreve o texto delay2S ();

Glcd_Set_Font (System3x5, 3, 5, 32); / font / Alterar

someText = "3X5 únicas capitais"; Glcd_Write_Text (someText, 60, 2, 2) / / Escreve o texto delay2S ();

Glcd_Set_Font (font5x7, 5, 7, 32);

someText = "5x7 Fonte";

/ / Alterar a fonte

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

339

www.mecatronicadegaragem.blogspot.com

Page 427: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Glcd_Write_Text (someText, 5, 4, 2);

mikroC PRO para PIC

/ / Escreve a string

delay2S ();

Glcd_Set_Font (FontSystem5x7_v2, 5, 7, 32); / / Alterar fonte someText = "5x7 Fonte (v2)"; Glcd_Write_Text (someText, 5, 6, 2) / / Escreve o texto delay2S ();

# Endif }

}

Conexão HW

GLCD conexão HW

340

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 428: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio I2C1_Init (unsigned long relógio);

Retorna Nada.

Descrição

Inicializa I C ˛ com desejado relógio (Ver folha de dados do dispositivo para os valores

corretos em respeito com FOSC). Precisa ser chamada antes de usar outras funções de I ˛ C Library.

Você não precisa configurar as portas manualmente para usando o módulo; biblioteca terá id d i i i li

Requer

Biblioteca requer MSSP módulo sobre PORTB ou PORTC.

Nota: O cálculo do valor do relógio que eu ˛ C é realizada pelo compilador, como seria produzir um código relativamente grande, se realizado em o nível biblioteca. Portanto, o compilador precisa saber o valor do parâmetro em tempo de compilação. É por isso que este parâmetro deve ser uma constante, e não uma variável.

Exemplo I2C1_Init (100000);

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. mikroC PRO para PIC fornece biblioteca que apoia o comandante do I ˛ modo C.

Nota: Alguns MCUs ter vários módulos ˛ C. A fim de usar a desejar eu ˛ rotina da biblioteca C, sim- ply alterar o número 1 no protótipo com o número adequado de módulo, ou seja, I2C1_Init (100000);

Rotinas da biblioteca

- - - - - - -

I2C1_Init I2C1_Start I2C1_Repeated_Start I2C1_Is_Idle I2C1_Rd I2C1_Wr I2C1_Stop

I2C1_Init

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

341

www.mecatronicadegaragem.blogspot.com

Page 429: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short I2C1_Rd (unsigned short ack);

Retorna Retorna um byte a partir do escravo.

Descrição Lê um byte a partir do escravo, e não envia reconhecer sinal se o parâmetro ack é 0, caso contrário, ele envia reconhecer.

Requer I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja I2C1_Start.

Exemplo Ler e enviar dados não reconhece sinal:

unsigned short ter; ... ter = I2C1_Rd (0);

Protótipo unsigned short I2C1_Start (void);

Retorna Se não houver erro, a função retorna 0.

Descrição Determina se o bus I2C é gratuito e as questões START. Requer I2C deve ser configurado antes de usar esta função. Veja I2C1_Init.

Exemplo I2C1_Start ();

Protótipo unsigned short I2C1_Is_Idle (void);

Retorna Retorna 1 se o bus I2C é livre, caso contrário retorna 0. Descrição Testa se I2C bus está livre.

Requer I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Exemplo se (I2C1_Is_Idle ()) {...}

Protótipo vazio I2C1_Repeated_Start (void);

Retorna Nada. Descrição Questões repetidas START.

Requer I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Exemplo I2C1_Repeated_Start ();

CAPÍTULO 7 Bibliotecas

I2C1_Start

I2C1_Repeated_Start

I2C1_Is_Idle

I2C1_Rd

mikroC PRO para PIC

342

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

www.mecatronicadegaragem.blogspot.com

Page 430: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short I2C1_Wr (unsigned short data_);

Retorna Retorna 0 se não houve erros.

Descrição Envia byte de dados (parâmetros) através do barramento I2C.

Requer I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja I2C1_Start.

Exemplo I2C1_Write (0xA3);

Protótipo vazio I2C1_Stop (void);

Retorna Nada.

Descrição Problemas de sinal STOP.

Requer I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Exemplo I2C1_Stop ();

CAPÍTULO 7

mikroC PRO para PIC

I2C1_Wr

I2C1_Stop

Bibliotecas

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

343

www.mecatronicadegaragem.blogspot.com

Page 431: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este código demonstra o uso da biblioteca C eu ˛. PIC MCU está conectado (SCL, os pinos SDA) a EEPROM 24C02. Programa envia dados para EEPROM (os dados são gravados no endereço 2). Então, podemos ler os dados via I ˛ C da EEPROM e enviar seu valor para PORTB, para verificar se o ciclo foi bem sucedida (veja a figura abaixo como fazer a interface com PIC 24C02). vazio main () {

ANSEL = 0; ANSELH = 0; PORTB = 0; TRISB = 0;

/ / Configurar um pinos como I / O digital / / Configurar PORTB como saída

}

I2C1_Init (100000); I2C1_Start (); I2C1_Wr (0xA2); I2C1_Wr (2); I2C1_Wr (0xF0); I2C1_Stop ();

Delay_100ms (); I2C1_Start (); I2C1_Wr (0xA2); I2C1_Wr (2); I2C1_Repeated_Start (); I2C1_Wr (0xA3); PORTB I2C1_Rd = (0U); I2C1_Stop ();

/ / / / / / / / / / / / / / / / / / / / / / / / / /

inicializar comunicação I2C emitir sinal de início I2C enviar bytes via I2C (endereço do dispositivo + W) enviar bytes (endereço do local EEPROM) enviar dados (dados a serem escritos) emissão de sinal de paragem I2C emitir sinal de início I2C enviar bytes via I2C (dispositivo Endereço + W) enviar bytes (envio de dados) sinal questão de I2C repetidas início enviar (endereço do dispositivo + R) byte Leia os dados (não reconhece) emissão de sinal de paragem I2C

344

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

www.mecatronicadegaragem.blogspot.com

Page 432: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

Interface com PIC 24C02 via I2C

Bibliotecas

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

345

www.mecatronicadegaragem.blogspot.com

Page 433: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Keypad_Init (void);

Retorna Nada.

Descrição Inicializa porta para trabalhar com o teclado.

Requer

A variável global:

- keypadPort - Teclado porto

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

Exemplo

/ / Conexões teclado módulo char keypadPort em PORTD; / / Fim do teclado conexões do módulo ... Keypad_Init ();

As seguintes variáveis devem

ser definida em todos os

Descrição: Exemplo:

sfr extern char keypadPort;

Teclado Porto. char keypadPort em PORTD;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

TECLADO BIBLIOTECA

A mikroC PRO para PIC fornece uma biblioteca para trabalhar com 4x4 teclado. As rotinas de biblioteca pode também ser usado com 4x1, 4x2, 4x3 ou teclado. Para uma explicação conexões ver esquema no bot- Tom desta página.

As dependências externas do teclado Biblioteca

Rotinas da biblioteca

- Keypad_Init - Keypad_Key_Press - Keypad_Key_Click

Keypad_Init

346

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

www.mecatronicadegaragem.blogspot.com

Page 434: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char Keypad_Key_Click (void);

Retorna O código de uma tecla clicada (1 .. 16). Se nenhuma tecla for clicado, retorna 0.

Descrição

Chamar a atenção para Keypad_Key_Click é uma chamada de bloqueio: a função espera até que alguma tecla for pressionado e liberado. Quando liberado, a função retorna 1 a 16, dependendo a chave. Se mais de uma tecla é pressionada, simultaneamente, a função vai esperar até todas as teclas pressionadas são liberados. Depois que a função irá retornar o ódi d

Requer Porto precisa ser inicializado para trabalhar com a biblioteca do teclado, consulte

K d I it Exemplo

char kp; ... kp Keypad_Key_Click = ();

Protótipo char Keypad_Key_Press (void);

Retorna O código de uma tecla pressionada (1 .. 16). Se nenhuma tecla for pressionada, retorna 0.

Descrição Lê a tecla do teclado quando a chave fica pressionado.

Requer Porto precisa ser inicializado para trabalhar com a biblioteca do teclado, consulte K d I it

Exemplo char kp; ... kp Keypad_Key_Press = ();

CAPÍTULO 7

mikroC PRO para PIC

Keypad_Key_Press

Keypad_Key_Click

Bibliotecas

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

347

www.mecatronicadegaragem.blogspot.com

Page 435: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este é um exemplo simples do uso da Biblioteca do teclado. Ele suporta teclados com 1 .. 4 linhas e 1 .. 4 colunas. O código a ser devolvido pelo Keypad_Key_Click () função é na faixa a partir de 1 .. 16. Neste exemplo, o código retornado é transformado em ASCII Códigos [0 .. 9, A.. F] e exibido no LCD. Além disso, uma pequena de byte único dis-counter desempenha no segundo número de linha de LCD de teclas pressionadas. kp unsigned short, cnt, oldstate = 0; char txt [6];

/ / Conexões teclado módulo keypadPort char na PORTD; / / 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; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim do módulo LCD conexões

vazio main () {

cnt = 0; Keypad_Init (); Lcd_Init (); Lcd_Cmd (_LCD_CLEAR); Lcd_Cmd (_LCD_CURSOR_OFF); Lcd_Out (1, 1, "1");

/ / / / / / / / / /

Zerar contador Inicializar Teclado Inicializar Lcd O visor claro Cursor para fora

Lcd_Out (1, 1, "Key:"); Lcd_Out (2, 1, "Times:");

fazer {

kp = 0;

/ / Escreve o texto da mensagem no LCD / / Reset variável código-chave

/ / Espera tecla a ser pressionada e liberada fazer / Kp / = Keypad_Key_Press (); / / código da loja na variável-chave kp

kp = Keypad_Key_Click (); / / código da loja na variável-chave kp enquanto (Kp!);

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

www.mecatronicadegaragem.blogspot.com

Page 436: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC / / Valor Preparar switch (KP) {

Bibliotecas para a produção, transformação chave para o seu valor ASCII

/ / Case 10: kp keypad4x3

/ / Case 11: kp / / Case 12: kp / / Default: kp

= 42; break;

= 48; break; = 35; break; + = 48;

/ / '*' / Descomente / este bloco para

/ / '0 ' / / '#'

caso

caso caso caso caso caso caso caso caso

1: Kp = 49; break; / / 1 / Descomente para bloquear este keypad4x4 2: kp = 50; break; / 2 3: kp = 51; break; / 3 4: kp = 65; break; / / A 5: kp = 52; break; / 4 6: kp = 53; break; / / 5 7: kp = 54; break; / 6 8: kp = 66; break; / B 9: kp = 55; break; / / 7

caso 10: kp = 56; break; / / 8 caso 11: kp = 57; break; / / 9 caso 12: kp = 67; break; C / caso 13: kp = 42; break; / / * caso 14: kp = 48; break; / / 0 caso 15: kp = 35; break; / / # caso 16: kp = 68; break; D / /

}

se (Kp! Oldstate =) {/ / tecla pressionada difere da anterior

cnt = 1; oldstate = kp; }

mais {/ / Tecla pressionada é o mesmo que anterior cnt + +; }

}

Lcd_Chr (1, 10, kp);

se (Cnt == 255) {

cnt = 0; Lcd_Out (2, 10 ", }

WordToStr (txt CNT); Lcd_Out (2, 10, txt);

} enquanto (1);

/ / Mostra o valor ASCII chave em LCD / / Se contador estouro varialble "); / / Valor de Transformação contra a cadeia / / Valor expositor em LCD

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

349

www.mecatronicadegaragem.blogspot.com

Page 437: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

4x4 para conexão da HMI regime

mikroC PRO para PIC

350

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

www.mecatronicadegaragem.blogspot.com

Page 438: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida em todos os

projetos usando L d

Descrição: Exemplo:

sbit sfr extern LCD_RS:

Registre-line Select. sbit LCD_RS em RB4_bit;

sbit sfr extern LCD_EN:

Habilitar linha. sbit LCD_EN em RB5_bit;

sbit sfr extern LCD_D7;

Dados linha 7. sbit LCD_D7 em RB3_bit;

sbit sfr extern LCD_D6;

Dados de 6 linhas. sbit LCD_D6 em RB2_bit;

sbit sfr extern LCD_D5;

Dados de 5 linhas. sbit LCD_D5 em RB1_bit;

sbit sfr extern LCD_D4;

Os dados de 4 linhas. sbit LCD_D4 em RB0_bit;

sbit sfr extern LCD_RS_Direction;

Registre Selecione a direção

lfi t

sbit LCD_RS_Direction em TRISB4_bit;

sbit sfr extern LCD_EN_Direction;

Habilitar direção dos pinos. sbit LCD_EN_Direction em TRISB5_bit;

sbit sfr extern LCD_D7_Direction;

Dados de 7 pinos direção. sbit LCD_D7_Direction em TRISB3_bit;

sbit sfr extern LCD_D6_Direction;

Dados de 6 pinos de direção. sbit LCD_D6_Direction em TRISB2_bit;

sbit sfr extern LCD_D5_Direction;

Dados de 5 pinos de direção. sbit LCD_D5_Direction em TRISB1_bit;

sbit sfr extern LCD_D4_Direction;

Dados de 4 pinos de direção. sbit LCD_D4_Direction em TRISB0_bit;

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

LCD BIBLIOTECA

A mikroC PRO para PIC fornece uma biblioteca de comunicação com LCDs (com HD44780 controladores compatíveis) através do interface de 4 bits. Um exemplo de con-LCD nections é dada sobre o esquema na parte inferior desta página.

Para criar um conjunto de personagens personalizadas LCD usam LCD personalizado Personagem Tool.

Externas dependências da Biblioteca LCD

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

351

www.mecatronicadegaragem.blogspot.com

Page 439: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Lcd_Init ();

Retorna Nada. Descrição Inicializa o módulo LCD.

Requer

As variáveis globais: - LCD_D7: Dados bit 7 - LCD_D6: Dados bit 6 - LCD_D5: Dados bit 5 - LCD_D4: Os dados de 4 bits - LCD_RS: Registo Select (dados / instruções) pinos de sinal - LCD_EN: Habilitar sinal do pino - Direção do pino Dado 7: LCD_D7_Direction - Direção dos Dados de 6 pinos: LCD_D6_Direction - Direção dos Dados 5 pinos: LCD_D5_Direction - Direção dos Dados de 4 pinos: LCD_D4_Direction - LCD_RS_Direction: Direção do Registo Selecione pinos - LCD_EN_Direction: Direção do sinal Enable pin

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

Exemplo

/ / Configurações de pinagem Lcd sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D7 em RB3_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D4 em RB0_bit; / / Direção Pin sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D7_Direction em TRISB3_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D4_Direction em TRISB0_bit; ... Lcd_Init ();

CAPÍTULO 7 Bibliotecas

Rotinas da biblioteca

mikroC PRO para PIC

- - - - - -

Lcd_Init Lcd_Out Lcd_Out_Cp Lcd_Chr Lcd_Chr_Cp Lcd_Cmd

Lcd_Init

352

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

www.mecatronicadegaragem.blogspot.com

Page 440: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Lcd_Out (char linha, char coluna, char * Texto);

Retorna Nada.

Descrição

Imprime texto na tela LCD a partir de determinada posição. Ambas as variáveis string e-litro als pode ser passado como um texto.

Parâmetros:

- linha: número da linha de partida posição - coluna: número da coluna a partir posição Requer O módulo LCD deve ser inicializado. Veja rotina Lcd_Init.

Exemplo / / Escreve o texto "Olá!" no LCD a partir da linha 1, coluna 3: Lcd_Out (1, 3, "Olá!");

Protótipo vazio Lcd_Out_CP (char * Texto);

Retorna Nada.

Descrição

Imprime texto na tela LCD na posição atual do cursor. Ambas as variáveis e literais string pode ser passado como um texto.

Parâmetros:

t t texto a ser escrito Requer O módulo LCD deve ser inicializado. Veja rotina Lcd_Init.

Exemplo / / Escreve o texto "Aqui!" na posição atual do cursor: Lcd_Out_CP ("Aqui!");

CAPÍTULO 7

mikroC PRO para PIC

Lcd_Out

Lcd_Out_CP

Bibliotecas

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

353

www.mecatronicadegaragem.blogspot.com

Page 441: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Lcd_Chr (char linha, char coluna, char out_char);

Retorna Nada.

Descrição

Imprime caracteres em LCD na posição especificada. Ambas as variáveis e literais podem ser passado como um personagem.

Parâmetros:

- linha: escrito Posição de linha número - coluna: escrever o número da coluna posição i Requer O módulo LCD deve ser inicializado. Veja rotina Lcd_Init.

Exemplo / / Escreve caracter "i" na linha 2, coluna 3: Lcd_Chr (2, 3, 'i');

Protótipo vazio Lcd_Chr_CP (char out_char);

Retorna Nada.

Descrição

Imprime caracteres em LCD na posição atual do cursor. Ambas as variáveis e literais pode ser passado como um personagem.

Parâmetros:

t h caractere a ser escrito Requer O módulo LCD deve ser inicializado. Veja rotina Lcd_Init.

Exemplo / / Escrever "e" caractere na posição atual do cursor: Lcd_Chr_CP ('e');

CAPÍTULO 7 Bibliotecas

Lcd_Chr

Lcd_Chr_Cp

mikroC PRO para PIC

354

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

www.mecatronicadegaragem.blogspot.com

Page 442: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, retorna uma tela deslocado para sua posição original

i M d d RAM é f d LCD_CURSOR_OFF Desligue o cursor

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, sem alterar RAM exibir dados

LCD_SHIFT_RIGHT Shift direito de exibição sem alterar RAM exibição de dados

Protótipo vazio Lcd_Cmd (char out_char);

Retorna Nada.

Descrição

Envia comando para LCD.

Parâmetros:

- out_char: comando a ser enviado

Nota: Constantes pré-definidas podem ser passados para a função, consulte

Disponível LCD

Requer O módulo LCD deve ser inicializado. Veja a tabela Lcd_Init.

Exemplo / / Clear LCD: Lcd_Cmd (_LCD_CLEAR);

CAPÍTULO 7

mikroC PRO para PIC

Lcd_Cmd

Disponível Comandos LCD

Bibliotecas

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

355

www.mecatronicadegaragem.blogspot.com

Page 443: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD

char char char char

txt1 [] txt2 [] txt3 [] txt4 []

= = = =

"MikroElektronika"; "EasyPIC5"; "Lcd4bit"; "Exemplo";

char i;

vazio Move_Delay () {

Delay_ms (500); }

vazio main () {

TRISB = 0; PORTB = 0xFF; TRISB = 0xff; ANSEL = 0; ANSELH = 0; Lcd_Init ();

Lcd_Cmd (_LCD_CLEAR);

/ / Variável do laço / / Função usada para o texto em movimento / / Você pode alterar a velocidade de movimento aqui / / Configurar um pinos como I / O digital / / Inicializar LCD

/ / Exibe Limpar Lcd_Cmd (_LCD_CURSOR_OFF); Lcd_Out (1,6, txt3);

Lcd_Out (2,6, txt4); Delay_ms (2000); Lcd_Cmd (_LCD_CLEAR);

Lcd_Out (1,1, txt1); Lcd_Out (2,5, txt2);

/ Cursor / off / / Escreve o texto na primeira linha

/ / Escreve o texto na segunda linha / / Exibe Limpar / / Escreve o texto em primeiro linha / / Escreve o texto na segunda linha

356

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

www.mecatronicadegaragem.blogspot.com

Page 444: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Delay_ms (2000);

/ / Texto em Movimento for (i = 0; i <4; i + +) {/ / Move o texto à direita 4 vezes

Lcd_Cmd (_LCD_SHIFT_RIGHT); Move_Delay ();

}

Bibliotecas

while (1) {

for (i = 0; i <8; i + +) {

/ / Loop infinito / / Move o texto para a esquerda 7 vezes

Lcd_Cmd (_LCD_SHIFT_LEFT); Move_Delay ();

}

for (i = 0; i <8; i + +) {/ / Move o texto à direita 7 vezes

Lcd_Cmd (_LCD_SHIFT_RIGHT); Move_Delay ();

} }

}

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

357

www.mecatronicadegaragem.blogspot.com

Page 445: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

conexão HW

LCD conexão HW

mikroC PRO para PIC

358

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

www.mecatronicadegaragem.blogspot.com

Page 446: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida em todos os pro-

ECTS com Manchester Bibli d

Descrição: Exemplo:

sbit sfr extern MAN- RXPIN;

Receber linha. sbit MANRXPIN em RC0_bit;

sbit sfr extern MAN- TXPIN;

linha de transmissão. sbit MANTXPIN em RC1_bit;

sbit sfr extern MAN- RXPIN_Direction;

Direção do recebimento do

i

sbit MANRXPIN_Direction em TRISC0_bit;

sbit sfr extern MAN- TXPIN_Direction;

Direção do pino de transmissão. sbit MANTXPIN_Direction em TRISC1_bit;

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

MANCHESTER BIBLIOTECA DO CÓDIGO

A mikroC 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, cada bit codificado contém uma transição no ponto médio de um período de pouco, a direção da transição determina se o bit é 0 ou 1, 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).

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, byte é recebido, a sincronização alcançados, etc.)

Nota: Manchester biblioteca de código implementa atividades baseadas em tempo, por isso interrompe necessidade a ser desativado quando usá-lo.

As dependências externas do Manchester Code Library

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

359

www.mecatronicadegaragem.blogspot.com

Page 447: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int Man_Receive_Init ();

Retorna - 0 - Se a inicialização e sincronização foram bem sucedidas. - 1 - Após a sincronização sem êxito. - 255 - Aquando usuário abortar.

Descrição

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.

Nota: Em caso de múltiplos erros persistentes na recepção, o usuário deve chamar

esse

Requer

As variáveis globais:

MANRXPIN: Receber linha MANRXPIN_Direction: Direção do pino de recepção

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

Exemplo

/ / Inicializar Receptor sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; ... Man_Receive_Init ();

CAPÍTULO 7 Bibliotecas

Rotinas da biblioteca

mikroC PRO para PIC

- - - - - -

Man_Receive_Init Man_Receive Man_Send_Init Man_Send Man_Synchro Man_Break

As rotinas a seguir são para uso interno, compilador só:

- Manchester_0 - Manchester_1 - Manchester_Out

Man_Receive_Init

360

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

www.mecatronicadegaragem.blogspot.com

Page 448: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Man_Send_Init ();

Retorna Nada.

Descrição A função configura Transmissor pino.

Requer

As variáveis globais:

MANTXPIN: linha de transmissão MANTXPIN_Direction: Direção do pino de transmissão

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

Exemplo

/ / Inicializar do transmissor: sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; ... Man_Send_Init ();

Protótipo unsigned char Man_Receive (unsigned char * Erro);

Retorna Um byte ler a partir do sinal de entrada.

Descrição

A função extrai um byte a partir do sinal de entrada.

Parâmetros:

- erro: erro bandeira. Se o formato do sinal não coincide com o esperado, o erro pavilhão será definido como não-zero.

Requer Para utilizar esta função, o usuário deve preparar o MCU para o recebimento. Veja

Exemplo

unsigned char dados = 0, erro = 0; ... = dados Man_Receive (e erro); se (Erro)

{/ * Tratamento de erros /}

CAPÍTULO 7

mikroC PRO para PIC

Man_Receive

Man_Send_Init

Bibliotecas

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

361

www.mecatronicadegaragem.blogspot.com

Page 449: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Man_Send (unsigned char tr_data);

Retorna Nada.

Descrição

Envia um byte.

Parâmetros:

- tr_data: dados a serem enviados

Nota: Baud taxa utilizada é de 500 bps.

Requer Para utilizar esta função, o usuário deve preparar o MCU para o envio. Veja Man_Send_Init.

Exemplo unsigned char msg; ... Man_Send (msg);

Protótipo unsigned char Man_Synchro ();

Retorna - 255 - Se a sincronização não foi bem sucedida. - Metade do comprimento de bit manchester, expressas em múltiplos de 10us - a su-

i i ã d Descrição Medidas de metade do comprimento do bit manchester com resolução 10us.

Requer Para utilizar esta função, primeiro você deve preparar o MCU para o recebimento. Veja

Exemplo

unsigned int man__half_bit_len; ... man__half_bit_len Man_Synchro = ();

CAPÍTULO 7 Bibliotecas

Man_Send

Man_Synchro

mikroC PRO para PIC

362

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

www.mecatronicadegaragem.blogspot.com

Page 450: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Man_Break ();

Retorna Nada.

Descrição

Man_Receive está bloqueando a rotina e ele pode bloquear o fluxo do programa. Chame esse rotina de interrupção para desbloquear a execução do programa. Este mecanismo é sim- lhantes ao WDT.

Nota: As interrupções devem ser desativados antes de usar o Manchester

Requer Nada.

Exemplo

char data1, erro, contador = 0; vazio interrupção {

se (INTCON.T0IF) { se (Contador> = 20) {

Man_Break (); contador = 0; / / zerar o contador

} mais

contador + +; / / incrementa contador

INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupção

} } vazio main () {

OPTION_REG = 0x04; / prescaler TMR0 / set a 1:32

...

Man_Receive_Init ();

...

/ / Tenta Man_Receive com bloqueio de mecanismo de prevenção INTCON.GIE = 1 / / Global interrupção permitir INTCON.T0IE = 1 / / Enable estouro Timer0

interrupção data1 = Man_Receive (e erro); INTCON.GIE = 0; / / Global interrupção desativar

...

}

CAPÍTULO 7

mikroC PRO para PIC

Man_Break

Bibliotecas

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

363

www.mecatronicadegaragem.blogspot.com

Page 451: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca O código a seguir é o código para o receptor de Manchester, 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; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD / / Conexões Manchester módulo sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; / / Fim módulo Manchester conexões

char erro, ErrorCount, de temperatura; vazio main () {

ErrorCount = 0; ANSEL = 0; ANSELH = 0; TRISC.F5 = 0; Lcd_Init (); Lcd_Cmd (_LCD_CLEAR);

Man_Receive_Init ();

enquanto (1) {

/ / Configurar um pinos como I / O digital / / Inicializar LCD / / Clear LCD

/ / Inicializar Receptor / / Loop infinito

Lcd_Cmd (_LCD_FIRST_ROW);

/ / 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", veja o exemplo do Transmissor

break; / / Nós temos a seqüência de partida

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

www.mecatronicadegaragem.blogspot.com

Page 452: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC se (Erro)

/ / Saída para que não loop para sempre

Bibliotecas

break; }

fazer

{ temp = Man_Receive (& error) / / byte Tentativa receber se (Erro) {/ / Se o erro ocorreu

Lcd_Chr_CP ('?'); / / Escreve ponto de interrogação no LCD ErrorCount + + / / Update erro contra se (ErrorCount> 20) {/ / Em caso de vários erros

temp = Man_Synchro (); / / Tente sincronizar novamente / Man_Receive_Init / (); / Alternativa, tente ao inicializar

Receptor de novo ErrorCount = 0; / / erro Zerar contador }

} mais {/ / Nenhum erro ocorreu

se (Temp! = 0x0E) / / Se o byte "End" foi recebida (ver Transmissor exemplo)

Lcd_Chr_CP (temp) / / não escrever byte recebido em LCD }

Delay_ms (25); }

enquanto (Temp = 0x0E!); / Sair / Se byte "End" foi recebido do loop }

}

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

365

www.mecatronicadegaragem.blogspot.com

Page 453: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

O código a seguir é o código para o transmissor de Manchester, 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; sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; / / Fim conexões Manchester módulo

char índice, de caráter; char s1 [] = "mikroElektronika"; vazio main () {

Man_Send_Init ();

enquanto (1) {

Man_Send (0x0B); Delay_ms (100);

/ / Inicializar transmissor / / Loop infinito / / Enviar "start" byte / / Espera por um tempo

caracter = s1 [0]; = índice 0; enquanto (Personagem) {

Man_Send (personagem); Delay_ms (90); index + +; caracter = s1 [índice]; }

/ / / / / / / / / / / / / /

Tome primeiro char da string Inicializar variável índice String termina com zero Enviar caráter Aguarde um momento Incrementar variável índice Leve o próximo caractere da string

}

}

Man_Send (0x0E); Delay_ms (1000);

/ / Enviar "fim" byte

366

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

www.mecatronicadegaragem.blogspot.com

Page 454: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Exemplo de conexão

Conexão simples transmissor Simples Receptor conexão

Bibliotecas

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

367

www.mecatronicadegaragem.blogspot.com

Page 455: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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. cartões MMC são cur- atualmente disponível nos tamanhos até e incluindo 1 GB, e são usados em celulares, mp3 players, câmeras digitais e PDA's. mikroC PRO para PIC fornece uma biblioteca para acessar dados sobre Multi Media Card via SPI biblioteca communication.This também suporta cartões SD (Secure Digital) de memória. Secure Digital Card Secure Digital (SD) é um cartão de memória flash padrão, baseado na velha Multi Media Card (MMC) de formato. Os cartões SD estão atualmente disponíveis em tamanhos de até 2 GB, inclusive, e são usados em celulares, mp3 players, câmeras digitais, PDAs e. Notas:

- Biblioteca trabalha com a família PIC18 só; - A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar

SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. - Para MCUs com dois módulos SPI é possível inicializar ambos e

em seguida, mudar usando o SPI_Set_Active () rotina. - Rotinas para manipulação de arquivos só podem ser utilizados com sistema de arquivos FAT16. - Funções de biblioteca criar e ler arquivos no diretório raiz só; - Funções de biblioteca popular ambas as tabelas e FAT1 FAT2 ao escrever em arquivos, mas o arquivo de dados está a ser lido da tabela FAT1 só, ou seja, não há recuperação se FAT1 tabela está corrompido.

Nota: O módulo SPI tem de ser inicializado através SPI1_Init_Advanced rotina com os seguintes parâmetros:

- - - - - - -

Mestrado SPI Modo de 8bit prescaler primária 16 Escravo Selecione deficientes dados amostrados no meio de dados em tempo de saída relógio de marcha lenta 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, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH), Deve ser chamado antes de inicializar Mmc_Init.

368

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

www.mecatronicadegaragem.blogspot.com

Page 456: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis devem

ser definida em todos os

Descrição: Exemplo:

sbit sfr extern Mmc_Chip_Select;

Chip pinos de

l ã

sbit Mmc_Chip_Select em RC2_bit

sbit sfr extern Mmc_Chip_Select_Direction;

Direção da pinos selecionar chip

sbit Mmc_Chip_Select_Direction em TRISC2_bit;

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Nota: Uma vez o cartão MMC / SD é inicializado, o usuário poderá reinicializar SPI em maior velocidade. Veja o Mmc_Init e rotinas Mmc_Fat_Init.

As dependências externas do MMC Biblioteca

Rotinas da biblioteca

- - - - -

Mmc_Init Mmc_Read_Sector Mmc_Write_Sector Mmc_Read_Cid Mmc_Read_Csd

Rotinas para manipulação de arquivos:

- - - - - - - - - - - - -

Mmc_Fat_Init Mmc_Fat_QuickFormat Mmc_Fat_Assign Mmc_Fat_Reset Mmc_Fat_Read Mmc_Fat_Rewrite Mmc_Fat_Append Mmc_Fat_Delete Mmc_Fat_Write Mmc_Fat_Set_File_Date Mmc_Fat_Get_File_Date Mmc_Fat_Get_File_Size Mmc_Fat_Get_Swap_File

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

369

www.mecatronicadegaragem.blogspot.com

Page 457: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char Mmc_Init ();

Retorna - 0 - Se o cartão SD / MMC foi detectado e inicializado com sucesso - 1 - Caso contrário

Descrição Inicializa hardware de comunicação SPI; A função retorna 1 se MMC é presentes e com sucesso inicializado, caso contrário retorna 0. Mmc_Init precisa ser chamada antes de usar outras funções deste biblioteca.

Requer

As variáveis globais:

- Mmc_Chip_Select: Chip Selecionar linha - Direção do pino de Chip Select: Mmc_Chip_Select_Direction

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

Exemplo

/ / MMC módulo de conexões sbit sfr Mmc_Chip_Select em RC2_bit; sfr sbit Mmc_Chip_Select_Direction em TRISC2_bit; / / MMC módulo de conexões ... SPI1_Init (); = erro Mmc_Init (); / / linha de inicialização com o CS em RC2_bit

Protótipo unsigned char Mmc_Read_Sector (unsigned long sector, dbuff char *);

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

Descrição Função lê um setor (512 bytes) a partir do cartão MMC no endereço sector sector. Ler dados são armazenados na matriz de dados. A função retorna 0 se ler foi bem sucedida,

1 Requer Biblioteca precisa ser inicializado, veja Mmc_Init.

Exemplo = erro Mmc_Read_Sector (sector, dados);

CAPÍTULO 7 Bibliotecas

Mmc_Init

Mmc_Read_Sector

mikroC PRO para PIC

370

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

www.mecatronicadegaragem.blogspot.com

Page 458: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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.

Descrição Função grava 512 bytes de dados a MMC no endereço sector sector. 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);

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);

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);

CAPÍTULO 7

mikroC PRO para PIC

Mmc_Write_Sector

Mmc_Read_Cid

Mmc_Read_Csd

Bibliotecas

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

371

www.mecatronicadegaragem.blogspot.com

Page 459: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Mmc_Fat_Init ();

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

Descrição Inicializa cartão SD / MMC, lê SD / MMC setor de inicialização FAT16 e extratos necessá- dados necessárias necessários para a biblioteca. N C SD / MMC d f d FAT16 i d

Requer

As variáveis globais:

- Mmc_Chip_Select: Chip Selecionar linha - Direção do pino de Chip Select: Mmc_Chip_Select_Direction

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

O módulo de hardware adequado SPI deve ser previamente inicializada. Veja o SPI1_Init, rotinas SPI1_Init_Advanced.

Exemplo

/ / 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, 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); ... }

CAPÍTULO 7 Bibliotecas

Mmc_Fat_Init

mikroC PRO para PIC

372

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

www.mecatronicadegaragem.blogspot.com

Page 460: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

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

Descrição

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- tros são fornecidos, o rótulo será preenchido com espaços. Se a string null é passado volume não será identificado

Nota: Esta rotina pode ser utilizado em substituição ou em conjunto com

rou-Mmc_Fat_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.

Exemplo

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

/ / Formato e inicializar MMC / SD cartão e MMC_FAT16 biblioteca glob- 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); ... }

CAPÍTULO 7

mikroC PRO para PIC

Mmc_Fat_QuickFormat

Bibliotecas

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

373

www.mecatronicadegaragem.blogspot.com

Page 461: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Retorna - 1 - Se o arquivo já existe ou o arquivo não existe, mas novo arquivo é criado. - 0 - Se arquivo não existe e nenhum arquivo novo é criado.

Descrição

Atribui arquivo para operações de arquivo (ler, escrever, apagar ...). Todos os teatros arquivo subseqüente- ções será aplicado sobre o arquivo designado.

Parâmetros: - 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_arquivo.extensão). O nome do arquivo e extensão será automaticamente preenchido com espaços pela biblioteca, se tiverem menos de comprimento necessária ("mikro.tx", ou seja - ". mikro tx">), assim o usuário não faz tem que tomar cuidado com isso. 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 arquivo podem ser introduzida como string em maiúsculas de 11 bytes de comprimento, com nenhum ponto caráter entre o nome do arquivo e extensão (ie "MIKROELETXT" -> MIKROELE.TXT). Neste caso 3 últimos caracteres da string são considerados arquivos extensão.

- file_cre_attr: bandeiras e criação do arquivo attributs. Cada bit corresponde

a atribuíveis arquivo apropriado:

Requer MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo. Veja Mmc_Fat_Init.

Exemplo / / Cria arquivo com atribuíveis arquivo se ele já não existe Mmc_Fat_Assign ('MIKROELE.TXT, 0xA0);

Bit Másca

Descrição 0 0x01 Leia apenas 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

7 0x80 Arquivo bandeira criação. Se o arquivo não existe e este

sinalizador estiver definido, i ifi d á i d

CAPÍTULO 7 Bibliotecas

Mmc_Fat_Assign

mikroC PRO para PIC

374

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

www.mecatronicadegaragem.blogspot.com

Page 462: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Retorna Nada.

Descrição Procedimento redefine o ponteiro do arquivo (move para o início do arquivo) do atribuído arquivo, assim que o arquivo possa ser lido.

Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.

Exemplo Mmc_Fat_Reset (tamanho);

Protótipo vazio Mmc_Fat_Rewrite ();

Retorna Nada.

Descrição Procedimento redefine o ponteiro do arquivo e limpa o atribuído arquivo de dados para que novos

d i i Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.

Exemplo Mmc_Fat_Rewrite;

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

d d d d i Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.

Exemplo Mmc_Fat_Append;

CAPÍTULO 7

mikroC PRO para PIC

Mmc_Fat_Reset

Mmc_Fat_Rewrite

Mmc_Fat_Append

Bibliotecas

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

375

www.mecatronicadegaragem.blogspot.com

Page 463: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

Retorna Nada.

Descrição Procedimento escreve um pedaço de bytes (FData) para o arquivo atualmente atribuído, no

i d i d i Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign. Além disso, o ponteiro do

arquivo deve ser ini-

Exemplo Mmc_Fat_Write (txt, 255); Mmc_Fat_Write ('Olá mundo', 255);

Protótipo vazio Mmc_Fat_Delete ();

Retorna Nada.

Descrição Exclui atualmente atribuídos arquivo do cartão MMC / SD.

Requer MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo. Veja Mmc_Fat_Init. O arquivo deve ser atribuído anteriormente. Veja Mmc_Fat_Assign.

Exemplo / / Deletar o arquivo atual Mmc_Fat_Delete ();

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

Retorna Nada.

Descrição Processo lê o byte no qual o ponteiro aponta para o arquivo e armazena dados em dados de parâmetro. O ponteiro do arquivo aumenta automaticamente a cada chamada de

Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign. Além disso, o ponteiro do

arquivo deve ser ini- Exemplo Mmc_Fat_Read (mydata);

CAPÍTULO 7 Bibliotecas

Mmc_Fat_Read

Mmc_Fat_Delete

Mmc_Fat_Write

mikroC PRO para PIC

376

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

www.mecatronicadegaragem.blogspot.com

Page 464: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Mmc_Fat_Get_File_Date (unsigned int * Ano, unsigned short * Mês, unsigned short * Dia, unsigned short * horas, unsigned short * Min);

Retorna Nada.

Descrição Recupera a data ea hora para o arquivo selecionado. Segundos não estão sendo recuperado, uma vez que são escritas em incrementos de 2 seg.

Requer O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.

Exemplo

/ / Obtém Data / hora do arquivo não assinado anos; char dat, MNTH, horas, minutos; ... nome_arquivo = "MYFILEABTXT"; Mmc_Fat_Assign (nome_arquivo); Mmc_Fat_Get_File_Date (tvh, MNTH, dat, horas, minutos);

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.

Exemplo

/ / Obtém Data / hora do arquivo não assinado anos; char dat, MNTH, horas, minutos; ... file_name = "MYFILEXXTXT"; Mmc_Fat_Assign (nome_arquivo); mmc_size = Mmc_Fat_Get_File_Size;

Protótipo vazio Mmc_Fat_Set_File_Date (unsigned int ano, unsigned short mês, unsigned short dia, unsigned short horas, unsigned short minutos, unsigned short segundos);

Retorna Nada.

Descrição Grava timestamp sistema para um arquivo. Use essa rotina antes de cada gravar o arquivo; C á i i á d i d h id

Requer A arquivo deve ser atribuído, consulte Mmc_Fat_Assign. Além disso, o ponteiro do arquivo deve ser ini-

Exemplo / / 01 de abril de 2005, 18:07:00 Mmc_Fat_Set_File_Date (2005, 4, 1, 18, 7, 0);

CAPÍTULO 7

mikroC PRO para PIC

Mmc_Fat_Set_File_Date

Mmc_Fat_Get_File_Date

Mmc_Fat_Get_File_Size

Bibliotecas

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

377

www.mecatronicadegaragem.blogspot.com

Page 465: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned long Mmc_Fat_Get_Swap_File (unsigned long * Sectors_cnt char nome do arquivo, char file_attr);

Retorna - Número do setor de partida para o arquivo de swap recém-criado, se não foi o suficiente

espaço livre na Cartão SD / MMC para criar arquivos de tamanho necessário. D f

Descrição

Esta função é usada para criar um arquivo de swap de pré-nome e tamanho do MMC / SD. Se um arquivo com o nome especificado já existe na mídia, pesquisa consecutivos para setores irão ignorar setores ocupados por esse arquivo. Portanto, é recomenda-se apagar o arquivo 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 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. É objetivo principal da biblioteca 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_arquivo.extensão). O nome do arquivo e

t ã

CAPÍTULO 7 Bibliotecas

Mmc_Fat_Get_Swap_File

mikroC PRO para PIC

378

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 466: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Descrição

- file_attr: bandeiras e criação do arquivo attributs. Cada bit corresponde a apro- comeu atribuíveis ficheiro:

Bit Másca

Descrição 0 0x01 Leia apenas 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 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.

Exemplo

//-------------- 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); 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);

} }

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

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

379

www.mecatronicadegaragem.blogspot.com

Page 467: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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 escrever um texto e nova linha (alimentação de linha de retorno + transporte) 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 oi oi se eis se

= I & 0xF0; => Oi> 4; Oi + = '0 '; (Oi> '9 ') oi oi = 7; = (I & 0x0F) + '0 '; (Lo> '9 ') = lo lo 7;

/ / Nibble alto / / Nibble baixo

UART1_Write (oi); UART1_Write (eis);

}

vazio main () {

const char

FILL_CHAR 'm';

unsigned int i, SectorNo; char bit

mmc_error; data_ok;

ADCON1 | = 0x0F; CMCON | = 7;

/ / Inicializar UART1 módulo

/ / Configurar um pinos como digital / / Desligue comparadores

380

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

www.mecatronicadegaragem.blogspot.com

Page 468: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 469: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

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"); }

mikroC PRO para PIC

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

www.mecatronicadegaragem.blogspot.com

Page 470: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

interface MMC MMC vista traseira

Bibliotecas

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

383

www.mecatronicadegaragem.blogspot.com

Page 471: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

www.mecatronicadegaragem.blogspot.com

Page 472: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Ow_Reset (unsigned short * Porto, não assinado pino curto);

Retorna 0 DS1820, se estiver presente, e 1 caso não esteja presente.

Descrição Problemas sinal de reset OneWire para DS1820. Os parâmetros da porta e especificar o pino l li d DS1820 Requer Funciona com o Dallas DS1820 sensor de temperatura apenas.

Exemplo Para repor o DS1820 que está ligado ao pino RA5:

Ow_Reset (& PORTA, 5);

Protótipo unsigned short Ow_Read (unsigned short * Porto, unsigned short pinos);

Retorna Leitura de dados de um dispositivo externo sobre o barramento OneWire.

Descrição Lê um byte de dados através do barramento OneWire.

Requer Nada.

Exemplo unsigned short tmp; ... tmp Ow_Read = (& PORTA, 5);

Protótipo vazio Ow_Write (unsigned short * Porto, unsigned short pino, não assinado curto PAR);

Retorna Nada.

Descrição Grava um byte de dados do argumento ( par), através de ônibus OneWire.

Requer Nada.

Exemplo Ow_Write (& PORTA, 5, 0xCC);

CAPÍTULO 7

mikroC PRO para PIC

Ow_Reset

Ow_Read

Ow_Write

Bibliotecas

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

385

www.mecatronicadegaragem.blogspot.com

Page 473: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este exemplo lê a temperatura usando DS18x20 ligado ao pino PORTA.B5. Após a restauração, MCU obtém a temperatura do sensor e imprime no mostrador. Faça Certifique-se de linha de tração PORTA.B5-up e para desligar os LEDs PORTA. / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD

/ / Definir TEMP_RESOLUTION a resolução correspondente de usados DS18x20 sensor: / / 18S20: 9 (configuração padrão, pode ser 9,10,11, ou 12) / / 18B20: 12 const unsigned short TEMP_RESOLUTION = 9; char * Texto = "000.0000"; não assinado temp; vazio Display_Temperature (unsigned int temp2write) {

const unsigned short RES_SHIFT TEMP_RESOLUTION = - 8; char temp_whole; unsigned int temp_fraction;

/ / Verificar se a temperatura é negativa se (Temp2write & 0x8000) {

texto [0] = '-'; temp2write temp2write = ~ + 1; }

/ / Extrair temp_whole temp_whole temp2write => RES_SHIFT;

/ / Converte para caracteres temp_whole se (Temp_whole/100)

texto [0] = temp_whole/100 + 48; mais

texto [0] = '0 ';

386

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

www.mecatronicadegaragem.blogspot.com

Page 474: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

texto [1] =% (temp_whole/10) 10 + 48; texto [2] = temp_whole% 10 + 48;

/ / Extrair dezenas dígitos / / Extrair os dígitos

Bibliotecas

/ / Extrair temp_fraction e convertê-lo para unsigned int temp_fraction temp2write = <<(4-RES_SHIFT); temp_fraction & = 0x000F; temp_fraction *= 625; / / Converte para caracteres temp_fraction texto [4] = + temp_fraction/1000 48 / / Extrair milhares de dígitos texto [5] =% (temp_fraction/100) 10 + 48; / centenas / Extrato dígitos texto [6] =% (temp_fraction/10) 10 + 48; / dez / Extrair dígitos texto [7] =% temp_fraction 10 + 48; / os / Extrair dígitos / Temperatura / impressão em LCD Lcd_Out (2, 5, texto);

} vazio main () {

ANSEL = 0; / Configurar / AN pinos como I / O digital ANSELH = 0; Lcd_Init (); / / Inicializar LCD Lcd_Cmd (_LCD_CLEAR); / Clear LCD Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off Lcd_Out (1, 1, "Temperatura:"); / / Caractere grau Print, 'C' para Centigrades Lcd_Chr (2,13,223); / LCD exibe diferentes têm diferentes características

código para o grau / / Se você ver letra grega alfa tente digitar 178 ao invés de 223

Lcd_Chr (2,14, 'C');

//--- Loop principal fazer {

//--- Realizar a leitura da temperatura Ow_Reset (& PORTA, 5); Ow_Write (& PORTA, 5, 0xCC); Ow_Write (& PORTA, 5, 0x44); Delay_us (120);

Ow_Reset (& PORTA, 5); Ow_Write (& PORTA, 5, 0xCC); Ow_Write (& PORTA, 5, 0xBE);

/ / Sinal de reset Onewire / / SKIP_ROM comando Emissão / / Emita o comando CONVERT_T

/ / SKIP_ROM comando Emissão / / Comando Emissão READ_SCRATCHPAD

temp = Ow_Read (& PORTA, 5); temp = (Ow_Read (& PORTE, 5) <<8) + temp;

//--- Format eo resultado aparecer no visor LCD Display_Temperature (temp);

Delay_ms (500);

} enquanto (1); }

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

www.mecatronicadegaragem.blogspot.com

Page 475: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

Exemplo de conexão DS1820

mikroC PRO para PIC

388

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

www.mecatronicadegaragem.blogspot.com

Page 476: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida em todos os

projetos que utilizam P t

Descrição: Exemplo:

sbit sfr extern SPExpanderRST;

linha de reposição. SPExpanderCS: sbit em P1.B1;

sbit sfr extern SPExpanderCS;

Chip linha Select. SPExpanderRST: sbit em P1.B0;

sbit sfr extern SPExpanderRST_Direction;

Direção do pino de Reset. sbit SPExpanderRST_Direction em TRISC0_bit;

sbit sfr extern SPExpanderCS_Direction;

Direção do Chip Selecione pino.

sbit SPExpanderCS_Direction em TRISC1_bit

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

PORTO BIBLIOTECA EXPANDER

A mikroC PRO para PIC fornece uma biblioteca para comunicação com o do Microchip Porto Expander MCP23S17 via interface SPI. Conexões do MCU PIC compatível e MCP23S17 é dado no esquema na parte inferior desta página.

Nota: A Biblioteca não usar a porta Expander interrupções. Nota: O hardware apropriado módulo SPI deve ser inicializada antes de usar qualquer a biblioteca de rotinas Porto Expander. Consulte a Biblioteca SPI.

As dependências externas do Porto Expander Biblioteca

Rotinas da biblioteca

- - - - - - - - - - - - - - -

Expander_Init Expander_Read_Byte Expander_Write_Byte Expander_Read_PortA Expander_Read_PortB Expander_Read_PortAB Expander_Write_PortA Expander_Write_PortB Expander_Write_PortAB Expander_Set_DirectionPortA Expander_Set_DirectionPortB Expander_Set_DirectionPortAB Expander_Set_PullUpsPortA Expander_Set_PullUpsPortB Expander_Set_PullUpsPortAB

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

389

www.mecatronicadegaragem.blogspot.com

Page 477: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Expander_Init (char ModuleAddress);

Retorna Nada.

Descrição

Inicializa Porto Expander utilizando a comunicação SPI.

As configurações de porta Expander módulo:

- Hardware de endereçamento habilitada - Automática de endereços ponteiro de incremento (modo de byte) com deficiência - BANK_0 endereçamento de registro - Taxa de variação habilitado

Parâmetros:

- ModuleAddress: Port endereço de hardware Expander, ver esquema na final desta página

Requer

As variáveis globais:

- SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset

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

módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.

Exemplo

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

...

ANSEL = 0; Configurar / / AN pinos como I / O digital ANSELH = 0;

/ / Se a porta Expander Biblioteca utiliza o módulo SPI SPI1_Init (); / / Inicializa o módulo SPI usado com PortExpander Expander_Init (0); / / Inicializar Expander Porto

CAPÍTULO 7 Bibliotecas

Expander_Init

mikroC PRO para PIC

390

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 478: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char Expander_Read_Byte (char ModuleAddress, char RegAddress);

Retorna Byte lido.

Descrição

A função lê byte a partir de Port Expander.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, consulte esquemática na final desta página

- RegAddress: Endereço Port Expander do registo interno

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / Lê um byte do registo Porto expansor char read_data; ... read_data = Expander_Read_Byte (0,1);

Protótipo vazio Expander_Write_Byte (char ModuleAddress, char RegAddress, char Dados);

Retorna Nada.

Descrição

Rotina escreve um byte para Porto Expander.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, consulte esquemática na final desta página

- RegAddress: Endereço Port Expander do registo interno - Data_: dados a serem gravados

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / Escreve um byte para registrar o Expander do Porto Expander_Write_Byte (0,1, $ FF);

CAPÍTULO 7

mikroC PRO para PIC

Expander_Read_Byte

Expander_Write_Byte

Bibliotecas

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

391

www.mecatronicadegaragem.blogspot.com

Page 479: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char Expander_Read_PortA (char ModuleAddress);

Retorna Byte lido.

Descrição

A função lê byte da Porta Porta expansor.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Porta Porta expansor deve ser configurado como uma entrada. Veja Expander_Set_DirectionPortA e Expander_Set_DirectionPortAB rotinas.

Exemplo

/ / Ler um byte da Porta Porta expansor char read_data; ... Expander_Set_DirectionPortA (0,0 xFF); porta / expansor / set para ser introduzidas ... read_data = Expander_Read_PortA (0);

Protótipo char Expander_Read_PortB (char ModuleAddress);

Retorna Byte lido.

Descrição

A função lê bytes de PortB Porto expansor.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

PortB Porto expansor deve ser configurado como entrada. Veja Expander_Set_Direc- tionPortB Expander_Set_DirectionPortAB e rotinas.

Exemplo

/ / Ler um byte da PORTB Porto expansor char read_data; ... Expander_Set_DirectionPortB (0,0 xFF); / expansor / set's PORTB a entrada ... read_data = Expander_Read_PortB (0);

CAPÍTULO 7 Bibliotecas

Expander_Read_PortA

Expander_Read_PortB

mikroC PRO para PIC

392

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

www.mecatronicadegaragem.blogspot.com

Page 480: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int Expander_Read_PortAB (char ModuleAddress);

Retorna Palavra lida.

Descrição

A função lê a palavra a partir dos portos de Porto Expander. Porta leituras estão no maior byte do resultado. leituras PortB são o byte inferior do resultado.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, consulte esquemática na final desta página

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Porta Porta Expander e PortB devem ser configurados como entradas. Veja Expander_Set_DirectionPortA, Expander_Set_DirectionPortB e Expander_Set_DirectionPortAB rotinas.

Exemplo

/ / Ler um byte da Porta Porta Expander e PORTB unsigned int read_data; ... Expander_Set_DirectionPortAB (0,0 xFFFF); porta / expansor / set's e PORTB a entrada ... read_data = Expander_Read_PortAB (0);

Protótipo vazio Expander_Write_PortA (char ModuleAddress, char Data_);

Retorna Nada.

Descrição

A função escreve byte para a Porta do Porto expansor.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

- Data_: dados a serem gravados

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Porta Porta expansor deve ser configurado como saída. Veja Expander_Set_DirectionPortA Expander_Set_DirectionPortAB e rotinas.

Exemplo

/ / Escreve um byte no Porto PORTA expansor

... Expander_Set_DirectionPortA (0,0 x00); / expansor / set's porta de saída a ser ... Expander_Write_PortA (0, 0xAA);

CAPÍTULO 7

mikroC PRO para PIC

Expander_Read_PortAB

Expander_Write_PortA

Bibliotecas

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

393

www.mecatronicadegaragem.blogspot.com

Page 481: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Expander_Write_PortB (char ModuleAddress, char Data_);

Retorna Nada.

Descrição

A função escreve o byte para PortB Expander do Porto.

Parâmetros:

- ModuleAddress: Porto endereço de hardware expansor, ver esquema na final desta página

- Dados: dados a serem gravados

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

PortB Porto Expander deve ser configurado como saída. Veja Expander_Set_DirectionPortB Expander_Set_DirectionPortAB e rotinas.

Exemplo

/ / Escreve um byte para PORTB Porto expansor

... Expander_Set_DirectionPortB (0,0 x00); / expansor / set's PORTB a saída ... Expander_Write_PortB (0, 0x55);

CAPÍTULO 7 Bibliotecas

Expander_Write_PortB

Expander_Write_PortAB

mikroC PRO para PIC

Protótipo

Retorna

vazio Expander_Write_PortAB (char ModuleAddress, unsigned int Data_);

Nada.

A função escreve a palavra Porto expansor portos.

Parâmetros:

Descrição - ModuleAddress: Porto endereço de hardware Expander, ver esquema na

- Dados: dados a serem gravados. Os dados a serem gravados são passados em Porta Dados da

maior de bytes. Os dados a serem gravados para PortB são passados em byte inferior de Data

Porto Expander deve ser inicializado. Veja Expander_Init.

Requer

Exemplo

Porta Porta Expander e PortB devem ser configurados como saídas. Veja Expander_Set_DirectionPortA, Expander_Set_DirectionPortB e Expander_Set_DirectionPortAB rotinas. / / Escreve um byte para PORTA Porto Expander e PORTB ... Expander_Set_DirectionPortAB (0,0 x0000); / expansor / set's Porta e PORTB a saída ... Expander_Write_PortAB (0, 0xAA55);

394

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

www.mecatronicadegaragem.blogspot.com

Page 482: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Expander_Set_DirectionPortA (char ModuleAddress, char Data_);

Retorna Nada.

Descrição

A função define Porta Porta expansor direção.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

- Dados: dados a serem gravados para o registo direção Porta. Cada bit corresponde para os pinos do registo de Porta. bit Set configura o correspon-

ding pino como entrada. bit Cleared configura o pino correspondente como uma saída.

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / Set Port Expander do Porta a saída Expander_Set_DirectionPortA (0,0 x00);

Protótipo vazio Expander_Set_DirectionPortB (char ModuleAddress, char Data_);

Retorna Nada.

Descrição

A função define direção Port Expander do PORTB.

Parâmetros:

- ModuleAddress: Porto hardware Expander endereço, ver esquema na final desta página

- Dados: dados a serem gravados para o registo direção PortB. Cada bit corresponde para os pinos do registo PORTB. bit Set configura o correspon-

ding pino como entrada. bit Cleared configura o pino correspondente como uma saída

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / PORTB Set Port Expander para ser a entrada Expander_Set_DirectionPortB (0,0 xFF);

CAPÍTULO 7

mikroC PRO para PIC

Expander_Set_DirectionPortA

Expander_Set_DirectionPortB

Bibliotecas

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

395

www.mecatronicadegaragem.blogspot.com

Page 483: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Expander_Set_DirectionPortAB (char ModuleAddress, não assinado int Direção);

Retorna Nada.

Descrição

A função define Porta Porta Expander e direção PortB.

Parâmetros:

- ModuleAddress: Porto Expander endereço de hardware, ver esquema na final desta página

- Direção: dados a serem escritos aos registos direção. Dados a serem gravados para o Porta registo direção são passados em Direção de maior byte. Dados a serem por escrito à direcção PortB registo são passadas em byte inferior de Direção. Cada bit corresponde ao pino apropriado do registo Porta PortB /. bit Set configura o pino correspondente como uma entrada. bit Cleared configura o corres-

correspondente pino como saída.

Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / Porta Set Port Expander para ser produzido e PORTB a entrada Expander_Set_DirectionPortAB (0,0 x00FF);

Protótipo vazio Expander_Set_PullUpsPortA (char ModuleAddress, char Data_);

Retorna Nada.

Descrição

A função define Porta Porta expansora de puxar para cima / baixo resistores.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

- Dados: dados para a escolha de puxar para cima / baixo configuração resistores. Cada bit

corresponde ao pino apropriado do registo Porta. bit Set permite pull-up para o pino correspondente Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / Porta Set Port Expander de resistores pull-up Expander_Set_PullUpsPortA (0, 0xFF);

CAPÍTULO 7 Bibliotecas

Expander_Set_DirectionPortAB

Expander_Set_PullUpsPortA

mikroC PRO para PIC

396

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 484: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Expander_Set_PullUpsPortAB (char ModuleAddress, unsigned int Pullups);

Retorna Nada.

Descrição

A função define Port expansor Porta e PortB pull up / down resistores.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

- Pullups: dados para a escolha de puxar para cima / baixo configuração resistores. Porta puxe

up / down de configuração resistores é aprovada em byte de maior pullups. PortB puxe up / down de configuração resistores é passado byte inferior do pullups. Cada bit

d i i d d i t P t P tB / bit S t it Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / Set Port expansor PORTA e PORTB resistores pull-up Expander_Set_PullUpsPortAB (0, 0xFFFF);

Protótipo vazio Expander_Set_PullUpsPortB (char ModuleAddress, char Data_);

Retorna Nada.

Descrição

A função define PortB Porto expansor pull up / down resistores.

Parâmetros:

- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página

- Dados: dados para a escolha de puxar para cima / baixo configuração resistores. Cada bit

corresponde ao pino apropriado do registo PORTB. bit Set permite ll i d Requer Porto Expander deve ser inicializado. Veja Expander_Init.

Exemplo / / PORTB Set Port Expander de resistores pull-up Expander_Set_PullUpsPortB (0, 0xFF);

CAPÍTULO 7

mikroC PRO para PIC

Expander_Set_PullUpsPortB

Expander_Set_PullUpsPortAB

Bibliotecas

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

397

www.mecatronicadegaragem.blogspot.com

Page 485: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca O exemplo demonstra como se comunicar com Porto Expander MCP23S17. Note que os pinos de Porto Expander A2 A1 A0 estão ligados a GND tão Port Expander Endereço de hardware é 0. / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

unsigned char i = 0;

vazio main () {

ANSEL = 0; ANSELH = 0; TRISB = 0;

/ / Configurar um pinos como I / O digital

/ / Set PORTB como saída

PORTB = 0xFF;

/ / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander

/ / / /

Se a porta Expander Biblioteca utiliza o módulo SPI2 SPI2_Init (); / / Inicializar SPI módulo usado com PortExpander

Expander_Init (0);

/ / Inicializar Porto Expander

Expander_Set_DirectionPortA (0, 0x00);

PORTA / Expander Set / para

ser a saída

Expander_Set_DirectionPortB (0,0 xFF); PORTB / Expander Set / para ser

Entrada Expander_Set_PullUpsPortB (0,0 xFF); / / Set pull-ups para todos os

Expansor pinos PORTB

while (1) {/ / faz um loop infinito

Expander_Write_PortA (0, i + +) / / Escreva i para expansor PORTA PORTB = Expander_Read_PortB (0); PORTB / expansor de Ler e

escrevê-lo para LEDs Delay_ms (100);

}

}

398

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

www.mecatronicadegaragem.blogspot.com

Page 486: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

Porto Expander conexão HW

Bibliotecas

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

399

www.mecatronicadegaragem.blogspot.com

Page 487: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes vari- veis devem ser definidos em todos os

j t

Descrição: Exemplo:

sbit sfr extern PS2_Data;

PS / 2 linhas de dados. sbit PS2_Data em RC0_bit

sbit sfr extern PS2_Clock;

PS / 2 da linha de relógio. sbit PS2_Clock em RC1_bit;

sbit sfr extern PS2_Data_Direction;

Direcção do PS / 2 pinos de

d d

sbit PS2_Data_Direction em TRISC0_bit;

sbit sfr extern PS2_Clock_Direction;

Direcção do PS / pino do relógio

2

sbit PS2_Clock_Direction em TRISC1_bit;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

BIBLIOTECA PS / 2 A mikroC PRO para PIC fornece uma biblioteca para comunicação com o mercado comum PS / 2 para teclado. Nota: A biblioteca não utilizar interrupções para recuperação de dados, e requer a OSCIL- lator relógio para ser pelo menos 6MHz. Nota: Os pinos para que um teclado PS / 2 está conectado deve ser ligado ao resistores pull-up. Nota: Embora o PS / 2 é um barramento de comunicação bidirecional, esta biblioteca não fornece MCU para teclado de comunicação; por exemplo, pressionando a tecla Caps Lock não liga o Caps Lock LED. As dependências externas do PS / 2 Biblioteca Rotinas da biblioteca

- Ps2_Config - Ps2_Key_Read

400

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

www.mecatronicadegaragem.blogspot.com

Page 488: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Ps2_Config ();

Retorna Nada.

Descrição Inicializa o MCU para trabalhar com o teclado PS / 2.

Requer

As variáveis globais:

- PS2_Data: Dados linha de sinal - PS2_Clock: Relógio linha de sinal em - PS2_Data_Direction: Direção dos Dados pin - Direção do pino do relógio: PS2_Clock_Direction

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

Exemplo

sbit PS2_Data em RC0_bit; sbit PS2_Clock em RC1_bit; sbit PS2_Data_Direction em TRISC0_bit; sbit PS2_Clock_Direction em TRISC1_bit; ... Ps2_Config (); / / Init PS / 2 Keyboard

CAPÍTULO 7

mikroC PRO para PIC

Ps2_Config

Bibliotecas

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

401

www.mecatronicadegaragem.blogspot.com

Page 489: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Ps2_Key_Read (unsigned short * O valor, unsigned short * Especial, unsigned short * Pressionada);

Retorna - 1 se a leitura de uma tecla do teclado foi concluído com êxito - 0 Se nenhuma tecla foi pressionada

Descrição

A função recupera informações sobre a tecla pressionada.

Parâmetros:

- valor: mantém o valor da tecla pressionada. Para caracteres, algarismos, sinais de pontuação, e no espaço valor irá armazenar o código ASCII adequados. Rotina "Reconhece" a função da tecla Shift e Caps Lock, e se comporta apropriadamente. Para teclas de funções especiais Teclas de funções especiais ver tabela.

- especiais: é uma bandeira para teclas de função especial (F1, Enter, Esc, etc.) Se a tecla pressionada

é um desses i l será definido como 1 caso contrário 0

Requer PS / 2 para teclado precisa ser inicializado. Veja Ps2_Config rotina.

Exemplo

unsigned short keyData = 0 = 0 especiais, de baixo = 0; ... / / Pressione Enter para continuar: fazer {

se (Ps2_Key_Read (& keyData, e especial, E para baixo)) { se (Down & & (keyData == 16)) break;

} } enquanto (1);

CAPÍTULO 7 Bibliotecas

Ps2_Key_Read

mikroC PRO para PIC

402

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

www.mecatronicadegaragem.blogspot.com

Page 490: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Num Lock 29

Seta para esquerda 30

Seta para direita 31

Seta para cima 32

Seta para baixo 33

Escape 34

Tab 35

CAPÍTULO 7

mikroC PRO para PIC

Teclas de Função Especial

Bibliotecas

Key

F1

F2

F3

F4

F5

F6

F7

F8

F9

F10

F11

F12

Digite

Page Up

Page Down

Retrocesso

Inserir

Excluir

Windows

Ctrl

Shift

Alt

Print Screen

Pausa

Caps Lock

Fim

Início

Scroll Lock

Valor retornado

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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

www.mecatronicadegaragem.blogspot.com

Page 491: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este exemplo simples lê os valores das teclas pressionadas no teclado PS / 2 e envia-los via UART. unsigned short keyData = 0 = 0 especiais, de baixo = 0;

sbit sbit sbit

PS2_Data PS2_Clock PS2_Data_Direction

em RC0_bit; em RC1_bit; em TRISC0_bit;

sbit PS2_Clock_Direction em TRISC1_bit;

vazio main () {

ANSEL = 0; / / Configurar um pinos como I / O digital

ANSELH = 0;

UART1_Init (19200); / / Inicializa o módulo UART a 19200 bps Ps2_Config (); / / Init PS / 2 Keyboard Delay_ms (100); / / Aguarde teclado para terminar UART1_Write_Text ("Pronto");

fazer {

se (Ps2_Key_Read (& keyData, e especial, e para baixo)) { se (Down & & (keyData == 16)) {/ / Backspace

UART1_Write (0x08); } else if (Down & & (keyData == 13)) {/ / Enter

UART1_Write ('r'); / / envia o transporte voltar ao terminal USART / / Usart_Write ('n'); / / descomente esta linha se USART

terminal também espera avanço de linha / / Transição para nova linha

} else if (Baixo & &! Especiais & & keyData) {

UART1_Write (keyData); }

} Delay_ms (1); / debounce /

} enquanto (1); }

404

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

www.mecatronicadegaragem.blogspot.com

Page 492: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

Exemplo de conexão de teclado PS2

Bibliotecas

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

405

www.mecatronicadegaragem.blogspot.com

Page 493: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio PWM1_Init (long freq);

Retorna Nada.

Descrição

Inicializa o módulo PWM com razão de direito 0. Parâmetro freq é um PWM desejado frequência em Hz (ver dados do dispositivo folha para valores corretos em relação com FOSC).

Essa rotina deve ser chamada antes de usar outras funções de PWM Biblioteca.

Requer

MCU deve ter módulo CCP.

Nota: O cálculo do valor da freqüência de PWM é realizada pelo compilador,

como seria produzir um código relativamente grande, se feito a nível de biblioteca. Portanto o compilador precisa saber o valor do parâmetro em tempo de compilação

Exemplo Inicializar módulo PWM na 5KHz:

PWM1_Init (5000);

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

PWM BIBLIOTECA

módulo CCP está disponível com uma série de microcontroladores PIC. mikroC PRO para PIC biblioteca que fornece simplifica o uso de PWM HW Módulo.

Nota: Alguns MCUs têm vários módulos CCP. Para poder usar a rotina da biblioteca desejada CCP, basta alterar o número 1 no protótipo com o número adequado de módulo, ou seja, PWM2_Start ();

Rotinas da biblioteca

- - - -

PWM1_Init PWM1_Set_Duty PWM1_Start PWM1_Stop

PWM1_Init

406

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

www.mecatronicadegaragem.blogspot.com

Page 494: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio PWM1_Set_Duty (unsigned short duty_ratio);

Retorna Nada.

Descrição Define a relação direito PWM. Parâmetro direito assume valores de 0 a 255, onde 0 é 0%, 127 é de 50% e 255 é a razão de 100%. Outros valores específicos para a

l d

Requer MCU deve ter módulo CCP. PWM1_Init deve ser chamado antes de utilizar esta rotina.

Exemplo Ajuste a proporção direito a 75%:

PWM1_Set_Duty (192);

Protótipo vazio PWM1_Stop (void);

Retorna Nada.

Descrição Inicia PWM.

Requer MCU deve ter módulo CCP. PWM1_Init deve ser chamada antes de usar este rou- tine. PWM1_Start deve ser chamada antes de usar essa rotina, caso contrário terá nenhum efeito como o módulo de PWM não está funcionando.

Exemplo PWM1_Stop ();

Protótipo vazio PWM1_Start (void);

Retorna Nada. Descrição Inicia PWM. Requer MCU deve ter módulo CCP. PWM1_Init deve ser chamado antes de utilizar esta rotina. Exemplo PWM1_Start ();

CAPÍTULO 7

mikroC PRO para PIC

PWM1_Set_Duty

PWM1_Start

PWM1_Stop

Bibliotecas

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

407

www.mecatronicadegaragem.blogspot.com

Page 495: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca O exemplo a relação muda imposto sobre os pinos PWM RC1 e RC2 continuamente. Se o LED é ligados a estes pinos, você pode observar a mudança gradual da luz emitida. unsigned short current_duty, old_duty, current_duty1, old_duty1; vazio InitMain () {

ANSEL = 0; ANSELH = 0; PORTA = 255;

/ / Configurar um pinos como I / O digital

TRISA = 255; PORTB = 0; TRISB = 0; PORTC = 0; TRISC = 0; PWM1_Init (5000); PWM2_Init (5000);

/ / / / / / / / / / / / / /

configurar o PORTA conjunto PORTB a 0 PORTB designar conjunto PORTC a 0 PORTC designar Inicializar PWM1 Inicializar PWM2

pinos como entrada

pinos como saída pinos como saída módulo em 5KHz módulo em 5KHz

}

vazio main () {

InitMain (); current_duty = 16; current_duty1 = 16;

/ / Valor inicial para current_duty / / Valor inicial para current_duty1

PWM1_Start (); PWM2_Start (); PWM1_Set_Duty (current_duty); PWM2_Set_Duty (current_duty1);

/ / / / / / / /

início PWM1 início PWM2 Definir dever atual de PWM1 Conjunto atual dever de PWM2

enquanto (1) {/ / faz um loop infinito

se (RA0_bit) {/ / botão pressionado em RA0 Delay_ms (40); current_duty + +; / current_duty incremento / PWM1_Set_Duty (current_duty);

}

se (RA1_bit) {/ / botão de RA1 pressionado

Delay_ms (40); current_duty -; / current_duty / decremento PWM1_Set_Duty (current_duty);

}

se (RA2_bit) {/ / botão pressionado no RA2

Delay_ms (40); current_duty1 + +; / / incrementa current_duty1 PWM2_Set_Duty (current_duty1);

}

408

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

www.mecatronicadegaragem.blogspot.com

Page 496: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC se (RA3_bit) {/ / botão de RA3 pressionado

Delay_ms (40); current_duty1 -; / / decremento current_duty1 PWM2_Set_Duty (current_duty1);

}

Bibliotecas

Delay_ms (5);

/ / Desacelerar o ritmo mudar um pouco

} }

HW Conexão

demonstração PWM

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

409

www.mecatronicadegaragem.blogspot.com

Page 497: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

A variável seguinte deve ser definida em todos os pro- ECTS d RS 48

Descrição: Exemplo:

sfr extern sbit RS485_rxtx_pin;

Controle RS-485 Transmissão / recepção de operação Modo

sbit RS485_rxtx_pin em RC2_bit;

sbit sfr extern RS485_rxtx_pin_direc- ção;

Direção da RS-485 Transmissão / recepção de pinos

sbit RS485_rxtx_pin_direc- ção em TRISC2_bit;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

BIBLIOTECA RS-485 RS-485 é uma comunicação multiponto que permite que vários dispositivos para ser conectado ed a um barramento único. A mikroC PRO para PIC fornece um conjunto de rotinas de biblioteca para trabalho confortável com RS485 sistema usando Mestre / Escravo arquitetura. Mestre e Escravo pacotes de intercâmbio de informações. Cada um destes pacotes contém bytes de sincronização, CRC byte, byte de endereço e os dados. Cada escravo tem endereço único e recebe apenas pacotes que lhe foi dirigida. O escravo não pode nunca ini- tiate comunicação. É de responsabilidade do usuário para garantir que apenas um dispositivo transmite através de 485 ônibus em um tempo. A RS-485 rotinas exigem o módulo UART. Pins da UART precisa ser anexado ao transceptor RS-485, como LTC485 ou similares (veja esquema na parte inferior desta página). Nota: A biblioteca utiliza o módulo UART para a comunicação. O usuário deve inicial- ize o módulo UART adequado antes de utilizar a Biblioteca RS-485. Para MCUs com dois módulos UART é possível inicializar ambos e depois alternar usando o UART_Set_Active função. Veja as funções UART Biblioteca. constantes Biblioteca: - START = valor de byte 150 - Valor STOP byte = 169 - Endereço 50 é o endereço de broadcast para todos (Slaves pacotes que contém o endereço 50

será recebida por todos os escravos, exceto os escravos com endereços 150 e 169). Nota: Como alguns PIC18 MCUs têm múltiplas módulos UART, UART adequado módulo deve ser inicializado. Alternando entre módulos UART UART na biblioteca é feito pela função UART_Set_Active (módulo UART tem de ser previamente ini- tialized). As dependências externas da RS-485 Biblioteca

410

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

www.mecatronicadegaragem.blogspot.com

Page 498: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio RS485Master_Init ();

Retorna Nada.

Descrição Inicializa MCU como um Mestre de comunicação RS-485.

Requer

As variáveis globais:

RS485_rxtx_pin - Este pino é ligado à entrada DE RE / RS-485-transceiv er (ver esquema em baixo desta página). RE / controles sinal DE RS-485 transceptor modo de operação.

RS485_rxtx_pin_direction - Direção da RS-485 de transmissão / recepção do pino

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

necessidades módulo UART HW para ser inicializado. Veja UART1_Init.

Exemplo

/ / RS485 pinagem do módulo sbit RS485_rxtx_pin_direction em RC2_bit / / transmissão / recepção controle definido para PORTC.B2

/ / Direção Pin sbit RS485_rxtx_pin_direction em TRISC2_bit / / rxtx pino di- ção definida como produção

... UART1_Init (9600); / / inicializa o módulo UART RS485Master_Init (); / intialize MCU como um mestre para RS-485 comunicação

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

Bibliotecas

- - - - - -

RS485master_Init RS485master_Receive RS485master_Send RS485slave_Init RS485slave_Receive RS485slave_Send

RS485Master_Init

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

411

www.mecatronicadegaragem.blogspot.com

Page 499: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio RS485Master_Receive (char * Data_buffer);

Retorna Nada.

Descrição

Recebe mensagens de Escravos. As mensagens são multi-byte, essa rotina deve ser chamado para cada byte recebido.

Parâmetros: - data_buffer: 7 buffer de bytes para armazenar os dados recebidos, da seguinte forma: - dados [0 .. 2]: conteúdo da mensagem - dados [3]: número de bytes de mensagens recebidas, 1-3 - dados [4]: é fixado em 255 quando a mensagem é recebida - dados [5]: é definido como 255 se o erro ocorreu - dados [6]: endereço do escravo, que enviou a mensagem

A função ajusta automaticamente dados [4] e dados [5] sobre todos os recebidos mensagem. Estas bandeiras devem ser limpos por software.

Requer MCU deve ser inicializado como um Mestre de comunicação RS-485. Veja RS485master_Init.

Exemplo char msg [8]; ... RS485Master_Receive (msg);

Protótipo vazio RS485Master_Send (char * Data_buffer, char datalen, char Slave_address);

Retorna Nada.

Descrição

Envia mensagem para Slave (s). Formato de mensagem pode ser encontrado na parte inferior desta página.

Parâmetros:

- data_buffer: dados a serem enviados - datalen: número de bytes para transmissão. Valores válidos: 0 ... 3. E ( ) d

Requer MCU deve ser inicializado como um Mestre de comunicação RS-485. Veja RS485Master_Init. É de responsabilidade do usuário para garantir (por protocolo) que apenas um dispositivo envia d d t é d 485 ô ib t

Exemplo char msg [8]; ... / / Envia 3 bytes de dados para Escravo com endereço 0x12 RS485Master_Send (msg, 3, 0x12);

CAPÍTULO 7 Bibliotecas

RS485Master_Receive

RS485Master_Send

mikroC PRO para PIC

412

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

www.mecatronicadegaragem.blogspot.com

Page 500: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio RS485Slave_Init (char Slave_address);

Retorna Nada.

Descrição

Inicializa MCU como um escravo para comunicação RS-485.

Parâmetros:

- slave_address: Endereço do escravo

Requer

As variáveis globais:

RS485_rxtx_pin - Este pino é ligado à entrada DE RE / RS-485-transceiv er (ver esquema no final desta página). RE / controles sinal DE RS-485 transceptor modo de operação. Valores válidos: 1 (Para transmissão) e 0 (Para rece- ing)

RS485_rxtx_pin_direction - Direção da RS-485 de transmissão / recepção do pino

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

UART módulo HW precisa ser inicializado. Veja UART1_Init.

Exemplo

/ / Pinagem do módulo RS485 sbit RS485_rxtx_pin em RC2_bit / / transmissão / recepção de controle definido para PORTC.B2

/ / Direção Pin sbit RS485_rxtx_pin_direction em TRISC2_bit / / rxtx pino di- ção definida como produção

... UART1_Init (9600); / / inicializa o módulo UART RS485Slave_Init (160); / intialize MCU como um Escravo para comunicação RS-485 com o endereço 160

CAPÍTULO 7

mikroC PRO para PIC

RS485slave_Init

Bibliotecas

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

413

www.mecatronicadegaragem.blogspot.com

Page 501: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio RS485Slave_Receive (char * Data_buffer);

Retorna Nada.

Descrição

Recebe mensagens de Mestre. Se Escravo endereço e campo Mensagem endereço não correspondem, em seguida, a mensagem será descartada. As mensagens são multi-byte, de modo que este rotina deve ser chamado para cada byte recebido.

Parâmetros:

- data_buffer: 6 buffer de bytes para armazenar os dados recebidos, da seguinte forma: - dados [0 .. 2]: conteúdo da mensagem - dados [3]: número de bytes de mensagens recebidas, 1-3 - dados [4]: é fixado em 255 quando a mensagem é recebida - dados [5]: é fixados em 255 se o erro ocorreu

A função ajusta automaticamente d d [4] e d d [5] sobre todos os recebidos Requer MCU deve ser inicializado como um escravo para comunicação RS-485. Veja

RS485slave_Init.

Exemplo char msg [8]; ... RS485Slave_Read (msg);

CAPÍTULO 7 Bibliotecas

RS485slave_Receive

mikroC PRO para PIC

414

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

www.mecatronicadegaragem.blogspot.com

Page 502: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio RS485Slave_Send (char * Data_buffer, char datalen);

Retorna Nada.

Descrição

Envia uma mensagem para Master. Formato de mensagem pode ser encontrado na parte inferior desta página.

Parâmetros:

- data_buffer: dados a serem enviados ú d b t t i ã V l álid 0 3

Requer MCU deve ser inicializado como um escravo para comunicação RS-485. Veja RS485slave_Init. É de responsabilidade do usuário para garantir (por protocolo) que só um dispositivo envia dados por meio de 485 ônibus em um tempo.

Exemplo char msg [8]; ... / / Envia dois bytes de dados para o Mestre RS485Slave_Send (msg, 2);

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

RS485slave_Send

Exemplo Biblioteca

Esta é uma simples demonstração de RS485 Biblioteca rotinas de uso.

Master envia mensagem para Slave com o endereço 160 e aguarda uma resposta. O escravo aceita dados, incrementa e envia de volta para o Mestre. Mestre em seguida, faz o mesmo e envia incre- dados documentados de volta ao escravo, etc

Master exibe os dados recebidos em PORTB, enquanto o erro de receber (0xAA) e número de conse- comerciais e executivas tentativas mal sucedidas são exibidos na PORTD. exibe Escravo recebeu dados sobre PORTB, enquanto que o erro na recepção (0xAA) é exibido no PORTD. configurações de hardware, neste exemplo são feitas para o conselho EasyPIC5 e 16F887.

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

415

www.mecatronicadegaragem.blogspot.com

Page 503: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

RS485 código mestre:

mikroC PRO para PIC

char dat [10]; char i, j;

/ / Buffer para receving / envio de mensagens

sbit

rs485_rxtx_pin

em RC2_bit / / pino conjunto transcieve

sbit rs485_rxtx_pin_direction em TRISC2_bit / / pino conjunto transcieve direção

/ / Rotina de interrupção void interrupt () {

RS485Master_Receive (DAT); }

vazio main () {

tempo cnt = 0;

ANSEL = 0; ANSELH = 0;

/ / Configurar um pinos como I / O digital

PORTB PORTD TRISB TRISD

= = = =

0; 0; 0; 0;

UART1_Init (9600); Delay_ms (100);

RS485Master_Init (); dat [0] = 0xAA; dat [1] = 0xF0; dat [2] = 0x0F; dat [4] = 0; dat [5] = 0;

/ / inicializar o módulo UART1 / / Inicializa MCU como Mestre / / Garantir que a mensagem recebida bandeira é 0 / / Garantir que a bandeira de erro é de 0

dat [6] = 0;

RS485Master_Send (DAT, 1160);

PIE1.RCIE = 1; PIE2.TXIE = 0; INTCON.PEIE = 1; INTCON.GIE = 1;

/ / / / / / / /

permitir interrupção no UART1 receber desabilitar interrupção na transmissão UART1 habilitar interrupções periféricas habilitar todas as interrupções

enquanto (1) {

/ / sobre concluída mensagem válida receber / / Dados [4] está situado a 255

cnt + +;

416

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

www.mecatronicadegaragem.blogspot.com

Page 504: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

se (Dat [5]) {/ / se um erro detectado, o sinal que ele PORTD 0xAA = / / definindo portd para 0xAA

} se (Dat [4]) {/ / se a mensagem recebida com sucesso

cnt = 0; dat [4] = 0; / / Mensagem clara recebeu bandeira j = dat [3]; para (I = 1; i <= dat [3]; i + +) {/ / dados mostram a PORTB

PORTB = dat [i-1]; } / / Incremento recebeu dat [0] dat [0] = dat [0] 1 / / envia para o mestre Delay_ms (1); RS485Master_Send (DAT, 1160);

}

se (> Cnt 100000) { PORTD + +; cnt = 0; RS485Master_Send (DAT, 1160); se (PORTD> 10) / / se o envio falhou 10 vezes

RS485Master_Send (DAT, 1,50); / / envia mensagem em broadcast endereço

} }

/ / Função para ser devidamente ligados. }

RS485 código Slave:

char dat [9]; char i, j;

/ / Buffer para receving / envio de mensagens

sbit sbit

rs485_rxtx_pin em RC2_bit / / pino conjunto transcieve rs485_rxtx_pin_direction em TRISC2_bit / / pino conjunto transcieve

direção

/ / Rotina de interrupção void interrupt () { RS485Slave_Receive (DAT);

}

vazio main () {

ANSEL = 0; ANSELH = 0;

/ / Configurar um pinos como I / O digital

PORTB PORTD TRISB TRISD

= = = =

0; 0; 0; 0;

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

417

www.mecatronicadegaragem.blogspot.com

Page 505: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

UART1_Init (9600); Delay_ms (100); RS485Slave_Init (160);

dat [4] = 0; dat [5] = 0; dat [6] = 0;

PIE1.RCIE = 1; PIE2.TXIE = 0; INTCON.PEIE = 1; INTCON.GIE = 1;

mikroC PRO para PIC

/ / Inicializa UART1 módulo

/ / MCU Intialize como escravo, o endereço 160

/ / Assegura que essa bandeira mensagem recebida é de 0 / / Garantir que a mensagem recebida bandeira é 0 / / Garantir que a bandeira de erro é de 0

/ / Permitir interrupção no UART1 receber

/ / Desativar interrupção na transmissão UART1 / / Habilitar interrupções periféricas / / Habilitar todas as interrupções

enquanto (1) {

se (Dat [5]) {/ / se um erro detectado, o sinal pelo PORTD 0xAA = / / configuração portd para 0xAA dat [5] = 0;

} se (Dat [4]) {/ / após concluída mensagem válida receber

dat [4] = 0; / / dados [4] é definido como 0xFF j = dat [3]; para (I = 1; i <= dat [3]; i + +) {

PORTB = dat [i-1]; } dat [0] = dat [0] 1 / / incremento recebeu dat [0] Delay_ms (1); RS485Slave_Send (dat, 1) / / e enviá-lo para o mestre

} }

}

418

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

www.mecatronicadegaragem.blogspot.com

Page 506: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

Exemplo de interface PC para 8051 MCU via rede RS485 com LTC485 como Transceptor RS-485

Bibliotecas

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

www.mecatronicadegaragem.blogspot.com

Page 507: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Mensagem cálculos formato e CRC Q: Como é CRC checksum calculado sobre RS485 lado Mestre? START_BYTE = 0x96 / / 10010110 STOP_BYTE 0xa9 = / / 10101001

PACOTE: -------- START_BYTE 0x96 ENDEREÇO Datalen

mikroC PRO para PIC

[DATA1] [DATA2] [Data3]

/ / Se existe / / Se existe / / Se existe

CRC STOP_BYTE 0xa9

bits datalen ------------ bit7 = 1 mestre envia

0 escravo envia bit6 = 1 endereço foi XORed com 1, foi igual STOP_BYTE

0 endereço INALTERADO bit5 = 0 FIXO bit4 = 1 data3 (se existir) WS XORed com 1, START_BYTE ou STOP_BYTE

0 data3 (caso exista) inalterado Bit3 = 1 DATA2 (se existir) WS XORed com 1, START_BYTE ou STOP_BYTE

0 DATA2 (caso exista) inalterado bit2 DATA1 = 1 (se existir) WS XORed com 1,

A START_BYTE ou Foi igual a Foi igual a Foi igual A

START_BYTE ou STOP_BYTE 0 DATA1 (caso exista) inalterado

bit1bit0 = 0 a 3 número de bytes de dados ENVIAR

geração de CRC: ---------------- crc_send = Endereço ^ datalen; ^ Crc_send = dados [0]; / / se existe ^ Crc_send = dados [1]; / / se existe ^ Crc_send = dados [2] / / se existir crc_send = ~ crc_send; if ((crc_send == START_BYTE) | | (crc_send == STOP_BYTE))

crc_send + +;

Datalen <4 .. 0> pode NOTA:

não

ter

o

START_BYTE <4 .. 0>

ou

STOP_BYTE <4 .. 0> valores.

420

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

www.mecatronicadegaragem.blogspot.com

Page 508: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida em todos os

projetos que utilizam Software

Descrição: Exemplo:

sbit extern Soft_I2C_Scl; Soft I2C linha do

sbit Soft_I2C_Scl em RC3_bit;

sbit extern Soft_I2C_Sda; Soft I2C linha de dados. sbit Soft_I2C_Sda em RC4_bit;

sbit extern Soft_I2C_Scl_Direction;

Direção da Soft I2C pino do relógio.

sbit Soft_I2C_Scl_Direction em TRISC3_bit;

sbit extern Soft_I2C_Sda_Direction;

Direção da Soft Dados I2C pino.

sbit Soft_I2C_Sda_Direction em TRISC4_bit;

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

SOFTWARE DE BIBLIOTECA I ² C

A mikroC PRO para PIC fornece rotinas para a execução Software comunicação I2C- cação. Estas rotinas são independentes de hardware e pode ser usado com qualquer MCU. O Software biblioteca I2C permite que você use MCU como mestre em comunicação I2C. O modo multi-mestre não é suportado.

Nota: Esta biblioteca implementa as atividades baseadas em tempo, assim interrupções precisam ser dis- abled ao usar Software I2C.

Nota: Todas as funções do software I2C Biblioteca estão bloqueando chamadas funções (eles estão esperando para I2C linha do relógio para se tornar uma lógica).

Nota: Os pinos utilizados para a comunicação I2C Software deve ser ligado ao os resistores de pull-up. Desligar os LEDs ligados a estes pinos também podem ser necessário.

das dependências externas de Soft_I2C Biblioteca

Rotinas da biblioteca

- - - - - -

Soft_I2C_Init Soft_I2C_Start Soft_I2C_Read Soft_I2C_Write Soft_I2C_Stop Soft_I2C_Break

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

www.mecatronicadegaragem.blogspot.com

Page 509: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Soft_I2C_Init ();

Retorna Nada.

Descrição Configura o software I ˛ Módulo C.

Requer

As variáveis globais:

- Soft_I2C_Scl: Soft I ˛ linha do relógio C - Soft_I2C_Sda: Soft I ˛ C linha de dados - Soft_I2C_Scl_Pin_Direction: Direção da Soft I ˛ pino do relógio C - Soft_I2C_Sda_Pin_Direction: Direção da Soft Eu dados ˛ pino C

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

Exemplo

/ / Software conexões I2C sbit Soft_I2C_Scl em RC3_bit; sbit Soft_I2C_Sda em RC4_bit; sbit Soft_I2C_Scl_Direction em TRISC3_bit; sbit Soft_I2C_Sda_Direction em TRISC4_bit; / / Fim Software conexões I2C

... Soft_I2C_Init ();

Protótipo vazio Soft_I2C_Start (void);

Retorna Nada.

Descrição Determina se o barramento I2C é gratuito e as questões START.

Requer Software I2C deve ser configurado antes de usar esta função. Veja Soft_I2C_Init rotina.

Exemplo / / Problema START Soft_I2C_Start ();

CAPÍTULO 7 Bibliotecas

Soft_I2C_Init

Soft_I2C_Start

mikroC PRO para PIC

422

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

www.mecatronicadegaragem.blogspot.com

Page 510: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Soft_I2C_Write (unsigned data_ curto);

Retorna - 0 se não houvesse erros. - 1 se escrever colisão foi detectada no barramento C ˛.

Descrição

Envia dados byte através do barramento C ˛.

Parâmetros:

- Dados: dados a serem enviados

Requer Soft I ˛ C deve ser configurado antes de usar esta função. Veja Soft_I2C_Init rotina. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja Soft_I2C_Start rotina.

Exemplo unsigned short dados, o erro; ... = erro Soft_I2C_Write (dados); = erro Soft_I2C_Write (0xA3);

Protótipo unsigned short Soft_I2C_Read (unsigned int ack);

Retorna Um byte a partir do escravo.

Descrição

Lê um byte a partir do escravo.

Parâmetros:

- Ack: reconhecer parâmetro de sinal. Se o ack 0 == não reconhecer sinal será enviado após a leitura, caso contrário o reconhecer sinal será enviada.

Requer Soft I ˛ C deve ser configurado antes de usar esta função. Veja rotina Soft_I2C_Init. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja Soft_I2C_Start rotina.

Exemplo unsigned short ter; ... / / Ler os dados e enviar o not_acknowledge sinal ter = Soft_I2C_Read (0);

CAPÍTULO 7

mikroC PRO para PIC

Soft_I2C_Read

Soft_I2C_Write

Bibliotecas

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

423

www.mecatronicadegaragem.blogspot.com

Page 511: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Soft_I2C_Break (void);

Retorna Nada.

Descrição

Todas as funções do software I2C Biblioteca pode bloquear o programa fluxo (ver nota no topo desta página). Chamar essa rotina de interrupção irá desbloquear o programa de execu- ção. Este mecanismo é similar ao TSH.

Requer Nada.

Exemplo

/ / Software conexões I2C sbit Soft_I2C_Scl em RC0_bit; sbit Soft_I2C_Sda em RC1_bit; sbit Soft_I2C_Scl_Direction em TRISC0_bit; sbit Soft_I2C_Sda_Direction em TRISC1_bit; / / Fim Software conexões I2C

char contador = 0;

vazio interrupção {

se (INTCON.T0IF) { se (Contador> = 20) {

Soft_I2C_Break (); contador = 0; / / zerar o contador

} mais

contador + +; / / incrementa contador

INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupção

Protótipo vazio Soft_I2C_Stop (void);

Retorna Nada.

Descrição Problemas de sinal STOP.

Requer Soft I2C deve ser configurado antes de usar esta função. Veja rotina Soft_I2C_Init.

Exemplo / / Problema de sinal STOP Soft_I2C_Stop ();

CAPÍTULO 7 Bibliotecas

Soft_I2C_Stop

Soft_I2C_Break

mikroC PRO para PIC

424

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

www.mecatronicadegaragem.blogspot.com

Page 512: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

}

}

vazio main () {

OPTION_REG = 0x04;

/ / Prescaler TMR0 definir a 1:32

Bibliotecas

Exemplo

...

/ / Tenta Soft_I2C_Init com bloqueio de mecanismo de prevenção INTCON.GIE = 1 / / Global interrupt enable INTCON.T0IE = 1; / estouro Timer0 Habilitar interrupção Soft_I2C_Init (); INTCON.GIE = 0; / / Global interrupção desativar

...

}

Exemplo Biblioteca O exemplo demonstra Software I ˛ Biblioteca C rotinas de uso. O PIC MCU é conectado (SCL, SDA pinos) para PCF8583 RTC (relógio de tempo real). Programa lê data e tempo são lidos a partir do RTC e imprime na tela LCD.

char segundos, minutos, horas, dia, mês, ano; variáveis

/ / Software conexões I2C

/ Data / Global / hora

sbit Soft_I2C_Scl sbit Soft_I2C_Sda

em RC3_bit; em RC4_bit;

sbit Soft_I2C_Scl_Direction em TRISC3_bit; sbit Soft_I2C_Sda_Direction em TRISC4_bit; / / Fim Software conexões I2C

/ / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit;

sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit;

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

425

www.mecatronicadegaragem.blogspot.com

Page 513: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD

//--------------------- Lê a data ea hora da RTC (PCF8583) vazio Read_Time () {

Soft_I2C_Start (); Soft_I2C_Write (0xA0); Soft_I2C_Write (2); Soft_I2C_Start (); Soft_I2C_Write (0xA1);

/ / / / / / / / / /

Emissão sinal de partida Endereço PCF8583, ver ficha PCF8583 Início de endereço 2 Emissão repetidas sinal de partida Endereço PCF8583 para leitura R / W = 1

= segundos Soft_I2C_Read (1); Soft_I2C_Read minutos = (1); horas = Soft_I2C_Read (1); dia Soft_I2C_Read = (1); = mês Soft_I2C_Read (0); Soft_I2C_Stop ();

/ / / / / / / / / / / /

Leia segundo byte Leia minutos byte Leia horas byte Leia anos / byte dia Leia semana / mês byte Emissão de sinal de paragem

}

//-------------------- Formatos de data e hora vazio Transform_Time () {

segundos = ((segundo e 0xF0)>> 4) * 10 + (segundo & 0x0F); segundo Transform

minutos = ((minutos e 0xF0)>> 4) * 10 + (minutos & 0x0F); Transforme meses

horas = ((horas & 0xF0)>> 4) * 10 + (horas & 0x0F); Transforme horas

ano = (Dia & 0xC0)>> 6; Transforme anos

dia = ((dia & 0x30)>> 4) * 10 + (dia & 0x0F); Transforme dia

mês = * ((mes & 0x10)>> 4) 10 + (mes & 0x0F);

/ /

/ / / / / / / / / /

Transforme meses }

//-------------------- valores de saída para LCD vazio Display_Time () {

Lcd_Chr (1, 6, (dia / 10) + 48); / dez / Imprimir dígitos do dia

variável Lcd_Chr (1, 7, (dia 10%) + 48) / / oness Imprimir dígitos do dia

variável Lcd_Chr (1, 9, (mês / 10) + 48); Lcd_Chr (1,10 (% de 10 meses) + 48); Lcd_Chr (1,15, + 56 anos); / ano impressão / vaiable + 8

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

www.mecatronicadegaragem.blogspot.com

Page 514: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

(Início do ano 2008)

Bibliotecas

Lcd_Chr (2, 6, Lcd_Chr (2, 7, Lcd_Chr (2, 9, Lcd_Chr (2,10, Lcd_Chr (2,12, Lcd_Chr (2,13,

(Horas / (% Horas (Minutos (Minutos (Segundo (Segundo

10) 10) / 10) 10%) / 10) 10%)

+ +

+ + + +

48); 48); 48); 48); 48); 48);

}

//------------------ Init executa projetos em todo vazio Init_Main () {

TRISB = 0; PORTB = 0xFF; TRISB = 0xff; ANSEL = 0; / Configurar / AN pinos como I / O digital ANSELH = 0; Soft_I2C_Init (); / / Inicializar Soft comunicação I2C Lcd_Init (); / / Inicializar LCD Lcd_Cmd (_LCD_CLEAR); / Clear LCD Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off

Lcd_Out (1,1, "Data:");

/ / Preparar e saída de texto estático no LCD

Lcd_Chr (1,8 ,':'); Lcd_Chr (1,11 ,':'); Lcd_Out (2,1, "Time"); Lcd_Chr (2,8 ,':'); Lcd_Chr (2,11 ,':'); Lcd_Out (1,12, "200");

}

//----------------- Principal procedimento vazio main () {

Delay_ms (2000);

Init_Main ();

/ / Realizar a inicialização

enquanto (1) {

Read_Time (); Transform_Time (); Display_Time ();

/ / / / / / / /

loop infinito Leia o tempo de RTC (PCF8583) Formato de data e hora Preparar e aparecer no visor LCD

}

}

Delay_ms (1000);

/ / Espera um segundo

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

427

www.mecatronicadegaragem.blogspot.com

Page 515: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis deve ser definida em todos os

projetos que utilizam S ft

Descrição: Exemplo:

sbit sfr extern SoftSpi_SDI;

Dados em linha. sbit SoftSpi_SDI em RC4_bit;

sbit sfr extern SoftSpi_SDO;

Dados da linha de saída. sbit SoftSpi_SDO em RC5_bit;

sbit sfr extern SoftSpi_CLK;

linha do Relógio. sbit SoftSpi_CLK em RC3_bit;

sbit sfr extern SoftSpi_SDI_Direction;

Direção dos dados no pino. sbit SoftSpi_SDI_Direction em TRISC4_bit;

sbit sfr extern SoftSpi_SDO_Direction;

Direção da Saída de Dados do

pino

sbit SoftSpi_SDO_Direction em TRISC5_bit;

sbit sfr extern SoftSpi_CLK_Direction;

Direção do pino do relógio. sbit SoftSpi_CLK_Direction em TRISC3_bit;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Software Library SPI A mikroC PRO para PIC fornece rotinas para a execução Software comunicação SPI- cação. Estas rotinas são independentes de hardware e pode ser usado com qualquer MCU. O SPI Software Library fornece uma fácil comunicação com outros dispositivos através da SPI: Conversores A / D e D / A conversores, MAX7219 LTC1290, etc Biblioteca de configuração:

- - - - - -

SPI modo Master Relógio valor = 20 kHz. Dados amostrados no meio do intervalo. Relógio de baixo estado ocioso. Dados amostrados no meio do intervalo. Os dados transmitidos em baixa para a borda alta.

Nota: O software da Biblioteca SPI implementa atividades baseadas em tempo, por isso interrompe necessidade ser desativado quando usá-lo.

As dependências externas de software SPI Biblioteca

428

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

www.mecatronicadegaragem.blogspot.com

Page 516: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Soft_SPI_Init ();

Retorna Nada.

Descrição Configura e inicializa o software SPI módulo.

Requer

As variáveis globais:

- Chip_Select: Chip Selecionar linha - SoftSpi_SDI: Dados em linha - SoftSpi_SDO: Os dados de saída de linha - SoftSpi_CLK: Dados da linha de relógio - Chip_Select_Direction: Direção do pino de Chip Select - SoftSpi_SDI_Direction: Direção do Dados em pino - SoftSpi_SDO_Direction: Direção da Saída de dados pino - SoftSpi_CLK_Direction: Direção do pino do relógio de dados

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

Exemplo

/ / Software conexões SPI módulo sbit Chip_Select em RC0_bit; sbit SoftSpi_SDI em RC4_bit; sbit SoftSpi_SDO em RC5_bit; sbit SoftSpi_CLK em RC3_bit;

sbit Chip_Select_Direction em TRISC0_bit; sbit SoftSpi_SDI_Direction em TRISC4_bit; sbit SoftSpi_SDO_Direction em TRISC5_bit; sbit SoftSpi_CLK_Direction em TRISC3_bit; / / Fim Software conexões SPI módulo ... Soft_SPI_Init (); / Soft_SPI Init /

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

- Soft_Spi_Init - Soft_Spi_Read - Soft_Spi_Write

Soft_Spi_Init

Bibliotecas

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

429

www.mecatronicadegaragem.blogspot.com

Page 517: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Soft_SPI_Read (char sdata);

Retorna Byte recebido através do barramento SPI.

Descrição

Esta rotina executa três operações simultaneamente. Ele fornece o relógio para a Soft- barramento SPI ware, lê um byte e envia um byte.

Parâmetros:

d t d d i d Requer Soft SPI deve ser inicializada antes de usar esta função. Veja Soft_SPI_Init rotina.

Exemplo

unsigned short data_read; data_send char; ... / / Ler um byte e atribuí-lo a data_read variável / / (Byte data_send será enviado via SPI durante a operação de leitura ção) data_read = Soft_SPI_Read (data_send);

Protótipo vazio Soft_SPI_Write (char sdata);

Retorna Nada.

Descrição

Esta rotina envia um byte através do barramento SPI Software.

Parâmetros:

sdata: dados a serem enviados.

Requer Soft SPI deve ser inicializada antes de usar esta função. Veja rotina Soft_SPI_Init.

Exemplo / / Escreve um byte no barramento SPI Soft Soft_SPI_Write (0xAA);

CAPÍTULO 7 Bibliotecas

Soft_Spi_Read

Soft_SPI_Write

mikroC PRO para PIC

430

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

www.mecatronicadegaragem.blogspot.com

Page 518: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

Este código demonstra o uso de rotinas de biblioteca para a comunicação Soft_SPI. Além disso, Este exemplo demonstra a trabalhar com MCP4921 da Microchip 12-bit D / A converter- er.

/ / Módulo de conexões DAC sbit Chip_Select em RC0_bit; sbit SoftSpi_CLK em RC3_bit; sbit SoftSpi_SDI em RC4_bit; sbit SoftSpi_SDO em RC5_bit;

sbit Chip_Select_Direction em sbit SoftSpi_CLK_Direction em sbit SoftSpi_SDI_Direction em sbit SoftSpi_SDO_Direction em / / Fim módulo conexões DAC

unsigned int valor;

vazio InitMain () {

TRISC0_bit; TRISC3_bit; TRISC4_bit; TRISC5_bit;

TRISB0_bit = 1; TRISB1_bit = 1; Chip_Select = 1; Chip_Select_Direction = 0; Soft_SPI_Init ();

/ / / / / / / / / /

Definir como entrada pino RA0 Definir como entrada pino RA1 Desmarque DAC Definir CS # pino como saída Inicializar Soft_SPI

}

/ / Incrementa DAC (0 .. 4095) -> tensão de saída (0 .. Vref) vazio DAC_Output (unsigned int valueDAC) {

char temp;

Chip_Select = 0;

/ / Seleciona chip DAC

/ / Envia Byte alta temp = (valueDAC>> 8) & 0x0F; / Loja valueDAC [11 .. 8] para temp [3 .. 0] temp | = 0x30 / / Definir configuração DAC, consulte MCP4921 datasheet Soft_SPI_Write (temp) / / Envia o byte mais alto via Soft SPI

/ / Envia Byte Low temp = valueDAC; Soft_SPI_Write (temp);

Chip_Select = 1;

}

vazio main () {

/ / Loja valueDAC [7 .. 0] para temp [7 .. 0] / / Envia byte baixo via Soft SPI

/ / Deseleccionar chip DAC

ANSEL

= 0;

/ / Desliga entradas analógicas

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

431

www.mecatronicadegaragem.blogspot.com

Page 519: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

ANSELH = 0;

mikroC PRO para PIC

InitMain ();

value = 2048;

/ / Realizar a inicialização principal / / Quando iniciar o programa, o DAC dá / / Saída no mid-range

enquanto (1) {

se ((RA0_bit) & & (valor < 4095)) {

valor + +; }

mais { se ((RA1_bit) & & (valor> 0)) {

valor -; }

}

/ / Loop infinito / / Se o botão for pressionado RA0 / Valor do incremento / / / Se RA1 botão é pressionado / Valor / decremento

}

}

DAC_Output (valor); Delay_ms (1);

/ / Enviar valor para chip DAC / Devagar ritmo de repetição das teclas

432

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

www.mecatronicadegaragem.blogspot.com

Page 520: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Software Library UART

A mikroC PRO para PIC fornece rotinas para a execução do software UART com- de comunicação. Estas rotinas são independentes de hardware e pode ser usado com qualquer MCU. O UART Software Library fornece uma fácil comunicação com outros dispositivos através do protocolo RS232.

Nota: O Software biblioteca UART implementa atividades baseadas em tempo, de modo interrupções precisa ser desativado quando usá-lo.

Rotinas da biblioteca

- - - -

Soft_Uart_Init Soft_Uart_Read Soft_Uart_Write Soft_Uart_Break

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

433

www.mecatronicadegaragem.blogspot.com

Page 521: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char Soft_UART_Init (char * Porto, char rx_pin, char tx_pin, unsigned long baud_rate, char invertido);

Retorna - 2 - Taxa de erro, solicitou transmissão é muito baixa - 1 - Taxa de erro, solicitou transmissão é muito alta - 0 - Inicialização bem-sucedida

Descrição

Configura e inicializa o software do módulo UART.

Parâmetros:

- port: porta a ser utilizado. - rx_pin: define rx_pin a ser utilizado. - tx_pin: define tx_pin a ser utilizado. - baud_rate: taxa de transmissão a ser definido. Máxima taxa de transmissão depende da MCU

relógio e as condições de trabalho. - invertida: bandeira invertida de saída. Quando definido para um valor diferente de zero, inverteu a lógica

sobre o produto é usado.

rotinas de software UART uso rotineiro Delay_Cyc. Se solicitado taxa de transmissão é

muito baixa então calculado o parâmetro para a chamada Delay_Cyc exceeeds Delay_Cyc argumento intervalo

Requer Nada.

Exemplo

Isto irá iniciar o software UART e estabelecer a comunicação em 9600 bps:

char erro; ... = erro Soft_UART_Init (& PORTC, 7, 6, 14400, 0); / / Inicializar Soft UART em 9600 bps

CAPÍTULO 7 Bibliotecas

Soft_UART_Init

mikroC PRO para PIC

434

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

www.mecatronicadegaragem.blogspot.com

Page 522: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char Soft_UART_Read (char * Erro);

Retorna Byte recebido via UART.

Descrição

A função recebe um byte via software UART.

Esta é uma chamada de função de bloqueio (aguarda para o bit de início).

Programador pode desbloqueá-lo por chamando rotina Soft_UART_Break.

Parâmetros:

- Erro: Erro de bandeira. Código de erro é retornado através desta

variável.

Requer Software UART deve ser inicializado antes de usar esta função. Veja o Soft_UART_Init rotina.

Exemplo

char dados, o erro; ... / / Aguardar até que os dados são recebidos fazer

= dados Soft_UART_Read (e erro); enquanto (Erro);

/ / Agora podemos trabalhar com os dados: se (Dados) {...}

CAPÍTULO 7

mikroC PRO para PIC

Soft_UART_Read

Bibliotecas

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

435

www.mecatronicadegaragem.blogspot.com

Page 523: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Soft_UART_Break ();

Retorna Nada.

Descrição

Soft_UART_Read está bloqueando a rotina e ele pode bloquear o fluxo do programa. Chamada essa rotina da interrupção serão desbloquear a execução do programa. Este mecanis- nismo é similar ao TSH. N A i d d i d d S f UART

Requer Nada.

Exemplo

char data1, erro, contador = 0;

vazio interrupt () {

se (INTCON.T0IF) { se (Contador> = 20) { Soft_UART_Break (); contador = 0; / / zerar o contador

} mais contador + +; / / incrementa contador

INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupção

} }

Protótipo vazio Soft_UART_Write (char udata);

Retorna Nada.

Descrição Esta rotina envia um byte através do barramento UART Software.

Parâmetros: - udata: dados a serem enviados.

Requer Software UART deve ser inicializada antes de usar esta função. Veja o Soft_UART_Init rotina. Esteja ciente de que Durante a transmissão, software UART é incapaz de receber dados - protocolo de transferência de dados deve ser definida de tal forma a evitar a perda

Exemplo

char some_byte = 0x0A; ... / / Escreve um byte através Soft Uart Soft_UART_Write (some_byte);

CAPÍTULO 7 Bibliotecas

Soft_UART_Write

Soft_Uart_Break

mikroC PRO para PIC

436

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

www.mecatronicadegaragem.blogspot.com

Page 524: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

vazio main () {

OPTION_REG = 0x04;

Bibliotecas / / Prescaler TMR0 definir a 1:32

...

se (Soft_UART_Init (& PORTC, 7, 6, 9600, 0) = 0)

Soft_UART_Write (0x55);

Exemplo }

... / / Tenta Soft_UART_Read com bloqueio de mecanismo de prevenção INTCON.GIE = 1 / / Global interrupt enable INTCON.T0IE = 1; / estouro Timer0 Habilitar interrupção data1 = Soft_UART_Read (e erro); INTCON.GIE = 0; / / Global interrupção desativar

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

437

www.mecatronicadegaragem.blogspot.com

Page 525: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este exemplo demonstra a troca de dados via software simples UART. Se MCU é conectado ao PC, você pode testar o exemplo o mikroC PRO para PIC USART Ferramenta Terminal.

char i, erro, byte_read;

vazio main () {

ANSEL = 0; ANSELH = 0;

/ / Variáveis auxiliares / / Configurar um pinos como I / O digital

TRISB = 0x00; PORTB = 0;

/ / Set PORTB como saída (sinalização de erro)

/ / Nenhum erro

= erro Soft_UART_Init (& PORTC, 7, 6, 14400, 0); / / Inicializar Soft

UART em 9600 bps se (Erro> 0) {

PORTB erro = / / sinalizar erro Init while (1); / programa Stop

} Delay_ms (100);

para (I = 'z', i> = 'A'; i -) {/ / Enviar bytes de 'z' downto 'A'

Soft_UART_Write (i); Delay_ms (100);

}

while (1) {/ / faz um loop infinito

byte_read = Soft_UART_Read (& error) / / byte Leia, a seguir sinalizador de erro de teste

se (Erro) / / Se o erro foi detectado PORTB erro = / / sinal que a PORTB

mais Soft_UART_Write (byte_read) / / Se o erro não foi detectado,

byte de retorno ed, leia }

}

438

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 526: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Sound_Init (char * Snd_port, char snd_pin);

Retorna Nada.

Descrição

Configura o pino MCU apropriada para a geração do som.

Parâmetros:

- snd_port: endereço da porta de saída de som - snd_pin: pino de saída de som

Requer Nada.

Exemplo / / Inicializar o RD3 pino para reprodução de som Sound_Init (& PORTD, 3);

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

BIBLIOTECA DE SOM

A mikroC PRO para PIC fornece uma biblioteca de som para fornecer aos usuários rotinas necessárias para sinalização de som em suas aplicações. Produção de som precisa hardware adicional, como piezo-falante (exemplo de interface piezo-falante é dado no esquema no final deste página).

Rotinas da biblioteca

- Sound_Init - Sound_Play

Sound_Init

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

439

www.mecatronicadegaragem.blogspot.com

Page 527: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Sound_Play (unsigned freq_in_hz, não assinado duration_ms);

Retorna Nada.

Descrição

Gera o sinal de onda quadrada no pino adequado.

Parâmetros: - freq_in_Hz: freqüência do sinal em hertz (Hz) - duration_ms: duração do sinal em milissegundos (ms)

Nota: A faixa de freqüência é limitada pelo parâmetro Delay_Cyc. freqüência

máxima que pode ser produzido por esta função é Freq_max = FOSC / (80 * 3). fre-mínimo f üê i é i / ê i i i

Requer Para ouvir o som, você precisa de um alto-falante piezo (ou outro hardware) em des- signada porta. Além disso, você deve chamar Sound_Init preparar hardware para a saída antes usar essa função

Exemplo / Play sound / de 1KHz na duração de 100ms Sound_Play (1000, 100);

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Sound_Play

Exemplo Biblioteca

O exemplo é uma simples demonstração de como usar a biblioteca de som para tocar ing tons em um alto-falante piezo.

vazio Tone1 () { Sound_Play (659, 250);

}

vazio Tone2 () {

Sound_Play (698, 250); }

vazio Tone3 () {

Sound_Play (784, 250); }

/ / = Freqüência 659Hz, duração = 250ms / / = Freqüência 698Hz, tempo = 250ms / / = Freqüência 784Hz, tempo = 250ms

vazio Melody () {

Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone3 (); Tone3 ();

/ / Reproduz a "Casa Amarela" melodia

Tone3 (); Tone3 (); Tone3 (); Tone3 (); Tone3 (); Tone3 (); Tone3 (); Tone3 (); Tone2 (); Tone2 (); Tone1 ();

440

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

www.mecatronicadegaragem.blogspot.com

Page 528: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

}

vazio ToneA () {

Sound_Play (880, 50); } vazio Tonec () {

Sound_Play (1046, 50); } vazio Tonee () {

Sound_Play (1318, 50); }

vazio Melody2 () {

unsigned short i; para (I = 9; i> 0, i -) {

ToneA (); Tonec (); tonee (); }

}

vazio main () {

Bibliotecas

}

ANSEL = 0; ANSELH = 0; TRISB 0xF8 =; TRISD 0xF7 =;

Sound_Init (& PORTD, 3); Sound_Play (1000, 1000);

enquanto (1) {

se (Button (& PORTB, 7,1,1)) Tone1 ();

enquanto (PORTB e 0x80);

se (Button (& PORTB, 6,1,1))

Tone2 (); enquanto (PORTB e 0x40);

se (Button (& PORTB, 5,1,1))

Tone3 (); enquanto (PORTB e 0x20);

se (Button (& PORTB, 4,1,1))

Melody2 (); enquanto (PORTB e 0x10);

se (Button (& PORTB, 3,1,1))

Melody (); while (PORTB e 0x08);

}

/ / Configurar um pinos como I / O digital

/ Input / Configura RB7 .. RB3 como / RD3 Configure / como saída

/ / RB7 execuções Tone1

/ / Espera botão para ser liberado

/ / RB6 execuções Tone2

/ / Espera botão para ser liberado

/ / RB5 execuções Tone3

/ / Espera botão para ser liberado

/ / RB4 execuções Melody2

/ / Espera botão para ser liberado

/ / RB3 execuções Melody

/ / Espera botão para ser liberado

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

www.mecatronicadegaragem.blogspot.com

Page 529: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

Exemplo de uma biblioteca de sons sonnection

mikroC PRO para PIC

442

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

www.mecatronicadegaragem.blogspot.com

Page 530: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI1_Init (void);

Retorna Nada.

Descrição

Isso configura rotina e permite que o módulo SPI com as seguintes configurações:

- Modo Master - 8 de transferência de dados de bit - Bit mais significativo primeiro enviado - Relógio de série baixa quando ociosa - Os dados amostrados na borda - Serial clock = FOSC / 4

Requer Você necessidade PIC MCU com hardware SPI integrado.

Exemplo SPI1_Init (); / / Inicializa o módulo SPI com as configurações padrão

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

SPI BIBLIOTECA

módulo SPI está disponível com um número de modelos PIC MCU. mikroC PRO para PIC fornece uma biblioteca para inicializar o modo de trabalho escravo e confortável com o modo Master. PIC pode facilmente com- comunicar com outros dispositivos através SPI: conversores A / D, conversores D / A, MAX7219, LTC1290, etc Você precisa PIC MCU com hardware integrados SPI (por exemplo, PIC16F877).

Nota: PIC18 MCUs Alguns têm vários módulos SPI. Alternando entre os módulos IPS, no Biblioteca SPI é feito pela função SPI_Set_Active (módulo SPI tem de ser previamente inicializada).

Nota: Para usar o rotina da biblioteca SPI desejado, basta alterar o número 1 no protótipo com o número adequado de módulo, ou seja, SPI2_Init ();

Rotinas da biblioteca

- - - - -

Spi1_Init Spi1_Init_Advanced Spi1_Read Spi1_Write Spi_Set_Active

Spi_Init

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

443

www.mecatronicadegaragem.blogspot.com

Page 531: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI1_Init_Advanced (unsigned short master_slav, unsigned short data_sample, unsigned short clock_idle, unsigned short transmit_edge);

Retorna Nada.

Descrição

Configura e inicializa SPI. SPI1_Init ou SPI1_Init_Advanced precisa ser chamada antes de usar outras funções Biblioteca da SPI.

Parâmetros modo, data_sample e clock_idle configurar o módulo SPI, e pode ter os seguintes valores:

Requer Você precisa PIC MCU com hardware SPI integrado.

Exemplo

/ / Set SPI1 módulo para o modo mestre, dados do relógio = FOSC / 4, amostrados em meio do intervalo de baixo estado, relógio parado e dados trans- mitido em baixa para a borda alta: SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);

Descrição const biblioteca d fi id SPI modo de trabalho:

relógio mestre = FOSC / 4 _SPI_MASTER_OSC_DIV4

Master clock = Fosc/16 _SPI_MASTER_OSC_DIV16

Master clock = Fosc/64 _SPI_MASTER_OSC_DIV64

Mestre TMR2 fonte de relógio _SPI_MASTER_TMR2

Escravo selecionar habilitado _SPI_SLAVE_SS_ENABLE

Escravo selecione Desativado _SPI_SLAVE_SS_DIS

Dados intervalo de amostragem:

Os dados de entrada da amostra no meio do intervalo _SPI_DATA_SAMPLE_MID- DLE

Os dados de entrada da amostra no final do intervalo _SPI_DATA_SAMPLE_END

SPI estado relógio em repouso: Relógio de idle _SPI_CLK_IDLE_HIGH

Relógio de marcha lenta _SPI_CLK_IDLE_LOW

borda de transmissão: Transmite dados em baixa para a borda alta _SPI_LOW_2_HIGH

Dados transmitir em alta para baixa borda _SPI_HIGH_2_LOW

CAPÍTULO 7 Bibliotecas

Spi1_Init_Advanced

mikroC PRO para PIC

444

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

www.mecatronicadegaragem.blogspot.com

Page 532: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short SPI1_Read (unsigned short buffer);

Retorna Retorna os dados recebidos.

Descrição

Lê um byte do barramento SPI.

Parâmetros:

- buffer: dados fictícios para geração de clock (veja folha de dados

do dispositivo para a SPI

Requer Você precisa PIC MCU com hardware SPI integrado.

SPI deve ser inicializado e comunicação estabelecida antes de usar este fun- ção. Veja SPI1_Init_Advanced ou SPI1_Init.

Exemplo buffer curto tomar,; ... ter = SPI1_Read (buffer);

Protótipo vazio SPI1_Write (unsigned short data_);

Retorna Nada.

Descrição

Escreve byte através do barramento SPI.

Parâmetros:

- wrdata: dados a serem enviados

Requer Você precisa PIC MCU com hardware SPI integrado.

SPI deve ser inicializado e comunicação estabelecida antes de usar este fun- ção. Veja SPI1_Init_Advanced ou SPI1_Init.

Exemplo SPI1_Write (1);

CAPÍTULO 7

mikroC PRO para PIC

Spi1_Read

Spi1_Write

Bibliotecas

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

445

www.mecatronicadegaragem.blogspot.com

Page 533: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Set_Active (char (* Read_ptr) (char))

Retorna Nada.

Descrição

Define o módulo SPI ativos que serão usados pelas rotinas de SPI.

Parâmetros:

- read_ptr: SPI1_Read manipulador

Requer A rotina é disponível apenas para MCUs com dois módulos de SPI. Usado módulo SPI deve ser inicializada antes de usar esta função. Veja o SPI1_Init, SPI1_Init_Advanced

Exemplo SPI_Set_Active (& SPI2_Read) / / Define o SPI2 módulo activo

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

SPI_Set_Active

Exemplo Biblioteca

O código demonstra como usar o SPI biblioteca de funções para a comunicação entre o módulo de SPI do MCU e MCP4921 da Microchip 12-bit D / A converter

/ / Módulo de conexões DAC sbit Chip_Select em RC0_bit; sbit Chip_Select_Direction em TRISC0_bit; / / Fim módulo conexões DAC

unsigned int valor;

vazio InitMain () {

TRISB0_bit = 1; TRISB1_bit = 1; Chip_Select = 1; Chip_Select_Direction = 0; SPI1_Init ();

/ / Definir o pino RA0 como entrada / / Set RA1 pino como entrada / Deseleccionar / CAD / / CS Set # pino como saída / / Inicializar SPI módulo

}

/ / Incrementa DAC (0 .. 4095) -> tensão de saída (0 .. Vref) vazio DAC_Output (unsigned int valueDAC) {

char temp;

Chip_Select = 0;

/ / Seleciona chip DAC

/ / Envia Byte alta temp = (valueDAC>> 8) & 0x0F; / Loja valueDAC [11 .. 8] para temp [3 .. 0] temp | = 0x30 / / Definir configuração DAC, consulte MCP4921 datasheet SPI1_Write (temp) / / Envia o byte mais alto via SPI / / Envia Byte Low

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

www.mecatronicadegaragem.blogspot.com

Page 534: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

temp = valueDAC; SPI1_Write (temp);

Chip_Select = 1;

}

vazio main () {

ANSEL = 0; ANSELH = 0; InitMain ();

value = 2048;

enquanto (1) {

Bibliotecas / / Loja valueDAC [7 .. 0] para temp [7 .. 0] / / Envia byte baixo via SPI

/ / Deseleccionar chip DAC / / Realizar a inicialização principal / / Quando iniciar o programa, o DAC dá / / Saída no mid-range

/ / Loop infinito

}

}

se ((RA0_bit) & & (valor <4,095)) {

valor + +; }

mais { se ((RA1_bit) & & (valor> 0)) {

valor -; }

} DAC_Output (valor); Delay_ms (1);

/ / Se o botão for pressionado RA0 / Valor do incremento / / / Se RA1 botão é pressionado / Valor / decremento / / Enviar valor para DAC chip / Devagar ritmo de repetição das teclas

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

447

www.mecatronicadegaragem.blogspot.com

Page 535: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

SPI conexão HW

mikroC PRO para PIC

448

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 536: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

SPI biblioteca Ethernet

A ENC28J60 é um controlador Ethernet autônomo com um padrão da indústria Serial Peripheral Interface (SPI ™). Ele é projetado para servir de interface de rede Ethernet para qualquer controlador equipado com SPI.

A ENC28J60 atende a todos os padrões IEEE 802.3 especificações. Ele incorpora um número sistemas da filtragem de pacotes para limitar os pacotes de entrada. Ele também fornece um interno DMA módulo para transferência rápida de dados e hardware cálculo de checksum assistida IP ções. A comunicação com o controlador de host é implementada através de dois pinos de interrupção eo IPT, com taxas de dados de até 10 Mb / s. Dois pinos dedicados são utilizados para LED link e indicação de atividade da rede.

Esta biblioteca foi projetada para simplificar a manipulação do hardware subjacente (ENC28J60). Ele funciona com qualquer PIC com SPI integrado e mais de 4 Kb de memória ROM. 38 a 40 MHz de clock é recomendado para obter 8-10 relógio SPI Mhz, caso contrário PIC deve ser cronometrado pelo ENC28J60 saída do relógio devido ao seu erro de silício em hardware SPI. Se você tentar menor velocidade de relógio do PIC, pode haver placa travar ou perder algumas solicitações.

SPI biblioteca Ethernet suporta:

- O protocolo IPv4. - Requisições ARP. - ICMP echo requests. - Os pedidos UDP. - Os pedidos TCP (sem pilha, sem reconstrução de pacotes). - O cliente com cache ARP. - O cliente DNS. - UDP cliente. - O cliente DHCP. - Fragmentação do pacote não é suportado.

Nota: Devido a PIC16 / Flash RAM limitações biblioteca PIC16 NÃO tem ARP, DNS, UDP e suporte ao cliente DHCP implementado.

Nota: A variável biblioteca Global SPI_Ethernet_userTimerSec é usado para acompanhar tempo para todas as implementações do cliente (ARP, DNS, DHCP e UDP). É responsabilidade do usuário dade para aumentar esta variável a cada segundo em que o código se algum dos clientes é usado.

Nota: Para usuários avançados, existem arquivos de cabeçalho ("eth_enc28j60LibDef.h" e "Eth_enc28j60LibPrivate.h") em Utiliza \ P16 e P18 usa pastas \ do compilador com descrição de todas as rotinas e variáveis globais, relevantes para o usuário, implementar- ed na Biblioteca Ethernet SPI.

www.mecatronicadegaragem.blogspot.com

Page 537: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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

449

www.mecatronicadegaragem.blogspot.com

Page 538: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As rotinas a seguir deve ser definida em todos os projectos usando SPI

Bibli t Eth t

Descrição: Exemplo:

unsigned int SPI_Ethernet_UserTCP (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int localPort, unsigned int reqLength);

TCP manipulador de

solicitação

Consulte a biblioteca exemplo, no bot- Tom de esta página para execução de código ção

unsigned int SPI_Ethernet_UserUDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength);

UDP manipulador de

solicitação

Consulte a biblioteca exemplo, no bot- Tom desta página para execução de código ção

As seguintes variáveis deve ser definida em todos os

projetos usando SPI E h

Descrição: Exemplo:

sbit sfr extern SPI_Ethernet_CS

chip ENC28J60 pinos de

l ã

sbit SPI_Ethernet_CS na RC1_bit;

sbit sfr extern SPI_Ethernet_RST;

ENC28J60 pino de reset. sbit SPI_Ethernet_Rst na RC0_bit;

sbit sfr extern SPI_Ethernet_CS_Direc ção;

Direção do ENC28J60 pinos selecionar chip.

sbit SPI_Ethernet_CS_Direc ção em TRISC1_bit;

sbit sfr extern SPI_Ethernet_RST_Dire ç ã o;

Direção do ENC28J60 pino de reset.

sbit SPI_Ethernet_Rst_Dire ç ã o em TRISC0_bit;

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Nota: O hardware apropriado módulo SPI deve ser inicializada antes de usar qualquer o SPI biblioteca de rotinas Ethernet. Consulte a Biblioteca SPI. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. As dependências externas do SPI Ethernet Biblioteca

450

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

www.mecatronicadegaragem.blogspot.com

Page 539: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Rotinas da biblioteca

PIC16 e PIC18:

Bibliotecas

- - - - - - - - - - - - -

SPI_Ethernet_Init SPI_Ethernet_Enable SPI_Ethernet_Disable SPI_Ethernet_doPacket SPI_Ethernet_putByte SPI_Ethernet_putBytes SPI_Ethernet_putString SPI_Ethernet_putConstString SPI_Ethernet_putConstBytes SPI_Ethernet_getByte SPI_Ethernet_getBytes SPI_Ethernet_UserTCP SPI_Ethernet_UserUDP

Só PIC18:

- - - - - - - - - - -

SPI_Ethernet_getIpAddress SPI_Ethernet_getGwIpAddress SPI_Ethernet_getDnsIpAddress SPI_Ethernet_getIpMask SPI_Ethernet_confNetwork SPI_Ethernet_arpResolve SPI_Ethernet_sendUDP SPI_Ethernet_dnsResolve SPI_Ethernet_initDHCP SPI_Ethernet_doDHCPLeaseTime SPI_Ethernet_renewDHCP

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

451

www.mecatronicadegaragem.blogspot.com

Page 540: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_Init (unsigned char * Mac, unsigned char * Ip, unsigned char FullDuplex);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele inicializa ENC28J60 controlador. Esta função é internamente subdividida em 2 partes para ajudá-vinculador quando vem com pouca memória.

ENC28J60 configurações do controlador (parâmetros não mencionados aqui são definidos

como padrão):

- Recebe o endereço inicial do buffer: 0x0000. - Receber endereço final buffer: 0x19AD. - Transmitir o endereço inicial do buffer: 0x19AE. - Transmitir endereço final buffer: 0x1fff. - RAM buffer leitura / gravação ponteiros em modo auto-incremento. - Receber filtros definidos como padrão: CRC + MAC + MAC Unicast Broadcast no modo de OR. - Controle de fluxo com TX e RX pausa quadros em modo full duplex. - Quadros são preenchidos com 60 + bytes CRC. - Tamanho máximo do pacote é definido para 1518. - Back-to-Back-Inter Packet Gap: 0x15 em modo full duplex; 0x12 em modo half duplex. - Non-Back-to-Back-Inter Packet Gap: 0x0012 em modo full duplex; 0x0C12 em modo half duplex. - A janela de colisão é definido como 63 em modo half duplex para acomodar algumas - ENC28J60 revisões bugs silício. - Saída CLKOUT é desativado para reduzir a geração de EMI. - Loopback half duplex com deficiência. - LED de configuração: padrão (LEDA link-status, atividade LEDB-link).

Parâmetros:

ó i i t édi té d MAC álid

CAPÍTULO 7 Bibliotecas

Spi_Ethernet_Init

mikroC PRO para PIC

452

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

www.mecatronicadegaragem.blogspot.com

Page 541: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Requer

As variáveis globais:

- SPI_Ethernet_CS: Chip Selecionar linha - Direção do pino de Chip Select: SPI_Ethernet_CS_Direction - SPI_Ethernet_RST: linha de reset - Direção do pino de Reset: SPI_Ethernet_RST_Direction

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

O módulo SPI deve ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas.

Exemplo

# Define SPI_Ethernet_HALFDUPLEX 0 # Define um SPI_Ethernet_FULLDUPLEX

/ / ME ehternet pinagem NIC sbit sfr SPI_Ethernet_Rst em RC0_bit; sbit sfr SPI_Ethernet_CS em RC1_bit; sbit sfr SPI_Ethernet_Rst_Direction em TRISC0_bit; sbit sfr SPI_Ethernet_CS_Direction em TRISC1_bit; / / Fim ethernet NIC definições

unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} / / meu endereço MAC unsigned char myIpAddr = {192, 168, 1, 60} / / o meu IP addr

SPI1_Init (); SPI_Ethernet_Init (myIpAddr myMacAddr, SPI_Ethernet_FULLDUPLEX);

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

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

453

www.mecatronicadegaragem.blogspot.com

Page 542: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_Enable (unsigned char enFlt);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Esta rotina permite que o tráfego de rede apropriada no o ENC28J60 módulo por meio de ela receber filtros (unicast, multicast, broadcast, CDC). Tipo específico de tráfego de rede será ativado se uma correspondente pouco de parâmetro essa rotina de entrada está definido. Portanto, mais do que um tipo de rede- tráfego de trabalho pode ser ativada ao mesmo tempo. Para este efeito, pré biblioteca constantes (ver tabela abaixo) pode ser ORed para formar o valor de entrada apropriado.

Parâmetros: - enFlt: tráfego de rede / receber bandeiras filtro. Cada bit corresponde à dis- comeu o tráfego de rede / filtro de recepção:

Bit Descrição Máscara const biblioteca predefinidos

MAC tráfego Broadcast / filtro de recepção _SPI_Ethernet_BROAD-

0 0x01 pavilhão. Quando definido, MAC broadcast Traf- CAST fic será habilitado. MAC tráfego Multicast / filtro de recepção

_SPI_Ethernet_MULTI- 1 0x02 pavilhão. Quando definido, o tráfego multicast MAC CAST

será habilitado. 2 0x04 não utilizado nenhum

3 0x08 não utilizado none

4 0x10 não utilizado nenhum CRC marca de verificação. Quando definido, os pacotes

5 0x20 _SPI_Ethernet_CRC com o campo CRC inválido será descartado.

6 0x40 não utilizado nenhum MAC tráfego Unicast / filtro de recepção pavilhão.

7 0x80 Quando definido, o MAC será o tráfego unicast _SPI_Ethernet_UNICAST habilitado.

Nota: Advance filtragem disponíveis no ENC28J60 módulo, como Padrão Partida, Magic Packet e Hash Table não pode ser habilitado por esta rotina. Adicionalmente, todos os filtros, exceto CRC, habilitado com essa rotina vai funcionar no modo de OR, o que significa que o pacote será recebido se qualquer um dos filtros ativados aceita.

Nota: Esta rotina vai mudar configuração do filtro receber on the fly Não será no

CAPÍTULO 7 Bibliotecas

Spi_Ethernet_Enable

mikroC PRO para PIC

454

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

www.mecatronicadegaragem.blogspot.com

Page 543: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_Disable (unsigned char disFlt);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Esta rotina desabilita o tráfego de rede apropriada no o ENC28J60 módulo por meio de ela receber filtros (unicast, multicast, broadcast, CDC). Tipo específico de tráfego de rede será desativada se um correspondente pouco de parâmetro essa rotina de entrada está definido. Portanto, mais do que um tipo de rede- tráfego de trabalho pode ser desativado, ao mesmo tempo. Para este efeito, pré biblioteca constantes (ver tabela abaixo) pode ser ORed para formar o valor de entrada apropriado.

Parâmetros: - disFlt: tráfego de rede / receber bandeiras filtro. Cada bit corresponde a apro- tráfego de rede adequado / filtro de recepção:

biblioteca predefinidos

Descrição Mask Bit const MAC tráfego Broadcast / receber bandeira filtro. Quando Spi_Ethernet_BRO

0 0x01 conjunto, MAC tráfego de difusão será desativado. ADCAST MAC tráfego Multicast / receber bandeira filtro. Quando Spi_Ethernet_MUL

1 0x02 definido, o tráfego multicast MAC será desativado. TICAST

2 0x04 não utilizado none

3 0x08 não utilizado none

4 0x10 não utilizado none CRC marca de verificação. Quando definido, verificação de CRC será

5 0x20 ser desativado e pacotes com CRC inválido Spi_Ethernet_CRC campo serão aceitos.

6 0x40 não utilizado none

MAC tráfego Unicast / receber bandeira filtro. Quando Spi_Ethernet_UNI 7 0x80

conjunto, MAC tráfego unicast será desativado. CAST Nota: Advance filtragem disponíveis no ENC28J60 módulo, como Padrão Partida, Magic Packet e Hash Table não pode ser desativado por esta rotina.

Nota: Esta rotina vai mudar configuração do filtro receber on-the-fly. Não será, no l f ti / d ti b / t iti ló i l t

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.

Exemplo SPI_Ethernet_Enable (_SPI_Ethernet_CRC | _SPI_Ethernet_UNICAST); / / CRC permitir a verificação eo tráfego Unicast

CAPÍTULO 7

mikroC PRO para PIC

Spi_Ethernet_Disable

Bibliotecas

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

455

www.mecatronicadegaragem.blogspot.com

Page 544: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char SPI_Ethernet_doPacket ();

Retorna

- 0 - Mediante o processamento de pacotes de sucesso (zero pacotes recebidos ou recebidos

pacote processado com sucesso). - 1 - Aquando erro de recepção ou receber corrupção buffer. ENC28J60 controlador

precisa ser reiniciado. - 2 - O pacote recebido não foi enviado para nós (não o nosso IP, nem endereço de broadcast IP). R b d IP f i IP 4

Descrição

Esta é a rotina MAC do módulo. Ele processa o pacote recebido seguinte se existir. Os pacotes são processados da seguinte forma:

- Requisições ARP e ICMP são respondidas automaticamente. - Mediante pedido TCP é a função Spi_Ethernet_UserTCP Apelou a mais

processamento. - Mediante pedido UDP Spi_Ethernet_UserUDP a função é chamada para mais

processamento.

Nota: S i Eth t d P k t deve ser chamado o mais rápido possível no código do usuário Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo se (SPI_Ethernet_doPacket () == 0) (1) {/ / processo recebeu-pack ets

... }

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.

Exemplo SPI_Ethernet_Disable (_SPI_Ethernet_CRC | _SPI_Ethernet_UNICAST); / / verificação CRC desativar e tráfego Unicast

CAPÍTULO 7 Bibliotecas

Spi_Ethernet_doPacket

mikroC PRO para PIC

456

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

www.mecatronicadegaragem.blogspot.com

Page 545: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_putBytes (unsigned char * Ptr, unsigned char n);

Retorna Nada.

Descrição

Este é o módulo MAC rotina. Ele armazena o número solicitado de bytes em ENC28J60 RAM a partir de correntes ENC28J60 escrever localização (EWRPT) ponteiro.

Parâmetros:

- ptr: RAM tampão contendo bytes a ser escrito em ENC28J60 RAM. - n: número de bytes a ser escrito.

Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putBytes (buffer, 16); / / coloque em uma matriz de RAM buffer ENC28J60

Protótipo vazio SPI_Ethernet_putByte (unsigned char v);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele armazena um byte para endereço apontado pela corrente aluguel ENC28J60 escrever ponteiro (EWRPT).

Parâmetros:

valor para armazenar Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo char dados; ... SPI_Ethernet_putByte (dados) / / colocar um byte no buffer ENC28J60

CAPÍTULO 7

mikroC PRO para PIC

Spi_Ethernet_putByte

Spi_Ethernet_putBytes

Bibliotecas

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

457

www.mecatronicadegaragem.blogspot.com

Page 546: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_putConstBytes (const unsigned char * Ptr, não assinado char n);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele armazena o número de bytes solicitado em const ENC28J60 RAM a partir de correntes ENC28J60 escrever localização (EWRPT) ponteiro.

Parâmetros:

- ptr: buffer const contendo bytes a ser escrito em ENC28J60 RAM. ú d b i Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo const char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putConstBytes (buffer, 16); / / colocar um array em const ENC28J60 buffer

Protótipo unsigned int SPI_Ethernet_putString (unsigned char * Ptr);

Retorna Número de bytes escritos em ENC28J60 RAM.

Descrição

Esta é a rotina MAC do módulo. Ele armazena string todo (excluindo a terminação nula) em ENC28J60 RAM a partir de corrente ENC28J60 escrever localização (EWRPT) ponteiro.

Parâmetros:

- ptr: string a ser escrita em ENC28J60 RAM.

Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putString (buffer); / / coloque uma seqüência de RAM em ENC28J60 buffer

CAPÍTULO 7 Bibliotecas

Spi_Ethernet_putConstBytes

Spi_Ethernet_putString

mikroC PRO para PIC

458

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

www.mecatronicadegaragem.blogspot.com

Page 547: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int SPI_Ethernet_putConstString (const unsigned char * Ptr);

Retorna Número de bytes escritos em ENC28J60 RAM.

Descrição

Esta é a rotina MAC do módulo. Ele armazena string const todo (excluindo a terminação nula) em ENC28J60 RAM a partir de correntes ENC28J60 escrever localização (EWRPT) ponteiro.

Parâmetros:

t const string a ser escrita em ENC28J60 RAM Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo const char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putConstString (buffer); / / colocar um const string em buffer ENC28J60

Protótipo unsigned char SPI_Ethernet_getByte ();

Retorna Byte lido ENC28J60 RAM.

Descrição Esta é a rotina MAC do módulo. Ele busca um byte do endereço apontado pelo cur- l l i d l i (ERDPT) Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo char buffer; ... buffer = SPI_Ethernet_getByte (); / / lê um byte de ENC28J60 buffer

CAPÍTULO 7

mikroC PRO para PIC

Spi_Ethernet_putConstString

Spi_Ethernet_getByte

Bibliotecas

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

459

www.mecatronicadegaragem.blogspot.com

Page 548: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_getBytes (unsigned char * Ptr, unsigned int addr, unsigned char n);

Retorna Nada.

Descrição

Esta é a rotina MAC do módulo. Ele obtém o número de bytes de equested ENC28J60 RAM a partir de determinado endereço. Se o valor da 0xFFFF é passado como o parâmetro de endereço, a leitura terá início a partir atual ENC28J60 leia ponteiro (ERDPT) local.

Parâmetros:

- ptr: buffer para armazenamento de bytes lidos ENC28J60 RAM. - addr: ENC28J60 RAM endereço de início. Valores válidos: 0 .. 8192. - n: número de bytes a serem ler.

Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo char buffer [16]; ... SPI_Ethernet_getBytes (buffer, 0x100, 16); / / lê 16 bytes, a partir do endereço 0x100

CAPÍTULO 7 Bibliotecas

Spi_Ethernet_getBytes

mikroC PRO para PIC

460

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

www.mecatronicadegaragem.blogspot.com

Page 549: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int SPI_Ethernet_UserTCP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int localPort, unsigned int reqLength);

Retorna - 0 - Não deve haver uma resposta ao pedido. - Comprimento da TCP / resposta HTTP campo de dados - de outra forma.

Descrição

Esta é a rotina de módulo TCP. Ele é chamado internamente pela biblioteca. O acesso do

usuário es para o pedido de TCP / HTTP usando algumas das rotinas SPI_Ethernet_get. O usuário coloca os dados no buffer de transmissão usando alguns dos SPI_Ethernet_put rotinas. A função deve retornar o tamanho em bytes da resposta HTTP TCP / ou 0 se não há nada a transmitir. Se não há necessidade de responder ao TCP / HTTP pedidos, apenas definir esta função com retorno (0) como um única instrução.

Parâmetros:

- remoteHost : Endereço IP do cliente. - RemotePort : Porta TCP cliente. - localPort : Porta para que o pedido é enviado. - reqLength : TCP / solicitação HTTP comprimento do campo de dados.

Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo Essa função é chamado internamente pela biblioteca e não deve ser chamado pelo o ódi d á i

CAPÍTULO 7

mikroC PRO para PIC

Spi_Ethernet_UserTCP

Bibliotecas

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

461

www.mecatronicadegaragem.blogspot.com

Page 550: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned int SPI_Ethernet_UserUDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength);

Retorna - 0 - não deve haver uma resposta ao pedido. - Comprimento do campo de dados UDP resposta - outra forma.

Descrição

Esta é a rotina de módulo UDP. Ele é chamado internamente pela biblioteca. O acesso do usuário es para o pedido UDP usando alguns dos SPI_Ethernet_get rotinas. O usuário coloca os dados no buffer de transmissão usando algumas das rotinas SPI_Ethernet_put. A função deve retornar o tamanho em bytes da resposta UDP, ou 0 nada a se transmitir. Se você não precisa responder às solicitações UDP, basta definir esta função com um retorno (0) como única instrução.

Parâmetros: - remoteHost : Endereço IP do cliente. - RemotePort : Porta do cliente. - destPort : Porta para que o pedido é enviado. - reqLength : Pedido UDP comprimento do campo de dados.

Requer módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.

Exemplo Essa função é chamado internamente pela biblioteca e não deve ser chamado pelo código de usuário.

Protótipo unsigned char * SPI_Ethernet_getIpAddress ();

Retorna Ponter para a variável global exploração endereço IP.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar IP atribuído endereço. Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em que é buffer próprio endereço IP. Estes locais não devem ser alterados pelo usuário, em qualquer caso.

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo unsigned char endereçoip [4] / / endereço IP do usuário buffer ... memcpy (ipaddr, SPI_Ethernet_getIpAddress (), 4); / / recupera o endereço IP

CAPÍTULO 7 Bibliotecas

Spi_Ethernet_UserUDP

SPI_Ethernet_getIpAddress

mikroC PRO para PIC

462

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

www.mecatronicadegaragem.blogspot.com

Page 551: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char * SPI_Ethernet_getDnsIpAddress ()

Retorna Ponter para a variável global exploração DNS o endereço IP.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar atribuído endereço IP do DNS.

Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em seu próprio buffer DNS o endereço IP. Estes locais não devem ser alteradas pelo usuário, em qualquer caso.

Requer módulo Ethernet tem para ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo unsigned char dnsIpAddr [4]; / / user tampão DNS o endereço IP ... memcpy (dnsIpAddr, SPI_Ethernet_getDnsIpAddress (), 4); / / busca Endereço do servidor DNS

Protótipo unsigned char * SPI_Ethernet_getGwIpAddress ();

Retorna Ponter para a variável global exploração endereço IP do gateway.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar atribuído o endereço IP do gateway.

O usuário deve: Nota sempre copiar o endereço IP do local de RAM retornado por esta rotina em seu próprio gateway buffer endereço IP. Estes locais não devem ser alteradas pelo usuário, em qualquer caso!

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo unsigned char gwIpAddr [4]; / / user gateway buffer endereço IP ... memcpy (gwIpAddr, SPI_Ethernet_getGwIpAddress (), 4); / / recupera-gate endereço IP como

CAPÍTULO 7

mikroC PRO para PIC

SPI_Ethernet_getGwIpAddress

SPI_Ethernet_getDnsIpAddress

Bibliotecas

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

463

www.mecatronicadegaragem.blogspot.com

Page 552: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Ethernet_confNetwork (char * IPMask, char * GwIpAddr, char * DnsIpAddr);

Retorna Nada.

Descrição

Configura os parâmetros de rede (IP, máscara de sub-rede, endereço de gateway IP, DNS IP endereço) quando o DHCP está não utilizados.

Parâmetros: - IPMask: máscara de sub-rede IP. - gwIpAddr endereço IP do gateway. - dnsIpAddr: DNS o endereço IP.

Nota: Os parâmetros de rede acima mencionadas devem ser fixadas por esta

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo

char IPMask [4] = {255, 255, 255, 0}; / máscara de rede / (para exemplo: 255.255.255.0) char gwIpAddr [4] = {192, 168, 1, 1}; / gateway / (Roteador) endereço IP char dnsIpAddr [4] = {192, 168, 1, 1} / / IP do servidor DNS endereço ... SPI_Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr); / / set parâmetros de configuração de rede

Protótipo unsigned char * SPI_Ethernet_getIpMask ()

Retorna Ponter para a variável global exploração IP, máscara de sub-rede.

Descrição

Essa rotina deve ser utilizada quando o servidor DHCP está presente na rede para buscar máscara IP atribuídos.

Nota: O usuário deve sempre copiar o endereço IP do local de RAM

retornado

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo unsigned char IPMask [4] / / IP do usuário buffer máscara ... memcpy (IPMask, SPI_Ethernet_getIpMask (), 4); / / busca de sub-rede IP máscara

CAPÍTULO 7 Bibliotecas

SPI_Ethernet_getIpMask

SPI_Ethernet_confNetwork

mikroC PRO para PIC

464

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 553: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char * SPI_Ethernet_arpResolve (unsigned char * Ip, não assinado char tmax);

Retorna - Endereço MAC para trás o endereço IP - o endereço IP solicitado foi resolvido. - 0 - De outra forma.

Descrição

Esta é a rotina do módulo ARP. Ele envia uma solicitação ARP para determinado endereço IP e aguarda resposta ARP. Se o endereço IP solicitado foi resolvido, uma entrada de caixa ARP é usado para armazenar a configuração. dinheiro ARP pode armazenar até 3 entradas. Para ARP referem-se a estrutura de caixa "Eth_enc28j60LibDef.h" arquivo de cabeçalho na década de compilador Uses/P18 pasta.

Parâmetros:

- IP: endereço IP a ser resolvido. d

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo unsigned char IpAddr [4] = {192, 168, 1, 1} / / endereço IP ... SPI_Ethernet_arpResolve (IpAddr, 5); / / pega o endereço MAC por trás da acima do IP Endereço, aguarde 5 segundos para a resposta

CAPÍTULO 7

mikroC PRO para PIC

SPI_Ethernet_arpResolve

Bibliotecas

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

465

www.mecatronicadegaragem.blogspot.com

Page 554: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char SPI_Ethernet_sendUDP (unsigned char * DestIP, não assinado int sourcePort, unsigned int destPort, unsigned char * Pkt, não assinado int pktLen);

Retorna - 1 - Pacote UDP foi enviada com sucesso. - 0 - De outra forma.

Descrição

Esta é a rotina de módulo UDP. Ele envia um pacote UDP na rede.

Parâmetros:

- DestIP: endereço IP do host remoto. - sourcePort: porta de origem UDP local número. - destPort: destino número da porta UDP. - PKT: pacotes para transmitir. - pktLen: comprimento em bytes do pacote para transmitir.

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo

não assinado char IpAddr [4] = {192, 168, 1, 1} / / IP remoto endereço ... SPI_Ethernet_sendUDP (IpAddr, 10001, 10001, "Olá", 5); / / envia Olá mensagem para o endereço IP acima, de porta UDP 10001 para A porta UDP 10001

CAPÍTULO 7 Bibliotecas

SPI_Ethernet_sendUDP

mikroC PRO para PIC

466

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

www.mecatronicadegaragem.blogspot.com

Page 555: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char * SPI_Ethernet_dnsResolve (unsigned char * Host, unsigned char tmax);

Retorna - Ponteiro para o local onde o endereço IP - o nome do host solicitado foi resolvido. - 0 - De outra forma.

Descrição

Este é o DNS módulo de rotina. Ele envia um pedido DNS para determinado nome

de host e aguarda resposta do DNS. Se o nome do host solicitado foi resolvido, o seu endereço IP é armazenado na variável global biblioteca e um ponteiro que contém este endereço é retornado por a rotina. UDP porta 53 é usada como porta de DNS.

Parâmetros:

-Host: nome do host para ser resolvido. -Tmax: tempo em segundos para esperar por uma resposta.

Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina

aguarda DNS O d d d l d

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo

unsigned char * RemoteHostIpAddr [4] / / endereço IP do host do usuário buffer ... / / Servidor SNTP: / Zurique / Suíça: Laboratório de Sistemas Integráveis, da Suíça Fed. Inst. de Tecnologia / / 129.132.2.21: swisstime.ethz.ch / / Área de serviço: Suíça e Europa memcpy (remoteHostIpAddr, SPI_Ethernet_dnsResolve ("swisstime.ethz.ch", 5), 4);

CAPÍTULO 7

mikroC PRO para PIC

SPI_Ethernet_dnsResolve

Bibliotecas

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

467

www.mecatronicadegaragem.blogspot.com

Page 556: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char SPI_Ethernet_initDHCP (unsigned char tmax);

Retorna - 1 - Parâmetros de rede foram obtidos com sucesso. - 0 - De outra forma.

Descrição

Esta é a rotina de módulo de DHCP. Ele envia um pedido DHCP para os parâmetros de rede (IP, gateway, DNS e endereços IP, máscara de sub-rede) e aguarda resposta de DHCP. Se os parâmetros solicitados foram obtidos com sucesso, seus valores são armazenados em a biblioteca de variáveis globais.

Estes parâmetros podem ser obtidos através da utilização adequada biblioteca IP

começar rotinas:

- SPI_Ethernet_getIpAddress - buscar o endereço IP. - SPI_Ethernet_getGwIpAddress - buscar endereço IP do gateway. - SPI_Ethernet_getDnsIpAddress - buscar DNS o endereço IP. - SPI_Ethernet_getIpMask - buscar IP, máscara de sub-rede.

Porta UDP 68 é usado como um cliente DHCP e porta UDP 67 é usado como serv DHCP er porta.

Parâmetros:

- Tmax: tempo em segundos para esperar por uma resposta.

Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo ... SPI_Ethernet_initDHCP (5); / / obter a configuração de rede DHCP servidor, aguarde 5 segundos para a resposta ...

CAPÍTULO 7 Bibliotecas

SPI_Ethernet_initDHCP

mikroC PRO para PIC

468

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

www.mecatronicadegaragem.blogspot.com

Page 557: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char SPI_Ethernet_renewDHCP (unsigned char tmax);

Retorna - 1 - Em caso de sucesso (tempo de concessão foi renovada). - 0 - De outra forma (pedido de renovação expirou).

Descrição

Esta é a rotina de módulo de DHCP. Ele envia concessão de endereço IP do tempo solicitação de renovação de Servidor DHCP.

Parâmetros:

t t d t Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.

Disponível para microcontroladores da família PIC18 só.

Exemplo

while (1) { ... if (SPI_Ethernet_doDHCPLeaseTime ())

SPI_Ethernet_renewDHCP (5); / / é hora de renovar o IP concessão de endereço, com 5 segundos para uma resposta

... }

Protótipo unsigned char SPI_Ethernet_doDHCPLeaseTime ();

Retorna - 0 - Tempo de concessão ainda não tenha terminado ainda. - 1 - Locação tempo expirou, é hora de renovar.

Descrição Esta é a rotina de módulo de DHCP. Ela cuida de concessão de endereço IP vez por decre- a biblioteca de tempo de execução global de locação contador. Quando esse tempo expirar,

Requer módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.

Exemplo

while (1) { ... if (SPI_Ethernet_doDHCPLeaseTime ())

... / / É hora de renovar o endereço IP }

CAPÍTULO 7

mikroC PRO para PIC

SPI_Ethernet_doDHCPLeaseTime

SPI_Ethernet_renewDHCP

Bibliotecas

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

469

www.mecatronicadegaragem.blogspot.com

Page 558: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este código mostra como usar o mini-biblioteca Ethernet: - O conselho vai responder a ARP e ICMP echo requests - O conselho vai responder a UDP pedidos em qualquer porta:

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, com o método GET caminhos:

/ Vai retornar a página HTML principal / S irá retornar o status da placa como texto / T0 ... / 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.

/ Duplex / config bandeiras # Define Spi_Ethernet_HALFDUPLEX # Define Spi_Ethernet_FULLDUPLEX

0x00 0x01

/ Half duplex / / / Full duplex

/ / ME ehternet pinagem NIC sbit sfr SPI_Ethernet_Rst em RC0_bit; sbit sfr SPI_Ethernet_CS em RC1_bit; sbit sfr SPI_Ethernet_Rst_Direction em TRISC0_bit; sbit sfr SPI_Ethernet_CS_Direction em TRISC1_bit; / / Fim ethernet NIC definições

/************************************************* *********** * Cordas ROM constante * /

const unsigned char httpHeader [] = "HTTP/1.1 200 OKnContent tipo:" / / Cabeçalho HTTP const unsigned char / / Tipo de MIME HTML const unsigned char

httpMimeTypeHTML [] = "text / htmlnn";

httpMimeTypeScript [] = "text plainnn /";

/ / Tipo MIME TEXTO unsigned char HttpMethod [] = "GET /"; / * * Página web, divididos em 2 partes: * Quando chegar curto de ROM, os dados fragmentado é tratado mais efi-

cientemente pelo linker * * Esta página HTML chama as placas para obter o seu estatuto, 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;url=http://192.168.20.60">

470

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

www.mecatronicadegaragem.blogspot.com

Page 559: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

<HTML> <HEAD> </ HEAD> <BODY> <h1> PIC + ENC28J60 mini servidor web </ h1> <a href=/> Recarregar </ a> src=/s> <script </ script> <table> <td valign=top> borda da tabela <= 1 style = "font-size: 20px ; Font-family: terminal "> <th <tr> colspan=2> ADC </ th> </ tr> <tr> <td> AN2 </ td> <script> document.write (AN2) </ script> </ td> </ tr> <tr> <td> AN3 </ td> <script> document.write (AN3) </ script> </ td> </ tr> </ Table> </ td> borda da tabela <= 1 style = "font-size: 20px; font-family: terminal "> <tr> <th colspan=2> PORTB </ th> </ tr> <script> var str, i; str = ""; for (i = 0; i <8; i + +) {Str + = "<td bgcolor=pink> # botão" + i + "</ td>"; if (PORTB e (1 <<i)) {str + = "<td bgcolor=red> ON";} mais {Str + = "<td bgcolor=#cccccc> OFF";} str +="</ td> </ tr ";} document.write (str); </ Script> ";

const char

* IndexPage2 = "</ table> </ td>

<Table border = 1 style = "font-size: 20px ; Font-family: terminal "> <tr> <th colspan=3> PORTD </ th> </ tr> <script> var str, i; str = ""; for (i = 0; i <8; i + +) {Str + = "bgcolor=yellow> <td LED #" + i + "</ td>"; if (PORTD & (1 <<i)) {str + = "<td bgcolor=red> ON";} mais {Str + = "<td bgcolor=#cccccc> OFF";} str +="</ td> <a href = / t "+ i +"> Toggle </ a> </ td> </ tr ";} document.write (str); </ Script> </ Table> </ td> </ tr> </ table> Este é requisição HTTP # <script> Document.write (REQ) </ script> </ BODY> </ HTML> ";

/*********************************** RAM variáveis * * /

unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f}; / / Meu endereço MAC unsigned char / / IP do meu endereço unsigned char

myIpAddr [4] = {192, 168, 20, 60};

GetRequest [15] / / buffer solicitação HTTP

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

www.mecatronicadegaragem.blogspot.com

Page 560: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

unsigned char unsigned long

mikroC PRO para PIC

dyna [30]; / / buffer para a resposta dinâmica httpCounter = 0 / / contador de requisições HTTP

/******************************************* * funções * /

/ * * Colocar a string constante apontada por s ao ENC buffer de transmissão. * /

/ * PutConstString unsigned int (const char * s) { ctr unsigned int = 0;

while (* s)

{ Spi_Ethernet_putByte (* s + +); ctr + +; }

retorno (CTR); } / *

/ * * Ele vai ser muito mais rápido de usar a biblioteca Spi_Ethernet_putConstString

rotina * Em vez de putConstString rotina acima. No entanto, o código será

ser um pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com o def-putConstString

rial acima * A linha # define abaixo devem ser comentadas. * * /

# Define putConstString SPI_Ethernet_putConstString

/ * * Colocar a string apontada por s ao ENC buffer de transmissão * /

/ * PutString unsigned int (char * s) { ctr unsigned int = 0;

while (* s)

{ Spi_Ethernet_putByte (* s + +);

ctr + +; }

retorno (CTR); } / *

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

www.mecatronicadegaragem.blogspot.com

Page 561: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

/ * * Ele vai ser muito mais rápido de usar a biblioteca Spi_Ethernet_putString rou-

dente * Em vez de putString rotina supra. No entanto, o código será uma

pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com a definição putString-

ção acima * A linha # define abaixo devem ser comentadas para fora. * * /

# Define putString SPI_Ethernet_putString

/ * * Esta função é chamada pela biblioteca * O usuário acessa o pedido HTTP por chamadas sucessivas para

Spi_Ethernet_getByte () * O usuário coloca os dados no buffer de transmissão por chamadas sucessivas para

Spi_Ethernet_putByte () * A função deve retornar o tamanho em bytes da resposta HTTP,

ou 0 se nada para transmitir * * Se você não precisa de responder a pedidos HTTP, * Apenas definir essa função com um return (0) como única instrução * * /

unsigned int SPI_Ethernet_UserTCP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int localPort, unsigned int reqLength)

{ unsigned int unsigned int

len = 0; / / comprimento resposta minha i / / inteiro de uso geral

if (localPort! = 80) / / Eu ouço apenas para solicitação da web na porta 80

{ return (0); }

/ / Obtém 10 bytes primeiro, somente o pedido, o resto não

importa aqui for (i = 0; i <10; i + +)

{ GetRequest [i] = SPI_Ethernet_getByte (); }

GetRequest [i] = 0;

if (memcmp (GetRequest, HttpMethod, 5))

método é suportado aqui {

/ / Só Começar

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

www.mecatronicadegaragem.blogspot.com

Page 562: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

return (0); }

mikroC PRO para PIC

httpCounter + +;

/ / Mais um pedido feito

if (GetRequest [5] 's' ==) / / se o nome do caminho começa a pedido

com s, armazenamento de dados dinâmicos 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

tipo MIME de texto

/ / Adiciona valor AN2 para responder IntToStr (ADC_Read (2), Dyna); len + = putConstString (AN2 var = "); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona valor AN3 para responder IntToStr (ADC_Read (3), Dyna); len + = putConstString ("AN3 var ="); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona valor PORTB (botões) para responder len + = putConstString (PORTB var = "); IntToStr (PORTB, Dyna); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona valor PORTD (LEDs) para responder len + = putConstString ("PORTD var ="); IntToStr (PORTD, dyna); len + = putString (Dyna); len + = (";"); putConstString

/ / Adiciona os pedidos HTTP contador para responder IntToStr (httpCounter, Dyna); len + = putConstString (REQ var = "); len + = putString (Dyna); len + = (";"); putConstString }

else if (GetRequest [5] == 't') / / se o nome do caminho começa a pedido com t, alternar PORTD número de bits (LED) que vem depois

{ unsigned char bitmask = 0; / máscara de bits para

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

www.mecatronicadegaragem.blogspot.com

Page 563: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

if (GetRequest (isdigit [6])) / / se 0 <= número de bits <= 9, 8 e 9 bits não existe, mas não matéria

{ bitmask GetRequest = [6] - '0 '; / / converter

ASCII para um inteiro máscara de bits = 1 <bitmask </ / criar máscara de bits PORTD ^ = bitmask; / alternar / PORTD com xor

operador }

}

if (len == 0) / / o que fazer para por defeito

{ putConstString len = (httpHeader); http / / cabeçalho

len + = putConstString (httpMimeTypeHTML) / / com HTML tipo MIME

len + = putConstString (indexpage); / primeira página HTML parte

len + = putConstString (indexPage2); / seg página HTML parte ond

}

retorno (len); / / retorna para a biblioteca com o número de

bytes para transmitir }

/ * * Esta função é chamada pela biblioteca * O usuário acessa o pedido UDP por chamadas sucessivas para

Spi_Ethernet_getByte () * O usuário coloca os dados no buffer de transmissão por chamadas sucessivas para

Spi_Ethernet_putByte () * A função deve retornar o tamanho em bytes da resposta UDP, ou

0 se nada para transmitir * * Se você não precisa responder aos pedidos UDP, * Apenas definir essa função com um return (0) como única instrução * * /

unsigned int SPI_Ethernet_UserUDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength)

{ unsigned int unsigned char

len / / comprimento resposta minha * Ptr; / / ponteiro para o buffer dinâmico

/ / Resposta é feito do endereço IP do host remoto de seres humanos, leia-

capaz formato ByteToStr (remoteHost [0], Dyna) / / byte primeiro endereço IP dyna [3] = '.';

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

www.mecatronicadegaragem.blogspot.com

Page 564: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

ByteToStr (remoteHost [1], dyna + 4) / / segundo dyna [7] = '.'; ByteToStr (remoteHost [2], dyna + 8) / / terceiro dyna [11] = '.'; ByteToStr (remoteHost [3], dyna + 12) / / quarta

dyna [15] = ':';

/ / Adiciona o separador

/ / Número da porta, em seguida, o anfitrião remoto WordToStr (RemotePort, dyna + 16); dyna [21] '['; WordToStr (destPort, dyna + 22); dyna [27] ']'; dyna [28] = 0;

/ / O comprimento total do pedido é o comprimento do

seqüência dinâmica mais o texto do pedido len = 28 + reqLength;

/ / Coloca a corda dinâmica no buffer de transmissão SPI_Ethernet_putBytes (dyna, 28);

/ / Em seguida, coloca a corda pedido convertido em alta char

para o buffer de transmissão while (reqLength -)

{ SPI_Ethernet_putByte (toupper (SPI_Ethernet_getByte ()));

}

retorno (len);

resposta UDP }

/ * * Entrada principal * /

/ / Volta para a biblioteca com o comprimento do

vazio main () { ANSEL = 0x0C; PORTA = 0; TRISA = 0xff;

ANSELH = 0; PORTB = 0; TRISB = 0xff;

PORTD = 0; TRISD = 0;

/ *

/ / AN2 e AN3 conversores serão utilizados

/ / Define PORTA como entrada para o ADC / / Configure outras AN pinos como I / O digital / PORTB set / como entrada para os botões / / Set PORTD como saída

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

www.mecatronicadegaragem.blogspot.com

Page 565: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

* ENC28J60 começa com: * Pouco Reiniciado em RC0 * CS em pouco RC1 * Meu MAC e endereço IP * Full duplex * /

SPI1_Init (); SPI_Ethernet_Init (myMacAddr, myIpAddr, Spi_Ethernet_FULLDU-

PLEX);

while (1)

/ / Faz para sempre

{ / * * Se necessário, teste o valor de retorno para obter o código de erro * /

SPI_Ethernet_doPacket (); / processo / incoming pacotes Ethernet

/ * * Adicionar suas coisas aqui, se necessário * Spi_Ethernet_doPacket () deve ser chamado o mais rápido possível * Caso contrário, os pacotes podem ser perdidos * /

} }

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

477

www.mecatronicadegaragem.blogspot.com

Page 566: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

mikroC PRO para PIC

478

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

www.mecatronicadegaragem.blogspot.com

Page 567: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

SPI biblioteca gráfica LCD

A mikroC PRO para PIC fornece uma biblioteca para operacional 128x64 gráfico LCD (com comumente usado Samsung controlador KS108/KS107) via interface SPI.

Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool.

Nota: A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar o SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina.

Nota: Esta biblioteca é projetado para trabalhar com o LCD serial mikroElektronika's / GLCD Pinagem do adaptador de mesa, ver esquema na parte inferior da página para obter mais detalhes.

As dependências externas do SPI LCD Gráfico Biblioteca

A implementação do SPI Gráfica rotinas Lcd Biblioteca é baseado em Port Expander Biblioteca de rotinas.

As dependências externas são as mesmas dependências do Porto Biblioteca Expander externa- CIES.

Rotinas da biblioteca

rotinas básicas:

- - - - - -

SPI_Glcd_Init SPI_Glcd_Set_Side SPI_Glcd_Set_Page SPI_Glcd_Set_X SPI_Glcd_Read_Data SPI_Glcd_Write_Data

rotinas avançadas:

- - - - - - - -

SPI_Glcd_Fill SPI_Glcd_Dot SPI_Glcd_Line SPI_Glcd_V_Line SPI_Glcd_H_Line SPI_Glcd_Rectangle SPI_Glcd_Box SPI_Glcd_Circle

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

www.mecatronicadegaragem.blogspot.com

Page 568: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Init (DeviceAddress char);

Retorna Nada.

Descrição

Inicializa o módulo GLCD via interface SPI.

Parâmetros:

- DeviceAddress: endereço de hardware spi expansor, ver esquema na final desta página

Requer

As variáveis globais:

- SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset

deve ser definida antes usar essa função.

O módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.

Exemplo

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

...

/ / Se a porta Expander Biblioteca utiliza o módulo SPI: SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Glcd_Init (0);

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

- - - -

SPI_Glcd_Set_Font SPI_Glcd_Write_Char SPI_Glcd_Write_Text SPI_Glcd_Image

Spi_Glcd_Init

480

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 569: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Set_Side (char x_pos;

Retorna Nada.

Descrição

Seleciona lado GLCD. Consulte a ficha GLCD para explicação detalhe.

Parâmetros:

- X_pos: posição no eixo-x. Valores válidos: 0 .. 127

O parâmetro x_pos especifica o lado GLCD: valores 0-63 especificar o lado esquerdo, os valores de 64-127 especificar o lado direito.

Nota: Para lateral, eixo x e explicação de layout de página ver esquema em

baixo Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo

As duas linhas seguintes são equivalentes, e ambos selecione no lado esquerdo da GLCD:

SPI_Glcd_Set_Side (0); SPI_Glcd_Set_Side (10);

Protótipo vazio SPI_Glcd_Set_Page (char página);

Retorna Nada.

Descrição

Seleciona a página de GLCD.

Parâmetros:

- Página: número da página. Valores válidos: 0 .. 7

Nota: Para lateral, eixo x e explicação de layout de página ver esquema em

baixo Requer GLCD precisa ser inicializado para comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo SPI_Glcd_Set_Page (5);

CAPÍTULO 7

mikroC PRO para PIC

SPI_Glcd_Set_Side

SPI_Glcd_Set_Page

Bibliotecas

Mikroelektronika - Software e Soluções de hardware para Embedded World

481

www.mecatronicadegaragem.blogspot.com

Page 570: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Set_X (char x_pos);

Retorna Nada.

Descrição

Define eixo-x posição de x_pos pontos a partir da margem esquerda do GLCD dentro do select- lado ed.

Parâmetros:

- X_pos: posição no eixo-x. Valores válidos: 0 .. 63

Nota: Para lateral, eixo x e explicação de layout de página ver esquema em

Requer GLCD necessidades para ser inicializado para a comunicação SPI, consulte rotinas SPI Gl d I it Exemplo SPI_Glcd_Set_X (25);

Protótipo char SPI_Glcd_Read_Data ();

Retorna Um byte de memória GLCD.

Descrição Lê os dados a partir da localização atual do GLCD memória e move-se para o próximo L l

Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as

funções Exemplo

char dados; ... = dados SPI_Glcd_Read_Data ();

CAPÍTULO 7 Bibliotecas

SPI_Glcd_Set_X

Spi_Glcd_Read_Data

mikroC PRO para PIC

482

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

www.mecatronicadegaragem.blogspot.com

Page 571: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Write_Data (char Ddata);

Retorna Nada.

Descrição

Grava um byte para a posição atual em GLCD memória e move-se para a próxima Local.

Parâmetros:

- Ddata: dados a serem gravados

Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as

funções Exemplo

char dados; ... SPI_Glcd_Write_Data (dados);

Protótipo vazio SPI_Glcd_Fill (char padrão);

Retorna Nada.

Descrição

Preenche com o byte de memória GLCD padrão.

Parâmetros:

- Padrão: byte de memória para preencher GLCD com

Para limpar a tela GLCD, use SPI_Glcd_Fill (0).

Para preencher a tela completamente, use SPI_Glcd_Fill (0xFF).

Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo / / Limpar ecrã SPI_Glcd_Fill (0);

CAPÍTULO 7

mikroC PRO para PIC

SPI_Glcd_Write_Data

SPI_Glcd_Fill

Bibliotecas

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

483

www.mecatronicadegaragem.blogspot.com

Page 572: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Line (int x_start, int y_start, int x_end, int y_end, char cor);

Retorna Nada.

Descrição

Desenha uma linha na GLCD.

Parâmetros:

- X_start: coordenada x do linha de partida. Valores válidos: 0 .. 127 - Y_start: coordenada y do início da linha. Valores válidos: 0 .. 63 - X_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - Y_end: coordenada y da linha final. Valores válidos: 0 .. 63 - Cor: parâmetro cor. Valores válidos: 0 .. 2

Parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada dot Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo / / Desenha uma linha entre os pontos (0,0) e (20,30) SPI_Glcd_Line (0, 0; 20, 30, 1);

Protótipo vazio SPI_Glcd_Dot (char x_pos, char y_pos, char cor);

Retorna Nada.

Descrição

Desenha um ponto na GLCD nas coordenadas (x_pos, y_pos).

Parâmetros:

- x_pos: x posição. Valores válidos: 0 .. 127 - y_pos: y posição. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina o ponto estado: 0 limpa ponto, um coloca um ponto, e 2 inverte ponto estado.

Nota: Para x e explicação layout eixo y ver esquema na parte inferior desta página.

Requer GLCD necessidades para ser inicializado para a comunicação SPI, consulte rotinas SPI Gl d I it Exemplo / / Inverter o ponto no canto superior esquerdo SPI_Glcd_Dot (0, 0, 2);

CAPÍTULO 7 Bibliotecas

SPI_Glcd_Dot

SPI_Glcd_Line

mikroC PRO para PIC

484

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

www.mecatronicadegaragem.blogspot.com

Page 573: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_H_Line (char x_start, char x_end, char y_pos, char cor);

Retorna Nada.

Descrição

Desenha uma linha horizontal sobre GLCD.

Parâmetros:

- x_start: coordenada x do início da linha. Valores válidos: 0 .. 127 - x_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - y_pos: coordenada y da linha horizontal. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte d t Requer GLCD precisa ser inicializado para a comunicação SPI, ver SPI_Glcd_Init rotinas.

Exemplo / / Desenha uma linha horizontal entre os pontos (10,20) e (50,20) SPI_Glcd_H_Line (10, 50, 20, 1);

Protótipo vazio SPI_Glcd_V_Line (char y_start, char y_end, char x_pos, char cor);

Retorna Nada.

Descrição

Desenha uma linha vertical na GLCD.

Parâmetros:

-Y_start: coordenada y do início da linha. Valores válidos: 0 .. 63 - y_end: coordenada y da linha final. Valores válidos: 0 .. 63 - x_pos: coordenada x da linha vertical. Valores válidos: 0 .. 127 - cor: parâmetro de cor. Valores válidos: 0 .. 2

Parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto.

Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo / / Desenha uma linha vertical entre os pontos (10,5) e (10,25) SPI_Glcd_V_Line (5, 25, 10, 1);

CAPÍTULO 7

mikroC PRO para PIC

SPI_Glcd_V_Line

SPI_Glcd_H_Line

Bibliotecas

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

485

www.mecatronicadegaragem.blogspot.com

Page 574: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Rectangle (char x_upper_left, char y_upper_left, char x_bottom_right, char y_bottom_right, char cor);

Retorna Nada.

Descrição

Desenha um retângulo na GLCD.

Parâmetros: - x_upper_left: coordenada x do canto superior esquerdo do retângulo. Valores válidos: 0 .. 127 - y_upper_left: coordenada y do canto superior esquerdo do retângulo. Valores válidos: 0 .. 63 - x_bottom_right: coordenada x menor canto direito do retângulo. Válido val- ues: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito do retângulo. Válido val- ues: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas Spi_Glcd_Init.

Exemplo / / Desenha uma caixa entre os pontos (5,15) e (20,40) Spi_Glcd_Box (5, 15, 20, 40, 1);

Protótipo vazio SPI_Glcd_Box (char x_upper_left, char y_upper_left, char x_bottom_right, char y_bottom_right, char cor);

Retorna Nada.

Descrição

Desenha uma caixa de GLCD.

Parâmetros: - x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores válidos: 0 .. 127 - y_upper_left: y coordenadas do canto superior esquerdo caixa. Valores válidos: 0 .. 63 - x_bottom_right: coordenada x do canto inferior direito caixa. Valores válidos: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito caixa. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2

Requer GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo / / Desenha uma caixa entre os pontos (5,15) e (20,40) SPI_Glcd_Box (5, 15, 20, 40, 1);

CAPÍTULO 7 Bibliotecas

SPI_Glcd_Rectangle

SPI_Glcd_Box

mikroC PRO para PIC

486

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

www.mecatronicadegaragem.blogspot.com

Page 575: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Set_Font (código const char * ActiveFont, char aFontWidth, char aFontHeight, unsigned int aFontOffs);

Retorna Nada.

Descrição

Define a fonte que será usada com SPI_Glcd_Write_Char e SPI_Glcd_Write_Text rotinas.

Parâmetros:

- activeFont: fonte a ser definido. Precisa ser formatado como uma

matriz de char - aFontWidth: largura dos caracteres da fonte em pontos. - aFontHeight: altura dos caracteres da fonte em pontos. - aFontOffs: número que representa a diferença entre o mikroC PRO char- cional conjunto e definir ASCII regular (por exemplo, se 'A' é 65 de caracteres ASCII, e "A" é de 45 no conjunto de caracteres mikroC PRO, aFontOffs é 20). Demo fornecido com fontes a biblioteca tem um deslocamento de 32 o que significa que eles começam com o

Requer GLCD precisa ser inicializado para a SPI comunicação, consulte rotinas SPI_Glcd_Init.

Exemplo / / Use o costume 5x7 fonte "MyFont", que começa com o espaço (32): SPI_Glcd_Set_Font (MyFont, 5, 7, 32);

Protótipo vazio SPI_Glcd_Circle (int x_center, int y_center, int raio, char cor);

Retorna Nada.

Descrição

Desenha um círculo em GLCD.

Parâmetros: - x_center: coordenada x do centro do círculo. Valores válidos: 0 .. 127 - y_center: coordenada y do centro do círculo. Valores válidos: 0 .. 63 - Raio: Raio de tamanho - cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor da linha do círculo: 0 branco, um negro, 2 i t d t Requer GLCD precisa ser inicializado para a comunicação SPI, ver SPI_Glcd_Init rotina.

Exemplo / / Desenha um círculo com centro em (50,50) e raio = 10 SPI_Glcd_Circle (50, 50, 10, 1);

CAPÍTULO 7

mikroC PRO para PIC

SPI_Glcd_Circle

SPI_Glcd_Set_Font

Bibliotecas

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

487

www.mecatronicadegaragem.blogspot.com

Page 576: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Write_Char (char Chr1, char x_pos, char page_num, char cor);

Retorna Nada.

Descrição

Imprime personagem em GLCD.

Parâmetros:

- Chr1: caractere a ser escrito - x_pos: posição do caractere a partir de eixo-x. Valores válidos: 0 .. (127-FontWidth) - page_num: o número da página na qual personagem vai ser escrito. Válido

valores: 0 .. 7 - cor: cor parâmetro. Valores válidos: 0 .. 2

O parâmetro cor determina a cor do personagem: 0 branco, um negro, e 2 inverte cada ponto.

Nota: Para eixo x e explicação de layout de página ver esquema na parte inferior

da

Requer GLCD precisa ser inicializado para comunicação SPI, consulte rotinas SPI_Glcd_Init.

Use o SPI_Glcd_Set_Font para especificar a fonte para exibição, se nenhuma fonte é

especificada Exemplo / / Escreve 'C' personagem no posição 10 no interior da página 2:

SPI_Glcd_Write_Char ('C', 10, 2, 1);

CAPÍTULO 7 Bibliotecas

Spi_Glcd_Write_Char

mikroC PRO para PIC

488

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

www.mecatronicadegaragem.blogspot.com

Page 577: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Write_Text (char [texto] char x_pos, char page_num, char cor);

Retorna Nada.

Descrição

Imprime texto na GLCD.

Parâmetros:

- texto: texto a ser escrito - x_pos: posição do texto a partir de eixo-x. - page_num: o número da página onde o texto será escrito. Valores válidos: 0 .. 7 Cor: parâmetro de cor. Valores válidos: 0 .. 2

O parâmetro cor determina a cor do texto: 0 branco, um preto, e 2 inverte cada ponto.

Nota: Para eixo x e explicação de layout de página ver esquema na parte inferior

da

Requer GLCD precisa ser inicializado para a comunicação SPI, ver SPI_Glcd_Init rotinas.

Use o SPI_Glcd_Set_Font para especificar a fonte para exibição, se nenhuma fonte é

especificada Exemplo / / Escreve o texto "Olá mundo!" na posição 10 no interior da página 2:

SPI_Glcd_Write_Text ("Olá mundo!", 10, 2, 1);

CAPÍTULO 7

mikroC PRO para PIC

Spi_Glcd_Write_Text

Bibliotecas

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

489

www.mecatronicadegaragem.blogspot.com

Page 578: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Glcd_Image (código const char * Imagem);

Retorna Nada.

Descrição

Exibe bitmap em GLCD.

Parâmetros:

- imagem: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os

códigos e Memória RAM (devido à mikroC PRO PIC para ponteiro para ponteiro para const e RAM de equivalência).

Use o mikroC PRO opção integrada GLCD Bitmap Editor ( Ferramentas >

Requer GLCD precisa ser inicializado para comunicação SPI, consulte rotinas SPI_Glcd_Init.

Exemplo / / Desenha my_image imagem GLCD SPI_Glcd_Image (my_image);

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Spi_Glcd_Image

Exemplo Biblioteca

O exemplo demonstra como se comunicar com KS0108 GLCD através do módulo SPI, usando seri- al de paralela conversor MCP23S17.

const char código truck_bmp [1024];

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

vazio Delay2s () {

/ / 2 segundos, função de atraso

Delay_ms (2000); }

vazio main () {

char * SomeText; char contador;

/ / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander

/ /

490

/ / Se a porta Expander Biblioteca utiliza o módulo SPI2

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

www.mecatronicadegaragem.blogspot.com

Page 579: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

/ / SPI2_Init ();

/ / Inicializar SPI módulo usado com PortExpander

SPI_Glcd_Init (0); SPI_Glcd_Fill (0x00);

while (1) {

SPI_Glcd_Image (truck_bmp); Delay2s (); Delay2s ();

SPI_Glcd_Fill (0x00); Delay2s;

/ / Inicializar GLCD via SPI / / Limpar GLCD

/ / Desenha a imagem

/ / Limpar GLCD

SPI_Glcd_Box (62,40,124,56,1); SPI_Glcd_Rectangle (5,5,84,35,1); SPI_Glcd_Line (0, 63, 127, 0,1); Delay2s ();

for (contador = 5; contador <60; contador + = 5) {

linha tal e vertical Delay_ms (250); SPI_Glcd_V_Line (2, 54, contador, 1); SPI_Glcd_H_Line (2, 120, contador, 1); }

Delay2s ();

/ / Desenha caixa / / Desenha retângulo / / Desenha uma linha / / Desenha horizonte

SPI_Glcd_Fill (0x00); SPI_Glcd_Set_Font (Character8x7, 8, 8, 32);

__Lib_GLCDFonts.c Na pasta Usos SPI_Glcd_Write_Text ("mikroE", 5, 7, 2);

para (Contador = 1; contador <= 10; contador + +)

SPI_Glcd_Circle (63,32, 3 * contador, 1); Delay2s ();

SPI_Glcd_Box (12,20, 70,63, 2); Delay2s ();

SPI_Glcd_Fill (0xFF);

SPI_Glcd_Set_Font (Character8x7, 8, 7, 32); someText = "8x7 Fonte"; SPI_Glcd_Write_Text (someText, 5, 1, 2); Delay2s ();

SPI_Glcd_Set_Font (System3x5, 3, 5, 32);

someText = "3X5 Únicas capitais "; SPI_Glcd_Write_Text (someText, 5, 3, 2); Delay2s ();

/ / Limpar GLCD / Font Escolha / v.

/ / Escreve a string

/ / Desenha círculos

/ / Desenha caixa

/ / Preencha GLCD / / Alterar a fonte

/ / Escreve a string

/ / Alterar a fonte

/ / Escreve a string

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

491

www.mecatronicadegaragem.blogspot.com

Page 580: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

SPI_Glcd_Set_Font (font5x7, 5, 7, 32); someText = "Fonte 5x7"; SPI_Glcd_Write_Text (someText, 5, 5, 2);

mikroC PRO para PIC

/ / Alterar a fonte / / Escreve a string

Delay2s ();

SPI_Glcd_Set_Font (FontSystem5x7_v2, 5, 7, 32); / font / Alterar someText = "5x7 Fonte (v2)"; SPI_Glcd_Write_Text (someText, 5, 7, 2) / / Escreve o texto Delay2s ();

}

}

Conexão HW

SPI GLCD conexão HW

492

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

www.mecatronicadegaragem.blogspot.com

Page 581: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

SPI LCD BIBLIOTECA

A mikroC PRO para PIC fornece uma biblioteca para comunicação com LCD (com controladores HD44780 compatível) em modo de 4 bits via interface SPI.

Para criar um conjunto personalizado de caracteres LCD usam LCD personalizado Personagem Tool.

Nota: A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar o SPI módulo antes de usar o SPI Lcd Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina.

Nota: Esta biblioteca é projetado para trabalhar com o LCD serial mikroElektronika's Adaptador Câmara pinagem. Veja esquema na parte inferior da página para obter mais detalhes.

As dependências externas do SPI LCD Biblioteca

A implementação de rotinas Lcd Biblioteca SPI é baseado em Port Expander Biblioteca rotinas.

As dependências externas são as mesmas dependências do Porto Biblioteca Expander externa- CIES.

Rotinas da biblioteca

- - - - - -

SPI_Lcd_Config SPI_Lcd_Out SPI_Lcd_Out_Cp SPI_Lcd_Chr SPI_Lcd_Chr_Cp SPI_Lcd_Cmd

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

493

www.mecatronicadegaragem.blogspot.com

Page 582: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Lcd_Config (char DeviceAddress);

Retorna Nada.

Descrição

Inicializa o módulo LCD via interface SPI.

Parâmetros:

- DeviceAddress: endereço de hardware spi expansor, ver esquema na final desta página

Requer

As variáveis globais:

- SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do Chip Pin Select - SPExpanderRST_Direction: Direção do pino de Reset

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

O módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.

Exemplo

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

vazio main () {

/ / Se a porta Expander Biblioteca utiliza o módulo SPI SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Lcd_Config (0); / / inicializa Lcd sobre o SPI interface

CAPÍTULO 7 Bibliotecas

Spi_Lcd_Config

mikroC PRO para PIC

494

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

www.mecatronicadegaragem.blogspot.com

Page 583: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Lcd_Out (char linha, char coluna, char * Texto);

Retorna Nada.

Descrição

Imprime texto na tela LCD a partir de determinada posição. Ambas as variáveis string e literais podem ser passados como um texto.

Parâmetros: - linha: número da linha de partida posição - coluna: número da coluna a partir posição t t it Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config.

Exemplo / / Escreve o texto "Olá!" no LCD a partir da linha 1, coluna 3: SPI_Lcd_Out (1, 3, "Olá!");

Protótipo vazio SPI_Lcd_Out_CP (char * Texto);

Retorna Nada.

Descrição

Imprime texto na tela LCD na posição atual do cursor. Ambas as variáveis string e-litro als pode ser passado como um texto.

Parâmetros: Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config.

Exemplo / / Escreve o texto "Aqui!" na posição atual do cursor: SPI_Lcd_Out_CP ("Aqui!");

CAPÍTULO 7

mikroC PRO para PIC

Spi_Lcd_Out

Spi_Lcd_Out_Cp

Spi_Lcd_Chr

Bibliotecas

Protótipo Retorna

Descrição

Requer

Exemplo

vazio SPI_Lcd_Chr (char Row, char Coluna, char Out_Char);

Nada.

Imprime caracteres em LCD na posição especificada. Ambas as variáveis e literais pode ser passado como personagem. Parâmetros: - Linha: escrever o número da linha a posição - Coluna: escrever o número da coluna posição - Out_Char: caractere a ser escrito Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config. / / Escreve caráter "I" na linha 2, coluna 3: SPI_Lcd_Chr (2, 3, 'i');

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

495

www.mecatronicadegaragem.blogspot.com

Page 584: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Lcd_Cmd (char out_char);

Retorna Nada.

Descrição

Envia comando para LCD.

Parâmetros:

- out_char: comando a ser enviado

Nota: Constantes pré-definidas podem ser passados para a função, consulte

Disponível Lcd

Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config.

Exemplo / / Clear LCD: SPI_Lcd_Cmd (_LCD_CLEAR);

Protótipo vazio SPI_Lcd_Chr_CP (char Out_Char);

Retorna Nada.

Descrição

Imprime caracteres em LCD na posição atual do cursor. Ambas as variáveis e literais pode ser passado como personagem.

Parâmetros:

O t Ch t d Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config.

Exemplo / / Escrever "e" caractere na posição atual do cursor: SPI_Lcd_Chr_Cp ('e');

CAPÍTULO 7 Bibliotecas

Spi_Lcd_Chr_Cp

Spi_Lcd_Cmd

mikroC PRO para PIC

496

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

www.mecatronicadegaragem.blogspot.com

Page 585: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, retorna uma tela mudou i i i l M d d RAM é f d LCD_CURSOR_OFF Desligue o cursor

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 d d LCD_MOVE_CURSOR_RIGHT Mover cursor para direita sem alterar RAM exibir dados

LCD_TURN_ON Vire a tela LCD

LCD_TURN_OFF Ligue o monitor LCD

LCD_SHIFT_LEFT Shift display esquerdo sem alterar a RAM de dados de ibi ã LCD_SHIFT_RIGHT Shift direito de exibição sem alterar RAM exibição de dados

CAPÍTULO 7

mikroC PRO para PIC

Disponível Comandos LCD

Bibliotecas

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

497

www.mecatronicadegaragem.blogspot.com

Page 586: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Este exemplo demonstra como se comunicar através do módulo de LCD SPI, utilizando conversor de serial para paralelo MCP23S17. char * Texto = "mikroElektronika"; / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

vazio main () {

/ / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander

/ / Se a porta Expander Biblioteca utiliza o módulo SPI2 / / SPI2_Init (); / / Inicializar SPI módulo usado com PortExpander

SPI_Lcd_Config (0); / / interface de inicialização do LCD sobre o SPI SPI_Lcd_Cmd (_LCD_CLEAR); / / exibe Limpar SPI_Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off SPI_Lcd_Out (1,6 ", mikroE"); / Imprimir texto para LCD, 1 linha, 6 col-

umn SPI_Lcd_Chr_CP ('!'); / Anexar '!' SPI_Lcd_Out (2,1, texto); / Imprimir texto / ao LCD, linha 2, coluna 1

}

/ / SPI_Lcd_Out (3,1 ", mikroE"); / / SPI_Lcd_Out (4,15 ", mikroE");

/ / Para o LCD com mais de duas linhas / / Para o LCD com mais de duas linhas

498

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

www.mecatronicadegaragem.blogspot.com

Page 587: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

SPI LCD conexão HW

Bibliotecas

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

499

www.mecatronicadegaragem.blogspot.com

Page 588: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

SPI LCD8 (8-bit) biblioteca A mikroC PRO para PIC fornece uma biblioteca para comunicação com LCD (com controladores HD44780 compatível) em modo de 8 bits via interface SPI. Para criar um conjunto personalizado de caracteres LCD usam LCD personalizado Personagem Tool. Nota: A Biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar o SPI módulo antes de usar o SPI Biblioteca de Lcd. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. Nota: Esta biblioteca foi projetada para funcionar com LCD Serial mikroElektronika's / GLCD Pinagem do adaptador de mesa, ver esquema na parte inferior da página para obter mais detalhes. As dependências externas do SPI LCD Biblioteca A implementação de rotinas Lcd Biblioteca SPI é baseado em Port Expander Biblioteca rotinas. As dependências externas são as mesmas dependências do Porto Biblioteca Expander externa- CIES. Rotinas da biblioteca

- - - - - -

SPI_Lcd8_Config SPI_Lcd8_Out SPI_Lcd8_Out_Cp SPI_Lcd8_Chr SPI_Lcd8_Chr_Cp SPI_Lcd8_Cmd

500

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 589: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Lcd8_Config (char DeviceAddress);

Retorna Nada.

Descrição

Inicializa o módulo LCD via interface SPI.

Parâmetros: - DeviceAddress: endereço de hardware spi expansor, ver esquema na

final desta página

Requer

As variáveis globais: - SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset devem ser definidas antes de utilizar esta função. O módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.

Exemplo

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander ... / / Se a porta Expander Biblioteca utiliza o módulo SPI SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Lcd8_Config (0); / intialize LCD em modo de 8 bits via SPI

Protótipo vazio SPI_Lcd8_Out (unsigned short linha, unsigned short coluna, char * Texto);

Retorna Nada.

Descrição

Imprime texto na tela LCD a partir de determinada posição. Ambos variáveis de cadeia e acendeu- rals pode ser passado como um texto.

Parâmetros:

- linha: número da linha de partida posição - coluna: número da coluna a partir posição t t it Requer Lcd precisa ser inicializado para a comunicação SPI, ver SPI_Lcd8_Config rotinas.

Exemplo / / Escreve o texto "Olá!" no LCD a partir da linha 1, coluna 3: SPI_Lcd8_Out (1, 3, "Olá!");

CAPÍTULO 7

mikroC PRO para PIC

Spi_Lcd8_Config

Spi_Lcd8_Out

Bibliotecas

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

501

www.mecatronicadegaragem.blogspot.com

Page 590: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Lcd8_Chr (unsigned short linha, unsigned short coluna, char out_char);

Retorna Nada.

Descrição

Imprime caracteres em LCD na posição especificada. Ambas as variáveis e literais

podem ser passado como personagem.

Parâmetros:

- linha: escrever o número da linha a posição - coluna: escrever o número da coluna posição t it Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd8_Config.

Exemplo / / Escreve caracter "i" na linha 2, coluna 3: SPI_Lcd8_Chr (2, 3, 'i');

Protótipo vazio SPI_Lcd8_Chr_CP (char out_char);

Retorna Nada.

Descrição

Imprime caracteres em monitores LCD na posição atual do cursor. Ambas as variáveis e literais pode ser passado como personagem.

Parâmetros:

t t t t it Requer Lcd precisa ser inicializado para a comunicação SPI, ver SPI_Lcd8_Config rotinas.

Exemplo / / Escreve o texto "Aqui!" na posição atual do cursor: SPI_Lcd8_Out_Cp ("Aqui!");

CAPÍTULO 7 Bibliotecas

Spi_Lcd8_Out_Cp

Spi_Lcd8_Chr

mikroC PRO para PIC

502

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

www.mecatronicadegaragem.blogspot.com

Page 591: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_Lcd8_Cmd (char out_char);

Retorna Nada.

Descrição

Envia comando para LCD.

Parâmetros:

- out_char: comando a ser enviado

Nota: Constantes pré-definidas podem ser passados para a função, consulte

Disponível LCD

Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd8_Config.

Exemplo / / Limpa display LCD: SPI_Lcd8_Cmd (_LCD_CLEAR);

Protótipo vazio SPI_Lcd8_Chr_CP (char out_char);

Retorna Nada.

Descrição

Imprime caracteres em LCD na posição atual do cursor. Ambas as variáveis e literais pode ser passado como personagem.

Parâmetros:

t h : caractere a ser escrito Requer Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd8_Config.

Exemplo Imprimir "E" na posição atual do cursor:

/ / Escrever "e" caractere na posição atual do cursor:

SPI_Lcd8_Chr_Cp ('e');

CAPÍTULO 7

mikroC PRO para PIC

Spi_Lcd8_Chr_Cp

Spi_Lcd8_Cmd

Bibliotecas

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

503

www.mecatronicadegaragem.blogspot.com

Page 592: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

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, retorna uma tela mudou i i i l M d d RAM é f d LCD_CURSOR_OFF Desligue o cursor

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 d d LCD_MOVE_CURSOR_RIGHT Mover cursor para direita sem alterar RAM exibir dados

LCD_TURN_ON Vire a tela LCD

LCD_TURN_OFF Ligue o monitor LCD

LCD_SHIFT_LEFT Shift display esquerdo, sem alterar RAM exibir dados

LCD_SHIFT_RIGHT Shift direito de exibição sem alterar RAM exibição de dados

CAPÍTULO 7 Bibliotecas

Disponível Comandos LCD

mikroC PRO para PIC

504

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

www.mecatronicadegaragem.blogspot.com

Page 593: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

Este exemplo demonstra como se comunicar LCD em modo de 8 bits, através do SPI mod- ULE, usando a série paralelo conversor MCP23S17.

char * Texto = "mikroE";

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

vazio main () {

/ / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander

/ / Se o Porto Expander Biblioteca utiliza o módulo SPI2 / / SPI2_Init (); / / Inicializar SPI módulo usado com PortExpander

SPI_Lcd8_Config (0); / Intialize LCD em modo de 8 bits via SPI SPI_Lcd8_Cmd (_LCD_CLEAR); / / exibe Limpar SPI_Lcd8_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off SPI_Lcd8_Out (1,6, texto); / Imprimir texto / ao LCD, linha 1, coluna 6 ... SPI_Lcd8_Chr_CP ('!'); / Anexar '!' SPI_Lcd8_Out (2,1 ", mikroElektronika"); / Imprimir texto / para LCD, 2

linha, coluna 1 ... SPI_Lcd8_Out (3,1, texto); / / Para os módulos de LCD com mais de duas linhas SPI_Lcd8_Out (4,15, texto); / / Para os módulos de LCD com mais de duas linhas

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

505

www.mecatronicadegaragem.blogspot.com

Page 594: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

LCD8 SPI conexão HW

mikroC PRO para PIC

506

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

www.mecatronicadegaragem.blogspot.com

Page 595: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Adaptador Câ

datasheet T6369C

RS C / D

R / W / RD

E / WR

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

SPI biblioteca gráfica T6963C LCD

A mikroC PRO para PIC fornece uma biblioteca para trabalhar com base em Glcds TOSHIBA controlador T6963C via interface SPI. A Toshiba T6963C é muito po- controlador do LCD lar para a utilização em pequenos módulos gráficos. Ele é capaz de controlar telas com uma resolução de até 240x128. Devido à sua baixa potência e pequeno-out linha é o mais apropriado para aplicações móveis, como PDAs, MP3 players ou celulares equipamentos de medição. Embora este controlador é pequeno, tem uma capacidade de dis- brincando e mesclando texto e gráficos e que gere todos os sinais de interface com o exibe linhas e motoristas Coluna.

Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool.

Nota: A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar SPI módulo antes de usar o SPI T6963C GLCD Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina.

Nota: Esta biblioteca é projetado para funcionar com GLCD Serial mikroElektronika de 240x128 e 240X64 Adaptador pinagem Quadros, ver esquema na parte inferior desta página para detalhes.

Nota: Algumas placas mikroElektronika do adaptador tem pinagem diferente do T6369C fichas. relações adequadas entre esses rótulos são dadas na tabela abaixo:

As dependências externas do SPI T6963C LCD Gráfico Biblioteca

A implementação do SPI T6963C Gráfica rotinas Lcd Biblioteca é baseado em Port Expander Biblioteca rotinas.

As dependências externas são as mesmas dependências do Porto Biblioteca Expander externa- CIES.

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

507

www.mecatronicadegaragem.blogspot.com

Page 596: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Rotinas da biblioteca

mikroC PRO para PIC

- - - - - - - - - - - - - - - - - - -

SPI_T6963C_Config SPI_T6963C_writeData SPI_T6963C_writeCommand SPI_T6963C_setPtr SPI_T6963C_waitReady SPI_T6963C_fill SPI_T6963C_dot SPI_T6963C_write_char SPI_T6963C_write_text SPI_T6963C_line SPI_T6963C_rectangle SPI_T6963C_box SPI_T6963C_circle SPI_T6963C_image SPI_T6963C_sprite SPI_T6963C_set_cursor SPI_T6963C_clearBit SPI_T6963C_setBit SPI_T6963C_negBit

Nota: A seguir as rotinas da biblioteca de baixo nível são implementadas como macros. Estes macros podem ser encontrados no SPI_T6963C.h cabeçalho do arquivo que está localizado na o SPI projetos T6963C pastas exemplo.

- - - - - - - - - - - -

SPI_T6963C_displayGrPanel SPI_T6963C_displayTxtPanel SPI_T6963C_setGrPanel SPI_T6963C_setTxtPanel SPI_T6963C_panelFill SPI_T6963C_grFill SPI_T6963C_txtFill SPI_T6963C_cursor_height SPI_T6963C_graphics SPI_T6963C_text SPI_T6963C_cursor SPI_T6963C_cursor_blink

508

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

www.mecatronicadegaragem.blogspot.com

Page 597: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_Config (unsigned int largura, unsigned char altura, unsigned char fntW, char DeviceAddress, unsigned char wr, unsigned char º, unsigned char cd, unsigned char rst);

Retorna Nada.

Descrição

Initalizes o gráfico controlador do LCD.

Parâmetros:

- largura: largura do painel GLCD - altura: altura do painel GLCD - fntW: tamanho da fonte - DeviceAddress: SPI endereço de hardware de expansão, consulte o esquema na

final desta página - WR: sinal de escrita pino GLCD porta de controle - rd: leia pino GLCD sinal na porta de controle - CD: comando / pino de sinal de dados sobre GLCD porta de controle - RST: sinal de reset pino sobre GLCD porta de controle

Mostrar organização RAM: A biblioteca cortes RAM em painéis: um painel completo é um painel gráfico fol- seguidos por um painel de texto (ver esquema abaixo).

esquemática: +---------------------+ / \ PAINEL DE IMAGENS # + 0 + | + + | + + | + + | +---------------------+ | PAINEL 0 + Painel de texto # 0 + | + + \ / +---------------------+ / \ + PAINEL DE IMAGENS # 1 + | + + | + + | + + | +---------------------+ | PAINEL 1 + Painel de texto # 1 + | + + | +---------------------+ \ /

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_Config

Bibliotecas

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

509

www.mecatronicadegaragem.blogspot.com

Page 598: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Requer

As variáveis globais: - SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset devem ser definidas antes de utilizar este função.

O módulo SPI precisa ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas.

Exemplo

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander ... / / Inicializar módulo SPI SPI1_Init (); SPI_T6963C_Config (240, 64, 8, 0, 0, 1, 3, 4);

Protótipo vazio SPI_T6963C_writeData (unsigned char Ddata);

Retorna Nada.

Descrição Grava dados para o controlador T6963C via interface SPI.

Parâmetros: - Ddata: dados a serem gravados

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_writeData (AddrL);

Protótipo vazio SPI_T6963C_writeCommand (unsigned char Ddata);

Retorna Nada.

Descrição Grava T6963C comando para o controlador via interface SPI.

Parâmetros: - Ddata: comando a ser escrito

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_writeCommand (SPI_T6963C_CURSOR_POINTER_SET);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_WriteData

Spi_T6963C_WriteCommand

mikroC PRO para PIC

510

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

www.mecatronicadegaragem.blogspot.com

Page 599: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_fill (unsigned char v, unsigned int de início, unsigned int len);

Retorna Nada.

Descrição

Preenche bloco controlador de memória com o byte dado.

Parâmetros:

- v: byte a ser escrito - start: endereço inicial do bloco de memória - len: comprimento do bloco de memória em bytes

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_fill (0x33, 0x000F 0x00FF);

Protótipo vazio SPI_T6963C_setPtr (unsigned int p, unsigned char c);

Retorna Nada.

Descrição

Define o ponteiro p de memória para o comando c.

Parâmetros:

- p: endereço onde comando deve ser escrito - c: comando a ser escrito

Requer necessidades módulo SToshiba GLCD para ser inicializado. Veja SPI_T6963C_Config ti

Exemplo SPI_T6963C_setPtr (T6963C_grHomeAddr + start, T6963C_ADDRESS_POINTER_SET);

Protótipo vazio SPI_T6963C_waitReady (void);

Retorna Nada.

Descrição Piscinas do byte de status e loops até Toshiba GLCD módulo está pronto.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_waitReady ();

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_SetPtr

Spi_T6963C_WaitReady

Spi_T6963C_Fill

Bibliotecas

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

511

www.mecatronicadegaragem.blogspot.com

Page 600: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_dot (int x, int y, unsigned char cor);

Retorna Nada.

Descrição

Desenha um ponto no gráfico do painel atual GLCD nas coordenadas (x, y).

Parâmetros:

- x: posição do ponto no eixo X - y: dot posição no eixo y - cor: parâmetro de cor. Valores válidos: Spi_T6963C_BLACK e

Spi_T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_dot (x0, y0, pcolor);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_Dot

mikroC PRO para PIC

512

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

www.mecatronicadegaragem.blogspot.com

Page 601: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_write_char (unsigned char c, unsigned char x, unsigned char y, unsigned char modalidade);

Retorna Nada.

Descrição

Grava um caractere em o painel de texto actual do GLCD nas coordenadas (x, y).

Parâmetros:

- c: char a ser escrito - x: char posição no eixo X - y: char na posição do eixo-y - modo: parâmetro mode. Valores válidos:

SPI_T6963C_ROM_MODE_OR, SPI_T6963C_ROM_MODE_XOR, SPI_T6963C_ROM_MODE_AND e SPI_T6963C_ROM_MODE_TEXT

Modo de explicação do parâmetro:

- OU Mode: No OR-Mode, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões.

- XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da

lógica "OU exclusivo". Isso pode ser útil para exibir texto no modo negativo, ou seja, texto branco em fundo preto.

- E-Mode: O texto e dados gráficos mostrados no visor são combinados através de

a lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A

Texto valores dos atributos são armazenados na área gráfica de memória de vídeo.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_write_char ("A", 22,23, E);

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_Write_Char

Bibliotecas

Mikroelektronika - Software e Soluções de hardware para Embedded World

513

www.mecatronicadegaragem.blogspot.com

Page 602: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_write_text (unsigned char * Str, unsigned char x, unsigned char y, unsigned char modalidade);

Retorna Nada.

Descrição

Grava o texto no painel de texto actual do GLCD nas coordenadas (x, y).

Parâmetros:

- str: texto a ser escrito - x: posição do texto no eixo-x - y: texto posição no eixo y - modo: parâmetro mode. Valores válidos:

SPI_T6963C_ROM_MODE_OR, SPI_T6963C_ROM_MODE_XOR, SPI_T6963C_ROM_MODE_AND e SPI_T6963C_ROM_MODE_TEXT

Modo de explicação do parâmetro:

- OU Mode: No OR-Mode, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões.

- XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da

lógica "OU exclusivo". Isso pode ser útil para exibir texto no modo negativo, ou seja, texto branco em fundo preto.

- E-Mode: O texto e dados gráficos mostrados no visor são combinados através da lógica "Função E".

- TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A Texto valores dos atributos são armazenados na área gráfica de memória de vídeo.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_write_text ("DEMO BIBLIOTECA GLCD, BEM-VINDO!", 0, 0; T6963C_ROM_MODE_EXOR);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_write_Text

mikroC PRO para PIC

514

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

www.mecatronicadegaragem.blogspot.com

Page 603: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_rectangle (int x0, int y0, int x1, int y1, unsigned char pcolor);

Retorna Nada.

Descrição

Desenha um retângulo na GLCD.

Parâmetros:

- x0: coordenada x do canto superior esquerdo do retângulo - y0: coordenada y do canto superior esquerdo do retângulo - x1: coordenada x do canto inferior direito do retângulo - y1: coordenada y do canto inferior direito do retângulo - pcolor: parâmetro de cor. Valores válidos:

SPI_T6963C_BLACK e SPI_T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_rectangle (20, 20, 219, 107, T6963C_WHITE);

Protótipo vazio SPI_T6963C_line (int x0, int y0, int x1, int y1, não assinado char pcolor);

Retorna Nada.

Descrição

Desenha uma linha de (x0, y0) a (x1, y1).

Parâmetros:

- x0: coordenada x do início da linha - y0: coordenada y da linha final - x1: coordenada x do início da linha - y1: coordenada y o fim da linha - pcolor: parâmetro de cor. Valores válidos: SPI_T6963C_BLACK e SPI_T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_line (0, 0, 239, 127, T6963C_WHITE);

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_line

Spi_T6963C_rectangle

Bibliotecas

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

515

www.mecatronicadegaragem.blogspot.com

Page 604: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_box (int x0, int y0, int x1, int y1, unsigned char pcolor);

Retorna Nada.

Descrição

Desenha uma caixa na GLCD

Parâmetros:

- x0: coordenada x superior canto esquerdo caixa - y0: coordenada y do canto superior esquerdo caixa - x1: coordenada x do canto inferior direito caixa - y1: coordenada y do canto inferior direito caixa - pcolor: parâmetro de cor. Valores válidos:

SPI_T6963C_BLACK e SPI_T6963C_WHITE Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_box (0, 119, 239, 127, T6963C_WHITE);

Protótipo vazio SPI_T6963C_circle (int x, int y, tempo r, unsigned char PCOL- ou);

Retorna Nada.

Descrição

Desenha uma círculo no GLCD.

Parâmetros:

- x: coordenada x do centro do círculo - y: coordenada y do centro do círculo - r: tamanho do raio - pcolor: parâmetro de cor. Valores válidos:

SPI_T6963C_BLACK e SPI_T6963C_WHITE

Requer Toshiba módulo GLCD precisa ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_circle (120, 64, 110, T6963C_WHITE);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_box

Spi_T6963C_circle

mikroC PRO para PIC

516

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

www.mecatronicadegaragem.blogspot.com

Page 605: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_sprite (unsigned char px, unsigned char py, const código char * Pic, unsigned char sx, unsigned char sy);

Retorna Nada.

Descrição

Preenche a área do retângulo gráfico (px, py) para (px + sx, sy + py) com imagem de tamanho personalizado.

Parâmetros:

- px: coordenada x do canto superior esquerdo de imagem. Valores válidos: múltiplos de o tamanho da fonte

- py: coordenada y do canto superior esquerdo de imagem - pic: imagem a ser exibida - sx: Imagem de largura. Valores válidos: múltiplos da largura da fonte - sy: altura da imagem

Nota: Se px e sx parâmetros não são múltiplos da largura da fonte serão l d ó i ú i b i é úl i l d l d

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_sprite (76, 4, Einstein, 88, 119); / / desenha um sprite

Protótipo vazio SPI_T6963C_image (código const char * PIC);

Retorna Nada.

Descrição

Exibe bitmap em GLCD.

Parâmetros:

- pic: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os

códigos e Memória RAM (devido à mikroC PRO para PIC ponteiro para const e ponteiro para RAM de equivalência).

Use o mikroC PRO opção integrada GLCD Bitmap Editor ( Ferramentas > GLCD Bitmap Editor) para converter a imagem para uma matriz constante

i d ibi ã

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_image (my_image);

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_image

Spi_T6963C_Sprite

Bibliotecas

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

517

www.mecatronicadegaragem.blogspot.com

Page 606: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_set_cursor (unsigned char x, unsigned char y);

Retorna Nada.

Descrição

Define o cursor para a linha xe coluna y.

Parâmetros:

- x: cursor número da linha a posição - y: número da coluna a posição do cursor

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_set_cursor (cposy cposx);

Protótipo vazio SPI_T6963C_setBit (char b);

Retorna Nada.

Descrição

Define bit porta de controle (s).

Parâmetros:

- b: bit da máscara. A função bit x na porta de controle se o bit x em máscara de bits é

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Conjunto de bits 0 e 1 no controle do porto SPI_T6963C_setBit (0x03);

Protótipo vazio SPI_T6963C_clearBit (char b);

Retorna Nada.

Descrição

Limpa porta de controle bit (s).

Parâmetros:

- b: bit da máscara. A função irá limpar bit x na porta de controle se o bit x na máscara de bits é

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Limpar os bits 0 e 1 na porta de controle SPI_T6963C_clearBit (0x03);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_set_cursor

Spi_T6963C_clearBit

Spi_T6963C_setBit

mikroC PRO para PIC

518

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

www.mecatronicadegaragem.blogspot.com

Page 607: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_negBit (char b);

Retorna Nada.

Descrição

Nega bit porta de controle (s).

Parâmetros:

- b: bit da máscara. A função irá negar bit x na porta de controle se o bit x em máscara de

bits é

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Nega bits 0 e 1 no controle do porto SPI_T6963C_negBit (0x03);

Protótipo vazio SPI_T6963C_displayTxtPanel (char n);

Retorna Nada.

Descrição

Mostrar painel de texto selecionado.

Parâmetros:

- n: número do painel. Valores válidos: 0 e 1.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Texto do visor do painel de um SPI_T6963C_displayTxtPanel (1);

Protótipo vazio SPI_T6963C_displayGrPanel (char n);

Retorna Nada.

Descrição

Mostrar selecionados painel gráfico.

Parâmetros:

- n: Número painel gráfico. Valores válidos: 0 e 1.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / Display gráfico / 1 SPI_T6963C_displayGrPanel (1);

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_negBit

Spi_T6963C_DisplayGrPanel

Spi_T6963C_displayTxtPanel

Bibliotecas

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

519

www.mecatronicadegaragem.blogspot.com

Page 608: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_setGrPanel (char n);

Retorna Nada.

Descrição

Calcular o endereço inicial para o painel gráfico selecionado e defina internos adequados ponteiros. Todas as operações subseqüentes gráfico será pré-formados neste gráfico painel.

Parâmetros:

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Configura como um painel gráfico painel gráfico atual. SPI_T6963C_setGrPanel (1);

Protótipo vazio SPI_T6963C_setTxtPanel (char n);

Retorna Nada.

Descrição

Calcular o endereço inicial para o painel de texto selecionado e definir o ponto interno apro- ers. Todas as operações de texto subseqüentes serão pré-formados neste painel de texto.

Parâmetros:

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Painel de texto definido como um painel de texto atual. SPI_T6963C_setTxtPanel (1);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_setGrPanel

Spi_T6963C_setTxtPanel

mikroC PRO para PIC

520

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

www.mecatronicadegaragem.blogspot.com

Page 609: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_grFill (unsigned char v);

Retorna Nada.

Descrição

Preencha atual painel gráfico com o valor apropriado (0 a clara).

Parâmetros:

- v: valor para preencher com painel gráfico.

Requer Toshiba necessidades módulo GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Painel atual clara gráfico SPI_T6963C_grFill (0);

Protótipo vazio SPI_T6963C_panelFill (unsigned char v);

Retorna Nada.

Descrição

Preencha painel atual na íntegra (Texto + gráfico) com o valor apropriado (0 a clara).

Parâmetros:

valor para preencher com painel Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo painel atual clara SPI_T6963C_panelFill (0);

Protótipo vazio SPI_T6963C_txtFill (unsigned char v);

Retorna Nada.

Descrição

Preencha painel texto atual com o valor apropriado (0 a clara).

Parâmetros:

- v: este valor aumentou 32 será utilizado para preenchimento do painel de texto.

Requer Toshiba módulo GLCD precisa ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Painel de texto claro atuais SPI_T6963C_txtFill (0);

CAPÍTULO 7

mikroC PRO para PIC

Spi_T6963C_panelFill

Spi_T6963C_GrFill

Spi_T6963C_txtFill

Bibliotecas

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

521

www.mecatronicadegaragem.blogspot.com

Page 610: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_text (char n);

Retorna Nada.

Descrição

Activar / desactivar a visualização de texto.

Parâmetros:

- n: texto ativar / desativar o parâmetro. Valores válidos: 0 (Dispaying texto desativar) e 1 (Habilitar exibindo texto).

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Ativar texto exibindo SPI_T6963C_text (1);

Protótipo vazio SPI_T6963C_graphics (char n);

Retorna Nada.

Descrição

Ativar / desativar gráfico exibindo.

Parâmetros:

- n: gráfico ativar / desativar o parâmetro. Valores válidos: 0 (Desativar gráfico dispaying) e 1 (Habilitar gráfico exibindo).

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Ativar gráfico exibindo SPI_T6963C_graphics (1);

Protótipo vazio SPI_T6963C_cursor_height (unsigned char n);

Retorna Nada.

Descrição

Defina o tamanho do cursor.

Parâmetros:

- n: cursor altura. Valores válidos: 0 .. 7.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo SPI_T6963C_cursor_height (7);

CAPÍTULO 7 Bibliotecas

Spi_T6963C_cursor_height

Spi_T6963C_graphics

Spi_T6963C_text

mikroC PRO para PIC

522

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

www.mecatronicadegaragem.blogspot.com

Page 611: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio SPI_T6963C_cursor_blink (char n);

Retorna Nada.

Descrição

Ativar / desativar o cursor piscando.

Parâmetros:

- n: cursor piscando ativar / desativar o parâmetro. Valores válidos: 0 (Cursor

desativar Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / / Ativar o cursor piscando SPI_T6963C_cursor_blink (1);

Protótipo vazio SPI_T6963C_cursor (char n);

Retorna Nada.

Descrição

Definir cursor on / off.

Parâmetros:

- n: on / off parâmetro. Valores válidos: 0 (cursor partiu) e 1 (cursor ativado).

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.

Exemplo / Cursor / set em SPI_T6963C_cursor (1);

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Spi_T6963C_cursor

Spi_T6963C_cursor_blink

Exemplo Biblioteca

A demo seguinte desenho testes avançados rotinas da biblioteca SPI GLCD T6963C. Hardware configurações neste exemplo são feitas para a 240x128 T6963C display, placa EasyPIC5 e 16F887.

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

523

www.mecatronicadegaragem.blogspot.com

Page 612: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

# Include

"__SPIT6963C.h"

mikroC PRO para PIC

/ * * imagens bitmap armazenado em ROM * /

extern código const char me []; extern const char código Einstein] [;

/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander

vazio main () {

char txt1 [] = " Einstein teria gostado de mim "; char txt [] = "DEMO BIBLIOTECA GLCD, BEM-VINDO!";

não assinado não assinado não assinado não assinado

char int char int

painel; i; vira-latas; cposx, cposy;

/ / / / / / / /

painel atual de propósito geral Registre-se visibilidade do cursor cursor x-y posição

TRISA = 0xFF; ANSEL = 0;

/ / Configurar o PORTA como entrada / / Configurar um pinos como I / O digital

ANSELH = 0;

/ / Se Porto Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander

/ / / /

/ / Se a porta Expander Biblioteca utiliza o módulo SPI2 SPI2_Init (); / / Inicializa o módulo SPI usado com PortExpander

/ * * Exposição init para 240 pixels de largura e 128 pixels de altura * 8 bits de largura de caractere * Barramento de dados sobre MCP23S17 PORTB * Barramento de controle na porta MCP23S17 * 2 é pouco! WR * 1 é pouco! RD * Bit 0 é! CD * 4 bits é RST * Chip permitirá, no reverso, fonte 8x8 internamente definida na biblioteca * /

SPI_T6963C_Config (240, 128, 8, 0, 2, 1, 0, 4); Delay_ms (1000);

524

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

www.mecatronicadegaragem.blogspot.com

Page 613: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

/ * * Possibilitar gráficos e exibir texto, ao mesmo tempo * /

SPI_T6963C_graphics (1); SPI_T6963C_text (1);

painel = 0; i = 0; curs = 0; cposy cposx = 0;

/ * As mensagens de texto * * /

SPI_T6963C_write_text (txt, 0, 0 SPI_T6963C_ROM_MODE_XOR); SPI_T6963C_write_text (txt1, 0, 15, SPI_T6963C_ROM_MODE_XOR);

/ * * Cursor * /

Bibliotecas

SPI_T6963C_cursor_height (8); SPI_T6963C_set_cursor (0, 0); SPI_T6963C_cursor (0);

/ / 8 pixels de altura / Mover o cursor / para o canto superior esquerdo / / Cursor fora

/ * * Desenhar retângulos * /

SPI_T6963C_rectangle (0, 0, 239, 127, SPI_T6963C_WHITE); SPI_T6963C_rectangle (20, 20, 219, 107, SPI_T6963C_WHITE); SPI_T6963C_rectangle (40, 40, 199, 87, SPI_T6963C_WHITE); SPI_T6963C_rectangle (60, 60, 179, 67, SPI_T6963C_WHITE);

/ * * Desenhar uma cruz * /

SPI_T6963C_line (0, 0, 239, 127, SPI_T6963C_WHITE); SPI_T6963C_line (0, 127, 239, 0, SPI_T6963C_WHITE);

/ * * Desenhar caixas sólidas * /

SPI_T6963C_box (0, 0, 239, 8, SPI_T6963C_WHITE); SPI_T6963C_box (0, 119, 239, 127, SPI_T6963C_WHITE);

/ * * Desenhar círculos * /

SPI_T6963C_circle (120, 64, 10, SPI_T6963C_WHITE); SPI_T6963C_circle (120, 64, 30, SPI_T6963C_WHITE); SPI_T6963C_circle (120, 64, 50, SPI_T6963C_WHITE);

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

www.mecatronicadegaragem.blogspot.com

Page 614: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

SPI_T6963C_circle (120, SPI_T6963C_circle (120, SPI_T6963C_circle (120, SPI_T6963C_circle (120,

64, 64, 64, 64,

SPI_T6963C_WHITE 70); SPI_T6963C_WHITE 90); SPI_T6963C_WHITE 110); SPI_T6963C_WHITE 130);

SPI_T6963C_sprite (76, 4, Einstein, 88, 119); / / desenha um sprite SPI_T6963C_setGrPanel (1); / / Select painel gráfico outras SPI_T6963C_image (me); / / Preenche a tela com uma imagem gráfica

while (1) {

/ / Loop infinito

/ *

* Se PORTA_0 é pressionado, alternar a exibição gráfica painel 0 e gráfico 1

* / if (RA0_bit) {

painel + +; painel e = 1; SPI_T6963C_displayGrPanel (painel); Delay_ms (300); }

/ * * Se PORTA_1 é pressionada, exibir apenas o painel gráfico * /

else if (RA1_bit) { SPI_T6963C_graphics (1); SPI_T6963C_text (0); Delay_ms (300); }

/ * * Se PORTA_2 é pressionado, visor do painel de apenas texto * /

else if (RA2_bit) { SPI_T6963C_graphics (0); SPI_T6963C_text (1); Delay_ms (300); }

/ * * Se PORTA_3 é pressionado, o texto de exibição e painéis gráficos * /

else if (RA3_bit) { SPI_T6963C_graphics (1); SPI_T6963C_text (1); Delay_ms (300); }

/ *

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

www.mecatronicadegaragem.blogspot.com

Page 615: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

* Se PORTA_4 é pressionado, o cursor mudar * /

else if (RA4_bit) { Curs + +; if (curs == 3) curs = 0; switch (vira-latas) {

caso 0: / / Cursor não SPI_T6963C_cursor (0); break;

caso 1: / / Cursor piscando SPI_T6963C_cursor (1); SPI_T6963C_cursor_blink (1); break;

caso 2: / / Cursor intermitente não SPI_T6963C_cursor (1); SPI_T6963C_cursor_blink (0); break;

} Delay_ms (300); }

/ * * Move o cursor, mesmo que não visível * /

cposx + +; if (cposx SPI_T6963C_txtCols ==) {

cposx = 0; cposy + +; if (cposy == SPI_T6963C_grHeight SPI_T6963C_CHARACTER_HEIGHT /)

{ cposy = 0; }

} SPI_T6963C_set_cursor (cposy cposx);

Delay_ms (100); }

}

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

527

www.mecatronicadegaragem.blogspot.com

Page 616: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Conexão HW

Spi T6963C GLCD conexão HW

mikroC PRO para PIC

528

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

www.mecatronicadegaragem.blogspot.com

Page 617: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Adaptador Câ

datasheet T6369C RS C / D

R / W / RD

E / WR

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

T6963C biblioteca gráfica LCD

A mikroC PRO para PIC fornece uma biblioteca para trabalhar com base em Glcds TOSHIBA controlador T6963C. A Toshiba T6963C é muito popular controlador do LCD para uso em pequenos módulos gráficos. Ele é capaz de controlar exibe com um res- olution até 240x128. Devido à sua baixa potência e pequeno esboço é o mais apropriado para aplicações móveis, como PDAs, MP3 players ou celulares medição equipa- ment. Embora pequena, essa contoller tem uma capacidade de exibir e mesclando texto e gráficos, e que gere todos os sinais de interface para a linha exibe e Col- umn drivers.

Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool.

Nota: ChipEnable (CE), FontSelect (FS) e Ré (MD) tem que ser definida para ade- níveis adequados pelo usuário fora do T6963C_init função. Veja o Biblioteca Exemplo de código na parte inferior desta página.

Nota: Algumas placas mikroElektronika do adaptador tem pinagem diferente do T6369C fichas. relações adequadas entre esses rótulos são dadas na tabela abaixo:

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

529

www.mecatronicadegaragem.blogspot.com

Page 618: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

As seguintes variáveis devem ser definida em todos os projectos

LCD Gráfico com T6963C biblioteca:

Descrição: Exemplo:

sfr extern char T6963C_dataPort;

T6963C porta de

d d

char T6963C_dataPort na PORTD;

extern sbit sfr T6963C_ctrlwr;

Escrever sinal. sbit T6963C_ctrlwr na RC2_bit;

sbit sfr extern T6963C_ctrlrd;

Leia sinal. sbit T6963C_ctrlrd na RC1_bit;

sbit sfr extern T6963C_ctrlcd;

Comando / Dados sinal.

sbit T6963C_ctrlcd na RC0_bit;

sbit sfr extern T6963C_ctrlrst;

Reset sinal. sbit T6963C_ctrlrst em RC4_bit;

sbit sfr extern T6963C_ctrlwr_Direction;

Direção do Escrever pino.

sbit T6963C_ctrlwr_Direction em TRISC2_bit;

sbit sfr extern T6963C_ctrlrd_Direction;

Direção do Leia pino.

sbit T6963C_ctrlrd_Direction em TRISC1_bit;

sbit sfr extern T6963C_ctrlcd_Direction;

Direção do Dados dos pinos.

sbit T6963C_ctrlcd_Direction em TRISC0_bit;

sbit sfr extern T6963C_ctrlrst_Direction;

Direção do Reset.

sbit T6963C_ctrlrst_Direction em TRISC4_bit;

CAPÍTULO 7 Bibliotecas

As dependências externas da T6963C LCD Gráfico Biblioteca

mikroC PRO para PIC

530

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 619: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Rotinas da biblioteca

- T6963C_init - T6963C_writeData - T6963C_writeCommand - T6963C_setPtr - T6963C_waitReady - T6963C_fill - T6963C_dot - T6963C_write_char - T6963C_write_text - T6963C_line - T6963C_rectangle - T6963C_box - T6963C_circle - T6963C_image - T6963C_sprite - T6963C_set_cursor

Nota: A seguir as rotinas da biblioteca de baixo nível são implementadas como macros. Estes macros podem ser encontrados no T6963C.h arquivo de cabeçalho que está localizado na T6963C projetos pastas exemplo.

- T6963C_clearBit - T6963C_setBit - T6963C_negBit - T6963C_displayGrPanel - T6963C_displayTxtPanel - T6963C_setGrPanel - T6963C_setTxtPanel - T6963C_panelFill - T6963C_grFill - T6963C_txtFill - T6963C_cursor_height - T6963C_graphics - T6963C_text - T6963C_cursor - T6963C_cursor_blink

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

531

www.mecatronicadegaragem.blogspot.com

Page 620: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

T6963C_Init

Protótipo

Retorna

Descrição

mikroC PRO para PIC vazio T6963C_init (unsigned int largura, unsigned char altura, unsigned char fntW);

Nada.

Initalizes o gráfico controlador do LCD. Parâmetros: - largura: largura do painel GLCD - altura: altura do painel GLCD - fntW: tamanho da fonte Mostrar organização RAM: A biblioteca corta a RAM em painéis: um painel completo é um painel gráfico seguido por um painel de texto (ver esquema abaixo). esquemática: +---------------------+ / \ PAINEL DE IMAGENS # + 0 + | + + | + + | + + | +---------------------+ | PAINEL 0 + Painel de texto # 0 + | + + \ / +---------------------+ / \ + PAINEL DE IMAGENS # 1 + | + + | + + | + + | +---------------------+ | PAINEL 1 + Painel de texto # 1 + | + + | +---------------------+ \ / As variáveis globais: - - - -

T6963C_dataPort: Data Port T6963C_ctrlwr: Escreve o sinal do pino T6963C_ctrlrd: Leia o sinal do pino T6963C_ctrlcd: Comando / pino de sinal de dados

Requer - - - - -

T6963C_ctrlrst: Redefinir o sinal do pino T6963C_ctrlwr_Direction: Direção de gravação do sinal do pino T6963C_ctrlrd_Direction: Direção de leitura do sinal do pino T6963C_ctrlcd_Direction: Direção do Comando de sinal de dados / pin T6963C_ctrlrst_Direction: Direção do sinal Reset

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

532

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

www.mecatronicadegaragem.blogspot.com

Page 621: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_writeData (unsigned char mydata);

Retorna Nada.

Descrição

Grava dados para o controlador T6963C.

Parâmetros:

- mydata: dados a ser escrito

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina

T6963C i it Exemplo T6963C_writeData (AddrL);

CAPÍTULO 7

mikroC PRO para PIC

/ / Conexões T6963C módulo char T6963C_dataPort em PORTD;

Bibliotecas

sbit T6963C_ctrlwr sbit T6963C_ctrlrd sbit T6963C_ctrlcd

em RC2_bit; em RC1_bit; em RC0_bit;

sbit T6963C_ctrlrst em RC4_bit; sbit T6963C_ctrlwr_Direction sbit T6963C_ctrlrd_Direction sbit T6963C_ctrlcd_Direction

em TRISC2_bit; em TRISC1_bit; em TRISC0_bit;

sbit T6963C_ctrlrst_Direction em TRISC4_bit; / / Fim do conexões T6963C módulo / / Não Sinais Utilizados pela biblioteca, eles são definidos em função principal sbit T6963C_ctrlce em RC3_bit; / / O sinal CE

Exemplo sbit T6963C_ctrlfs em RC6_bit / / sinal de FS sbit T6963C_ctrlmd em RC5_bit / / MD sinal sbit T6963C_ctrlce_Direction ção sbit T6963C_ctrlfs_Direction direção sbit T6963C_ctrlmd_Direction

em TRISC3_bit / / direção do sinal CE em TRISC6_bit / / sinal de FS em TRISC5_bit; / sinal / MD

direção / / Fim conexões T6963C módulo

... / Exposição / init para 240 pixels de largura, 128 pixels de altura e 8 bits largura de caractere T6963C_init (240, 128, 8);

T6963C_writeData

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

533

www.mecatronicadegaragem.blogspot.com

Page 622: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_setPtr (unsigned int p, unsigned char c);

Retorna Nada.

Descrição

Define o ponteiro p de memória para o comando c.

Parâmetros:

- p: endereço onde o comando deve ser escrito - c: comando a ser escrito

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init ti

Exemplo T6963C_setPtr (T6963C_grHomeAddr + start, T6963C_ADDRESS_POINTER_SET);

Protótipo vazio T6963C_writeCommand (unsigned char mydata);

Retorna Nada.

Descrição

Grava o comando para o controlador T6963C.

Parâmetros:

- mydata: comando a ser escrita

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_writeCommand (T6963C_CURSOR_POINTER_SET);

Protótipo vazio T6963C_waitReady (void);

Retorna Nada.

Descrição Piscinas do byte de status e loops até Toshiba GLCD módulo está pronto.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_waitReady ();

CAPÍTULO 7 Bibliotecas

T6963C_WriteCommand

T6963C_SetPtr

T6963C_waitReady

mikroC PRO para PIC

534

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

www.mecatronicadegaragem.blogspot.com

Page 623: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_fill (unsigned char v, unsigned int de início, não assinado int len);

Retorna Nada.

Descrição

Preenche bloco controlador de memória com o byte dado.

Parâmetros:

- v: byte a ser escrito - start: endereço inicial do bloco de memória - len: comprimento do bloco de memória bytes

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_fill (0x33, 0x000F 0x00FF);

Protótipo vazio T6963C_dot (int x, int y, unsigned char cor);

Retorna Nada.

Descrição

Desenha um ponto no painel gráfico atual do GLCD nas coordenadas (x, y).

Parâmetros:

- x: posição do ponto no eixo X - y: dot posição no eixo y - cor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init ti Exemplo T6963C_dot (x0, y0, pcolor);

CAPÍTULO 7

mikroC PRO para PIC

T6963C_fill

T6963C_Dot

Bibliotecas

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

535

www.mecatronicadegaragem.blogspot.com

Page 624: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_write_char (unsigned char c, unsigned char x, não assinado char y, unsigned char modalidade);

Retorna Nada.

Descrição

Grava um char no painel de texto actual do GLCD nas coordenadas (x, y).

Parâmetros:

- c: char a ser escrito - x: char posição no eixo X - y: char na posição do eixo-y - modo: parâmetro mode. Valores válidos: T6963C_ROM_MODE_OR, T6963C_ROM_MODE_XOR, T6963C_ROM_MODE_AND e T6963C_ROM_MODE_TEXT

Modo de explicação do parâmetro:

- OU Mode: No OR-Mode, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões.

- XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da

lógica "OU exclusivo". Isso pode ser útil para exibir texto em negativo modo, ou seja, texto branco em fundo preto. - E-Mode: O texto e gráfico- dados ic mostrados na exposição são combinados através da lógica "Função E".

- Em modo texto: O texto e dados gráficos mostrados na exposição são combinados através de

a lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A

Texto Atributo valores são armazenados na área gráfica de memória de vídeo

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina

T6963C i it Exemplo T6963C_write_char ('A', 22,23, E);

CAPÍTULO 7 Bibliotecas

T6963C_write_Char

mikroC PRO para PIC

536

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

www.mecatronicadegaragem.blogspot.com

Page 625: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_write_text (unsigned char * Str, unsigned char x, unsigned char y, unsigned char modalidade);

Retorna Nada.

Descrição

Grava o texto no painel de texto atual de GLCD nas coordenadas (x, y).

Parâmetros:

- str: texto a ser escrito - x: posição do texto no eixo-x - y: posição do texto no eixo-y - modo: parâmetro mode. Valores válidos: T6963C_ROM_MODE_OR, T6963C_ROM_MODE_XOR, T6963C_ROM_MODE_AND e T6963C_ROM_MODE_TEXT

Modo explicação do parâmetro:

- OU Mode: No OR-Mode, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões.

- XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da

lógica "OU exclusivo". Isso pode ser útil para exibir texto em negativo modo, ou seja, texto branco em fundo preto.

- E-Mode: O texto e dados gráficos mostrados na exposição são combinados através de

a lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A

Texto valores dos atributos são armazenados na área gráfica de memória de vídeo

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init

ti Exemplo T6963C_write_text ("DEMO BIBLIOTECA GLCD, BEM-VINDO!", 0, 0;

T6963C_ROM_MODE_XOR);

CAPÍTULO 7

mikroC PRO para PIC

T6963C_write_text

Bibliotecas

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

537

www.mecatronicadegaragem.blogspot.com

Page 626: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_rectangle (int x0, int y0, int x1, int y1, unsigned char pcolor);

Retorna Nada.

Descrição

Desenha um retângulo na GLCD.

Parâmetros:

- x0: coordenada x do canto superior esquerdo do retângulo - y0: coordenada y do canto superior esquerdo do retângulo - x1: coordenada x do canto inferior direito do retângulo - y1: coordenada y no canto inferior direito do retângulo - pcolor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina

T6963C i it Exemplo T6963C_rectangle, 20, 219, 107, T6963C_WHITE);

Protótipo vazio T6963C_line (int x0, int y0, int x1, int y1, unsigned char pcolor);

Retorna Nada.

Descrição

Desenha uma linha de (x0, y0) a (x1, y1).

Parâmetros:

- x0: coordenada x do início da linha - y0: coordenada y da linha final - x1: coordenada x do início da linha - y1: coordenada y da linha final - pcolor: parâmetro de cor. Valores válidos:

T6963C_BLACK e T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_line (0, 0, 239, 127, T6963C_WHITE);

CAPÍTULO 7 Bibliotecas

T6963C_line

T6963C_rectangle

mikroC PRO para PIC

538

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

www.mecatronicadegaragem.blogspot.com

Page 627: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_box (int x0, int y0, int x1, int y1, unsigned char pcolor);

Retorna Nada.

Descrição

Desenha uma caixa de GLCD

Parâmetros:

- x0: coordenada x no canto superior esquerdo caixa - y0: coordenada y do canto superior esquerdo caixa - x1: coordenada x do canto inferior direito caixa - y1: coordenada y do canto inferior direito caixa - pcolor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_box (0, 119, 239, 127, T6963C_WHITE);

Protótipo vazio T6963C_circle (int x, int y, tempo r, unsigned char pcolor);

Retorna Nada.

Descrição

Desenha um círculo em GLCD.

Parâmetros:

- x: coordenada x do centro do círculo - y: coordenada y do centro do círculo - r: tamanho do raio - pcolor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init ti Exemplo T6963C_circle (120, 64, 110, T6963C_WHITE);

CAPÍTULO 7

mikroC PRO para PIC

T6963C_box

T6963C_circle

Bibliotecas

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

539

www.mecatronicadegaragem.blogspot.com

Page 628: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_sprite (unsigned char px, unsigned char py, código de const char * Pic, unsigned char sx, unsigned char sy);

Retorna Nada.

Descrição

Preenche a área do retângulo gráfico (px, py) para (px + sx, sy + py) com imagem de tamanho personalizado.

Parâmetros:

- px: coordenada x do canto superior esquerdo de imagem. Valores válidos: múltiplos do fonte largura

- py: coordenada y do canto superior esquerdo de imagem - pic: imagem a ser exibida - sx: Imagem de largura. Valores válidos: múltiplos da largura da fonte - sy: altura da imagem

Nota: Se px e sx parâmetros não são múltiplos da largura da fonte serão l d ó i ú i b i é últi l d l d

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_sprite (76, 4, Einstein, 88, 119); / / desenha um sprite

Protótipo vazio T6963C_image (código const char * PIC);

Retorna Nada.

Descrição

Exibe bitmap em GLCD.

Parâmetros:

- pic: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os

códigos e Memória RAM (devido à mikroC PRO PIC para ponteiro para ponteiro para const e RAM de equivalência).

Use o mikroC PRO opção integrada GLCD Bitmap Editor ( Ferramentas > GLCD Bitmap Editor) para converter a imagem para uma matriz constante apropriada para exibição

Requer Toshiba necessidades módulo GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_image (mc);

CAPÍTULO 7 Bibliotecas

T6963C_image

T6963C_sprite

mikroC PRO para PIC

540

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

www.mecatronicadegaragem.blogspot.com

Page 629: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_setBit (char b);

Retorna Nada.

Descrição

Define o controle bit da porta (s).

Parâmetros:

- b: bit da máscara. A função bit x na porta de controle se o bit x na máscara de bits é definida

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Conjunto de bits 0 e 1 no controle do porto T6963C_setBit (0x03);

Protótipo vazio T6963C_set_cursor (unsigned char x, unsigned char y);

Retorna Nada.

Descrição

Define o cursor para a linha xe coluna y.

Parâmetros:

- x: cursor número da linha a posição - y: número da coluna a posição do cursor

Requer Toshiba necessidades módulo GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_set_cursor (cposy cposx);

Protótipo vazio T6963C_clearBit (char b);

Retorna Nada.

Descrição

Limpa bits de controle de porta (s).

Parâmetros:

- b: bit da máscara. A função vai limpar bit x na porta de controle se o bit x na máscara de bits é

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Limpar os bits 0 e 1 na porta de controle T6963C_clearBit (0x03);

CAPÍTULO 7

mikroC PRO para PIC

T6963C_set_cursor

T6963C_clearBit

T6963C_setBit

Bibliotecas

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

541

www.mecatronicadegaragem.blogspot.com

Page 630: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_negBit (char b);

Retorna Nada.

Descrição

Nega bit porta de controle (s).

Parâmetros:

- b: bit da máscara. A função irá negar bit x na porta de controle se bit x na máscara de bits

é

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Nega bits 0 e 1 no controle do porto T6963C_negBit (0x03);

Protótipo vazio T6963C_displayGrPanel (char n);

Retorna Nada.

Descrição

Mostrar selecionados painel gráfico.

Parâmetros:

- n: Número painel gráfico. Valores válidos: 0 e 1.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / Display gráfico / 1 T6963C_displayGrPanel (1);

Protótipo vazio T6963C_displayTxtPanel (char n);

Retorna Nada.

Descrição

Mostrar painel de texto selecionado.

Parâmetros:

- n: número do painel. Valores válidos: 0 e 1.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo / / Texto do visor do painel de um T6963C_displayTxtPanel (1);

CAPÍTULO 7 Bibliotecas

T6963C_negBit

T6963C_displayGrPanel

T6963C_displayTxtPanel

mikroC PRO para PIC

542

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

www.mecatronicadegaragem.blogspot.com

Page 631: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_setTxtPanel (n char);

Retorna Nada.

Descrição

Calcular o endereço inicial para o painel de texto selecionado e definir o ponto interno apro- ers. Todas as operações subsequentes do texto será pré-formados neste painel de texto.

Parâmetros:

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C I it

Exemplo / / Painel de texto definido como um painel de texto atual. T6963C_setTxtPanel (1);

Protótipo vazio T6963C_setTxtPanel (char n);

Retorna Nada.

Descrição

Calcular o endereço inicial para o painel gráfico selecionado e conjunto apropriado ponteiros internos. Todas as operações subseqüentes gráfico será pré-formados neste painel gráfico.

Parâmetros:

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Painel de texto definido como um painel de texto atual. T6963C_setTxtPanel (1);

CAPÍTULO 7

mikroC PRO para PIC

T6963C_setGrPanel

T6963C_SetTxtPanel

T6963C_PanelFill

Bibliotecas

Protótipo Retorna

vazio T6963C_panelFill (unsigned char v);

Nada.

Preencha painel atual na íntegra (texto + gráfico) com o valor apropriado (0 a clara).

Descrição Parâmetros:

- v: valor para preencher painel com. Requer

Exemplo

necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Painel transparente atual T6963C_panelFill (0);

Mikroelektronika - Software e Soluções de hardware para Embedded World

543

www.mecatronicadegaragem.blogspot.com

Page 632: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_txtFill (unsigned char v);

Retorna Nada.

Descrição

Preencha painel texto atual com o valor apropriado (0 a clara).

Parâmetros:

- v: este valor aumentou 32 será utilizado para preenchimento do painel de texto.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Painel de texto claro atuais T6963C_txtFill (0);

Protótipo vazio T6963C_grFill (unsigned char v);

Retorna Nada.

Descrição

Preencha atual painel gráfico com valor apropriado (0 a clara).

Parâmetros:

- v: valor para preencher com painel gráfico.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Painel atual clara gráfico T6963C_grFill (0);

Protótipo vazio T6963C_cursor_height (unsigned char n);

Retorna Nada.

Descrição

Defina o tamanho do cursor.

Parâmetros:

- n: cursor altura. Valores válidos: 0 .. 7.

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it Exemplo T6963C_cursor_height (7);

CAPÍTULO 7 Bibliotecas

T6963C_grFill

T6963C_txtFill

T6963C_cursor_height

mikroC PRO para PIC

544

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

www.mecatronicadegaragem.blogspot.com

Page 633: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_text (char n);

Retorna Nada.

Descrição

Activar / desactivar a visualização de texto.

Parâmetros:

- n: on / off parâmetro. Valores válidos: 0 (Texto desativar dispaying) e 1 (Habilitar texto visualizar).

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Ativar texto exibindo T6963C_text (1);

Protótipo vazio T6963C_graphics (char n);

Retorna Nada.

Descrição

Ativar / desativar gráfico exibindo.

Parâmetros:

- n: on / off parâmetro. Valores válidos: 0 (Dispaying gráfico desativar) e 1 (Habilitar exibição gráfica).

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Enable gráfico exibindo T6963C_graphics (1);

Protótipo vazio T6963C_cursor (char n);

Retorna Nada.

Descrição

Definir cursor on / off.

Parâmetros:

- n: on / off parâmetro. Valores válidos: 0 (Cursor compensação) e 1 (Conjunto

Requer Toshiba módulo GLCD precisa ser inicializado. Veja a rotina T6963C_init.

Exemplo / Cursor / set em T6963C_cursor (1);

CAPÍTULO 7

mikroC PRO para PIC

T6963C_Graphics

T6963C_text

T6963C_cursor

Bibliotecas

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

545

www.mecatronicadegaragem.blogspot.com

Page 634: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio T6963C_cursor_blink (char n);

Retorna Nada.

Descrição

Ativar / desativar o cursor piscando.

Parâmetros:

- n: on / off parâmetro. Valores válidos: 0 (Cursor desativar a piscar) e 1 (Habilitar cursor piscando).

Requer necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C i it

Exemplo / / Ativar o cursor piscando T6963C_cursor_blink (1);

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

T6963C_Cursor_Blink

Exemplo Biblioteca

Os testes de demonstração a seguir rotinas avançadas de desenho da biblioteca GLCD T6963C. Hardware con- figurações neste exemplo são feitas para a 240x128 T6963C display, placa EasyPIC5 e 16F887.

# Include

"__T6963C.h"

/ / Conexões T6963C módulo T6963C_dataPort char na PORTD; / / Porta de dados

sbit sbit sbit

T6963C_ctrlwr T6963C_ctrlrd T6963C_ctrlcd

em RC2_bit; em RC1_bit; em RC0_bit;

/ / / / / /

WR sinal de escrita RD leitura do sinal CD de comando / sinal de dados

sbit T6963C_ctrlrst em RC4_bit; / / RST sinal de reset sbit sbit sbit

T6963C_ctrlwr_Direction T6963C_ctrlrd_Direction T6963C_ctrlcd_Direction

em em em

TRISC2_bit; TRISC1_bit; TRISC0_bit;

/ / / / / /

WR sinal de escrita RD leitura do sinal CD de comando / sinal de dados

sbit T6963C_ctrlrst_Direction em TRISC4_bit; / / RST sinal de reset

/ / Não Sinais Utilizados pela biblioteca, eles são definidos em função principal sbit T6963C_ctrlce em RC3_bit; / / O sinal CE sbit T6963C_ctrlfs em RC6_bit / / sinal de FS sbit T6963C_ctrlmd em RC5_bit; / sinal / MD sbit T6963C_ctrlce_Direction sbit T6963C_ctrlfs_Direction sbit T6963C_ctrlmd_Direction

em TRISC3_bit / / direção do sinal CE em TRISC6_bit / / direção do sinal FS em TRISC5_bit / / direção do sinal MD

/ / Fim conexões T6963C módulo

546

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

www.mecatronicadegaragem.blogspot.com

Page 635: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

/ * * imagens bitmap armazenado em ROM * /

const char código mC []; const char código Einstein] [;

vazio main () {

char txt1 [] = "EINSTEIN teria gostado mim "; char txt [] = "DEMO BIBLIOTECA GLCD, BEM-VINDO!";

Bibliotecas

não assinado não assinado não assinado não assinado

char int char int

painel; i; vira-latas; cposx, cposy;

/ / Painel atual / / Registrador genérico / / Visibilidade do cursor / / A posição do cursor-x, y

TRISA0_bit TRISA1_bit TRISA2_bit TRISA3_bit TRISA4_bit

= = = = =

1; 1; 1; 1; 1;

/ / / / / / / / / /

Definir Definir Definir Definir Definir

RA0 RA1 RA2 RA3 RA4

como como como como como

Entrada Entrada Entrada Entrada Entrada

T6963C_ctrlce_Direction = 0; T6963C_ctrlce = 0; T6963C_ctrlfs_Direction = 0; T6963C_ctrlfs = 0; T6963C_ctrlmd_Direction = 0; T6963C_ctrlmd = 0;

ANSEL = 0;

/ / Ativar T6963C

/ / Fonte Selecione 8x8 / / Número da coluna na escolha / / Configurar um pinos como I / O digital

ANSELH = 0;

/ / Inicializar T6369C T6963C_init (240, 128, 8);

/ * * Possibilitar gráficos e exibir texto, ao mesmo tempo * /

T6963C_graphics (1); T6963C_text (1);

painel = 0; i = 0; curs = 0; cposy cposx = 0; / * As mensagens de texto * * /

T6963C_write_text (txt, 0, 0 T6963C_ROM_MODE_XOR); T6963C_write_text (txt1, 0, 15, T6963C_ROM_MODE_XOR);

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

547

www.mecatronicadegaragem.blogspot.com

Page 636: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

/ * * Cursor * /

mikroC PRO para PIC

T6963C_cursor_height (8); T6963C_set_cursor (0, 0); T6963C_cursor (0);

/ / 8 pixels de altura / / Move o cursor para cima à esquerda / Cursor / off

/ * * Desenhar retângulos * /

T6963C_rectangle (0, 0, 239, 127, T6963C_WHITE); T6963C_rectangle (20, 20, 219, 107, T6963C_WHITE); T6963C_rectangle (40, 40, 199, 87, T6963C_WHITE); T6963C_rectangle (60, 60, 179, 67, T6963C_WHITE);

/ * * Desenhar uma cruz * /

T6963C_line (0, 0, 239, 127, T6963C_WHITE); T6963C_line (0, 127, 239, 0, T6963C_WHITE);

/ * * Desenhar caixas sólidas * /

T6963C_box (0, 0, 239, 8, T6963C_WHITE); T6963C_box (0, 119, 239, 127, T6963C_WHITE);

/ * * Desenhar círculos * /

T6963C_circle (120, T6963C_circle (120, T6963C_circle (120, T6963C_circle (120, T6963C_circle (120, T6963C_circle (120, T6963C_circle (120,

64, 64, 64, 64, 64, 64, 64,

T6963C_WHITE 10); T6963C_WHITE 30); T6963C_WHITE 50); T6963C_WHITE 70); T6963C_WHITE 90); T6963C_WHITE 110); T6963C_WHITE 130);

T6963C_sprite (76, 4, Einstein, 88, 119);

/ / Desenha um sprite

T6963C_setGrPanel (1);

/ / Selecione outra painel gráfico

T6963C_image (MC);

for (;) {/ / faz um loop infinito

/ * * Se RA0 é pressionada, exibir apenas o painel gráfico * /

if (RA0_bit) { T6963C_graphics (1);

548 Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 637: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

T6963C_text (0); Delay_ms (300); }

/ * * Se RA1 é pressionado, alternar a exibição entre o painel gráfico

0 e um painel gráfico * /

else if (RA1_bit) { painel + +; painel e = 1; T6963C_displayGrPanel (painel); Delay_ms (300); }

/ * * Se RA2 é pressionado, visor do painel de apenas texto * /

else if (RA2_bit) { T6963C_graphics (0); T6963C_text (1); Delay_ms (300); }

/ * * Se RA3 é pressionado, o texto de exibição e painéis gráficos * /

else if (RA3_bit) { T6963C_graphics (1); T6963C_text (1); Delay_ms (300); }

/ * * Se RA4 é pressionado, o cursor mudar * /

else if (RA4_bit) { Curs + +; if (curs == 3) curs = 0; switch (vira-latas) {

caso 0: / / Cursor não T6963C_cursor (0); break;

caso 1: / / Cursor piscando T6963C_cursor (1); T6963C_cursor_blink (1); break;

caso 2:

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

www.mecatronicadegaragem.blogspot.com

Page 638: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

}

mikroC PRO para PIC

/ / Cursor intermitente não T6963C_cursor (1); T6963C_cursor_blink (0); break;

} Delay_ms (300); }

/ * * Move o cursor, mesmo que não visível * /

cposx + +; if (cposx T6963C_txtCols ==) {

cposx = 0; cposy + +; if (cposy == T6963C_grHeight / T6963C_CHARACTER_HEIGHT) {

cposy = 0; }

} T6963C_set_cursor (cposy cposx);

Delay_ms (100); }

550

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

www.mecatronicadegaragem.blogspot.com

Page 639: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

T6963C GLCD conexão HW

Bibliotecas

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

551

www.mecatronicadegaragem.blogspot.com

Page 640: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

UART BIBLIOTECA UART módulo de hardware está disponível com uma série de microcontroladores PIC. mikroC PRO para PIC Biblioteca UART dá trabalho confortável com o (full duplex) assíncrona modo. Você pode facilmente comunicar com outros dispositivos via protocolo RS-232 (por exemplo com o PC, veja a figura no final do tópico - RS-232 HW). Você precisa um microcontrolador PIC com hardware UART integrado, por exemplo 16F887. Então, simplesmente use as funções listadas abaixo. Nota: PIC18 MCUs Alguns têm vários módulos UART. Alternando entre os módulos UART UART na biblioteca é feito pela função UART_Set_Active (UART módulo tem que ser previamente inicializada). Nota: Para usar a rotina da biblioteca UART desejado, basta alterar o número 1 no protótipo com o número adequado de módulo, ou seja, UART2_Init (2400); Rotinas da biblioteca

- - - - - - - -

UART1_Init UART1_Data_Ready UART1_Tx_Idle UART1_Read UART1_Read_Text UART1_Write UART1_Write_Text UART_Set_Active

552

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

www.mecatronicadegaragem.blogspot.com

Page 641: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio UART1_Init (unsigned long baud_rate);

Retorna Nada.

Descrição Inicializa o módulo desejado hardware UART com a taxa de transmissão. Consulte a dados do dispositivo folha para taxas de transmissão permitiu específicas FOSC. Se você especificar o taxa de transmissão sem suporte compilador relatará um erro

Requer

Você precisa PIC MCU com hardware UART.

UART1_Init precisa ser chamada antes de usar as outras funções da UART Biblioteca.

Parâmetros:

- baud_rate: solicitou taxa de transmissão

Consulte a folha de dados do dispositivo para taxas de transmissão permitiu

FOSC específicos.

Nota: O cálculo do valor da taxa de UART transmissão é realizada pelo compilador,

como

Exemplo Isto irá inicializar o módulo de hardware UART1 e estabelecer a comunicação em 2400 bps:

UART1_Init (2400);

CAPÍTULO 7

mikroC PRO para PIC

Uart_Init

Bibliotecas

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

553

www.mecatronicadegaragem.blogspot.com

Page 642: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char UART1_Read ();

Retorna Retorna o byte recebido.

Descrição Função recebe um byte via UART. Use a função para UART1_Data_Ready testar se de dados está pronto primeiro.

Requer UART módulo HW deve ser inicializado e comunicação estabelecida antes usar essa função. Veja UART1_Init.

Exemplo / / Se os dados estiverem prontos, lê-lo: se (UART1_Data_Ready () == 1) { receber = UART1_Read (); }

Protótipo char UART1_Tx_Idle ();

Retorna - 1 se os dados estão prontos para a leitura - 0 se não houver dados no cadastro receber

Descrição Use a função para testar se o registrador de transmissão mudança está vazia ou ã

Requer UART módulo HW deve ser inicializado e comunicação estabelecidos antes usar essa função. Veja UART1_Init.

Exemplo / / Se os dados anteriores foi deslocado para fora, enviar os dados a seguir: se (UART1_Tx_Idle () == 1) {

UART1_Write (_data); }

Protótipo char UART1_Data_Ready ();

Retorna - 1 se os dados estão prontos para leitura - 0 se não houver dados no cadastro receber

Descrição Use a função para testar se os dados no buffer de recepção está preparado para a l it

Requer UART módulo HW deve ser inicializado e comunicação estabelecida antes usar essa função. Veja UART1_Init.

Exemplo / / Se os dados estiverem prontos, lê-lo: se (UART1_Data_Ready () == 1) { receber = UART1_Read (); }

CAPÍTULO 7 Bibliotecas

Uart_Data_Ready

UART1_Tx_Idle

UART1_Read

mikroC PRO para PIC

554

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

www.mecatronicadegaragem.blogspot.com

Page 643: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio UART1_Read_Text (char * Saída, char * Delimitador, char As tentativas);

Retorna Nada.

Descrição

Lê caracteres recebidos via UART até a seqüência delimitador é detectado. A seqüência de leitura é armazenado no parâmetro saída; seqüência delimitador é armazenado no parâmetro delimitador.

Esta é uma chamada de bloqueio: a seqüência delimitador Espera-se, caso contrário

o proce- mento sai (se o delimitador não é encontrado). Parâmetro Tentativas define o número de caracteres recebidos em que Delimitador seqüência é esperado Se Tentativas é definido Requer UART módulo HW deve ser inicializado e comunicação estabelecida antes

usar essa função. Veja UART1_Init.

Exemplo

Leia o texto até a seqüência de "OK" é recebida, e enviar de volta o que é foram recebidos:

UART1_Init (4800) / / inicializar o módulo UART1 Delay_ms (100);

enquanto (1) { se (UART1_Data_Ready () == 1) {/ / se os dados são recebidos

UART1_Read_Text (saída ", delim", 10) / / lê o texto até "Delim 'é encontrado

UART1_Write_Text (output); / / envia o texto }

}

Protótipo vazio UART1_Write (char _data);

Retorna Nada.

Descrição A função transmite um byte através do módulo de UART.

Parâmetros: _data: dados a serem enviados

Requer UART módulo HW deve ser inicializado e comunicação estabelecida antes usar essa função. Veja UART1_Init.

Exemplo unsigned char _data = 0x1E; ... UART1_Write (_data);

CAPÍTULO 7

mikroC PRO para PIC

UART1_Read_Text

UART1_Write

Bibliotecas

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

555

www.mecatronicadegaragem.blogspot.com

Page 644: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio UART_Set_Active (char (* Read_ptr) (), vazio (* Write_ptr) (unsigned char data_), char (Ready_ptr) (), char (* Tx_idle_ptr) ())

Retorna Nada.

Descrição

Define módulo UART ativos que serão usados pelas rotinas de biblioteca UART.

Parâmetros:

- read_ptr: manipulador UART1_Read - write_ptr: manipulador UART1_Write - ready_ptr: UART1_Data_Ready manipulador - tx_idle_ptr: manipulador UART1_Tx_Idle

Requer A rotina é disponível apenas para MCUs com dois módulos UART.

Usado módulo UART deve ser inicializado antes de utilizar esta rotina. Veja UART1_Init rotina

Exemplo / / Ativar módulo UART2 UART_Set_Active (& UART1_Read & UART1_Write & UART1_Data_Ready, & UART1_Tx_Idle);

Protótipo vazio UART1_Write_Text (char * UART_text);

Retorna Nada.

Descrição Envia texto (UART_text parâmetro) via UART. O texto deve ser zero encerrado.

Requer UART módulo HW deve ser inicializado e comunicação estabelecida antes usar essa função. Veja UART1_Init.

Exemplo

Leia o texto até a seqüência de "OK" é recebida, e enviar de volta o que foi recebido:

UART1_Init (4800); / / inicializa UART1 módulo Delay_ms (100);

enquanto (1) { se (UART1_Data_Ready () == 1) {/ / se os dados são recebidos

UART1_Read_Text (saída ", delim", 10) / / lê o texto até "Delim 'é encontrado

UART1_Write_Text (output); / / envia o texto }

}

CAPÍTULO 7 Bibliotecas

UART1_Write_Text

UART_Set_Active

mikroC PRO para PIC

556

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

www.mecatronicadegaragem.blogspot.com

Page 645: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

O exemplo demonstra uma simples troca de dados via UART. Quando PIC MCU recebe os dados, ele imediatamente envia-lo de volta. Se o PIC é ligado ao PC (ver o figura abaixo), você pode testar o exemplo da mikroC PRO para PIC terminal para Comunicação RS-232, opção de menu Ferramentas > Terminal.

char uart_rd;

vazio main () {

UART1_Init (9600);

bps Delay_ms (100);

lize

enquanto (1) { se (UART1_Data_Ready ()) {

uart_rd UART1_Read = (); UART1_Write (uart_rd);

} }

}

/ / Inicializa o módulo UART em 9600 / / Espera módulo UART para estabili- / / Loop infinito / / Se os dados são recebidos, / / Lê os dados recebidos, / / E enviar dados via UART

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

557

www.mecatronicadegaragem.blogspot.com

Page 646: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

HW Conexão

RS-232 HW

mikroC PRO para PIC

558

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

www.mecatronicadegaragem.blogspot.com

Page 647: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

USB HID BIBLIOTECA

Universal Serial Bus (USB) fornece um barramento serial padrão para conectar uma ampla variedade de dispositivos, incluindo computadores, telefones celulares, consoles de jogos, PDA's, etc

mikroC PRO para PIC inclui uma biblioteca para trabalhar com dispositivos de interface humana através Universal Serial Bus. Um dispositivo de interface humana ou HID é uma tipo de dispositivo de computador que interage diretamente com os e leva a entrada de seres humanos, tais como o teclado, mouse, mesa digitalizadora, e assim por diante.

O descritor de arquivos

Cada projeto baseado na biblioteca HID USB deve incluir um arquivo de origem descritor que contém identificação do fornecedor e nome, identificação do produto e nome, comprimento relatório, e outros informações relevantes. Para criar um arquivo descritor, o uso integrado USB HID termi- nal de mikroC PRO para PIC (Ferramentas> Terminal USB HID). O nome padrão para arquivo descritor é USBdsc.c, mas você pode renomeá-lo.

O código fornecido na "Exemplos" obras de pasta de 48MHz, e as bandeiras não podem ser alterados sem consultar a ficha apropriada em primeiro lugar.

Rotinas da biblioteca

- - - -

Hid_Enable Hid_Read Hid_Write Hid_Disable

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

www.mecatronicadegaragem.blogspot.com

Page 648: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

559

www.mecatronicadegaragem.blogspot.com

Page 649: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo não assinado curto Hid_Write (unsigned writebuff, unsigned short len);

Retorna 1 se os dados foram enviados com sucesso, 0 se não.

Descrição

Função envia dados do buffer de escrita writebuff para hospedar. Escrever é o Buffer mesmo parâmetro utilizado na inicialização; Hid_Enable ver. Parâmetro len devem especificar o tamanho dos dados a serem transmitidos.

Chamada de função necessita de ser repetida, desde que os dados não são

Requer HID USB precisa ser ativada antes de usar esta função. Veja Hid_Enable.

Exemplo / / Repetir até o sucesso. while (Hid_Write (& my_Usb_Buff, 1)!);

Protótipo vazio Hid_Enable (unsigned readbuff, não assinado writebuff);

Retorna Nada.

Descrição

Permite a comunicação USB HID. Parâmetros readbuff e writebuff são O buffer de leitura e de gravação do buffer, respectivamente, os quais são utilizados para com HID- de comunicação.

Esta função precisa ser chamada antes de usar outras rotinas de USB HID Biblioteca Requer Nada. Exemplo Hid_Enable (& rd, wr &);

Protótipo unsigned char Hid_Read (void);

Retorna Número de caracteres no buffer de leitura recebidos do host.

Descrição Recebe a mensagem de acolhimento e armazena no buffer de leitura. função retorna ú d bid b ff d l i Requer HID USB precisa ser ativada antes de usar este função. Veja Hid_Enable.

Exemplo obter Hid_Read = ();

CAPÍTULO 7 Bibliotecas

Hid_Enable

Hid_Read

Hid_Write

mikroC PRO para PIC

560

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

www.mecatronicadegaragem.blogspot.com

Page 650: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Hid_Disable (void);

Retorna Nada.

Descrição Desativa a comunicação USB HID.

Requer HID USB precisa ser ativada antes de usar esta função. Veja Hid_Enable.

Exemplo Hid_Disable ();

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Hid_Disable

Exemplo Biblioteca

O exemplo a seguir envia continuamente seqüência de números de 0 .. 255 para o PC via Universal Ser- ial de ônibus. usbdsc.c devem ser incluídas no projeto (via mikroC PRO para PIC ferramenta IDE ou via # Include mecanismo de código fonte).

unsigned short m, k; unsigned short userRD_buffer [64]; unsigned short userWR_buffer [64];

vazio interrupt () {

asm CALL _Hid_InterruptProc nop asm

}

void Init_Main () {

/ / Desativar todas as interrupções / / Disable GIE, PEIE, TMR0IE INT0IE, RBIE INTCON = 0; INTCON2 0xF5 =; INTCON3 = 0xC0; / / Desactivar Níveis de prioridade na interrupções RCON.IPEN = 0; PIE1 = 0; PIE2 = 0; TIP1 = 0; PIR2 = 0;

/ / Configura todas as portas com função analógica como digital ADCON1 | = 0x0F;

/ / Configuração de Portas TRISA = 0; TRISB = 0; TRISC = 0xFF; TRISD = 0xFF; TRISE = 0x07;

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

www.mecatronicadegaragem.blogspot.com

Page 651: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

LATA LATB LATC LATD TARDE

= = = = =

0; 0; 0; 0; 0;

/ / RAM usuário Limpar / / Bancos [00 .. 07] (8 x 256 = 2048 bytes) asm {

LFSR FSR0, 0x000 MOVLW 0x08 CLRF POSTINC0, 0 CPFSEQ FSR0H, 0 BRA $ - 2

}

/ Timer / 0 T0CON = 0x07; TMR0H => (65536-156)> 8; TMR0L = (65536-156) e 0xFF; INTCON.T0IE = 1 / / Enable T0IE T0CON.TMR0ON = 1;

}

/ ** Rotina programa principal ** /

vazio main () {

Init_Main (); Hid_Enable (& userRD_buffer & userWR_buffer);

fazer {

para (K = 0; k <255; k + +) { / / Prepara buffer de envio userWR_buffer [0] = k;

/ / Envia a Número via USB Hid_Write (& userWR_buffer, 1);

} } enquanto (1);

Hid_Disable ();

}

562

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

www.mecatronicadegaragem.blogspot.com

Page 652: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC

Conexão HW

Esquema de conexão USB

Bibliotecas

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

563

www.mecatronicadegaragem.blogspot.com

Page 653: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Padrão ANSI C bibliotecas

mikroC PRO para PIC

- ANSI - ANSI - ANSI - ANSI

C C C C

Ctype Biblioteca Biblioteca de Matemática Stdlib Biblioteca String Biblioteca

Biblioteca Ctype ANSI C

A mikroC PRO para PIC fornece um conjunto de funções da biblioteca padrão ANSI C para o teste- ção e mapeamento de caracteres.

Nota: Nem todos os funções padrão foram incluídos.

Nota: As funções têm sido quase sempre executado de acordo com os padrões ANSI C- dard, mas algumas funções têm sido modificados de modo a facilitar programa PIC- ming. Certifique-se de percorrer a descrição antes usando funções C padrão.

Funções da biblioteca

- - - - - - - - - - - -

isalnum isalpha iscntrl isdigit isgraph islower ispunct isspace isupper isxdigit toupper tolower

564

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

www.mecatronicadegaragem.blogspot.com

Page 654: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short isalpha (char personagem);

Descrição A função retorna 1 se o caráter é alfabética (A-Z, um-z), caso contrário, retorna zero.

Protótipo unsigned short isalpha (char personagem);

Descrição A função retorna 1 se o caráter é alfanumérico (A-Z, um-z, 0-9), caso contrário retorna zero.

Protótipo unsigned short iscntrl (char personagem);

Descrição A função retorna 1 se o caráter é um controle ou eliminar caracter (decimal 0 - 31 e 127), caso contrário retorna zero.

Protótipo unsigned short isgraph (char personagem);

Descrição A função retorna 1 se o caráter é uma impressão, excluindo o espaço (decimal 32), caso contrário retorna zero.

CAPÍTULO 7

mikroC PRO para PIC

isalnum

isalpha

iscntrl

isdigit

isgraph

islower

ispunct

Bibliotecas

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

565

www.mecatronicadegaragem.blogspot.com

Page 655: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short ispunct (char personagem);

Descrição A função retorna 1 se o caráter é uma pontuação (decimal 32-47, 58-63, 91 - 96, 123-126), caso contrário retorna zero.

Protótipo int islower (char personagem);

Descrição A função retorna 1 se o caráter é uma letra minúscula (a-z), caso contrário, retorna zero.

Protótipo unsigned short isdigit (char personagem);

Descrição A função retorna 1 se o caráter é um dígito (0-9), caso contrário retorna zero.

www.mecatronicadegaragem.blogspot.com

Page 656: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short isspace (char personagem);

Descrição A função retorna 1 se o caráter é um espaço em branco (espaço, tabulação, CR, HT, VT, NL, FF), caso contrário retorna zero.

Protótipo unsigned short isupper (char personagem);

Descrição A função retorna 1 se o caráter é uma letra maiúscula (A-Z), caso contrário retorna zero.

Protótipo unsigned short isxdigit (char personagem);

Descrição A função retorna 1 se o caráter é um dígito hexadecimal (0-9, A-F, a-f), caso contrário

Protótipo unsigned short toupper (char personagem);

Descrição Se o caráter é uma letra minúscula (az), a função retorna uma maiúscula carta. Caso contrário, a função retorna um parâmetro de entrada inalterado.

Protótipo unsigned short tolower (char personagem);

Descrição Se o caráter é uma letra maiúscula (AZ), a função retorna uma minúscula deixe- ter. Caso contrário, a função retorna um parâmetro de entrada inalterado.

CAPÍTULO 7 Bibliotecas

isspace

isupper

isxdigit

toupper

tolower

mikroC PRO para PIC

566

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

www.mecatronicadegaragem.blogspot.com

Page 657: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Biblioteca matemática ANSI C

A mikroC PRO para PIC fornece um conjunto de biblioteca padrão ANSI C funções para manipulação matemática de ponto flutuante.

Nota: Nem todas as funções padrão foram incluídos.

Nota: As funções têm sido quase sempre executado de acordo com os padrões ANSI C- dard, mas algumas funções têm sido modificados de modo a facilitar programa PIC- ming. Certifique-se de percorrer a descrição antes de usar funções C padrão.

Funções da biblioteca

- - - - - - - - - - - - - - - - - - - - - -

acos asin atan atan2 ceil cos cosh eval_poly exp fabs andar frexp ldexp log log10 modf pow pecado sinh sqrt bronzeado tanh

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

567

www.mecatronicadegaragem.blogspot.com

Page 658: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla atan2 (duplo y, dupla x);

Descrição Esta é a dois argumentos da função arco tangente. É semelhante ao cálculo do arco tangente y / x, exceto que os sinais de ambos argumentos são usados para determinar o quadrante do resultado e x é permitida a zero. O retorno valor está em

di Π Π (I l i )

Protótipo dupla asin (duplo x);

Descrição A função retorna o arco seno de parâmetro x, ou seja, o valor cujo seno é x. O parâmetro de entrada x deve estar entre -1 e 1 (inclusive). O retorno valor é em radianos, entre-Π / 2 eΠ / 2 (inclusive).

Protótipo dupla acos (double x);

Descrição Função retorna o arco cosseno de parâmetro x, ou seja, o valor cujo cosseno é x. O parâmetro de entrada x deve estar entre -1 e 1 (inclusive). A retorno valor é em radianos entre 0 e Π (Inclusive).

Protótipo dupla atan (double f);

Descrição Função calcula o arco tangente de parâmetro f, isto é, o valor cujo tan- gent é f. O valor de retorno é em radianos entre-Π / 2 e Π / 2 (Inclusive).

Protótipo dupla cos (double f);

Descrição A função retorna o cosseno de f em radianos. O valor de retorno é de -1 a 1.

CAPÍTULO 7 Bibliotecas

acos

asin

atan

atan2

ceil

cos

mikroC PRO para PIC

568

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

www.mecatronicadegaragem.blogspot.com

Page 659: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla ceil (double x);

Descrição Função retorna o valor do parâmetro x arredondado para o próximo número i t i

www.mecatronicadegaragem.blogspot.com

Page 660: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla frexp (duplo valor, int * Eptr);

Descrição Função divide um valor de ponto flutuante em uma fração normalizada e um integrante potência de 2. O valor de retorno é normalizado fração eo expoente inteiro é d bj d

Protótipo dupla cosh (duplo x);

Descrição A função retorna o cosseno hiperbólico de x, definida matematicamente como (Ex + e-x) / 2.

Se

Protótipo estático duplo eval_poly (duplo x, const dupla Código * d, int n);

Descrição Função polinómio Calcula para o número x, com coeficientes armazenados em d [], para

Protótipo dupla exp (double x);

Descrição A função retorna o valor de e - a base dos logaritmos naturais - levantadas para o poder x (ou seja, ex).

CAPÍTULO 7

mikroC PRO para PIC

cosh

eval_poly

exp

fabs

andar

frexp

ldexp

Bibliotecas

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

569

www.mecatronicadegaragem.blogspot.com

Page 661: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla ldexp (duplo valor, int newexp);

Descrição Função retorna o resultado da multiplicação do número de ponto flutuante Num. por 2

Protótipo dupla fabs (double d);

Descrição A função retorna o valor (ou seja, positivo) absoluta de d.

Protótipo dupla andar (dupla x);

Descrição A função retorna o valor do parâmetro x arredondado para o número inteiro mais ó i

www.mecatronicadegaragem.blogspot.com

Page 662: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla modf (duplo val, dupla * Iptr);

Descrição Retorna o argumento val divisão para a parte fracionária (função val ida e volta) e inteiro parte (em iptr número).

Protótipo dupla pow (double x, dupla y);

Descrição A função retorna o valor de x elevado à potência y (ou seja, xy). Se x é negativo, a função será automaticamente elenco y em unsigned long.

Protótipo dupla sinh (duplo x);

Descrição Função Retorna o seno hiperbólico de x, definida matematicamente como (Ex-e- x) / 2. Se o valor da x é muito grande (se ocorrer estouro), a função falha.

Protótipo dupla sqrt (double x);

Descrição A função retorna a raiz quadrada não negativa de x.

Protótipo dupla log (double x);

Descrição A função retorna o logaritmo natural de x (ou seja, loge (x)).

CAPÍTULO 7 Bibliotecas

log

log10

modf

pow

pecado

sinh

sqrt

mikroC PRO para PIC

570

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

www.mecatronicadegaragem.blogspot.com

Page 663: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla log10 (double x);

Descrição A função retorna o logaritmo de base 10 de x (ou seja, log10 (x)).

Protótipo dupla sin (double f);

Descrição A função retorna o seno de f em radianos. O valor de retorno é de -1 a 1.

www.mecatronicadegaragem.blogspot.com

Page 664: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla tan (double x);

Descrição A função retorna a tangente de x em radianos. A retorno abrange o valor intervalo permitido de ponto flutuante no mikroC PRO para a PIC.

Protótipo dupla tanh (duplo x);

Descrição A função retorna a tangente hiperbólica de x, definida matematicamente como sinh (x) / cosh (x).

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

bronzeado

tanh

ANSI C Stdlib Biblioteca

A mikroC PRO para PIC fornece um conjunto de funções da biblioteca padrão ANSI C de utilidade geral.

Nota: Nem todas as funções padrão foram incluídos.

Nota: As funções têm sido quase sempre executado de acordo com o padrão ANSI C, mas certos funções foram alteradas a fim de facilitar a programação de PIC. Certifique-se de percorrer o descrição antes de usar funções C padrão.

Funções da biblioteca

- - - - - - - - - - - - -

abs atof atoi atol div ldiv uldiv laboratórios max min rand srand xtoi

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

571

www.mecatronicadegaragem.blogspot.com

Page 665: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo dupla atof (char * S)

Descrição

Função converte a seqüência de entrada s em um valor de precisão dupla e retorna o valor. Seqüência de entrada s deve estar em conformidade com o formato de ponto flutuante literal, com uma espaços opcionais no início. A seqüência será processada uma personagem ao mesmo tempo, até que a função atinge um personagem que ele não reconhece (inclu- ã t l )

Protótipo int atoi (char * S);

Descrição

Função converte a seqüência de entrada s em um valor inteiro e retorna o valor. A seqüência de entrada s deveria consistir exclusivamente de casas decimais, com um opcional branco e um sinal no início. A seqüência será processada uma ca- ter de cada vez, até o função atinge um personagem que não reconhece (I l i d t l )

Protótipo tempo atol (char * S)

Descrição

Função converte a seqüência de entrada s em um valor inteiro e retorna o valor. A seqüência de entrada s deve consistir exclusivamente de casas decimais, com espaços opcionais e um sinal no início. A seqüência será processada uma caracteres de cada vez, até que a função atinge um personagem que não reconhece Ni (i l i d t l )

Protótipo div_t div (int número, int denom);

Descrição Função calcula o resultado da divisão do numerador número por denom a- inator denom, a função retorna uma estrutura do tipo div_t compreendendo quociente (Quot) eo restante (REM), ver Div. Estruturas.

Protótipo int abs (int a);

Descrição A função retorna o valor (ou seja, positivo) absoluta de a.

CAPÍTULO 7 Bibliotecas

abs

atof

atoi

atol

div

mikroC PRO para PIC

572

Mikroelektronika - Software e Soluções de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

Page 666: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo ldiv_t ldiv (long número, tempo denom);

Descrição

A função é semelhante à função div, exceto que os argumentos eo resultado membros de estrutura têm tipo tempo.

Função calcula o resultado da divisão do numerador número por denom a- inator denom, a função retorna uma estrutura do tipo ldiv_t compreendendo quo- paciente (quot) eo restante (REM), consulte Estruturas Div.

Protótipo uldiv_t uldiv (unsigned long número, unsigned long denom);

Descrição

A função é semelhante à função div, exceto que os argumentos eo resultado membros de estrutura têm tipo unsigned long.

Função calcula a resultado da divisão do numerador número por denom a- inator denom, a função retorna uma estrutura do tipo uldiv_t compreendendo quo- paciente (quot) eo restante (REM), ver Div. Estruturas.

Protótipo int rand ();

Descrição Função retorna um seqüência de números pseudo-aleatório entre 0 e 32767. A função será sempre produzir a mesma seqüência de números a menos srand é chamado para semear o ponto de partida.

Protótipo int max (int um, int b);

Descrição A função retorna maior dos dois inteiros, um e b.

CAPÍTULO 7

mikroC PRO para PIC

ldiv

uldiv

laboratórios

max

min

rand

Bibliotecas

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

573

www.mecatronicadegaragem.blogspot.com

Page 667: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo int min (int um, int b);

Descrição A função retorna menor dos dois números inteiros, um e b.

Protótipo tempo laboratórios (de longo x);

Descrição A função retorna o valor (ou seja, positivo) absoluta de inteiro longo x.

www.mecatronicadegaragem.blogspot.com

Page 668: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo não assinado xtoi (registo char * S);

Descrição

Função converte a seqüência de entrada s composto de dígitos hexadecimais em uma inte- ger valor. O parâmetro de entrada s deveria consistir exclusivamente de cavar hexadecimal seu, com um espaço em branco opcional e um sinal na início. A seqüência será processado um personagem de cada vez, até que a função atinge um personagem que não reconhece (incluindo um caractere nulo).

Protótipo vazio srand (unsigned x);

Descrição Função usa x como ponto de partida para uma nova seqüência de números pseudo-aleatórios- membros a ser devolvido por chamadas subseqüentes para rand. Nenhum valor é

d

CAPÍTULO 7 Bibliotecas

srand

xtoi

Div. Estruturas

typedef struct divstruct { int quot; int REM;

Div_t};

typedef struct ldivstruct { tempo quot; tempo REM;

Ldiv_t};

typedef struct uldivstruct { unsigned long quot; unsigned long REM;

Uldiv_t};

mikroC PRO para PIC

574

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

www.mecatronicadegaragem.blogspot.com

Page 669: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Biblioteca C ANSI String

A mikroC PRO para PIC fornece um conjunto de funções da biblioteca padrão ANSI C útil para manipular strings e memória RAM.

Nota: Nem todas as funções padrão foram incluídos.

Nota: Funções têm sido maioritariamente implementados de acordo com o padrão ANSI C, mas algumas funções têm sido modificados de modo a facilitar a programação de PIC. Seja Certifique-se de percorrer a descrição antes de usar funções C padrão.

Funções da biblioteca

- - - - - - - - - - - - - - - - - -

memchr memcmp memcpy memmove memset strcat strchr strcmp strcpy strlen strncat strncpy strspn strncmp strstr strcspn strpbrk strrchr

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

575

www.mecatronicadegaragem.blogspot.com

Page 670: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio * Memchr (void * P, char n, unsigned int v);

Descrição

Função localiza a primeira ocorrência de n em inicial v bytes da área de memória iniciando no endereço p. A função retorna o ponteiro para esse local ou 0 se o n não foi encontrado. Para o parâmetro p você pode usar um valor numérico (literal / / variável constante) indicando o endereço de memória ou dereferenced valor de um objeto, por exemplo i

Protótipo int memcmp (void * S1, vazio * S2, int n);

Descrição

Função compara o primeiro n caracteres de objetos apontados por s1 e s2 e retorna zero se os objetos são iguais, ou retorna a diferença entre a diferença do primeiro causador da interferência caracteres (em uma avaliação da esquerda para a direita). Assim o resultado é maior que zero se o objeto apontado por s1 é maior

Protótipo vazio * Memcpy (void * D1, vazio * S1, int n);

Descrição cópias Função n caracteres do objeto apontado por s1 para o objeto de ponto ed pelo d1. Se a cópia ocorre entre os objetos que se sobrepõem, o comportamento é indefinido A função retorna endereço do objeto apontado por d1

Protótipo vazio * Memmove (void * A, vazio * A partir de, registo int n);

Descrição cópias Função n caracteres do objeto apontado por a partir de para o objeto apontado por para. Ao contrário memcpy, as áreas de memória para e a partir de podem se sobrepor. A f ã t d d bj t t d

Protótipo vazio * Memset (void * P1, char personagem, int n)

Descrição função copia o valor da caráter em cada um dos primeiros n caracteres o objeto apontado por p1. A função retorna endereço do objeto apontado por p1.

CAPÍTULO 7 Bibliotecas

memchr

memcmp

memcpy

memmove

memset

mikroC PRO para PIC

576

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

www.mecatronicadegaragem.blogspot.com

Page 671: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char * Strcat (char * A, char * A partir de);

Descrição

Função anexa uma cópia da string a partir de para a cadeia para, substituindo o nulo personagem no final da para. Então, um caractere nulo de terminação é adicionado à resultado. Se a cópia ocorre entre os objetos que se sobrepõem, o comportamento é unde- multado. para cadeia deve ter espaço suficiente para armazenar o resultado. A função retorna

Protótipo char * Strchr (char * Ptr, char CDH);

Descrição Função localiza a primeira ocorrência do caractere chr na seqüência ptr. A fun- ção retorna um ponteiro para a primeira ocorrência de caráter chr, ou um ponteiro nulo se chr não ocorre no ptr. O caractere nulo de terminação é considerado um parte da cadeia

Protótipo int strcmp (char * S1, char * S2);

Descrição Função compara strings s1 e s2 e retorna zero se o seqüências são iguais, ou retorna uma diferença entre os primeiros caracteres diferentes (em um ava da esquerda para a direita ation). Assim, o resultado é maior que zero se s1 é maior do que s2 e vice-

Protótipo char * Strcpy (char * A, char * A partir de);

Descrição função copia a string a partir de na seqüência para. Se a cópia for bem sucedida, o retorna a função. Se a cópia ocorre entre os objetos que se sobrepõem, o

CAPÍTULO 7

mikroC PRO para PIC

strcat

strchr

strcmp

strcpy

strlen

Bibliotecas

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

577

www.mecatronicadegaragem.blogspot.com

Page 672: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo int strlen (char * S);

Descrição Função retorna o comprimento da corda s (O caractere nulo final não imputados comprimento da corda é).

www.mecatronicadegaragem.blogspot.com

Page 673: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo int strncmp (char * S1, char * S2, char len);

Descrição

Função lexicographically compara não superior a len (caracteres que seguem o caractere nulo não comparados) da string apontada por s1 para a string apontada por s2. A função retorna um valor que indica o s1 e s2 relação:

Valor Significado <0 s1 "menor que" s2 = 0 s1 "igual" s2 > 0 s1 "maior que" s2

Protótipo char * Strncat (char * A, char * A partir de, int tamanho);

Descrição Função não acrescenta mais do que tamanho caracteres da string a partir de para para. A caráter inicial da a partir de substitui o caractere nulo no final do para. O termi- caractere nulo de NAT é sempre anexado ao resultado. A função retorna para.

Protótipo char * Strncpy (char * A, char * A partir de, int tamanho);

Descrição cópias de função não superior a tamanho caracteres da string a partir de para para. Se copiar ING tem lugar entre os objetos que se sobrepõem, o comportamento é indefinido. Se a partir de é d t id t á f hid

Protótipo int strspn (char * Str1, char * Str2);

Descrição Função retorna o comprimento do segmento inicial máximo de str1 que consiste inteiramente de caracteres str2. O caracter nulo que encerra no final do string não é comparado.

CAPÍTULO 7 Bibliotecas

strncat

strncpy

strspn

strncmp

mikroC PRO para PIC

578

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

www.mecatronicadegaragem.blogspot.com

Page 674: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo char * Strcspn (char * S1, char * S2);

Descrição

Função calcula o comprimento do segmento inicial máximo do ponto de cordas ed pelo s1 que consiste inteiramente de caracteres que não estão na cadeia de caracteres apontada pelo s2.

A função retorna o comprimento do segmento inicial

Protótipo char * Strstr (char * S1, char * S2);

Descrição

Função localiza a primeira ocorrência da string s2 em a cadeia s1 (Excluindo o caractere nulo de terminação).

A função retorna ponteiro para a primeira ocorrência de s2 em s1; se a string foi

encontrada

Protótipo char * Strrchr (char * Ptr, unsigned int CDH);

Descrição Função de procura na string ptr para a ocorrência do caractere chr. A caractere nulo de terminação ptr não está incluído na pesquisa. A função retorna ponteiro para o último chr encontrada em ptr, se nenhuma correspondência caractere foi encontrado, a função retorna 0

Protótipo char * Strpbrk (char * S1, char * S2);

Descrição Função procura s1 para a primeira ocorrência de qualquer caractere da seqüência s2. O caractere nulo final não está incluído na pesquisa. A função retorna ponteiro para o caractere correspondente na s1. Se s1 não contém caracteres de s2, o função retorna 0.

CAPÍTULO 7

mikroC PRO para PIC

strstr

strcspn

strpbrk

strrchr

Bibliotecas

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

579

www.mecatronicadegaragem.blogspot.com

Page 675: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

BIBLIOTECAS DIVERSAS

- Biblioteca Button - Conversões Biblioteca - Sprint Biblioteca - Setjmp Biblioteca - Time Library - Trigonometria Biblioteca

mikroC PRO para PIC

580

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

www.mecatronicadegaragem.blogspot.com

Page 676: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Button (unsigned short * Porto, unsigned short pino, unsigned short tempo, unsigned short active_state);

Retorna Retorna 0 ou 255.

Descrição

Função elimina a influência de cintilação contato após pressionar um botão (Debouncing).

Parâmetro porto especifica a localização do botão; parâmetro pinos é o pino número do designado porto e vai de 0 .. 7; parâmetro tempo é um debounce período em milissegundos; parâmetro active_state pode ser 0 ou 1, e deter- minas se o botão está ativo em zero lógica ou lógica.

Requer Button pino deve ser configurado como entrada.

Exemplo

Exemplo lê RB0, para que o botão é ligado, na transição de 1-0 (Liberação de botão), PORTD é invertida:

fazer { se (Button (& PORTB, 0, 1, 1)) oldstate = 1; se (Oldstate Button & & (& PORTB, 0, 1, 0)) {

PORTD = ~ PORTD; oldstate = 0;

} } while (1);

CAPÍTULO 7

mikroC PRO para PIC

BOTÃO DE BIBLIOTECA

A biblioteca contém rotinas Button miscelânea útil para o desenvolvimento do projeto.

Rotinas da biblioteca

- Button

Button

Bibliotecas

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

581

www.mecatronicadegaragem.blogspot.com

Page 677: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

CONVERSÕES DE BIBLIOTECA A mikroC PRO para PIC Conversões Biblioteca disponibiliza rotinas para numerais para cordas e BCD / conversões decimal. Rotinas da biblioteca Você pode obter representação de texto do valor numérico passando-a para um dos follow- ing rotinas:

- - - - - - -

ByteToStr ShortToStr WordToStr IntToStr LongToStr LongWordToStr FloatToStr

As seguintes funções converter valores decimais em BCD e vice-versa:

- Dec2Bcd - Bcd2Dec16 - Dec2Bcd16

582

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

www.mecatronicadegaragem.blogspot.com

Page 678: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio ShortToStr (curto entrada, char * Saída);

Retorna Nada.

Descrição

Converte entrada assinado pequeno número em uma string. A seqüência de saída tem de largura fixa de 5 caracteres, incluindo o caracter nulo no final (terminação de cadeia). A saída string é justificado à direita e posições restantes do lado esquerdo (se houver) são preenchidos com espaços em branco.

Parâmetros:

t d pequeno número a ser convertido

Requer string de destino deve ser de pelo menos 5 caracteres de comprimento.

Exemplo curto t = -24; char txt [5]; ... ShortToStr (t, txt) / / txt é "-24" (um branco aqui)

Protótipo vazio ByteToStr (unsigned short entrada, char * Saída);

Retorna Nada.

Descrição

Converte o byte de entrada para uma seqüência. A seqüência de saída tem de largura fixa de 4 caracteres incluindo nulo personagem no final (terminação de cadeia). A seqüência de saída é direito justificados e restantes posições à esquerda (se houver) são preenchidos com espaços em branco.

Parâmetros:

Requer string de destino deve ter no mínimo 4 caracteres de comprimento.

Exemplo unsigned short t = 24; char txt [4]; ... ByteToStr (t, txt) / / txt é "24" (um branco aqui)

CAPÍTULO 7

mikroC PRO para PIC

ByteToStr

ShortToStr

Bibliotecas

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

583

www.mecatronicadegaragem.blogspot.com

Page 679: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio IntToStr (int entrada, char * Saída);

Retorna Nada.

Descrição

Converte entrada assinado número inteiro para uma string. A seqüência de saída tem de largura fixa de 7 caracteres, incluindo o caracter nulo no final (terminação de cadeia). A saída string é justificado à direita e as posições restantes do lado esquerdo (Se houver) são preenchidos com espaços em branco.

Parâmetros:

t d número inteiro assinado a ser convertido

Requer string de destino deve ser de pelo menos sete caracteres de comprimento.

Exemplo int j = -4220; char txt [7]; ... IntToStr (j, txt) / / txt é "-4220" (em branco aqui)

Protótipo vazio WordToStr (unsigned entrada, char * Saída);

Retorna Nada.

Descrição

Converte palavra de entrada em uma seqüência. A seqüência de saída tem de

largura fixa de 6 caracteres incluindo o caractere nulo no final (string terminação). A seqüência de saída é direito justificadas e as posições restantes do lado esquerdo (se houver) são preenchidos com espaços em branco.

Parâmetros:

t d palavra a ser convertida

Requer string de destino deve ser de pelo menos 6 caracteres de comprimento.

Exemplo não assinado t = 437; char txt [6]; ... WordToStr (t, txt) / / txt é "437" (dois espaços em branco aqui)

CAPÍTULO 7 Bibliotecas

WordToStr

IntToStr

mikroC PRO para PIC

584

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

www.mecatronicadegaragem.blogspot.com

Page 680: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio LongToStr (long entrada, char * Saída);

Retorna Nada.

Descrição

Converte entrada assinado longo número inteiro para uma string. A seqüência de saída tenha sido fixada largura de 12 caracteres, incluindo o caracter nulo no final (terminação de cadeia). A seqüência de saída está justificado a direita e as posições restantes do lado esquerdo (se houver) preenchido com espaços em branco.

Parâmetros:

t d i d ú i t i l tid

Requer string de destino deve ser de pelo menos 12 caracteres de comprimento.

Exemplo

tempo jj = -3700000; char txt [12]; ... LongToStr (txt, jj); / / txt é "-3700000" (três espaços em branco aqui)

Protótipo vazio LongWordToStr (unsigned long entrada, char * Saída);

Retorna Nada.

Descrição

Converte um número inteiro de entrada unsigned long para uma string. A seqüência de saída tem largura fixa de 11 caracteres incluindo o caractere nulo no final (terminação de cadeia). A seqüência de saída é justificado à direita e as posições restantes do lado esquerdo (se houver) são preenchidos com espaços em branco.

Parâmetros:

t d número inteiro sem sinal por muito tempo para ser convertido

Requer string de destino deve ter pelo menos 11 caracteres de comprimento.

Exemplo

unsigned long jj = 3700000; char txt [11]; ... LongToStr (txt, jj); / / Txt é "3700000" (três espaços em branco aqui)

CAPÍTULO 7

mikroC PRO para PIC

LongintToStr

LongWordToStr

Bibliotecas

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

585

www.mecatronicadegaragem.blogspot.com

Page 681: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned char FloatToStr (float fnum, unsigned char * Str);

Retorna - 3 se o número de entrada é NaN 2 - se o número de entrada é-INF - 1 se o número de entrada é INF + - 0 se a conversão foi bem-sucedida

Descrição

Converte uma variável número do ponto em uma string.

Parâmetros:

- entrada: número de ponto flutuante para ser convertido - saída: string de destino

A seqüência de saída é justificada à esquerda e nulos rescindido após o último

dígito.

Nota: maior número de ponto flutuante Dado será truncado para 7 dígitos

Requer string de destino deve ter pelo menos 14 caracteres de comprimento.

Exemplo

flutuar FF1 = -374,2; flutuar ff2 123,456789 =; flutuar ff3 0,000001234 =; char txt [15]; ... FloatToStr (FF1, txt); / / txt é "-374,2" FloatToStr (FF2, txt); / / txt é "123,4567" FloatToStr (ff3, txt); / / txt é "1.234e-6"

CAPÍTULO 7 Bibliotecas

FloatToStr

mikroC PRO para PIC

586

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

www.mecatronicadegaragem.blogspot.com

Page 682: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo unsigned short Dec2Bcd (unsigned short decnum);

Retorna Convertido BCD valor.

Descrição

Converte um número inteiro de entrada unsigned short a sua representação BCD apro- ção.

Parâmetros:

d número inteiro curto sem sinal a ser convertido Requer Nada.

Exemplo unsigned short a, b; ... uma = 22; Dec2Bcd b = (a); / b igual a 34

Protótipo não assinado Bcd2Dec16 (unsigned bcdnum);

Retorna valor decimal de conversão.

Descrição

Converte 16 bits BCD numeral para seu equivalente decimal.

Parâmetros:

- bcdnum: 16 bits BCD numeral a ser convertido

Requer Nada.

Exemplo não assinado a, b; ... a = 0x1234 / / a é igual a 4660 b = Bcd2Dec16 (a), / b / é igual a 1234

CAPÍTULO 7

mikroC PRO para PIC

Dec2Bcd

Bcd2Dec16

Bibliotecas

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

587

www.mecatronicadegaragem.blogspot.com

Page 683: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo não assinado Dec2Bcd16 (unsigned decnum);

Retorna Convertido valor BCD.

Descrição

Converte o valor decimal sem sinal de 16 bits para seu equivalente em BCD.

Parâmetros:

- decnum número de 16 bits sem sinal decimal a ser convertido

Requer Nada.

Exemplo não assinado a, b; ... = 2345 um; b = Dec2Bcd16 (a), / b / é igual a 9029

CAPÍTULO 7 Bibliotecas

Dec2Bcd16

mikroC PRO para PIC

588

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

www.mecatronicadegaragem.blogspot.com

Page 684: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio PrintOut (void (* Prntoutfunc) (char ch), const char F * ,...);

Retorna Nada.

Descrição

Imprimir é usado para formatar dados e imprimi-los de uma forma definida pelo usuário através de uma função de manipulador de impressão.

Parâmetros:

- prntoutfunc: função de manipulador de impressão - f: formato de string

A f argumento é uma seqüência de formato e pode ser composto de personagens,

escapar seqüências, e as especificações de formato. caracteres comuns e fugir seqüências são copiados para o manipulador de impressão na ordem em que são interpretado. Formato especificações sempre começam com um sinal de porcentagem (%) e exigem novos argumentos a serem incluídos na chamada de função.

A seqüência de formato é lido da esquerda para a direita. O encoun primeira

especificação de formato tered se refere ao primeiro argumento após o f parâmetro e, em seguida, converte e fora coloca-lo usando a especificação do formato. Os acessos segunda especificação de formato o segundo argumento, após f, e assim por diante. Se há mais argumentos que o formato especificações, os argumentos extras são ignorados. Os resultados são imprevisíveis, se houver não são argumentos suficientes para as especificações do formato As especificações do

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

IMPRESSÃO BIBLIOTECA

A mikroC PRO para PIC fornece os dados de rotina para PrintOut fácil formatação e impressão.

Nota: Biblioteca funciona com a família PIC18 só.

Rotinas da biblioteca

- Imprimir

Imprimir

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

589

www.mecatronicadegaragem.blogspot.com

Page 685: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

conversion_type Argumento Ti

Formato de saída

d int Assinado número decimal

u unsigned int Unsigned número decimal

o unsigned int Unsigned número octal

x unsigned int Unsigned número hexadecimal usando 0123456789ABCDEF

X unsigned int Unsigned número hexadecimal usando 0123456789ABCEDF

f dupla Número de ponto flutuante usando o formato [-

e dupla Número de ponto flutuante usando o formato [-

E dupla Número de ponto flutuante usando o

formato [-

g dupla Número de ponto flutuante usando E ou F formato, o que é mais compacto para o valor especificado e precisão

c int int é convertido para um unsigned char, eo caráter resultante é escrito

s Char * String com um caractere nulo de t i ã p void * valor do ponteiro, o formato de X é usado

% <none> A% é escrito. Nenhum argumento é convertido. A especificação completa conversão d %%

CAPÍTULO 7 Bibliotecas

Descrição

mikroC PRO para PIC

590

Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com

Page 686: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

A bandeiras campo é onde um único caractere é usado para justificar a saída e imprimir sinais + / - e espaços em branco e os pontos decimais, e prefixos octal e hexadecimal, como mostrados na tabela a seguir.

A largura campo é um número não negativo que especifica o número mínimo de caracteres impressos. Se um número de caracteres no valor de saída é menor que a largura, espaços em branco são adicionados à esquerda ou à direita (quando o - sinalizador é especificado), a fim de pad a largura mínima. Se a largura for prefixado com 0, então os zeros são preenchidos em vez de espaços em branco. A largura campo nunca trunca um campo. Se o comprimento do out- valor colocado exceder a largura especificada, todas as personagens são saída.

Descrição A precisão campo é um número não negativo que especifica o número de ca-

acters imprimir, o número de dígitos significativos, ou o número de casas decimais. Os pré- campo de cisão pode causar truncamento ou o arredondamento do valor da produção em o caso de um número de ponto flutuante, conforme especificado na tabela a seguir.

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

www.mecatronicadegaragem.blogspot.com

Page 687: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

bandeir

MeaningMeaning da precisão campo

d, u, o,

x, X

O campo de precisão é onde você especifica o número mínimo de dígitos que serão incluídos no valor da saída. Dígitos não são trun- cado se o número de dígitos em um argumento excede o definido na precisão de campo. Se o número de dígitos do argumento é menor que o campo de precisão, o valor de saída é preenchido na esquerda com zeros.

f O campo de precisão é onde você especifica o número de dígitos à direita do ponto decimal. O último dígito é arredondados.

e, E O campo de precisão é onde você especifica o número de dígitos à direita do ponto decimal. O último dígito é arredondado.

g O campo de precisão é onde você especifica o número máximo de algarismos significativos no valor de saída.

c, C A campo de precisão não tem efeito sobre esses tipos de campos.

s O campo de precisão é onde você especifica o número máximo de caracteres no valor de saída. Excesso de caracteres não são

bandeir

Significado + Esquerda justificar a saída no campo especificado largura. - Prefixo o valor de saída com sinal + ou - se a saída é um tipo de

espaço ('')

Prefixo o valor de saída com um branco se for assinado um valor positivo.

#

Prefixo de um valor de saída diferente de zero com 0, 0x ou 0X quando utilizado com o, x e X tipos de campo, respectivamente. Quando usado com o e, E, F e G, e G tipos de campo, o # sinalizador força o valor de saída para incluir um

d i l

* Ignorar especificador de formato.

591

www.mecatronicadegaragem.blogspot.com

Page 688: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Descrição

Os caracteres opcional l ou L pode preceder imediatamente conversion_type para respectivamente especificar as versões longas do tipo integer d, i, o, u, x, e X.

Você deve garantir que o tipo de argumento corresponde à da especificação de

formato ã V ê d ti d ld ti ti t é d

Requer Nada.

Exemplo

Imprimir arquivo exemplo mikroElektronika do cabeçalho para UART.

vazio PrintHandler (char c) {

UART1_Write (c);

}

vazio main () { UART1_Init (9600); Delay_ms (100);

PrintOut (PrintHandler ", / * \ r \ n" "* Nome do projeto: \ n \ r" "O uso PrintOutExample (Amostra

de PrintOut () função) \ r \ n " "Copyright *: \ n \ r" "Mikroelektronika (c),

2006. \ R \ n " "20060710: \ r \ n" - Versão inicial \ r \ n " "* Descrição: \ n \ r" "Simples demonstração sobre o uso

da impressão () função \ n \ r " "* Teste de configuração: \ r \ n" "MCU:

PIC18F8520 \ r \ n " "Dev.Board: n BigPIC5 r \ \" "Oscilador: HS,

10.3fMHz% \ r \ n " "Ext Módulos: Nenhuma. \ R \ n". "SW: mikroC PRO

PIC para \ r \ n " "NOTAS *: \ n \ r" "Nenhuma. \ R \ n" "* / \ N \ r", Get_Fosc_kHz () / 1000).;

}

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

592

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

www.mecatronicadegaragem.blogspot.com

Page 689: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Setjmp BIBLIOTECA

Esta biblioteca contém funções e definições de tipos para ignorar a chamada de função normal e retorno da disciplina. O tipo de declaração é jmp_buf que é um tipo de matriz adequada para a realização da in- as informações necessárias para restaurar um ambiente de chamada.

Tipo de declaração está contida em sejmp16.h e arquivos de cabeçalho setjmp18.h para PIC16 e PIC18 fam- ily MCUs respectivamente. Estes cabeçalhos podem ser encontrados na pasta de inclusão do compilador. A execução do implementação desta biblioteca é diferente para PIC16 e PIC18 MCUs da família. Para a família PIC16 setjmp e longjmp são implementadas como macros definidas no arquivo de cabeçalho setjmp16.h e para a família PIC18 como funções definidas no arquivo de biblioteca setjmp.

Nota: Devido a PIC16 família específica de não ser capaz de ler / escrever pilha ponteiro, o programa de exe- cução após ivocation longjmp ocorre depende o conteúdo da pilha. É por isso que, para PIC16 fam- ily apenas, a execução de funções setjmp e longjmp não é padrão ANSI C complacente.

Rotinas da biblioteca

- Setjmp - Longjmp

Setjmp

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

www.mecatronicadegaragem.blogspot.com

Page 690: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo int setjmp (jmp_buf env);

Retorna se o retorno é de invocação de dirigi-lo retorna 0 se o retorno é de uma chamada para o longjmp ele retorna valor diferente de zero

Descrição Essa função salva chamando posição no jmp_buf para uso posterior pelo longjmp. A parâmetro env: matriz do tipo (jmp_buf) suitible para a realização da necessidade de informações ed para o restabelecimento do ambiente de chamada

Requer Nada.

Exemplo setjmp (buf);

593

www.mecatronicadegaragem.blogspot.com

Page 691: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio longjmp (jmp_buf env, val int);

Retorna setjmp causas longjmp para retornar Val, se val for 0 significa que vai retornar 1.

Descrição

Restaura ambiente de chamada salvo em jmp_buf pela invocação mais recente setjmp macro. Se não houve tal invocação ou função conatinig a invo- cação setjmp terminou nesse ínterim, o comportamento é undefined.Param- eter matriz do tipo (jmp_buf) que detém as informações salvas pelo correspondente: env i ã tj

Requer Invocação de longjmp deve ocorrer antes do retorno da função em que Setjmp encontros foi chamado.

Exemplo longjmp (buf, 2);

CAPÍTULO 7 Bibliotecas

Longjmp

mikroC PRO para PIC

594

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

www.mecatronicadegaragem.blogspot.com

Page 692: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Exemplo Biblioteca

Exemplo demonstra cruz função de chamada usando funções setjmp e longjmp. Quando chamado, setjmp () salva o seu ambiente de chamada em sua argumentação jmp_buf para mais tarde utilização pelo longjmp (). Longjmp (), por outro lado, restaura o ambiente salvos pela invocação mais recente do setjmp () com o correspondente jmp_buf argumento. O exemplo dado é para P16. # Include <Setjmp16.h>

# Include <Setjmp16.h>

buf jmp_buf;

/ / Nota: diagramas de fluxo de programas estão indexados

de acordo / / Para a sequência de execução

vazio func33 () {

asm nop; longjmp (buf, 2); asm nop;

}

vazio func () {

PORTB = 3; se (Buf setjmp () == 2)

PORTB = 1; mais

func33 (); asm nop;

}

vazio main () {

PORTB = 0; TRISB = 0;

asm nop;

func ();

asm nop;

}

/ / 2 <----------| / / | / / | / / 3 -------------->| / / | | / / | | / / | | / / | | / / 1 <------ | | | / / | | | / / | | | / / 3 <--------------| / / 4 -> | | | / / | | | / / 2 ---------->| / / | | / / 4 <- | | / / 5 -------|------> depende na pilha o conteúdo / / | / / | / / | / / | / / | / / | / / | / / | / / 1 ------>| / / / /

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

595

www.mecatronicadegaragem.blogspot.com

Page 693: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo sprintf (char * Wh, const char F * ,...);

Retorna A função retorna o número de caracteres realmente escrito o destino string.

Descrição

sprintf é usado para formatar dados e imprimi-los em seqüência destino.

Parâmetros:

- wh: string de destino - f: formato de string

A f argumento é uma seqüência de formato e pode ser composto de personagens,

escapar seqüências, e as especificações de formato. caracteres comuns e fugir seqüências são copiados para a seqüência de destino na ordem em que eles estão inter- interpretados. Formato especificações sempre começam com um sinal de porcentagem (%) e requerem argumentos adicionais para ser incluído na chamada de função.

A seqüência de formato é lido da esquerda para a direita. O encoun primeira

especificação de formato tered se refere ao primeiro argumento após f e depois converte-lo usando e saídas a especificação do formato. O segundo formato acessa o segundo especificação argumento após f, e assim por diante. Se há mais argumentos que especificações de formato õ t t t ã i d O lt d ã i i í i

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

SPRINT BIBLIOTECA

A mikroC PRO para PIC estabelece o padrão ANSI C função sprintf para formatar os dados fácil.

Nota: Para além do padrão ANSI C, a Biblioteca Sprint também inclui duas versões limitadas do sprintf função (sprinti e sprintl). Estas funções recebem menos ROM e RAM e pode ser mais conveniente para o uso em alguns casos.

Funções

- Sprintf - Sprintl - Sprinti

sprintf

596

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

www.mecatronicadegaragem.blogspot.com

Page 694: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

conversion_type Argumento Ti

Formato de saída

d int Assinado número decimal

u unsigned int Unsigned número decimal

o unsigned int Unsigned número octal

x unsigned int Unsigned número hexadecimal usando 0123456789ABCDEF

X unsigned int Unsigned hexadecimal número usando 0123456789ABCEDF

f dupla Número de ponto flutuante usando o formato [- ] Dddd dddd

e dupla Número de ponto flutuante usando o formato [-

E dupla Número de ponto flutuante usando o

formato [-

g dupla De ponto flutuante Número usando E ou F formato, o que é mais compacto para o valor especificado e precisão

c int int é convertido para um unsigned char, eo caráter resultante é escrito

s Char * String com um caractere nulo de t i ã p void * Ponteiro valor, o formato de X é usado

% <none> A% é escrito. Nenhum argumento é convertido. A especificação completa conversão

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Cada campo na especificação do formato pode ser um único caractere ou um número que Especifica uma opção de formato específico. A conversion_type campo é onde um único caráter especifica que o argumento é interpretado como um personagem, cordas, nú- ber, ou ponteiro, como mostrado na tabela a seguir:

Descrição

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

597

www.mecatronicadegaragem.blogspot.com

Page 695: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

bandeir

MeaningMeaning do precisão campo

d, u, o,

x, X

A precisão campo é onde você especifica o número mínimo de dígitos que serão incluídos no valor da saída. Dígitos não são trun- cado se o número de dígitos em um argumento excede o definido no campo de precisão. Se o número de dígitos do argumento é menor que o campo de precisão, o valor de saída é preenchido na esquerda com zeros.

f O campo de precisão é onde você especifica o número de dígitos à direita do ponto decimal. O último dígito é arredondado.

e, E O campo de precisão é onde você especifica o número de dígitos à direita do ponto decimal. O último dígito é arredondado.

g O campo de precisão é onde você especifica o número máximo de algarismos significativos no valor de saída.

c, C O campo de precisão não tem efeito sobre esses tipos de campos.

s O campo de precisão é onde você especifica o número máximo de caracteres no valor de saída. Excesso de caracteres não são

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

A bandeiras campo é onde um único caractere é usado para justificar a saída e imprimir sinais + / - e espaços em branco e os pontos decimais, e prefixos octal e hexadecimal, como mostra a tabela a seguir.

A largura campo é um número não negativo que especifica o número mínimo de caracteres impressos. Se um número de caracteres no valor de saída é menor que a largura, espaços em branco são adicionados à esquerda ou à direita (quando a opção - é especificado), a fim de bloco a largura mínima. Se a largura for prefixado com 0, então os zeros são preenchidos em vez de espaços em branco. A largura campo nunca trunca um campo. Se o comprimento do out- valor colocado exceder a largura especificada, todas as personagens estão de saída.

Descrição A precisão campo é um número não negativo que especifica o número de ca-

acters imprimir, o número de dígitos significativos, ou o número de casas decimais. Os pré- campo de cisão pode causar truncamento ou o arredondamento do valor da produção no caso de um número de ponto flutuante, conforme especificado no tabela a seguir.

598

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

www.mecatronicadegaragem.blogspot.com

Page 696: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

bandeir

Significado + Esquerda justificar a saída da largura do campo especificado. - Prefixo valor de saída com sinal + ou - se o saída é um tipo de

espaço ('')

Prefixo o valor de saída com um branco se for assinado um valor positivo.

#

Prefixo de um valor de saída diferente de zero com 0, 0x ou 0X quando utilizado com o, x e X tipos de campo, respectivamente. Quando utilizado com o e, E, F e G, e G tipos de campo, o # sinalizador força o valor de saída para incluir um

t d i l

* Ignorar especificador de formato.

www.mecatronicadegaragem.blogspot.com

Page 697: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo sprintl (char * Wh, const char F * ,...);

Retorna A função retorna o número de caracteres realmente escrito o destino string.

Descrição O mesmo que sprintf, exceto que ele não suporta números tipo float.

Protótipo sprinti (char * Wh, const char F * ,...);

Retorna A função retorna o número de caracteres realmente escrito o destino string.

Descrição O mesmo que sprintf, exceto que não apoio inteiros longos e num tipo float- bros.

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Os caracteres opcional l ou L pode preceder imediatamente conversion_type para respectivamente especificar as versões longas do tipo integer d, i, o, u, x, e X.

Descrição Você deve garantir que a tipo de argumento corresponde ao da especificação do formato. Você pode usar o tipo de moldes para garantir que o tipo correto é passado para sprintf.

sprintl

sprinti

Mikroelektronika - Software e Soluções de hardware para Embedded World

599

www.mecatronicadegaragem.blogspot.com

Page 698: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas mikroC PRO para PIC

Exemplo Biblioteca Esta é uma demonstração do padrão de uso sprintf biblioteca C rotina. Três dife- ent representações do mesmo número de poing flutuantes obtidas usando o sprintf rotina são enviados via UART. dupla ww =-1.2587538e 1; char buffer [15];

/ / Função para enviar cadeia para UART vazio UartWriteText (char * Txt) {

while (* txt) UART1_Write (* txt + +);

}

/ / Função para enviar const string para UART vazio UartWriteConstText (const char * Txt) {

while (* txt) UART1_Write (* txt + +);

}

vazio main () {

UART1_Init (4800); Delay_ms (10);

/ / Inicializa o módulo UART em 4800 bps

UartWriteConstText ("Floating

ponto

número

representação ");

/ /

Escrever mensagens no UART

sprintf (buffer, "% 12e" ww); / / ww formato e armazená-lo para tamponar UartWriteConstText ("\ formato r \ ne:"); / / Escreve mensagem no UART UartWriteText (buffer); / / Escreve no buffer UART

sprintf (buffer, "% 12f" ww); / / ww formato e armazená-lo para tamponar UartWriteConstText ("\ r nf \ formato:"); / / Escreve mensagem no UART UartWriteText (buffer); / / Escreve no buffer UART

sprintf (buffer, "% 12g" ww); / / ww formato e armazená-lo para tamponar UartWriteConstText ("\ formato r \ ng:"); / / Escreve mensagem no UART UartWriteText (buffer); / / Escreve no buffer UART

}

600

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

www.mecatronicadegaragem.blogspot.com

Page 699: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Time Library

A Biblioteca Time contém funções e definições de tipo para cálculos de tempo no UNIX formato de tempo que conta o número de segundos desde o "Época". Esta é muito conveniente para os programas que funcionam com intervalos de tempo: a diferença entre dois valores de tempo UNIX é um tempo real diferença medido em segundos.

Qual é a época? Originalmente ele foi definido como o início de 1970 GMT. (Janeiro 1, 1970 dia juliano ) GMT, Greenwich Mean Time, é um termo tradicional para o fuso horário da Inglaterra.

A TimeStruct tipo é um tipo de estrutura adequada para o armazenamento e data. Tipo declaração está contida em timelib.h que pode ser encontrado no mikroC PRO para PIC Time Library pasta exemplo Demo.

Rotinas da biblioteca

- Time_dateToEpoch - Time_epochToDate - Time_dateDiff

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

601

www.mecatronicadegaragem.blogspot.com

Page 700: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo vazio Time_epochToDate (long e, TimeStruct * Ts);

Retorna Nada.

Descrição

Converte o tempo Unix para data e hora.

Parâmetros:

- e: tempo unix (Segundos desde a época Unix) - TS: data e hora estrutura para armazenar a saída de conversão

Requer Nada.

Exemplo

# Include "timelib.h" ... TimeStruct ts2; tempo época; ... / * * Que data é 1234567890 época? * /

época = 1234567890; Time_epochToDate (da época, e TS2);

Protótipo tempo Time_dateToEpoch (TimeStruct * Ts);

Retorna Número de segundos desde 1 de janeiro de 1970 0h00mn00s.

Descrição

Esta função retorna o tempo unix: número de segundos desde 1 de janeiro de 1970 0h00mn00s.

Parâmetros:

- ts: tempo e valor de data para o cálculo de tempo Unix.

Requer Nada.

Exemplo

# Include "timelib.h" ... TimeStruct TS1; tempo época; ... / * * Qual é a época da data em st? * /

= Time_dateToEpoch época (e TS1);

CAPÍTULO 7 Bibliotecas

Time_dateToEpoch

Time_epochToDate

mikroC PRO para PIC

602

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

www.mecatronicadegaragem.blogspot.com

Page 701: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo tempo Time_dateDiff (TimeStruct * t1, TimeStruct * t2);

Retorna Diferença de tempo em segundos como um long assinado.

Descrição

Essa função compara duas datas e retorna diferença de segundos como um assinado prazo. O resultado é positivo se t1 é antes t2 resultado, é nulo se t1 é o mesmo que t2 eo resultado é negativo se t1 é depois t2.

Parâmetros:

- t1: data e hora estrutura (o primeiro parâmetro de comparação) - t2: data e hora estrutura (o segundo parâmetro de comparação)

Nota: Esta função é implementada como macro no arquivo de cabeçalho que

Requer Nada.

Exemplo

# Include "timelib.h" ... TimeStruct TS1, TS2; tempo diff; ... / * * Quantos segundos entre estas duas datas contidas no TS1 e

ts2 amortecedores? * / Time_dateDiff diff = (& TS1, TS2 &);

CAPÍTULO 7

mikroC PRO para PIC

Time_dateDiff

Bibliotecas

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

603

www.mecatronicadegaragem.blogspot.com

Page 702: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7 Bibliotecas

Exemplo Biblioteca Este exemplo demonstra o tempo de uso da Biblioteca.

mikroC PRO para PIC

# Include

"Timelib.h"

TimeStruct TS1, TS2; tempo época; tempo diff;

vazio main () {

ts1.ss = 0; ts1.mn = 7; ts1.hh = 17; ts1.md = 23; ts1.mo = 5; ts1.yy = 2006;

/ * * Qual é a época da data em st? * /

= Time_dateToEpoch época (e TS1);

/ * * Qual é a data 1234567890 época? * /

época = 1234567890; Time_epochToDate (da época, e TS2);

/ * * Como segundo muito entre estas duas datas? * /

Time_dateDiff diff = (& TS1, TS2 &); }

604

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

www.mecatronicadegaragem.blogspot.com

Page 703: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo int sinE3 (unsigned angle_deg);

Retorna A função retorna o seno do parâmetro de entrada.

Descrição

A função calcula seno multiplicado por 1000 e arredondados para o número inteiro mais próximo:

resultado: = rodada (* sin (angle_deg) 1000)

Parâmetros:

- angle_deg: Ângulo de entrada em graus

Nota: faixa de valor de retorno: 1000 1000 Requer Nada.

Exemplo int res; ... res = sinE3 (45); / / resultado é 707

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

Trigonometria BIBLIOTECA

A mikroC PRO para PIC implementa funções trigonométricas fundamentais. Essas funções são implementadas como tabelas de consulta. funções trigonométricas são implementadas em formato de número inteiro, a fim para economizar memória.

Rotinas da biblioteca

- SinE3 - CosE3

sinE3

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

605

www.mecatronicadegaragem.blogspot.com

Page 704: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

Protótipo int cosE3 (unsigned angle_deg);

Retorna A função retorna o cosseno de parâmetro de entrada.

Descrição

A função calcula seno multiplicado por 1000 e arredondados para o inteiro:

resultado: = rodada (cos (angle_deg) * 1000)

Parâmetros:

- angle_deg: Ângulo de entrada em graus

Nota: faixa de valor de retorno: -1000 .. 1000.

Requer Nada.

Exemplo int res; ... res = cosE3 (196); / / resultado é -193

CAPÍTULO 7 Bibliotecas

cosE3

mikroC PRO para PIC

606

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

www.mecatronicadegaragem.blogspot.com

Page 705: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

CAPÍTULO 7

mikroC PRO para PIC Bibliotecas

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

607

www.mecatronicadegaragem.blogspot.com

Page 706: Manual MikroC Pro Portugues[Www.mecatronicadegaragem.blogspot.com]

www.mecatronicadegaragem.blogspot.com