Você está na página 1de 706

www.mecatronicadegaragem.blogspot.

com

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Abril de 2009.
AVISO LEGAL:

nota Reader's

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

Observao do leitor

ATIVIDADES DE ALTO RISCO: A mikroC PRO para PIC compilador no tolerante a falhas e no foi projetado, fabricado ou destinado ao uso ou revenda como on-line de equipamentos de controle em ambientes perigosos protecum desempenho sem falhas ing, como na operao de instalaes nucleares, navegao de aeronaves ou comunicao sistemas de controle de trfego areo, mquinas de suporte vida, ou sistemas de armas, em que a falha do Software possa levar diretamente morte, ferimentos pessoais ou grave danos fsicos ou ambientais ("Atividades de Alto Risco"). mikroElektronika e seus fornecedores Declinamos qualquer garantia explcita ou implcita de adequao para Atividades de Alto Risco. CONTRATO DE LICENA: Ao utilizar o mikroC PRO para PIC compilador, voc concorda com os termos deste acordo. Somente uma pessoa pode usar a verso licenciada do mikroC PRO para PIC compilador de uma vez. Copyright mikroElektronika 2003-2009. Este manual cobre mikroC PRO para PIC verso 1.1 e os tpicos relacionados. verso mais recenteses podem conter alteraes sem aviso prvio. Bug Reports compilador: O compilador foi cuidadosamente testado e depurado. , no entanto, possvel garantir um produto 100% livre de erros. Se voc gostaria de relatar um bug, por favor entre em contato conosco o office@mikroe.com endereo. Por favor, inclua as informaes seguintes em seu relatrio: - Seu sistema operacional - Verso do mikroC PRO para PIC - Exemplo de cdigo - Descrio de um bug CONTATO EUA: mikroElektronika Voz: + 381 (11) 36 28 830 Fax: + 381 (11) 36 28 831 Web: www.mikroe.com E-mail: office@mikroe.com

Windows uma marca registada da A Microsoft Corp Todas as outras trocas e / ou marcas de servios so de propriedade de seus respectivos proprietrios.

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

Tabela de Contedo
CAPTULO 1 CAPTULO 2 CAPTULO 3 CAPTULO 4 CAPTULO 5 CAPTULO 6 CAPTULO 7 Introduo mikroC PRO para PIC Meio Ambiente MikroICD (In Circuit Debugger) mikroC PRO para PIC Especificidades PIC Especificidades mikroC PRO para PIC Referncia da Linguagem mikroC PRO para PIC Bibliotecas

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

CAPTULO 1 Caractersticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Por onde comear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 mikroElektronika Associates Declarao de Licena e Garantia Limitada. . . . . . . . . . . . 4 IMPORTANTE - LEIA COM ATENO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 GARANTIA LIMITADA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ATIVIDADES DE ALTO RISCO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 DISPOSIES GERAIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Suporte Tcnico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Como Registrar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Quem recebe a chave de licena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Como obter a chave de licena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Depois de receber a chave de licena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 CAPTULO 2 Resumo IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Opes do menu principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 File Menu de Opes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Opes do menu Editar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Encontrar o texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Substituir texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Localizar em arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Ir para a linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 opo de expresses regulares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Opes do menu Exibir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Barras de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Arquivo da Barra de Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Barra de Edio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Advanced Edit Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Localizar / Substituir Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Projeto barra de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Construir Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Depurador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Estilos de Barra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Barra de Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Menu de Opes do Projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Opes do menu Executar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Opes do menu Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Ajuda Menu de Opes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Os atalhos de teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Resumo IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Personalizar Layout IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Janelas de encaixe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Salvar Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

IV

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

VI

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos
91 91 92 93 93 95 96 97 98 99

Mensagens de aviso do compilador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mensagens de erro vinculador:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viso geral do software Simulator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Janela de Inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exibir janela RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cronmetro janela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulador de opes de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criar nova biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Biblioteca de vrias verses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CAPTULO 3 mikroICD Debugger Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Exemplos mikroICD Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 mikroICD (In-Circuit Debugger) Viso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Breakpoints Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Janela de Inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 EEPROM janela de inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Cdigo Janela de Inspeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 mikroICD Cdigo Watch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Ver memria RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Erros comuns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 mikroICD Advanced Breakpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Memria do Programa Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Memria do Programa Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Arquivo Registre-Break. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Emulador de Recursos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Pontos de Interrupo de Eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Cronmetro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 CAPTULO 4 Problemas padro ANSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Desvio da ANSI C padro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Linguagem C Exstensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Predefinidos Globais e constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 nvel de projectos predefinidos define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Bits Acesso Individual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Bits Acesso Individual de variveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 tipo sbit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 tipo bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Interrupes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 prioridade interrompe P18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Chamadas de funo de interrupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Exemplos de interrupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Mikroelektronika - Solues de software e hardware para o mundo embutido

VII

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

Directivas Linker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Directiva absoluta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 org directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 orgall directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 funcorg directiva. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Solicita funo indireta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Criada em rotinas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Lo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Oi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Superior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Maior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Delay_us. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Delay_ms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Vdelay_ms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Delay_Cyc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Clock_Khz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Clock_Mhz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Get_Fosc_kHz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Otimizao de Cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 dobrar Constant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 constante de propagao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Copie propagao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Relao de numerao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 "Cdigo Dead" eliminao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Alocao de pilha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 otimizao vars locais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Melhor gerao de cdigo e otimizao local. . . . . . . . . . . . . . . . . . . . . . . . . . 131 CAPTULO 5 Tipos de Eficincia Energtica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Nested Solicita Limitaes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Especificidades PIC18FxxJxx. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Endereo SFR compartilhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Especificidades PIC16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Quebrando Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Limites da abordagem indireta atravs da FSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Tipo Especificadores de memria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 de dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 rx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 SFR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 CAPTULO 6 Viso geral sobre elementos lexicais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

VIII

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

IX

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

XI

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XII

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

Instruo Return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Declaraes compostas (blocos). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 pr-processamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Directivas Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Continuao de linha com contrabarra (\). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Definir Macros e Expanses Macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Macros com parmetros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Macros indefinida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Incluso de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Explcita Caminho. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Operadores Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Operador #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Operador # #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Compilao condicional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Directivas # if, # elif, # Else e # endif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Directivas # ifdef e # ifndef. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 CAPTULO 7 Bibliotecas Hardware PIC-especficas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Padro ANSI C bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Bibliotecas Diversos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Dependncias da biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Bibliotecas de Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Biblioteca ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 ADC_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 CAN Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 CANSetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 CANGetOperationMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 CANInitialize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 CANSetBoudRate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 CANSetMask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 CANSetFilter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 CanRead. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 CanWrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Constantes CAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 CAN_OP_MODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 CAN_CONFIG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 CAN_TX_MSG_FLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 CAN_RX_MSG_FLAGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 CAN_MASK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 CAN_FILTER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Mikroelektronika - Solues de software e hardware para o mundo embutido

XIII

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XIV

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

Cf_Fat_Set_File_Date. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Cf_Fat_Set_File_Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Cf_Fat_Get_Swap_File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 HW Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Biblioteca EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 EEPROM_Read. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 EEPROM_Write. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Exemplo de Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Ethernet PIC18FxxJ60 Biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 famlia PIC18FxxJ60 do microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 solues de hardware para embutidos mundo

XV

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XVI

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

XVII

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XVIII

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

XIX

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XX

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

XXI

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Spi_T6963C_Config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Spi_T6963C_WriteData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 pi_T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Spi_T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_WaitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_Fill. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Spi_T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Spi_T6963C_Write_Char. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Spi_T6963C_write_Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Spi_T6963C_line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Spi_T6963C_rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Spi_T6963C_box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Spi_T6963C_circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Spi_T6963C_image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Spi_T6963C_Sprite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 Spi_T6963C_set_cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_clearBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_setBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Spi_T6963C_negBit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Spi_T6963C_DisplayGrPanel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 grfico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 As dependncias externas da T6963C Biblioteca LCD grfico. . . . . . . . . . . . . . . . . 530 Rotinas de biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 T6963C_Init. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 T6963C_writeData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 T6963C_WriteCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_SetPtr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_waitReady. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 T6963C_fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 T6963C_Dot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

XXII

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

XXIII

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XXIV

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Tabela de Contedos

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

XXV

www.mecatronicadegaragem.blogspot.com
Tabela de Contedos
mikroC PRO para PIC

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

XXVI

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com

CAPTULO

Introduo 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 fcil posvel soluo para desenvolvimento de aplicaes para sistemas embarcados, sem compromiso de desempenho ou controle.

CAPTULO 1

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Introduo

mikroC PRO para PIC IDE

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

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

Escreva seu cdigo-fonte C usando o built-in editor de cdigo (Code e Parmetro Assistentes, cdigo dobrando, Sintaxe Destacando, Auto Correct, Mscaras de Cdigo, e muito mais.) Use includos mikroC PRO para PIC bibliotecas para acelerar drasticamente o desenvolvimento desenvolvimento: a aquisio de dados, memria, displays, converses de comunicao, etc Monitore sua estrutura de programa, variveis e funes do Code Explorer. Gere comentou, montagem legvel, e compa-padro HEX vel com todos os programadores. Use o mikroICD integrado (In-Circuit Debugger) em tempo real ferramenta de depurao para

www.mecatronicadegaragem.blogspot.com Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 1

Introduo

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

Por onde comear


No caso que voc um iniciante em programao de microcontroladores PIC, leia cuidado plenamente o PIC captulo Especficos. Poderia dar-lhe algumas indicaes teis sobre PIC restries, a portabilidade do cdigo, e boas prticas de programao. Se voc experiente em programao C, provavelmente voc vai querer consultar mikroC PRO para PIC Especificidades primeiro. Por questes de idioma, voc pode sempre se referem ao o global Language Reference. Uma lista completa de bibliotecas includo disponvel em mikroC PRO PIC para Bibliotecas. Se voc no muito experiente em programao C, no entre em pnico! mikroC PRO para PIC fornece inmeros exemplos tornando mais fcil para voc ir rapidamente. Ns sug rem que voc primeiro consultar projetos e arquivos de origem e, em seguida iniciar a navegao na exemplos que voc o mais interessado em M ik r o el e k tr o n ik a S of t w a r e s e s ol u e

s de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

CAPTULO 1

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Introduo

Mikroelektronika DECLARAO DE LICENA E ASSOCIADOS GARANTIA LIMITADA


IMPORTANTE - LEIA ATENTAMENTE
Esta licena declarao e garantia limitada constitui um contrato legal ("Licena Contrato ") entre voc (como pessoa fsica ou jurdica) e mikroElektronika ("mikroElektronika Associates") para produtos de software ("Software"), identificado acima, incluindo qualquer software, mdia e acompanhamento on-line ou impresso docuimplementao. AO INSTALAR, COPIAR OU USAR O SOFTWARE, VOC CONCORDA PARA SER OBRIGADO POR TODOS OS TERMOS E CONDIES DA LICENA ACORDO. Aps a aceitao dos termos e condies do Contrato de Licena, mikroElektronika Associates lhe concede o direito de usar o software de uma forma prevista abaixo. Este Software propriedade da mikroElektronika Associates e est protegido por cpia direito certo e tratado internacional de direitos autorais. Portanto, voc deve tratar este software como qualquer outro material protegido por copyright (por exemplo, um livro). Voc pode transferir o Software e documentao em uma base permanente prestado. Voc no retenha nenhuma cpia eo recebedor concordar com os termos do Contrato de Licena. Exceto como previsto do Contrato de Licena, voc no poder transferir, alugar, arrendar, emprestar, copiar, modificar, traduzir, sublicenciar, compartilhar o tempo ou transmitir eletronicamente ou receber Software, mdia ou documentao. Voc reconhece que o Software no forma de cdigo-fonte um segredo comercial do mikroElektronika Associates e, portanto, voc concorda em no modificar o Software ou a tentativa de fazer engenharia reversa, descompilar, ou desmontar, exceto e somente na medida em que tal atividade seja expressamente permitida pela legislao aplicvel no obstante esta limitao. Se voc tiver adquirido uma verso de atualizao do software, que constitui um nico produto com o software mikroElektronika Associates que voc atualizou. Voc pode usar a verso de atualizao do Software apenas de acordo com Contrato de Licena.

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 1

Introduo

GARANTIA LIMITADA
Respeitosamente excetuando os Redistribuveis, que so fornecidos "Como esto", sem guerra rantia de nenhum tipo, garante que o Software mikroElektronika Associates, uma vez actualied e usados corretamente, ir executar substancialmente de acordo com o acomo, documentao e software de mdia estar livre de defeitos de materiais e obra, por um perodo de 90 (noventa) dias a contar da data de recebimento. Qualquer implcita garantias de Software so limitadas a 90 (noventa) dias. mikroElektronika Associates ' e seus fornecedores inteira responsabilidade, e seu exclusivo recurso dever ser, no mikroElektronika Associates ' opo, (a) a devoluo do preo pago, ou (b) a reparao ou substituio do software que no atende mikroElektronika Associates ' Garantia Limitada e que seja devolvido a mikroElektronika Associates com uma cpia do recibo. No devolva o produto at se ter "Scios" Mikroelektronika PRIMEIRA e obteve um RETURN Nmero da autorizao. Este Garantia limitada nula se a falha do Software resultou de um acidente, abuso ou m utilizao. Qualquer substituio de Software ser garantido para o resto do perodo da garantia original ou 30 (trinta) dias, o que for maior. AO MXIMO PERMITIDO POR LEI, Mikroelektronika ASSOCIADOS E SEUS FORNECEDORES REJEITAM TODAS OUTRAS GARANTIAS E CONDIES, EXPRESSA OU IMPLCITA, INCLUDO, MAS NO SE LIMITANDO S GARANTIAS DE COMERCIALIZAO, ADEQUAO A UMA FINALIDADE ESPECFICA, E NO-VIOLAO, NO QUE DIZ RESPEITO AO SOFTWARE E PRESTAO OU FALTA DE PRESTAO DE SERVIOS DE APOIO. EM HIPTESE ALGUMA A Mikroelektronika ASSOCIADOS OU SEUS FORNECEDORES SER RESPONSVEL POR QUAISQUER DANOS, INCIDENTAIS OU CONSEQENCIAIS DANOS (INCLUINDO, SEM LIMITAO, DANOS POR PERDA DE LUCROS E INFORMAO DE NEGCIOS, NEGCIOS INTERRUPO OU QUALQUER OUTRA PERDA PECUNIRIA) DECORRENTES DO USO OU IMPOSSIBILIDADE DE UTILIZAO DO SOFTWARE OU PRESTAO DE OU NO PRESTAO DE SERVIOS DE APOIO, MESMO ASSOCIATES Mikroelektronika FOI AVISADO DA POSSIBILIDADE DE TAIS DANOS. EM QUALQUER CASO, ASSOCIATES Mikroelektronika ' TODA RESPONSABILIDADE EM QUALQUER PRESTAO DE LICENA SER LIMITADA AO VALOR PAGO POR VOC SOFTWARE FORNECIDO, entretanto, se voc entrou A Associates Mikroelektronika CONTRATO DE SERVIOS DE APOIO, ASSOCIATES Mikroelektronika ' TODA A RESPONSABILIDADE SOBRE Servios de apoio sero regidos pelos termos DESSA ACORDO. Mikroelektronika - Solues de software e hardware para o mundo embutido

CAPTULO 1

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Introduo
ATIVIDADES DE ALTO RISCO

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

DISPOSIES GERAIS

Essa declarao s pode ser modificado por escrito e assinado por voc e uma autorizao oficialcer de mikroElektronika Associates. Se qualquer disposio desta declarao considerada nula ou inexeqvel, o restante permanecer vlido e exeqvel de acordo com a sua termos. Se qualquer medida prevista determinada como tendo falhado a sua finalidade essencial, todas as limitaes de responsabilidade e excluses dos danos previstos no GARANTIAS Limitedty permanecer em vigor. Esta afirmao lhe d direitos legais especficos, voc pode ter outros, que variam, de pas para pas. mikroElektronika Associates reserva todos os direitos no especificamente concedida nesta declarao. mikroElektronika Visegradska 1A, 11000 Belgrade, A Europa. Telefone: + 381 11 36 28 830 Fax: +381 11 36 28 831 Web: www.mikroe.com E-mail: office@mikroe.com

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 1

Introduo

SUPORTE TCNICO
No caso de voc encontrar qualquer problema, voc bem-vindo ao nosso frum de suporte em www.mikroe.com/forum/. Aqui, voc tambm pode encontrar informaes teis, dicas de hardware, prtica e trechos de cdigo. Seus comentrios e sugestes sobre o futuro desenvolvimento do mikroC PRO para PIC so sempre apreciado - sinta-se livre para deixar uma nota ou dois na nossa lista de desejos. Em nossa Base de Conhecimento www.mikroe.com/en/kb/ voc pode encontrar as respostas a Frequentemente Perguntas e solues para problemas conhecidos. Se voc no consegue encontrar o soluo para o problema na Base de Conhecimento em seguida, informar ao Posto de Apoio www.mikroe.com/en/support/. Desta forma, podemos gravar e rastrear bugs mais eficiente, o que do nosso interesse mtuo. Ns respondemos a todos os relatrios de bugs e queso de forma adequada, cada vez melhor o nosso suporte tcnico. M ik r o el e k tr o n ik a S ol u e s d e s of t w a r e e h a r d w a r e p a r

a o mundo embutido

www.mecatronicadegaragem.blogspot.com

CAPTULO 1

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Introduo COMO SE INSCREVER

A verso mais recente do mikroC PRO para PIC est sempre disponvel para download em nosso site. um software totalmente funcional bibliotecas, exemplos e compreajuda abrangente includo.

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

Quem recebe a chave de licena


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

Como obter a chave de licena


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

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 1

Introduo

Isto ir iniciar o seu cliente de e-mail com a mensagem pronta para ser enviada. Reveja as inforinformao que voc entrou, e adicione o comentrio se achar necessrio. Por favor, no modificar a linha de assunto. Ao receber e verificar o seu pedido, ns enviaremos a chave de licena para o e-mail endereo especificado no formulrio.

Mikroelektronika - Solues de software e hardware para o mundo embutido

CAPTULO 1

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Introduo
Depois de receber a chave de licena

A chave de licena vem como um pequeno arquivo autoextracting - apenas inici-lo em qualquer lugar sua computador para ativar sua cpia do compilador e remover o limite de demonstrao. Voc no precisa reiniciar seu computador ou instalar qualquer componente adicional. Alm disso, no h necessidade de executar o mikroC PRO para PIC no momento da ativao. Notas: A chave de licena vlida at que voc formatar o disco rgido. No caso de precisar de esteira do disco rgido, voc deve solicitar uma nova chave de ativao. Por favor, mantenha o programa de ativao em um lugar seguro. Toda vez que voc atualizar o compilador voc deve comear este programa novamente para reativar a licena.

10

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

CAPTULO

mikroC PRO para PIC Meio Ambiente


O mikroC PRO para PIC um ambiente amigvel e intuitivo.

11

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Resumo IDE

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

12

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

MENU PRINCIPAL OPES


As opes disponveis do menu principal so:

Tpicos relacionados: Os atalhos de teclado

Mikroelektronika - Solues de software e hardware para o mundo embutido

13

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente FILE OPES

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

Arquivo

Descrio Abra uma nova janela do editor. Abra o arquivo de origem para edio ou arquivo de i i li Reabrir ficheiro utilizado recentemente. Salve as alteraes para o editor ativo. Salve o arquivo fonte ativa com os diferentes nome ou alterar o tipo de arquivo. Feche o arquivo fonte ativa. Visualizao de Impresso. Sair IDE.

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

14

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Opes do menu Editar

Descrio Editar Desfazer ltima alterao. Refazer a ltima alterao. Recortar o texto selecionado para o clipboard. Copiar o texto selecionado para o clipboard. Colar o texto da prancheta. Deletar texto selecionado. Selecione todo o texto no editor ativo. Localizar texto em editor ativo. Localizar prxima ocorrncia de texto no editor ativo. Localizar a ocorrncia anterior do texto no editor ativo. Substitua o texto no editor ativo. Localizar texto em arquivo corrente, em todos os arquivos abertos, ou em arquivos da pasta desejada. Saltar para a linha desejada no editor ativo. Advanced Cdigo opes do Editor Mikroelektronika - Solues de software e hardware para o mundo embutido

15

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Avanado Descrio Cdigo de comentrio selecionados ou colocados com linhah h Descomente cdigo selecionado oul remover nica linha i h h l Recuo cdigo selecionado. Outdent cdigo selecionado. Alteraes selecionada caso de texto em i l Alteraes selecionada caso o texto em i l Alteraes selecionada caso de texto para titl

Meio Ambiente

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

16

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Substituir texto

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

Localizar em arquivos
Caixa de dilogo para a busca de uma seqncia 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 diretrios opo selecionado, os arquivos para busca esto especificados na mscara de arquivos e campos de Caminho. Mi kr oel ekt ro nik aSol u e s de sof tw are e har dw are par ao mu nd o em but

ido

www.mecatronicadegaragem.blogspot.com

17

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Ir para a linha

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

opo de expresses regulares


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

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

18

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Menu Opes de visualizao

Arquivo

Descrio Mostrar barras de ferramentas / Hide. Mostrar / Esconder as janelas de depurao. Show / Hide Lista de rotina em editor ativo. Show / Hide janela Project Settings. Show / Hide Cdigo do Windows Explorer. Show / Hide janela Project Manager. Show / Hide Library Manager. Mostrar / ocultar janela de favoritos. Show / Hide Erro janela Mensagens. Mostrar / ocultar janela do Editor de Macro. Mostrar a janela da Lista de Janelas.

Mikroelektronika - Solues de software e hardware para o mundo embutido

19

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente BARRAS


Arquivo da Barra de Ferramentas

Arquivo Toolbar uma barra de ferramentas padro, com as seguintes opes: cone Descrio Abre uma nova janela do editor. Abra o arquivo de origem para edio ou arquivo de imagem para i li Salve as alteraes para a janela ativa. Salvar alteraes em todas as janelas abertas. Feche o editor atual. Feche todas as editores. Visualizao de Impresso.

Edit Toolbar

Edit Toolbar uma barra de ferramentas padro, com as seguintes opes: cone Descrio Desfazer ltima alterao. Refazer a ltima alterao. Recortar o texto selecionado para o clipboard. Copiar o texto selecionado para o clipboard. Colar o texto da prancheta.

20

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Edio Avanada Barra

Advanced Edit Toolbar vem com as seguintes opes: cone Descrio Comentar o cdigo selecionado ou colocar comentrio de linha nica, se no h h l Descomente cdigo selecionado ou remover o comentrio 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 cdigo. Outdent selecionados linhas de cdigo. Gerar o cdigo HTML apropriado para publicar cdigo fonte de corrente em

Localizar / Substituir Barra

Localizar / Substituir Toolbar uma barra de ferramentas padro, com as seguintes opes: cone Descrio Localizar texto na atual editor. Localizar a prxima ocorrncia. Encontrar ocorrncia anterior. Substitua texto. Localizar texto em arquivos.

Mikroelektronika - Solues de software e hardware para o mundo embutido

21

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Projeto Barra
Projeto Barra vem com as seguintes opes: cone Novo projeto Projeto Open Save Project Fechar projeto atual. Editar configuraes do projeto. Adicionar projecto existente ao projeto do grupo. Remover projeto existente do grupo do projeto. Add File To Project Remover o arquivo de projeto Descrio

Construir Toolbar
Construir Toolbar vem com as seguintes opes: cone Criar o projeto atual. Construir todos os projetos abertos. Construir e projeto de programa ativo. Iniciar programador e carga arquivo HEX atual. Abrir cdigo assembly no editor. Abra lisitng arquivo no editor. Ver estatsticas para o projeto atual. Descrio

22

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Depurador
Depurador Toolbar vem com as seguintes opes: cone Descrio Iniciar Software Simulator ou mikroICD (In-Circuit Debugger). Executar / Pausar depurador. Parar depurador. Step Into. Passe por cima. Saia. Executar at o cursor. Alternar ponto de interrupo. breakpoints Toggle. Limpar os pontos de interrupo. Exibir janela de observao Exibir janela cronmetro

Estilos de Barra

Estilos da barra de ferramentas permite que voc facilmente personalizar o seu espao de trabalho.

Mikroelektronika - Softwares e solues de hardware para Embedded World

23

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Barra de Ferramentas

Barra de Ferramentas vem com seguintes opes padro: cone Executar Terminal USART EEPROM ASCII Grfico Sete ferramenta decodificador segmento. menu Opes A barra de ferramentas podem ser facilmente personalizados, adicionando novas ferramentas em Opes (F12) janela. Tpicos relacionados: Os atalhos de teclado, integrada Ferramentas, depurador do Windows Descrio

24

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

PROJETO MENU OPES

Mikroelektronika - Solues de software e hardware para o mundo embutido

25

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Projeto Descrio Criar o projeto ativo. Construir todos os projetos. Construir e programa de projeto ativo. Exibir Assemblia. Editar caminhos de pesquisa. Pasta do Projeto Limpeza Adicionar arquivo ao projeto. Remover arquivo de projeto. Projetos de importao de verses anteriores do ik C Abra o Assistente de Novo projeto Abrir projeto j existente. Salvar atual projeto. Editar as configuraes do projeto Abra grupo de projeto. Fechar grupo de projeto. Salve o arquivo de projeto ativo com o nome dif t Aberto recentemente utilizadas projeto. Fechar projeto ativo. Tpicos relacionados: Os atalhos de teclado, o Projeto Barra, criando novos Projeto, Projeto Manager, as configuraes do projeto

Meio Ambiente

26

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

MENU OPES RUN

Executar

Descrio Iniciar Software Simulator ou mikroICD (InCircuit Debugger). Parar depurador. Pausa Debugger. Step Into. Step Over. Step Out. Ir para interrupo em projeto atual. Alternar ponto de interrupo. Breakpoints. Breakpoints Clear. Mostrar / Esconder Janela de Inspeo Show / Hide Window Cronmetro Alternar entre Pascal fonte e desmonassemblia.

Tpicos relacionados: Os atalhos de teclado, barra de ferramentas Debug Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

27

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente Menu Ferramentas Opes

Ferramentas

Descrio Executar mikroElektronika Programador Executar Terminal USART Execute o Editor do EEPROM Executar tabela ASCII Executar Converter display de 7 Gerar o cdigo HTML apropriado para publicao di f b Executar Lcd carter personalizado. Execute o editor bitmap GLCD. Executar HID Terminal. Executar terminal de comunicao UDP. Executar mikroBootloader. Abra a janela Opes.

Tpicos relacionados: Os atalhos de teclado, Barra de Ferramentas

28

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

HELP OPES

Ajuda

Descrio Abrir arquivo de ajuda. Open Document migrao de cdigo. Verifique se a verso do compilador novo t di l mikroElektronika Open Forum de Suporte em d d Abra mikroElektronika Pgina da Web em um Informaes sobre como se inscrever Abra a janela Sobre.

Tpicos relacionados: Os atalhos de teclado

Mikroelektronika - Solues de software e hardware para o mundo embutido

29

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente ATALHOS DE TECLADO

Abaixo est uma lista completa de atalhos de teclado disponveis no mikroC PRO para PIC IDE. IDE Atalhos F1 Ctrl + N Ctrl + O Ajuda Nova Unidade Abrir Ctrl + Shift + S Ctrl + V Ctrl + X Ctrl + Y Ctrl + Z Ctrl + Shift + Z Salvar tudo Colar Corte Excluir linha inteira Desfazer Refazer

Ctrl + Shift + Projeto Open O + Shift + Novo projeto Ctrl N +K Ctrl Encerrar o projeto Ctrl + F4 Fechar Unidade

Editor Atalhos avanada Ctrl + Espao Ctrl + Shift + S +D Ctrl Ctrl + E Ctrl + L Ctrl + G Ctrl + J Ctrl + Shift +. Ctrl + Shift +, Ctrl + nmero Ctrl + Shift + Ctrl + Shift + I Ctrl + Shift + U TAB Shift + TAB Alt + Seleo Ctrl + Alt + S l Ctrl + Alt + L Ctrl + Alt + U Ctrl + Alt + T Cdigo Assistente Parmetros de Assistente Encontrar declarao Pesquisa incremental Lista de rotina linha Goto Inserir Cdigo Modelo Comentar Cdigo Descomente Cdigo marcador Goto marcador definido Recuo seleo Unindent seleco Recuo seleo seleo Unindent Selecionar colunas Selecionar colunas Converter a seleo para minsculas Converter a seleo para maisculas Converter em titlecase

Ctr + Shift + Edit Project E + F9 Ctrl Construir Shift + F9 Ctrl + F11 Shift + F4 Build All Construir e programar Ver Breakpoints

Ctrl + Shift + Limpar os pontos de F5 i t F11 Start me Programador Ctrl + Shift + Gerente de Projetos F1 F12 Opes Alt + X Fechar mikroC PRO para PIC Editor Atalhos Basic F3 Shift + F3 Alt + F3 Ctrl + A Ctrl + C Ctrl + F Ctrl + R Ctrl + P Ctrl + S Localizar, Localizar prxima Procurar o Anterior Pesquisa Grep, em arquivos Selecionar Tudo Cpia Pesquisar Substituir Imprimir Salvar unidade

30

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC mikroICD Debugger e Software Simulador de Atalhos F2 F4 F5 F6 F7 F8 F9 Ctrl + F2 Ctrl + F5 Ctrl + F8 Alt + D Shift + F5 Ir para interrupo Executar at o cursor Alternar ponto de interrupo Execute o depurador Pausa / Etapa em Passe por cima Depurar Parar Debugger Add to watch list Saia DESMONTAGEM Vista Abrir a janela Watch

CAPTULO 2

Meio Ambiente

Ctrl + Shift + A Show Advanced Breakpoints

Mikroelektronika - Solues de software e hardware para o mundo embutido

31

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente IDE GERAL


A mikroC PRO para PIC um ambiente amigvel e intuitivo:

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

32

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

PERSONALIZAO LAYOUT IDE


Docking Windows
Voc pode aumentar a visualizao e edio espao para o cdigo, dependendo de como voc organizar as janelas no IDE. Passo 1: Clique na janela que voc deseja encaixar, dar-lhe o foco.

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

33

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
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.

Meio Ambiente

Passo 4: Para encaixar a janela na posio indicada, solte o boto do mouse. Dica: Para mover uma janela acoplvel sem rotura no lugar, pressione CTRL enquanto arrastando-o.

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

34

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Auto Ocultar
Auto Esconder "permite ver mais do seu cdigo de uma vez por minimizando ferramenta ganhadows ao longo das bordas do IDE quando no estiver em uso. Clique na janela que deseja manter visvel a dar-lhe o foco. Clique no cone de alfinete na barra de ttulo da janela. .

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

35

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente Editor avanado de cdigo

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

Editor de recursos avanados


Ajustvel Realce de Sintaxe Cdigo Assistente Cdigo Folding Parmetro Assistente Modelos de Cdigo (Auto Complete) Correo automtica de erros de digitao comuns Verificador Ortogrfico Marcadores e Goto Line Comente / Descomente Voc pode configurar o destaque da sintaxe, modelos de cdigo e Auto Correto Editor de dilogo Configuraes. Para acessar as configuraes, clique em Ferramentas > Opes da menu drop-down, clique no boto Mostrar cone Opes ou a tecla F12 imprensa.

36

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

Cdigo Folding
dobramento de cdigo IDE recurso que permite aos usurios ocultar ou exibir seces de um arquivo de origem. Desta forma mais fcil de gerenciar grandes regies de cdigo dentro uma janela, enquanto a visualizao apenas as subseces do cdigo que so relevantes durante uma sesso de edio especial. Ao digitar, o smbolo de dobragem de cdigo (- e +) aparecer automaticamente. Use a dobrao de smbolos para ocultar / mostrar as subsees cdigo.

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

37

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente

Parmetro Assistente
O Assistente de parmetro ser invocado automaticamente quando voc abre parnteses "(" ou pressione Shift + Ctrl + Espao. Se o nome de uma funo vlida precede o parentese, em seguida, os parmetros esperados sero exibidos em um painel flutuante. Como voc digite o parmetro real, o prximo parmetro esperado ficar em negrito.

Modelos de Cdigo (Auto Complete)

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

Voc pode adicionar seu modelos prprios para a lista. Selecione Ferramentas > Opes no menu drop-down menu, ou clique no boto Mostrar cone Opes e selecione a guia Auto Completar. Aqui voc pode digitar o apropriado palavra-chave, descrio e cdigo do seu template. macros Autocomplete pode sistema e recuperar informaes sobre o projeto: - % DATE% - Data atual do sistema - %% TIME - Hora atual do sistema - %% DISPOSITIVO - Nome do dispositivo (MCU), conforme especificado nas configuraes do - projeto - %% DEVICE_CLOCK - Relgio, conforme especificado no projeto definies %% COMPILER - Compilador verso atual

38

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

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

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

Verificador Ortogrfico
O verificador ortogrfico sublinha desconhecido objetos no cdigo, para que eles possam ser facilmente notado e corrigido antes de compilar o seu projeto. Selecione Ferramentas > Opes a partir do menu drop-down, ou clique no cone Mostrar opes e, em seguida, selecione a aba Verificador Ortogrfico.

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

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

Comentrio / Descomente
Alm disso, o editor de cdigo tem um recurso para comentar ou descomentar selecionado cdigo simples clique de um mouse, utilizando o cone comentar e inco-

mento Icon do Cdigo de Barra. www.mecatronicadegaragem.blogspot.com

Mikroelektronika - Solues de software e hardware para o mundo embutido

39

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente Explorador de cdigo

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

As seguintes opes esto disponveis no Gerenciador de Cdigo: cone Descrio Expandir / Recolher todos os ns da rvore. Localize declarao no cdigo.

40

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

LISTA DE ROTINA
lista de rotina diplays lista de rotinas, e permite que as rotinas de filtragem por nome. Rotina janela da lista pode ser acessada pressionando Ctrl + L. Voc pode saltar para uma rotina desejado, clicando duas vezes nele.

Mikroelektronika - Solues de software e hardware para o mundo embutido

41

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente GERENTE DE PROJETOS

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

Na sequncia opes esto disponveis no Project Manager:

42

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente
Descrio Salvar projeto do Grupo. Abra grupo de projeto. Feche o projeto ativo. Fechar grupo de projeto. Adicione projeto para o grupo de projeto. Retire do projeto grupo de projeto. Adicionar arquivo ao projeto ativo. Remover arquivos selecionados a partir do projeto. Construir o projeto ativo. programador executar mikroElektronika do Flash.

cone

Para obter detalhes sobre como adicionar e remover arquivos projeto consulte Adicionar / Remover arquivos de Projeto. Tpicos relacionados: Configuraes do projeto, o Project Menu de Opes, Opes do menu File, Project Toolbar, barra de ferramentas Build, Adicionar / Remover arquivos do Project

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

43

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente PROJETO DE JANELA DE CONFIGURAO

As seguintes opes esto disponveis nas configuraes do projeto Janela: Dispositivo - selecionar o dispositivo apropriado na lista de dispositivos drop-down. Oscilador - digite o valor da freqncia do oscilador. Construir / Debugger Tipo - escolha depurador tipo.

Tpicos relacionados: Edit Project, Personalizando Projetos

44

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

45

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
cone Descrio

Atualizar Biblioteca de verificao de arquivos em "Usos" pasta. til quando novos bibli di i d i d i " Reconstruir todas as bibliotecas disponveis. til quando fontes" da biblioteca esto disponveis e id d d f t Inclui todas as bibliotecas disponveis no projeto atual. Nenhuma biblioteca da lista sero includos no projeto atual. Restaurao da biblioteca para o estado apenas antes de salvar ltimo j t tpicos relacionados: mikroC PRO para PIC Bibliotecas, Criao de um novo Biblioteca

46

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

ERRO JANELA
No caso em que foram encontrados erros durante a compilao, o compilador vai relat-los e no ir gerar um arquivo hex. A janela de erro ser solicitado na parte inferior da Na janela principal por padro. A janela de erro est localizado no separador Mensagem, e mostra a localizao eo tipo de erros, o compilador encontrou. O compilador tambm relata advertncias, mas estas no afetam a sada, os erros s pode interefere com a gerao de hex.

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

47

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente ESTATSTICAS

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

Uso o Windows Memory


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

Uso de memria RAM


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

48

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

RAM locais utilizados


Exibe usados locais de memria RAM e seus nomes.

SFR Locais
Exibe uma lista de utilizados SFR locais.

Mikroelektronika - Solues de software e hardware para o mundo embutido

49

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Uso de memria ROM
ROM Exibe o uso do espao de memria em forma de pizza-like.

Memria ROM Constantes


Exibe constantes memria ROM e seus endereos.

50

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Funo ordenados por nome


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

Funes ordenados por tamanho


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

Mikroelektronika - Software e Solues de hardware para Embedded World

51

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Funes Ordenado por Endereos

Classifica e mostra por suas funes endereos, em ordem crescente.

Funes Ordenado por Nome do Quadro


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

52

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Funes Ordenado por Grfico Tamanho


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

Funes ordenadas por endereo Grfico


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

Mikroelektronika - Solues de software e hardware para o mundo embutido

53

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Funo rvore
Exibe Funo rvore com os dados relevantes para cada funo.

Memria Resumo
Apresenta resumo de memria RAM e memria ROM de forma torta-like.

54

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Editor de Macros
A macro uma srie de teclas que foram "gravadas" na ordem executada. Uma macro permite "gravar" uma srie de teclas e depois em 'playback', ou repetir, as teclas gravadas.

A Macro oferece os seguintes comandos: cone Descrio teclas "gravao" comea para posterior reproduo. Pra keystrokesthat captura comeou quando o Start com Recordigmando foi selecionado. Permite uma macro que foi gravada para ser repetidos. Novo macro. Excluir macro.

Tpicos Relacionados: Avanado editor de cdigo, modelos de cdigo

Mikroelektronika - Solues de software e hardware para o mundo embutido

55

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente Ferramentas integradas


USART Terminal

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

56

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

EEPROM Editor
O Editor usado EEPROM para manipulao de memria EEPROM MCU. Voc pode lan-lo a partir do menu drop-down Ferramentas > EEPROM Editor. Quando Utilize este definio EEPROM est marcada compilador gerar Intel hex project_name.ihex que contm dados a partir do editor EEPROM. Quando voc executa programador de software mikroElektronika mikroC PRO para PIC IDE - project_name.hex arquivo ser carregado automaticamente durante a IHEX arquivo deve ser carregado manualmente.

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

57

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
ASCII Grfico

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

58

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Sete Converter Segmento


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

LCD caractere personalizado


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

Mikroelektronika - Solues de software e hardware para o mundo embutido

59

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
LCD Grfico Editor de Bitmap

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

60

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

61

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
UDP Terminal

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

62

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

mikroBootloader

(De AN732 Microchip documento) A famlia de PIC16F87X microcontroladores tem a habilidade de escrever sua memria prprio programa. Este recurso permite um arranque de pequenas programa gerenciador de receber e gravar um novo firmware na memria. Na sua mais simples formulrio, o gestor de arranque comea o cdigo de usurio em execuo, salvo se considerar que o novo firmware deve ser baixado. Se houver um novo firmware a ser baixado, ele recebe os dados e grava-lo em memria do programa. H muitas variaes e FEA-suplementar estruturas que podem ser adicionadas para melhorar a confiabilidade e simplificar a utilizao do gerenciador de inicializao. Nota: mikroBootloader s pode ser usado com microcontroladores PIC que piscam apoio escrever.

Como usar mikroBootloader?


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

Mi kr oel ekt ro nik aSo ftw are e Sol u e s de har dw are par a

Embedded World

www.mecatronicadegaragem.blogspot.com

63

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Caractersticas

O cdigo de inicializao do computador d 5 segundos para ficar ligado a ele. Se no, ele comea a execuo do existentes de cdigo de usurio. Se houver um novo cdigo para ser baixado, o cdigo de inicializao recebe e grava os dados em memria do programa. As caractersticas mais comuns do gerenciador de inicializao pode ter esto listados abaixo: Cdigo no local Reset. Cdigo em qualquer lugar em uma pequena rea de memria. Verifica se o usurio quer novo cdigo a ser carregado. Inicia a execuo do cdigo do usurio se nenhum novo cdigo est a ser carregada. Recebe o cdigo de novo usurio atravs de um canal de comunicao se o cdigo est a ser carregado. Programas do novo cdigo em memria.

Integrando Cdigo de Utilizador e Cdigo de inicializao

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

64

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

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

Ferramentas
A 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 edio - Tool9.

Mikroelektronika - Solues de software e hardware para o mundo embutido

65

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
As configuraes de sada

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

66

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Expresses Regulares
Introduo
As expresses regulares so um mtodo amplamente utilizado de especificar padres de texto para pesquisar. metacaracteres especiais permitem que voc especificar, por exemplo, que a partistring lar que voc est procurando, ocorre no incio ou final de uma linha, ou que contm n recorrncia de um determinado personagem.

Simples partidas

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

Seqncias de escape
Caracteres podem ser especificados usando uma seqncias de escape: "\ N" corresponde a uma nova linha, "\ T" uma guia, etc Em termos mais gerais, \ Xnn, onde nn uma seqncia de dgitos hexadecimais, coincide com o caractere cujo valor ASCII nn. Se voc precisa de um cdigo de caracteres de largura (Unicode), voc pode usar '\ X {} nnnn',
onde 'Nnnn'

- Um ou mais dgitos hexadecimais.


\ Xnn - Char com o cdigo hexadecimal nn \ X {nnnn) - char com o cdigo 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 Mi kr oel ekt

ronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

67

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Exemplos:
unsigned \ x20int jogos 'Unsigned int' (Note o espao no meio) \ Tunsigned jogos 'Unsigned' (Predecessed por guia)

Meio Ambiente

Classes de caracteres
Voc pode especificar uma classe de caracteres, colocando uma lista de caracteres em [], Que ser corresponde a nenhum dos personagens da lista. Se a primeira caractere aps o "[" "^", o classe corresponde a qualquer caractere que no est na lista. Exemplos:
Contagem "Countbr Contagem "Countar [aeiou] r encontra strings "Countar ',' contador ', etc, mas no ',' countcr, etc [^ aeiou] r encontra strings "Countbr ',' countcr, etc, mas no ',' contador ', etc

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

Se voc quiser "-" se a ser um membro de uma classe, coloc-lo no incio ou no final da lista, ou precedem com uma barra invertida. Se voc quiser ']', voc pode coloc-lo no incio da lista ou preced-lo com uma barra invertida. Exemplos:
[Az] jogos 'A', 'z' e '-' [Az] jogos 'A', 'z' e '-' [A \-z] jogos 'A', 'z' e '-' [A-z] corresponde a todos os 26 pequenos caracteres 'A' para 'Z' [\ N \ x0d] corresponde a qualquer das # 10, # 11, # 12, # 13. [\ D-t] corresponde a qualquer dgito, '-' ou 'T'. []-A] corresponde a qualquer caractere de ']'..' Um '.

Metacaracteres
Os metacaracteres so caracteres especiais que so a essncia da expresso regularses. Existem diferentes tipos de metacaracteres, descrito abaixo.

68

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Metacaracteres - separadores Line


^ - Incio da linha $ - Fim da linha \ A - Incio do texto \ Z - Final do texto . - qualquer caractere na linha Exemplos: ^ PORTA - seqncia de partidas PORTA $ - seqncia de partidas PORTA ^ $ - seqncia de partidas PORT.r - seqncias de jogos como PORTA s se for na incio da linha PORTA s se for no final de linha PORTA s se for a cadeia apenas em linha 'Porta', 'PORTB', 'PORT1' e assim por diante

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

Metacaracteres - classes pr-definidas


\ W - Uma caracteres alfanumricos (incluindo "_") \ W - Um personagem nonalphanumeric \ D - Um personagem numricos \ D - Um carter no-numricos \ S - Todo o espao (o mesmo que [\ T \ n \ r \ f]) \ S - Um espao no Voc pode usar \ W, \ D e \ S dentro de classes de personagens personalizadas.

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

69

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Metacaracteres - Os limites de palavra

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

Metacaracteres - Iterators

Qualquer item de uma expresso regular pode ser seguido por um outro tipo de metacharactros - iteradores. Usando este metacaracteres, voc pode especificar o nmero de ocorrncias de personagem anterior, metacaractere ou subexpresso. * - Zero ou mais ("gananciosos"), semelhante a {0,} + - Uma ou mais ("gananciosos"), semelhante a {1} ? - Zero ou um ("gananciosos"), semelhante a {0,1} {N} - Exatamente n vezes ("avarento") {N,} - s vezes, pelo menos n ("avarento") {N, m} - Pelo menos n mas no mais do que m vezes ("avarento") *? - Zero ou mais ("non-greedy"), semelhante a {0,}? +? - Uma ou mais ("non-greedy"), semelhante a {1}? ? - Zero ou um ("non-greedy"), semelhante a {0,1}? {N}? - Exatamente n vezes ("non-greedy") {N,}? - s vezes, pelo menos n ("non-greedy") {M, n}? - Pelo menos n mas no mais do que m vezes ("non-greedy") Assim, os dgitos em chaves do forma, {M, n}, especificar o nmero mnimo de vezes para combinar com o item n eo mximo m. A forma {N} equivalente a {N, n} e corresponde exatamente n tempos. A forma {N,} fsforos ou mais vezes. No h limite ao tamanho da n ou m, mas grande nmero ser mastigar mais memria e retardar execuo. Assim, os dgitos em chaves do formulrio, {N, m}, especificar o nmero mnimo de vezes para combinar com o item n eo mximo m. A forma {N} equivalente a {N, n} e corresponde exatamente n tempos. A forma {N,} fsforos ou mais vezes. No h limite ao tamanho da n ou m, mas um grande nmero vai mastigar mais memria e retardar execuo.

Se uma chaveta ocorre em qualquer outro contexto, ela tratada como uma personagem regular.

70

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Exemplos:

CAPTULO 2

Meio Ambiente

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

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

Metacaracteres - Alternativas
Voc pode especificar uma srie de alternativas para um padro de uso "|" separ-los, de modo que bat | | pouco bot ir corresponder a qualquer dos "Bit", "Bat", ou "Bot" na seqncia alvo como seria "B (i | a | o) t)". A primeira alternativa inclui tudo, desde a ltima
pat

delimitador tern ("(", "[" Ou o incio do padro) at o primeiro "|", E a ltima alternativa contm tudo, desde a ltima "|" para o prximo padro delimiter. Por este motivo, comum a prtica de incluir alternativas entre parnteses, a minimizar a confuso sobre onde comeam e terminam. Alternativas so julgados a partir da esquerda para a direita, para a primeira alternativa encontrada para que o expresso inteira partidas, aquele que escolhido. Isto significa que as alternativas no so necessariamente gananciosos. Por exemplo: quando a correspondncia rou | goleada contra "Routine ", apenas o "Rou" parte ir corresponder, como que a primeira alternativa julgado, e com sucesso corresponde a seqncia alvo (isto pode no parecer importante, mas imimportante quando voc est capturando texto correspondente usando parnteses). Tambm lembro que "|" interpretado como um literal entre colchetes, por isso, se voc escrever [Bit | morcego |
bot]

voc realmente apenas a correspondncia [Biao |].

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

Mi kr

oelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

71

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Metacaracteres - Subexpresses

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

Exemplos:
(Int) {8,10} seqncias de jogos que contenham 8, 9 ou 10 instncias do 'int' routi ([0-9] | a +) e "Routi0e 'corresponde a' routi1e ',' rotina ',' routinne,

"Routinnne 'etc

Metacaracteres - Referncias Anteriores

Metacaracteres \ 1 atravs \ 9 so interpretadas como referncias anteriores. \ PREVI-partidas previamente combinados subexpresso #.

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

72

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

mikroC PRO para PIC OPES DE LINHA DE COMANDO


Uso: mikroCPIC1618.exe [- <opts> [- <opts>]] [<ENTRADA> [- <opts>] [] <opts>]] INFILE pode ser de *. C, *. mcl e *. Pld tipo. Os seguintes parmetros e pouco mais (ver manual) so vlidos: - P: MCU para que a compilao ser feito. - PARA: Definir oscilador [em MHz]. - SP: Adicionar o diretrio para a lista de caminho de pesquisa. - SE: Adicionar o diretrio para o # include lista de pesquisa. - N: Os arquivos de sada gerados a caminho do arquivo especificado por filename. - B: Salvar arquivos binrios compilados (*. mcl) para 'diretrio'. - O: opes de sada diversas. - DBG: Gerar informaes de depurao. - L: Verificar e reconstruir novas bibliotecas. - D: Criar todos os arquivos como bibliotecas. - Y: Dynamic link para strings literais. - C: Ligue maisculas e minsculas. - UCD: CID tipo de compilao. Exemplo:
mikroCPIC1618.exe-MSF-DBG-p16F887-ES-C-O11111114-fo8 N "C: \ Lcd \ Lcd.mcppi" SP "C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ Defs \ "-SP" C: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ usa \ P16 \ "SP" C: \ Lcd \ "Lcd.c" __Lib_Math.mcl " "__Lib_MathDouble.mcl" __Lib_System.mcl "__Lib_Delays.mcl" "__Lib_LcdConsts.mcl" __Lib_Lcd.mcl "

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

Adicione o diretrio para a lista de caminho de pesquisa. - -SP "C: \ Lcd \" adicionar o diretrio para a lista de caminho de pesquisa. - "Lcd.c" __Lib_Math.mcl "__Lib_MathDouble.mcl" "__Lib_System.mcl" __Lib_Delays.mcl "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl": Especifique arquivos de entrada. Mikroelektronika - Solues de software e hardware para o mundo embutido

73

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente PROJETOS

A mikroC PRO para PIC organiza as aplicaes em projetos, que consiste de um nico arquivo de projeto (extenso . Mcppi) e um ou mais arquivos fonte (extenso). mikroC PRO para PIC IDE permite gerenciar mltiplos projetos (consulte Project Manager). Os arquivos de origem podem ser compilados somente se forem parte de um projeto. O arquivo de projeto contm as seguintes informaes: - nome do projeto e uma descrio opcional, - dispositivo de destino, - bandeiras dispositivo (config palavra), - relgio do dispositivo, - lista dos arquivos do projeto de origem com os caminhos, - arquivos de cabealho (*. h), - arquivos binrios (*. mcl) - arquivos de imagem, - outros arquivos. Note-se que o projeto no incluir arquivos da mesma forma como pr-processamento que, consulte Adicionar / Remover arquivos do projeto.

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

74

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Assistente de Novas Etapas do Projeto


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

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

75

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Passo dois - Digite o valor da freqncia do oscilador.

Meio Ambiente

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

76

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

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

Tpicos relacionados: Gerente de Projetos, Project Configuraes Mikroelektronika - Solues de software e hardware para o mundo embutido

77

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente PROJETOS

A mikroC PRO para PIC organiza as aplicaes em projetos, consistindo de um nico arquivo de projeto (extenso . Mcppi) e um ou mais arquivos fonte (extenso). mikroC PRO para PIC IDE permite gerenciar mltiplos projetos (consulte Project Manager). Os arquivos de origem podem ser compilados somente se forem parte de um projeto. O arquivo de projeto contm as seguintes informaes: - nome do projeto e uma descrio opcional, - dispositivo de destino, - bandeiras dispositivo (config palavra), - relgio do dispositivo, - lista dos arquivos do projeto de origem com os caminhos, - arquivos de cabealho (*. h), - arquivos binrios (*. mcl) - arquivos de imagem, - outros arquivos. Note que o projeto no inclui arquivos da mesma forma como pr-processamento faz, consulte Adicionar / Remover arquivos do projeto.

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

78

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Assistente de Novas Etapas do Projeto


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

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

79

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Passo dois - Digite o valor da freqncia do oscilador.

Meio Ambiente

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

80

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

81

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente PERSONALIZAO PROJETOS


Edit Project

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

Gerenciando Grupo de Projecto


mikroC PRO para PIC IDE covenient fornece a opo que permite vrios projetos ser abertas simultaneamente. Se voc tem vrios projetos sendo conectado em alguns Assim, voc pode criar um grupo de projetos. O grupo do projecto pode ser salva, clicando no cone Save Project Group da a janela do Project Manager. O grupo do projecto pode ser reabriu clicando no

Open Project Icon Group. Todos os dados relevantes sobre o grupo do projeto so armazenadas em o arquivo de grupo de projeto (extenso . Mpgroup)

Adicionar / Remover arquivos do Project


O projeto pode conter os seguintes tipos de arquivo:

- arquivos de origem - . H arquivos de cabealho - . Mcl binria arquivos - PLD nvel de projeto define os arquivos - arquivos de imagem - . Hexadecimal, . Asm e . Lst arquivos, consulte os arquivos de sada. Esses arquivos no podem ser adicionados ou retirados do projeto. - Outros arquivos

82

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

Nvel do projeto define:


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

Define um smbolo macro nomeada. Para especificar um valor, use = Valor. Se = Valor omitido, 1 ser adotado. No digitar caracteres espao em branco imediatamente antes da "=". Se um caractere de espao em branco inserido imediatamente aps a "=", A macro definido como zero token. Esta opo pode ser especificada repetidamente. Cada aparecimento de smbolo ser substitudo pelo valor antes da compilao. Existem dois nveis de projeto pr-define. Veja em nvel de projeto predefinido define Nota: Para incluso dos arquivos de cabealho (extenso . H), use o direo pr-processador tiva # Include. Veja arquivo de incluso para mais informaes. Tpicos relacionados: Gerente de Projetos, Project Settings, Edit Project

www.mecatronicadegaragem.blogspot.com Mikroelektronika - Solues de software e hardware para o mundo embutido

83

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente Arquivos de origem

Arquivos de origem contendo o cdigo C deve ter a extenso. A lista de arquivos de origem relevantes para a aplicao armazenado no arquivo de projeto com extenso mcppi.,
juntamente com

outras informaes de projeto. Voc pode compilar arquivos de origem somente se eles so parte do projeto. Use a diretiva de pr-processamento # Include para incluir arquivos de cabealho com a extenso . H. No confie na pr-processador para incluir outros arquivos de origem de cabealhosconsulte Adicionar / Remover arquivos do projeto para obter mais informaes.

Gerenciando arquivos de origem Criar novo arquivo de origem


Para criar um novo arquivo de origem, faa o seguinte: 1. Selecione Arquivo > Nova Unidade a partir do menu drop-down, ou pressione Ctrl + N, ou clique no Novo cone do arquivo da drop-down menu, ou pressione Ctrl + S, ou clique no boto Save a partir do arquivo File Icon Barra de ferramentas e nome-lo como quiser. Se voc usar o novo assistente de projeto, um arquivo de origem vazio, o nome do projeto com extenso, ser criado automaticamente. A mikroC PRO para PIC no requer que voc ter um arquivo de origem o mesmo nome que o projeto, s uma questo de convenincia. Arquivo da Barra de Ferramentas.

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

Abrindo um arquivo existente


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

Imprimindo um arquivo aberto

www.mecatronicadegaragem.blogspot.com

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

84

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

Salvando arquivo com um nome diferente


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

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

85

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente CLEAN Pasta do projeto

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

Temas relacionados: Personalizando Projetos

86

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

a partir de

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

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

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

Tpicos relacionados: Menu Project, Project Barra de ferramentas, janela de erro, Gerente de Projeto, ProConfiguraes ject Mi

kroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
87

Formato Intel HEX Binria

Descrio

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

Tipo de A i

. Lst Lista de Arquivos Resumo dos PIC colocao de memria: a instruo d i i Homem montagem d legveis com nomes lsimblicos, . Asm Montador de extrados a partir da lista de arquivos. i

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente MENSAGENS DE ERRO


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

88

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC - Montador de instrues [% S] no foi encontrado - Nome do projeto deve ser especificado - Opo de linha de comando desconhecido: [% S] - Extenso de ficheiro em falta: [% S] - Ruim para o argumento: [% S] - Preprocessor encerrado com cdigo de erro [% S] - Endereo Bad absoluta [% S] - Recurso ou cross-convocao de [% S] - Reentrncia no permitido: funo [% s] chamado a partir de dois segmentos - Nenhum arquivo especificado Parmetro - dispositivo ausente (por exemplo, P16F ...) - Seqncia de parmetro invlido - Nome do projeto deve ser definido - Especificador necessrio - [% S] no encontrado [% S] - ndice fora dos limites - Dimenso da matriz deve ser maior que 0 - Expresso Const esperado - Const inteiro esperado - Recurso em definio - Array corrompido - Argumentos no pode ser do tipo void - Argumentos no pode ter specificator memria explcita - Classe de armazenamento Bad - Ponteiro para a funo exigida - Funo necessria - Converso ilegal ponteiro para casal - Tipo Integer necessrio - Os membros no podem ter especificador de memria - Os membros no pode ser do tipo bit ou sbit - Too inicializadores muitos - Too inicializadores muitos subaggregate - J usado [% S] - Ilegal expresso com o vazio - O endereo deve ser maior que 0 - [% S] Identificador redefiniu - Anulao do usurio - Expresso deve ser maior que 0 - Declarator invlido esperado "(" ou identificador - Nome typdef redefinidos: [% S] - Declarator erro - Lista qualificador Specifer / esperado - [% S] j utilizado - ILevel s pode ser utilizada com as rotinas de interrupo de servio -; Esperado, mas [% S] encontrados Mikroelektronika - Solues de software e hardware para o mundo embutido

CAPTULO 2

Meio Ambiente

89

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC - Expectativa "{" - [% S] Identificador redefiniu - "(" esperado, mas [% S] encontrados - ")" esperado, mas [% S] encontrados - "Case" fora do switch - "" esperado, mas [% S] encontrados - "Default" rtulo de alternar - Expresso do switch deve avaliar o tipo integral - Enquanto esperava, mas [% S] encontrados - Funes void no pode retornar valores - "Continue" fora do circuito - Cdigo Inacessvel - Etiqueta redefiniu - Tipo de vazio na expresso - Too muitos chars - tipo no resolvida - Matrizes de objetos contendo matrizes de tamanho zero so ilegais - Invalid enumerador - ILevel s pode ser utilizada com as rotinas de interrupo de servio - Valor iLevel deve ser integral constante - Fora da faixa iLevel "0 .. 4" - "}" esperado [% S] encontrados - ")" esperado, mas [% S] encontrados - "Quebrar" fora do lao ou switch - Esvazie char - A inexistncia de campo [% S] - Ilegal representao char: [% S] - Inicializador de erro de sintaxe: array multidimensional faltando subscrito - Too inicializadores muitos subaggregate - Pelo menos um caminho de pesquisa deve ser especificado - No existe memria RAM suficiente para a pilha de chamadas - Demo Limite - Parmetro [% S] no deve ser do tipo bit ou sbit - A funo no deve ter valor de retorno do tipo bit ou sbit

Meio Ambiente

90

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Mensagens de advertncia do compilador:


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

Mensagens de erro vinculador:


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

Mikroelektronika - Solues de software e hardware para o mundo embutido

91

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente Viso geral do software simulador

A fonte de nvel de software Simulator um componente integrante do mikroC PRO para PIC ambiente. Ele projetado para simular operaes do PIC e MCUs auxiliar os usurios na depurao de cdigo C escrito para esses dispositivos. Aps a concluso de escrever o seu programa, escolha Lanamento tipo de compilao no projeto janela de configuraes:

Depois de ter compilado com sucesso o seu projeto, voc pode executar o Software Simulator selecionando Executar > Iniciar o depurador a partir do menu drop-down, ou clicando em o cone Iniciar o depurador a partir da barra de ferramentas do depurador. Iniciando o Sim Software ulador torna mais opes disponveis: Step Into, Step Over, Step Out, Run to Cursor, etc linha que est a ser executada a cor em destaque (azul por padro). Nota: O Simulador de Software simula o fluxo do programa e execuo de instrues de linhas de produo, mas no pode inteiramente PIC emular o comportamento do dispositivo, ou seja, no atualizao temporizadores, sinalizadores de interrupo, etc

92

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

Breakpoints Janela

A janela de Breakpoints gerencia a lista de atualmente definido pontos de interrupo no projeto. Doubleclicking o ponto de interrupo pretendido causar cursor para navegar para o corresponding local no cdigo-fonte.

Janela de Inspeo
O Software Simulador de ver da janela o principal software janela Simulator que lhe permite monitorar itens de programa ao simular o seu programa. Para mostrar a Janela de Inspeo, selecione Ver > Debug Windows > Assista no menu drop-down menu. O relgio apresenta janela de variveis e registradores do MCU, juntamente com seus endereos e valores. H duas maneiras de adicionar variveis / registar-se para a lista de observao: pelo seu verdadeiro nome (nome da varivel no cdigo "C"). Basta selecionar desejado variable/regIster de Selecione varivel da lista menu drop-down e clique no boto Adicionar . pelo seu nome de identificao (Nome da varivel de montagem). Simplesmente digite o nome do ID que varivel / registo que pretende exibir em Pesquisar na varivel assemby nome caixa e clique no boto Adicionar .

Mikroelektronika - Solues de software e hardware para o mundo embutido

93

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC As variveis tambm podem ser retirados a janela Watch, basta selecionar a varivel que voc deseja remover e clique no boto Remover. Adicionar Tudo Button Boto Remover tudo agrega todas as variveis. remove todas as variveis.

Meio Ambiente

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

Duplo clicando em uma varivel ou clicando no boto Propriedades abre Edit Value janela na qual voc pode atribuir um novo valor para o selecionado varivel / register. Alm disso, voc pode escolher o formato da varivel / register representao entre decimal, hexadecimal, float, binria ou de caracteres. Todas as representaes, exceto float so assinados por padro. Para a representao assinada clique na caixa de seleo ao lado o Assinado etiqueta.

94

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

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

Exibir janela RAM


Depurador Ver RAM janela est disponvel a partir do menu drop-down, Ver > Depurar Windows > Ver RAM. A Janela de RAM Vista exibe o mapa de memria RAM PIC, com mudou recentemente itens de cor vermelha.

Mikroelektronika - Solues de software e hardware para o mundo embutido

95

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente
Cronmetro Janela

O Software Simulador de Cronmetro janela est disponvel a partir do menu drop-down, Ver > Debug Windows > Cronmetro.

A janela exibe um cronmetro contagem atual de ciclos de tempo desde a ltima Soft ao Simulator ware. Cronmetro mede o tempo de execuo (nmero de ciclos) partir do momento em Software Simulator j comeou e pode ser redefinido a qualquer momento. Delta representa o nmero de ciclos entre as linhas de ao onde o Software Simulador comeou e terminou. Nota: O usurio pode alterar o relgio na janela cronmetro, que ser recalculadoOs valores finais para a ltima frequncia especificada. Mudando o relgio no cronmetro Janela no afeta as configuraes de projeto real - apenas fornece uma simulao.

96

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 2

Meio Ambiente

SIMULADOR DE OPES DE SOFTWARE


Nome
Incio Depurador Executar / Pausar Parar d Depurador Toggle

Descrio Simulador de Software Iniciar. Executar ou pausar Software Simulator. Stop Simulador de Software.

Funo Key [F9] [F6] [Ctrl + F2]

Barra de

Alternar ponto de interrupo na posio do cursor atual posio. Para visualizar todos os pontos de Breakpoints interrupo, selecione Executar > Veja os pontos de interrupo no menu d Corra para cur- d Executar todas as instrues entre os actuais sor instruo e posio do cursor.
Step Into

[F5]

[F4]

Step Over Step Out

Execute o atual C (simples ou multi-ciclo) instruo, e ento pare. Se a instruo um rouchamada nicotina, entra na rotina e parar na primeira i t o atual C (simples ou i t h d Execute multi-ciclo) instruo, e ento pare. Executar todas as demais instrues do rotina atual, o retorno e depois parar.

[F7]

[F8] [Ctrl + F8]

Tpicos Relacionados: Executar Menu Debug Barra

Mikroelektronika - Solues de software e hardware para o mundo embutido

97

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente CRIANDO NOVOS BIBLIOTECA

mikroC PRO para PIC permite que voc crie suas prprias 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: PIC \ usa \ P16 Letra_da_unidade: PIC \ usa \ P18 \ Program Files \ Mikroelektronika \ mikroC PRO para \ \ Program Files \ Mikroelektronika \ mikroC PRO para \

Se voc estiver criando biblioteca para famlia de microcontroladores PIC16 o arquivo deve ser salvo na pasta P16. Se voc est criando biblioteca para a famlia PIC18 MCUs o arquivo deve ser salvo em fodler P18. Se voc estiver criando biblioteca para famlias PIC16 e PIC18 MCUs o arquivo deve ser salvo em ambas as pastas. 3. Escreva um cdigo para a sua biblioteca e salv-lo.

4. Adicionar __Lib_Example arquivo em algum projeto, consulte Project Manager. Recompile o projeto. Se voc quiser usar esta biblioteca para todos os MCUs, ento voc deve ir para Ferramentas > Opes > Sada configuraes e verificar Construir todos os arquivos como a biblioteca caixa. Isto ir construir bibliotecas em uma forma comum que ir funcionar com todos os MCUs. Se isso caixa no estiver marcada, ento biblioteca ser construda para MCU selecionado. Tenha em mente que o compilador apresentar um erro se uma biblioteca construda de MCU especfico utilizadas para outra. 5. Compilado arquivo __Lib_Example.mcl deve aparecem em ... \ mikroC PRO para PIC \ usa \ pasta. 6. Abra o arquivo de definio para o MCU que voc deseja usar. Este arquivo colocado na pasta compilador Defs:
Letra_da_unidade: \ Program Files \ Mikroelektronika \ mikroC PRO para PIC \ Defs \

e chamado MCU_NAME.mlk, por exemplo 16F887.mlk 7. Adicione o segmento de cdigo a seguir <LIBRARIES> n da definio arquivo (arquivo de definio est no formato XML):
<LIB> <alias> Example_Library </ Alias> <FILE> __Lib_Example </ File> <Type> REGULAR </ Tipo>

98

www.mecatronicadegaragem.blogspot.com
Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
</ LIB>

CAPTULO 2

Meio Ambiente

8. Adicionar Biblioteca para mlk arquivo para cada MCU que voc deseja usar com sua biblioteca. 9. Clique no boto Atualizar no Gerenciador de bibliotecas 10. Example_Library deve aparecer na janela do gerenciador de biblioteca.

Biblioteca de vrias verses

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

99

CAPTULO 2

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Meio Ambiente

100

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

CAPTULO

MIKROICD (IN-CIRCUIT Depurador)


mikroICD um instrumento extremamente eficaz para depurao em Tempo-Real em nvel de hardware. CID depurador permite que voc execute um mikroC PRO para PIC programa em um host PIC valores das variveis do microcontrolador e ver, Registros de Funo Especial (SFR), notary e EEPROM conforme o programa est sendo executado.

101

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Passo n 1 Se voc tiver de hardware e software adequados para o uso mikroICD, ento, a comcluso de escrever seu programa, voc ter que escolher CID Debug tipo de compilao.

mikroICD

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

102

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 3

mikroICD

Mikroelektronika - Solues de software e hardware para o mundo embutido

103

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

mikroICD
mikroICD Debugger Options
Nome
Depurar Executar / Pausar d Toggle Breakpoints

Descrio Depurador Iniciar. Executar ou pausar Debugger. Alternar ponto de interrupo na posio atual do cursoro. Para visualizar todos os pontos de interrupo, selecione Executar> Ver os pontos de interrupo no menu d d Executar todas as instrues entre a corrente instruo e posio do cursor. Execute o atual C (simples ou multi-ciclo) instruo, e ento pare. Se a instruo uma rotina chamada, introduza a rotina e parar na primeira inso seguinte a chamada. Execute o atual C (simples ou multi-ciclo) instruo, e ento pare. Se a instruo um rouchamada tine, ignor-lo e parar na primeira instruo h d RAM PIC Flush atual. Todas as variveis valores ser alterado de acordo com os valores de Alternar entre a desmontagem ea fonte de C vista.

Funo chave [F9] [F6]

[F5]

Executar at o cursor Step Into

[F4]

[F7]

Step Over

[F8]

RAM Flush

N/A

Desmontagem Ver

[Alt + D]

104

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 3

mikroICD

Exemplos mikroICD Debugger


Aqui est um passo a passo Exemplo Debugger mikroICD. Passo n 1 Primeiro voc tem que escrever um programa. Ns iremos mostrar como funciona mikroICD usando este exemplo:
/ / Conexes do mdulo do LCD LCD_RS sbit na RB4_bit; LCD_EN sbit na RB5_bit; LCD_D4 sbit na RB0_bit; LCD_D5 sbit na RB1_bit; LCD_D6 sbit na RB2_bit; sbit LCD_D7 na RB3_bit; LCD_RS_Direction sbit na TRISB4_bit; LCD_EN_Direction sbit na TRISB5_bit; LCD_D4_Direction sbit na TRISB0_bit; sbit LCD_D5_Direction na TRISB1_bit; LCD_D6_Direction sbit na TRISB2_bit; LCD_D7_Direction sbit na TRISB3_bit; / / Fim conexes do mdulo do LCD char texto [17] = "mikroElektronika"; i char; void main () { PORTB = 0; TRISB = 0; ANSEL = 0; ANSELH = 0; Lcd_Init (); Lcd_Cmd (_LCD_CLEAR); Lcd_Cmd (_LCD_CURSOR_OFF); for (i = 1; i <17; i + +) { Lcd_Chr (1, i, o texto [i-1]); } }

Mikroelektronika - Solues de software e hardware para o mundo embutido

105

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Passo n 2 Aps a compilao bem-sucedida e pressione programao PIC F9 para iniciar mikroICD. Aps mikroICD inicializao linha ativa azul deve aparecer:

mikroICD

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

106

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Passo n 4

CAPTULO 3

mikroICD

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

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

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

embutido

www.mecatronicadegaragem.blogspot.com

107

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

mikroICD

Breakpoints foi separada em dois grupos. H hardware e software pontos de quebra. rpida interrupo de hardware so colocados em PIC e eles fornecem depurao. Nmero de pontos de interrupo de hardware limitado (1 para P16 e 1 ou 3 para o P18). Se todos brekpoints hardware so usados, os pontos de interrupo em seguida, que sero utilizados so softwares ponto de interrupo. Os pontos de interrupo so colocados dentro mikroICD, e eles simulam hardbreakpoints ware. interrupo de software muito mais lento do que hardware breakpontos. Esta diferena entre as diferenas de hardware e software no so visveis mikroICD em software, mas os seus horrios diferentes so bastante notvel, por isso importante saber que h dois tipos de pontos de interrupo.

108

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 3

mikroICD

mikroICD (In-Circuit Debugger) Viso Breakpoints Janela


A janela de Breakpoints gerencia a lista de pontos de interrupo definidos atualmente no projeto. Doubleclicking o ponto de interrupo pretendido causar cursor para navegar para o corresponding local no cdigo-fonte.

Mikroelektronika - Solues de software e hardware para o mundo embutido

109

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

mikroICD
Janela de Inspeo

Depurador de ver da janela a janela principal do depurador que permite monitor itens do programa, enquanto executar o programa. Para mostrar a janela de inspeo, selecione Ver > Debug Windows > Janela de Inspeo a partir do menu drop-down. O relgio apresenta janela de variveis e registradores do PIC, com os respectivos endereos e valores. Os valores so atualizados medida que avanar a simulao. Use o drop-down menu para adicionar e remover os itens que voc deseja monitorar. Recentemente mudou itens so de cor vermelha.

110

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 3

mikroICD

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

EEPROM Janela de Inspeo


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

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

111

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

mikroICD
Cdigo Janela de Inspeo

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

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

112

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 3

mikroICD

Ver Memria RAM


Depurador Ver RAM janela est disponvel a partir do menu drop-down, Ver > Depurar Windows > Ver RAM. A RAM Windows Vista exibe o mapa de memria RAM PIC, com mudou recentemente itens de cor vermelha.

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

113

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

mikroICD MIKROICD ADVANCED BREAKPOINTS

mikroICD prev a possibilidade de utilizar os pontos de interrupo avanada. Avanado Breakpoints podem ser usados com PIC18 MCUs e PIC18FJ. Para habilitar avanada Breakpoints definir a opo Advanced Breakpoints dentro da janela Watch:

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

Nota: Quando Advanced Breakpoints so habilitados mikroICD opera em Tempo-Real modo, por isso vai apoiar apenas no seguinte conjunto de comandos: Iniciar o depurador [F9], Execute o depurador Pausa / [F6] e Parar Debugger [Ctrl + F2]. Uma vez que o avanado Ponto de interrupo atingido, o recurso Advanced Breakpoints podem ser desativadas e mikroICD depurao pode ser continuado com conjunto completo de comandos. Se for necessrio, Advanced Breakepoints pode ser reativado sem reiniciar mikroICD. Nota: Nmero de pontos de interrupo avanada igual ao nmero de Hardware-break pontos e que depende de MCU utilizado.

114

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 3

mikroICD

Programa de Ruptura de Memria


Memria do Programa Break usado para definir o ponto de interrupo Avanado para especfico endereo na memria do programa. Por causa do PIC pipelining exe programa mecanismo de cuo pode parar de instrues de um ou dois aps o endereo inserido no Endereo de campo. Valor inscrito no Endereo campo deve ser em formato hexagonal. Nota: Quebra de memria do programa pode usar a opo Passcount. O programa de execuo ir parar quando o endereo do programa especificado atingido durante o tempo N-sima onde N o nmero de inscritos no Passcount de campo. Quando alguns avanada Breakpoint interrompe a execuo do programa, para todos os contadores passcount avanada Breakpoints ser apagado.

Programa de Ruptura de Memria


Memria do Programa Break usado para definir o ponto de interrupo avanada para o especfico endereo na memria do programa. Por causa do PIC pipelining exe programa mecanismo de cuo pode parar um ou duas instrues aps o endereo digitado no endereo de campo. O valor informado no campo de endereo deve ser em formato hexagonal. Nota: Quebra de memria do programa pode usar a opo Passcount. O programa de execuo ir parar quando o endereo do programa especificado chegou o tempo N-sima onde N o nmero de inscritos no Passcount de campo. Quando alguns avanada Breakpoint interrompe a execuo do programa, para todos os contadores passcount avanada Breakpoints ser apagado.

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

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

115

CAPTULO 3

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

mikroICD
Emulador de Recursos
Evento Breakpoints

Ruptura em Underflow / Stack Overflow: no implementado. Ruptura em Watchdog Timer: no implementado. Ruptura no sono: pausa na instruo SLEEP. instruo SLEEP no ser executados. Se voc optar por continuar a depurao mikroICD [F6] em seguida, o prgrama de execuo ter incio a partir da primeira instruo aps a instruo SLEEP. Cronmetro Cronmetro usa Breakpoint # 2 e Breakpoint # 3 Como ponto de partida e as condies Stopes. Para usar o cronmetro define estes dois pontos de interrupo e verificar o Habilitar Cronmetro checkbox. opes de cronmetro: Parado na condio de incio

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

116

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

CAPTULO

mikroC PRO para PIC Especificidades


Os tpicos a seguir abordam as especificidades da mikroC PRO compilador para PIC: - Questes ANSI Standard - Globals e constantes predefinidas - Acessando bits individuais - Interrompe - PIC Ponteiros Directivas Linker - Built-in Rotinas - Otimizao de Cdigo - Memria especificadores de tipo

117

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Especificidade s
Problemas ANSI Standard Divergncia em relao ao padro ANSI C
- Tentativa declaraes no so suportados.

Idioma Exstensions C
mikroC PRO para PIC tem conjunto adicional de palavras-chave que no pertencem ao o ANSI Palavras-chave linguagem padro C: - cdigo - dados - rx - em - sbit - bit - sfr Tpicos relacionados: Palavras-chave, PIC especficas

Globals e constantes predefinidas


Para facilitar a programao dos PIC MCUs conformes, o mikroC PRO para PIC implementos uma srie de variveis globais e constantes predefinidas. Todos os PIC Registos SFR e seus pedaos esto implicitamente declarados como variveis globais. Estes identificadores possuem uma ligao externa, e so visveis na projeto inteiro. Ao criar um projeto, o mikroC PRO para PIC incluir uma adequada (*) arquivo da pasta defs, contendo declaraes de disponveis Registos SFR e constantes. Para um conjunto completo de variveis globais e constantes predefinidas, procure "Defs" na mikroC PRO para PIC pasta de instalao, ou sonda o Assistente de cdigo para letras especficas (Ctrl + Espao no editor de cdigo).

118

E E SOLUES PARA PARA MUNDIAL

Mikroelektronika - SOFTWARESOFTWAREHARDWAREHARDWARE SOLUTIONSEMBEDDEDEMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

nvel de projectos predefinidos define


Existem quatro nveis pr-projeto define, para qualquer projeto que voc faz. Estes define se baseiam em valores que voc digitou / editado no projeto atual: Primeiro um igual ao nome do dispositivo selecionado para o projeto ou seja, se 16F887 dispositivo selecionado, em seguida, 16F887 token ser definida como 1, ento ele pode ser usado para compilao condicional:
# Ifdef P16F887 ... # Endif

A segunda __FOSC__ valor da freqncia (em kHz) para os quais o projeto construdo. A terceira para a identificao mikroC PRO para PIC compilador:
# Ifdef __MIKROC_PRO_FOR_PIC__ ... # Endif

um quarto para identificar a verso de compilao. Por exemplo, se desejar construir uma verso Sion de 142, o usurio deve colocar isso no seu cdigo:
# If __MIKROC_PRO_FOR_PIC_BUILD__ == 142 ... # Endif

O usurio pode definir nvel de projeto personalizado define.

Bits Acesso Individual


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

Acessar Bits individuais de Variveis


Se voc estiver familiarizado com um MCU particular, voc pode acessar bits pelo nome:
/ / Bit Clear Global Interrupt (GIE) GIE_bit = 0;

Alm disso, voc pode simplesmente usar o seletor de membro direto (.) Com uma varivel, seguido por um dos identificadores B0, B1, ... , B7, ou F0, F1, ... F7, com F7 sendo o mais sigpouco significativa:
/ / 0 em pouco claras registo INTCON INTCON.B0 = 0; / / Bit Conjunto 5 em ADCON0 registo ADCON0.F5 = 1;

119

Mikroelektro nika Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

119

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC No h necessidade de qualquer declarao especial. Este tipo de acesso seletivo um caracterstica intrnseca de mikroC PRO para PIC e pode ser usado em qualquer lugar do cdigo. Identifiers B0-B7 no so sensveis e tm um espao especfico. Voc pode sobremont-los com seus prprios membros B0-B7 dentro de qualquer estrutura dada.

Especificidade s

Veja Globals e constantes predefinidas para obter mais informaes sobre nomes de registo / bit. Nota: Se visando a portabilidade, evitar este estilo de acessar bits individuais, use o bit campos.

tipo sbit
A mikroC PRO para PIC compilador tem sbit tipo de dados que oferece acesso a bits SFR enderevel. Voc pode acess-los da seguinte forma:
sbit LEDA em PORTA.B0; sbit bit_name em <bit-position> name.B SFR; sbit LEDB em PORTB.F0; sbit bit_name em <bit-position> SFR-name.F; / / Se voc estiver familiarizado com um MCU em particular e os seus portos e diregistros 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 varideclaraes capaz. No pode ser usado para lista de argumentos e valores de retorno de funo.
bit bf; / / Varivel de bit /

No existem ponteiros para variveis de bits:


bit * Ptr; / / Invlido

Uma matriz do tipo bit no vlido:


bit arr [5]; / / Invlido

120

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

Nota: - Variveis Bit no pode ser inicializado. - Bit variveis no podem ser membros de estruturas e de sindicatos. - Variveis Bit no tm endereos, portanto operador unrio & (endereo) no aplicveis a essas variveis. Temas relacionados: Campos de bits, globais e constantes predefinidas

Interrupes
Interrupes podem ser facilmente manipulados por meio da palavra reservada interrupo. mikroC PRO para PIC implictly declara funo interrupo que no pode ser declarado novamente. Sua prottipo :
vazio interrupo (void);

Para P18 baixo priorty interrompe palavra reservada interrupt_low:


vazio interrupt_low (void);

Est prevista para escrever sua prpria definio (corpo da funo) para lidar com interrupes em sua aplicao. mikroC PRO para PIC salva a SFR seguinte ao entrar na pilha interrupo e estala-los de volta em cima do retorno: - Famlia PIC12: W, STATUS, FSR, PCLATH - Famlia PIC16: W, STATUS, FSR, PCLATH - Famlia PIC18: FSR (Contexto de rpido usado para salvar WREG, BSR STATUS) Use o # Pragma disablecontexsaving para instruir o compilador para automaticaly executar contexto de mudana. Isto significa que no regiser ser salvo / restaurado o compilador de entrada / sada da rotina de interrupo do servio. Isso permite que o usurio manualmente escrever cdigo para salvar registros em cima da entrada e para restaurar -los antes sada da interrupo. Mikr oele ktro nika Solu es de soft

ware e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

121

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Especificidade s
prioridade P18 interrompe

Nota: Para a famlia P18 tanto interrompe alta e baixa so suportados. 1. funo com o nome interrupo ser vinculado como ISR (rotina de servio de interrupo) para o elevado nvel de interrupo 2. funo com o nome interrupt_low ser vinculados como ISR para baixo nvel inter rupt_low Se a funo prioritria de interrupo para ser usado, ento o usurio deve definir a SFR adequado bits para habilit-lo. Para mais informaes consultar os dados para o dispositivo especfico.

Chamadas de funo de interrupo


Chamando funes a partir do (interrupo) de rotina agora possvel. O compilador se preocupa com os registros a ser utilizado, tanto na "interrupo" e, em thread "main", e executa "inteligentes" contexto de alternncia entre os dois, poupando apenas os registros que tenham sido usado em ambos reentrncia funes threads.Check.

Exemplos de interrupo
Aqui est um exemplo simples de lidar com as interrupes de TMR0 (Se no houver outras interrupes so permitidos):
vazio interrupt () { contador + +; TMR0 = 96; INTCON = $ 20; }

Em caso de mltiplas interrupes ativadas, voc precisar testar qual das interrupes ocorreu e, em seguida, prosseguir com o cdigo apropriado (tratamento de interrupes):
vazio interrupt () { se (INTCON.TMR0IF) { contador + +; TMR0 = 96; INTCON.TMR0F = 0; } else if (INTCON.RBIF) { contador + +; TMR0 = 96; INTCON.RBIF = 0; } }

122

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

Linker directivas
O mikroC PRO usa um algoritmo interno para distribuir objetos na memria. Se voc precisa ter uma varivel ou rotina pr-definida no endereo especfico, use o link directivas er absoluta e org.

Directiva absoluta
Directiva absoluta especifica o endereo inicial na memria RAM para uma varivel. Se a varipoder multi-byte, bytes maior ser armazenado nos locais consecutivos. Directiva absoluta anexado declarao de uma varivel:
curto x absoluta 0x22; / / Varivel x vai ocupar 1 byte no endereo 0x22 int y absoluta 0x23; / / Varivel y ocupar 2 bytes em endereos 0x23 e 0x24

Tenha cuidado ao usar a diretiva de absoluta, como voc pode sobrepor-se duas variveis acidente. Por exemplo:
char i absoluta 0x33; / / Varivel i vai ocupar 1 byte no endereo 0x33 tempo jjjj absoluta 0x30; / / Varivel ocupar 4 bytes de 0x30, 0x31, 0x32, 0x33, assim, / / Mudando mudanas i byte mais alto jjjj, ao mesmo tempo, e vice-versa

org Directiva
Directiva org especifica um endereo a partir de uma rotina em ROM. Directiva org anexado definio da funo. Directivas para defin nodeclaraes ING vai ser ignorado, com um aviso adequado, emitido pelo vinculador. Aqui est um exemplo simples:
vazio func (int par) org 0x200 { / / Funo ter incio no endereo 0x200 nop asm; }

possvel usar org directiva com as funes que so definidos externamente (como biblioteca de funes). Basta adicionar org directiva funcionar declarao: Mikroelektronika - Solues de software e hardware para o mundo embutido

123

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
vazio UART_Write1 (char de dados) org 0x200;

Especificidade s

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

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

Directiva funcorg
Voc pode usar o # Pragma funcorg diretiva para especificar o endereo inicial de um routine em CD usando o nome de rotina, apenas:
# Pragma funcorg <func_name> <starting_address>

Relacionados tpicos: chamadas indiretas Funo

Solicita funo indireta


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

A pragma correspondente deve ser colocado no mdulo de origem onde a funo nome_da_funo implementada. Este mdulo tambm deve incluir declaraes de todos os funcioes constantes do called_func lista. Estas funes sero ligados, se a funo nome_da_funo chamado no cdigo no-mat ter se algum deles foi chamado ou no. Nota: O # Pragma Funcall directiva pode ajudar o vinculador a funo de otimizar o quadro alocao no compilados pilha. Tpicos relacionados: Linker directivas

124

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

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

Criada em rotinas so implementadas como "Inline", ou seja, o cdigo gerado no local da chamada, de modo que o chamada no imputadoso limite de chamadas aninhadas. As nicas excees so Vdelay_ms, Delay_Cyc e Get_Fosc_kHz que so rotinas C real. Nota: Lo, Hi, Ensino Superior e Maior funes no esto implementadas no compilador mais. Se voc quero usar estas funes voc deve incluir built_in.h em seu projeto. - Lo - Oi - Superior - Maior - Delay_us - Delay_ms - Vdelay_ms - Delay_Cyc - Clock_Khz - Clock_Mhz - Get_Fosc_kHz unsigned short Lo (longa nmero); Prottipo

LoRetorna

Retorna o menor de 8 bits (byte) de nmero, os bits 0 .. 7. Funo retorna o byte de menor nmero. Funo no interpreta bit patnhece o nmero - ele simplesmente devolve 8 bits como os encontrados em registo. Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a no conta contra o limite de chamadas aninhadas Os argumentos devem ser varivel do tipo escalar (isto , aritmtica Tipos e
d = 0x1AC30F4; tmp = Lo (d) / / Igual 0xF4

Descrio

Requer Exemplo

t i

Mikroelektronika - Solues de software e hardware para o mundo embutido

125

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Especificidades
Oi
Prottipo Retorna
unsigned short Oi (long nmero);

Retorna junto ao menor de bytes de nmero, os bits 8 .. 15. A funo retorna ao lado do byte mais alto de nmero. A funo no interpretar padres de bits de nmero - ele simplesmente devolve 8 bits como os encontrados em registo. Este um "Inline" rotina, o cdigo gerado no local da chamada, assim chamada a no conta contra o limite de chamadas aninhadas Os argumentos devem ser varivel do tipo escalar (isto , aritmtica Tipos e
d = 0x1AC30F4; tmp = Hi (d); / / 0x30 Equals

Descrio

Requer Exemplo

t i

Superior
Prottipo Retorna
unsigned short Superior (long nmero);

Retorna ao lado do byte mais alto de nmero, os bits 16 .. 23. Funo retorna o byte mais alto de nmero. Funo no interpreta bit patnhece o nmero - ele simplesmente devolve 8 bits como os encontrados em registo. Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a no conta contra o limite de chamadas aninhadas Os argumentos devem ser varivel do tipo escalar (isto , aritmtica Tipos e
d = 0x1AC30F4; tmp = Superior (d) / / Igual 0xAC

Descrio

Requer Exemplo

t i

126

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

Maior
Prottipo Retorna
unsigned short Mais alto (long nmero);

Retorna o byte mais alto de nmero, os bits 24 .. 31. A funo retorna ao lado do byte mais alto de nmero. A funo no interpretar padres de bits de nmero - ele simplesmente devolve 8 bits como os encontrados em registo. Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a no conta contra o limite de chamadas aninhadas Os argumentos devem ser varivel do tipo escalar (isto , aritmtica Tipos e
d = 0x1AC30F4; Maior tmp = (d); / / 0x01 Equals

Descrio

Requer Exemplo

t i

Delay_us
Prottipo Retorna
vazio Delay_us (const time_in_us);

Nada. Cria um atraso de software no perodo de time_in_us microssegundos (uma constante). Faixa de aplicveis constantes depende da freqncia do oscilador.

Descrio

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a no conta contra o limite de chamadas aninhadas. Esta rotina gera loops aninhados uso de registros R13, R12, R11 e R10. O nmero de registros utilizado varia de 0-4, dependendo do pedido time_in_us. Nada.
Delay_us (10); / * Dez microssegundos pausa * /

Requer Exemplo

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

127

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Especificidades
Delay_ms
Prottipo Retorna
vazio Delay_ms (const time_in_ms);

Nada. Cria um atraso de software no perodo de time_in_ms milissegundos (uma constante). Faixa de constantes aplicvel depende da freqncia do oscilador.

Descrio

Este um "Inline" rotina, o cdigo gerado no local da chamada, para chamar a no conta contra o limite de chamadas aninhadas. Esta rotina gera loops aninhados uso de registros R13, R12, R11 e R10. O nmero de registros utilizado varia de 0-4, dependendo do pedido time_in_ms. Nada.
Delay_ms (1000); / * * Um segundo de pausa /

Requer Exemplo

Vdelay_ms
Prottipo Retorna
vazio Vdelay_ms (unsigned time_in_ms);

Nada. Cria um atraso de software no perodo de time_in_ms milissegundos (uma varivel). atraso gerado no to preciso quanto o atraso criado por Delay_ms. Note-se que Vdelay_ms uma funo da biblioteca, em vez de um built-in de rotina, pretantes neste tpico por uma questo de convenincia.

Descrio

Requer

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

Exemplo

128

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

Delay_Cyc
Prottipo Retorna
vazio Delay_Cyc (char Cycles_div_by_10);

Nada. Cria um atraso baseado no relgio MCU. Atraso dura 10 vezes o param-entrada eter em ciclos MCU.

Descrio Note-se que Delay_Cyc uma funo da biblioteca, em vez de um built-in de rotina, pretantes neste tpico por uma questo de convenincia. H limitaes para Cycles_div_by_10 valor. Valor Cycles_div_by_10 deve estar entre 3 e 255. Requer Exemplo Nada.
Delay_Cyc (10); / * ciclos Cem MCU pausa * /

Clock_Khz
Prottipo Retorna
no assinado Clock_Khz (void);

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

Descrio

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

Requer Exemplo

Nada.
clk = Clock_Khz ();

Mikroelektronika - Solues de software e hardware para o mundo embutido

129

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Especificidades
Clock_Mhz
Prottipo Retorna
unsigned short Clock_Mhz (void);

Dispositivo clock em MHz, arredondado para o nmero inteiro mais prximo. Funo relgio do dispositivo retorna em MHz, arredondado para o nmero inteiro

Descrio

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

Requer Exemplo

Nada.
clk = Clock_Mhz ();

Get_Fosc_kHz
Prottipo Retorna
unsigned long Get_Fosc_kHz (void);

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

Descrio

Note-se que Get_Fosc_kHz uma funo da biblioteca, em vez de um built-in de rotina, preNada.
clk = Clock_Khz ();

Requer Exemplo

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

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

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

130

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 4

Especificidad es

Copie propagao
O compilador reconhece que duas variveis tm o mesmo valor e elimina um deles ainda no cdigo.

Valor numerao
O compilador "reconhece" se duas expresses produzem o mesmo resultado e no podeportanto eliminar o clculo inteiro para um deles.

"Cdigo Dead" eliminao


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

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

otimizao vars locais


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

Melhor gerao de cdigo e otimizao local

Cdigo gerao mais consistente e mais ateno pago para implementar essolues especficos para o cdigo "tijolos de construo" que reduzem ainda mais o tamanho do cdigo de sada. Tpicos relacionados: especificidades PIC, mikroC PRO para PIC especficos, tipos especficos de memria Mikr oele ktro nika Solu es de soft ware e hard ware para o mun do emb

utido

www.mecatronicadegaragem.blogspot.com

131

CAPTULO 4

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Especificidades

132

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

CAPTULO

PIC ESPECIFICOS

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

133

CAPTULO 5

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

PIC Especificidade Tipos de Eficincia s

Primeiro de tudo, voc deve saber que ALU PIC, que realiza operaes aritmticas, otimizado para trabalhar com bytes. Embora mikroC PRO para PIC capaz de hanmanuseio tipos de dados muito complexos, PIC pode engasgar com elas, especialmente se voc estiver de trabalho o em alguns dos modelos mais antigos. Isto pode aumentar o tempo necessrio para realizar mesmo operaes simples. conselhos Universal a utilizao de o menor possvel tipo em cada situao. Ela se aplica a toda a programao em geral, e duplamente com microcontroladores. Conhea a sua ferramenta. Quando se chega ao clculo, nem todos os microcontroladores PIC so de desempenho igual. Por exemplo, a famlia PIC16 carece de recursos de hardware para multiply dois bytes, por isso compensado por um algoritmo de software. Por outro lado, PIC18 famlia tem HW multiplicadores, e como resultado, a multiplicao de obras consideravelmente mais rpido.

Limitaes chamadas aninhadas


chamada aninhadas representa uma chamada de funo dentro do corpo da funo, quer para si mesmo (recursivo chamadas) ou para outra funo. chamadas de funes recursivas so suportados pelo mikroC PRO para PIC mas com limitaes. chamadas de funes recursivas no podem conter qualquer funo parmetros e variveis locais, devido s limitaes do PIC de memria e pilha. mikroC PRO para PIC limita o nmero de no-recursivo chamadas aninhadas para: - 8 chamadas para a famlia PIC12, - 8 chamadas para a famlia PIC16, - 31 chamadas para a famlia PIC18.

Note-se que alguns dos built-in rotinas no contam contra esse limite, devido sua "Inline" implementao. Nmero de chamadas aninhadas permitido diminui um, se voc usar qualquer uma das seguiing operadores do cdigo: / *%. Isso diminui ainda mais se voc usar as interrupes no programa. Nmero de redues especificada pelo nmero de funes chamadas a partir de interrupt. Verifique reentrncia funes. Se o nmero permitido de chamadas aninhadas for excedido, o compilador apresentar um relatrio de uma pilha overflow erro.

www.mecatronicadegaragem.blogspot.com
134
Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 5

PIC Especificidades

PIC18FxxJxx Especificidades Endereo SFR compartilhados

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

PIC16 Especificidades Quebrando Pginas


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

Limites da abordagem indireta atravs da RSF

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

Nota: muito importante cuidar do PIA corretamente, se voc pretende seguir esta abordagem. Se voc encontrar esse mtodo inadequado, com muitas variveis, voc pode considerar a atualizao para PIC18. Nota: Se voc tem muitas variveis no cdigo, tente reorganiz-las com o vinculador directiva absoluta. Variveis que so abordados apenas diretamente devem ser transferidos para 3 e 4 bancos para aumentar a eficincia. tpicos relacionados: mikroC PRO para PIC especificidades

Mikroelektronika - Solues de software e hardware para o mundo embutido

135

CAPTULO 5

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

PIC Especificidades TIPO DE MEMRIA especificadores

A mikroC PRO para PIC suporta o uso de todas as reas de memria. Cada varivel pode ser explicitamente atribudo a um espao de memria especficos, incluindo um especificador de tipo de memria na declarao, ou implicitamente atribudo. Os especificadores seguintes tipos de memria podem ser usados: - cdigo - dados - rx - sfr especificadores de tipo de memria podem ser includas no declarao da varivel. Por exemplo:
data_buffer dados char / / coloca data_buffer nos dados ram const char cdigo txt [] = "ENTER PARAMETER:" / / coloca o texto na memria do programa

cdigo

Descrio Exemplo

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

dados

Descrio Exemplo

Este especificador de memria usado quando a varivel que armazena os dados d / Coloca PORTG nos dados ram / SRAM i t
dados sfr 0x65 PORTG unsigned short absoluta;

rx
Descrio

Este especificador de memria permite a varivel a ser armazenado no espao de Rx (arquivo Register). Nota: Na maioria dos casos, no haver espao suficiente para as variveis do usurio em R y / / Coloca N no Rx espao
y rx sfr char;

Exemplo

il d

136

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 5

PIC Especificidades

sfr
Descrio Exemplo

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

Nota: Se nenhum dos especificadores de memria so usadas quando se declara uma varivel, dados especificador ser definir como padro pelo compilador. Tpicos relacionados: Acesso individual bits, SFR, constantes, funes

Mikroelektronika - Solues de software e hardware para o mundo embutido

137

CAPTULO 5

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

PIC Especificidades

138

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

CAPTULO

mikroC PRO para PIC Referncia da Linguagem


O mikroC PRO para PIC Language Reference descreve a sintaxe, a semntica ea execuo do mikroC PRO para a linguagem PIC. O objectivo deste guia de referncia fornecer uma mais compreensvel descrio do o mikroC PRO para PIC linguagem para o usurio.

www.mecatronicadegaragem.blogspot.com

139

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
- Elementos lexicais Espaos em branco Comentrios Tokens Constantes Constantes Resumo Integer Constantes Floating Point Constantes Constantes de caracteres String Constantes Enumerao Constantes Constantes ponteiro Expresso constante Palavras-chave Identificadores Punctuators - Conceitos Objetos e lvalues Escopo e visibilidade Espaos de nome Durao - Tipos Tipos Fundamentais Aritmtica Tipos Enumeraes Tipo Void Tipos derivados Matrizes Ponteiros Introduo aos Ponteiros Aritmtica de ponteiro Estruturas Introduo s estruturas Trabalhando com Estruturas Estrutura de Acesso ao Portal Sindicatos Campos Bit Tipo Converses Standard Converses Typecasting Explicit

140

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC - Declaraes Introduo s declaraes Linkage Classes de armazenamento Tipo, qualificao Especificador typedef ASM Declarao Inicializao - Funes Introduo s Funes Chamadas de funo e argumento de converso - Operadores Introduo aos Operadores Operadores Precedncia e Associatividade Operadores Aritmticos Os operadores relacionais Operadores bit a bit Lgico Opeartors Operadores Condicionais Operadores de Atribuio Operador sizeof - Expresses Introduo a Expresses Vrgula Expresses - Declaraes Introduo Rotulado Demonstraes Expresso Demonstraes Instrues de Seleo Se a Declarao Switch Declarao Instrues iterao (Loops) Enquanto a Declarao Do Declarao Para a declarao Ir Demonstraes Break e continue Goto Declarao Instruo Return Declaraes compostas (blocos) Mikroelektronika - Solues de software e hardware para o mundo embutido

CAPTULO 6

Referncia da Linguagem

141

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

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

142

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

LEXICAL Viso geral sobre elementos


Os tpicos a seguir fornecem uma definio 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 simbolizao de compilao, o arquivo de cdigo fonte analisado (isto , manoken baixo) em tokens e espaos em branco. Os tokens no mikroC PRO para PIC so derivada de uma srie de operaes realizadas em seus programas pelo compilador e sua built-in pr-processador.

WHITESPACE
Espao em branco um nome coletivo dado a espaos (brancos), horizontais e verticais tabulaes, caracteres de nova linha e comentrios. Espaos em branco podem servir para indicar onde fichas de incio e fim, mas para alm desta funo, qualquer excedente espaos em branco so descartados. Por exemplo, duas seqncias
int i; flutuar f;

e
int i; flutuar f;

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


int i ; flutuar f ;

Mikroelektronika - Software e Solues de hardware para Embedded World

143

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Espao em branco em Strings

Os caracteres ASCII representando branco pode ocorrer dentro de literais de cadeia. Em que caso eles sejam protegidos contra o processo de anlise normal (eles permanecem como parte da da seqncia). Por exemplo,
char [nome] = "mikro foo";

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


char nome [ ] = "Mikro foo" ;

/ * Apenas um token aqui! * /

Linha de emenda com contrabarra (\)

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

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

144

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

COMENTRIOS
Os comentrios so partes de um texto usado para anotar um programa e so tecnicamente outra forma de espao. Os comentrios so para uso do programador s, pois eles so retirados do texto de origem antes da anlise. H duas formas para delinear commentos: o mtodo de C e C + + mtodo. Ambos so apoiados por mikroC PRO para PIC. Voc tambm deve seguir as orientaes sobre a utilizao de espaos em branco e os delimitadores de comentrios, discutido mais adiante neste tpico para evitar problemas de portabilidade outros.

comentrios C
C comentrio qualquer seqncia de caracteres colocados aps a par / smbolo *. A commento termina na primeira ocorrncia do * / par aps a inicial / *. Toda a seqncia, incluindo quatro smbolos delimitador de comentrio, substitudos por um espao depois expanso de macro. Na mikroC PRO para a PIC,
int / * Tipo * i / / * identificador * /;

analisa como:
int i;

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

C + + comentrios
A mikroC PRO para PIC permite que os comentrios de uma linha usando duas barras adjacentes (//). O comentrio pode comear em qualquer posio e se estende at a prxima linha nova. O cdigo a seguir
int i; int j; / / Isto um comentrio

analisa como:
int i; int j;

Mikroelektronika - Solues de software e hardware para o mundo embutido

145

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
comentrios Nested

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


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

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


i; * /

o que geraria um erro de sintaxe.

146

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Idioma Referncia

TOKENS
Token o menor elemento de um programa compilador C que pode reconhecer. A parser separa os tokens do fluxo de entrada, criando o maior smbolo possvel usando os caracteres de entrada em uma esquerda para a direita-scan. A mikroC PRO para PIC reconhece os seguintes tipos de fichas: - palavras-chave - identificadores - constantes - operadores - pontuadores (tambm conhecido como separadores)

Smbolo de Extrao Exemplo


Aqui est um exemplo da extrao de token. D uma olhada no cdigo exemplo a seguir seqncia:
inter = a + + + b;

Primeiro, note que inter seria analisado como um identificador nico, em vez no como a chavepalavra int seguido pelo identificador er. O programador que tem escrito o cdigo pode ter a inteno de escrever inter = um + (+ + b), mas no funciona dessa maneira. O compilador iria analis-lo no sete fichas a seguir:
inter = um + + + b ; // // // // // // // varivel identificador operador de atribuio varivel identificador operador postIncrement operador de adio varivel identificador terminador de instruo

Note-se que + + + analisa como + + (O mais longo possvel token), seguido por +. De acordo com as regras de precedncia de operador, a nossa seqncia de cdigo , na verdade:
inter (a + +) + b;

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

147

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem CONSTANTS

Constantes ou literais so smbolos que representam fixo numrico 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 enumerao A tipo de dados de uma constante deduzido pelo compilador usando pistas como um valor numrico e formato usado no cdigo-fonte.

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

Long e sufixos Unsigned


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

etc Na ausncia de qualquer sufixo (U, u, L, ou l), uma constante atribudo o "Menor" de os seguintes tipos, que podem acomodar seu valor: curto, curto no assinado,
int, unsigned int long int, int unsigned long.

Caso contrrio: Se uma constante tem o U sufixo, seu tipo de dados ser o primeiro dos seguintes que pode acomodar o seu valor: unsigned int, unsigned short, sem assinatura
tempo int.

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

148

www.mecatronicadegaragem.blogspot.com
Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Decimais
constantes Decimal de -2147483648 a 4294967295 so permitidos. Constantes excedam esses limites vai produzir uma "Out of range" erro. constantes Decimal no deve usar um zero inicial. Uma constante inteira que tem um zero inicial interpreted como uma constante octal. Assim,
int i = 10; int i = 010; int i = 0; / Decimal * 10 * / / Decimal * 8 * / / * Decimal 0 = 0 * octal /

Na ausncia de quaisquer sufixos imperiosa, o tipo de dados de um constante decimal derivada de seu valor, conforme demonstrado abaixo:

Valor atribudo constante <-2147483648 -2147483648 - -32769 -32768 - -129 -128 - 127 128 - 255 256 - 32767 32768 - 65535 65536 - 2147483647 2147483648 - 4294967295 > 4294967295

Assumindo Tipo Erro: Fora da faixa!


tempo int curto unsigned short int unsigned int tempo unsigned long

Erro: Fora da faixa!

Constantes hexadecimais
Todas as constantes a partir de 0x (Ou 0X) esto a ser tomadas hexadecimal. Na ausncia sufixos de qualquer substituio, o tipo de dados de um hexadecimal constante derivada da seu valor, de acordo com as regras apresentadas acima. Por exemplo, 0xC367 sero trataed como unsigned int.

Mikroelektronika - Solues de software e hardware para o mundo embutido

149

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Binrio Constantes

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

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

Floating Point Constantes


Uma constante de ponto flutuante composto por: - Decimal inteiro - Ponto decimal - Decimal frao - e ou E e um expoente inteiro assinado (opcional) - Tipo sufixo: f ou F ou l ou L (Opcional) Qualquer nmero inteiro decimal ou frao decimal (mas no ambos) pode ser omitido. Ou decponto imal ou carta e (Ou E) com um expoente inteiro assinado (mas no ambos) pode ser omitirTed. Estas regras permitem convencionais e cientficas (expoente) notaes.

Negativo constantes flutuantes so tomadas como constantes positivas com um operador unrio menos (-) como prefixo. A mikroC PRO para PIC limites constantes de ponto flutuante para o intervalo 1,17549435082 * 10-38 .. 6,80564774407 * 1038. Aqui esto 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 so do tipo casal. Note-se que o mikroC PRO PIC para a implementao de ANSI Standard considera flutuar e dupla (Juntamente com a long double variante) para ser do mesmo tipo.

150

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

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

Sequncias de Escape
Uma barra invertida (\) usada para introduzir uma seqncia de escape, que permite uma representao visual de certos caracteres no grficos. Uma das mais comuns constantes de escape o caractere de nova linha (\ n). Uma barra invertida usada com nmeros em octal ou hexadecimal para representar um smbolo ASCII ou controle de cdigo correspondente a esse valor, por exemplo, '\ X3F' para a questo marca. Qualquer valor dentro dos limites legais para o tipo de dados char (0 para 0xFF para o mikroC PRO para PIC) pode ser usado. Nmeros maiores ir gerar o erro do compilador"Fora de alcance". Por exemplo, o nmero octal \ 777 maior do que o valor mximo permitido (\ 377) e ir gerar um erro. O primeiro caractere nonoctal ou no hexadecimais encontrados em uma seqncia de escape octal ou hexadecimal marca o fim da seqncia. Nota: Voc deve usar a seqncia \ \ para representar uma barra invertida ASCII, como usado em caminhos do sistema operacional. A tabela a seguir mostra as seqncias de escape disponveis: Seqncia
\ 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 \ '' ?

Descrio sinal audvel Retrocesso Formfeed Newline (Avano de linha) Retorno de carro Tab (horizontal) Vertical Tab Backslash aspas simples (apstrofo) Aspas duplas Ponto de interrogao

qualquer S = string de at 3 dgitos octais qualquer H = seqncia de dgitos hexadecimais qualquer H = seqncia de dgitos hexadecimais Mikr

oelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

151

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Desambiguao

Algumas situaes ambguas podem surgir quando se utiliza seqncias 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 nmero hexadecimal \ X091 e literal de cadeia "0,0 Intro ". Para evitar tais problemas, podemos reescrever o cdigo da seguinte forma:
Lcd_Out_Cp ("\ X09", "1.0 Introduo");

Para obter mais informaes sobre a linha anterior, referem-se a String Constantes. Ambigidades tambm pode ocorrer se uma seqncia de escape octal seguido por um nonoctal dgitos. Por exemplo, as seguintes constantes:
"\ 118"

seria interpretado como um de dois caracteres constante composta dos personagens \ 11 e 8, porque 8 no um dgito octal legal.

String Constantes

constantes da corda, tambm conhecido como literais string, so um tipo especial de constantes que armazenar seqncias fixas de caracteres. Uma seqncia literal uma seqncia de qualquer nmero de caracteres entre aspas duplas:
"Esta uma string."

A string nula, ou string vazia, escrito como "". Uma seqncia literal armazenada
internamente

como uma determinada seqncia de caracteres mais um caractere nulo final. Uma seqncia de caracteres nula armazenado como um nico caractere nulo. Os caracteres entre aspas pode incluir seqncias de escape. Este cdigo, por exemplo:
"\ T \" Nome \ "\ \ \ tAddress \ n \ n"

impresses como isso:


"Nome" \ Endereo

www.mecatronicadegaragem.blogspot.com
152
Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

O "nome" precedido por dois guias, o endereo precedido por um guia. A linha seguido por duas novas linhas. A \ " fornece interior aspas. A fuga seqncia de caracteres \ \ traduzida em \ pelo compilador. literais string adjacentes separados apenas por espaos em branco so concatenados durante o anlise de fase. Por exemplo:
"Este " apenas " "Um exemplo".

equivalente a
"Este apenas um exemplo."

Continuao de linha com Backslash

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

Enumerao Constantes
constantes de enumerao so identificadores definidos no enum declaraes do tipo. A identiverificadores so normalmente escolhido como mnemnicos de contribuir para a legibilidade. Enumerao conso de balces de int tipo. Eles podem ser usados em qualquer expresso, onde constantes inteiro so vlidos. Por exemplo:
enum semana {dom = 0, Seg, Ter, Qua, Qui, Sex, Sab};

A identificadores (inquiridores) utilizados devem ser exclusivos dentro do escopo do enum decvai fazendo. inicializadores negativas so permitidas. Veja Enumeraes para obter detalhes sobre enum declaraes. Mikr oele ktro nika Soft ware e Solu es de hard ware

para Embedded World

www.mecatronicadegaragem.blogspot.com

153

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Constantes ponteiro

Um ponteiro ou apontado no objeto pode ser declarados com o modificador const. Qualquer coisa declarados como const no podem alterar seu valor. Tambm ilegal a criao de um ponteiro que pode violar um cedvel no do objeto constante. Considere os seguintes exemplos:
int i; int * Pi; int * const cp = &I; int const ci = 7; int const * PCI; int const * const cpc = &ci; // // // // // i um int pi um ponteiro para int (no inicializado) cp um ponteiro constante para int A CI uma constante int PCI um ponteiro para int constante / / CCP um ponteiro constante para um / / Int constante

As seguintes atribuies 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 atribuies so ilegais:


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

Regras similares so applayed ao volteis modificador. Note-se que ambos os const e volteis pode aparecer como modificadores para o mesmo identificador.

154

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Expresses constantes
Um expresses constantes podem ser avaliados durante a traduo, sim, que a execuo e conformidade pode ser usado em qualquer lugar que pode ser uma constante. Expresses constantes pode consistir apenas no seguinte: - literais, - constantes de enumerao, - simples constantes (sem matrizes constantes ou estruturas), - sizeof operadores. Expresses constantes no podem conter nenhum dos seguintes operadores, a menos que o operador: atribuio, Os operadores esto contidos no operando de uma sizeof decremento, vrgula, chamada de funo, de incremento. Cada expresso constante pode ser avaliada como uma constante que est na faixa de reprevalores sentable para seu tipo. expresso constante pode ser usado em qualquer uma constante legal.

Mikroelektronika - Solues de software e hardware para o mundo embutido

155

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem PALAVRAS-CHAVE

Palavras-chave so palavras reservadas para fins especiais e no deve ser usado como normal identificador de nomes. Alm de palavras-chave C padro, todos os SFR relevantes so definidos como variveis globais e representam palavras reservadas que no pode ser redefinido (por exemplo: TMR0, PCL etc.) Sondar o Assistente de cdigo para letras especficas (Ctrl + Espao no Editor) ou consulte a prdefinidos e constantes globais. Aqui est um alfabtica lista de palavras-chave em C:
asm auto quebrar caso char const continuar padro fazer dupla mais enum extern flutuar para goto se int tempo Registre-se retorno curto assinado sizeof estticas struct switch typedef Unio no assinado vazio volteis enquanto

156

Alm disso, o mikroC PRO para PIC inclui um nmero de identificadores predefinidos utilizados em bibliotecas. Voc pode substitu-los por suas prprias definies, se voc quer desenvolver sua prpriasE E SOLUES PARA mais informaes, consulte mikroC PRO PIC para Bibliotecas. - bibliotecas. Para obter PARA O MUNDO

Mikroelektronika - SOFTWARESOFTWAREHARDWAREHARDWARE SOLUTIONSEMBEDDEDEMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

IDENTIFICADORES
Identificadores so nomes arbitrrios com um determinado comprimento de funes, variveis simblicas constantes, user-defined tipos de dados e rtulos. Todos estes elementos do programa ser designado objetos toda a ajuda (no se confunda com o significado de objeto em programao orientada a objetos). Os identificadores podem conter as letras de A a Z e A a Z, caractere"_", E dgitos 0-9. A nica restrio que o primeiro caractere deve ser uma letra ou um sublinhado.

Caso sensibilidade
A mikroC PRO para PIC identificadores no so sensveis ao caso por padro, de modo que
Soma, suma, e soma representam um equivalente identificador. sensibilidade processo pode ser ativado ou

suspendido na janela Configuraes de sada. Mesmo entre maisculas e minsculas desligado Palavras-chave permanecem maisculas e minsculas e devem ser escritas em minsculas.

Singularidade e mbito
Embora os nomes de identificador so arbitrrios (de acordo com as regras descritas), se o mesmo nome usado por mais de um identificador dentro do mesmo escopo ea partilha do espao de mesmo nome, ento o erro surge. nomes duplicados so legais para nome diferente espaos, independentemente das regras de escopo. Para obter mais informaes sobre o escopo, consulte Escopo e visibilidade.

Exemplos Identifier
Aqui esto alguns identificadores vlidos:
temperature_V1 Presso no_hit dat2string SUM3 _vtext

... e aqui esto alguns identificadores invlidos:


7temp % Maior int j23.07.04 // // // // NO NO NO NO no no no no pode pode pode pode comear com um numeral conter caracteres especiais jogo palavra reservada conter caracteres especiais (ponto)

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
157

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem Pontuadores

A mikroC PRO para PIC pontuadores (tambm conhecido como separadores) so: - [] - Suportes - () - Parnteses - {} - Suspensrios - ,- Vrgula - ;- Ponto e vrgula - :- Clon - *- Asterisco - =- sinal de igual - #- sinal de libra A maioria destes pontuadores tambm funcionam como operadores.

Suportes
Suportes [] subscritos indicam nica matriz e multidimensional:
char ch, str [] = "mikro"; int mat [3] [4]; CH = str [3]; / * 3 x 4 * matriz / / * Elemento 4 /

Parnteses
Parnteses () so usados para agrupar expresses, isolar expresses condicionais, e indicam as chamadas de funo e os parmetros de funo:
d = c * (A + b); if (d == z) + + x; func (); void func2 (int n); / * Substituir * precedncia normal / / * * Essencial com instruo condicional / / * Chamada da funo, no args * / / * Declarao de uma funo com parmetros * /

Parnteses so recomendado nas definies macro para evitar potenciais precedncia problemas durante a expanso:
# Define CUBE (x) ((x) * (x) (x))

Para obter mais informaes, consulte Operadores Precedncia e associatividade e Expresses.

158

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Suspensrios
Suspensrios {} indicar o incio e fim de um comando composto:
if (d == z) { + + X; func (); }

Fechamento da chave serve como um terminador para o comando composto, ento um ponto e vrgula no exigida aps }, Exceto em declaraes estrutura. s vezes, o ponto e vrgula pode ser ilegal, como no
if (declarao) {... }; / * Ponto-evrgula ilegal! * / mais {... };

Para obter mais informaes, consulte a instrues compostas.

Vrgula
Vrgula (,) separa os elementos de uma lista de argumentos da funo:
void (int n, float f pc, char) func;

Vrgula tambm usado como um operador em expresses vrgula. Misturando dois usos da vrgula legal, mas voc deve usar parnteses para distingui-los. Note-se que (exp1, exp2) evalutates ambos, mas igual para o segundo:
funo (i, j); chamada * / funo com dois argumentos * / func ((exp1, exp2), (exp3, EXP4, exp5)) / * tambm chamadas de funes com duas args! * /

Ponto e vrgula
Vrgula (;) um terminador de instruo. Qualquer expresso C legal (incluindo o vazio expresso), seguido por um ponto e vrgula interpretado como uma declarao, conhecida como expresso comunicado. A expresso avaliada e seu valor descartado. Se o declarao de expresso no tem efeitos secundrios, a 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 * / / * Expresso vazia, ou um comando nulo * /

Mikroelektronika - Solues de software e hardware para o mundo embutido

159

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Semicolons s vezes so usados para criar uma declarao vazia:
for (i = 0; i <n, i + +);

Para obter mais informaes, consulte Demonstraes.

Clon
Use dois pontos (:) para indicar a instruo rotulada:
start: x = 0; ... goto incio;

As etiquetas so discutidos nas declaraes identificadas.

Asterisk (Declarao Ponteiro)


Asterisco (*) em uma declarao de varivel indica a criao de um ponteiro para um tipo:
char_ptr char *; / * Um ponteiro para char declarada * /

Ponteiros com vrios nveis de engano pode ser declarada por indicao de um pertinente nmero de asteriscos:
int ** int_ptr; double_ptr *** duplo; / * Um ponteiro para um array de inteiros * / / * Um ponteiro para uma matriz de duplas * /

Voc tambm pode usar o asterisco como um operador, quer dereference um ponteiro ou como muloperador tiplication:
i * = int_ptr; a = b * 3,14;

Para obter mais informaes, consulte os ponteiros.

Cadastre-se igual

160

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Igualdade de sinal (=) separa as declaraes de variveis da lista de inicializao:


int teste [5] = {1, 2, 3, 4, 5}; int x = 5;

sinal de igual usado tambm como um operador de atribuio em expresses:


int a, b, c; a = b + c;

Para obter mais informaes, consulte Operadores de Atribuio.

Cadastre Libra (Directiva Preprocessor)


Libra sinal (#) indica uma directiva de pr-processamento, quando ele ocorre como o primeiro nocaracteres em branco em uma linha. Significa uma ao compilador, no necessariamente associado com uma gerao de cdigo. Veja as directivas do pr-processador para obter mais inforo.
# e # # tambm so utilizados como operadores para realizar a substituio de tokens e fundindo-dur o do pr-processador de digitalizao de fase. Veja os Operadores Preprocessor.

Mikroelektronika - Solues de software e hardware para o mundo embutido

161

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem CONCEITOS

Esta seo aborda alguns conceitos bsicos da linguagem, essencial para a compreenso de como funcionam os programas de C. Em primeiro lugar, precisamos estabelecer os seguintes termos que sero utilizados em toda a ajuda: - Objetos e lvalues - Escopo e visibilidade - Espaos de nome - Durao

Objetos

Um objeto uma regio especfica da memria que podem armazenar um valor fixo ou varivel (ou conjunto de valores). Esse uso de um termo objeto diferente de um mesmo termo, utilizado em linguagens orientadas a objeto, que mais geral. Nosso definiton da palavra seria englobam funes, variveis, constantes simblicas, tipos de dados definidos pelo usurio, e etiquetas. Cada valor tem um nome associado e tipo (tambm conhecido como um tipo de dados). A nome usado para acessar o objeto e pode ser um identificador simples ou complexas expresSion que se refere exclusivamente o objeto.

Objetos e declaraes
Declaraes necessrio estabelecer um mapeamento entre identificadores e objetos. Cada declarao associa um identificador com um tipo de dados. Associando os identificadores de objetos requer que cada identificador de ter pelo menos dois attribnutos: 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 declaraes implcitas ou explcitas no cdigo-fonte. Normalmente, apenas o tipo especificado explicitamente a classe de armazenamento e espeifier assume o auto valor automtico. De um modo geral, um identificador no possa ser legalmente utilizado em um programa antes de sua decponto vai fazendo no cdigo-fonte. excepes a esta regra legal (conhecido como ref progressistas erences) so os rtulos, as chamadas para funes no declarado, e struct ou tags unio. A gama de objetos que podem ser declaradas inclui: - Variveis - Funes - Tipos - Matrizes de outros tipos - Estrutura, unio e tags enumerao

162

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC - membros da estrutura - membros da Unio - constantes Enumerao - Declarao de rtulos - Preprocessor macros

CAPTULO 6

Referncia 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 expresso que designa um objeto. Um exemplo de lvalue expresso * P, onde P qualquer expresso que avalia um ponteiro no nulo. A modificveis lvalue um identificador ou uma expresso que diz respeito a um objeto que pode ser acessados e mudou legalmente na memria. Um ponteiro const para uma constante, por exemplo, no um lvalue modificveis. Um ponteiro para uma constante pode ser alterado (mas seu derefvalor referenciadas no podem). Historicamente, eu defendia "Esquerda", o que significa que lvalue poderiam legalmente ficar sobre a esquerda (a recebimento final) de uma instruo de atribuio. Agora s lvalues modificvel e jurdicoly ficar esquerda de um operador de atribuio. Por exemplo, se a e b so NonConidentificadores inteiro constante com armazenamento de memria corretamente alocados, eles so ambos os modlvalues ifiable e atribuies, como a = 1 e b = a + b so legais.

Rvalues
A expresso a + b no lvalue: a + b = a ilegal porque a expresso esquerda no est relacionado a um objeto. Tais expresses so s vezes chamados rvalues (Abreviao de valores direita). Mikr oele ktro nika Solu es de soft ware e hard ware para o mun do emb

utido

www.mecatronicadegaragem.blogspot.com

163

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem 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), funo, prottipo da funo, e arquivo. Estas categorias dependem de como e onde identifiers so declaradas.

Bloco: O escopo de um identificador com o bloco (ou local) comea no mbito declarao ciando e termina no final do bloco que contm a declarao (bloco de tais conhecido como o bloco de incluso). declaraes dos parmetros com uma definio de funo o tambm tem escopo de bloco, limitado ao mbito de aplicao do corpo da funo. Arquivo: Arquivo identificadores de escopo, tambm conhecido como globais, so declaradas fora de todas as blocos, o seu mbito , do ponto de declarao para o fim do arquivo de origem. Funo: Os identificadores apenas de alcance funo so rtulos de instruo. Label nomes podem ser usados com as declaraes goto lugar na funo em que o rtulo declarada. Rtulos so declarados implicitamente por escrito LABEL_NAME: fol seguidos por um comunicado. Rtulo nomes devem ser exclusivos dentro de uma funo. Funo prottipo: identificadores declarados na lista de declaraes de parmetro em um prottipo de funo (e no como parte de uma definio de funo) tm uma funo de pro ToType escopo. Este escopo termina no final do prottipo da funo.

Visibilidade
A visibilidade de um identificador uma regio do cdigo fonte do programa a partir do qual um identificador associado objeto pode ser acessado legalmente. Alcance e visibilidade geralmente coincidem, mas h circunstncias em que um objeto se torna temporariamente ocultas pelo aparecimento de uma segunda via do identificador: o objeto ainda existe, mas o identificador original no pode ser usado para acess-lo at o mbito da segunda via do identificador termina. Tecnicamente, a visibilidade no pode ultrapassar o mbito de aplicao, mas pode ultrapassar um escopo de visibilidade. Veja o seguinte exemplo:
vazio f (int i) { int j; / Auto / por padro / / Int i e j esto no escopo e visvel j = 3; { dupla j; j = 0,1; / Block nested / / J o nome local no bloco aninhado / / I e j dupla so visveis; / / Int j = 3, em abrangncia, mas oculto

} www.mecatronicadegaragem.blogspot.com

164

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
/ / Sada dupla j de alcance / / Int j visvel e = 4

CAPTULO 6

Referncia da Linguagem

j + = 1;

} / / I e j so ambos fora de alcance

Espaos de nome
espao de nomes um escopo dentro do qual um identificador deve ser nico. A mikroC PRO para PIC utiliza quatro categorias distintas de identificadores:

1. goto nomes de rtulo - deve ser exclusivo dentro da funo em que se encontram declarou. 2. Estrutura, unio e enumerao marcas - deve ser exclusivo dentro do bloco no que eles so definidos. Tags declarada fora de qualquer funo deve ser exclusivo. 3. Estrutura e nomes de membros da Unio - deve ser exclusivo dentro da estrutura ou Unio, nos quais eles so definidos. No h nenhuma restrio sobre o tipo ou deslocamento de membros com o nome do membro mesmo em diferentes estruturas. 4. Variveis, typedefs, funes e membros de enumerao - deve ser nico, com no mbito em que eles so definidos. Externamente identificadores devem ser declaradas nica entre as variveis declaradas no exterior.

nomes duplicados so legais para espaos de nomes diferentes, independentemente das regras de escopo. Por exemplo:
int azul = 73; { / / Abrir um bloco de enum {cores preto, vermelho, verde, violeta, azul, branco c}; / Azul = 3 * enumerador agora esconde declarao externa de azul * / int struct {cores int i, j;}; dupla vermelho = 2; } azul = 37; / / Volta no mbito int azul / / ILEGAL: cores duplicadas tag / / Ilegal: redefinio de vermelho

Durao
Durao, estreitamente relacionado com uma classe de armazenamento, define um perodo em que o declarado identifiers tm real, objetos fsicos alocados na memria. Ns tambm distinguir entre comtempo de bate-estacas e objetos em tempo de execuo. Variveis, por exemplo, ao contrrio typedefs e tipos, tm real memria alocada em tempo de execuo. Existem dois tipos de durao: estticas e local. Mikr oele ktro

nika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
165

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Static Durao

A memria alocada para objetos com durao de esttica, logo que a execuo subforma, esta alocao de armazenamento dura at que o programa termina. durao esttica objetos reside normalmente em dados fixos segmentos alocados de acordo com a memria especificador em vigor. Todos os globals tm durao esttica. Todas as funes, sempre que definidos, so objectos com durao esttica. Outras variveis podem ser dadas durao estticos usando o explcito estticas ou extern armazenamento especificadores de classe. Na mikroC PRO para PIC, objetos durao estticos so no inicializado para zero (ou nulo) na ausncia de qualquer inicializador explcito.

No misture com durao esttica arquivo ou escopo global. Um objeto pode ter durao esttica e mbito local - veja o exemplo abaixo.

Local Durao

objetos durao locais tambm so conhecidos como automtica objetos. Eles so criados no pilha (ou num registo), quando um bloco de incluso ou de uma funo inserida. Eles so desalocado quando o programa sai que bloco ou funo. Local objetos durao deve ser explicitamente inicializado, caso contrrio, seu contedo imprevisvel. O especificador de classe de armazenamento auto pode ser usado na declarao de variveis locais durao, mas geralmente redundante, pois auto padro para as variveis declaradas dentro de um bloco. Um objeto com durao locais tambm tm um alcance local, porque no existe fora do seu bloco de incluso. Por outro lado, um objeto de mbito local pode tem esttica durao. Por exemplo:
vazio f () { / * Varivel durao locais; init uma sobre cada chamada para f * / int a = 1; / * A varivel de durao esttica; b init apenas em primeira convocao para f * / static int b = 1; / * Checkpoint! * / a + +; b + +; } vazio main () { / * No posto, vamos f (); / / A = 1, b = 1, aps f (); / / a / b = 1 = 2, aps f (); / / a / b = 1 = 3, aps / / Etc }

ter: * / primeira chamada, segunda chamada, terceira chamada,

166

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

TIPOS

A mikroC PRO para PIC uma linguagem estritamente digitado, o que significa que cada objeto, funo, e expresso deve ter um tipo estritamente definido, conhecido no tempo de comcompilao. Note-se que o mikroC PRO para PIC funciona exclusivamente com tipos numricos. O tipo serve: para determinar a alocao de memria correto exigido inicialmente. para interpretar o bit padres encontrados no objeto durante o acesso posterior. em muitas situaes de verificao de tipo, para garantir que as atribuies ilegais so presos. A mikroC PRO para PIC suporta o padro muitos (pr) e definidas pelo usurio tipos de dados, inclusive assinado e sem assinatura inteiros de vrios tamanhos, de ponto flutuante nmeros com preciso vrias matrizes, estruturas e unies. Alm disso, o ponto dores para a maioria destes objetos podem ser criados e manipulados na memria. O tipo determina a quantidade de memria alocado para um objeto e como a prgrama ir interpretar os padres de bits encontrada na alocao do objeto de armazenamento. Um dado tipo de dados pode ser visto como um conjunto de valores (muitas vezes dependente da implementao), que identificadores do mesmo tipo podem assumir, juntamente com um conjunto de operaes permitidas com esses valores. O operador em tempo de compilao sizeof permite determinar o tamanho em bytes de qualquer padro ou tipo definido pelo usurio. A mikroC PRO para PIC bibliotecas-padro e seu prprio programa e os arquivos devem fornecer identificadores inequvoca (ou expresses derivadas deles) e os tipos de modo que a mikroC PRO para PIC pode sempre acessar, interpretar, e (possivelmente) mudar o padro de bits nhece na memria correspondente a cada objeto ativo em seu programa.

Tipo Categorias
Um comum maneira de categorizar os tipos dividi-los em: - Fundamental - Derivada Os tipos fudamental representam tipos que no podem ser divididas em partes menores. Eles so por vezes referido como no estruturados tipos. Os tipos fundamentais so void, char, int, float, e casal, juntamente com curtas, longas, assinado e no assinado variformigas de alguns deles. Para obter mais informaes sobre os tipos fundamentais, consulte o tpico FunTipos fundamentais. Os tipos derivados tambm so conhecidos como estruturado tipos e incluem ponteiros para

outros tipos, arrays de outros tipos, tipos de funes, estruturas e sindicatos. Para obter mais www.mecatronicadegaragem.blogspot.com informaes sobre os tipos de derivados, consulte o tpico tipos derivados. Mikroelektronika - Solues de software e hardware para o mundo embutido

167

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Tipos Fundamentais

Os tipos fudamental representam tipos que no podem ser divididos em elementos mais bsicos, mentos, e so o modelo de representao de dados elementares sobre o nvel da mquina. A tipos fudamental so muitas vezes referidos como tipos no-estruturados, e so utilizados como na criao de elementos mais complexos tipos derivados ou definida pelo usurio. Os tipos fundamentais incluem: -Aritmtica Tipos - Enumeraes - Tipo Void

Aritmtica Tipos
Os especificadores de tipo aritmticos so construdos a partir de palavras-chave: void, char, int, float e casal, juntamente com os prefixos curtas, longas, assinado e no assinado. A partir dessas palavras-chave pode criar dois tipos integral e de ponto flutuante.

Tipos Integral
Os tipos char e int, juntamente com suas variantes, so considerados como parte
integrante

tipos de dados. As variantes so criados usando um dos modificadores de prefixo curtos,


longos, assinado e no assinado.

Na tabela abaixo uma viso geral dos tipos integrais - Palavras-chave entre parnteses pode ser (e so muitas vezes) omitido. Os modificadores assinado e no assinado pode ser aplicado tanto char e int. Na ausncia do prefixo unsigned, assinada automaticamente assumida por tipos integrais. A nica exceo char, que no assinado por padro. 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 prpria, quer dizer short int e int tempo,
respectivamente.

168

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Tipo
(No assinado) char assinado char (Assinado) (int) short unsigned short (int) (Assinado) int unsigned (int) (Assinado) (int) de i unsigned long (int)

CAPTULO 6

Referncia da Linguagem
Tamanho em B t 1 1 1 1 2 2 4 4 Faixa 0 .. 255 - 128 .. 127 - 128 .. 127 0 .. 255 -32768 .. 32767 0 .. 65535 -2147483648 .. 2147483647 0 .. 4294967295

Tipos de ponto flutuante


Os tipos flutuar e casal, juntamente com o long double variante, so consisiderada tipos de ponto flutuante. A mikroC PRO PIC para a implementao de um Padro ANSI considera que todas so do mesmo tipo. ponto flutuante na mikroC PRO para PIC implementado usando o AN575 Microchip 32-bit do formato (IEEE 754 complacente). Uma viso geral do ponto flutuante tipos mostrada na tabela abaixo: Tipo
flutuar dupla long double

Tamanho em Bytes 4 4 4

Faixa -1,5 * 1045 .. +3.4 * 1038 -1,5 * 1045 .. +3.4 * 1038 -1,5 * 1045 .. +3.4 * 1038

Mikroelektronika - Solues de software e hardware para o mundo embutido

169

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Enumeraes

Uma enumerao tipo de dados usado para representar um discreto, abstrata conjunto de values com as devidas nomes simblicos.

Enumerao Declarao
Enumerao declarado assim:
enum tag {lista de enumerao-};

Aqui, tag um nome opcional da enumerao; enumerao de-lista uma vrgula delimitado lista de valores discretos, os entrevistadores (ou enumerao constantes). Cada enumerator atribudo um valor fixo integral. Na ausncia de explcita inicializadores, o enumerador primeiro definido como zero, eo valor de cada enumerador sucesso definido ao valor de seu antecessor, acrescido de um. Variveis da enum tipo so declaradas as mesmas variveis de qualquer outro tipo. Para exemplo, a seguinte declarao:
enum {cores preto, vermelho, verde, violeta, azul, branco c};

estabelece um nico tipo integral, enum cores, varivel c deste tipo, e um conjunto de enumeradores com valores inteiros constantes (preto = 0, vermelho = 1, ...). Na mikroC PRO para a PIC, uma varivel de um tipo enumerado pode ser atribudo qualquer valor do tipo int - alm da no verificao de tipo que imposta. Isto :
c = vermelho; / / OK / / Ainda bem, significa o mesmo c = 1;

Com explcita inicializadores integral, voc pode definir um ou mais entrevistadores, especficas valores. O inicializador pode ser qualquer expresso que produz um nmero inteiro positivo ou negativo valor (aps promoes inteiro possvel). Quaisquer nomes subseqentes sem inicializadores vai ser aumentada por um. Estes valores so geralmente nicas, mas as duplicatas so legais. A ordem de constantes podem ser explicitamente re-arranjadas. Por exemplo:
enum {cores preto, vermelho, verde, azul = 6, violeta, branco = 4}; // // // // // // valor valor valor valor valor valor 0 1 2 6 7 4

170

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

expresso inicializador pode incluir entrevistadores previamente declarado. Por exemplo, em a seguinte declarao:
enum memory_sizes bit = {1, nibble = 4 bits *, byte = 2 * mordidela, kilobyte = 1024 bytes *};

nibble adquiriria o valor 4, o valor de 8 bytes e kilobytes o valor 8192.

Anomous Tipo Enum


Em nossa declarao anterior, o identificador cores uma tag opcional que a enumerao pode ser usado em declaraes posteriores de variveis enumerao dos enum colors Tipo:
enum cores bg, fronteiras; / * Declarar variveis e bg * fronteira

Como com struct e declaraes unio, voc pode omitir a marca se no houver outras variveis do presente enum tipo so necessrios:
/ * Tipo enum Annimo: * / enum {preto, vermelho, verde, violeta, azul, branco cor};

Enumerao mbito
tags Enumerao compartilhar o espao de mesmo nome de marcas de estrutura e unio. Enumerators compartilhar o mesmo espao de nomes como identificadores de variveis comuns:
int azul = 73; {/ / abrir um bloco de enum {cores preto, vermelho, verde, violeta, azul, branco c}; / Azul = 3 * enumerador agora esconde declarao externa de azul * / int struct {cores int i, j;}; dupla vermelho = 2; } azul = 37; / / Volta no mbito int azul / / ILEGAL: cores duplicadas tag / / ILEGAL: redefinio de vermelho

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo

171

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Tipo Void

vazio um tipo especial indicando o ausncia de qualquer valor. No h objetos de vazio, ao contrrio, vazio utilizada para obter os tipos mais complexos.

Void Funes
Use o vazio palavra-chave como um tipo de retorno da funo se a funo no retorna um valor.
vazio print_temp (char temp) { Lcd_Out_Cp ("Temperatura:"); Lcd_Out_Cp (temp); Lcd_Chr_Cp (223); / personagem / graus Lcd_Chr_Cp ('C'); }

Use vazio como uma funo de posio se a funo no tem parmetros. Alternativamente, voc pode escrever apenas parnteses vazios:
main (void) {/ / mesmo que main () ... }

Genricos Ponteiros
qualquer tipo.

Ponteiros podem ser declarados como vazio, o que significa que eles podem apontar para Esses ponteiros so chamados genricas.

172

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Tipos derivados
Os tipos derivados tambm so conhecidos como tipos estruturados. Eles so usados como elementos na criao de mais complexos tipos definidos pelo usurio. Os tipos derivados incluem: - matrizes - ponteiros - estruturas - sindicatos

Matrizes
Matriz a mais simples e mais comumente usado tipo estruturado. Uma varivel de matriz tipo na verdade um array de objetos do mesmo tipo. Estes objectos representam elementos de uma matriz e so identificados por sua posio na matriz. Uma matriz consiste em uma regio contgua de armazenamento exatamente grande o suficiente para armazenar todos os seus elementos.

Declarao Array
declarao de matriz semelhante declarao de varivel, com os suportes adicionado aps identificador:
Array_Name tipo de expresso [constante]

Isso declara uma matriz denominada Array_Name e composto de elementos de tipo. A tipo pode ser qualquer tipo escalar (excepto void), enumerao tipo definido pelo usurio,
o ponteiro, ou

outra matriz. Resultado da expresso constante dentro dos colchetes determina um nmero de elementos na matriz. Se uma expresso dada em um declarator matriz, ele deve avaliar a um constante inteira positiva. O valor um nmero de elementos em uma matriz. Cada um dos elementos de um array indexado de 0 ao nmero de elementos menos um. Se um nmero de elementos n, os elementos de matriz podem ser abordadas como
variveis Array_Name [0] .. [N-1] Array_Name de tipo.

Aqui esto alguns exemplos de declarao de matriz:


# Define MAX = 50 vector_one [10] / * declara um array de 10 inteiros * / int flutuar vector_two [MAX]; / * declara uma matriz de 50 carros alegricos * / flutuar vector_three [MAX - 20] / * declara uma matriz de 30 carros alegricos * /

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
173

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Inicializao de matriz

Uma matriz pode ser inicializada na declarao, atribuindo-lhe um delimitado por vrgula seqncia de valores dentro de chaves. Ao inicializar uma matriz na declarao, poder omitir o nmero de elementos - ser determinada automaticamente de acordo com a nmero de elementos atribudos. Por exemplo:
/ * Declare uma matriz que contm o nmero de dias de cada ms: * / int dia [12] = {} 31,28,31,30,31,30,31,31,30,31,30,31; / * Esta declarao idntico ao anterior * / int dias [] = {} 31,28,31,30,31,30,31,31,30,31,30,31;

Se voc especificar os valores de comprimento e de partida, o nmero de valores de partida deve no pode exceder o comprimento especificado. A oposto possvel, neste caso, o arrasto "Excesso" elementos sero atribudos a alguns valores de tempo de execuo encontradas a partir de memteoria. No caso da matriz de char, voc pode usar um menor seqncia literal notao. Por exemplo:
/ * As duas declaraes so idnticas: * / const char msg1 [] = {'T', 'E', 's', 't', '\ 0'}; const char msg2 [] = "Teste";

Para obter mais informaes sobre os literais cadeia de caracteres, consulte a String Constantes.

n Expresses Matrizes
Quando o nome de uma matriz aparece na avaliao da expresso (excepto com a perares & e sizeof), convertido implicitamente para o ponteiro que aponta para a
primeira matriz

elemento. Veja matrizes e ponteiros para mais informaes.

Arrays multi-dimensionais
Uma matriz unidimensional, se for do tipo escalar. arrays unidimensionais so algumasvezes referido como vetores.

Matrizes multidimensionais so construdos por declarar arrays de tipo de matriz. Estes matrizes so armazenadas na memria de tal maneira que as mudanas mais direita subscrito mais rpido, ou seja, as matrizes so armazenadas "Em linhas". Aqui est um exemplo de matriz de 2 dimenses:
flutuar m [50] [20]; / * Array de 2 dimenses de tamanho 50x20 * /

A varivel m uma matriz de 50 elementos, que por sua vez, so matrizes de 20 carros alegricos cada. Assim, temos uma matriz de 50x20 elementos: o primeiro elemento m [0] [0], a ltima

174

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

m [49] [19]. O primeiro elemento da linha 5 seria m [4] [0]. Se voc no inicializar a matriz na declarao, voc pode omitir a primeira dimenso da array multi-dimensional. Nesse caso, a matriz est localizado em outro lugar, por exemplo, em outro arquivo. Esta uma tcnica comumente usada quando passar matrizes como parmetros de funo:
int a [3] [2] [4]; / * Matriz 3-dimensional de tamanho 3x2x4 * /

vazio func (int [n] [2] [4]) {/ * podemos omitir primeira dimenso * / ... n [2] [1] [3] + +; incremento * / * o ltimo elemento / } vazio main () { ... func (a); }

Voc pode inicializar um array multi-dimensional com um conjunto adequado de valores dentro suspensrios. Por exemplo:
int a [3] [2] = {{1,2}, {2,6}, {3,7}};

Ponteiros

Ponteiros so objetos especiais para a realizao (ou "Apontando para") endereos de memria. Na mikroC PRO para PIC, endereo de um objeto na memria podem ser obtidas por meio de um operador unrio &. Para alcanar o objeto pontiagudo, usamos um operador de
indireo (*)

em um ponteiro.

Um ponteiro do tipo "Ponteiro para objeto do tipo" guarda o endereo da (ou seja, aponta para) um objeto do tipo. Como os ponteiros so objetos, voc pode ter um ponteiro apontando para um ponteiro (e assim por diante). Outros objetos comumente apontado incluem matrizes, estruturas e sindicatos. Um ponteiro para uma funo melhor pensar como um endereo, normalmente em um segmento de cdigo, onde o cdigo executvel que a funo armazenado, isto , o endereo para o qual o controle transferido quando essa funo chamado. Embora ponteiros contm nmeros com a maioria das caractersticas de inte-assinado gers, eles tm suas prprias regras e restries para as declaraes, as atribuies, converses, e aritmtica. Os exemplos nas sees seguintes ilustram algumas dessas regras e as restries. Mikr oele ktro nika -

Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
175

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Ponteiro declaraes

Os ponteiros so declarados da mesma forma que qualquer outra varivel, mas com * frente do identificador. Um tipo no incio da declarao especifica o tipo de um objeto pontiagudo. Um pontoer deve ser declarado como apontando para algum tipo particular, ainda que este tipo vazio, o que realmente significa um ponteiro para qualquer coisa. Ponteiros para vazio so muitas vezes chamados genricos ponteiros, e so tratados como ponteiros para char na mikroC PRO para a PIC. Se tipo qualquer tipo pr-definido ou definido pelo usurio, incluindo vazio, a declarao
Tipo * p; / * Ponteiro Uninitialized * /

declara p ser do tipo "Ponteiro para tipo ". Todos escopo, durao e regras de
visibilidade

so aplicada ao p objeto apenas declarada. Voc pode ver a declarao da seguinte maneira: se * P um objeto de tipo, em seguida, p tem que ser um ponteiro para tal objeto (objeto de
tipo).

Nota: Voc deve inicializar ponteiros antes de us-los! Nosso ponto declarado anteriormente, er * P no inicializado (isto atribudo um valor), por isso no pode ser usado ainda. Nota: No caso de declaraes ponteiro mltiplos, cada um requer um identificador indireta operador. Por exemplo:
int * Pa, pb, * pc *; / * o mesmo que: * / int * Pa; int * Pb; int * PC;

Uma vez declarada, porm, um ponteiro pode normalmente ser transferido assim que ele aponta para um objeto de outro tipo. O mikroC PRO para PIC permite transferir sem ponteiros typecasting, mas o compilador ir avis-lo a menos que o ponteiro foi originalmente declarado estar apontando para nulas. Voc pode atribuir a void * ponteiro para o no-void * ponteiro referem-se a vazio para mais detalhes.

176

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Ponteiros nulos
A ponteiro nulo valor um endereo que garantia de ser diferente de qualquer outro vlido ponteiro em uso em um programa. Atribuindo a constante inteira de 0 a um ponteiro atribui um valor do ponteiro nulo para ele. Por exemplo:
int * Pn = 0; / * Aqui est um ponteiro nulo * /

/ * Ns podemos testar o ponteiro como isto: * / se (Pn == 0) {... }

O tipo de ponteiro "Ponteiro para void" no deve ser confundido com o ponteiro nulo. A declarao
vazio * Vice-presidente;

declara que vp um ponteiro genrico, capaz de ser designado por qualquer das "Ponteiro para tipo " valor, inclusive nulo, sem reclamar. Atribuies sem casting adequado entre um "Ponteiro para type1 " e um "Ponteiro para type2 ", onde type1 e type2 diferentes tipos, pode invocar um aviso do compilador ou erro. Se type1 uma funo e type2 no (ou vice-versa), atribuies ponteiro so ilegais. Se type1 um ponteiro para vazio, nenhuma converso necessria. Se type2 um ponteiro para
vazio, nenhuma converso necessria.

Funo Ponteiros
Funo ponteiros so ponteiros, variveis, ou seja, que apontam para o endereo de um funo.
/ / Definir um ponteiro de funo int (* Pt2Function) (char, float, char);

Nota: Assim funes e ponteiros de funo com a conveno de chamada diferentes (argumento da ordem, tipo de argumentos ou tipo de retorno diferente) so incompatveis com cada outras.

Mikroelektronika - Solues de software e hardware para o mundo embutido

177

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Atribuir um endereo para um ponteiro de funo

muito fcil atribuir o endereo de uma funo para um ponteiro de funo. Basta ter o nome de uma funo adequada e conhecidos. Usando o operador de endereo e de frente o nome da funo opcional.
/ / Atribuir um endereo para o ponteiro de funo int DoIt (float a, b, char, char c) {return a + b + c;} pt2Function = &DoIt; / cesso /

Exemplo:
int ADDC (char x, char y) { retorno x + y; } int SUBC (char x, char y) { retorno x, y; } int mulC (char x, char y) { retorno x * y; } int CIVD (char x, char y) { retorno x / y; } int modC (char x, char y) { retorno x, y%; } / / Array de ponteiro para funes que recebem dois caracteres e retorna int int (* Arrpf []) (char, char) = { ADDC, SUBC, mulC, CIVD, modC}; int res; char i; vazio main () { para (I = 0; i <5; i + +) { res = arrpf [i] (10,20); } }

178

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Aritmtica de ponteiro
Aritmtica de ponteiro no mikroC PRO para PIC limitado a: - atribuio de um ponteiro para outro, - comparando dois ponteiros, - comparando ponteiro a zero, - adio / subtrao ponteiro e um valor inteiro, - subtraindo dois ponteiros. A aritmtica interna realizada em ponteiros depende do especificador de memria fora ea presena de modificadores ponteiro imperiosa. Ao realizar-arith aritmtica com ponteiros, presume-se que o ponteiro aponta para um array de objetos.

Matrizes e ponteiros
Matrizes e ponteiros no so tipos completamente independente na mikroC PRO para PIC. Quando o nome de uma matriz aparece na avaliao da expresso (exceto com operadores & e sizeof), convertido implicitamente para o ponteiro apontando para
matriz

primeiro elemento. Devido a este fato, as matrizes no so lvalues modificveis. Suportes [ ] indicam ndices da matriz. A expresso
id [exp]

definido como
* ((Id) + (exp))

quando: - id um ponteiro e exp um nmero inteiro, ou - id um inteiro e exp um ponteiro. As seguintes declaraes so verdadeiras:
& A [i] a [i] = = a + i * (A + i)

De acordo com essas orientaes, pode ser escrito:


pa = & a [4]; x * = (aa + 3); / * .. mas: * / y = aa * + 3; / / Pa aponta para um [4] / / X = a [7] / / Y = a [4] + 3

Mikroelektronika - Solues de software e hardware para o mundo embutido

179

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Alm disso, o cuidado deve ser tomado quando usando a precedncia do operador:
* Pa + +; (* Aa) + +;

/ / * Igual a (aa + +), incrementa o ponteiro / / Incrementa o objeto apontado!

Os exemplos a seguir tambm so vlidas, mas melhor evitar essa sintaxe, pois ele pode fazer o cdigo realmente ilegvel:
(A + 1) [i] = 3; / / Mesmo que: * ((a + 1) + i) = 3, ou seja, a [i + 1] = 3 (I + 2) [a] = 0; / / Mesmo que: * ((i + 2) + a) = 0, ou seja, a [i + 2] = 0

Atribuio e comparao
A atribuio simples operador (=) pode ser usado para atribuir o valor de um ponteiro para outro, se eles so do mesmo tipo. Se eles forem de tipos diferentes, voc deve usar um typecast operador. A converso explcita de tipo no necessrio se um dos ponteiros genrico (da vazio tipo). Atribuindo a constante inteira de 0 a um ponteiro atribui um valor nulo ponteiro para ele. Dois ponteiros apontando para a mesma matriz pode ser comparada usando oper-relacional ators ==,! =, <, <=,>, e > =. Os resultados destas operaes so as mesmas que se eles foram usados em valores subscritos de elementos da matriz em questo:
int * Pa = & a [4], pb * = & a [2]; se (Pa == pb) {... / * No ser executado em 4 no igual a 2 * /} se (Pb pa>) {... / * Ir ser executado como 4 superior a 2 * /}

Voc tambm pode comparar os ponteiros para o valor zero- testes, dessa forma, se o ponteiro do actupontos aliado a alguma coisa. Todos os ponteiros podem ser testados com sucesso para a igualdade ou a desigualdade de nulos:
se (Pa == 0) {... } se (Pb! = 0) {... }

Nota: Comparando os ponteiros apontando para diferentes objetos / matrizes podem ser realizados em responsabilidade do programador- uma viso precisa do armazenamento de dados de fsica necessrio.

180

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Ponteiro Adio

Voc pode usar operadores + + +, e + = adicionar um valor inteiro a um ponteiro. A resultado de Alm disso definida somente se o ponteiro aponta para um elemento de uma matriz e Se o resultado for um ponteiro apontando para a mesma matriz (ou um elemento para alm dela).

Se for declarado um ponteiro para apontar para tipo, acrescentando um valor integral n para o ponteiro incrementos o valor do ponteiro n * sizeof (tipo) enquanto o ponteiro permanece dentro do intervalo legal (primeiro elemento para um alm do ltimo elemento). Se tipo tem uma tamanho de 10 bytes, ento a adio de 5 para um ponteiro para tipo avana o ponteiro de 50 bytes na memria. Em caso da tipo tipo, o tamanho de um passo um byte. Por exemplo:
int a [10]; int * Pa = & a [0]; * (Pa + 3) = 6; agora igual a 6 * / aa + +; a [1] * / / * 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 prximo elemento de uma matriz:

No h nenhum elemento, como ponteiro "um aps o ltimo elemento", claro, mas o est autorizado a assumir tal valor. C "Garantias" que o resultado disso definida mesmo quando aponta para uma matriz de elemento passado. Se os pontos P para o ltimo elemento de matriz, P 1 + legal, mas P 2 + indefinido. Isto permite-lhe gravar loops que o acesso a elementos em um array seqncia meios de incrementar ponteiro - na ltima iterao, voc ter o ponteiro do ponto de o de um elemento passado a matriz, que legal. No entanto, a aplicao de um engano operador (*) para uma "Ponteiro para um aps o ltimo elemento" leva a um comportamento indefinido. Por exemplo:
vazio f (some_type um [] int n) { / * Funo f manipula elementos de uma matriz; * / / * Matriz A tem n elementos do tipo some_type * / int i; some_type * p = & a [0]; para (I = 0; i <n, i + +) { / * .. aqui ns fazemos algo com p * .. * / p + +; / * .. e com a ltima iterao p excede o ltimo elemento de um array * / } / * Neste ponto, p * indefinido! * / }

www.mecatronicadegaragem.blogspot.com
Mikroelektronika - Solues de software e hardware para o mundo embutido

181

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Ponteiro Subtrao

Semelhante ao lado, voc pode usar os operadores -, - E -= para subtrair uma parte integrante valor de um ponteiro. Alm disso, voc pode subtrair dois ponteiros. A diferena ser igual distncia entre dois endereos apontou, em bytes. Por exemplo:
int int int i= pi2 a [10]; * PI1 = & a [0]; * Pi2 = & a [4]; pi2 - PI1; / * I igual a 8 * / -= (I> 1); / * Pi2 = pi2 - 4: pi2 agora aponta para [0] * /

182

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Estruturas
Uma estrutura um derivado tipo normalmente representa uma coleo definida pelo usurio de nome membros (ou componentes). Esses membros podem ser de qualquer tipo, seja fundamental ou derivados (com algumas restries que devem ser discutidos mais tarde), em qualquer seqncia. Em adio, um membro de estrutura pode ser um campo de bits. Diferentemente dos arrays, estruturas so consideradas objetos nicos. A mikroC PRO para PIC tipo de estrutura permite-lhe lidar com estruturas de dados complexas quase to facilmente como pecado gle variveis. Nota: o mikroC PRO para PIC no suporta annimos estruturas (ANSI-mergulhador gncia).

Estrutura da declarao e inicializao


Estruturas so declaradas usando a palavra-chave struct:
struct tag {Membro declarator lista};

Aqui, tag o nome de uma estrutura; declarator membro-lista uma lista de estrutura membros, na verdade, uma lista de declaraes de variveis. Variveis do tipo estruturado so declarou o mesmo que as variveis de qualquer outro tipo.

O tipo de membro no pode ser o mesmo que o tipo struct sendo atualmente declarou. No entanto, um membro pode ser um ponteiro para a estrutura que est sendo declarada, como no semugido exemplo:
/ * Ilegal! * / struct {S MYSTRUCT;} MYSTRUCT; struct MYSTRUCT {MYSTRUCT ps *;}; / * OK * /

Alm disso, uma estrutura pode conter anteriormente tipos de estrutura definidos quando se declara uma instncia da estrutura declarada. Aqui est um exemplo:
/ * Estrutura que define um ponto: * / struct Dot {float x, y;}; / * Estrutura que define um crculo * / struct Circle { flutuar r; struct ponto central; } O1, O2; / * Declarar variveis O1 e O2 do Crculo * /

Mikr oele

ktronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
183

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

Note que a tag estrutura pode ser omitido, mas os objetos, em seguida adicionais deste tipo no pode ser declarados em outro lugar. Para obter mais informaes, consulte Estruturas Untagged abaixo. A estrutura inicializada atribuindo a ele uma seqncia delimitada por vrgulas de valores dentro aparelho, semelhante matriz. Por exemplo:
/ * Referindo-se s declaraes do exemplo acima: * / / * Declarar e inicializar pontos P e Q: * / struct Dot p = {1, 1..}, Q = {3,7, -0,5}; / * Declarar e inicializar crculo o1: * / struct Circulo o1 = {{1, 0, 0}...} / / Raio de 1, o centro est em (0, 0)

Declaraes incompletas
declaraes incompletas so tambm conhecidas como as declaraes para a frente. Um ponteiro para um tipo de estrutura A pode legalmente includos na declarao de outra estrutura B antes A foi declarado:
struct A; / / incompletos struct B {struct Um ano *;}; struct A {struct B pb *;};

A primeira apario de A chama-se incompleta, porque no h definio para isso em esse ponto. Uma declarao incompleta, permitido aqui, porque a definio de B no precisa do tamanho da A.

Estruturas Untagged e TYPEDEFs


Se a marca de estrutura omitido, um estrutura untagged criado. O untagged estruturas podem ser usados para declarar os identificadores na delimitado por vrgula membro declarator-lista ser do tipo de estrutura dada (ou derivados), mas almobjetos al deste tipo no pode ser declarado em outro lugar. possvel criar um typedef ao declarar uma estrutura, com ou sem a tag:
/ * Com tag: * / typedef struct MYSTRUCT {... MyStruct}; MyStruct s, * ps, ARRS [10] / * mesma estrutura MYSTRUCT s, etc * / / * Sem tag: * / typedef struct {... MyStruct}; MyStruct s, ps *, ARRS [10];

Normalmente, no h necessidade de usar os dois tag e typedef: ou pode ser usado em estipo de declaraes ture.

184

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

membros Untagged estrutura e unio so ignorados durante a inicializao. Nota: Veja tambm a trabalhar com as estruturas.

Trabalhar com estruturas

Estruturas representam tipos definidos pelo usurio. Um conjunto de regras relativas aplicao de estruturas estritamente definido.

Atribuio
As variveis do mesmo tipo estruturado pode ser atribudo um para outro por meio de operador de atribuio simples (=). Isso ir copiar todo o contedo da varivel a destino, independentemente do interior complexidade de uma determinada estrutura. Note-se que duas variveis so do mesmo tipo estruturado somente se ambos so definidos pela instruo ou mesmo usando o mesmo tipo identificador. Por exemplo:
/ * A e b so do mesmo tipo: * / struct {Int M1, M2;} a, b; / * Mas, c, d _no_ so do mesmo tipo, embora descries de sua estrutura so idnticas: * / struct {Int M1, M2;} c; struct {Int M1, M2;} d;

Tamanho da Estrutura
O tamanho da estrutura de memria pode ser recuperada por meio do operador sizeof. no necessrio que o tamanho da estrutura igual soma das suas membros tamanhos. Muitas vezes, maior devido a certas limitaes de armazenamento de memria.

Estruturas e Funes
A funo pode retornar um tipo de estrutura ou um ponteiro para um tipo de estrutura:
MYSTRUCT func1 (void); MYSTRUCT * func2 (void); / * Func1 () retorna uma estrutura * / / * Func2 () retorna ponteiro para estrutura * /

Uma estrutura pode ser passada como um argumento para uma funo no das seguintes maneiras:
vazio func1 (MYSTRUCT s;); vazio func2 (MYSTRUCT SPTR *;); / * Diretamente * / / * Atravs de um ponteiro * /

Mikroelektronika - Solues de software e hardware para o mundo embutido

185

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Estrutura de Acesso ao Portal

Estrutura e membros do sindicato so acessadas usando o oper seguinte seleo de dois ators: - . (Ponto final) - -> (Seta direita) O operador . chamado o selector membro direto e usado para acessar diretamente um dos membros da estrutura. Suponha que o objeto s do tipo struct S e m um identificador de membro do tipo M declarados em s, ento a expresso
s.m / / Acesso direto a um dos membros m

do tipo M, e representa o objeto membro m em S. O operador -> chamado o selector membro indireto (ou ponteiro). Suponha que o objeto s do tipo struct S e ps um ponteiro para s. Ento, se m um membro identifier do tipo M declarados em s, a expresso
ps-m> / / Acesso indirecto aos membros m; / / Idntico a (* ps) m.

do tipo M, e representa o objeto membro m em s. A expresso ps-m> uma abreviao conveniente para (* Ps). M Por exemplo:
struct MYSTRUCT { int i; char str [21]; dupla d; S SPTR} *, = &S; ... s.i = 3; SPTR -> d = 1,23; / / Atribuir ao membro do MYSTRUCT i s / / Atribui ao membro d de MYSTRUCT s

A expresso s.m lvalue, desde que s lvalue e m no uma matriz do tipo. A expresso m SPTR-> um lvalue menos m um tipo de matriz.

186

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Acessando estruturas aninhadas


Se a estrutura B contm um campo cujo tipo a estrutura A, os membros do A pode ser acessado por duas aplicaes do seletores membro:
struct A { int j; dupla x; }; struct {B int i; struct Um aa; dupla d; SPTR} * s,; ... s.i = 3; s.aa.j = 2; SPTR-> d = 1,23; aa.x SPTR-> = 3,14; // // // // atribuir atribuir atribuir atribuir 3a 2a 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 declarao de estrutura apresenta um tipo de estrutura nica, de modo que em
struct A { int i, j; dupla d; } AA, AAA; struct {B int i, j; dupla d; Bb};

os objetos aa e aaa ambos so do tipo struct A, mas os objetos aa e bb so tipos de estrutura diferente. As estruturas podem ser atribudas apenas se a origem eo destinonao tem o mesmo Tipo:
aa = AAA; AA BB =; / * Mas aa.i = aa.j = aa.d = / * OK: mesmo tipo, membro por membro de atribuio * / / * ILEGAL: * diferentes tipos /

voc pode atribuir membro por um membro: * / bb.i; bb.j; bb.d;

Mikroelektronika - Solues de software e hardware para o mundo embutido

187

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Sindicatos

Unio tipos so tipos derivados partilha muitas das caractersticas sintticas e funcional de tipos de estrutura. A diferena fundamental que uma sindicalistas partilham a mesma memespao de memria disponvel. Nota: O mikroC PRO para PIC no suporta sindicatos annimo (ANSI-diver gncia).

Sindicatos Declarao
Os sindicatos tm a mesma declarao como estruturas, com a palavra-chave Unio usados em vez de struct
Unio tag {membro declarator lista};

Ao contrrio das estruturas " membros, o valor de apenas um dos membros da Unio podem ser armazenados a qualquer momento. Aqui est um exemplo simples:
Unio myunion { int i; dupla d; char ch; Ontem} * mu,; / / Tag sindicato 'myunion'

A identificador mu, do tipo myunion, pode ser usado para prender um 2-byte int, 4-byte double ou de byte nico char, mas apenas um deles, em determinado momento. O identificador
pm

um ponteiro para a unio myunion.

Tamanho da Unio
O tamanho de uma unio o tamanho de seu membro maior. Em nosso exemplo anterior, os sizeof (myunion unio) e sizeof (mu) bytes de retorno 4, mas duas no so utilizadas (Acolchoado), quando mu detm a int bytes do objeto, e 3 so utilizadas quando mu detm
char.

Unio Acesso ao Portal


membros da Unio podem ser acessados com os seletores estrutura membro (e -.>), ser cuidado ao fazer isto:
/ * Referindo-se s declaraes do exemplo acima: * / pm = mu.d = 4,016; tmp = mu.d / / OK: mu.d = 4,016

188

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
tmp = mu.i; i am-> = 3; tmp = mu.i; / / Resultado peculiar

CAPTULO 6

Referncia da Linguagem

/ / OK: mu.i = 3

A terceira linha legal, desde mu.i um tipo integral. No entanto, o padro de bits em mu.i corresponde a partes das anteriormente atribudas casal. Como tal, ele provavelmente no
vai

fornecer uma interpretao inteiro teis. Quando devidamente convertido, um ponteiro para uma unio pontos a cada um dos seus membros, e vice-versa.

Campos Bit
Campos de bits so especificados os nmeros de bits que podem ou no ter um associado identifier. Campos de bits oferecem uma maneira de subdividir em partes de estruturas chamado de definido pelo usurio tamanhos. Estruturas e os sindicatos podem conter campos de bits que podem ser de at 16 bits. Voc no pode pegar o endereo de um campo de bits. Nota: Se voc precisar manipular bits especficos das variveis de 8 bits (Char e no assinado curto) ou registros, voc no precisa declarar campos de bits. soluo muito mais elegante a utilizao do mikroC PRO para a capacidade intrnseca da PIC para o acesso de bits individuais - veja Acesso Individual Bits para mais informaes.

Declarao de campos de bits


Campos de bits pode ser declarado apenas em estruturas e unies. Declare uma estrutura normal ly e atribuir campos individuais como este campos (precisam ser no assinado):
struct tag { no assinado declarator bitfield-lista; }

Aqui, tag um nome opcional da estrutura; declarator bitfield-lista uma lista de campos de bits. Cada componente requer um identificador de clon e sua largura em bits para ser explicitamente especificado. largura total de todos os componentes no pode exceder dois bytes (16 bits). Como um objeto, estrutura campos de bits necessrios dois bytes. Campos individuais so embaladas em

dois bytes da direita para a esquerda. Em bitfield-declarator lista, voc pode omitir www.mecatronicadegaragem.blogspot.com
identifi-

er (s) para criar uma artificial "Estofo", ignorando, assim bits irrelevante.

Mikroelektronika - Solues de software e hardware para o mundo embutido

189

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

Por exemplo, se h uma necessidade de manipular bits apenas 2-4 de registrar-se como um bloco, criar uma estrutura como esta:
struct { no assinado : 2, mybits: 3; Myreg}; / / Passar bits 0 e 1, nenhum identificador aqui / / Relevantes bits 2, 3 e 4 / / Bits 5, 6 e 7 so implicitamente deixados de fora

Aqui est um exemplo:


typedef struct lo_nibble: hi_nibble: high_byte: { 4; 4; 8;} myunsigned;

que declara o tipo estruturado myunsigned contendo trs componentes: lo_nibble (Bits 3 .. 0), hi_nibble (Bits 7 .. 4) e high_byte (Bits 15 .. 8).

Acesso campos de bits


Campos de bits pode ser acessado da mesma forma como o membros da estrutura. Uso direto eo selector de membro indirectos (. e ->). Por exemplo, poderamos trabalhar com os
nossos pr-

riormente declarada myunsigned como este:


/ / Este exemplo escreve byte baixo do campo de bit do tipo de myunsigned Port0: Value_For_PORT0 myunsigned; vazio main () { ... Value_For_PORT0.lo_nibble = 7; Value_For_PORT0.hi_nibble = 0x0C; * P0 = (char *) (Void *) & Value_For_PORT0; / / Typecasting: / / 1. endereo da estrutura para ponteiro para void / / 2. ponteiro para void para ponteiro para char / / 3. dereferencing para obter o valor }

190

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Idioma Referncia

Converses de Tipo
A mikroC PRO para PIC uma linguagem estritamente digitadas, com cada operadora, a declarao e funo exigente operandos devidamente digitado / argumentos. No entanto, ns muitas vezes tm de usar objetos de "Descasamento" tipos de expresses. Nesse caso, tipo converso necessrio. Converso de objeto de um tipo que significa o tipo de objeto alterado para outro tipo. A mikroC PRO para PIC define um conjunto de converses para o padro interno tipos, desde pelo compilador quando necessrio. Para obter mais informaes, consulte o Converses Standard. A converso necessria nas seguintes situaes: - Se uma instruo requer uma expresso do tipo especial (de acordo com def idioma rial), e usamos uma expresso de tipo diferente, - Se um operador requer um operando de tipo particular, e ns usamos um operando de difediferentes tipos, - Se uma funo requer um parmetro formal de determinado tipo, e pass-lo um objeto de tipo diferente, - Se uma expresso a seguir a palavra-chave retorno no coincide com o declarado funo tipo de retorno, - Se intializing um objeto (na declarao) com um objeto de tipo diferente.

Nessas situaes, o compilador ir fornecer uma converso automtica implcita de tipos, sem qualquer interferncia do programador. Alm disso, o programador pode exigir a converso explicitamente meio do distribuir os papis operador. Para obter mais informaes, consulte a converso de tipo explcito.

Standard Converses
Ao usar a expresso aritmtica, como a + b, onde um e b so de diferentes tipos de aritmtica, o mikroC PRO para PIC realiza converses de tipo implcito antes a expresso avaliada. Essas converses padro incluem promoes "Inferiores" tipos de "Superior" tipos, no interesse da preciso e consistncia. Atribuir um objeto de carter assinado (como uma varivel) a um objeto resulta integral na extenso de sinal automtico. Objetos do tipo signed char sempre usar a extenso de sinal; objetos do tipo unsigned char byte sempre tem seus altos definido para zero quando convertido para int.

Convertendo um tipo mais parte integrante de um tipo mais curto trunca os bits de ordem superior e folhas de bits de baixa ordem inalterada. Convertendo um tipo mais curto parte integrante de um mais tipo qualquer sinal estende-se ou zero preenche os bits extra de o novo valor, dependendo se o tipo mais curto assinado ou no assinado, respectivamente. Mikr oele

ktronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

191

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Idioma Referncia

Nota: Converso de dados de ponto flutuante em valor integral (em tarefas ou atravs de typecast explcito) produz resultados corretos apenas se o flutuar valor no exceda o escopo de destino tipo integral.

Detalhes:
Aqui esto os passos que o mikroC PRO para PIC utiliza para converter os operandos em uma arithexpresso aritmtica: Em primeiro lugar, qualquer tipo de pequeno integrais so 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 so int (Incluindo o tempo e no assinado modificadores) ou flutuar (Equivalente a dupla e long double na mikroC PRO para PIC). 1. Se um dos operandos for float, o outro operando convertido para float. 2. Caso contrrio, se um dos operandos for unsigned long, o outro operando convertido
para unsigned long.

3. Caso contrrio, se um dos operandos for longo prazo, ento o outro operando
convertido para tempo.

4. Caso contrrio, se um dos operandos for unsigned, o outro operando convertido para
no assinado.

5. Caso contrrio, ambos os operandos so int. O resultado da expresso do mesmo tipo que a dos dois operandos. Aqui esto alguns exemplos de converso implcita:
2 + 3.1 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 converso
Tipos ponteiro pode ser convertidas para outros tipos de ponteiro usando o mecha typecastingnismo:
char * Str; int * Ip; str = (char *) De IP;

Mais genericamente, o elenco * Tipo ir converter um ponteiro para o tipo "Ponteiro para
tipo ".

192

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo

www.mecatronicadegaragem.blogspot.com

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Concersions tipo explcito (converso de tipo)

Na maioria das situaes, o compilador ir fornecer uma converso automtica implcita de tipos quando necessrio, sem qualquer interferncia do usurio. Alm disso, o usurio pode converter explicitamente um operando em outro tipo usando o operador unrio prefixo distribuir os papis operador:
(Tipo) de objeto

Isto ir converter objeto a um especificada tipo. Parnteses so obrigatrios. Por exemplo:


/ * Vamos ter duas variveis do tipo char * / char a, b; / * Linha a seguir para coagir um unsigned int * / (Unsigned int) a; / * Linha a seguir ir coagir a dobrar, b ento forar a dupla automaticamente, * /: Resultando num valor do tipo double (Double) a + b; / / equivalente a ((double) a) + b;

Declaraes
A declarao apresenta um ou vrios nomes para um programa - informa o compiler o que o nome representa, o que seu tipo, o que operaes so permitidas com ele, etc Esta seo revisa os conceitos relacionados s declaraes: declaraes, definies, especificadores de declarao e inicializao. A gama de objetos que podem ser declaradas inclui: - Variveis Constantes - Funes -Tipos - Tags estrutura sindical, e enumerao membros Estrutura membros da Unio Europeia - Matrizes de outros tipos - Declarao de rtulos - Preprocessor macros

Mikroelektronika - Solues de software e hardware para o mundo embutido

193

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Declaraes e Definies

Definindo declaraes, tambm conhecido como definies, ao lado de introduzir o nome de um objeto, tambm estabelecer a criao (onde e quando) de um objeto, isto , a alocao o da memria fsica e sua inicializao possvel. Referenciando declaraes, ou apenas declaraes, basta fazer seus identificadores e tipos conhecidos para o compilador. Aqui est uma viso geral. Declarao tambm uma definio, excepto se:

- Declara uma funo sem especificar o seu corpo - Tem o extern especificador, e no tem Inicializador ou organismo (no caso de func.) - o typedef declarao No pode ser declaraes de referncia para muitos o mesmo identificador, especialmente em um declarao de vrios programas, mas apenas uma definio para esse identificador permitido. Por exemplo:
/ * Aqui est uma declarao de Max nondefining funo; * / / * Se limitou a informar compilador que mxima uma funo * / int max (); / * Aqui est uma definio do valor mximo da funo: * / int max (int x, int y) { retorno (X> y =)? x: y; } / * Definio da varivel i * / int i; / * Seguindo a linha um erro, eu j est definido! * / int i;

Declaraes e declarators
A declarao contm especificador (s), seguido por um ou mais identificadores (declares). A declarao comea com especificadores de classe de armazenamento opcional, especificadores de tipo, e outros modificadores. Os identificadores so separados por vrgulas e a lista terminados por um ponto e vrgula. Declaraes de identificadores de variveis tm o seguinte padro:
armazenamento de classe [qualificador de tipo] Tipo var1 [= inic1], var2 [= inic2], ... ;

onde var1, var2, ... so qualquer seqncia de identificadores distintos com inicializadores opcional. Cada uma das variveis declarado de Tipo, se omitido, tipo padres para int. A especificador armazenamento de classe pode tomar os valores externo, esttico, registrar, ou o

194

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

padro auto. Opcional tipo de qualificao pode assumir valores const ou volteis. Para mais detalhes, consulte as classes de armazenamento e de qualificao de tipo.

Por exemplo:
/ * Cria trs variveis do tipo inteiro chamado x, y e z e inicializar X e Y para os valores 1 e 2, respectivamente: * / int x = 1, y = 2, z / / z continua a ser inicializado / * Criar um q varivel de ponto flutuante com modificador esttico, e inicializ-lo para 0,25: * / float esttico q = 0,25;

Estas so todas as declaraes de definio, o armazenamento alocado e qualquer inicializadores opcional so aplicadas.

Linkage

Um programa executvel normalmente criado atravs da compilao de vrios independentes transunidades de lamento, em seguida, ligando os arquivos com as bibliotecas de objeto resultante preexistente. Um termo unidade de traduo que se refere a um arquivo de cdigo fonte, juntamente com todos os arquivos includos, mas comas linhas de origem omitida pelas directivas de pr-processamento condicional. Um problema arises quando o mesmo identificador declarado em escopos diferentes (por exemplo, em diferentes arquivos), ou declarada mais de uma vez no mesmo escopo.

A articulao um processo que permite que cada instncia de um identificador deve ser associado corretamente com um determinado objeto ou funo. Todos os identificadores tm uma ligao de dois atributos, estreitamente relacionado com o seu mbito: ligao externa ou a ligao interna. Estes atributos so determinados pela localizao e formato de suas declaraes, together com um uso (ou implcitas por default) explcita do especificador de classe de armazenamento estticas ou
externo.

Cada instncia de um identificador especfico com ligao externa representa o mesmo objeto ou funo em toda a conjunto de arquivos e bibliotecas que compem o programa. Cada instncia de um identificador especfico com ligao interna representa o mesmo objeto ou funo dentro de um nico arquivo.

Regras de Linkage
Os nomes locais tm ligaes internas, o mesmo identificador pode ser usado em diferentes arquivos

para significar diferentes objetos. Global nomes tm ligaes externas; identificador significa www.mecatronicadegaragem.blogspot.com o mesmo objeto ao longo de todos os arquivos do programa. Se o mesmo identificador aparece com ligao interna e externa dentro do mesmo arquivo, o identificador tero ligao interna. Mikroelektronika - Solues de software e hardware para o mundo embutido

195

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Linkage Regimento Interno

1. nomes de alcance arquivo, explicitamente declaradas como esttico, tem ligao interna 2. nomes de alcance arquivo, explicitamente declaradas como const e no explicitamente declarado como externo, tm ligao interna 3. typedef nomes tm ligaes internas 4. constantes enumerao tem ligao interna

Linkage regras externas


1. nomes de alcance de arquivo, que no satisfaam a qualquer das afirmado anteriormente interna regras de articulao, tm ligao externa

A classe de armazenamento especificadores auto e Registre-se no pode aparecer em uma externa dezembrovai fazendo. No existe definio mais do que uma externa pode ser dado para cada identificador de unidade de traduo declarado com ligao interna. Uma definio externa uma externa declarao que define um objeto ou uma funo e tambm aloca um dispositivo de armazenamento. Se um identificador declarado com ligao externa usada em uma expresso (excepto como parte do operando da sizeof), ento exatamente uma definio externa desse identificador
deve

estar em algum lugar todo o programa.

Classes de armazenamento

Associando os identificadores de objetos requer que cada identificador para ter pelo menos dois attribnutos: 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 declaraes implcitas ou explcitas no cdigo-fonte. A classe de armazenamento dita a localizao (segmento de dados, registo, heap ou pilha) de objeto e sua durao ou vida (o tempo todo funcionamento do programa, ou durante execuo de alguns blocos de cdigo). Uma classe de armazenamento pode ser estabelecido pelo sinfiscal de uma declarao, por sua colocao no cdigo-fonte, ou por ambos os fatores:
tipo de armazenamento de classe identificador

O armazenamento especificadores de classe no mikroC PRO para PIC so: auto Registre-se estticas extern

www.mecatronicadegaragem.blogspot.com
196
Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Auto
A auto modificador usado para definir que uma varivel local tem uma durao local. Esta o padro para as variveis locais e raramente usada. auto no pode ser usado com globals. Veja tambm as funes.

Registre-se

No momento o modificador Registre-se tecnicamente no tem nenhum significado especial. A mikroC PRO para PIC compilador simplesmente ignora os pedidos de atribuio de registo.

Esttico
Um nome global declarada com o estticas especificador tem ligao interna, o que significa que ela local para um determinado arquivo. Veja Linkage para mais informaes. Um nome local declarada com o estticas especificador tem durao esttica. Use estticas com uma varivel local para preservar o valor passado entre chamadas sucessivas funo que desempenha. Ver Durao para mais informaes.

Extern
Um nome declarado com o extern especificador tem ligao externa, a menos que tenha sido anteriormente declarados como tendo ligao interna. A declarao no uma definio se tem o extern especificador e no inicializado. A palavra-chave extern opcional para um Funo prottipo. Use o extern modificador para indicar que o armazenamento real e do valor inicial do varivel, ou corpo da funo, definido em um mdulo separado do cdigo-fonte. Funces declaradas com extern so visveis em todos os arquivos-fonte do programa, menos que a funo redefinida como esttico. Veja Linkage para mais informaes.

Tipo, qualificao
Os qualificadores do tipo const e volteis so opcionais nas declaraes e no realmente afetar o tipo de objeto declarado.

Eliminatrias Const
O qualificador const implica que um objeto declarado no ir alterar o seu valor durante tempo de execuo. Em declaraes com o const qualificador de todos os objetos precisam ser inicializadas. A mikroC PRO para PIC trata objetos declarados com o const qualificador o mesmo como literais ou constantes de pr-processamento. Se o usurio tenta alterar um objeto declarado com o const compilador qualificador ir reportar um erro.

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
197

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Por exemplo:
const PI dupla = 3,14159;

Qualificador voltil

O qualificador volteis implica que uma varivel pode alterar seu valor durante a execuo independentemente do programa. Use o modificador voltil para indicar que uma varivel pode ser alterado por uma rotina de fundo, uma rotina de interrupo, ou a porta I / O. Declarando um objeto a ser volteis, adverte o compilador no fazer suposies sobre o valor de um objeto ao mesmo tempo avaliar expresses em que ela ocorre porque o valor do podem ser alteradas a qualquer momento.

Especificador typedef

O especificador typedef introduz um sinnimo para um tipo especificado. O typedef dezembrocombinar declaraes so usadas para construir mais curto ou mais nomes convenientes para os tipos j definida pela linguagem ou declarada pelo usurio. O especificador typedef ocupa o primeiro lugar na declarao:
typedef <type_definition> sinnimos;

A typedef palavra-chave atribui sinnimo de <type_definition>. A sinnimo deve ser um identificador vlido. Uma declarao a partir do typedef especificador no introduz um objeto ou uma funo de um determinado tipo, mas sim um novo nome para um determinado tipo. Em outras palavras, o declarao typedef idntico a um"Normal" declarao, mas em vez de objetos, declara tipos. uma prtica comum para nomear identificadores tipo personalizado com incio de ing letra maiscula - isso no exigido pelo mikroC PRO para a PIC. Por exemplo:
/ * Vamos declarar uma sinnimo de "unsigned long int" * / unsigned int typedef longo Distncia; / * Agora, sinnimo "Distncia" pode ser utilizado como identificador de tipo: * / Distncia i; / / declara varivel i de int unsigned long

Na typedef declarao, como em qualquer outra declarao, vrios tipos podem ser declarado de uma vez. Por exemplo:
typedef int * PTI, Array [10];

Aqui, Pti um sinnimo para o tipo "Ponteiro para int ", e Array um sinnimo para o tipo "Matriz de 10 int elementos ".

asm Declaraes

198

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

A mikroC PRO para PIC permite a incorporao de montagem no cdigo-fonte por meio da declarao asm. As declaraes _asm e _asm Tambm so permitidas no mikroC PRO para PIC e tm o mesmo significado. Note-se que cannnot numerais ser usados como endereos absolutos de SFR e GPR variveis em instrues de montagem. Nomes simblicos pode ser utilizado em substituio (anncio ser exibido estes nomes, bem como endereos). As instrues de montagem podem ser agrupados pela asm palavra-chave (ou _, Ou _asm):
asm { bloco de instrues de montagem }

Existem duas maneiras de embeding instrues de montagem nico cdigo C:


asm instrues de montagem;

e
asm instrues de montagem

Nota: O ponto e vrgula e LF so encerra mbito asm para instrues de montagem nico. Este a razo pela qual a sintaxe a seguir no bloco asm:
asm { bloco de instrues de montagem }

Este cdigo ser interpretado como nica linha asm vazio seguido pelo composto C declarao. A mikroC PRO para PIC comentrios (tanto de linha nica e multi-linha) so permitidos em incorporado cdigo de montagem. Se voc tem uma varivel global "g_var", que do tipo longo (ou seja, 4 bytes), estiver de acess-lo assim:
MOVF MOVF MOVF MOVF ... _g_var _g_var _g_var _g_var etc 0, 1, 2, 3, 0 0 0 0 ; Coloca byte menos significativo de g_var no registo W ; Segundo byte de _g_var; corresponde a Oi (g_var) ; Superior (g_var) ; Mxima (g_var)

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. Tambm recomended para verificar "as linhas de cdigo Incluir nos arquivos de sada" na caixa Configuraes de sada Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

199

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

Nota: Compiler no esperar que os bancos de memria para ser alterado dentro do conjunto cdigo. Se o usurio quiser Para fazer isso, ento ele deve restaurar o banco de seleo anterior. tpicos relacionados: mikroC PRO para PIC specifcs

Inicializao
O valor inicial de um objeto declarado pode ser definido no momento da declarao (initializao). Uma parte da declarao que especifica a inicializao chamado inicializador. Inicializadores para globals e estticas objetos devem ser constantes ou expresses constantesses. O inicializador para um objeto automtico pode ser qualquer expresso jurdica que avaminado a uma atribuio compatvel com valor para o tipo das variveis envolvidas. tipos escalares so inicializados com uma nica expresso, que opcionalmente pode ser fechado chaves. O valor inicial de um objeto o da expresso, as mesmas restries para o tipo e converses para atribuies simples so aplicados para inicializaes tambm. Por exemplo:
int i = 1; char * S = "Ol"; struct c complexo = {0,1, -0,2}; / / Onde "complexo" uma estrutura (float, float)

Para estruturas ou unies com durao de armazenamento automtico, o inicializador deve ser um dos seguintes procedimentos: - Uma lista de inicializador. - A nica expresso compatvel com o sindicato ou o tipo de estrutura. Neste caso, a inicial valor do objeto o da expresso. Por exemplo:
struct dot {int x; int y;} {m = 30, 40};

Para mais informaes, consulte Estruturas e Sindicatos. Alm disso, voc pode inicializar matrizes do tipo de personagem com uma seqncia literal, opcionalmente entre chaves. Cada personagem na seqncia de caracteres, incluindo o terminador nulo, inicializes elementos sucessivos na matriz. Para obter mais informaes, consulte Matrizes.

Inicializao automtica
A mikroC PRO para PIC no fornecer a inicializao automtica para objetos. Unini-

200

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

globals tialized e objetos com durao esttica ter valores aleatrios de memteoria.

FUNES

As funes so centrais para a programao C. As funes so geralmente definidas como subprogramas gramas que retornar um valor baseado em uma srie de parmetros de entrada. Valor de retorno da funo pode ser usada em expresses - tecnicamente, chamada de funo considerada ser uma expresso como outra qualquer. C permite que uma funo para criar resultados que no o seu valor de retorno, denominada lado os efeitos. Muitas vezes, o valor de retorno da funo no usada, dependendo do lado os efeitos. Essas funes so equivalentes s procedimentos linguagem de programao de outras linguagens, como Pascal. C no faz distino entre procedimento e funo funes os dois papis. Cada programa deve ter uma nica funo externo chamado principal marcando a entrada ponto do programa. As funes so normalmente declarado como prottipos no padro ou fornecido pelo usurio arquivos de cabealho, ou dentro de arquivos de programa. Funes tm ligao externa por padro e so normalmente acessveis a partir de qualquer arquivo no programa. Isso pode ser restrita usando o estticas classe de armazenamento especificador na declarao da funo (ver Classes de armazenamento e ligao). Nota: Verifique as especificidades PIC para obter mais informaes sobre as funes ' limitaes na Microcontroladores PIC compatvel.

Funo Declarao
As funes so declaradas em arquivos do usurio de origem ou disponibilizar, ligando-precom empilhados bibliotecas. A sintaxe da declarao da funo :
function_name tipo (parmetro-declarator-list);

A function_name deve ser um identificador vlido. Esse nome usado para chamar a funo, ver as chamadas de funo por mais da informao.
tipo representa o tipo de resultado da funo, e pode ser de qualquer padro ou usurio tipo definido. Para funes que no retornam valor vazio tipo deve ser usado. O tipo pode ser omitida nas declaraes funo global, e assumir a funo int tipo por padro.

Tipo de funo tambm pode ser um ponteiro. Por exemplo, float * significa que uma funo resultado um ponteiro para float. O ponteiro genrico void * tambm permitido.

www.mecatronicadegaragem.blogspot.com
Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

201

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
A funo no pode retornar uma matriz ou de outra funo.

Dentro parnteses, declarator parmetro-lista uma lista de argumentos formais que a funo recebe. Estes declarators especificar o tipo de cada parmetro de funo. O compilador usa essa informao para verificar a validade das chamadas de funo. Se a lista vazio, um funo no tem argumentos. Alm disso, se a lista vazio, uma funo Tambm no tem quaisquer argumentos, note que este o caso somente quando vazio pode ser usado como um tipo de argumento. Ao contrrio de declarao de varivel, cada um argumento na lista de suas necessidades de especificador de tipo prprio e qualificador possvel const ou volteis.

Prottipo de funo
A funo pode ser definido apenas uma vez no programa, mas pode ser declarado vrias vezes, supondo que as declaraes so compatveis. Quando declarar uma funo, o formal argumento o identificador no precisa ser especificado, mas faz seu tipo. Esse tipo de declarao, vulgarmente conhecida como a prottipo da funo, permite uma melhor controle sobre nmero de argumento, verificao de tipo e converses de tipo. O nome de um parmetro no prottipo de funo tem o seu mbito limitado ao prottipo. Isso permite que um parmetro identificador de ter nomes diferentes em declaraes diferentes de uma mesma funo:
/ * Aqui esto dois prottipos da mesma funo: * / int teste (const char *) int teste (p const char *) / * Declara * Teste de funo / / * Declara a mesma funo de teste * /

Funo prottipos so muito teis na documentao de cdigo. Por exemplo, a funo Cf_Init tem dois parmetros: Controle de porta e porta de dados. A questo , que qual? O prottipo de funo:
vazio Cf_Init (char * Ctrlport, char * Dataport);

deixa claro. Se um arquivo de cabealho contm prottipos de funo, o usurio pode ler que arquivo para obter as informaes necessrias para escrever programas que chamar essas funes. Se um parmetro prottipo inclui um identificador, ento o Indentificador usado apenas para o erro verificao.

202

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Definio de Funo
Definio da funo consiste em sua declarao e funo do corpo. A corpo da funo tecnicamente um bloco - uma seqncia de definies locais e instrues entre dentro de chaves {}. Todas as variveis declaradas dentro do corpo da funo so
locais funo,

ou seja, tm um alcance de funo. A prpria funo s pode ser definido no mbito do arquivo, o que significa que funo declaraes no podem ser aninhados. Para retornar o resultado da funo, use o retorno declarao. O retorno na declarao funes do vazio tipo no pode ter um parmetro - na verdade, a instruo de retorno pode ser omitido por completo, se a ltima declarao no corpo da funo. Aqui est uma definio de funo de exemplo:
/ * Funo max retorna mais um dos seus dois argumentos: * / int max (int x, int y) { retorno (X> y =)? x: y; }

Aqui est uma pequena funo que depende de efeitos colaterais em vez de valor de retorno:
/ * Funo Descartes converte coordenadas (x, y) para polares (r, fi): * / # Include <math.h> vazio polar (dupla x, dupla y, dupla * R, dupla * Fi) { * R = sqrt (x * x + y * y); * Fi = (x == 0 & & y == 0)? 0: atan2 (y, x); retorno; / * essa linha pode ser omitido * / }

Function reentrncia
reentrncia funes permitido se a funo no tem parmetros e locais variveis, ou se as variveis locais so colocadas no espao de Rx. Lembre-se que o PIC tem pilha e memria limitaes que podem variar muito entre os MCUs.

Mikroelektronika - Solues de software e hardware para o mundo embutido

203

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Idioma Referncia
Chamadas de funo e argumento de converso Chamadas de funo

A funo chamada com argumentos reais colocados na mesma seqncia em que seus correspondentes parmetros formais. Use a funo chamada operador ():
function_name (expression_1, ..., expression_n)

Cada expresso na chamada de funo uma argumento real. Nmero e tipos de argumentos reais devem coincidir com as dos parmetros da funo formal. Se os tipos no partida, as converses de tipo implcitas regras sero aplicadas. argumentos reais podem ser de qualquer complexidade, mas a ordem da sua avaliao no especificado. Aps a chamada de funo, todos os parmetros formais so criados como objetos locais inicializado os valores dos argumentos reais. Aps voltar de uma funo, um objeto temporrio criado no local da chamada, e inicializado com a expresso do retorno declarao. Isto significa que a chamada de funo como um operando na expresso complexa tratada como um resultado da funo. Se a funo tem nenhum resultado (tipo resultado nulo) ou o no necessrio, em seguida,
o fun-

da de consulta pode ser escrita como uma expresso de auto-contidas. Em C, os argumentos escalares so sempre passados para a funo de valor. A funo pode modificar os valores dos seus parmetros formais, mas este no tem efeito sobre o argumento realmentos na rotina de chamada. Um objeto escalar podem ser passadas atravs do endereo, se uma forparmetro formal for declarado como um ponteiro. O objeto pontiagudo pode ser acessado por * usando o operador de indireo.
/ / Por exemplo, Soft_Uart_Read leva o ponteiro para a varivel de erro, / / Para que ele possa alterar o valor de um argumento real: Soft_Uart_Read (e erro); / / O cdigo a seguir seria errado, voc deve passar o valor / / Varivel de erro para a funo: Soft_Uart_Read (erro);

Argumento Converses
Se um prottipo de funo no tenha sido previamente declarada, o mikroC PRO para PIC converte argumentos integral para uma funo chamada de acordo com o aumento integral (Expanso) regras descritas no Standard converses. Se um prottipo de funo est em escopo, o mikroC PRO para PIC converte o argumento passado para o tipo de parmetro declarado de acordo com as mesmas regras de converso como em estado de atribuio mentos.

204

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Se um prottipo estiver presente, o nmero de argumentos devem ser iguais. Os tipos necessidade de ser compatvel apenas na medida em que uma tarefa pode convert-los legalmente. A utilizador pode sempre usar uma converso explcita para converter um argumento para um tipo que aceicapaz de um prottipo de funo.

Nota: Se o prottipo da funo no corresponde a definio da funo real, o mikroC PRO para PIC ir detectar isto se e somente se essa definio est na mesma unidade de compilao como o prottipo. Se voc criar uma biblioteca de rotinas com o arquivo de cabealho correspondente prottipos, considerar a incluso que o arquivo de cabealho quando voc compilar a biblioteca, de modo que qualquer discrepncias entre os prottipos e definies reais sero detectados. O compilador tambm capaz de forar argumentos para alterar o tipo para uma adequada. Considere o seguinte cdigo:
int limite = 32; char ch = 'A'; tempo res; / Prottipo / extern longo func (longa par1, tempo par2); main () { ... res = func (ch-limite); }

/ Chamada de funo /

Desde que o programa tem a funo prottipo para funo, ele converte limite e ch para
tempo, usando as regras de atribuio, antes de coloca-los na pilha para a chamada para func.

Sem o prottipo da funo, limite e ch seria colocada na pilha como um inteiro e um personagem, respectivamente, nesse caso, a pilha passado para func no combinar com o tamanho ou o contedo que func espera, que pode causar problemas.

Reticncias Operador ('...')

O ('...') reticncias composto por trs perodos sucessivos, sem espaos de interveno. Uma elipse pode ser usado nas listas argumento formal de prottipos de funo para indicar uma nmero varivel de argumentos ou argumentos com tipos variados. Por exemplo:
vazio func (int n, char ch, ...);

Esta declarao indica que a funo ser definida de tal forma que as chamadas devem ter pelo menos dois argumentos, int e char, mas tambm pode ter qualquer nmero de almargumentos al.

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
205

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

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

206

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

OPERADORES
Operadores so smbolos que provocam alguma computao quando aplicado a variveis e outros objetos em uma expresso. Operadores Aritmticos Operadores de Atribuio Operadores bit a bit Operadores lgicos Referncia / Operadores Indireta Os operadores relacionais Membro Seletores Estrutura Operador Vrgula , Operador condicional ? : Matriz do operador subscrito [] Funo de operador de call ()
sizeof Operador

Preprocessor Operadores # e # #

Mikroelektronika - Solues de software e hardware para o mundo embutido

207

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Operadores Presidence e Associativismo

H 15 categorias de precedncia, alguns deles contm um nico operador. Operadores na mesma categoria tm a mesma precedncia. Se duplicatas de operadores aparecem na tabela, a primeira ocorrncia unrio e segundo binrio. Cada categoria tem uma regra de associatividade: da ), Ou da direita para a esquerda para a direita ( esquer ). Na ausncia de parnteses, essas regras resolver um agrupamento de expresda ( es com os operadores de precedncia igual. Precedncia Operando Operadores Associativis 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 2 1 2 2 2 2 2 2 2 2 2 2 3 2 2
() []. -> ! ~ + + - + - * & (Tipo) sizeof *% / + <<>> <<=>> = ==! = & ^ | & & | | ?: = *= / =% = + = -= & ^ = | = <<=>> ,

Operadores Aritmticos
Os operadores aritmticos so usados para realizar clculos matemticos. Eles tm operandos numricos e retornar os resultados numricos. O tipo de char tecnicamente representa nmeros inteiros pequenos, de modo que o char variveis podem ser usadas como operandos em aritmtica operaes. Todos os operadores aritmticos associam da esquerda para a direita.

208

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Operador Operao Operadores Binrios + * / % Alm subtrao multiplicao diviso operador de mdulo retorna o resto da inteiro diviso (no pode ser usado com pontos flutuantes) Operadores unrios mais unrio no afeta o operando unrio mudanas menos o sinal do operando 12 12 13 13 13

CAPTULO 6

Referncia da Linguagem
Precedncia

+ ++

14 14

incremento adiciona um ao valor do operando. PostIncrement adiciona um ao valor do operando 14 depois que ele avalia, enquanto pr-incremento adiciona uma t d li decremento subtrai um do valor da operando. Postdecrement subtrai um do 14 valor do operando depois que ele avalia, enquanto prdi i i b i d li Nota: O operador * sensvel ao contexto e tambm pode representar a referncia de ponteiro operador.

Mikroelektronika - Solues de software e hardware para o mundo embutido

209

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Binrio Operadores aritmticos

Diviso de dois nmeros inteiros retorna um inteiro, enquanto a restante simplesmente truncado:
/ * Por exemplo: * / 04/07 / * equivale a 1 * / 7 * 04/03 / * equivale a 5 * / / * Mas * / 7. * 3. / 4.;

/ * Igual a 5,25, porque estamos trabalhando com flutuadores * /

Restante operando % trabalha apenas com nmeros inteiros, o sinal do resultado igual ao sinal do primeiro operando:
/ * Por exemplo: * / 9% 3; / * igual a 0 * / 7% 3 / * equivale a 1 * / -7% 3; / * igual a -1 * /

Aritmtica Os operadores podem ser usados para manipular caracteres:


'A' + 32; 'G' - 'A' + 'a'; / * * igual a 'A' (ASCII) / / * igual a 'g' (ASCII e EBCDIC) * /

Operadores aritmticos unrios


Unrios operadores + + e - so os nicos operadores em C que pode ser prefixo (Por exemplo, + + K, - K) ou postfix (por exemplo, k + +, k -). Quando usado como prefixo, os operadores + + e - (Pr-incremento e preDecrement) adicionar ou subtrair um valor do operando antes da avaliao. Quando usado como suficorreo, os operadores + + e - (Ps e postdecrement) adicionar ou subtrair uma do valor do operando aps a avaliao. Por exemplo:
int j = 5; j = k + +;

/ * k = k + 1, k = j, o que nos d k = 6, j = 6 * /

mas:
int j = 5; j = k + +; / * K = j, k = k + 1, que nos d k = 5, j = 6 * /

210

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Os operadores relacionais
Use operadores relacionais para testar a igualdade ou desigualdade de expresses. Se uma expresSion avalia ser verdadeiro, ele retorna 1, caso contrrio ele retorna 0. Todos os operadores relacionais associam da esquerda para a direita.

Viso geral sobre operadores relacionais


Operador == != > < >= <= Operao igualdade no igual superior menos de igual ou superior inferior ou igual 9 9 10 10 10 10 Precedncia

Operadores relacionais em expresses


Precedncia dos operadores aritmticos e relacionais designado de modo a permitir expresses complexas sem parnteses para esperar significado:
a + 5> = c - 1.0 / e / *? (A + 5)> = (c - (1,0 / e)) * /

No se esquea que os operadores relacionais retornam 0 ou 1. Considere o seguinte exemplos:


/ * Ok: * / 5> 7 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 - Solues de software e hardware para o mundo embutido

211

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Operadores bit a bit

Usar os operadores bit a bit para modificar bits individuais dos operandos numricos. Operadores bit a bit adjunto da esquerda para a direita. A nica exceo o com-bit a bit operador plementar ~ que associa a partir de direita para a esquerda.

Viso geral sobre operadores bit a bit


Operador & Operao E bit a bit; compara pares de bits e retorna 1 se ambos os bits forem 1, caso contrrio retorna 0 bit a bit (inclusive) OR; compara pares de bits e retorna 1 se um ou ambos os bits so 1, caso contrrio retorna 0 bit a bit OU exclusivo (XOR); compara pares de bits e retorna 1 se os bits so complementares, outras retorna sbio 0 bit a bit complemento (unrio); inverte cada bit desvio para a esquerda bit a bit; move os bits para a esquerda, as devolues bi i d bi i deslocamento direita bit a ib i move os bits para a bit; 0 direita, discartes bit da extrema-direita e se unsigned atribui 0 Precedncia 8

^ ~ << >>

7 14 11 11

Operaes Lgicas sobre Nvel de Bit


& 0 1 0 0 0 1 0 1 | 0 1 0 0 1 1 1 1 ^ 0 1 0 0 1 1 1 0 ~ 0 1 1 0

Operadores bit a bit &, | e ^ realizar operaes lgicas sobre os pares apropriado de bits de seus operandos. Operador ~ complementa cada bit do seu operando. Por exemplo:

212

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
0x1234 e 0x5678 / * 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 / / * Igual a 0x1230 * /

CAPTULO 6

Referncia da Linguagem

Nota: O operador & tambm pode ser um operador de referncia de ponteiro. Consulte os ponteiros para mais informaes.

Shift Operadores bit a bit

Operadores binrios << e >> mover os bits do operando esquerda por uma srie de poes especificado pelo operando da direita, esquerda ou direita, respectivamente. Operando direito tem que ser positivo. Com o deslocamento esquerda (<<), bits esquerda so descartados e"Novo" bits direita so atribudos zeros. Assim, deslocando operando sem sinal para a esquerda n posies equivalente a multiplicando-se por 2n se todos os bits so descartados zero. Isso tambm vlido para operandos assinado Se todos os bits so descartados igual a um bit de sinal.

000.001 << 0x3801 <<

5; 4;

/ * Equivale a 000.040 * / / * Igual a 0x8010, estouro! * /

Com o deslocamento para a direita (>>), extrema-direita bits so descartados e os "Libertado" bits esquerda so zeros atribudos (no caso do operando sem sinal) ou o valor de um bit de sinal (no caso de assinado operando). Mudando operando para a direita por posies n equivalente a dividing-lo por 2n.

0xFF56>> 0xFF56u>>

4; 4;

/ * Equivale 0xFFF5 * / / * Equivale 0x0FF5 * /

Mikr oele ktro nika

- Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

213

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Bitwise versus lgica

No se esquea da diferena de princpio entre a forma como os operadores bit a bit e lgica de trabalho. Por exemplo:
0222222 e 0555555; 0222222 e 0555555 &; ~ 0x1234; ! 0x1234; / * Equivale a 000.000 * / / * Equivale a 1 * / / * Igual * 0xEDCB / / * Igual a 0 * /

Operadores lgicos
Operandos de operaes lgicas so consideradas verdadeiras ou falsas, que diferente de zero ou zero. Os operadores lgicos sempre retornam 0 ou 1. Os operandos em uma expresso lgica deve ser de tipo escalar. Os operadores lgicos & & e | | associam da esquerda para a direita. Lgico operador de negao ! associados da direita para a esquerda. Operador Operao Precedncia

Viso geral sobre operadores lgicos


&& || ! E lgico OR lgico negao lgica

5 4 14

Operadores lgicos

|| 0 x

0 0 1

x 1 1

Precedncia dos operadores lgicos, relacionais e aritmticos foi designado como uma forma de permitir expresses complexas sem parnteses para ter uma expectativa de significado:
c> = '0 '& & c <= '9'; a + 1 == b | |! f (x); / * L: (c> = '0 ') & & (c <= '9') * / / * L: ((a + 1) == b) | | * / ((f (x))!)

E lgico & & retorna 1 se ambas as expresses avaliar a ser zero, caso contrrio

214

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

&& 0 x

0 0 0

x 0 1

0 1

x 0

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

retorna 0. Se a primeira expresso avaliada como false, o segunda expresso no ser avaliados. Por exemplo:
a> b & & c <d / * l como (a> b) & & (c <d) * / / * If (a> b) falso (0), (c <d) no sero avaliadas * /

OU lgico | | retorna 1 se quer de expresso avalia a ser zero, caso contrrio retorna 0. Se a primeira expresso avaliada como verdadeira, a segunda expresso no avaliada. Por exemplo:
a & & b | | c & d & / * l como: (a & & b) | | (c & d &) * / / * If (a & & b) verdadeira (1), * (& c & d) no sero avaliados /

Expresses lgicas e lateral Efeitos


Regra geral sobre expresses lgicas complexas que a avaliao das consecomerciais e executivas pra lgica operandos no exato momento do resultado final conhecido. Por exemPor exemplo, se temos uma expresso a & & b & & c onde um falso (0), ento operandos b e c no sero avaliados. Isso muito importante se b e c so expresses, como possveis efeitos colaterais no vai acontecer!

Lgico versus Bitwise


Esteja ciente da diferena de princpio entre a forma como os operadores bit a bit e lgica de trabalho. Por exemplo:
0222222 e 0555555 0222222 e 0555555 e ~ 0x1234 ! 0x1234 / * Equivale a 000.000 * / / * Equivale a 1 * / / * Igual * 0xEDCB / / * Igual a 0 * /

Mikroelektronika - SOFTWARE E solues de hardware para embutidos mundo

215

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Operador condicional? :

O condicional operador ? : o nico operador ternrio em C. A sintaxe da condioperador internacional :


expresso1? expression2: expression3

A expression1 avaliada primeiro. Se o valor for verdadeiro, ento expression2 avalia e expression3 ignorado. Se expresso1 avaliada como falso, ento expression3 avalia e expression2 ignorado. O resultado ser um valor de expression2 ou expression3 dependendo de qual deles avalia. Nota: O facto de apenas uma dessas duas expresses avaliada muito importante se espera-se que produzem efeitos colaterais! associados operador condicional da direita para a esquerda. Aqui esto alguns exemplos prticos:
/ * Encontrar max (a, b): * / max = (a> b)? a: b; / * Converte pequena carta para o capital: * / / * (Sem parnteses so realmente necessrio) * / c = (c> = 'a' & & c <= 'z')? (C - 32): c;

Regras Operador Condicional


expression1 deve ser uma expresso escalar; expression2 e expression3 deve

obedecer a uma das seguintes regras:

1. Ambas as expresses tm de ser de aritmtica tipo. expression2 e expression3 esto sujeitos s converses aritmticas usuais, que determina o tipo do resultado. 2. Ambas as expresses tm de ser compatveis dos tipos struct ou unio. O resultado tipo um tipo de estrutura ou unio de expression2 e expression3. 3. Ambas as expresses tm de ser de vazio tipo. O tipo resultante nulas. 4. Ambas as expresses devem ser do tipo ponteiro para verses qualificados ou no qualificados de tipos compatveis. O tipo resultante um ponteiro para um tipo qualificado, com todo o tipo qualificadores do tipo apontado por ambas as expresses. 5. Uma expresso um ponteiro, eo outro um ponteiro constante nula. O resultadoo tipo um ponteiro para um tipo qualificado com todos os qualificadores do tipo ponto-tipos ed por ambas as expresses. 6. Uma expresso um ponteiro para um tipo de objeto ou incompleta, eo outro um ponteiro para uma verso qualificados ou no qualificados dos nulas. O tipo resultante
a de

o ponteiro-para-no-vazio expresso.

216

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Operadores de Atribuio

Ao contrrio de muitas outras linguagens de programao, C trata de atribuio de valores como a operao (Representada por um operador) ao invs de instruo.

Operador de atribuio simples


Para uma atribuio de valor comum, um operador de atribuio simples (=) utilizados:
= expresso1 expresso2

A expression1 um objeto (posio de memria) para que o valor de expression2 atribudo. Operando expression1 tem que ser lvalue e expression2 pode ser qualquer expresso. A expresso de atribuio em si no lvalue. Se expression1 e expression2 so de tipos diferentes, o resultado da expression2 sero convertidos para o tipo de expresso1, se for necessrio. Consulte o Tipo Converses para mais informaes.

Operador de atribuio composto


C permite que as atribuies mais COMLEX por meio de operadores de atribuio compostos. A sintaxe dos operadores de atribuio composta so:
op = expresso1 expresso2

onde op pode ser um dos operadores binrios +, -, *, /,%, &, |, ^, <<, ou >>. Assim, temos 10 operadores de atribuio compostos diferentes: + =, -=, *= / =%, =, & =, | ^ =, =, <<= e >> =. Todos eles associam da direita para a esquerda. sepa-Spaces Avaliao operadores compostos (por exemplo, + =) Ir gerar um erro. atribuio composto tem o mesmo efeito que
expresso1 = expresso1 expresso2 op

exceto o lvalue expression1 avaliada apenas uma vez. Por exemplo, expression1 + = expresso2 o mesmo que expresso1 = expresso1 + expression2.

Mikroelektronika - Solues de software e hardware para o mundo embutido

217

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Regulamento de Atribuio

Para ambos os atribuio simples e compostos, os operandos expression1 e expression2 deve obedecer a uma das seguintes regras: 1. expression1 do tipo aritmtica qualificados ou no qualificados e expression2 de aritmtica tipo. 2. expression1 tem uma verso qualificados ou no qualificados do tipo de estrutura ou unio compatvel com o tipo de expression2. 3. expression1 e expression2 so ponteiros para as verses qualificados ou no qualificados de tipos compatveis eo tipo apontado pelo esquerdo tem todos os qualificadores do tipo apontado pela direita. 4. Quer expression1 ou expression2 um ponteiro para um ou tipo de objeto incompleto eo outro um ponteiro para uma verso qualificados ou no qualificados de vazio. O tipo de apontado pela esquerda tem todos os qualificadores do tipo apontado pelo direito. 5. expression1 um ponteiro e expression2 um ponteiro constante nula.

Operador sizeof
O operador unrio prefixo sizeof retorna um inteiro que representa a constante tamanho do espao de memria (em bytes) usado pelo seu operando (determinado pelo seu tipo, com algumas excees). O operador sizeof pode apanhar um identificador de tipo ou uma expresso unrio como um operando. Voc no pode usar sizeof com expresses do tipo de funo, tipos incompletos, parnteses os nomes de tais tipos, ou com lvalue que designa um objeto campo de bits.

Sizeof Aplicada Expresso


Se aplicada a expresso, o tamanho de um operando determinado sem avaliar a expresso (e, portanto, sem efeitos colaterais). O resultado da operao ser o tamanho do tipo de resultado da expresso.

Sizeof Aplicada ao tipo

Se aplicada a um tipo de identificador, sizeof retorna o tamanho do tipo especificado. A unidade para o tamanho do tipo sizeof (char) o que equivale a um byte. A operao tamanho de (char) d o resultado 1, se char assinado ou no assinado. Assim:
sizeof (char) sizeof (int) sizeof (unsigned long) sizeof (float) /* /* /* /* retorna retorna retorna retorna * * 4 * 4 * 1 2 / / / /

218

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Quando o operando um parmetro do tipo no-matriz, o resultado o nmero total de bytes na matriz (em outras palavras, um nome de matriz no convertido para um tipo de ponteiro):
int i, j, uma [10]; ... j = sizeof (a [1]); / * J = sizeof (int) = 2 * / / * I = 10 * sizeof (int) = 20 * / i = sizeof (a); / * Para obter o nmero de elementos em um array * / num_elem int = i / j;

Se o operando um parmetro declarado como tipo de matriz ou um tipo de funo, sizeof d o tamanho do ponteiro. Quando aplicada s estruturas e aos sindicatos, sizeof d a nmero total de bytes, incluindo qualquer preenchimento. O operador sizeof no pode ser aplicada a uma funo.

EXPRESSO

A expresso uma seqncia de operadores, operandos e pontuadores que especifica um computao. Formalmente, as expresses so definidas recursivamente: subexpresses pode ser aninhados sem limite formal. No entanto, o compilador apresentar um erro de falta de memria se no possvel compilar uma expresso que muito complexo. Em ANSI C, o expresses primrias so: constante (tambm referida como literal), identiFier, e (expresso), definido de forma recursiva. As expresses so avaliadas de acordo com uma converso de certos agrupamentos, associativity e regras de precedncia, o que depende dos operadores utilizados, presena de parenteses e tipos de dados dos operandos. A precedncia ea associatividade dos Os operadores esto resumidas no Operador de Precedncia e associatividade. O caminho operandos e subexpresses so agrupados no necessariamente especificar o real ordem em que so avaliados pelo mikroC PRO para a PIC. As expresses podem produzir lvalue, rvalue, ou nenhum valor. Expresses podem causar efeitos secundrios efeitos se produzem um valor ou no.

Vrgula Expresses
Uma das especificidades do C que ela permite o uso da vrgula como um operador de seqncia para chamada forma expresses vrgula ou seqncias. expresso Vrgula uma vrgula lista de expresses delimitados - formalmente tratado como uma nica expresso para que ele possa ser utilizado em locais onde a expresso esperado. A seguinte seqncia:
expression 1, expression_2;

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

219

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

resultados na esquerda para a direita avaliao de cada expresso, com o valor eo tipo de expression_2 dando o resultado da expresso completa. Resultado da expression_1 descartado. vrgula operador binrio (,) tem a prioridade mais baixa e associados da esquerda para a direito, de modo que a, b, c o mesmo que (A, b), c Isto permite escrever seqncias com qualquer nmero de expresses:
expression_1, expression_2, ... expression_n;

o que resulta na avaliao da esquerda para a direita de cada expresso, com o valor e tipo de expression_n dando a resultado da expresso inteira. Os resultados de outras expresses so descartados, mas o seu (possvel) efeito colateral acontecem. Por exemplo:
resultado = (a, b = 5 / = 2, C + +); / * Retorna preincremented valor da varivel c, mas tambm intializes a, b divide por 2 e incrementos de c * / resultado = (x = 10, y = x + 3, x -, z -= x * 3 - - y); / * Retorna calculado o valor da varivel z, e tambm calcula x * e y /

Nota

No confunda operador vrgula (seqncia operadora) com pontuador vrgula que separa os elementos em um lista de funes e listas de discusso Inicializador. Para evitar ambivocos com vrgulas no argumento da funo e lista de inicializador, use parnteses. Para exemplo,
funo (i, (j = 1, j + 4), k);

chama a funo func com trs argumentos (i, 5, k), e no quatro.

220

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

DEMONSTRAES
Demonstraes especificar um fluxo de controle como o programa executa. Na ausncia de Ir especficos e seleo declaraes, os comandos so executados em seqncia na ordem de apario no cdigo-fonte. As declaraes podem ser divididos em: - Rotulado Demonstraes - Expresso Demonstraes - Instrues de Seleo - Instrues iterao (Loops) - Ir Demonstraes - Declaraes compostas (blocos)

Rotulado Demonstraes
Cada instruo em um programa podem ser rotulados. Um rtulo um identificador adicionado antes a declarao como esta:
label_identifier: instruo;

No h nenhuma declarao especial de uma etiqueta - apenas "Tags" a declarao.


label_identifier tem escopo de uma funo e no rtulo do mesmo no pode ser redefinido no

mesma funo. Os rtulos tm o seu prprio espao: etiqueta de identificao pode corresponder a qualquer outro identificador no o programa.

A declarao pode ser rotulado por duas razes: 1. O rtulo identificador serve como meta para a instruo goto incondicional, 2. O rtulo identificador serve como meta para a instruo switch. Para este efeito, apenas caso e padro demonstraes rotulados so utilizados:
caso a expresso constante: instruo default: declarao

Mikroelektronika - Solues de software e hardware para o mundo embutido

221

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Expresso Demonstraes

Qualquer expresso seguido por um ponto e vrgula faz uma declarao de expresso:
expresso;

A mikroC PRO para PIC executa uma instruo de expresso atravs da avaliao da expresso. Todos os efeitos colaterais desta avaliao sejam concludas antes do prximo instruo inicia a execuo. A maioria das declaraes so expresso de atribuio do Estado mentos ou chamadas de funo.

A declarao de nulidade um caso especial, constitudo por um nico ponto e vrgula (;). O nulo declarao no faz nada e, portanto, til em situaes onde o mikroC PRO para PIC sintaxe espera uma declarao, mas o programa no precisa de um. Por exemplo, uma declarao de nulidade comumente usado em "Vazio" loops:
para (; Q * + + * p = + +;); / * corpo deste loop um comando nulo * /

Instrues de Seleo
Seleo ou declaraes de controle de fluxo de selecionar um dos cursos alternativos de ao por testes de determinados valores. Existem dois tipos de declaraes de seleo: se switch

Se a Declarao
A se declarao usada para implementar uma instruo condicional. A sintaxe da se afirmao :
se (Expresso) [statement1 mais statement2]

Se expresso avalia a verdade, statement1 executa. Se declarao falsa, statement2 executa. A expresso deve ser avaliada como um valor integral; outras sbio, a condio mal formado. Parnteses em torno da expresso so obrigary. A mais palavra-chave opcional, mas no h indicaes podem vir entre se e mais.

222

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Instruo if aninhada
Nested se demonstraes requerem maior ateno. A regra geral que a nested condicionais so analisados a partir do mais ntimo condicional, com cada mais vinculado ao mais prximo disponvel se em sua esquerda:
se (Expresso1) statement1 else if (Expression2) se (Expression3) statement2 mais instruo3 / * Este pertence: se * (expression3) / mais statement4 / * Este pertence: se * (expression2) /

Nota
# If e # Else declaraes de pr-processamento (Directivas) semelhante ao se e mais

declaraes, mas tm efeitos muito diferentes. Eles controlam o que as linhas do arquivo de origem so compilada e que so ignorados.

Switch Demonstraes
A switch declarao usada para passar o controle para um ramo do programa especfico, com base em uma determinada condio. A sintaxe da switch afirmao :
switch (Expresso) { caso constante-expression_1: statement_1; . . . caso expression_n constante: statement_n; padro [ : Declarao;] }

Primeiro, o expresso (Condio) avaliada. A switch declarao, em seguida, combora la a todos os disponveis constante, as seguintes expresses a palavra-chave caso. Se um
jogo

for encontrado, switch passa o controle para que a adequao caso fazendo com que o declarao foltes da partida avalia. Note-se que constantes expresses de deve avaliar a inteiro. No possvel ter duas mesmo expresses constantes avaliar a o mesmo valor. Parnteses em torno expresso so obrigatrios. Ao encontrar uma correspondncia, o fluxo do programa continua normalmente: as instrues a seguir ser executado de forma natural, independentemente da possvel caso etiqueta. Se nenhum caso satisfaz a condio, a padro caso avalia (se o rtulo padro especicados).

Por exemplo, se uma varivel i tem valor entre 1 e 3, a opo seguinte seria www.mecatronicadegaragem.blogspot.com Mikroelektronika - Solues de software e hardware para o mundo embutido

223

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
sempre devolv-lo como 4:
switch caso caso caso } (I) { 1: i + +; 2: i + +; 3: i + +;

Para evitar a avaliao 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 varivel fase com apenas Trs estados diferentes (0, 1 ou 2) e uma funo correspondente (evento) para cada uma dessas Estados. Isto como ns poderamos mudar o cdigo para o appopriate rotina:
switch (Fase) { caso 0: Lo (); break; caso 1: Mid () break; caso 2: Oi () break; caso: Mensagem ("Estado invlido!"); }

Nested Switch
Condicional switch declaraes podem ser aninhados - rtulos caso e padro so, ento, atribudo ao mais profundo que encerram switch declarao.

Iterao Demonstraes (Loops)


instrues de iterao de loop permite um conjunto de instrues. H trs formas de iterdemonstraes rao na mikroC PRO para PIC: enquanto fazer para

Enquanto a Declarao
A enquanto palavra-chave usado para iterar condicionalmente um comunicado. A sintaxe da enquanto afirmao :
enquanto (Expresso) instruo

A declarao executa repetidamente at que o valor de expresso falsa. O teste ocorre antes declarao executado. Assim, se expresso avalia a falsa

224

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

na primeira passagem, o loop no executado. Note que os parnteses em torno de expresSion so obrigatrios. Aqui est um exemplo de clculo do produto escalar de dois vetores, usando o enquanto declarao:
int s = 0, i = 0; enquanto (I <n) { s + = a [i] * b [i]; i + +; }

Note que o corpo do lao pode ser nulo declarao. Por exemplo:
enquanto (Q * + + * p = + +);

Do Declarao
A fazer instruo executada at que a condio se torne falsa. A sintaxe da fazer afirmao :
fazer declarao enquanto (Expresso);

A declarao executado repetidamente enquanto o valor de expresso permanece diferente de zero. A expresso avaliada aps cada iterao, portanto, o loop ser executado declarao de pelo menos uma vez. Parnteses em torno expresso so obrigatrios. Note que no a estrutura de controle apenas em C, que expressamente termina com ponto e vrgula (;). Outras estruturas com controlo final declarao, o que significa que eles
implicitamente

incluir um ponto e vrgula ou chave de fechamento. Aqui est um exemplo de clculo do produto escalar de dois vetores, usando o fazer Estado mento:
s = 0, i = 0; fazer { s + = a [i] * b [i]; i + +; } enquanto (I <n);

Mikroelektronika - Solues de software e hardware para o mundo embutido

225

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Para a declarao

A para declarao implementa um loop iterativo. A sintaxe da para declarao o seguinte:


para (Expresso [init]; ] Sion) declarao Expresso [condio]; incremento [expres-

Antes da primeira iterao do loop, init-expresso define as variveis de partida para do loop. Voc no pode passar em declaraes init-expresso.
condio de expresso verificada antes da da primeira entrada do bloco; declarao executado repetidamente at que o valor de condio de expresso falsa. Depois

cada iterao do loop, expresso de incremento incrementos de um contador de loop. ConConsequentemente, i + + funcionalmente o mesmo que + + I. Todas as expresses so opcionais. Se condio de expresso deixado de fora, assumido que ser sempre verdadeira. Assim, "Vazio" para afirmao comumente usado para criar um fimmenos loop em C:
para (;) Declarao

A nica maneira de quebrar este ciclo por meio do quebrar declarao. Aqui est um exemplo de clculo do produto escalar de dois vetores, usando o para Estado mento:
para (S = 0, i = 0; i <n, i + +) s + = a [i] * b [i];

No existe outra maneira de fazer isso:


para (S = 0, i = 0; i n <; s + = a [i] * b [i], i + +); * Feio / / * Vlido, mas

mas considerado um estilo de programao ruim. Embora legal, o clculo do montante no deve ser uma parte da expresso de incremento, porque no est em o servio da rotina de loop. Note que a declarao nula (;) usado para o corpo do lao.

226

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Ir Demonstraes
A instruo de salto, quando executado, transfere o controle incondicionalmente. H quatro tais declaraes no mikroC PRO para PIC: quebrar continuar goto retorno

Break e continue
Ruptura de Declarao
s vezes necessrio parar o loop dentro de seu corpo. Use o quebrar declarao dentro de loops para passar o controle para a primeira instruo seguinte ao interior switch, para, ao mesmo tempo, ou fazer bloco.
quebrar comumente utilizada na switch instrues para impedir a sua execuo sobre o

resultado positivo em primeiro lugar. Por exemplo:


switch (Estado) { caso 0: Lo (); break; caso 1: Mid (); break; caso 2: Oi (); break; default: Mensagem ("Estado invlido!"); }

Continuar a Declarao

A continuar declarao no prazo de malhas usada para "Ignorar a ciclo ". Ele passa o controle ao fim do fim mais profundo que encerram cinta pertencente a uma construo de loop. Em que ponto a condio de continuao do lao reavaliada. Isso significa que contiue exige a prxima iterao se a continuao do lao condio for verdadeira. Especificamente, o continuar declarao dentro do loop vai saltar para a posio marcadao, 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 - Solues de software e hardware para o mundo embutido

227

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Goto Declarao

A goto declarao usada para salto incondicional para um rtulo local - para mais inforinformaes nos rtulos, se referem a declaraes identificadas. A sintaxe da goto afirmao :
goto label_identifier;

Isto ir transferir o controle para a localizao de um selo local especificado pelo label_identiFier. A label_identifier tem que ser um nome da etiqueta na mesma funo em que o goto declarao . A linha goto pode vir antes ou depois do rtulo.
goto usado para sair de qualquer nvel das estruturas de controle aninhadas, mas ele no pode

ser usado para pular em um bloco, enquanto saltando inicializaes que bloco- por exemplo, saltao no corpo do lao, etc O uso de goto declarao geralmente desencorajado, pois praticamente todos os algoritmo pode ser realizado sem ele, resultando em programas estruturados legveis. Uma possvel aplicao da goto afirmao sair de estruturas de controle aninhadas profundamente:
para (...) { para (...) { ... se (Desastre) goto Erro; ... } } . . . Erro: / * erro * cdigo de tratamento /

Instruo Return
A retorno declarao usada para sair da funo atual de volta para o chamado rotina, opcionalmente retornar um valor. A sintaxe :
retorno [Expresso];

Isto ir avaliar expresso e retornar o resultado. valor retornado ser autoautomaticamente convertidos para o tipo de funo esperado, se necessrio. A expresso opcional, se omitido, a funo retornar um valor aleatrio da memria. Nota: A declarao retorno em funes do vazio tipo no pode ter expresSion - na verdade, a retorno declarao pode ser omitido por completo, se o ltimo estadomento no corpo da funo.

228

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Declaraes compostas (blocos)

A instruo composta, ou bloco, uma lista (possivelmente vazia) de declaraes em anexo em chaves correspondentes {}. Sintaticamente, o bloco pode ser considerado como um nico declarao, mas tambm desempenha um papel no escopo de identificadores. Um identificador declarado dentro do bloco tem um alcance a partir do ponto da declarao e termina no chave de fechamento. Os blocos podem ser aninhados em qualquer profundidade at aos limites da memria. Por exemplo, o para loop espera uma declarao em seu corpo, para que possamos passar um instruo composta:
para (I = 0; i <n, i + +) { int temp = a [i]; a [i] = b [i]; b [i] = temp; }

Note que, ao contrrio de outras declaraes, instrues compostas no terminam com ponto e vrgula (;), Ou seja, nunca h um ponto e vrgula aps o chave de fechamento.

PreProcessor
Pr-processador um processador de texto integrado que prepara o cdigo fonte para compilao. Preprocessor permite: - A insero de texto de um arquivo specifed at um certo ponto no cdigo (veja o arquivo de incluso), - Substituio especficas smbolos lexical com outros smbolos (veja Macros), - Compilao condicional que condicionalmente inclui ou omite partes do cdigo (ver Compilao Condicional).

Note que o pr-processador de texto analisa a nvel simblico, no a nvel de carcter individual. Preprocessor controlado por meio de directivas de pr-processamento e de pr-processamento operadores.

Preprocessor directivas
Toda a linha no cdigo-fonte com um lder # tida como um pr-processamento directiva (Ou linha de controlo), a menos # est dentro de uma seqncia literal, em um carter permanente, ou incorporado em um comentrio. A inicial # pode ser precedido ou seguido de um espao (excluindo novas linhas). A directiva nula consiste de uma linha contendo o caractere nico #. Esta linha sempre ignorados. directivas Preprocessor so geralmente colocados no incio do cdigo-fonte, mas

www.mecatronicadegaragem.blogspot.com Mikroelektronika - Solues de software e hardware para o mundo embutido

229

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

eles podem aparecer legalmente em qualquer ponto do programa. A mikroC PRO para PIC prdirectivas de pr-processamento do processador detecta e analisa as fichas embutido elas. A directiva est em vigor a partir de sua declarao at o final do arquivo do programa. Aqui est uma directiva comumente utilizados:
# Include <math.h>

Para mais informaes sobre arquivos, incluindo com o # Include directiva, se referem ao arquivo Incluso. A mikroC PRO para PIC suporta directivas de pr-processamento padro:
# # # # # # (Directiva null) Define Elif Else Endif Erro # # # # # # If Ifdef Ifndef Include Line Undef

Nota: Por enquanto pragma Funcall s suportada.

Continuao de linha com contrabarra (\)


Para quebrar directiva em vrias linhas terminar a linha com uma barra invertida (\):
# Define MACRO Esta directiva continua a \ a linha a seguir.

230

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Macros
As macros fornecem um mecanismo de substituio do token, antes da compilao, com ou sem um conjunto de formal, os parmetros de funo semelhante.

Definindo macros e Expanses Macro


A # Define directiva define uma macro:
# Define macro_identifier <token_sequence>

Cada ocorrncia de macro_identifier no cdigo fonte a seguir esta linha de controle ser substitudo na posio original com o possivelmente vazio token_sequence (H algumas excees, que so discutidos mais tarde). Essas substituies so conhecidos como macro expansions.token_sequence s vezes chamado o corpo de uma macro. Um token vazio seqncia de resultados na remoo de cada macro afetados identificador a partir do cdigo fonte. Nenhum ponto e vrgula (;) necessrio para finalizar uma directiva de pr-processamento. Qualquer personagem encontrado na seqncia token, incluindo vrgulas, aparecer em uma expanso de macrosion.token_sequence termina no encoun primeira linha no barra invertida novo registado. Qualquer seqncia de espaos, incluindo comentrios na seqncia token, substitudo por um caractere de espao nico.

Depois de cada indivduo expanso macro, uma nova verificao feita do recm-expandido texto. Isso permite a possibilidade de utilizar macros aninhados: o texto expandido pode conter identificadores de macro que esto sujeitos substituio. No entanto, se a macro se expande em algo que se parece com uma directiva de pr-processamento, directiva, tal no ser recocida pelo pr-processador. Todas as ocorrncias do macro identificador encontrado dentro literal cordas, constantes de caracteres, ou comentrios no cdigo-fonte no ser ampliada. A macro no ser expandido durante sua expanso (assim # Define macro macro no ir expandir-se indefinidamente). Aqui est um exemplo:
/ * Aqui esto algumas macros simples: * / # Define err_msg "Fora do alcance!" # Define EVERLOOP para (;) / * Que ns poderamos usar assim: * / main () { EVERLOOP { ... se (Erro) {Lcd_Out_Cp (err_msg); break;} ... } }

Mikr oele

ktronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
231

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

A tentativa de redefinir uma macro j est definido identificador resultar em uma advertncia a menos que uma nova definio exatamente a mesma definio de token-a-smbolo como o actual um. A estratgia preferida quando as definies podem existir em outros arquivos de cabealho to seguinte forma:
# Ifndef BLOCK_SIZE # Define BLOCK_SIZE 512 # Endif

A linha mdia ignorada se BLOCK_SIZE est definido, se BLOCK_SIZE atualmente no definidos, a linha do meio chamado para defini-lo.

Macros com parmetros


A sintaxe a seguir usada para definir uma macro com parmetros:
# Define macro_identifier (<arg_list>) <token_sequence>

Note que no pode haver espao em branco entre macro_identifier e "(". A opcional arg_list uma seqncia de identificadores separados por vrgulas, como os argulista desenvolvimento de uma funo C. Cada vrgula delimitado identificador tem o papel de um formal argumento ou espao reservado. Tais macros so chamados por escrito
macro_identifier (<actual_arg_list>)

no cdigo-fonte subseqentes. A sintaxe idntica de uma chamada de funo; na verdade, muitos biblioteca padro C "Funes" so implementadas como macros. No entanto, existem algumas importantes diferenas semnticas.

O opcional actual_arg_list deve conter o mesmo nmero de delimitar-vrgula ed seqncias token, conhecido como argumentos reais, como os encontrados na arg_list formal de o # Define linha - deve haver um argumento real para cada argumento formal. Um erro ser relatado se o nmero de argumentos em duas listas no a mesma. Uma macro resultados pem em dois conjuntos de substituies. Primeiro, o macro eo identificador argumentos parntese fechado substituda pela seqncia de token. Em seguida, qualquer forargumentos mal que ocorre na seqncia de token so substitudos pelos correspondentes argumentos reais constantes actual_arg_list. Tal como com simples definies de macro, rescanning ocorre para detectar quaisquer identificadores macro incorporada elegveis para a expanso. Aqui est um exemplo simples:

/ * Um macro simples que retorna maior de seus 2 argumentos: * /

www.mecatronicadegaragem.blogspot.com

232

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
# 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) * /

CAPTULO 6

Idioma Referncia

muito recomenda-se colocar parnteses em torno de cada argumento na macro corpo a fim de evitar possveis problemas com a precedncia do operador.

Indefinida Macros
A # Undef diretiva usada remover a definio de uma macro.
# Undef macro_identifier

A directiva # Undef separa qualquer seqncia anterior token macro_identifier, a definio de macro foi esquecido, e macro_identifier indefinido. Nenhuma expanso macro ocorre dentro do # Undef linhas.

O estado de ser definido ou indefinido uma propriedade importante de um identificador independentemente da definio atual. A # Ifdef e # Ifndef directivas condicionais, usado para testar se qualquer identificador est definido ou no, oferecer um mecanismo flexvel de nismos para controlar vrios aspectos de uma compilao. Depois de um macro identificador foi definido, ele pode ser redefinido com # Define,
utilizando

a seqncia igual ou diferente do token.

Incluso de arquivos
A directiva de pr-processamento # Include puxa arquivos de cabealho (extenso. h) no cdigo-fonte. No confie na pr-processador para incluir os arquivos fonte (extenso) - veja Adicionar / Remover arquivos do projeto para obter mais informaes. A sintaxe da # Include directiva tem dois formatos:
# Include <header_name> # Include "header_name"

O pr-processador elimina a # Include linha e substitui-lo com todo o texto um arquivo de cabealho em que ponto do cdigo-fonte. A colocao de # Include no podeportanto influenciar o alcance ea durao de qualquer identificadores no arquivo includo. A diferena entre estes dois formatos reside na busca algoritmo empregado no Mikroelektronika - Solues de software e hardware para o mundo embutido

233

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
tentar localizar o arquivo de incluso.

Se o # Include diretiva usada com o <header_name> verso, a pesquisa feitas sucessivamente em cada um dos seguintes locais, nesta ordem: 1. o mikroC PRO para PIC pasta de instalao > "Incluir" pasta 2. usurio personalizada caminhos de pesquisa A "Header_name" especifica uma verso fornecida pelo usurio incluem arquivos, o mikroC PRO para o PIC ir procurar o arquivo de cabealho nas seguintes posies, nesta ordem: 1. o pasta do projeto (pasta que contm o arquivo de projeto . Mcppi) 2. PRO o mikroC para PIC pasta de instalao > "Incluir" pasta 3. usurio personalizada caminhos de pesquisa

Caminho explcito
Ao colocar um caminho explcito em header_name, somente esse diretrio ser
pesquisado. Para

exemplo:
# Include "C: \ my_files \ test.h"

Nota
H tambm uma terceira verso do # Include directiva, raramente usado, o que pressupe que nem < nem " aparecer como o primeiro caractere no-branco seguinte
# Include: # Include macro_identifier

assume que a definio de macro que ir expandir macro identificador em um vlido nome do cabealho delimitada com um <header_name> ou "Header_name" formatos existe.

234

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

Preprocessor Operadores
A # (Sinal de libra) uma diretiva de pr-processamento quando ele ocorre como o primeiro no-branco caractere de espao em uma linha. Alm disso, # e # # proceder substituio do operador e mergo durante a fase de pr-processamento de digitalizao.

Operador #
No pr-processador C, uma sequncia de caracteres entre aspas considerado um smbolo e seu contedo no analisada. Isto significa que os nomes de macro dentro de aspas no so expandida.

Se voc precisa de um argumento real (a seqncia exata de caracteres entre aspas), como resultado da pr-processamento, use o # operador no corpo da macro. Ele pode ser colocado em frente de um argumento formal na definio de macro para converter o argumento real para aps uma seqncia de substituio. Por exemplo, vamos ter macro LCD_PRINT para imprimir nome da varivel e valor em LCD:
# Define LCD_PRINT (val) Lcd_Custom_Out_Cp (# val ":"); \ Lcd_Custom_Out_Cp (IntToStr (val));

Agora, o cdigo a seguir,


LCD_PRINT (temp)

ser pr-processada para isso:


Lcd_Custom_Out_Cp ("temp": "); Lcd_Custom_Out_Cp (IntToStr (temp));

Operador # #
Operador # # usado para colagem token. Dois smbolos podem ser colada (fundidas), juntamente colocando # # entre eles (mais branco opcional em ambos os lados). Os prprocessador remove espaos em branco e # #, Combinando as fichas separadas em uma nova token. Isto comumente usado para a construo de identificadores. Por exemplo, veja a definio de macro SPLICE para a colagem de dois smbolos em um identificador:
# Define SPLICE (x, y) x _ # # # # y

Agora, a chamada SPLICE (cnt, 2) ir se expandir para o identificador cnt_2. Mikr oele ktro

nika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
235

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem
Nota

A mikroC PRO para PIC no suporta o mtodo mais antigo nonportable de token colar com (L / ** / r).

Compilao condicional
directivas de compilao condicional so normalmente utilizados para fazer programas de fonte fcil mudana e fcil de compilar em ambientes de execuo diferentes. O mikroC PRO para o PIC suporta compilao condicional, substituindo a fonte apropriadalinhas de cdigo com uma linha em branco. Todas as diretivas de compilao condicional deve ser concluda na fonte ou no arquivo de incluso em que eles comearam.

Directivas # if, # elif, # else e # endif


O condicional directivas # If, # elif, # else, e # Endif trabalho muito semelhante ao comum demonstraes C condicional. Se a expresso que voc escreve depois # If tem uma valor diferente de zero, o grupo logo aps a linha # If directiva retida na a unidade de traduo. A sintaxe :
# If constant_expression_1 <section_1> [# Elif constant_expression_2 <section_2>] ... [# Elif constant_expression_n <section_n>] [# Else <final_section>] # Endif

Cada # If directiva em um arquivo de origem devem ser acompanhados por um fechamento # Endif directiva. Qualquer nmero de # Elif directivas podem aparecer entre # If e # Endif directivas, mas no mximo um # Else directiva permitido. A # Else directiva, se houver, deve ser o Directiva com a ltima antes # Endif.
sees pode ser qualquer texto do programa que tem significado para o compilador ou

pr-processamento. O pr-processador seleciona uma nica seo, atravs da avaliao constant_expression fol-

236

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 6

Referncia da Linguagem

tes cada # If ou # Elif directiva at que encontre um verdadeiro (diferente de zero), expresso constanteSion. As expresses constantes esto sujeitas a expanso de macro. Se todas as ocorrncias da expresso constante so falsas, ou se no # Elif directivas aparecem, o pr-processador selecciona o bloco de texto aps o # Else clusula. Se o # Else clusula omitido e todas as instncias do constant_expression na # If bloco so falsas, no seo selecionados para posterior processamento. Qualquer seo processados podem conter clusulas adicionais condicional, aninhados em qualquer profundidade. Cada aninhadas # Else, # elif, ou # Endif directiva pertence a mais prxima da anterior o # If directiva. O resultado lquido da situao anterior que o cdigo apenas uma seo (Possivelmente vazia) ser compilado.

Directivas # ifdef e # ifndef


A # Ifdef e # Ifndef diretrizes podem ser usadas em qualquer lugar # If podem ser utilizados e eles podem testar se um identificador actualmente definida ou no. A linha
# Ifdef identificador

tem exatamente o mesmo efeito que # Se um se identificador est definido e as mesmo efeito que # Se 0 se identificador atualmente indefinida. A outra directiva, # Ifndef, verdadeiros testes para o"No definida" condio, produzir o resultado oposto. A sintaxe que se segue depois da # If, # elif, # else, e # Endif. Um identificador definido como NULL considerada como definida.

Mikroelektronika - Solues de software e hardware para o mundo embutido

237

CAPTULO 6

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Referncia da Linguagem

238

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

CAPTULO

mikroC PRO para PIC

Bibliotecas
mikroC PRO para PIC prev um conjunto de bibliotecas que simplificam a inicializao e uso de microcontroladores PIC complacente e seus mdulos: Utilize o Gestor de Biblioteca para incluir mikroC PRO para PIC Bibliotecas em seu projeto.

239

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Bibliotecas Hardware PIC-especficas
- Biblioteca ADC - CAN Biblioteca - Biblioteca CANSPI - Biblioteca Compact Flash - EEPROM Biblioteca - Ethernet PIC18FxxJ60 Biblioteca - Biblioteca Memria Flash - Biblioteca LCD Grfico - Biblioteca I2C - Teclado Biblioteca - Biblioteca LCD - Biblioteca de cdigo Manchester - Libray Muliti Media Card - OneWire Biblioteca - Biblioteca Expander Porto - Imprimir Biblioteca - PS / 2 Biblioteca - PWM Biblioteca - RS-485 Biblioteca - Software Biblioteca I2C - Biblioteca SPI Software - Biblioteca UART Software - Biblioteca de Som - Biblioteca SPI - Biblioteca Ethernet SPI - Biblioteca Grfica SPI LCD - Biblioteca SPI LCD - SPI LCD8 Biblioteca - SPI Biblioteca Grfica T6963C LCD - Biblioteca Grfica T6963C LCD - UART Biblioteca - Biblioteca USB HID

Padro ANSI C Bibliotecas


- ANSI - ANSI - ANSI - ANSI C C C C Ctype Biblioteca Biblioteca de Matemtica Stdlib Biblioteca String Biblioteca

Diversos Bibliotecas
- Biblioteca Button - Converses Biblioteca - Sprint Biblioteca - Setjmp Biblioteca - Time Library - Trigonometria Biblioteca Veja tambm incorporada nas rotinas.

240

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

BIBLIOTECA DEPENDENCIES
Alguns usam bibliotecas (depende) funo e / ou variveis, conbalces de definidos em outras bibliotecas. Imagem abaixo mostra claramente representao sobre essas dependncias CIES. Por exemplo, usa SPI_Glcd Glcd_Fonts e Port_Expander biblioteca que usa uma biblioteca SPI. Isto significa que se voc verificar SPI_Glcd biblioteca em Manag-Biblioteca er, todas as bibliotecas de que ela depende sero verificados tambm.

Informaes relacionadas: gerente de Biblioteca, PIC Bibliotecas Mikroelektronika - Solues de software e hardware para o mundo embutido

241

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas HARDWARE BIBLIOTECAS


- Biblioteca ADC - CAN Biblioteca - Biblioteca CANSPI - Biblioteca Compact Flash - EEPROM Biblioteca - Ethernet PIC18FxxJ60 Biblioteca - Biblioteca Memria Flash - Biblioteca LCD Grfico - Eu Biblioteca C - Biblioteca do teclado - Biblioteca Lcd - Biblioteca de cdigo Manchester - Biblioteca Multi Media Card - OneWire Biblioteca - Biblioteca Expander Porto - Imprimir Biblioteca - PS / 2 Biblioteca - PWM Biblioteca - RS-485 Biblioteca - Software I Biblioteca C - Biblioteca SPI Software - Biblioteca UART Software - Biblioteca de Som - Biblioteca SPI - Biblioteca Ethernet SPI - Biblioteca Grfica SPI Lcd - Biblioteca SPI Lcd - SPI Lcd8 Biblioteca - SPI Biblioteca Grfica T6963C Lcd - Biblioteca Grfica T6963C Lcd - UART Biblioteca - Biblioteca USB HID

242

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

ADC BIBLIOTECA
ADC (Conversor Analgico Digital) mdulo est disponvel com um nmero de modelos PIC MCU. Biblioteca funo ADC_Read includo para oferecer-lhe confortveis trabalhar com o mdulo.

ADC_Read
Prottipo Retorna
no assinado ADC_Read (unsigned short canal);

10-bit sem assinatura valor lido do canal especificado. Inicializa mdulo PIC ADC interno para trabalhar com clock RC. Relgio

Descrio

determina o perodo de tempo necessrio para a realizao de converso AD (min 12TAD). Parmetro canal representa o canal a partir do qual o valor analgico a adquiridos. Consulte a ficha tcnica apropriada para o canal-a-pino de t Nada.
no assinado tmp; ... tmp = ADC_Read (2); / / Ler o valor analgico do canal 2

Requer Exemplo

Exemplo Biblioteca
Este exemplo de cdigo l o valor analgico do canal 2 e apresenta-lo no PORTB e PORTC.
unsigned int temp_res; vazio main () { ANSEL = 0x04; TRISA = 0xFF; ANSELH = 0; TRISC = 0x3F; TRISB = 0; fazer { temp_res = ADC_Read (2); PORTB = temp_res; PORTC temp_res => 2; } while (1); }

// // // // //

Configure o pino AN2 como analgico PORTA de entrada Configure outras AN pinos como I / O digital Pins RC7, RC6 so sadas PORTB a sada

/ / Obter os resultados de 10 bits da converso AD / / Envia abaixo de 8 bits a PORTB / / Envia 2 bits mais significativos a RC7, RC6

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

243

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Conexo HW

Bibliotecas

ADC conexo HW

CAN BIBLIOTECA
mikroC PRO para PIC fornece uma biblioteca (driver) para trabalhar com o mdulo CAN. CAN um protocolo muito robusto que a deteco de erros e de sinalizao, de autoe confinamento de falhas. dados defeituoso pode e quadros remotas so re-transmitidos autoautomaticamente, semelhante ao da Ethernet.

taxas de transferncia de dados variam de at 1 Mbit / s em distncias de 40m de rede abaixo de 250 Kbit / s em 250 cabos, e pode ir ainda mais baixo em distncias maiores da rede, para baixo a 200Kbit / s, que o bitrate mnimo definido pela norma. Cabos utilizados so pares de fios tranados, e comprimento mximo do cabo de 1000m. CAN suporta dois formatos de mensagens: formato padro, com 11 bits identificador, e Extended format, com 29 bits identificador Nota: CAN Biblioteca apoiada apenas por MCUs com o mdulo CAN. Nota: Consultar o padro CAN CAN sobre a resistncia de terminao de barramento.

244

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
CANSetOperationMode CANGetOperationMode CANInitialize CANSetBaudRate CANSetMask CANSetFilter CanRead CanWrite rotinas a seguir so para uso interno, compilador s: RegsToCANID CANIDToRegs Certifique-se de verificar as constantes podem necessrio para utilizar algumas das funes.

CANSetOperationMode
Prottipo Retorna
vazio CANSetOperationMode (unsigned short modo, unsigned short wait_flag);

Nada. Define CAN para o modo solicitado, ou seja, cpias Modo para CANSTAT. modo Parmetros deve ser um dos CAN_OP_MODE constantes (ver constantes CAN).

Descrio

Parmetro wait_flag deve ser 0 ou 0xFF: Se definido como 0xFF, esta uma chamada de bloqueio - a funo no ser "Retorno" at o modo solicitado est definido. Se for 0, esta uma chamada sem bloqueio. Ele no verifica se o mdulo CAN t d rotinas CAN atualmente suportado apenas por P18XXX8 microcontroladores PIC.

Requer Exemplo

Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que d b CAN CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF);

Mikroelektronika - Solues de software e hardware para o mundo embutido

245

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANGetOperationMode
Prottipo Retorna Descrio Requer Exemplo
unsigned short CANGetOperationMode ();

opmode atual. funo retorna modo de operao atual do mdulo CAN. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que
se (CANGetOperationMode () == _CAN_MODE_NORMAL) {... };

CANInitialize
Prottipo Retorna
vazio CANInitialize (char SJW, BRP char, char PHSEG1, char PHSEG2, char PROPSEG, char CAN_CONFIG_FLAGS);

Nada. Inicializa CAN. Todas as transmisses pendentes so abortadas. Configura mscara de todos os registra a 0 para permitir que todas as mensagens. O modo de configurao definido internamente por essa funo. Aps uma execuo deste modo de funcionamento normal definido. registros de filtro so definidas de acordo com o valor de bandeira:

Descrio

se (CAN_CONFIG_FLAGS & _CAN_CONFIG_VALID_XTD_MSG! = 0) / / Defina todos os filtros para XTD_MSG else if (Config e _CAN_CONFIG_VALID_STD_MSG! = 0) / / Defina todos os filtros para STD_MSG mais / / Definir a metade dos filtros para DST, eo restante para XTD_MSG

Requer

Parmetros: SJW tal como definido no 18XXX8 datasheet (1-4) BRP tal como definido no 18XXX8 datasheet (1-64) PHSEG1 tal como definido no 18XXX8 datasheet (1-8) t l d fi id 18XXX8 d por t (1 8) rotinas podem atualmente apoiada apenas t hP18XXX8 MCUs PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que coninit = & _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

Exemplo

246

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CANSetBoudRate
Prottipo Retorna
vazio CANSetBaudRate (char SJW, char BRP, char PHSEG1, char PHSEG2, char PROPSEG, char CAN_CONFIG_FLAGS);

Nada. Define CAN taxa de transmisso. Devido complexidade do protocolo CAN, voc no pode simplesmente vigor um valor de bps. Em vez disso, use esta funo quando CAN est em modo de configurao. Consulte datasheet para mais detalhes. Parmetros:
SJW tal como definido no 18XXX8 datasheet (1-4) BRP tal como definido no 18XXX8 folha (1-64) PHSEG1 tal como definido no 18XXX8 datasheet (1-8) PHSEG2 tal como definido no 18XXX8 datasheet (1-8)

Descrio

Requer

d fi id 18XXX8 d h (1 funo ser ignorado. CAN deve ser lna configurao modo, caso contrrio, a 8) rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microregulador Troller deve ser conectado ao CAN transceptor (MCP2551 ou similares), que coninit = _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);

Exemplo

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

247

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANSetMask
Prottipo Retorna
vazio CANSetFilter (char CAN_FILTER, tempo valor, char CAN_CONFIG_FLAGS);

Nada. Funo define a mscara de filtragem avanada de mensagens. Dado valor um pouco ajustared aos registos mscara apropriada buffer.

Descrio

Parmetros:
CAN_MASK um dos valores predefinidos constante (ver constantes CAN) valor a mscara de registrar o valor CAN_CONFIG_FLAGS seleciona o tipo de mensagem para filtrar, quer

Requer

CAN deve estar em modo de configurao; caso contrrio, a funo ser ignorada. rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC.
/ / Seta todos os bits de mscara para 1, ou seja, todos os bits filtrados so 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.

Exemplo

CANSetFilter
Prottipo Retorna
vazio CANSetFilter (char CAN_FILTER, tempo valor, char CAN_CONFIG_FLAGS);

Nada. Funo define filtro de mensagens. Dado valor um pouco ajustado para tampo apropriado registros de mscara.

Descrio Parmetros:
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 configurao, caso contrrio, a funo ser ignorado. rotinas podem atualmente suportado apenas por P18XXX8 PIC MCUs. Microcontrolador deve
/ / Set id B1_F1 filtro para 3: CANSetFilter (_CAN_FILTER_B1_F1, 3, _CAN_CONFIG_XTD_MSG);

Exemplo

248

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CanRead
Prottipo Retorna
char CanRead (long * Id, char * dados, char * Datalen, char CAN_RX_MSG_FLAGS *);

Mensagem do buffer de recepo ou zero se nenhuma mensagem de encontrado. Funo l mensagem do buffer de recebimento. Se pelo menos um buffer cheio receber for encontrada, ela extrados e retornado. Se nenhum encontrada, a funo retorna zero. Parmetros:
id a mensagem identificador dados um array de bytes at 8 bytes de comprimento

Descrio

Requer

i t d d recepo possvel. 18 CAN deve estar no modo em que ad rotinas podem atualmente apoiada apenas por P18XXX8 MCUs PIC. Microcontrolador deve ser ligado ao CAN transceptor (MCP2551 ou similar) que conectado ao barramento CAN.
char VN, rx, len, dados [8]; tempo id; / / ... rx = 0; / / ... VN = CanRead (id, dados, len rx);

Exemplo

CanWrite
Prottipo Retorna
unsigned short CanWrite (long id, char * dados, char datalen, char CAN_TX_MSG_FLAGS);

Retorna zero se a mensagem no pode ser na fila (buffer cheio). Se pelo menos um buffer de transmisso vazia encontrada, a funo envia mensagem sobre fila para a transmisso. Se o buffer est cheio, a funo retorna 0. Parmetros: id a mensagem CAN identificador. Apenas 11 ou 29 bits podem ser usadas dependendo tipo de mensagem (padro ou estendida) dados matriz de bytes at 8 bytes de comprimento i d CAN deve estar no modo Normal. d d 1 8 rotinas podem atualmente suportado apenas por P18XXX8 microcontroladores PIC. Microcontrolador deve ser li d tx, dados; t (MCP2551 CAN t i il ) t d b t CAN char
tempo id; / / ... tx = & _CAN_TX_PRIORITY_0 _CAN_TX_XTD_FRAME; / / ... CanWrite (id, dados, 2, TX);

Descrio

Requer

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

249

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CAN Constantes

H um nmero de constantes predefinidas na biblioteca da CAN. Para poder usar o biblioteca de forma eficaz, voc precisa estar familiarizado com estes. Voc pode querer verificar a exemplo, no final do captulo.

CAN_OP_MODE
CAN_OP_MODE constantes definem operao pode modo. 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

Funo

= = = = = =

0xE0, 0x00, 0x20, 0x40, 0x60, 0x80;

/ / Utilize esta opo para acesso opmode

bits

CAN_CONFIG_FLAGS
CAN_CONFIG_FLAGS constantes definem bandeiras relacionadas com a configurao do mdulo

CAN. Funes CANInitialize e CANSetBaudRate esperar que um deles (ou um bit a bit combinao), como seu argumento:
const char _CAN_CONFIG_DEFAULT _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, _CAN_CONFIG_SAMPLE_BIT _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 = 0x04, = 0xFF, = 0xFB, = 0x08, = 0xFF, = 0xF7, = 0x10, = 0xFF, = 0xEF,

/ XXXXXX1X / / XXXXXX0X /

/ XXXXX1XX / / XXXXX0XX /

/ XXXX1XXX / / XXXX0XXX /

/ XXX1XXXX / / XXX0XXXX /

250

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
_CAN_CONFIG_MSG_BITS _CAN_CONFIG_ALL_MSG _CAN_CONFIG_VALID_XTD_MSG _CAN_CONFIG_VALID_STD_MSG _CAN_CONFIG_ALL_VALID_MSG = 0x60, = 0xFF, = 0xDF, = 0xBF, = 0x9F;

CAPTULO 7

Bibliotecas
/ 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 esto relacionadas com bandeiras transmisso de uma mensagem CAN: const char _CAN_TX_PRIORITY_BITS _CAN_TX_PRIORITY_0 _CAN_TX_PRIORITY_1 _CAN_TX_PRIORITY_2 _CAN_TX_PRIORITY_3 _CAN_TX_FRAME_BIT _CAN_TX_STD_FRAME _CAN_TX_XTD_FRAME

= = = = =

0x03, 0xFC, 0xFD, 0xFE, 0xFF,

// // // //

XXXXXX00 XXXXXX01 XXXXXX10 XXXXXX11

= 0x08, = 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 / formulrio para ser usado com CANSendMessage: send_config _CAN_TX_PRIORITY_0 = & _CAN_TX_XTD_FRAME & _CAN_TX_NO_RTR_FRAME; ... CANSendMessage (id, dados, 1, send_config);

Mikroelektronika - Solues de software e hardware para o mundo embutido

251

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CAN_RX_MSG_FLAGS

CAN_RX_MSG_FLAGS so flags relacionados com a recepo da mensagem CAN. Se um bit especial definido; corresponder significado TRUE ou ento 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 invlido mais limpo = 0x20, / / Define se a mensagem XTD mais limpo = 0x40, / / Define se a mensagem RTR mais limpo = 0x80 / / Define se a mensagem foi rgido ware buffer duplo

Voc pode usar AND bit a bit (&) para ajustar os sinalizadores apropriados. Por exemplo:
se (MsgFlag & _CAN_RX_OVERFLOW! = 0) { ... / / Receptor estouro ocorreu. / / Ns perdemos a nossa mensagem anterior. }

CAN_MASK
CAN_MASK constantes definem cdigos mscara. Funo CANSetMask espera que um dos estas como seu argumento: # const char _CAN_MASK_B1 = 0, _CAN_MASK_B2 = 1;

CAN_FILTER
CAN_FILTER constantes definir cdigos de filtro. Funo CANSetFilter espera uma destas como sua

argumento:
const char _CAN_FILTER_B1_F1 _CAN_FILTER_B1_F2 _CAN_FILTER_B2_F1 _CAN_FILTER_B2_F2

= = = =

0; 1, 2, 3 ,

252

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
_CAN_FILTER_B2_F3 = 4, _CAN_FILTER_B2_F4 = 5;

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
Esta uma simples demonstrao de CAN Biblioteca rotinas de uso. Primeiro n inicia a comunicao com o segundo n, enviando alguns dados para o seu endereo. A segundo n responde enviando de volta os dados incrementado em 1. Primeiro n em seguida faz o mesmo e envia os dados incrementado de volta para o segundo n, etc Cdigo para o n CAN primeiro:
unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx buffer de dados char Msg_Rcvd; Sinalizador / recepo / const longo ID_1st = 12111, ID_2nd = 3; 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 sada / / / / Bandeiras claras / /

Can_Send_Flags = & _CAN_TX_PRIORITY_0 / valor / formulrio a ser utilizado _CAN_TX_XTD_FRAME E / com CanWrite _CAN_TX_NO_RTR_FRAME; Can_Init_Flags _CAN_CONFIG_SAMPLE_THRICE = & / Valor / formulrio a ser utilizado _CAN_CONFIG_PHSEG2_PRG_ON & / / Com CANInit _CAN_CONFIG_XTD_MSG & _CAN_CONFIG_DBL_BUFFER_ON & _CAN_CONFIG_VALID_XTD_MSG; CANInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializa o mdulo CAN CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF); / / modo de configurao definidas CANSetMask (_CAN_MASK_B1, -1, _CAN_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); RxTx_Data [0] = 9; / / Definir o modo normal / / conjunto de dados inicial a ser enviada

Mikroelektronika - Solues de software e hardware para o mundo embutido

253

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas

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 seleo ID PORTC RxTx_Data = [0] / / id de sada de dados, corrigir a PORTC RxTx_Data [0] + +; / / incrementa os dados recebidos Delay_ms (10); CanWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / incrementado enviar dados de volta } } }

Cdigo para o n CAN segundo:


unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx buffer de dados char Msg_Rcvd; sinalizador / recepo / const longo ID_1st = 12111, ID_2nd = 3; / node / Identificaes tempo Rx_ID; vazio main () { PORTC = 0; TRISC = 0; Can_Init_Flags = 0; Can_Send_Flags = 0; Can_Rcv_Flags = 0; PORTC / claro / / Set PORTC como sada / / / / Bandeiras claras / /

Can_Send_Flags = & _CAN_TX_PRIORITY_0 / valor / formulrio a ser utilizado _CAN_TX_XTD_FRAME E / com CanWrite _CAN_TX_NO_RTR_FRAME; Can_Init_Flags = & _CAN_CONFIG_SAMPLE_THRICE / valor / formulrio a ser utilizado _CAN_CONFIG_PHSEG2_PRG_ON E / com CANInit _CAN_CONFIG_XTD_MSG & _CAN_CONFIG_DBL_BUFFER_ON & _CAN_CONFIG_VALID_XTD_MSG &

CANInitialize (1,3,3,3,1, Can_Init_Flags); / / inicializa o mdulo CAN externa CANSetOperationMode (_CAN_MODE_CONFIG, 0xFF); / / modo de configurao definidas CANSetMask (_CAN_MASK_B1, -1, _CAN_CONFIG_XTD_MSG); / / configura todos mask1 bits para os

254

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CANSetMask (_CAN_MASK_B2, -1, _CAN_CONFIG_XTD_MSG); / / configura todos mask2 bits para os CANSetFilter (_CAN_FILTER_B2_F3, ID_1st, _CAN_CONFIG_XTD_MSG); / set / ID da B2_F3 filtro para 1 n ID CANSetOperationMode (_CAN_MODE_NORMAL, 0xFF); / / o modo NORMAL enquanto (1) {/ / faz um loop infinito Msg_Rcvd CanRead = (& Rx_ID, RxTx_Data & Rx_Data_Len, & Can_Rcv_Flags); / receber mensagens se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleo ID PORTC RxTx_Data = [0]; / / id corrigir os dados, a produo a PORTC RxTx_Data [0] + +; / / incrementa os dados recebidos CanWrite (ID_2nd, RxTx_Data, 1, Can_Send_Flags); / / envia incredados documentados de volta } }

Conexo HW

Exemplo de interface CAN transceptor com MCU e nibus Mikroelektronika - Solues de software e hardware para o mundo embutido

255

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas CANSPI BIBLIOTECA

O mdulo SPI est disponvel com uma srie de microcontroladores PIC compatvel. O mikroC PRO para PIC oferece uma biblioteca (driver) para trabalhar com CANSPI mikroElektronika's Placas de expanso (com ou MCP2515 MCP2510) via interface SPI. O CAN um protocolo muito robusto que a deteco de erros e sinalizao, de auto-verificao e confinamento de falhas. dados defeituoso pode e quadros remoto so retransmitidas automaticamente, semelhante ao Ethernet.

taxas de transferncia de dados dependem da distncia. Por exemplo, 1 Mbit / s pode ser obtida em netcomprimentos de trabalho abaixo de 40m, enquanto 250 Kbit / s pode ser obtida em comprimentos de rede abaixo 250m. Quanto maior a distncia menor bitrate mximo que pode ser alcanado. O menor bitrate definido pelo padro 200Kbit / s. Os cabos utilizados so pares de fios tranados. CAN suporta dois formatos de mensagens: formato padro, com 11 bits de identificador e Extenso formato, com 29 bits identificador. Nota: Consulte a norma CAN CAN sobre a resistncia de terminao de nibus. Uma velocidade de comunicao eficaz CANSPI depende SPI e, certamente, mais lento do que "Real" CAN. A biblioteca utiliza o mdulo de comunicao SPI. O usurio deve inicializar SPI mdulo antes de usar o SPI LCD Grfico Biblioteca. Para MCUs com dois mdulos SPI possvel inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. CANSPI mdulo refere-se a CANSPI mikroElektronika do Add-on board conectado ao mdulo SPI de MCU. As dependncias externas de CANSPI Biblioteca das seguintes variveis deve ser definida na todos projetos usando CANSPI sbit sfr extern
CanSpi_CS; sbit sfr extern CanSpi_Rst; sbit sfr extern CanSpi_CS_Direction; sbit sfr extern CanSpi_Rst_Direction;

Descrio:

Exemplo:

Chip linha Select. linha de reposio. Direo do Chip Selecione pino.

sbit CanSpi_CS em RC0_bit; sbit CanSpi_Rst em RC2_bit; sbit CanSpi_CS_Direction em TRISC0_bit; em TRISC2_bit;

Direo do pino de Reset. sbit CanSpi_Rst_Direction

256

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
- CANSPISetOperationMode - CANSPIGetOperationMode - CANSPIInitialize - CANSPISetBaudRate - CANSPISetMask - CANSPISetFilter - CANSPIread - CANSPIWrite As rotinas a seguir so para um uso interno da biblioteca, apenas: - RegsToCANSPIID - CANSPIIDToRegs Certifique-se de verificar constantes CANSPI necessrio para utilizar algumas das funes.

Mikroelektronika - Solues de software e hardware para o mundo embutido

257

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANSPISetOperationMode
Prottipo Retorna
vazio CANSPISetOperationMode (char modo, char WAIT);

Nada. Define o mdulo CANSPI para o modo solicitado. Parmetros:

Descrio

- modo: CANSPI modo de operao do mdulo. Valores vlidos: CANSPI_OP_MODE conbalces de (ver constantes CANSPI). - ESPERA: CANSPI modo de comutao pedido de verificao. Se WAIT == 0, a chamada
no

bloqueio. A funo no verifica se o mdulo est ligado a CANSPI solicitadas modo ou no. Chamador deve usar CANSPIGetOperationMode para verificar a cormodo de operao rect antes da operao de modo a realizao especfica. Se AGUARDE! = 0,
o

Requer

As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Cmara ou h/ d lh t V j d i f i / Configurar o mdulo CANSPI no modo de l configurao (aguardar tdentro i d t
CANSPISetOperationMode at este modo estiver definido) CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF);

Exemplo

CANSPIGetOperationMode
Prottipo Retorna Descrio
char CANSPIGetOperationMode ();

modo de operao atual. A funo retorna o modo de operao atual do mdulo CANSPI. Confira CANSPI_OP_MODE constantes (ver constantes CANSPI) ou folha de dados do dispositivo para pera Modo de cdigos o A rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Cmara ou hardware semelhante Veja o exemplo de conexo na parte inferior desta pgina
/ / Verifica se o mdulo CANSPI est no modo normal e se fazer alguma coisa. if (CANSPIGetOperationMode () == _CANSPI_MODE_NORMAL) { ... }

Requer

Exemplo

258

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CANSPIInitialize
Prottipo Retorna
vazio CANSPIInitialize ( char SJW, char BRP, char PHSEG1, char PHSEG2, char PROPSEG, char CANSPI_CONFIG_FLAGS);

Nada. Inicializa o mdulo CANSPI. Stand-Alone controlador CAN no mdulo CANSPI definido como: - Desabilite pode capturar - Continuar a CAN operao em modo de Espera - No interromper as transmisses pendentes - Fcan relgio: 4 * Pases Terceiros (FOSC) - Taxa de transmisso definida de acordo com determinados parmetros - Modo CAN: Normal - Filtro e as identificaes de registros mscara so definidos como zero - Filtro e uma mscara tipo de estrutura da mensagem definido de acordo com CAN_CONFIG_FLAGS valor
SAM, SEG2PHTS, WAKFIL e DBEN bits so definidos de acordo toCANSPI_CONFIG_FLAGS valor.

Descrio

Parmetros: - SJW conforme definido na ficha tcnica do controlador CAN - BRP conforme definido na ficha tcnica do controlador CAN - PHSEG1 tal como definido no controlador CAN datasheet - PHSEG2 conforme definido na ficha tcnica do controlador CAN - PROPSEG conforme definido na ficha tcnica do controlador CAN - CAN_CONFIG_FLAGS formado a partir de constantes predefinidas (ver CANSPI conbalces de) As variveis globais:
- CanSpi_CS: Chip Selecionar linha - CanSpi_Rst: linha de reset - CanSpi_CS_Direction: Direo do pino de Chip Select - CanSpi_Rst_Direction: Direo do pino de Reset

Requer

devem ser definidas antes de utilizar esta funo. As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI. O SPI mdulo precisa ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Cmara ou simhomlogos de hardware. Veja o exemplo de conexo na parte inferior desta Mikroelektronika - Solues de software e hardware para o mundo embutido

259

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
/ / Conexes CANSPI mdulo RC0_bit; sbit CanSpi_CS em sbit CanSpi_CS_Direction em TRISC0_bit; sbit CanSpi_Rst em RC2_bit; sbit CanSpi_Rst_Direction em TRISC2_bit; / / Fim conexes CANSPI mdulo

Exemplo

/ / Inicializa o mdulo CANSPI com a taxa de transmisso e bandeiras de aceitao de mensagens, juntamente com as regras de amostragem char CanSPi_Init_Flags; ... CanSPi_Init_Flags = _CANSPI_CONFIG_SAMPLE_THRICE e / form / valor a ser utilizado _CANSPI_CONFIG_PHSEG2_PRG_ON & / / Com CANSPIInitialize _CANSPI_CONFIG_XTD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG; ... SPI1_Init (); / / inicializa o mdulo SPI CANSPIInitialize (1,3,3,3,1, CanSpi_Init_Flags); / / inicializa CANSPI mdulo externo

260

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CANSPISetBaudRate
Prottipo Retorna
vazio CANSPISetBaudRate ( char SJW, char BRP, char PHSEG1, char PHSEG2, char PROPSEG, char CANSPI_CONFIG_FLAGS);

Nada. Define a taxa de CANSPI mdulo de transmisso. Devido complexidade do protocolo CAN, voc no pode simplesmente forar um valor bps. Em vez disso, use esta funo quando o CANSPI mdulo est em modo de configurao.

Descrio

SAM, SEG2PHTS e WAKFIL bits so definidos de acordo com CANSPI_CONFIG_FLAGS

valor. Consulte a ficha tcnica para mais detalhes. Parmetros: SJW como definidos na ficha tcnica do controlador CAN BRP conforme definido na ficha tcnica do controlador CAN PHSEG1 conforme definido na ficha tcnica do controlador CAN PHSEG2 conforme definido na ficha tcnica do controlador CAN

Requer

f d fi id h t d t l d CAN O mdulo CANSPI deve estar nofimodo de iconfigurao, caso contrrio, a funo ser ignorados. Veja CANSPISetOperationMode. As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI. MCU tem para ser conectado corretamente mikroElektronika de CANSPI Extra
/ / Necessrio definir taxa de transmisso e regras de amostragem char canspi_config_flags; ... CANSPISetOperationMode (CANSPI_MODE_CONFIG, 0xFF); / CONFIGURAO / setModo de rao (CANSPI mastro mdulo de estar em modo de configurao para a taxa de transmisso configuraes) canspi_config_flags = & _CANSPI_CONFIG_SAMPLE_THRICE _CANSPI_CONFIG_PHSEG2_PRG_ON & _CANSPI_CONFIG_STD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG & _CANSPI_CONFIG_LINE_FILTER_OFF; CANSPISetBaudRate (1, 1, 3, 3, 1, canspi_config_flags);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

261

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANSPISetMask
Prottipo Retorna
vazio CANSPISetMask (char CANSPI_MASK, tempo val, char CANSPI_CONFIG_FLAGS);

Nada. Configura uma mscara de filtragem avanada de mensagens. O parmetro valor pouco ajustadas aos registos mscara apropriada. Parmetros:

Descrio

- CAN_MASK: CANSPI nmero de mscara de mdulo. Valores vlidos: CANSPI_MASK costants (Ver constantes CANSPI) - mscara de valor do registo: val - CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. Valores
vlidos: CANSPI_CONFIG_ALL_VALID_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG.

(Ver constantes CANSPI) O mdulo CANSPI deve estar no modo de configurao, caso contrrio, a funo Requer ser ignorados. Veja CANSPISetOperationMode. As rotinas so suportados CANSPI apenas por MCUs com o mdulo SPI. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra
/ / Definir a mscara de filtro adequado e valor tipo de mensagem CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / Modo conjunto de configuraes (mdulo CANSPI deve estar no modo de config para as configuraes de mscara) / / Set B1 todos os bits de mscara a 1 (todos os bits so filtrados relevante): / / Observe que -1 apenas uma maneira mais barata de escrever 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);

Exemplo

262

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CANSPISetFilter
Prottipo Retorna
vazio CANSPISetFilter (char CANSPI_FILTER, tempo val, char CANSPI_CONFIG_FLAGS);

Nada. Configura a mensagem de filtro. O parmetro valor pouco adaptado ao discomeu registros filtro. Parmetros:

Descrio

- CAN_FILTER: mdulo de filtro CANSPI nmero. Valores vlidos: CANSPI_FILTER constantes (ver constantes CANSPI) - valor do registro do filtro: val - CAN_CONFIG_FLAGS: seleciona o tipo de mensagem para filtrar. Valores
vlidos: CANSPI_CONFIG_ALL_VALID_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_STD_MSG, CANSPI_CONFIG_MATCH_MSG_TYPE e CANSPI_CONFIG_XTD_MSG.

(Ver constantes CANSPI) O mdulo CANSPI deve estar no modo de configurao, caso contrrio, a funo Requer ser ignorados. Veja CANSPISetOperationMode. As rotinas CANSPI so suportados apenas pelo MCUs com o SPI mdulo. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra
/ / Definir o valor do filtro adequado e tipo de mensagem CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / Modo conjunto de configuraes (mdulo CANSPI deve estar no modo de config para as definies do filtro) / * Defina id B1_F1 filtro para 3: * / CANSPISetFilter (_CANSPI_FILTER_B1_F1, 3, _CANSPI_CONFIG_XTD_MSG);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

263

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANSPIRead
Prottipo Retorna
char CANSPIRead (long * Id, char * Rd_data, char * Data_len, char CANSPI_RX_MSG_FLAGS *);

- 0 se nada for recebido - 0xFF se um dos buffers de recepo est cheio (mensagem recebidos) Se pelo menos um buffer de recebimento integral for encontrado, ele ser processado nas seguintes maneira: - ID da mensagem recuperada e armazenada na localizao fornecidas pela id

Descrio

parmetro - Mensagem dados so recuperados e armazenados em um buffer fornecido pelo o rd_data parmetro - Tamanho da mensagem recuperada e armazenada a localizao fornecida pela data_len parmetro - Mensagem bandeiras so recuperados e armazenados para a localizao fornecida pela CAN_RX_MSG_FLAGS parmetro O mdulo CANSPI deve estar em um modo no qual possvel receber. Veja CANSPISetOperationMode.

Requer

As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI. MCU tem de ser devidamente conectado a mikroElektronika de CANSPI Extra Cmara ou
/ / Verificao o mdulo 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 (mdulo CANSPI deve estar no modo em que receber possvel) ... rx_flags = 0; / / Limpa bandeiras de mensagem if (= msg_rcvd CANSPIRead (msg_id, dados data_len, rx_flags)) { ... }

Exemplo

264

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

CANSPIWrite
Prottipo Retorna
char CANSPIWrite (long id, char * Wr_data, char data_len, char CANSPI_TX_MSG_FLAGS);

- 0 Se todos os buffers de transmisso esto ocupados - 0xFF se pelo menos um buffer de transmisso est disponvel Se pelo menos um vazio buffer de transmisso for encontrado, a funo envia mensagem em fila para a transmisso.

Descrio

Parmetros: - id: identificador de mensagem CAN. Valores vlidos: 11 ou 29 valores


pouco, dependendo de

tipo de mensagem (padro ou estendida) O mdulo CANSPI deve estar no modo em que a transmisso seja possvel. Veja CANSPISetOperationMode. Requer As rotinas CANSPI so suportados apenas pelo MCUs com o mdulo SPI. MCU tem de ser devidamente conectado ao mikroElektronika de CANSPI Extra Cmara ou
/ / Envia mensagem prorrogado mensagem CAN com a identificao 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 transmisso possvel) tx_flags = _CANSPI_TX_PRIORITY_0 & _CANSPI_TX_XTD_FRAME; / / Mensagem de flags CANSPIWrite (msg_id, dados, 2, tx_flags);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

265

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANSPI Constantes

H um nmero de constantes predefinidas na biblioteca CANSPI. Voc precisa ser familiarizado com eles, a fim de ser capaz de usar a biblioteca eficazmente. Check-exame plo, no final do captulo.

CANSPI_OP_MODE
A CANSPI_OP_MODE CANSPI constantes definem o modo de operao. Funo CANSPISetOperationMode espera uma destas como argumento:
const char _CANSPI_MODE_BITS _CANSPI_MODE_NORMAL _CANSPI_MODE_SLEEP _CANSPI_MODE_LOOP _CANSPI_MODE_LISTEN _CANSPI_MODE_CONFIG

= 0xE0, = 0x00, = 0x20, = 0x40, = 0x60, = 0x80;

/ / Utilize esta opo para acesso opmode

bits

CANSPI_CONFIG_FLAGS
A CANSPI_CONFIG_FLAGS constantes definem bandeiras relacionadas com o mdulo CANSPI configurao. As funes CANSPIInitialize, CANSPISetBaudRate, CANSPISetMask e CANSPISetFilter esperar um desses (ou uma combinao bit a bito), 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, _CANSPI_CONFIG_SAMPLE_BIT _CANSPI_CONFIG_SAMPLE_ONCE _CANSPI_CONFIG_SAMPLE_THRICE _CANSPI_CONFIG_MSG_TYPE_BIT _CANSPI_CONFIG_STD_MSG _CANSPI_CONFIG_XTD_MSG = 0x04, = 0xFF, = 0xFB, = 0x08, = 0xFF, = 0xF7,

/ XXXXXX1X / / XXXXXX0X /

/ XXXXX1XX / / XXXXX0XX /

/ XXXX1XXX / / XXXX0XXX /

266

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
_CANSPI_CONFIG_DBL_BUFFER_BIT _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 = 0x10, = 0xFF, = 0xEF, = 0x60, = 0xFF, = 0xDF, = 0xBF, = 0x9F;

CAPTULO 7

Bibliotecas
/ 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 so flags relacionados com a transmisso de uma mensagem CAN: const char _CANSPI_TX_PRIORITY_BITS _CANSPI_TX_PRIORITY_0 _CANSPI_TX_PRIORITY_1 _CANSPI_TX_PRIORITY_2 _CANSPI_TX_PRIORITY_3 _CANSPI_TX_FRAME_BIT _CANSPI_TX_STD_FRAME _CANSPI_TX_XTD_FRAME

= = = = =

0x03, 0xFC, 0xFD, 0xFE, 0xFF,

// // // //

XXXXXX00 XXXXXX01 XXXXXX10 XXXXXX11

= 0x08, = 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 - Solues de software e hardware para o mundo embutido

267

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
CANSPI_RX_MSG_FLAGS

CANSPI_RX_MSG_FLAGS so flags relacionados com a recepo da mensagem CAN. Se um particubit lar estiver definido, ento correspondente significado TRUE ou ento 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 opo para filtrar o acesso bits

_CANSPI_RX_OVERFLOW = 0x08 / / Defina se Overflowed mais limpo _CANSPI_RX_INVALID_MSG = 0x10, / / Define se invlido mais limpo _CANSPI_RX_XTD_FRAME = 0x20 / / mensagem Defina se XTD mais apuradas _CANSPI_RX_RTR_FRAME = 0x40 / / mensagem Defina se RTR mais apuradas _CANSPI_RX_DBL_BUFFERED = 0x80 / / Define se a mensagem foi difcil ware buffer duplo

Voc pode usar AND bit a bit (&) para ajustar o sinalizadores apropriados. Por exemplo:
se (MsgFlag & _CANSPI_RX_OVERFLOW! = 0) { ... / / Receptor estouro ocorreu. / / Ns perdemos a nossa mensagem anterior. }

CANSPI_MASK
A CANSPI_MASK constantes definem cdigos mscara. Funo CANSPISetMask espera um desses como argumento:
const char _CANSPI_MASK_B1 = 0, _CANSPI_MASK_B2 = 1;

CANSPI_FILTER
A CANSPI_FILTER constantes definir cdigos de filtro. Funes CANSPISetFilter espera que um destes, como o argumento:
const char _CANSPI_FILTER_B1_F1 _CANSPI_FILTER_B1_F2 _CANSPI_FILTER_B2_F1 _CANSPI_FILTER_B2_F2 = = = = 0; 1, 2, 3 ,

268

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
_CANSPI_FILTER_B2_F3 = 4, _CANSPI_FILTER_B2_F4 = 5;

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
Esta uma simples demonstrao de CANSPI Biblioteca de rotinas de utilizao. Primeiro n iniAtes a comunicao com o segundo n, enviando alguns dados para o seu endereo. O segundo n responde enviando de volta os dados incrementado em 1. Primeiro n em seguida, faz o mesmo e envia os dados de volta para incrementado segundo n, etc Cdigo para o n CANSPI primeiro:
unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx buffer de dados char Msg_Rcvd / / pavilho de recepo const longo ID_1st = 12111, ID_2nd = 3; IDs / node / tempo Rx_ID; / / Conexes CANSPI mdulo em sbit CanSpi_CS sbit CanSpi_CS_Direction em sbit CanSpi_Rst em sbit CanSpi_Rst_Direction em / / Fim conexes CANSPI mdulo 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

RC0_bit; TRISC0_bit; RC2_bit; TRISC2_bit;

/ PORTB / clear / PORTB set / como sada / / / / 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 / Formulrio a ser utilizado _CANSPI_CONFIG_PHSEG2_PRG_ON E / com CANSPIInit _CANSPI_CONFIG_XTD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG;

Mikroelektronika - Solues de software e hardware para o mundo embutido

269

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI1_Init (); / / inicializar o mdulo SPI1

CANSPIInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializar CANSPI externa mdulo CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / / modo de configurao definidas CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_XTD_MSG); / / set todos mask1 bits para os CANSPISetMask (_CANSPI_MASK_B2, -1, _CANSPI_CONFIG_XTD_MSG); / / set todos mask2 bits para os CANSPISetFilter (_CANSPI_FILTER_B2_F4, ID_2nd, _CANSPI_CONFIG_XTD_MSG); / / Set id B2_F4 de filtro para segundo n ID CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / o modo NORMAL RxTx_Data [0] = 9; / / Conjunto de dados inicial a ser enviada

CANSPIWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / / envia inicial Mensagem while (1) {/ / faz um loop infinito Msg_Rcvd CANSPIRead = (& Rx_ID, RxTx_Data & Rx_Data_Len, Can_Rcv_Flags); / receber mensagens se ((Rx_ID == ID_2nd) & & Msg_Rcvd) { / Mensagem se cheque recebido id PORTB RxTx_Data = [0]; / Id sada de dados, corrigir a PORTC RxTx_Data [0] + +; / Incremento de dados recebidos Delay_ms (10); CANSPIWrite (ID_1st, RxTx_Data, 1, Can_Send_Flags); / Incrementado enviar dados de volta } }

& / / /

270

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Cdigo para o n CANSPI segundo:
unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags / / pode bandeiras unsigned char Rx_Data_Len / / recebidos comprimento de dados em bytes char RxTx_Data [8] / / pode rx / tx de dados buffer char Msg_Rcvd; sinalizador / recepo / const longo ID_1st = 12111, ID_2nd = 3; IDs / node / tempo Rx_ID; / / Conexes CANSPI mdulo em sbit CanSpi_CS em sbit CanSpi_CS_Direction em sbit CanSpi_Rst sbit CanSpi_Rst_Direction em / / Fim conexes CANSPI mdulo vazio main () { ANSEL = 0; ANSELH = 0; PORTB = 0; TRISB = 0; Can_Init_Flags = 0; Can_Send_Flags = 0; Can_Rcv_Flags = 0;

CAPTULO 7

Bibliotecas

RC0_bit; TRISC0_bit; RC2_bit; TRISC2_bit;

/ / Configurar um pinos como I / O digital

/ PORTB / clear / PORTB set / como sada / / / / Bandeiras claras / /

Can_Send_Flags _CANSPI_TX_PRIORITY_0 = & / Valor / formulrio a ser utilizado _CANSPI_TX_XTD_FRAME E / com CANSPIWrite _CANSPI_TX_NO_RTR_FRAME; Can_Init_Flags = & _CANSPI_CONFIG_SAMPLE_THRICE / valor / Formulrio a ser utilizado _CANSPI_CONFIG_PHSEG2_PRG_ON E / com CANSPIInit _CANSPI_CONFIG_XTD_MSG & _CANSPI_CONFIG_DBL_BUFFER_ON & _CANSPI_CONFIG_VALID_XTD_MSG & _CANSPI_CONFIG_LINE_FILTER_OFF; SPI1_Init (); / / Inicializa SPI1 mdulo

CANSPIInitialize (1,3,3,3,1, Can_Init_Flags); / / Inicializa externa mdulo CANSPI CANSPISetOperationMode (_CANSPI_MODE_CONFIG, 0xFF); / CONFIGURAO / setModo de Rao CANSPISetMask (_CANSPI_MASK_B1, -1, _CANSPI_CONFIG_XTD_MSG); / / set todos mask1 bits para os CANSPISetMask (_CANSPI_MASK_B2, -1, _CANSPI_CONFIG_XTD_MSG); / / set

Mikroelektronika - Solues de software e hardware para o mundo embutido

271

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
todos mask2 bits para os CANSPISetFilter (_CANSPI_FILTER_B2_F3, ID_1st, _CANSPI_CONFIG_XTD_MSG); / / Configura id do B2_F3 filtro para 1 ID do n CANSPISetOperationMode (_CANSPI_MODE_NORMAL, 0xFF); / / o modo NORMAL enquanto (1) {/ / faz um loop infinito Msg_Rcvd CANSPIRead = (& Rx_ID, RxTx_Data & Rx_Data_Len, & Can_Rcv_Flags); / receber mensagens se ((Rx_ID == ID_1st) & & Msg_Rcvd) {/ / se a mensagem recebida de seleo ID PORTB = RxTx_Data [0] / / id de sada de 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 } } }

Bibliotecas

Conexo HW

Exemplo de interface CAN MCP2510 transceptor com MCU via interface SPI

272

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

COMPACT FLASH BIBLIOTECA


O Compact Flash Biblioteca fornece rotinas para acessar dados em Compact Flash carto (abrev. CF ainda no texto). Os cartes CF so amplamente utilizados elementos de memria, comcomumente usados com cmeras digitais. Grande capacidade e tempo de acesso excelente de apenas alguns microssegundos torn-los muito atrativos para aplicaes de microcontroladores.

No carto CF, os dados so divididos em setores. Um setor compreende geralmente 512 bytes. Rotinas para manipulao de arquivos, o Cf_Fat rotinas, no so executadas diretamente, mas susivamente atravs 512B buffer. Nota: As rotinas para manipulao de arquivos s podem ser utilizados com sistema de arquivos FAT16. Nota: As funes Biblioteca criar e ler arquivos no diretrio raiz s. Nota: As funes Biblioteca preencher ambas as tabelas e FAT1 FAT2 ao escrever em arquivos, mas o arquivo de dados est sendo leitura da tabela FAT1 s, ou seja, no h recuperao, se a tabela FAT1 fica corrompido.

Nota: Se o carto SD / MMC tem Master Boot Record (MBR), a biblioteca funcionar com a primeiro disponvel partio (lgica) primrio que tem tamanho diferente de zero. Se o MMC / SD placa tem Volume Boot Record (ou seja, h apenas uma partio lgica e no MBR), a biblioteca trabalha com carto de inteira como uma nica partio. Para mais informaes sobre MBR, fsica e unidades lgicas, primrio / secundrio parties e tabelas de parties, consulte outros recursos, por exemplo, Wikipedia e similares. Nota: Antes de escrever a operao, certifique-se de no substituir ou setor de inicializao FAT como poderia fazer o seu carto no PC ou cmera digital ilegvel. ferramentas de mapeamento de unidade, como Winhex, pode ser de grande ajuda.

Mikr oele ktro nika Solu es de soft

ware e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com

273

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
As seguintes variveis deve ser definida em Descrio: todos os projetos usando Compact Bibli t d Fl h sfr extern char Compact Flash Porta de CF_Data_Port; sbit sfr extern CF_RDY; sbit sfr extern CF_WE; sbit sfr extern CF_OE; sbit sfr extern CF_CD1; sbit sfr extern CF_CE1; sbit sfr extern CF_A2; sbit sfr extern CF_A1; sbit sfr extern CF_A0; sbit sfr extern CF_RDY_direction; sbit sfr extern CF_WE_direction; sbit sfr extern CF_OE_direction; sbit sfr extern CF_CD1_direction; sbit sfr extern CF_CE1_direction; sbit sfr extern CF_A2_direction; sbit sfr extern CF_A1_direction; sbit sfr extern CF_A0_direction;

Bibliotecas

Exemplo:

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_direco em TRISB7_bit; sbit CF_WE_direction em TRISB6_bit; sbit CF_OE_direction em TRISB5_bit; sbit CF_CD1_direco em TRISB4_bit; sbit CF_CE1_direco em TRISB3_bit; sbit CF_A2_direction em TRISB2_bit; sbit CF_A1_direction em TRISB1_bit; sbit CF_A0_direction em TRISB0_bit;

d d Pronto linha de sinal. Write Enable linha de sinal. Habilitar sada de linha do i l Chip detecta sinal de linha. Chip linha de sinal Enable. Endereo pino 2. Endereo pino 1. Endereo pino 0. Direo da o pino Ready. Direo do Write Enable alfinete. Direo da Sada Habilitar pino. Direo do Chip detecta alfinete. Direo do Chip Enable alfinete. Direo do endereo 2 alfinete. Direo do endereo 1 alfinete. Direo do endereo 0 alfinete.

274

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
- Cf_Init - Cf_Detect - Cf_Enable - Cf_Disable - Cf_Read_Init - Cf_Read_Byte - Cf_Write_Init - Cf_Write_Byte - Cf_Read_Sector - Cf_Write_Sector Rotinas para manipulao de arquivos: - Cf_Fat_Init - Cf_Fat_QuickFormat - Cf_Fat_Assign - Cf_Fat_Reset - Cf_Fat_Read - Cf_Fat_Rewrite - Cf_Fat_Append - Cf_Fat_Delete - Cf_Fat_Write - Cf_Fat_Set_File_Date - Cf_Fat_Get_File_Date - Cf_Fat_Get_File_Size - Cf_Fat_Get_Swap_File A rotina a seguir para o uso interno do compilador apenas: - Cf_Issue_ID_Command

Mikroelektronika - Solues de software e hardware para o mundo embutido

275

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Cf_Init
Prottipo Retorna Descrio
vazio Cf_Init ();

Nada. Inicializa as portas de forma adequada para a comunicao com o carto CF. As variveis globais:
CF_Data_Port : Compact Flash porta de dados CF_RDY : Linha de sinal Ready CF_WE Escrever habilitar a linha de sinal CF_OE Sada: permitir que o sinal de linha CF_CD1 : Chip detecta sinal de linha CF_CE1 : Linha de sinal Enable CF_A2 : Endereo 2 pinos CF_A1 : Pino Endereo 1 CF_A0 : Pino endereo 0 CF_RDY_direction : Direo do pino Ready CF_WE_direction : Direo do Write enable pinos CF_OE_direction : Direo de permitir a sada do pino CF_CD1_direction : Direo da Chip detecta o pino CF_CE1_direction : Direo da Chip permitir pin CF_A2_direction : Direo do pino de endereo 2 CF_A1_direction : Direo da Endereo pino 1 CF_A0_direction : Direo do endereo 0 pin

Requer

devem ser definidas antes de utilizar esta funo.


/ / Set pinagem compact flash char Cf_Data_Port em PORTD; sbit sbit sbit sbit sbit sbit sbit sbit CF_RDY em RB7_bit; CF_WE em RB6_bit; CF_OE em RB5_bit; CF_CD1 em RB4_bit; CF_CE1 em RB3_bit; CF_A2 em RB2_bit; CF_A1 em RB1_bit; CF_A0 em RB0_bit;

Exemplo

sbit CF_RDY_direction em TRISB7_bit; sbit CF_WE_direction em TRISB6_bit; sbit CF_OE_direction em TRISB5_bit; sbit CF_CD1_direction em TRISB4_bit; sbit CF_CE1_direction em TRISB3_bit; sbit CF_A2_direction em TRISB2_bit; sbit CF_A1_direction em TRISB1_bit; sbit CF_A0_direction em TRISB0_bit; / / Fim do pinout compact flash ... Cf_Init (); / / inicializa CF

276

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Cf_Detect
Prottipo Retorna Descrio Requer Exemplo
unsigned short Cf_Detect (void); - 1 - Se o carto CF foi detectada - 0 - Caso contrrio

Verifica se h presena de carto CF, lendo o chip detectar alfinete. As portas MCU correspondente dever ser devidamente inicializado para o carto CF. Veja
/ / Espera at o carto CF est inserido: fazer nop asm; enquanto (! Cf_Detect ());

Cf_Enable
Prottipo Retorna Descrio
vazio Cf_Enable (void);

Nada. 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 vrios di iti As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja
/ / Ativar o flash compacto Cf_Enable ();

Requer Exemplo

Cf_Disable
Prottipo Retorna Descrio
vazio Cf_Disable (void);

Nada. 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 vrios dispositivos. As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja
/ / Desativar flash compacto Cf_Disable ();

Requer Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

277

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Cf_Read_Init
Prottipo Retorna
vazio Cf_Read_Init (unsigned long endereo, unsigned short sector_count);

Nada. Inicializa carto CF para leitura.

Descrio

Parmetros: - endereo: o primeiro setor a ser preparado para operao de leitura. - sector_count: nmero de setores a serem preparados para a leitura de

Requer Exemplo

As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja Cf i / / IInicializa o flash compacto para a leitura do setor 590
Cf_Read_Init (590, 1);

Cf_Read_Byte
Prottipo Retorna Nota: Superior byte do no assinado valor de retorno est desmarcada. Descrio L um byte de Compact Flash sector Local de buffer atualmente apontado pelos ponteiros internos ler. Estas indicaes sero autoicremented da leitura. As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja Cf_Init. carto CF deve ser inicializado para a leitura operao Veja Cf Read Init Exemplo
/ / L um byte de memria Compact Flash: dados char; ... = dados Cf_Read_Byte (); unsigned short Cf_Read_Byte (void);

Retorna um byte lido do buffer sector Compact Flash.

Requer

278

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Cf_Write_Init
Prottipo Retorna
vazio Cf_Write_Init (unsigned long endereo, unsigned short sectcnt);

Nada. Inicializa carto CF para a escrita.

Descrio

Parmetros: - endereo: o primeiro setor a ser preparado para operao de escrita. - sectcnt: nmero de setores a serem preparados para a escrita operao.

Requer Exemplo

As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja Cf/ IInicializa o flash compacto para escrever para o setor 590 i /
Cf_Write_Init (590, 1);

Cf_Write_Byte
Prottipo Retorna
vazio Cf_Write_Byte (unsigned short data_);

Nada. Grava um byte no buffer local Compact Flash sector actualmente apontada pelo escrito ponteiros. Estas indicaes sero autoicremented da leitura. Quando buffer sector est cheio, seu contedo ser transferido para a memria flash apropriado sector. Parmetros:
- Data : byte a ser escrito

Descrio

As portas MCU correspondente dever ser devidamente inicializado para carto CF. Requer Veja Cf_Init. carto CF deve ser inicializado para escrever a operao Veja Cf Write Init Exemplo
char = dados 0xAA; ... Cf_Write_Byte (dados);

Mikroelektronika - Solues de software e hardware para o mundo embutido

279

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Cf_Read_Sector
Prottipo Retorna
vazio Cf_Read_Sector (unsigned long sector_number, unsigned short * Buffer);

Nada. L um setor (512 bytes). Ler dados so armazenados em buffer desde pela buffer parmetro. Parmetros:
sector_number: o setor a ser lido. buffer: buffer de dados de pelo menos 512 bytes de comprimento.

Descrio

Requer

As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja Cf /I Ler o setor 22 i /
unsigned short dados [512]; ... Cf_Read_Sector (22, dados);

Exemplo

Cf_Write_Sector
Prottipo Retorna
vazio Cf_Write_Sector (unsigned long sector_number, unsigned short * Buffer);

Nada. Grava 512 bytes de dados fornecidos pelo buffer parmetro para um sector da CF.

Descrio

Parmetros:
- Sector_number: setor a ser escrito. - Buffer: buffer de dados de 512 bytes de comprimento.

Requer

As portas MCU correspondente dever ser devidamente inicializado para carto CF. Veja
/ / Escreve para o setor 22 unsigned short dados [512]; ... Cf_Write_Sector (22, dados);

Exemplo

280

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Cf_Fat_Init
Prottipo Retorna
unsigned short Cf_Fat_Init (); - 0 - Se o carto CF foi detectado e inicializado com sucesso - 1 - Se o setor de inicializao FAT16 no foi encontrado - 255 - Caso o carto no foi detectado

Descrio Requer Exemplo

Inicializa carto CF, l CF setor de inicializao FAT16 e extrai os dados necessrios Nada.
/ / Inicia a biblioteca do FAT se (! Cf_Fat_Init ()) {/ / Inicia a biblioteca do FAT ... }

Cf_Fat_QuickFormat
Prottipo Retorna
unsigned char Cf_Fat_QuickFormat (cf_fat_label char *); - 0 - Se o carto CF foi detectado, formatei e inicializado com sucesso - 1 - se o formato FAT16 foi unseccessful - 255 - Caso o carto no foi detectado

Formatos para FAT16 e inicializa o carto CF. Parmetros:


- Cf_fat_label: rtulo de volume (11 caracteres). Se menos de 11

Descrio

caracteres so prestadas, a etiqueta ser preenchido com espaos. Se a string null passado, o volume no ser identificado. Nota: Esta rotina pode ser utilizado em substituio ou em conjunto com a rotina Cf_Fat_Init. Nota: Se o carto CF j contm um setor de inicializao vlido, ela Nada.
//--- Formato e inicializar a biblioteca do FAT se (! Cf_Fat_QuickFormat (& cf_fat_label)) { ... }

Requer Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

281

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Cf_Fat_Assign
Prottipo Retorna
unsigned short Cf_Fat_Assign (char * Nome do arquivo, char file_cre_attr);

- 0 se o arquivo no existe e nenhum arquivo novo criado. - 1 se o arquivo j existe ou o arquivo no existe, mas um novo arquivo criado.

Atribui arquivo para operaes de arquivo (ler, escrever, apagar ...). Todos pera arquivo subseqentees ser aplicado sobre o arquivo designado. Parmetros: - filename: nome do arquivo que deve ser atribudo para operaes de arquivo. O nome
do arquivo

Descrio

devem estar em formato DOS 8.3 (Nome_do_arquivo.extenso). O nome do arquivo e extenso ser automaticamente preenchido com espaos pela biblioteca, se tiverem menos de comprimento necessria ("mikro.tx", ou seja - ". mikro tx">), para que o usurio no tem que cuidar disso. O nome do arquivo e extenso so maisculas e minsculas. A biblioteca ir convert-los para sustentarcaso er automaticamente, assim que o usurio no tem que tomar cuidado com isso. Alm disso, a fim de manter a compatibilidade com a primeira verso desta biblioteca, Bit Msc Descrio nomes de arquivo pode ser inserido como cadeia MAISCULAS de 11 bytes de comprimento, sem 0 0x01 Leia apenas caractere ponto entre o nome do arquivo e extenso (ie "MIKROELETXT" -> 1 0x02 Oculto MIKROELE.TXT). Neste caso, os 3 ltimos caracteres da string so considerados a extenso 0x04 de arquivo. 2 Sistema - file_cre_attr: bandeiras e criao do arquivo attributs. Cada bit corresponde 3 0x08 Volume Label atribuveis arquivo apropriado: 4 0x10 Subdiretrio 5 6 7 0x20 0x40 0x80 Arquivo Dispositivo (uso interno somente, nunca encontrado di ) Arquivo bandeira criao. Se o arquivo no existe e essa bandeira

Requer Exemplo

Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf F t I it


/ / Cria arquivo com os atributos de arquivo se ele j no existe Cf_Fat_Assign ("MIKRO007.TXT", 0xA0);

282

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Cf_Fat_Reset
Prottipo Retorna
vazio Cf_Fat_Reset (unsigned long * Tamanho);

Nada. Abre atualmente atribudos arquivo para leitura.

Descrio

Parmetros:
- Size: tamanho do buffer para armazenar arquivo. Aps o arquivo foi aberto para leitura de seu tamanho

Requer Exemplo

Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf_Fat_Init. O i i d fi id V j Cf F A i unsigned d long tamanho;
... Cf_Fat_Reset (tamanho);

Cf_Fat_Read
Prottipo Retorna
vazio Cf_Fat_Read (unsigned short * Bdata);

Nada. L um byte do arquivo atualmente atribudos aberto para leitura. Ao exe-funo ponteiros de arquivo cuo ser definido para o prximo caractere no arquivo. Parmetros:
- Bdata: buffer para armazenar ler byte. Aps esta execuo funo de leitura d b t

Descrio

Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Requer Cf_Fat_Init. O arquivo deve ser previamente definidos. Veja Cf_Fat_Assign.
char carter; ... Cf_Fat_Read (e personagem);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

283

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Cf_Fat_Rewrite
Prottipo Retorna Descrio Requer Exemplo
vazio Cf_Fat_Rewrite ();

Nada. Abre atualmente atribudos arquivo para gravao. Se o arquivo no est vazio o seu contedo ser d Carto CF e FC biblioteca deve ser inicializado para o arquivo operaes. Veja Cf_Fat_Init. O / Abre d arquivo ib d escrita i i / o para
Cf_Fat_Rewrite ();

V j Cf F

A i

Cf_Fat_Append
Prottipo Retorna Descrio
vazio Cf_Fat_Append ();

Nada. Abre atualmente atribudos arquivo para acrescentar. Aps este ficheiro execuo da funo ponteiros ser posicionado aps o ltimo byte no arquivo, ento qualquer mandado de i b Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf_Fat_Init.
/ / Abre o arquivo para anexando Cf_Fat_Append ();

Requer Exemplo

Cf_Fat_Delete
Prottipo Retorna Descrio Requer Exemplo
vazio Cf_Fat_Delete ();

Nada. Exclui atualmente atribudos arquivo do carto CF. Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf_Fat_Init. O / Deletar o arquivo atuald fi id i d i /
Cf_Fat_Delete ();

V j Cf F

A i

284

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Cf_Fat_Write
Prottipo Retorna
vazio Cf_Fat_Write (char * FData, no assinado data_len);

Nada. Grava solicitado o nmero de bytes para arquivo atualmente aberto para gravao atribuda.

Descrio Parmetros:
- FData: dados a serem gravados.

Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Requer Cf_Fat_Init. Arquivo devem ser previamente definidos. Veja Cf_Fat_Assign.
char file_contents [42]; ... Cf_Fat_Write (file_contents, 42) / / gravar dados no atribuda arquivo

Exemplo

Cf_Fat_Set_File_Date
Prottipo Retorna
vazio Cf_Fat_Set_File_Date (unsigned int ano, unsigned short ms, unsigned short dia, unsigned short horas, unsigned short minutos, unsigned short segundos);

Nada. Define a data / hora. Qualquer operao de arquivo posteriores escrita vou escrever essa selo de tempo de arquivo atualmente atribudos's / attributs data.

Descrio

Parmetros:
- Ano: atributo ano. Valores vlidos: 1980-2107 Ms: atributo ms. Valores vlidos: 12/01 Dia: atributo dia. Valores vlidos: 31/01 Horrio: Horrio de atributo. Valores vlidos: 0-23 Minutos: minutos atributo. Valores vlidos: 0-59

Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Requer Cf_Fat_Init. O arquivo deve ser previamente atribudo. Veja Cf_Fat_Assign.
Cf_Fat_Set_File_Date (2005,9,30,17,41,0);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

285

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Cf_Fat_Set_File_Date
Prottipo Retorna
vazio Cf_Fat_Get_File_Date (unsigned int * Ano, unsigned short * Ms, unsigned short * Dia, unsigned short * horas, no assinado curto * Min);

Nada. L data / hora atributos de arquivo atualmente atribudo. Parmetros:


- Ano: buffer para armazenar atributo ano para. Aps a funo de atributo ano de execuo

Descrio

retornado por esse parmetro.


- Ms: buffer para armazenar atributo ms para. Aps meses de execuo da funo

atributo retornado por esse parmetro.


- Dia: buffer para armazenar atributo dia para. Aps a funo de atributo dia de execuo

devolvido atravs deste parmetro.


- Horrio: de buffer para armazenar horas atributo. Aps horas de d f

Requer

Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf_Fat_Init. O assinado ano; i d no i d i d V j Cf F A i

Exemplo

char ms, dia, horas, minutos; ... Cf_Fat_Get_File_Date (& anos, & meses, & dias, e horas, e minutos);

Cf_Fat_Set_File_Size
Prottipo Retorna Descrio Requer Exemplo
unsigned long Cf_Fat_Get_File_Size ();

Tamanho do arquivo atualmente atribudos em bytes. Esta funo l o tamanho de arquivo atualmente atribudo, em bytes. Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf_Fat_Init. O i i V j Cf F A i unsigned d long my_file_size;d fi id
... Cf_Fat_Get_File_Size my_file_size = ();

286

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Cf_Fat_Get_Swap_File
Prottipo Retorna
unsigned long Cf_Fat_Get_Swap_File (unsigned long sectors_cnt, char * Nome do arquivo, char file_attr);

Descrio

- Nmero do setor de partida para o arquivo de swap recm-criado, se houver espao livre suficiente no carto CF para criar um arquivo de tamanho necessrio. i Esta funo usada para criar um arquivo de swap de pr-nome e tamanho da CF mdia. Se um arquivo com o nome especificado j existe na mdia, busca de consetores 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 funo. Se ele no apagado e h ainda bastante espao para um novo arquivo de permuta, esta funo ir elimin-las depois alocao de espao de memria novo para um novo arquivo swap. O objetivo do arquivo de swap fazer com que a leitura ea escrita aos meios de comunicao do FC o mais rpido possvel, usando o Cf_Read_Sector () e Cf_Write_Sector () funes diretamente, sem que possa causar danos ao sistema FAT. Trocar arquivos podem ser considerado como uma "janela" na mdia, onde o usurio pode livremente escrever / ler os dados. objetivo principal na biblioteca do mikroC ser usado para a aquisio rpida de dados, quando a aquisio de tempo crtico foi concluda, os dados podem ser re-escrita em um "normal" arquivo, e formatado da maneira mais adequada. Parmetros:
- Sectors_cnt: nmero de setores consecutivos que o usurio quer que o arquivo de troca para ter. - Filename: nome do arquivo que deve ser atribudo para operaes de arquivo. O nome do arquivo

devem estar em formato DOS 8.3 (Nome_do_arquivo.extenso). O nome do arquivo e extenso ser automaticamente preenchido com espaos pela biblioteca, se tiverem menos de Bit Msc Descrio comprimento necessria 0x01 ("mikro.tx", ou seja - ". mikro tx">), para que o usurio no tem que cuidar disso. 0 Leia apenas O nome do arquivo e extenso so maisculas e minsculas. A biblioteca ir convert-los 0x02 Oculto para 1 caso2 apropriado automaticamente, assim que o usurio no tem que tomar cuidado com 0x04 Sistema isso. Alm disso, a fim 0x08 Volume Label para 3 manter compatibilidade com a primeira verso desta biblioteca, nomes de arquivos podem ser 0x10 4 Subdiretrio entrou como uma string em maisculas de 11 bytes de comprimento, com nenhum ponto 5 0x20 Arquivo chsaracter entre o nome do arquivo e extenso (ie "MIKROELETXT" -> somente, nunca encontrado 6 0x40 Dispositivo (uso interno MIKROELE.TXT). Neste caso os 3 ltimos caracteres da cadeia so consideradas como extenso de arquivo. ) 7 0x80 No utilizado - File_attr: criao de di arquivos e bandeiras attributs. Cada bit
corresponde

atribuveis arquivo apropriado:

Mikroelektronika - Solues de software e hardware para o mundo embutido

287

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Carto CF e FC biblioteca deve ser inicializado para operaes de arquivo. Veja Cf F I i //-------------- Tente criar um arquivo de swap com o arquivo
atributo, cujo tamanho ser de pelo menos 1.000 setores. / / Se for bem sucedido, ele envia o n do setor de comear tudo de UART unsigned long tamanho; ... size = Cf_Fat_Get_Swap_File (1000, "mikroE.txt", 0x20); if (tamanho) { UART_Write (0xAA); UART_Write (Lo (tamanho)); UART_Write (Hi (tamanho)); UART_Write (Superior (tamanho)); UART_Write (Mxima (tamanho)); UART_Write (0xAA); }

Bibliotecas
Requer

Exemplo

Exemplo Biblioteca

O exemplo a seguir demonstra vrios aspectos da biblioteca Cf_Fat16: Criao do novo arquivo e escrever para baixo; Abertura de arquivos existentes e reescrev-lo (a escrita de iniciar-de-arquivo); Abertura arquivo de dados existentes e acrescentando a ele (a escrita de ponta-de-arquivo): abrir um arquivo e ler dados de lo (envi-lo ao terminal USART); Criar e modificar vrios arquivos de uma s vez;
/ / Set pinagem compact flash char Cf_Data_Port em PORTD; sbit 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; em em em em em em em em TRISB7_bit; TRISB6_bit; TRISB5_bit; TRISB4_bit; TRISB3_bit; TRISB2_bit; TRISB1_bit; TRISB0_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 / / Fim do pinout cf

const LINE_LEN = 39; char err_txt [20] = "FAT16 no encontrado"; char file_contents [LINE_LEN] = "XX CF FAT16 biblioteca por Anton Rieckertn ";

288

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
nome [14] = "MIKRO00x.TXT"; char unsigned short loop, loop2; i, tamanho; unsigned long Buffer [512]; char

CAPTULO 7

Bibliotecas
/ / Os nomes de arquivos

/ / UART1 escrever um texto e nova linha (alimentao 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 comear com os novos dados for (loop = 1; loop <= 99; loop + +) { UART1_Write ('.'); file_contents [0] = loop / 10 + 48; file_contents [1%] loop = 10 + 48; Cf_Fat_Write (file_contents, LINE_LEN-1) / / gravar dados para o atribudo arquivo } } / / Cria muitos novos arquivos e grava os dados que lhes vazio M_Create_Multiple_Files () { para (loop2 = 'B'; loop2 <= 'Z'; loop2 + +) { UART1_Write (loop2) / / o sinal de progresso filename [7] = loop2 / / definir nome Cf_Fat_Assign (e nome do arquivo, 0xA0) / / encontrar o arquivo existente ou criar um novo Cf_Fat_Rewrite () / / Para limpar o arquivo e comear com os novos dados for (loop = 1; loop <= 44; loop + +) { file_contents [0] loop = 10 + 48; file_contents [1%] loop = 10 + 48; Cf_Fat_Write (file_contents, LINE_LEN-1) / / gravar dados para o atribudo arquivo } } } / / Abre um arquivo existente e reescreve-lo vazio M_Open_File_Rewrite () { filename [7] = 'C'; Cf_Fat_Assign (& Nome, 0); Cf_Fat_Rewrite (); for (loop = 1; loop <= 55; loop + +) {

Mikroelektronika - Solues de software e hardware para o mundo embutido

289

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
file_contents [0] loop = 10 + 65; file_contents [1%] loop = 10 + 65; Cf_Fat_Write (file_contents, LINE_LEN-1); atribudo arquivo } }

Bibliotecas

/ / Escreve dados para o

/ / Abre um arquivo existente e acrescenta dados a ele / / (E altera a data / hora) vazio M_Open_File_Append () { filename [7] = 'B'; Cf_Fat_Assign (& Nome, 0); Cf_Fat_Set_File_Date (2005,6,21,10,35,0); Cf_Fat_Append (); / arquivo / Prepare-se para anexar Cf_Fat_Write ("para 2005n mikroElektronika", 27); / / Gravar dados atribudo arquivo } / / Abre um arquivo existente, l os dados a partir dele e coloca-UART vazio M_Open_File_Read () { carter char; filename [7] = 'B'; Cf_Fat_Assign (& Nome, 0); Cf_Fat_Reset (e tamanho); / / Para ler o arquivo, tamanho do procedimento de retorno de arquivo for (i = 1; <i = tamanho; i + +) { Cf_Fat_Read (e personagem); UART1_Write (personagem); / / Escreve os dados para UART } } / / Exclui um arquivo. Se o arquivo no existir, ele vai ser criada / / E depois que foi excluda. vazio M_Delete_File () { filename [7] 'F'; Cf_Fat_Assign (filename, 0); Cf_Fat_Delete (); } / / Testa se o arquivo j existe, e se sim envia sua data de criao / / E tamanho do arquivo via UART vazio M_Test_File_Exist () { unsigned long fsize; ano; unsigned int unsigned short ms, dia, hora, minuto; unsigned char outstr [12]; filename [7] = 'B'; / descomente / esta linha de pesquisa para arquivos que FAZ existe / / Filename [7] 'F'; / descomente esta linha de pesquisa para arquivos que NO existe

290

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
se (Cf_Fat_Assign (Nome, 0)) { arquivo //--- foi encontrado - obter a sua data Cf_Fat_Get_File_Date (& anos, & meses, & dia, & hora e minuto); WordToStr (ano, outstr); UART1_Write_Text (outstr); ByteToStr (outstr ms); UART1_Write_Text (outstr); WordToStr (outstr, dia); UART1_Write_Text (outstr); WordToStr (outstr horas); UART1_Write_Text (outstr); WordToStr (outstr minutos); UART1_Write_Text (outstr); //--- Obter o tamanho do arquivo Cf_Fat_Get_File_Size fsize = (); LongToStr ((long assinado) fsize, outstr); UART1_Write_Line (outstr); } mais { //--- arquivo no foi encontrado - sinal que ele UART1_Write (0x55); Delay_ms (1000); UART1_Write (0x55); } } / / Tenta criar um arquivo de swap, cujo tamanho 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 funo para obter detalhes se (Tamanho) { LongToStr ((long assinado) err_txt, tamanho); UART1_Write_Line (err_txt); for (i = 0; i <5000; i + +) { Cf_Write_Sector (tamanho + +, buffer); UART1_Write ('.'); } } } / / Main. Descomente a funo (s) para testar a operao desejada (s) vazio main () { # Define COMPLETE_EXAMPLE / comentar essa linha para fazer simexemplo pler / menor

CAPTULO 7

Bibliotecas

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

291

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
ADCON1 | = 0x0F; CMCON | = 7; / / Inicializar UART1 mdulo UART1_Init (19200); Delay_ms (10); UART1_Write_Line ("PIC-Started"); / relatrio da CPI presentes / / Use fat16 formatao rpida, em vez de rotina init se uma formatao necessrio se (Cf_Fat_Init () == 0) { Delay_ms (2000); / / espera por um tempo at que o carto estabilizado / / Perodo depende usado carto CF //--- Iniciar o teste UART1_Write_Line ("Iniciar teste."); //--- Teste rotinas. Descomente-los um por um para testar certos recursos M_Create_New_File (); # Ifdef COMPLETE_EXAMPLE M_Create_Multiple_Files (); M_Open_File_Rewrite (); M_Open_File_Append (); M_Open_File_Read (); M_Delete_File (); M_Test_File_Exist (); M_Create_Swap_File (); # Endif UART1_Write_Line ("O Fim do teste."); } mais { UART1_Write_Line (err_txt) / / Nota: Cf_Fat_Init tenta inicialize um carto mais de uma vez. / / Se o carto no estiver presente, initializao pode durar mais tempo (dependendo da velocidade do clock) } } / / Configurar um pinos como digital / / Desligue comparadores

Bibliotecas

292

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

Pin diagrama de carto de memria CF

Mikroelektronika - Solues de software e hardware para o mundo embutido

293

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas EEPROM BIBLIOTECA

Memria EEPROM de dados est disponvel com uma srie de microcontroladores PIC. mikroC PRO para PIC inclui biblioteca para o trabalho confortvel com EEPROM.

Rotinas da biblioteca
- Eeprom_Read - Eeprom_Write

EEPROM_Read
Prottipo Retorna Descrio
unsigned short EEPROM_Read (unsigned int endereo);

Retorna byte do endereo especificado. L dados a partir de determinado endereo. endereo do parmetro do tipo inteiro, o que significa que ele suporta MCUs com mais de 256 bytes de EEPROM. Requer mdulo EEPROM. Certifique-se de um atraso mnimo de 20ms entre o uso sucessivo de rotinas EEPROM_Write e EEPROM_Read. Embora PIC ir escrever o valor correto, EEPROM_Read pode retornar um resultado indefinido.
unsigned short ter; ... ter = EEPROM_Read (0x3F);

Requer

Exemplo

EEPROM_Write
Prottipo Retorna
vazio EEPROM_Write (unsigned int endereo, unsigned short de dados);

Nada. Grava dados ao especificado endereo. endereo do parmetro do tipo inteiro,

Descrio

que

significa que ele suporta MCUs com mais de 256 bytes de EEPROM. Esteja ciente de que todas as interrupes sero desabilitados durante a execuo do
EEPROM_Write

Requer

ti (bit GIE d i t INTCON d ) R ti i t PREVI Requer mdulo EEPROM. Certifique-se de um atraso mnimo de 20ms entre o uso sucessivo de rotinas EEPROM_Write e EEPROM_Read. Embora PIC ir escrever o valor correto, EEPROM_Read pode retornar um resultado indefinido.
EEPROM_Write (0x32, 19);

Exemplo

294

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
O exemplo demonstra o uso de EEPROM Biblioteca.
char II; vazio main () { ANSEL = 0; ANSELH = 0; PORTB = 0; PORTC = 0; PORTD = 0; TRISB = 0; TRISC = 0; TRISD = 0; 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); PORTB mostrar PORTC mostrar EEPROM_Read = (0x02); lo em PORTB EEPROM_Read = (0x50); lo em PORTC / / Preencha buffer de dados / / Escreve os dados de endereo 0x80 + ii / / Escreve alguns dados no endereo 2 / / Escreve alguns dados no endereo 0150 / / Blink PORTB e diodos PORTC / / Para indicar incio de leitura / / Varivel de loop /

/ / Configurar um pinos como I / O digital

/ / L os dados de endereo 2 e / / L os dados de endereo 0x50 e

Delay_ms (1000); de (ii = 0; ii <32; ii + +) {/ / Ler bloco de 32 bytes de 0x80 endereo PORTD EEPROM_Read = (0x80 + II) / / dados e exibio em PORTD Delay_ms (250); } }

Mikroelektronika - Solues de software e hardware para o mundo embutido

295

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas Biblioteca Ethernet PIC18FXXJ60

PIC18FxxJ60 famlia de microcontroladores apresentam um mdulo controlador Ethernet incorporado. Esta

uma soluo completa de conectividade, incluindo implementaes completas de ambos os Media Access Control (MAC) e Fsica transceptor Layer (PHY) mdulos. Dois transformadores de pulso e um passivo poucos componentes so todos que so necessrios para conectar o microcontrolador diretamente a uma rede Ethernet de trabalho. O mdulo Ethernet atende a todas as especificaes IEEE 802.3 para conectividade de 10-BaseT para um par tranado de rede. incorpora uma srie de sistemas de filtragem de pacotes para limitar o pacote de entradaets. Ele tambm oferece um mdulo de DMA interna para transferncia rpida de dados e hardware IP assistida clculos de soma de verificao. Provises so feitas tambm para duas sadas de LED para indicar link e rede atividade Esta biblioteca fornece a posibilidade de utilizar facilmente recurso de ethernet do MCUs acima mencionados. Ethernet biblioteca PIC18FxxJ60 suporta: - O protocolo IPv4. - Requisies ARP. - ICMP echo requests. - Os pedidos UDP. - Os pedidos TCP (sem pilha, sem reconstruo de pacotes). - O cliente com cache ARP. - O cliente DNS. - Cliente UDP. - O cliente DHCP. - Fragmentao do pacote no suportado. Nota: A varivel biblioteca Global Ethernet_userTimerSec usado para manter trilha de tempo para todos os clientes implementaes (ARP, UDP de DNS e DHCP). de responsabilidade do usurio para incrementar essa varivel cada segundo em que o cdigo se algum dos clientes usado. Nota: Para usurios avanados, existem arquivos de cabealho ("eth_j60LibDef.h" e

"Eth_j60LibPrivate.h") em P18 usa \ pasta do compilador, com descrio de todas as rotinas e

variveis globais, relevantes para o usurio, implementado no PIC18FxxJ60 Ethernet Biblioteca.

296

www.mecatronicadegaragem.blogspot.com

Mikroelektroni ka - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
- Ethernet_Init - Ethernet_Enable - Ethernet_Disable - Ethernet_doPacket - Ethernet_putByte - Ethernet_putBytes - Ethernet_putString - Ethernet_putConstString - Ethernet_putConstBytes - Ethernet_getByte - Ethernet_getBytes - Ethernet_UserTCP - Ethernet_UserUDP - Ethernet_getIpAddress - Ethernet_getGwIpAddress - Ethernet_getDnsIpAddress - Ethernet_getIpMask - Ethernet_confNetwork - Ethernet_arpResolve - Ethernet_sendUDP - Ethernet_dnsResolve - Ethernet_initDHCP - Ethernet_doDHCPLeaseTime - Ethernet_renewDHCP

Mikroelektronika - Solues de software e hardware para o mundo embutido

297

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_Init
Prottipo Retorna
vazio Ethernet_Init (unsigned char * Mac, unsigned char * Ip, unsigned char FullDuplex);

Nada. Esta a rotina MAC do mdulo. Ele inicializa controlador Ethernet. Esta funo internamente subdividida em 2 partes para ajud-vinculador quando vem com pouca memria. configuraes do controlador Ethernet (parmetros no mencionados aqui so definidos como padro): - Recebe o endereo inicial do buffer: 0x0000. - Receber endereo final buffer: 0x19AD. - Transmitir o endereo inicial do buffer: 0x19AE. - Transmitir endereo final buffer: 0x1fff. - Buffer RAM de leitura / gravao ponteiros no modo de auto-incremento. - Receber filtros definidos como padro: CRC + MAC + MAC Unicast Broadcast na OU modo. - Controle de fluxo com TX e RX pausa quadros em modo full duplex. - Quadros so preenchidos com 60 + bytes CRC. - Tamanho mximo do pacote definido como 1518. - Back-to-Back-Inter Packet Gap: 0x15 em modo full duplex; 0x12 em half-duplex modo. - Non-Back-to-Back-Inter Packet Gap: 0x0012 em modo full duplex; 0x0C12 em modo half duplex. - Metade loopback duplex com deficincia. - LED de configurao: padro (LEDA link-status, atividade LEDB-link). Parmetros:
- Mac: RAM buffer que contm o endereo MAC vlido. - IP: memria intermdia que contm o endereo IP vlido.

Descrio

Requer

Nada.
# Define Ethernet_HALFDUPLEX 0 # Define um Ethernet_FULLDUPLEX

(H lf d l

Exemplo

unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} / / meu endereo MAC unsigned char myIpAddr = {192, 168, 1, 60} / / o meu IP addr Ethernet_Init (myIpAddr myMacAddr, Ethernet_FULLDUPLEX);

298

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ethernet_Enable
Prottipo Retorna
void Ethernet_Enable (enFlt unsigned char);

Nada. Esta a rotina MAC do mdulo. Esta rotina permite que o trfego de rede apropriada no o mdulo de MCU Ethernet interna por meio de ela receber filtros (unicast, multicast, broadcast, CDC). Tipo especfico de trfego de rede ser ativado se uma bit correspondente do parmetro essa rotina de entrada est definido. Portanto, mais do que um tipo de trfego de rede podem ser ativados ao mesmo tempo. Para este efeito, constantes biblioteca predefinida (ver tabela abaixo) pode ser ORed para formar adevalor de entrada apropriado. Bi Msc biblioteca Parmetros: Descrio t predefinidos - EnFlt: o trfego de rede / receber bandeiras filtro. Cada bit corresponde MAC trfego Broadcast / receber bandeira filtro. _Ethernet_BROADCAST a 0 0x01 aproQuando trfego de rede adequado / filtro de recepo: j MAC f d dif 1 0x02 MAC trfego Multicast / receber bandeira filtro. _Ethernet_MULTICAST Quando d fi id f no utilizado li MAC 2 0x04 none 3 4 5 6 7 0x08 0x10 0x20 0x40 0x80 no utilizado no utilizado CRC marca de verificao. Quando definido, pacotes com CRC i lid no utilizado MAC trfego Unicast / receber bandeira filtro. Quando j MAC f i none none
_Ethernet_CRC

Descrio

none
_Ethernet_UNICAST

Nota: Advance filtragem disponveis no MCU mdulo Ethernet internas, como a

Pattern Match, Magic Packet e Hash Table no pode ser ativada por este

rotina. Adicionalmente, todos os filtros, exceto CRC, habilitado com esta rotina ir trabalhar em O d i ifi t bid l d filt Mikroelektronika - Solues de software e hardware para o mundo embutido

299

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
Ethernet_Enable (_Ethernet_CRC | _Ethernet_UNICAST); / / enable CRC verificao e trfego Unicast

Bibliotecas
Requer Exemplo

Ethernet_Disable
Prottipo Retorna
vazio Ethernet_Enable (enFlt unsigned char);

Nada. Esta a rotina MAC do mdulo. Esta rotina desabilita o trfego de rede apropriada no Mdulo MCU Ethernet interna por meio de ela receber filtros (unicast, multicast, transmisso, CRC). Tipo especfico de trfego de rede ser desativada se o bit correspondente do parmetro essa rotina de entrada est definido. Portanto, mais do que um tipo de trfico de rede fic pode ser desativado, ao mesmo tempo. Para o efeito, constantes predefinidas biblioteca (Ver tabela abaixo) pode ser ORed para formar o valor de entrada apropriado. Parmetros:
- DisFlt: o trfego de rede / receber bandeiras filtro. Cada bit corresponde biblioteca Descrio a Bit Msc apro-

Descrio

trfego de rede adequado / filtro de recepo: 0 0x01 MAC trfego Broadcast / filtro de recepo pavilho. Quando j MAC f d dif 1 0x02 MAC trfego Multicast / receber bandeira filtro. Quando d fi id f no lutilizado i MAC 2 0x04 3 4 0x08 0x10

predefinidos

_Ethernet_BROADCAST _Ethernet_MULTICAST

no utilizado no usados CRC marca de verificao. Quando definido, _Ethernet_CRC 5 0x20 verificao de CRC ser ser desativado e pacotes com CRC invlido 6 0x40 no utilizado none MAC trfego Unicast / receber bandeira filtro. _Ethernet_UNICAST 7 0x80 Quando j MAC f i Nota: Advance filtragem disponveis no MCU interna Ethernet mdulo, como

none none none

Pattern Match, Magic Packet e Hash Table no pode ser desativado por esta rotina.

Nota: Esta rotina vai mudar configurao do filtro receber on-the-fly. No ser, no qualquer forma, mexer com ativar / desativar receber / transmitir a lgica ou qualquer outra parte

300

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Ethernet_Init ..
Ethernet_Disable (_Ethernet_CRC | _Ethernet_UNICAST); / desativar CRC verificao e trfego Unicast

CAPTULO 7

Bibliotecas

Ethernet_doPacket
Prottipo
unsigned char Ethernet_doPacket (); - 0 - Mediante o processamento de pacotes de sucesso (zero pacotes recebidos

Retorna

ou recebidos pacote processado com sucesso). - 1 - Por erro de recepo ou receber corrupo buffer. Ethernet controlador precisa ser reiniciado. - 2 - O pacote recebido no foi enviado para ns (no o nosso IP, nem endereo de broadcast IP). R b d IP f i IP 4 Esta a rotina MAC do mdulo. processos pacote recebido seguinte se existir. Os pacotes so processados da seguinte forma: - Requisies ARP e ICMP so respondidas automaticamente. - Mediante pedido TCP Ethernet_UserTCP a funo chamada para posterior processamento. - Mediante pedido da UDP Ethernet_UserUDP funo chamado para processamento adicional. mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
se (Ethernet_doPacket () == 0) {/ / processo pacotes recebidos ... }

Descrio

Requer Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

301

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_putByte
Prottipo Retorna
vazio Ethernet_putByte (unsigned char v);

Nada. Esta a rotina MAC do mdulo. Ele armazena um byte para endereo apontado pelo curponteiro escrever controlador alugar Ethernet (EWRPT). Parmetros:

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


char dados; ... Ethernet_putByte (dados) / / colocar um byte em Ethernet controller buffer

Ethernet_putBytes
Prottipo Retorna
vazio Ethernet_putBytes (unsigned char * Ptr, unsigned char n);

Nada. Esta a rotina MAC do mdulo. Ele armazena o nmero solicitado de bytes em Ethernet RAM do controlador a partir de correntes Ethernet controlador escrever ponteiro (EWRPT) Local. Parmetros:
- Ptr: RAM tampo contendo bytes a serem gravados na memria RAM controlador

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


char * Buffer = "mikroElektronika"; ... Ethernet_putBytes (buffer, 16); / / coloque uma matriz de RAM em Ethernet buffer do controlador

302

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ethernet_putConstBytes
Prottipo Retorna
vazio Ethernet_putConstBytes (const unsigned char * Ptr, no assinado char n);

Nada. Esta a rotina MAC do mdulo. Ele armazena o nmero de bytes solicitado const em EthRAM a partir do controlador ernet do controlador Ethernet atual ponteiro escrever (EWRPT) local. Parmetros:
- Ptr: const tampo contendo bytes a serem gravados na memria RAM controlador

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


const char * Buffer = "mikroElektronika"; ... Ethernet_putConstBytes (buffer, 16); / / colocar um array em const buffer do controlador Ethernet

Ethernet_putString
Prottipo Retorna
unsigned int Ethernet_putString (unsigned char * Ptr);

Nmero de bytes gravados na memria RAM controlador Ethernet. Esta a rotina MAC do mdulo. Ele armazena string todo (excluindo a terminao nula) em RAM Ethernet controller a partir de controlador Ethernet atual ponteiro escrever (EWRPT) local. Parmetros:
- Ptr: string a ser gravado na memria RAM controlador Ethernet.

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


char * Buffer = "MikroElektronika"; ... Ethernet_putString (buffer); / / coloque uma seqncia de RAM em Ethernet buffer do controlador

Mikroelektronika - Solues de software e hardware para o mundo embutido

303

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_putConstString
Prottipo Retorna
unsigned int Ethernet_putConstString (const unsigned char * Ptr);

Nmero de bytes gravados na memria RAM controlador Ethernet. Esta a rotina MAC do mdulo. Ele armazena string const todo (excluindo a resciso nulo o) para a RAM do controlador Ethernet a partir de controlador Ethernet atual escrever ponteiro (EWRPT) local. Parmetros: mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
const char * Buffer = "mikroElektronika"; ... Ethernet_putConstString (buffer); / / colocar um const string em buffer do controlador Ethernet

Descrio

Requer Exemplo

Ethernet_getByte
Prottipo Retorna Descrio Requer Exemplo
unsigned char Ethernet_getByte ();

Byte lido RAM controlador Ethernet. Esta a rotina MAC do mdulo. Ele busca um byte de endereo apontado pelo atual ponteiro ler Ethernet controller (ERDPT). mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
char buffer; ... buffer = Ethernet_getByte (); / / l um byte de con-Ethernet buffer Troller's

Ethernet_getBytes
Prottipo Retorna
vazio Ethernet_getBytes (unsigned char * Ptr, no assinado int addr, unsigned char n);

Nada. Esta a rotina MAC do mdulo. Ele busca equested nmero de bytes de Ethernet RAM do controlador a partir de determinado endereo. Se o valor de 0xFFFF passado como o parmetro de endereo, a leitura incio do controlador Ethernet atual leia localizao (ERDPT) ponteiro. Parmetros:
- Ptr: buffer para armazenar bytes lidos a partir da RAM controlador Ethernet. Add d d t l d Eth t RAM V l lid

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


char buffer [16]; ... Ethernet_getBytes (buffer, 0x100, 16); / / l 16 bytes, a partir a partir do endereo 0x100

304

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ethernet_UserTCP
Prottipo Retorna
unsigned int Ethernet_UserTCP (unsigned char * RemoteHost, no assinado int RemotePort, unsigned int localPort, unsigned int reqLength); - 0 - No deveria ser um resposta ao pedido.

- Comprimento do campo de resposta HTTP TCP / dados - caso contrrio. Esta a rotina de mdulo TCP. Ele chamado internamente pela biblioteca. O acesso do usurio es para o pedido de TCP / HTTP usando algumas das rotinas Ethernet_get. A usurio coloca dados no buffer de transmisso usando algumas das rotinas Ethernet_put. A funo deve retornar o tamanho em bytes da resposta HTTP TCP / ou 0 se no houver no nada para transmitir. Se no houver necessidade de responder s solicitaes TCP / HTTP, apenas definir esta Funo com retorno (0) como uma nica instruo. Parmetros:
- RemoteHost: endereo IP do cliente. - RemotePort: porto cliente TCP. - LocalPort: porta para que o pedido enviado. - ReqLength: TCP / solicitao HTTP comprimento do campo de dados.

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init. Essa funo chamado internamente pela biblioteca e no deve ser chamado pelo cdigo de usurio.

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

305

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_UserUDP
Prottipo Retorna
unsigned int Ethernet_UserUDP (unsigned char * RemoteHost, no assinado int RemotePort, unsigned int destPort, unsigned int reqLength); - 0 - no deve haver uma resposta ao pedido.

- Comprimento do campo de dados UDP resposta - outra forma. Esta a rotina de mdulo UDP. Ele chamado internamente pela biblioteca. O acesso do usurio es para o pedido UDP usando algumas das rotinas Ethernet_get. O usurio coloca dados no buffer de transmisso usando algumas das rotinas Ethernet_put. A funo deve retornar o tamanho em bytes da resposta UDP, ou 0 se nada para transmitir. Se voc no precisa responder s solicitaes UDP, basta definir esta funo com um return (0) como nica instruo. Parmetros:
- RemoteHost: endereo IP do cliente. - RemotePort: porta do cliente. - DestPort: porta para que o pedido enviado. - ReqLength: solicitao UDP comprimento do campo de dados.

Descrio

Requer Exemplo

Nota: O cdigo fonte da funo fornecida com exemplos de projetos mdulo Ethernet deve ser inicializado. Veja Ethernet_Init. Essa funo chamado internamente pela biblioteca e no deve ser chamado pelo cdigo de i

Ethernet_getlpAddress
Prottipo Retorna
unsigned char * Ethernet_getIpAddress ();

Ponter para a varivel global explorao endereo IP. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar endereo IP atribudo.

Descrio Nota: Usurio deve sempre copiar o endereo IP do local de RAM retornado por esta rotina em que buffer prprio endereo IP. Estes locais no devem ser alterados pelo usurio, em qualquer caso! Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
unsigned char endereoip [4] / / endereo IP do usurio buffer ... memcpy (ipaddr, Ethernet_getIpAddress (), 4); / / recupera o endereo IP

306

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ethernet_getGwlpAddress
Prottipo Retorna
unsigned char * Ethernet_getGwIpAddress ();

Ponter para a varivel global explorao endereo IP do gateway. Esta rotina deve ser usado quando o servidor DHCP est presente na rede para buscar atribudo o endereo IP do gateway.

Descrio Nota: O usurio deve sempre copiar o endereo IP do local de RAM retornado por esta rotina em seu prprio gateway buffer endereo IP. Estes locais no devem ser alteradas pelo usurio, em qualquer caso! Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
unsigned char gwIpAddr [4]; / / user gateway buffer endereo IP ... memcpy (gwIpAddr, Ethernet_getGwIpAddress (), 4); / / busca gateway endereo IP

Ethernet_getDnslpAddress ();
Prottipo Retorna
unsigned char * Ethernet_getDnsIpAddress

Ponter para a varivel global explorao DNS o endereo IP. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar atribudo endereo IP do DNS.

Descrio Nota: O usurio deve sempre copiar o endereo IP de a localizao RAM retornado por esta rotina em seu prprio buffer DNS o endereo IP. Estes locais no devem ser alteradas pelo usurio, em qualquer caso! Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
unsigned char dnsIpAddr [4]; / user / Buffer DNS o endereo IP ... memcpy (dnsIpAddr, Ethernet_getDnsIpAddress (), 4); / / busca de DNS endereo do servidor

Mikroelektronika - Solues de software e hardware para o mundo embutido

307

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_getlpMask
Prottipo Retorna
unsigned char * Ethernet_getIpMask ()

Ponter para a varivel global explorao IP, mscara de sub-rede. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar atribudo mscara sub-rede IP.

Descrio Nota: O usurio deve sempre copiar o endereo IP do Local de RAM retornado por esta rotina em seu prprio IP buffer mscara. Estes locais no devem ser alteradas pelo usurio, em qualquer caso! Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
unsigned char IPMask [4]; / user / IP buffer mscara ... memcpy (IPMask, Ethernet_getIpMask (), 4); / / recupera IP mscara

Ethernet_confNetwork
Prottipo Retorna
vazio Ethernet_confNetwork (char * IPMask, char * GwIpAddr, char * DnsIpAddr);

Nada. Configura os parmetros de rede (IP, mscara de sub-rede, gateway IP endereo IP de DNS endereo) quando o DHCP no usada.

Descrio

Parmetros:
- IPMask: mscara de sub-rede IP. - GwIpAddr endereo IP do gateway. - DnsIpAddr: DNS o endereo IP.

Nota: Os parmetros de rede acima mencionadas devem ser fixadas por esta Requer mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
unsigned char IPMask [4] = {255, 255, 255, 0}; / network / mscara (por exemplo: 255.255.255.0) unsigned char gwIpAddr [4] = {192, 168, 1, 1}; / gateway / (Roteador), endereo IP unsigned char dnsIpAddr [4] = {192, 168, 1, 1} / / serv DNS er endereo IP ... Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr); / network / set parmetros de configurao

Exemplo

308

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ethernet_arpResolve
Prottipo Retorna
unsigned char * Ethernet_arpResolve (unsigned char * Ip, no assinado char tmax);

- Endereo MAC para trs o endereo IP - o endereo IP solicitado foi resolvido. - 0 - De outra forma. Esta a rotina do mdulo ARP. Ele envia uma solicitao ARP para determinado endereo IP e aguarda ARP resposta. Se o endereo IP solicitado foi resolvido, um ARP entrada de dinheiro usada para armazenao da configurao. dinheiro ARP pode armazenar at 3 entradas. Para ARP referem-se a estrutura de caixa "Eth_j60LibDef.h" cabealho do arquivo na pasta do compilador Uses/P18. Parmetros:
- IP: endereo IP a ser resolvido. - Tmax: tempo em segundos para esperar por uma resposta.

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


no assinado char IpAddr [4] = {192, 168, 1, 1} / / endereo IP ... Ethernet_arpResolve (IpAddr, 5); / / pega o endereo MAC por trs da acima do endereo IP, aguarde 5 segundos para a resposta

Ethernet_sendUDP
Prottipo Retorna
unsigned char Ethernet_sendUDP (unsigned char * DestIP, no assinado int sourcePort, unsigned int destPort, unsigned char * Pkt, unsigned int pktLen); - 1 - Pacote UDP foi enviada com sucesso. - 0 - De outra forma.

Esta a rotina de mdulo UDP. Ele envia um pacote UDP na rede. Parmetros: Descrio
DestIP: remoto endereo IP do host. SourcePort: nmero da porta UDP local de origem. DestPort: destino nmero da porta UDP. Pkt: pacotes para transmitir. PktLen: comprimento em bytes do pacote para transmitir.

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


unsigned char IpAddr [4] = {192, 168, 1, 1} / / endereo IP remoto ... Ethernet_sendUDP (IpAddr, 10001, 10001, "Ol", 5); / / envia Ol messbio, para o endereo IP acima, de porta UDP 10001 para a porta UDP 10001

Mikroelektronika - Solues de software e hardware para o mundo embutido

309

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_dnsResolve
Prottipo Retorna
unsigned char * Ethernet_dnsResolve (unsigned char * Host, no assinado char tmax);

- Ponteiro para o local onde o endereo IP - o nome do host solicitado foi resolvido. - 0 - De outra forma. Este o DNS mdulo 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 endereo IP armazenado na varivel global biblioteca e um ponteiro que contm este endereo retornado pela rotina. UDP porta 53 usada como porta de DNS. Parmetros:
- Host: nome do host para ser resolvido. - Tmax: tempo em segundos para esperar por uma resposta.

Descrio

Nota: Os servios de Ethernet no so interrompidos enquanto esta rotina aguarda DNS t O t d t d d mdulo Ethernet deve ser inicializado.Veja Ethernet_Init.

Requer

t d

Exemplo

unsigned char * RemoteHostIpAddr [4] / / usurio do host buffer endereo IP ... / / Servidor SNTP: / Zurique / Sua: Laboratrio de Sistemas Integrveis, da Sua Fed. Inst. de Tecnologia / / 129.132.2.21: swisstime.ethz.ch / / Servios rea: Sua e Europa memcpy (remoteHostIpAddr, Ethernet_dnsResolve ("swisstime.ethz.ch", 5), 4);

310

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ethernet_initDHCL
Prottipo Retorna
unsigned char Ethernet_initDHCP (unsigned char tmax); - 1 - Parmetros de rede foram obtidos com sucesso. - 0 - De outra forma.

Esta a rotina de mdulo de DHCP. Ele envia um pedido DHCP para os parmetros de rede (IP, gateway, DNS e endereos IP, mscara de sub-rede) e aguarda pela resposta de DHCP. Se os parmetros solicitados foram obtidos com sucesso, seus valores so armazenados em a biblioteca de variveis globais. Estes parmetros podem ser obtidos usando a biblioteca apropriada, IP comear Descrio rotinas: - Ethernet_getIpAddress - buscar o endereo IP. - Ethernet_getGwIpAddress - buscar endereo IP do gateway. - Ethernet_getDnsIpAddress - buscar DNS o endereo IP. - Ethernet_getIpMask - buscar IP, mscara de sub-rede. Porta UDP 68 usado como porta de cliente DHCP e UDP 67 usado como serv DHCP er porta. Parmetros:
- Tmax: tempo em segundos para esperar por uma resposta.

Nota: Os servios de Ethernet no so interrompidos enquanto esta rotina Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
... Ethernet_initDHCP (5); / / pega rede configurao do servidor DHCP, aguarde 5 segundos para a resposta ...

Mikroelektronika - Solues de software e hardware para o mundo embutido

311

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ethernet_doDHCPLeaseTime
Prottipo Retorna Descrio Requer
unsigned char Ethernet_doDHCPLeaseTime (); - 0 - Tempo de concesso ainda no tenha terminado ainda. - 1 - Tempo de concesso expirou, hora de renovar.

Esta a rotina de mdulo de DHCP. Ela cuida de concesso de endereo IP vez por decretando o tempo de concesso global biblioteca do contador. Quando esse tempo expirar, mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.
while (1) { ... if (Ethernet_doDHCPLeaseTime ()) ... / / hora de renovar o IP Endereo de locao }

Exemplo

Ethernet_renewDHCP
Prottipo Retorna
unsigned char Ethernet_renewDHCP (unsigned char tmax); - 0 - sobre o sucesso (tempo de concesso foi renovada). - 1 - De outra forma (pedido de renovao expirou).

Descrio

Esta a rotina de mdulo de DHCP. Ele envia o endereo IP arrendamento pedido de renovao de tempo para Servidor DHCP. Parmetros:

Requer

mdulo Ethernet deve ser inicializado. Veja Ethernet_Init.


while (1) { ... if (Ethernet_doDHCPLeaseTime ()) Ethernet_renewDHCP (5); / / hora de renovar o endereo IP, com 5 segundos para uma resposta ... }

Exemplo

312

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
Este cdigo 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 cabealho feito de IP da mquina remota e nmero da porta - O conselho vai responder a solicitaes HTTP na porta 80, com o mtodo GET caminhos: / Vai retornar a pgina HTML principal / S ir retornar o status da placa como texto / T0 ... / T7 ir mudar para RD0 RD7 pouco e retornar HTML pgina principal todos os outros pedidos de retorno tambm HTML pgina principal.
# Define _Ethernet_HALFDUPLEX # Define Ethernet_FULLDUPLEX 0 1

/************************************************* *********** * Cordas ROM constante * / const unsigned char httpHeader [] = "HTTP/1.1 200 OKnContent tipo:" / / Cabealho HTTP httpMimeTypeHTML [] = "text / htmlnn"; const unsigned char / / Tipo de MIME HTML const unsigned char httpMimeTypeScript [] = "text plainnn /"; / / Tipo MIME TEXTO unsigned char HttpMethod [] = "GET /"; / * * Pgina web, divididos em 2 partes: * Quando chegar curto de ROM, os dados fragmentado tratado mais eficientemente pelo linker * * Esta pgina HTML chama as placas para obter o seu estatuto, e constri se com javascript * / * Indexpage = / / Mude o endereo IP da pgina para const char 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 - Solues de software e hardware para o mundo embutido

313

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
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> # boto" + 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> "; * IndexPage2 = "</ table> </ td> const char <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> HTTP pedido Este # <script> Document.write (REQ) </ script> </ BODY> </ HTML> "; /*********************************** RAM variveis * * / myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f}; unsigned char / / Meu endereo MAC unsigned char myIpAddr [4] = {192, 168, 20, 60}; / / O meu endereo IP unsigned char gwIpAddr [4] = {192, 168, 20, 6}; / gateway / (Roteador), IP endereo IPMask [4] = {255, 255, 255, 0}; / mscara de rede / unsigned char (Por exemplo: 255.255.255.0) unsigned char dnsIpAddr [4] = {192, 168, 20, 1}; / / Endereo IP do servidor DNS unsigned char unsigned char unsigned long GetRequest [15] / / buffer solicitao HTTP dyna [30]; / / buffer para a resposta dinmica httpCounter = 0 / / contador de HTTP pedidos

Bibliotecas

314

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
/******************************************* * funes * / / * * Colocar a string constante apontada por s para o con-Ethernet Troller do buffer de transmisso. * / / * PutConstString unsigned int (const char * s) { ctr unsigned int = 0; while (* s) { Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / *

CAPTULO 7

Bibliotecas

/ * * Ele vai ser muito mais rpido de usar a biblioteca Ethernet_putConstString roudente * Em vez de putConstString rotina acima. No entanto, o cdigo ser ser um pouco * Pouco maior. O usurio deve escolher entre tamanho e velocidade e escolher o implementao 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 transmit buffer * / / * PutString unsigned int (char * s) { ctr unsigned int = 0; while (* s) { Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / * / *

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

315

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
* Ele vai ser muito mais rpido de usar a biblioteca Ethernet_putString rotina * Em vez de putString rotina acima. No entanto, o cdigo ser uma pouco * Pouco maior. O usurio deve escolher entre tamanho e velocidade e escolher o implementao que suites * best-lo. Se voc optar por ir com a definio putStringo acima * A linha # define abaixo devem ser comentadas. * * / # Define putString Ethernet_putString / * * Esta funo chamada pela biblioteca * O usurio acessa o pedido HTTP por chamadas sucessivas para Ethernet_getByte () * O usurio coloca os dados no buffer de transmisso por chamadas sucessivas para Ethernet_putByte () * A funo deve retornar o tamanho em bytes da resposta HTTP, ou 0 se nada para transmitir * * Se voc no precisa de responder a pedidos HTTP, * Apenas definir essa funo com um return (0) como nica instruo * * / unsigned int Ethernet_UserTCP (unsigned char * RemoteHost, no assinado int RemotePort, unsigned int localPort, unsigned int reqLength) { unsigned int len = 0; / / comprimento resposta minha i / / de propsito geral char unsigned char if (localPort! = 80) / / Eu ouo apenas para solicitao da web na porta 80 { return (0); } / / Obtm 10 bytes primeiro, somente o pedido, o resto no importa aqui for (i = 0; i <10; i + +) { GetRequest [i] = Ethernet_getByte (); } GetRequest [10] = 0; if (memcmp (GetRequest, HttpMethod, 5)) / / s mtodo GET suportados aqui { return (0); }

Bibliotecas

316

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
httpCounter + +; / / Mais um pedido feito

CAPTULO 7

Bibliotecas

if (GetRequest [5] 's' ==) / / se o nome do caminho comea com pedido s, armazenamento dinmico de dados em buffer de transmisso { / / A string de texto respondeu por essa solicitao pode ser interpretadas como declaraes de javascript / / Por navegadores putConstString len = (httpHeader); / / cabealho 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 (botes) 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 comea a pedido com t, alternar PORTD nmero de bits (LED) que vem depois { bitmask = 0; / mscara de bits para unsigned char if (GetRequest (isdigit [6])) / / se 0 <= pouco <= nmero 9, os bits 8 e 9 no existe, mas no importa {

Mikroelektronika - Solues de software e hardware para o mundo embutido

317

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
bitmask GetRequest = [6] - '0 '; / / converter para inteiro ASCII mscara de bits = 1 <bitmask </ / criar mscara de bits PORTD ^ = bitmask; / alternar / PORTD com xor operador } } if (len == 0) / / o que fazer para por defeito { putConstString len = (httpHeader); / / cabealho HTTP len + = putConstString (httpMimeTypeHTML) / / com o tipo MIME HTML len + = putConstString (indexpage); / HTML parte da primeira pgina len + = putConstString (indexPage2); / / parte segunda pgina HTML } retorno (len); / / retorna para a biblioteca com o nmero de bytes para transmitir } / * * Esta funo chamada pela biblioteca * O usurio acessa o pedido UDP por chamadas sucessivas para Ethernet_getByte () * O usurio coloca os dados no buffer de transmisso por chamadas sucessivas para Ethernet_putByte () * A funo deve retornar o tamanho em bytes da resposta UDP, ou 0 se nada para transmitir * * Se voc no precisa responder aos pedidos UDP, * Apenas definir essa funo com um return (0) como nica instruo * * / unsigned int Ethernet_UserUDP (unsigned char * RemoteHost, no assinado int RemotePort, unsigned int destPort, reqLength unsigned int) { len / / comprimento resposta minha unsigned int / / Resposta feito do endereo IP do host remoto de seres humanos, leiaformato capaz ByteToStr (remoteHost [0], Dyna) / / byte primeiro endereo 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] = ':'; / / Nmero da porta, em seguida, o anfitrio remoto WordToStr (RemotePort, dyna + 16); / / Adiciona o separador

Bibliotecas

318

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
dyna [21] WordToStr dyna [27] dyna [28] '['; (destPort, dyna + 22); ']'; = 0;

CAPTULO 7

Bibliotecas

/ / O comprimento total do pedido o comprimento do seqncia dinmica mais o texto do pedido len = 28 + reqLength; / / Coloca a dinmica string no buffer de transmisso Ethernet_putBytes (dyna, 28); / / Em seguida, coloca a corda pedido convertido em char superior para o buffer de transmisso while (reqLength -) { Ethernet_putByte (toupper (Ethernet_getByte ())); } retorno (len); resposta UDP } / / Volta para a biblioteca com o comprimento do

/ * * Entrada principal * / main () vazio { 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 botes

/ / Set PORTD como sada

/ * * Inicializar controlador Ethernet * / Ethernet_Init (myIpAddr myMacAddr, Ethernet_FULLDUPLEX); / / Dhcp no sero utilizados aqui, portanto, use pr- Endereos Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr);

Mikroelektronika - Solues de software e hardware para o mundo embutido

319

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
/ / Faz para sempre while (1) { / * * Se necessrio, teste o valor de retorno para obter o cdigo de erro * / Ethernet_doPacket () / / processo de pacotes Ethernet de entrada / * * Adicionar o seu material aqui, se necessrio * Ethernet_doPacket () deve ser chamado o mais rpido possvel * Caso contrrio, os pacotes podem ser perdidos * / } }

Bibliotecas

320

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

BIBLIOTECA DE MEMRIA FLASH


Esta biblioteca fornece rotinas para acessar microcontrolador de memria Flash. Note-se que prottipos diferentes para as famlias PIC16 e PIC18.

Nota: Devido s especificidades P16/P18 flash famlia, biblioteca flash MCU dependente. Como a famlia P18 significantlly diferem no nmero de bytes que podem ser apagados e / ou escrita para MCUs especfico, o sufixo justificativo acrescentado aos nomes dos funes, a fim de torn-lo mais fcil de utiliz-los. operaes de memria Flash so MCU dependentes:

1. Leia operaes apoiadas. Para este grupo de funo s ler MCU apli cadas. 2. Leia e Escrever operaes apoiadas (escrever executado como apagar e gravao). Para este grupo de MCU ler e escrever funes so implementadas. Note-se que escrever operao que executada como apag-e-escrever, pode escrever bytes menor do que apaga. 3. Ler, Escrever e Apagar operaes apoiadas. Para este grupo de leitura MCU, funes escrever e apagar so implementadas. Ainda mais um bloco de memria, flash tem de ser apagado antes de escrita (operao de gravao no executado como apagar eescrever). 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 - Solues de software e hardware para o mundo embutido

321

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
FLASH_Read
Prottipo
/ / Para PIC16 no assinado FLASH_Read (unsigned endereo); / / Para PIC18 unsigned short FLASH_Read (long endereo);

Retorna Descrio Requer

Retorna dados byte da memria Flash. L dados do endereo especificado no Flash memria. Nada.
/ / Para PIC18 unsigned short tmp; ... tmp FLASH_Read = (0x0D00); ...

Exemplo

FLASH_Read_N_Bytes
Prottipo Retorna Descrio Requer Exemplo
vazio FLASH_Read_N_Bytes (long endereo, Char * data_, unsigned int N);

Nada. L dados de N do especificado endereo em memria Flash para varibale apontado por
dados

Nada.
FLASH_Read_N (0x0D00, data_buffer, sizeof (data_buffer));

322

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

FLASH_Write
/ / Para PIC16 vazio FLASH_Write (unsigned endereo, unsigned int * de / / Para PIC18 vazio FLASH_Write_8 (long endereo, Char * de vazio FLASH_Write_16 (long endereo, Char * de vazio FLASH_Write_32 (long endereo, Char * de vazio FLASH_Write_64 (long endereo, Char * de dados); dados); dados); dados); dados);

Prottipo

Retorna

Nada. Grava bloco de dados para a memria Flash. tamanho do bloco MCU dependentes.

Descrio

P16: Esta funo pode apagar segmento de memria antes de escrever bloco de dados a ele (MCU dependente). Alm disso, o segmento de memria, que sero apagados pode ser maior que o tamanho do bloco de dados que sero gravados (MCU dependente). Portanto, recomenda-se a escrever, como muitos bytes como apagar. FLASH_Write 4l i que i fl h li h i i h d A memria flash d ir ser escrito pode ter que ser apagada antes que essa funo h d MCU (d d ) em l MCU d h i lh Escrever valores consecutivosC 64 posies consecutivas, a partird0x0D00:
unsigned short toWrite [64]; ... / / Inicializa array: para (I = 0; i <64; i + +) toWrite [i] = i; / / Escreve o contedo da matriz para o endereo 0x0D00: FLASH_Write_64 (0x0D00, toWrite);

Requer

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

323

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
FLASH_Erase
Prottipo
/ / Para PIC16 vazio FLASH_Erase (unsigned endereo); / / Para PIC18 vazio FLASH_Erase_64 (long endereo); vazio FLASH_Erase_1024 (long endereo);

Retorna Descrio Requer Exemplo

Nada. Apaga um bloco de memria a partir de um determinado endereo. Para P16 familly implementared somente para aqueles MCU, cuja memria flash no suporta apagar e gravao ( l d d d lh ) Nada. Apagar um bloco de memria de 64 bytes de memria, a partir do endereo 0x0D00:
S 64 (0 0 00)

FLASH_Erase_Write
/ / Para PIC18

Prottipo

vazio FLASH_Erase_Write_64 (long endereo, dados char *); vazio FLASH_Erase_Write_1024 (long endereo, dados char *);

Retorna Descrio Requer

Nenhum. Apagar em seguida, escrever de memria bloco a partir de um determinado d Nada.


char toWrite [64]; int i; ... / / Inicializa array: for (i = 0; i <64; i + +) toWrite [i] = i; / / Apagar bloco de memria no endereo 0x0D00 em seguida, escrever contedo a matriz para o endereo 0x0D00: FLASH_Erase_Write_64 (0x0D00, toWrite);

Exemplo

324

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
O exemplo demonstra simples escrever para a memria 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; PORTB = 0; TRISB = 0; PORTC = 0; TRISC = 0; Delay_ms (500);

/ / Configurar um pinos como I / O digital // // // // PORTB inicial valor Definir PORTB como sada PORTC valor inicial Definir PORTC como sada

/ / Escreve todos os blocos / / Para a memria do programa so feitas at 16 palavras por apagar / / Oito palavras operaes de gravao. A operao de gravao / / borda alinhados e no pode ocorrer atravs das fronteiras. / / Por isso, recomendada a realizao de flash escreve em 16 palavras pedaos. / / por isso que 4 bits mais baixos do comeo endereo [03:00] deve ser zero. / / Desde rotina FLASH_Write realiza escreve em blocos de 4 palavras, / / precisamos cham-la quatro vezes seguidas. addr = 0x0430, / / endereo inicial do Flash, vlida 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 - Solues de software e hardware para o mundo embutido

325

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas GRFICO LCD BIBLIOTECA

A mikroC PRO para PIC fornece uma biblioteca para o funcionamento 128x64 grfico LCD (com comumente usado Samsung controlador KS108/KS107). Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool.

As dependncias externas do LCD Grfico Biblioteca


As seguintes variveis devem ser definido em todos os projectos usando LCDchar Grfico sfr extern
GLCD_DataPort; sbit sfr extern GLCD_CS1; sbit sfr extern GLCD_CS2; sbit sfr extern GLCD_RS; sbit sfr extern GLCD_RW; sbit sfr extern GLCD_EN; sbit sfr extern GLCD_RST; sbit sfr extern GLCD_CS1_Direction; sbit sfr extern GLCD_CS2_Direction; sbit sfr extern GLCD_RS_Direction; sbit sfr extern GLCD_RW_Direction; sbit sfr extern GLCD_EN_Direction; sbit sfr extern GLCD_RST_Direction;

Descrio:

Exemplo:
char GLCD_DataPort em PORTD;

GLCD porta de dados. Chip Selecione uma

sbit GLCD_CS1 em RB0_bit; li h sbit GLCD_CS2 em Chip Select 2 linha. RB1_bit; Registre-se selecionar a sbit GLCD_RS em RB2_bit; li h sbit GLCD_RW em Read / Write linha. RB3_bit; sbit GLCD_EN em Habilitar linha. RB4_bit; sbit GLCD_RST em linha de reposio. RB5_bit;

Direo do Chip Selecione um alfinete. Direo do Chip Selecione de 2 pinos. Direo do Register pinos de seleo. Direo do Read / Write pino. Direo da Habilitar alfinete. Direo do Reset alfinete.

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;

326

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
rotinas bsicas: - Glcd_Init - Glcd_Set_Side - Glcd_Set_X - Glcd_Set_Page - Glcd_Read_Data - Glcd_Write_Data rotinas avanadas: - 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 - Solues de software e hardware para o mundo embutido

327

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Glcd_Init
Prottipo Retorna Descrio
vazio Glcd_Init ();

Nada. Inicializa o mdulo GLCD. Cada uma das linhas de controle tanto um porto e pin-config mensurvel, enquanto que as linhas de dados devem ser em uma nica porta ( i <00 07>) As variveis 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 / gravao de pino GLCD_EN: pino do sinal Enable GLCD_RST: Reset sinal GLCD_DataPort: porta de dados GLCD_CS1_Direction: Direo do Chip selecione um pino GLCD_CS2_Direction: Direo do Chip selecione 2 pinos GLCD_RS_Direction: Direo do sinal selecione Registrar pin GLCD_RW_Direction: Direo da leitura / gravao do sinal do pino GLCD_EN_Direction: Direo do sinal Enable pin GLCD_RST_Direction: Direo do pino do sinal Reset

Requer

devem ser definidas antes de utilizar esta funo.


/ / GLCD configuraes de pinagem char GLCD_DataPort em PORTD; sbit sbit sbit sbit sbit sbit GLCD_CS1 em RB0_bit; GLCD_CS2 em RB1_bit; GLCD_RS em RB2_bit; GLCD_RW em RB3_bit; GLCD_EN em RB4_bit; GLCD_RST em RB5_bit;

Exemplo

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

328

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Glcd_Set_Side
Prottipo Retorna
vazio Glcd_Set_Side (unsigned short x_pos);

Nada. Seleciona lado GLCD. Consulte a ficha GLCD para explicao detalhada. Parmetros:

Descrio

- X_pos: posio no eixo-x. Valores vlidos: 0 .. 127

O parmetro 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 explicao de layout de pgina ver esquemtica na Requer parte inferior GLCD precisa ser inicializado, veja Glcd_Init rotina. As duas linhas seguintes so equivalentes, e ambos selecione no lado esquerdo da GLCD:
Glcd_Select_Side (0); Glcd_Select_Side (10);

Exemplo

Glcd_Set_X
Prottipo Retorna
vazio Glcd_Set_X (unsigned short x_pos);

Nada. Define a posio do eixo x para x_pos pontos a partir da margem esquerda do GLCD dentro do selectlado ed.

Descrio Parmetros:
- X_pos: posio no eixo-x. Valores vlidos: 0 .. 63

Requer Exemplo

Nota: Para lateral, eixo x e na pgina explicao layout ver esquema em baixo d i GLCD precisa ser inicializado, veja Glcd_Init rotina.
Glcd_Set_X (25);

Mikroelektronika - Solues de software e hardware para o mundo embutido

329

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Glcd_Set_Page
Prottipo Retorna
vazio Glcd_Set_Page (unsigned short pgina);

Nada. Seleciona a pgina do GLCD. Parmetros:

Descrio - pgina: nmero da pgina. Valores vlidos: 0 .. 7 Nota: Para lateral, eixo x e explicao de layout de pgina ver esquema em Requer Exemplo baixo GLCD precisa ser inicializado, veja rotina Glcd_Init.
Glcd_Set_Page (5);

Glcd_Read_Data
Prottipo Retorna Descrio
unsigned short Glcd_Read_Data ();

Um byte de memria GLCD. L dados a partir do local atual de memria GLCD e se move para a prximo local. GLCD precisa ser inicializado, veja Glcd_Init rotina.

Requer

lado GLCD posio, eixo-x e de pgina deve ser definido primeiro. Veja as funes
unsigned short dados; ... = dados Glcd_Read_Data ();

Exemplo

330

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Glcd_Write_Data
Prottipo Retorna
vazio Glcd_Write_Data (unsigned short ddata);

Nada. Grava um byte para a posio atual em GLCD memria e move para a prxima Local.

Descrio Parmetros: - ddata: dados a serem gravados GLCD precisa ser inicializado, veja Glcd_Init rotina. Requer lado GLCD posio, eixo-x e de pgina deve ser definido primeiro. Veja as funes Exemplo
unsigned short dados; ... Glcd_Write_Data (dados);

Glcd_Fill
Prottipo Retorna
vazio Glcd_Fill (unsigned short padro);

Nada. Preenche a memria GLCD com o padro de byte. Parmetros:

Descrio

- padro: byte para preencher GLCD memria com Para limpar a tela GLCD, use Glcd_Fill (0). Para preencher a tela completamente, uso Glcd_Fill (0xFF).

Requer Exemplo

GLCD precisa ser inicializado, veja Glcd_Init rotina.


/ / Limpar ecr Glcd_Fill (0);

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

331

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Glcd_Dot
Prottipo Retorna
vazio Glcd_Dot (unsigned short x_pos, unsigned y_pos curto, no assinado cor curto);

Nada. Desenha um ponto na GLCD nas coordenadas (x_pos, y_pos). Parmetros: - x_pos: x posio. Valores vlidos: 0 .. 127 - y_pos: y posio. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2 O parmetro cor determina um ponto do estado: 0 limpa ponto, um coloca um ponto, e 2 inverte ponto estado. Nota: Para x e explicao layout eixo y ver esquema no final deste pgina.

Descrio

Requer Exemplo

GLCD precisa ser inicializado, veja Glcd_Init rotina.


/ / Inverter o ponto no no canto superior esquerdo Glcd_Dot (0, 0, 2);

Glcd_Line
Prottipo Retorna
vazio Glcd_Line (int x_start, int y_start, int x_end, int y_end, unsigned short cor);

Nada. Desenha uma linha na GLCD. Parmetros:

Descrio

- x_start: coordenada x do incio da linha. Vlido valores: 0 .. 127 - y_start: coordenada y do incio da linha. Valores vlidos: 0 .. 63 - x_end: coordenada x da extremidade da linha. Valores vlidos: 0 ..
127 - y_end: coordenada y da linha final. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2

Requer Exemplo

O parmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto GLCD precisa ser inicializado, veja Glcd_Init rotina.
/ / Desenha uma linha entre os pontos (0,0) e (20,30) Glcd_Line (0, 0, 20, 30, 1);

332

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Glcd_V_Line
Prottipo Retorna
vazio Glcd_V_Line (unsigned short y_start, unsigned short y_end, unsigned short x_pos, unsigned short cor);

Nada. Desenha uma linha vertical no GLCD. Parmetros:

Descrio

y_start: coordenada y do incio da linha. Valores vlidos: 0 .. 63 y_end: y coordenar o fim da linha. Valores vlidos: 0 .. 63 x_pos: coordenada x da linha vertical. Valores vlidos: 0 .. 127 cor: parmetro de cor. Valores vlidos: 0 .. 2

O parmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto. Requer Exemplo GLCD precisa ser inicializado, veja Glcd_Init rotina.
/ / Desenha uma linha vertical entre os pontos (10,5) e (10,25) Glcd_V_Line (5, 25, 10, 1);

Glcd_H_Line
Prottipo Retorna
vazio Glcd_H_Line (unsigned short x_start, unsigned short x_end, unsigned short y_pos, unsigned short cor);

Nada. Desenha uma linha horizontal sobre GLCD. Parmetros:

Descrio

- x_start: coordenada x do incio da linha. Valores vlidos: 0 .. 127 -X_end: coordenada x da extremidade da linha. Valores vlidos: 0 .. 127 - y_pos: coordenada y da linha horizontal. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2 O parmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto.

Requer Exemplo

GLCD precisa ser inicializado, veja Glcd_Init rotina.


/ / Desenha uma linha horizontal entre os pontos (10,20) e (50,20) Glcd_H_Line (10, 50, 20, 1);

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

333

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Glcd_Rectangle
Prottipo Retorna
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);

Nada. Desenha um retngulo na GLCD. Parmetros: - x_upper_left: coordenada x do retngulo superior esquerdo canto. Valores vlidos: 0

Descrio

.. 127 - y_upper_left: coordenada y do canto superior esquerdo do retngulo. Valores


vlidos: 0 .. 63 - x_bottom_right: coordenada x do canto inferior direito do retngulo. Vlido

valores: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito retngulo canto. Vlido valores: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2 Requer Exemplo GLCD precisa ser inicializado, veja Glcd_Init rotina.
/ / Desenha um retngulo entre os pontos (5,5) e (40,40) Glcd_Rectangle (5, 5, 40, 40, 1);

Glcd_Box
Prottipo Retorna
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);

Nada. Desenha uma caixa de GLCD. Parmetros: - x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores

Descrio

vlidos: 0 .. 127 - y_upper_left: coordenada y do canto superior esquerdo caixa. Valores vlidos: 0 .. 63 - x_bottom_right: x coordenadas do canto inferior direito caixa. Valores vlidos: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito caixa. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2

Requer Exemplo

GLCD precisa ser inicializado, veja Glcd_Init rotina.


/ / Desenha uma caixa entre os pontos (5,15) e (20,40) Glcd_Box (5, 15, 20, 40, 1);

334

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Glcd_Circle
Prottipo Retorna
vazio Glcd_Circle (int x_center, int y_center, int raio, no assinado curto cor);

Nada. Desenha um crculo em GLCD. Parmetros:

Descrio

- x_center: coordenada x do crculo centro. Valores vlidos: 0 .. 127 - y_center: coordenada y do centro do crculo. Valores vlidos: 0 ..
63 - Raio: Raio de tamanho - cor: parmetro de cor. Valores vlidos: 0 .. 2

Requer Exemplo

O parmetro cor determina a cor da linha do crculo: 0 branco, um negro, 2i t d t GLCD precisa ser inicializado, veja Glcd_Init rotina.
/ / Desenha um crculo com centro em (50,50) e raio = 10 Glcd_Circle (50, 50, 10, 1);

Glcd_Set_Font
Prottipo Retorna
vazio Glcd_Set_Font (const char * ActiveFont, unsigned short aFontWidth, unsigned short aFontHeight, unsigned int aFontOffs);

Nada. Define a fonte que ser usada com Glcd_Write_Char e Glcd_Write_Text rotinas. Parmetros: - activeFont: fonte a ser definido. Precisa ser formatado como um array

Descrio

de byte

Requer Exemplo

- aFontWidth: largura dos caracteres da fonte em pontos. - aFontHeight: altura dos caracteres da fonte em pontos. - aFontOffs: nmero que representa a diferena 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 incio com o espao GLCD precisa ser inicializado, veja Glcd_Init rotina.
/ / Use o costume 5x7 fonte "MyFont", que se inicia com o espao (32): Glcd_Set_Font (& MyFont, 5, 7, 32);

Mikroelektronika - Solues de software e hardware para o mundo embutido

335

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Glcd_Write_Char
Prottipo Retorna
vazio Glcd_Write_Char (unsigned short CDH, unsigned short x_pos, unsigned short page_num, unsigned short cor);

Nada. Impresses sobre o carter GLCD. Parmetros: - CDH: caractere a ser escrito - x_pos: caractere inicial posio no eixo-x. Valores vlidos: 0 .. (127-FontWidth) - page_num: o nmero da pgina na qual personagem vai ser escrito. Vlido valores: 0 .. 7 - cor: parmetro de cor. Valores vlidos: 0 .. 2 O parmetro cor determina a cor do personagem: 0 branco, Um preto, e 2 inverte cada ponto. Nota: Para eixo x e explicao de layout de pgina ver esquema na parte inferior da GLCD precisa ser inicializado, veja Glcd_Init rotina. Use Glcd_Set_Font a especify a fonte para exibio, se no fonte especificado, fonte padro fornecidos com 5x8 bibli t d / / Escreve 'C' personagem na posio 10 no interior da pgina 2:
Glcd_Write_Char ('C', 10, 2, 1);

Descrio

Requer

Exemplo

336

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Glcd_Write_Text
Prottipo Retorna
vazio Glcd_Write_Text (char * Texto, unsigned short x_pos, no assinado curto page_num, unsigned short cor);

Nada. Imprime texto na GLCD. Parmetros: texto: texto a ser escrito x_pos: posio do texto a partir do eixo-x. page_num: o nmero da pgina na qual o texto ser escrito. Valores vlidos: 0 .. 7 cor: parmetro de cor. Valores vlidos: 0 .. 2

Descrio

O parmetro cor determina a cor do texto: 0 branco, um preto, e 2 inverte cada ponto. Nota: Para eixo x e explicao de layout de pgina ver esquema na parte inferior da GLCD precisa ser inicializado, veja Glcd_Init rotina. Use Glcd_Set_Font para especificar a fonte para exibio, se nenhuma fonte especificada, fonte padro, em seguida, 5x8 fornecido com o bibli t / / Escreve texto "Ol d mundo!" na posio 10 no interior da pgina 2:
Glcd_Write_Text ("Ol mundo!", 10, 2, 1);

Requer Exemplo

Glcd_Image
Prottipo Retorna
vazio Glcd_Image (const unsigned short cdigo * Imagem);

Nada. Exibe bitmap em GLCD. Parmetros:

Descrio - imagem: a imagem a ser exibida. matriz bitmap deve estar na memria de cdigo. Use o mikroC PRO para PIC integrada GLCD Bitmap Editor para converter a Requer Exemplo imagem para GLCD precisa ser inicializado, veja Glcd_Init rotina.
/ / Desenha my_image imagem GLCD Glcd_Image (my_image);

Mikroelektronika - Solues de software e hardware para o mundo embutido

337

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

O exemplo a seguir demonstra as rotinas da biblioteca GLCD: inicializao, claro (padro de preenchimento), exibindo imagens, desenhar linhas, crculos, retngulos e caixas, o texto visualizao e manuseio.
/ / Declaraes ----------------------------------------------- -----------------const char cdigo truck_bmp [1024]; //------------------------------------------------ -------------- final declaraes / / Conexes GLCD mdulo 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 em TRISB2_bit; sbit GLCD_RW_Direction em TRISB3_bit; sbit GLCD_EN_Direction em TRISB4_bit; sbit GLCD_RST_Direction em TRISB5_bit; / / Fim conexes GLCD mdulo vazio delay2S () { 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 / / 2 segundos, funo de atraso

338

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
# Ifdef COMPLETE_EXAMPLE 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); delay2S ();

CAPTULO 7

Bibliotecas
/ / Desenha a imagem

/ / Limpar GLCD / / Desenha caixa / / Desenhar retngulo / / Desenha uma linha

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 crculos

/ / 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 - Solues de software e hardware para o mundo embutido

339

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
Glcd_Write_Text (someText, 5, 4, 2); delay2S (); / / Escreve a string

Bibliotecas

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

Conexo HW

GLCD conexo HW

340

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

BIBLIOTECA I C
I C completo mdulo mestre MSSP est disponvel com um nmero de modelos PIC MCU. mikroC PRO para PIC fornece biblioteca que apoia o comandante do I modo C. Nota: Alguns MCUs ter vrios mdulos C. A fim de usar a desejar eu rotina da biblioteca C, simply alterar o nmero 1 no prottipo com o nmero adequado de mdulo, 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
Prottipo Retorna
vazio I2C1_Init (unsigned long relgio);

Nada. Inicializa I C com desejado relgio (Ver folha de dados do dispositivo para os valores

Descrio

corretos em respeito com FOSC). Precisa ser chamada antes de usar outras funes de I C Library. Voc no precisa configurar as portas manualmente para usando o mdulo; biblioteca ter id d i i li Biblioteca requer iMSSP mdulo sobre PORTB ou PORTC.

Requer

Nota: O clculo do valor do relgio que eu C realizada pelo compilador, como seria produzir um cdigo relativamente grande, se realizado em o nvel biblioteca. Portanto, o compilador precisa saber o valor do parmetro em tempo de compilao. por isso que este parmetro deve ser uma constante, e no uma varivel.
I2C1_Init (100000);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

341

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
I2C1_Start
Prottipo Retorna Descrio Requer Exemplo
unsigned short I2C1_Start (void);

Se no houver erro, a funo retorna 0. Determina se o bus I2C gratuito e as questes START. I2C deve ser configurado antes de usar esta funo. Veja I2C1_Init.
I2C1_Start ();

I2C1_Repeated_Start
Prottipo Retorna Descrio Requer Exemplo
vazio I2C1_Repeated_Start (void);

Nada. Questes repetidas START. I2C deve ser configurado antes de usar esta funo. Veja I2C1_Init.
I2C1_Repeated_Start ();

I2C1_Is_Idle
Prottipo Retorna Descrio Requer Exemplo
unsigned short I2C1_Is_Idle (void);

Retorna 1 se o bus I2C livre, caso contrrio retorna 0. Testa se I2C bus est livre. I2C deve ser configurado antes de usar esta funo. Veja I2C1_Init.
se (I2C1_Is_Idle ()) {...}

I2C1_Rd
Prottipo Retorna Descrio Requer
unsigned short I2C1_Rd (unsigned short ack);

Retorna um byte a partir do escravo. L um byte a partir do escravo, e no envia reconhecer sinal se o parmetro ack 0, caso contrrio, ele envia reconhecer. I2C deve ser configurado antes de usar esta funo. Veja I2C1_Init. Alm disso, START deve ser emitido, a fim de utilizar esta funo. Veja I2C1_Start. Ler e enviar dados no reconhece sinal:

Exemplo

unsigned short ter; ... ter = I2C1_Rd (0);

342

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

I2C1_Wr
Prottipo Retorna Descrio Requer Exemplo
unsigned short I2C1_Wr (unsigned short data_);

Retorna 0 se no houve erros. Envia byte de dados (parmetros) atravs do barramento I2C. I2C deve ser configurado antes de usar esta funo. Veja I2C1_Init. Alm disso, START deve ser emitido, a fim de utilizar esta funo. Veja I2C1_Start.
I2C1_Write (0xA3);

I2C1_Stop
Prottipo Retorna Descrio Requer Exemplo
vazio I2C1_Stop (void);

Nada. Problemas de sinal STOP. I2C deve ser configurado antes de usar esta funo. Veja I2C1_Init.
I2C1_Stop ();

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

343

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Exemplo Biblioteca

Bibliotecas

Este cdigo 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 so gravados no endereo 2). Ento, 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; 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 (); } // // // // // // // emitir sinal de incio I2C enviar bytes via I2C (dispositivo Endereo + W) enviar bytes (envio de dados) sinal questo de I2C repetidas incio enviar (endereo do dispositivo + R) byte Leia os dados (no reconhece) emisso de sinal de paragem I2C / / Configurar um pinos como I / O digital

/ / Configurar PORTB como sada // // // // // // inicializar comunicao I2C emitir sinal de incio I2C enviar bytes via I2C (endereo do dispositivo + W) enviar bytes (endereo do local EEPROM) enviar dados (dados a serem escritos) emisso de sinal de paragem I2C

344

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

Interface com PIC 24C02 via I2C

Mikroelektronika - Solues de software e hardware para o mundo embutido

345

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas TECLADO BIBLIOTECA

A mikroC PRO para PIC fornece uma biblioteca para trabalhar com 4x4 teclado. As rotinas de biblioteca pode tambm ser usado com 4x1, 4x2, 4x3 ou teclado. Para uma explicao conexes ver esquema no botTom desta pgina.

As dependncias externas do teclado Biblioteca


As seguintes variveis devem ser definida em todos os
sfr extern char keypadPort;

Descrio:

Exemplo:

Teclado Porto.

char keypadPort em PORTD;

Rotinas da biblioteca
- Keypad_Init - Keypad_Key_Press - Keypad_Key_Click

Keypad_Init
Prottipo Retorna Descrio
vazio Keypad_Init (void);

Nada. Inicializa porta para trabalhar com o teclado. A varivel global:

Requer

- keypadPort - Teclado porto devem ser definidas antes de utilizar esta funo.
/ / Conexes teclado mdulo char keypadPort em PORTD; / / Fim do teclado conexes do mdulo ... Keypad_Init ();

Exemplo

346

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Keypad_Key_Press
Prottipo Retorna Descrio Requer Exemplo
char Keypad_Key_Press (void);

O cdigo de uma tecla pressionada (1 .. 16). Se nenhuma tecla for pressionada, retorna 0. L a tecla do teclado quando a chave fica pressionado. Porto precisa ser inicializado para trabalhar com a biblioteca do teclado, consulte K char d I it kp;
... kp Keypad_Key_Press = ();

Keypad_Key_Click
Prottipo Retorna
char Keypad_Key_Click (void);

O cdigo de uma tecla clicada (1 .. 16). Se nenhuma tecla for clicado, retorna 0. Chamar a ateno para Keypad_Key_Click uma chamada de bloqueio: a funo espera at que alguma tecla for pressionado e liberado. Quando liberado, a funo retorna 1 a 16, dependendo a chave. Se mais de uma tecla pressionada, simultaneamente, a funo vai esperar at todas as teclas pressionadas so liberados. Depois que a funo ir retornar o di d Porto precisa ser inicializado para trabalhar com a biblioteca do teclado, consulte K char d I it kp; ... kp Keypad_Key_Click = ();

Descrio

Requer Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

347

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

Este um exemplo simples do uso da Biblioteca do teclado. Ele suporta teclados com 1 .. 4 linhas e 1 .. 4 colunas. O cdigo a ser devolvido pelo Keypad_Key_Click () funo na faixa a partir de 1 .. 16. Neste exemplo, o cdigo retornado transformado em ASCII Cdigos [0 .. 9, A.. F] e exibido no LCD. Alm disso, uma pequena de byte nico dis-counter desempenha no segundo nmero de linha de LCD de teclas pressionadas.
kp unsigned short, cnt, oldstate = 0; char txt [6]; / / Conexes teclado mdulo keypadPort char na PORTD; / / Fim conexes teclado mdulo / / Conexes do mdulo 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 sbit LCD_EN_Direction sbit LCD_D4_Direction sbit LCD_D5_Direction sbit LCD_D6_Direction sbit LCD_D7_Direction / / Fim do mdulo LCD em TRISB4_bit; em TRISB5_bit; em TRISB0_bit; em TRISB1_bit; em TRISB2_bit; em TRISB3_bit; conexes

vazio main () { cnt = 0; Keypad_Init (); Lcd_Init (); Lcd_Cmd (_LCD_CLEAR); Lcd_Cmd (_LCD_CURSOR_OFF); Lcd_Out (1, 1, "1"); Lcd_Out (1, 1, "Key:"); Lcd_Out (2, 1, "Times:"); fazer { kp = 0;

// // // // //

Zerar contador Inicializar Teclado Inicializar Lcd O visor claro Cursor para fora

/ / Escreve o texto da mensagem no LCD

/ / Reset varivel cdigo-chave

/ / Espera tecla a ser pressionada e liberada fazer / Kp / = Keypad_Key_Press (); / / cdigo da loja na varivel-chave kp kp = Keypad_Key_Click (); / / cdigo da loja na varivel-chave kp enquanto (Kp!);

348

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
/ / Valor Preparar switch (KP) { / / Case 10: kp keypad4x3 / / Case 11: kp / / Case 12: kp / / Default: kp 1: Kp caso 2: caso caso 3: caso 4: caso 5: 6: caso 7: caso 8: caso 9: caso caso 10: caso 11: caso 12: caso 13: caso 14: caso 15: caso 16: } 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); }

CAPTULO 7

Bibliotecas
para a produo, transformao chave para o seu valor ASCII = 42; break; = 48; break; = 35; break; + = 48; / / '*' / Descomente / este bloco para / / '0 ' / / '#'

= 49; break; / / 1 / Descomente para bloquear este keypad4x4 kp = 50; break; / 2 kp = 51; break; / 3 kp = 65; break; / / A kp = 52; break; / 4 kp = 53; break; / / 5 kp = 54; break; / 6 kp = 66; break; / B kp = 55; break; / / 7 kp = 56; break; / / 8 kp = 57; break; / / 9 kp = 67; break; C / kp = 42; break; / / * kp = 48; break; / / 0 kp = 35; break; / / # kp = 68; break; D / /

/ / Mostra o valor ASCII chave em LCD / / Se contador estouro varialble ");

/ / Valor de Transformao contra a cadeia / / Valor expositor em LCD

Mikroelektronika - Solues de software e hardware para o mundo embutido

349

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Conexo HW

4x4 para conexo da HMI regime

350

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

LCD BIBLIOTECA
A mikroC PRO para PIC fornece uma biblioteca de comunicao com LCDs (com HD44780 controladores compatveis) atravs do interface de 4 bits. Um exemplo de con-LCD nections dada sobre o esquema na parte inferior desta pgina. Para criar um conjunto de personagens personalizadas LCD usam LCD personalizado Personagem Tool.

Externas dependncias da Biblioteca LCD


As seguintes variveis deve ser definida em todos os projetos usando L sfr sbit d extern
LCD_RS: sbit sfr extern LCD_EN: sbit sfr extern LCD_D7; sbit sfr extern LCD_D6; sbit sfr extern LCD_D5; sbit sfr extern LCD_D4; sbit sfr extern LCD_RS_Direction; sbit sfr extern LCD_EN_Direction; sbit sfr extern LCD_D7_Direction; sbit sfr extern LCD_D6_Direction; sbit sfr extern LCD_D5_Direction; sbit sfr extern LCD_D4_Direction;

Descrio:

Exemplo:

Registre-line Select. Habilitar linha. Dados linha 7. Dados de 6 linhas. Dados de 5 linhas. Os dados de 4 linhas. Registre Selecione a direo lfi t Habilitar direo dos pinos.

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; sbit LCD_RS_Direction em TRISB4_bit;

sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D7_Direction Dados de 7 pinos direo. em TRISB3_bit; Dados de 6 pinos de direo. sbit LCD_D6_Direction em TRISB2_bit;

Dados de 5 pinos de direo. sbit LCD_D5_Direction


em TRISB1_bit; Dados de 4 pinos de direo. sbit LCD_D4_Direction em TRISB0_bit;

Mikroelektronika - Solues de software e hardware para o mundo embutido

351

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Rotinas da biblioteca
- Lcd_Init - Lcd_Out - Lcd_Out_Cp - Lcd_Chr - Lcd_Chr_Cp - Lcd_Cmd

Lcd_Init
Prottipo Retorna Descrio
vazio Lcd_Init ();

Nada. Inicializa o mdulo LCD. As variveis 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 / instrues) pinos de sinal - LCD_EN: Habilitar sinal do pino - Direo do pino Dado 7: LCD_D7_Direction - Direo dos Dados de 6 pinos: LCD_D6_Direction - Direo dos Dados 5 pinos: LCD_D5_Direction - Direo dos Dados de 4 pinos: LCD_D4_Direction - LCD_RS_Direction: Direo do Registo Selecione pinos - LCD_EN_Direction: Direo do sinal Enable pin devem ser definidas antes de utilizar esta funo.
/ / Configuraes 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; / / Direo 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 ();

Requer

Exemplo

352

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Lcd_Out
Prottipo Retorna
vazio Lcd_Out (char linha, char coluna, char * Texto);

Nada. Imprime texto na tela LCD a partir de determinada posio. Ambas as variveis string

Descrio

e-litro als pode ser passado como um texto. Parmetros: - linha: nmero da linha de partida posio - coluna: nmero da coluna a partir posio

Requer Exemplo

O mdulo LCD deve ser inicializado. Veja rotina Lcd_Init.


/ / Escreve o texto "Ol!" no LCD a partir da linha 1, coluna 3: Lcd_Out (1, 3, "Ol!");

Lcd_Out_CP
Prottipo Retorna
vazio Lcd_Out_CP (char * Texto);

Nada. Imprime texto na tela LCD na posio atual do cursor. Ambas as variveis e literais string pode ser passado como um texto. Parmetros:

Descrio

Requer Exemplo

t t texto a ser escrito O mdulo LCD deve ser inicializado. Veja rotina Lcd_Init. / / Escreve o texto "Aqui!" na posio atual do cursor: Lcd_Out_CP ("Aqui!");

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

353

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Lcd_Chr
Prottipo Retorna
vazio Lcd_Chr (char linha, char coluna, char out_char);

Nada. Imprime caracteres em LCD na posio especificada. Ambas as variveis e literais podem ser passado como um personagem. Parmetros: - linha: escrito Posio de linha nmero - coluna: escrever o nmero da coluna posio i O mdulo LCD deve ser inicializado. Veja rotina Lcd_Init.
/ / Escreve caracter "i" na linha 2, coluna 3: Lcd_Chr (2, 3, 'i');

Descrio

Requer Exemplo

Lcd_Chr_Cp
Prottipo Retorna
vazio Lcd_Chr_CP (char out_char);

Nada. Imprime caracteres em LCD na posio atual do cursor. Ambas as variveis e

Descrio

literais pode ser passado como um personagem. Parmetros:

Requer Exemplo

t h caractere a ser escrito O mdulo LCD deve ser inicializado. Veja rotina Lcd_Init. / / Escrever "e" caractere na posio atual do cursor: Lcd_Chr_CP ('e');

354

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Lcd_Cmd
Prottipo Retorna
vazio Lcd_Cmd (char out_char);

Nada. Envia comando para LCD. Parmetros:

Descrio - out_char: comando a ser enviado Nota: Constantes pr-definidas podem ser passados para a funo, consulte Requer Exemplo Disponvel LCD O mdulo LCD deve ser inicializado. Veja a tabela Lcd_Init.
/ / Clear LCD: Lcd_Cmd (_LCD_CLEAR);

Disponvel Comandos LCD


Lcd Comando
LCD_FIRST_ROW LCD_SECOND_ROW LCD_THIRD_ROW LCD_FOURTH_ROW LCD_CLEAR LCD_RETURN_HOME LCD_CURSOR_OFF LCD_UNDERLINE_ON LCD_BLINK_CURSOR_ON LCD_MOVE_CURSOR_LEFT LCD_MOVE_CURSOR_RIGHT LCD_TURN_ON LCD_TURN_OFF LCD_SHIFT_LEFT LCD_SHIFT_RIGHT

Finalidade Move o cursor para a linha 1 Move o cursor para a linha 2 Move o cursor para a 3 fila Move o cursor para a linha 4 O visor claro Retornar cursor para a posio inicial, retorna uma tela deslocado para sua posio original i f d Desligue M cursord d RAM o Sublinhar o cursor em Intermitncia do cursor em Move o cursor para esquerda sem alterar RAM exibir dados Mover cursor para direita sem alterar a RAM de dados de exibio Vire a tela LCD Ligue o monitor LCD Shift display esquerdo, sem alterar RAM exibir dados Shift direito de exibio sem alterar RAM exibio de dados

Mikroelektronika - Solues de software e hardware para o mundo embutido

355

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca
O cdigo a seguir demonstra o uso da rotinas Lcd Biblioteca:
/ / Conexes do mdulo 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 conexes do mdulo do LCD char char char char txt1 txt2 txt3 txt4 [] [] [] [] = = = = "MikroElektronika"; "EasyPIC5"; "Lcd4bit"; "Exemplo"; / / Varivel do lao

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

/ / Funo 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 / 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 - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
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 (); }

CAPTULO 7

Bibliotecas

/ / Loop infinito while (1) { / / Move o texto para a esquerda 7 vezes for (i = 0; i <8; i + +) { 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 - Solues de software e hardware para o mundo embutido

357

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
conexo HW

LCD conexo HW

358

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

MANCHESTER BIBLIOTECA DO CDIGO

A mikroC PRO para PIC fornece uma biblioteca para manipulao Manchester sinais codificados. O cdigo de Manchester um cdigo em que os dados e sinais de clock so combinados para formar um nico fluxo de dados de auto-sincronizao, cada bit codificado contm uma transio no ponto mdio de um perodo de pouco, a direo da transio 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 so 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 sincronizao alcanados, etc.) Nota: Manchester biblioteca de cdigo implementa atividades baseadas em tempo, por isso interrompe necessidade a ser desativado quando us-lo. As seguintes variveis As dependncias externas do Manchester Code Library deve ser definida em todos os proECTS com Manchester Bibli sbit sfr extern MAN-d
RXPIN; sbit sfr extern MANTXPIN; sbit sfr extern MANRXPIN_Direction; sbit sfr extern MANTXPIN_Direction;

Descrio:

Exemplo:

Receber linha. linha de transmisso. Direo do recebimento do

sbit MANRXPIN em RC0_bit; sbit MANTXPIN em RC1_bit; sbit MANRXPIN_Direction em TRISC0_bit; em TRISC1_bit;

i Direo do pino de transmisso. sbit MANTXPIN_Direction

Mikroelektronika - Solues de software e hardware para o mundo embutido

359

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Rotinas da biblioteca
- Man_Receive_Init - Man_Receive - Man_Send_Init - Man_Send - Man_Synchro - Man_Break As rotinas a seguir so para uso interno, compilador s: - Manchester_0 - Manchester_1 - Manchester_Out

Man_Receive_Init
Prottipo Retorna
unsigned int Man_Receive_Init ();

- 0 - Se a inicializao e sincronizao foram bem sucedidas. - 1 - Aps a sincronizao sem xito. - 255 - Aquando usurio abortar. A funo de receptor configura o pino e realiza processo de sincronizao no Para recuperar a taxa de transmisso do sinal de entrada. Nota: Em caso de mltiplos erros persistentes na recepo, o usurio deve chamar esse As variveis globais:

Descrio

Requer

MANRXPIN: Receber linha MANRXPIN_Direction: Direo do pino de recepo

devem ser definidas antes de utilizar esta funo.


/ / Inicializar Receptor sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; ... Man_Receive_Init ();

Exemplo

360

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Man_Receive
Prottipo Retorna
unsigned char Man_Receive (unsigned char * Erro);

Um byte ler a partir do sinal de entrada. A funo extrai um byte a partir do sinal de entrada.

Descrio

Parmetros: - erro: erro bandeira. Se o formato do sinal no coincide com o esperado, o erro pavilho ser definido como no-zero.

Requer

Para utilizar esta funo, o usurio deve preparar o MCU para o recebimento. Veja
unsigned char dados = 0, erro = 0; ... = dados Man_Receive (e erro); se (Erro) {/ * Tratamento de erros /}

Exemplo

Man_Send_Init
Prottipo Retorna Descrio
vazio Man_Send_Init ();

Nada. A funo configura Transmissor pino. As variveis globais:

Requer

MANTXPIN: linha de transmisso MANTXPIN_Direction: Direo do pino de transmisso

devem ser definidas antes de utilizar esta funo.


/ / Inicializar do transmissor: sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; ... Man_Send_Init ();

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

361

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Man_Send
Prottipo Retorna
vazio Man_Send (unsigned char tr_data);

Nada. Envia um byte.

Descrio

Parmetros: - tr_data: dados a serem enviados Nota: Baud taxa utilizada de 500 bps.

Requer Exemplo

Para utilizar esta funo, o usurio deve preparar o MCU para o envio. Veja Man_Send_Init.
unsigned char msg; ... Man_Send (msg);

Man_Synchro
Prottipo Retorna Descrio Requer Exemplo
unsigned char Man_Synchro ();

- 255 - Se a sincronizao no foi bem sucedida. - Metade do comprimento de bit manchester, expressas em mltiplos de 10us a sui i d Medidas de metade do comprimento do bit manchester com resoluo 10us. Para utilizar esta funo, primeiro voc deve preparar o MCU para o recebimento. Veja
unsigned int man__half_bit_len; ... man__half_bit_len Man_Synchro = ();

362

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Man_Break
Prottipo Retorna
vazio Man_Break ();

Nada. Man_Receive est bloqueando a rotina e ele pode bloquear o fluxo do programa. Chame esse rotina de interrupo para desbloquear a execuo do programa. Este mecanismo simlhantes ao WDT. Nota: As interrupes devem ser desativados antes de usar o Manchester Nada.
char data1, erro, contador = 0; vazio interrupo { se (INTCON.T0IF) { se (Contador> = 20) { Man_Break (); contador = 0; / / zerar o contador } mais contador + +; / / incrementa contador INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupo

Descrio

Requer

Exemplo

} } vazio main () { OPTION_REG = 0x04; / prescaler TMR0 / set a 1:32 ... Man_Receive_Init (); ... / / Tenta Man_Receive com bloqueio de mecanismo de preveno INTCON.GIE = 1 / / Global interrupo permitir INTCON.T0IE = 1 / / Enable estouro Timer0 interrupo data1 = Man_Receive (e erro); INTCON.GIE = 0; / / Global interrupo desativar ... }

Mikroelektronika - Solues de software e hardware para o mundo embutido

363

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

O cdigo a seguir o cdigo para o receptor de Manchester, que mostra como usar o Manchester Biblioteca para recepo dos dados:
/ / Conexes do mdulo 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 conexes do mdulo do LCD

/ / Conexes Manchester mdulo sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; / / Fim mdulo Manchester conexes 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 / / Move o cursor para a linha 1

Lcd_Cmd (_LCD_FIRST_ROW);

enquanto (1) {/ / Espera o "start" byte temp = Man_Receive (& error) / / byte tenta receber se (Temp == 0x0B) / / byte "Iniciar", veja o exemplo do Transmissor break; / / Ns temos a seqncia de partida

364

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
se (Erro) break; } / / Sada para que no loop para sempre

CAPTULO 7

Bibliotecas

fazer { temp = Man_Receive (& error) / / byte Tentativa receber se (Erro) {/ / Se o erro ocorreu Lcd_Chr_CP ('?'); / / Escreve ponto de interrogao no LCD ErrorCount + + / / Update erro contra se (ErrorCount> 20) {/ / Em caso de vrios 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) / / no escrever byte recebido em LCD } Delay_ms (25); } enquanto (Temp = 0x0E!); / Sair / Se byte "End" foi recebido do loop } }

Mikroelektronika - Solues de software e hardware para o mundo embutido

365

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC O cdigo a seguir o cdigo para o transmissor de Manchester, que mostra como usar o Manchester Biblioteca de transmisso de dados:
/ / Conexes Manchester mdulo sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; / / Fim conexes Manchester mdulo char ndice, de carter; char s1 [] = "mikroElektronika"; vazio main () { Man_Send_Init (); enquanto (1) { Man_Send (0x0B); Delay_ms (100); caracter = s1 [0]; = ndice 0; enquanto (Personagem) { Man_Send (personagem); Delay_ms (90); index + +; caracter = s1 [ndice]; } Man_Send (0x0E); Delay_ms (1000); } } / / Inicializar transmissor / / Loop infinito / / Enviar "start" byte / / Espera por um tempo // // // // // // // Tome primeiro char da string Inicializar varivel ndice String termina com zero Enviar carter Aguarde um momento Incrementar varivel ndice Leve o prximo caractere da string

Bibliotecas

/ / Enviar "fim" byte

366

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Exemplo de conexo

Conexo simples transmissor

Simples Receptor conexo

Mikroelektronika - Solues de software e hardware para o mundo embutido

367

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas MULTI MEDIA LIBRARY CARD

O Multi Media Card (MMC) uma memria flash padro de carto. cartes MMC so curatualmente disponvel nos tamanhos at e incluindo 1 GB, e so usados em celulares, mp3 players, cmeras digitais e PDA's. mikroC PRO para PIC fornece uma biblioteca para acessar dados sobre Multi Media Card via SPI biblioteca communication.This tambm suporta cartes SD (Secure Digital) de memria.

Secure Digital Card


Secure Digital (SD) um carto de memria flash padro, baseado na velha Multi Media Card (MMC) de formato. Os cartes SD esto atualmente disponveis em tamanhos de at 2 GB, inclusive, e so usados em celulares, mp3 players, cmeras digitais, PDAs e. Notas: - Biblioteca trabalha com a famlia PIC18 s; - A biblioteca utiliza o mdulo de comunicao SPI. O usurio deve inicializar SPI mdulo antes de usar o SPI LCD Grfico Biblioteca. - Para MCUs com dois mdulos SPI possvel inicializar ambos e em seguida, mudar usando o SPI_Set_Active () rotina. - Rotinas para manipulao de arquivos s podem ser utilizados com sistema de arquivos FAT16. - Funes de biblioteca criar e ler arquivos no diretrio raiz s; - Funes 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, no h recuperao se FAT1 tabela est corrompido. Nota: O mdulo SPI tem de ser inicializado atravs SPI1_Init_Advanced rotina com os seguintes parmetros: - Mestrado SPI - Modo de 8bit - prescaler primria 16 - Escravo Selecione deficientes - dados amostrados no meio de dados em tempo de sada - relgio de marcha lenta - sada de dados Serial mudanas na transio do estado inativo para ativo relgio Estado relgio
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 - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Nota: Uma vez o carto MMC / SD inicializado, o usurio poder reinicializar SPI em maior velocidade. Veja o Mmc_Init e rotinas Mmc_Fat_Init.

As dependncias externas do MMC Biblioteca


As seguintes variveis devem ser definida em todos os
sbit sfr extern Mmc_Chip_Select; sbit sfr extern Mmc_Chip_Select_Direction;

Descrio: Chip pinos de l Direo da pinos selecionar chip

Exemplo:
sbit Mmc_Chip_Select em RC2_bit sbit Mmc_Chip_Select_Direction em TRISC2_bit;

Rotinas da biblioteca
- Mmc_Init - Mmc_Read_Sector - Mmc_Write_Sector - Mmc_Read_Cid - Mmc_Read_Csd Rotinas para manipulao 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 - Solues de software e hardware para EMBEDDED MUNDO

369

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Mmc_Init
Prottipo Retorna Descrio
unsigned char Mmc_Init ();

- 0 - Se o carto SD / MMC foi detectado e inicializado com sucesso - 1 - Caso contrrio

Inicializa hardware de comunicao SPI; A funo retorna 1 se MMC presentes e com sucesso inicializado, caso contrrio retorna 0. Mmc_Init precisa ser chamada antes de usar outras funes deste biblioteca. As variveis globais:

Requer

- Mmc_Chip_Select: Chip Selecionar linha - Direo do pino de Chip Select: Mmc_Chip_Select_Direction devem ser definidas antes de utilizar esta funo.
/ / MMC mdulo de conexes sbit sfr Mmc_Chip_Select em RC2_bit; sfr sbit Mmc_Chip_Select_Direction em TRISC2_bit; / / MMC mdulo de conexes ... SPI1_Init (); = erro Mmc_Init (); / / linha de inicializao com o CS em RC2_bit

Exemplo

Mmc_Read_Sector
Prottipo Retorna Descrio Requer Exemplo
unsigned char Mmc_Read_Sector (unsigned long sector, dbuff char *);

Retorna 0 se ler era bem sucedida, ou 1 se ocorreu um erro. Funo l um setor (512 bytes) a partir do carto MMC no endereo sector sector. Ler dados so armazenados na matriz de dados. A funo retorna 0 se ler foi bem
sucedida,

1 Biblioteca precisa ser inicializado, veja Mmc_Init.


= erro Mmc_Read_Sector (sector, dados);

370

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Mmc_Write_Sector
Prottipo Retorna
unsigned char Mmc_Write_Sector (unsigned long sector, char * Dbuff);

Retorna 0 se escrever bem-sucedida; retorna 1 se houve erro no envio comando de escrita; retorna 2 se houve um erro na escrita. Funo grava 512 bytes de dados a MMC no endereo sector sector. A funo retorna 0 se gravao foi bem sucedida, ou 1 se houver um erro no envio comando de escrita, ou 2, se houve um erro na escrita. Biblioteca precisa ser inicializado, veja Mmc_Init.
erro: = Mmc_Write_Sector (sector, dados);

Descrio Requer Exemplo

Mmc_Read_Cid
Prottipo Retorna Descrio Requer Exemplo
unsigned char Mmc_Read_Cid (char data_for_registers *);

Retorna 0 se ler foi bem sucedida, ou 1 se ocorreu um erro. Funo l registo CID e retorna 16 bytes de contedo em
data_for_registers.

Biblioteca precisa ser inicializado, veja Mmc_Init.


= erro Mmc_Read_Cid (dados);

Mmc_Read_Csd
Prottipo Retorna Descrio Requer Exemplo
unsigned char Mmc_Read_Csd (char data_for_registers *);

Retorna 0 se ler foi bem sucedida, ou 1 se ocorreu um erro. Funo l registrar CSD e retorna 16 bytes de contedo em
data_for_registers.

Biblioteca precisa ser inicializado, veja Mmc_Init.


= erro Mmc_Read_Csd (dados);

Mikroelektronika - Solues de software e hardware para o mundo embutido

371

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Mmc_Fat_Init
Prottipo Retorna
unsigned short Mmc_Fat_Init ();

- 0 - Se o carto SD / MMC foi detectado e inicializado com sucesso - 1 - Se o setor de inicializao FAT16 no foi encontrado - 255 - Se o carto SD / MMC no foi detectada

Descrio

Inicializa carto SD / MMC, l SD / MMC setor de inicializao FAT16 e extratos necessdados necessrias necessrios para a biblioteca. N variveis globais: C SD / MMC d f d FAT16 i d As - Mmc_Chip_Select: Chip Selecionar linha - Direo do pino de Chip Select: Mmc_Chip_Select_Direction devem ser definidas antes de utilizar esta funo. O mdulo de hardware adequado SPI deve ser previamente inicializada. Veja o SPI1_Init, rotinas SPI1_Init_Advanced.
/ / MMC mdulo de conexes sbit sfr Mmc_Chip_Select em RC2_bit; sbit sfr Mmc_Chip_Select_Direction em TRISC2_bit; / / Mdulo MMC conexes / / Inicializar SPI1 mdulo e ponteiro conjunto (s) para SPI1 funes SPI1_Init_Advanced (MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); / / Use fat16 formatao rpida, em vez de rotina init se uma formatao necessrio 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); ... }

Requer

Exemplo

372

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Mmc_Fat_QuickFormat
Prottipo Retorna
unsigned char Mmc_Fat_QuickFormat (char * Mmc_fat_label); - 0 - Se o carto SD / MMC foi detectado e inicializado com sucesso - 1 - Se o formato FAT16 foi unseccessful - 255 - Se o carto SD / MMC no foi detectada

Formatos para FAT16 e inicializa carto SD / MMC. Parmetros: - mmc_fat_label: rtulo de volume (11 caracteres). Se menos de 11 catros so fornecidos, o rtulo ser preenchido com espaos. Se a string null passado volume no ser identificado Nota: Esta rotina pode ser utilizado em substituio ou em conjunto com rou-Mmc_Fat_Init tine. Nota: Se o carto SD / MMC j contm um setor de inicializao vlido, ela A hardware apropriado mdulo SPI deve ser previamente inicializada.
/ / Inicializar SPI1 mdulo e ponteiro conjunto (s) para SPI1 funes SPI1_Init_Advanced (MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); / / Formato e inicializar MMC / SD carto e MMC_FAT16 biblioteca globals se (! Mmc_Fat_QuickFormat (& mmc_fat_label)) { / / Reinicializar o mdulo SPI a uma velocidade maior (principal alterao prescaler). SPI1_Init_Advanced (MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); ... }

Descrio

Requer

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

373

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Mmc_Fat_Assign
Prottipo Retorna
unsigned short Mmc_Fat_Assign (char * Nome do arquivo, char file_cre_attr);

- 1 - Se o arquivo j existe ou o arquivo no existe, mas novo arquivo criado. - 0 - Se arquivo no existe e nenhum arquivo novo criado.

Atribui arquivo para operaes de arquivo (ler, escrever, apagar ...). Todos os teatros arquivo subseqentees ser aplicado sobre o arquivo designado. Parmetros: - filename: nome do arquivo que deve ser atribudo para operaes de arquivo. O nome do arquivo devem estar em formato DOS 8.3 (Nome_do_arquivo.extenso). O nome do arquivo e extenso ser automaticamente preenchido com espaos pela biblioteca, se tiverem menos de comprimento necessria ("mikro.tx", ou seja - ". mikro tx">), assim o usurio no faz tem que tomar cuidado com isso. O nome do arquivo e extenso so maisculas e minsculas. A biblioteca ir convert-los para caso apropriado automaticamente, assim que o usurio no tem que tomar cuidado com isso. Alm disso, em Para manter a compatibilidade com a primeira verso do presente biblioteca, nomes de Bit Msca Descrio arquivo podem 0 0x01 ser introduzida como string em maisculas Leia apenas de comprimento, com de 11 bytes nenhum ponto carter 1 0x02 Oculto entre o nome do arquivo e extenso (ie "MIKROELETXT" -> MIKROELE.TXT). Neste 2 0x04 Sistema caso 3 ltimos caracteres da string so considerados arquivos extenso. 3 0x08 Volume Label - file_cre_attr: bandeiras e criao do arquivo attributs. Cada bit corresponde 4 0x10 Subdiretrio 5 0x20 Arquivo a 6 0x40 Dispositivo (uso interno somente, nunca encontrado atribuveis arquivo apropriado: Arquivo bandeira criao. Se o arquivo no existe e este 7 0x80 sinalizador estiver definido, i ifi d i d

Descrio

Requer Exemplo

MMC / SD e MMC biblioteca deve ser inicializado para operaes de arquivo. Veja Mmc_Fat_Init.
/ / Cria arquivo com atribuveis arquivo se ele j no existe Mmc_Fat_Assign ('MIKROELE.TXT, 0xA0);

374

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Mmc_Fat_Reset
Prottipo Retorna Descrio Requer Exemplo
vazio Mmc_Fat_Reset (unsigned long * Tamanho);

Nada. Procedimento redefine o ponteiro do arquivo (move para o incio do arquivo) do atribudo arquivo, assim que o arquivo possa ser lido. O arquivo deve ser atribudo, consulte Mmc_Fat_Assign.
Mmc_Fat_Reset (tamanho);

Mmc_Fat_Rewrite
Prottipo Retorna Descrio Requer Exemplo
vazio Mmc_Fat_Rewrite ();

Nada. Procedimento redefine o ponteiro do arquivo e limpa o atribudo arquivo de dados para que novos d i i O arquivo deve ser atribudo, consulte Mmc_Fat_Assign.
Mmc_Fat_Rewrite;

Mmc_Fat_Append
Prottipo Retorna Descrio Requer Exemplo
vazio Mmc_Fat_Append ();

Nada. O processo de mover o ponteiro do arquivo para o final de o arquivo atribudos, de modo que d d d d i O arquivo deve ser atribudo, consulte Mmc_Fat_Assign.
Mmc_Fat_Append;

Mikroelektronika - Solues de software e hardware para o mundo embutido

375

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Mmc_Fat_Read
Prottipo Retorna Descrio
vazio Mmc_Fat_Read (unsigned short * Bdata);

Nada. Processo l o byte no qual o ponteiro aponta para o arquivo e armazena dados em dados de parmetro. O ponteiro do arquivo aumenta automaticamente a cada chamada de O arquivo deve ser atribudo, consulte Mmc_Fat_Assign. Alm disso, o ponteiro do arquivo deve ser iniMmc_Fat_Read (mydata);

Requer Exemplo

Mmc_Fat_Delete
Prottipo Retorna Descrio Requer
vazio Mmc_Fat_Delete ();

Nada. Exclui atualmente atribudos arquivo do carto MMC / SD. MMC / SD e MMC biblioteca deve ser inicializado para operaes de arquivo. Veja Mmc_Fat_Init. O arquivo deve ser atribudo anteriormente. Veja Mmc_Fat_Assign.
/ / Deletar o arquivo atual Mmc_Fat_Delete ();

Exemplo

Mmc_Fat_Write
Prottipo Retorna Descrio Requer Exemplo
vazio Mmc_Fat_Write (char * FData, no assinado data_len);

Nada. Procedimento escreve um pedao de bytes (FData) para o arquivo atualmente atribudo, no i d i d i O arquivo deve ser atribudo, consulte Mmc_Fat_Assign. Alm disso, o ponteiro do arquivo deve ser iniMmc_Fat_Write (txt, 255); Mmc_Fat_Write ('Ol mundo', 255);

376

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Mmc_Fat_Set_File_Date
Prottipo Retorna Descrio Requer Exemplo
vazio Mmc_Fat_Set_File_Date (unsigned int ano, unsigned short ms, unsigned short dia, unsigned short horas, unsigned short minutos, unsigned short segundos);

Nada. Grava timestamp sistema para um arquivo. Use essa rotina antes de cada gravar o arquivo; C arquivo deve ser atribudo, consulted i i i h id A Mmc_Fat_Assign.dAlm disso, o ponteiro do arquivo deve ser ini/ / 01 de abril de 2005, 18:07:00 Mmc_Fat_Set_File_Date (2005, 4, 1, 18, 7, 0);

Mmc_Fat_Get_File_Date
Prottipo Retorna Descrio Requer
vazio Mmc_Fat_Get_File_Date (unsigned int * Ano, unsigned short * Ms, unsigned short * Dia, unsigned short * horas, unsigned short * Min);

Nada. Recupera a data ea hora para o arquivo selecionado. Segundos no esto sendo recuperado, uma vez que so escritas em incrementos de 2 seg. O arquivo deve ser atribudo, consulte Mmc_Fat_Assign.
/ / Obtm Data / hora do arquivo no 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);

Exemplo

Mmc_Fat_Get_File_Size
Prottipo Retorna Descrio Requer
unsigned long Mmc_Fat_Get_File_Size ();

Esta funo retorna o tamanho do arquivo ativo (em bytes). Recupera o tamanho de arquivo atualmente selecionado. O arquivo deve ser atribudo, consulte Mmc_Fat_Assign.
/ / Obtm Data / hora do arquivo no assinado anos; char dat, MNTH, horas, minutos; ... file_name = "MYFILEXXTXT"; Mmc_Fat_Assign (nome_arquivo); mmc_size = Mmc_Fat_Get_File_Size;

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

377

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Mmc_Fat_Get_Swap_File
Prottipo Retorna
unsigned long Mmc_Fat_Get_Swap_File (unsigned long * Sectors_cnt char nome do arquivo, char file_attr);

- Nmero do setor de partida para o arquivo de swap recm-criado, se no foi o suficiente espao livre na Carto SD / MMC para criar arquivos de tamanho necessrio. D f Esta funo 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 mdia, pesquisa consecutivos para setores iro ignorar setores ocupados por esse arquivo. Portanto, recomenda-se apagar o arquivo como se ele existe antes de chamar essa funo. Se no for apagada e ainda h bastante espao para novo arquivo de permuta, esta funo ir apagar depois alocar espao de memria novo para novo arquivo swap. O objetivo do arquivo de swap fazer com que a leitura ea escrita para a mdia SD / MMC

Descrio

como rpido possvel, usando o Mmc_Read_Sector () e Mmc_Write_Sector () funes diretamente, sem que possa causar danos ao sistema FAT. Trocar arquivos podem ser considerado como uma "janela" na mdia, onde o usurio pode livremente escrever / ler os dados. objetivo principal da biblioteca mikroC ser usado para a aquisio rpida de dados, quando a aquisio de tempo crtico tiver terminado, os dados podem ser re-escrita em um "normal" arquivo, e formatado da maneira mais adequada. Parmetros: - sectors_cnt: nmero de setores consecutivos que o usurio quer que o arquivo
de swap para

ter. - filename: nome do arquivo que deve ser atribudo para operaes de arquivo.
O nome do arquivo

devem estar em formato DOS 8.3 (Nome_do_arquivo.extenso). O nome do arquivo e t

378

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

- file_attr: bandeiras e criao do arquivo attributs. Cada bit corresponde a


apro-

comeu atribuveis ficheiro: Bit 0 Descrio 1 2 3 4 5 6 7 Msca 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 Descrio Leia apenas Oculto Sistema Volume Label Subdiretrio Arquivo Dispositivo (uso interno somente, nunca encontrado no No utilizado

Nota: nomes de arquivo longos (LFN) no so suportados. Requer MMC / SD e MMC biblioteca deve ser inicializado para operaes de arquivo. Veja Mmc_Fat_Init.
//-------------- Tenta criar um arquivo de swap, cujo tamanho ser no pelo menos 100 setores. / / Se for bem sucedido, ele envia o n do setor de incio 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 (Mxima (tamanho)); UART_Write (0xAA); } }

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

379

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

O exemplo a seguir demonstra MMC teste biblioteca. Ao piscar, insira um Carto SD / MMC para o mdulo, quando deve receber a "Init-OK" mensagem. Depois, voc pode experimentar com MMC ler e escrever funes e observar o resultados atravs do Terminal USART.
/ / MMC mdulo de conexes sbit Mmc_Chip_Select em RC2_bit; sbit Mmc_Chip_Select_Direction em TRISC2_bit; / / Eof mdulo de conexes MMC / / Variveis 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 (alimentao de linha de retorno + transporte) vazio UART1_Write_Line (char * Uart_text) { UART1_Write_Text (uart_text); UART1_Write (13); UART1_Write (10); } / / Byte exibio 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 () { FILL_CHAR 'm'; const char unsigned int i, SectorNo; char mmc_error; bit data_ok; ADCON1 | = 0x0F; CMCON | = 7; / / Inicializar UART1 mdulo / / Configurar um pinos como digital / / Desligue comparadores

380

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
UART1_Init (19200); Delay_ms (10); UART1_Write_Line ("PIC-Started"); / relatrio da CPI presentes / / Inicializar mdulo SPI1 SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);

CAPTULO 7

Bibliotecas

/ / Inicializar um carto MMC mmc_error Mmc_Init = (); if (mmc_error == 0) UART1_Write_Line (MMC Init-OK "); / / Se o MMC apresentar relatrio mais UART1_Write_Line (MMC Init erro "); / / Se o relatrio 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"); / / Se houver erros ..... mais 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 - Solues de software e hardware para EMBEDDED MUNDO

381

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
mmc_error = Mmc_Read_Sector (SectorNo, SectorData); if (mmc_error == 0) { UART1_Write_Line ("Read-OK"); / / Os dados correspondem Chech data_ok = 1; for (i = 0; i <= 511; i + +) { UART1_Write (SectorData [i]); se (SectorData [i]! = FILL_CHAR) { data_ok = 0; break; } } UART1_Write_Line (""); se (Data_ok) UART1_Write_Line ("Content-OK"); mais UART1_Write_Line ("Erro de contedo"); } mais / / Se houver erros ..... UART1_Write_Line ("Erro de leitura"); / / Fim do teste do Sinal UART1_Write_Line ("O Fim do teste."); }

Bibliotecas

382

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

interface MMC

MMC vista traseira

Mikroelektronika - Solues de software e hardware para o mundo embutido

383

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas ONEWIRE BIBLIOTECA

A biblioteca OneWire fornece rotinas para comunicao atravs da OneWire Dallas protocolo, por exemplo, com DS18x20 termmetro digital. OneWire um Mestre / Escravo protocolo, e toda a comunicao cabeamento necessrio 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 alimentao da linha de dados. Para datasheet detalhadas sobre o dispositivo esquemtico ver. Algumas caractersticas bsicas deste protocolo so: - sistema nico mestre, - baixo custo, - baixas taxas de transferncia (at 16 kbps), - bastante longas distncias (at 300 metros), - pequenos pacotes de dados de transferncia. Cada dispositivo OneWire tambm tem um nmero de registo nico de 64 bits (Dispositivo de 8 bits tipo, 48-bit nmero de srie e de 8 bits CRC), para vrios escravos podem coexistir na mesmo barramento. Note que a freqncia do oscilador FOSC precisa ser pelo menos 4MHz, a fim de utilizar o rotinas com os termmetros digitais Dallas. Nota: Esta biblioteca implementa as atividades baseadas em tempo, assim interrupes precisam ser disabled quando utilizando a biblioteca OneWire.

Rotinas da biblioteca
- Ow_Reset - Ow_Read - Ow_Write

384

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ow_Reset
Prottipo Retorna Descrio Requer Exemplo
unsigned short Ow_Reset (unsigned short * Porto, no assinado pino curto);

0 DS1820, se estiver presente, e 1 caso no esteja presente. Problemas sinal de reset OneWire para DS1820. Os parmetros da porta e especificar o pino l li d DS1820 Funciona com o Dallas DS1820 sensor de temperatura apenas. Para repor o DS1820 que est ligado ao pino RA5:
Ow_Reset (& PORTA, 5);

Ow_Read
Prottipo Retorna Descrio Requer Exemplo
unsigned short Ow_Read (unsigned short * Porto, unsigned short pinos);

Leitura de dados de um dispositivo externo sobre o barramento OneWire. L um byte de dados atravs do barramento OneWire. Nada.
unsigned short tmp; ... tmp Ow_Read = (& PORTA, 5);

Ow_Write
Prottipo Retorna Descrio Requer Exemplo
vazio Ow_Write (unsigned short * Porto, unsigned short pino, no assinado curto PAR);

Nada. Grava um byte de dados do argumento ( par), atravs de nibus OneWire. Nada.
Ow_Write (& PORTA, 5, 0xCC);

Mikroelektronika - Solues de software e hardware para o mundo embutido

385

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

Este exemplo l a temperatura usando DS18x20 ligado ao pino PORTA.B5. Aps a restaurao, MCU obtm a temperatura do sensor e imprime no mostrador. Faa Certifique-se de linha de trao PORTA.B5-up e para desligar os LEDs PORTA.
/ / Conexes do mdulo 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 conexes do mdulo do LCD / / Definir TEMP_RESOLUTION a resoluo correspondente de usados DS18x20 sensor: / / 18S20: 9 (configurao padro, pode ser 9,10,11, ou 12) / / 18B20: 12 const unsigned short TEMP_RESOLUTION = 9; char * Texto = "000.0000"; no 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 solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
texto [1] =% (temp_whole/10) 10 + 48; texto [2] = temp_whole% 10 + 48; / / Extrair dezenas dgitos / / Extrair os dgitos

CAPTULO 7

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 dgitos texto [5] =% (temp_fraction/100) 10 + 48; / centenas / Extrato dgitos texto [6] =% (temp_fraction/10) 10 + 48; / dez / Extrair dgitos texto [7] =% temp_fraction 10 + 48; / os / Extrair dgitos / Temperatura / impresso 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 tm diferentes caractersticas cdigo para o grau / / Se voc ver letra grega alfa tente digitar 178 ao invs de 223 Lcd_Chr (2,14, 'C'); //--- Loop principal fazer { //--- Realizar a leitura da temperatura Ow_Reset (& PORTA, 5); / / Sinal de reset Onewire Ow_Write (& PORTA, 5, 0xCC); / / SKIP_ROM comando Emisso / / Emita o comando CONVERT_T Ow_Write (& PORTA, 5, 0x44); Delay_us (120); Ow_Reset (& PORTA, 5); Ow_Write (& PORTA, 5, 0xCC); Ow_Write (& PORTA, 5, 0xBE);

/ / SKIP_ROM comando Emisso / / Comando Emisso 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 - Solues de software e hardware para o mundo embutido

387

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Conexo HW

Exemplo de conexo DS1820

388

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

PORTO BIBLIOTECA EXPANDER


A mikroC PRO para PIC fornece uma biblioteca para comunicao com o do Microchip Porto Expander MCP23S17 via interface SPI. Conexes do MCU PIC compatvel e MCP23S17 dado no esquema na parte inferior desta pgina. Nota: A Biblioteca no usar a porta Expander interrupes. Nota: O hardware apropriado mdulo SPI deve ser inicializada antes de usar qualquer a biblioteca de rotinas Porto Expander. Consulte a Biblioteca SPI.

As dependncias externas do Porto Expander Biblioteca


As seguintes variveis deve ser definida em todos os projetos que utilizam P t sbit sfr extern
SPExpanderRST; sbit sfr extern SPExpanderCS; sbit sfr extern SPExpanderRST_Direction; sbit sfr extern SPExpanderCS_Direction;

Descrio:

Exemplo:

linha de reposio. Chip linha Select. Direo do pino de Reset. Direo do Chip Selecione pino.

SPExpanderCS: sbit em P1.B1; SPExpanderRST: sbit em P1.B0; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit

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 - Solues de software e hardware para o mundo embutido

389

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Expander_Init
Prottipo Retorna
vazio Expander_Init (char ModuleAddress);

Nada. Inicializa Porto Expander utilizando a comunicao SPI. As configuraes de porta Expander mdulo: - Hardware de endereamento habilitada - Automtica de endereos ponteiro de incremento (modo de byte) com deficincia - BANK_0 endereamento de registro - Taxa de variao habilitado Parmetros: - ModuleAddress: Port endereo de hardware Expander, ver esquema na final desta pgina As variveis globais:
- SPExpanderCS: Chip Selecionar linha

Descrio

Requer

- SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direo do pino de Chip Select - SPExpanderRST_Direction: Direo do pino de Reset

devem ser definidas antes de utilizar esta funo. mdulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.
/ / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander

Exemplo
... ANSEL = 0; Configurar / / AN pinos como I / O digital ANSELH = 0; / / Se a porta Expander Biblioteca utiliza o mdulo SPI SPI1_Init (); / / Inicializa o mdulo SPI usado com PortExpander Expander_Init (0); / / Inicializar Expander Porto

390

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Expander_Read_Byte
Prottipo Retorna
char Expander_Read_Byte (char ModuleAddress, char RegAddress);

Byte lido. A funo l byte a partir de Port Expander.

Descrio

Parmetros: - ModuleAddress: Porto endereo de hardware Expander, consulte esquemtica na final desta pgina - RegAddress: Endereo Port Expander do registo interno

Requer Exemplo

Porto Expander deve ser inicializado. Veja Expander_Init.


/ / L um byte do registo Porto expansor char read_data; ... read_data = Expander_Read_Byte (0,1);

Expander_Write_Byte
Prottipo Retorna
vazio Expander_Write_Byte (char ModuleAddress, char RegAddress, char Dados);

Nada. Rotina escreve um byte para Porto Expander. Parmetros:

Descrio - ModuleAddress: Porto endereo de hardware Expander, consulte esquemtica na final desta pgina - RegAddress: Endereo Port Expander do registo interno - Data_: dados a serem gravados Requer Exemplo Porto Expander deve ser inicializado. Veja Expander_Init.
/ / Escreve um byte para registrar o Expander do Porto Expander_Write_Byte (0,1, $ FF);

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

391

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Expander_Read_PortA
Prottipo Retorna
char Expander_Read_PortA (char ModuleAddress);

Byte lido. A funo l byte da Porta Porta expansor.

Descrio

Parmetros: - ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina Porto Expander deve ser inicializado. Veja Expander_Init.

Requer

Porta Porta expansor deve ser configurado como uma entrada. Veja Expander_Set_DirectionPortA e Expander_Set_DirectionPortAB rotinas.
/ / 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);

Exemplo

Expander_Read_PortB
Prottipo Retorna
char Expander_Read_PortB (char ModuleAddress);

Byte lido. A funo l bytes de PortB Porto expansor.

Descrio

Parmetros: - ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina Porto Expander deve ser inicializado. Veja Expander_Init.

Requer

PortB Porto expansor deve ser configurado como entrada. Veja Expander_Set_DirectionPortB Expander_Set_DirectionPortAB e rotinas.
/ / 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);

Exemplo

392

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Expander_Read_PortAB
Prottipo Retorna
unsigned int Expander_Read_PortAB (char ModuleAddress);

Palavra lida. A funo l a palavra a partir dos portos de Porto Expander. Porta leituras esto no maior byte do resultado. leituras PortB so o byte inferior do resultado.

Descrio

Parmetros: - ModuleAddress: Porto endereo de hardware Expander, consulte esquemtica na final desta pgina Porto Expander deve ser inicializado. Veja Expander_Init.

Requer

Porta Porta Expander e PortB devem ser configurados como entradas. Veja Expander_Set_DirectionPortA, Expander_Set_DirectionPortB e Expander_Set_DirectionPortAB rotinas.
/ / 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);

Exemplo

Expander_Write_PortA
Prottipo Retorna
vazio Expander_Write_PortA (char ModuleAddress, char Data_);

Nada. A funo escreve byte para a Porta do Porto expansor.

Descrio

Parmetros: - ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina - Data_: dados a serem gravados Porto Expander deve ser inicializado. Veja Expander_Init.

Requer

Porta Porta expansor deve ser configurado como sada. Veja Expander_Set_DirectionPortA Expander_Set_DirectionPortAB e rotinas.
/ / Escreve um byte no Porto PORTA expansor ... Expander_Set_DirectionPortA (0,0 x00); / expansor / set's porta de sada a ser ... Expander_Write_PortA (0, 0xAA);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

393

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Expander_Write_PortB
Prottipo Retorna
vazio Expander_Write_PortB (char ModuleAddress, char Data_);

Nada. A funo escreve o byte para PortB Expander do Porto.

Descrio

Parmetros: - ModuleAddress: Porto endereo de hardware expansor, ver esquema na final desta pgina - Dados: dados a serem gravados Porto Expander deve ser inicializado. Veja Expander_Init.

Requer

PortB Porto Expander deve ser configurado como sada. Veja Expander_Set_DirectionPortB Expander_Set_DirectionPortAB e rotinas.
/ / Escreve um byte para PORTB Porto expansor ... Expander_Set_DirectionPortB (0,0 x00); / expansor / set's PORTB a sada ... Expander_Write_PortB (0, 0x55);

Exemplo

Expander_Write_PortAB
Prottipo Retorna
vazio Expander_Write_PortAB (char ModuleAddress, unsigned int Data_);

Nada. A funo escreve a palavra Porto expansor portos. Parmetros:

Descrio - ModuleAddress: Porto endereo de hardware Expander, ver esquema na

- Dados: dados a serem gravados. Os dados a serem gravados so passados em Porta Dados
da

maior de bytes. Os dados a serem gravados para PortB so passados em byte inferior de
Data

Porto Expander deve ser inicializado. Veja Expander_Init. Requer Porta Porta Expander e PortB devem ser configurados como sadas. 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 sada ... Expander_Write_PortAB (0, 0xAA55);

Exemplo

394

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Expander_Set_DirectionPortA
Prottipo Retorna
vazio Expander_Set_DirectionPortA (char ModuleAddress, char Data_);

Nada. A funo define Porta Porta expansor direo. Parmetros:

Descrio

Requer Exemplo

- ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina - Dados: dados a serem gravados para o registo direo Porta. Cada bit corresponde para os pinos do registo de Porta. bit Set configura o corresponding pino como entrada. bit Cleared configura o pino correspondente como uma sada. Porto Expander deve ser inicializado. Veja Expander_Init.
/ / Set Port Expander do Porta a sada Expander_Set_DirectionPortA (0,0 x00);

Expander_Set_DirectionPortB
Prottipo Retorna
vazio Expander_Set_DirectionPortB (char ModuleAddress, char Data_);

Nada. A funo define direo Port Expander do PORTB. Parmetros:

Descrio

Requer Exemplo

- ModuleAddress: Porto hardware Expander endereo, ver esquema na final desta pgina - Dados: dados a serem gravados para o registo direo PortB. Cada bit corresponde para os pinos do registo PORTB. bit Set configura o corresponding pino como entrada. bit Cleared configura o pino correspondente como uma sada Porto Expander deve ser inicializado. Veja Expander_Init.
/ / PORTB Set Port Expander para ser a entrada Expander_Set_DirectionPortB (0,0 xFF);

Mikroelektronika - Solues de software e hardware para o mundo embutido

395

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Expander_Set_DirectionPortAB
Prottipo Retorna
vazio Expander_Set_DirectionPortAB (char ModuleAddress, no assinado int Direo);

Nada. A funo define Porta Porta Expander e direo PortB. Parmetros:

Descrio

- ModuleAddress: Porto Expander endereo de hardware, ver esquema na final desta pgina - Direo: dados a serem escritos aos registos direo. Dados a serem gravados para o Porta registo direo so passados em Direo de maior byte. Dados a serem por escrito direco PortB registo so passadas em byte inferior de Direo. Cada bit corresponde ao pino apropriado do registo Porta PortB /. bit Set configura o pino correspondente como uma entrada. bit Cleared configura o correscorrespondente pino como sada. Porto Expander deve ser inicializado. Veja Expander_Init.
/ / Porta Set Port Expander para ser produzido e PORTB a entrada Expander_Set_DirectionPortAB (0,0 x00FF);

Requer Exemplo

Expander_Set_PullUpsPortA
Prottipo Retorna
vazio Expander_Set_PullUpsPortA (char ModuleAddress, char Data_);

Nada. A funo define Porta Porta expansora de puxar para cima / baixo resistores. Parmetros:

Descrio

Requer Exemplo

- ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina - Dados: dados para a escolha de puxar para cima / baixo configurao resistores. Cada bit corresponde ao pino apropriado do registo Porta. bit Set permite pull-up para o pino correspondente Porto Expander deve ser inicializado. Veja Expander_Init.
/ / Porta Set Port Expander de resistores pull-up Expander_Set_PullUpsPortA (0, 0xFF);

396

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Expander_Set_PullUpsPortB
Prottipo Retorna
vazio Expander_Set_PullUpsPortB (char ModuleAddress, char Data_);

Nada. A funo define PortB Porto expansor pull up / down resistores. Parmetros:

Descrio

Requer Exemplo

- ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina - Dados: dados para a escolha de puxar para cima / baixo configurao resistores. Cada bit corresponde ao pino apropriado do registo PORTB. bit Set permite ll i d Porto Expander deve ser inicializado. Veja Expander_Init.
/ / PORTB Set Port Expander de resistores pull-up Expander_Set_PullUpsPortB (0, 0xFF);

Expander_Set_PullUpsPortAB
Prottipo Retorna
vazio Expander_Set_PullUpsPortAB (char ModuleAddress, unsigned int Pullups);

Nada. A funo define Port expansor Porta e PortB pull up / down resistores. Parmetros:

Descrio

- ModuleAddress: Porto endereo de hardware Expander, ver esquema na final desta pgina - Pullups: dados para a escolha de puxar para cima / baixo configurao resistores. Porta puxe up / down de configurao resistores aprovada em byte de maior pullups. PortB puxe up / down de configurao resistores passado byte inferior do pullups. Cada
bit

Requer Exemplo

d i i d d i t P t P tB / bit S t Porto Expander deve ser inicializado. Veja Expander_Init.


/ / Set Port expansor PORTA e PORTB resistores pull-up Expander_Set_PullUpsPortAB (0, 0xFFFF);

it

Mikroelektronika - Solues de software e hardware para o mundo embutido

397

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

O exemplo demonstra como se comunicar com Porto Expander MCP23S17. Note que os pinos de Porto Expander A2 A1 A0 esto ligados a GND to Port Expander Endereo de hardware 0.

/ / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit em RC1_bit; SPExpanderCS sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander unsigned char i = 0; vazio main () { ANSEL = 0; ANSELH = 0; TRISB = 0; PORTB = 0xFF;

/ / Configurar um pinos como I / O digital / / Set PORTB como sada

/ / Se a porta Expander Library usa SPI1 mdulo SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander / / / / Se a porta Expander Biblioteca utiliza o mdulo SPI2 SPI2_Init (); / / Inicializar SPI mdulo usado com PortExpander / / Inicializar Porto Expander PORTA / Expander Set / para

Expander_Init (0); Expander_Set_DirectionPortA (0, 0x00); ser a sada

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 - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

Porto Expander conexo HW

Mikroelektronika - Solues de software e hardware para o mundo embutido

399

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas BIBLIOTECA PS / 2

A mikroC PRO para PIC fornece uma biblioteca para comunicao com o mercado comum PS / 2 para teclado. Nota: A biblioteca no utilizar interrupes para recuperao de dados, e requer a OSCILlator relgio 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 comunicao bidirecional, esta biblioteca no fornece MCU para teclado de comunicao; por exemplo, pressionando a tecla Caps Lock no liga o Caps Lock LED.

As dependncias externas do PS / 2 Biblioteca


As seguintes variveis devem ser definidos em todos os sbit j t extern sfr
PS2_Data; sbit sfr extern PS2_Clock; sbit sfr extern PS2_Data_Direction; sbit sfr extern PS2_Clock_Direction;

Descrio:

Exemplo:

sbit PS2_Data em RC0_bit sbit PS2_Clock em PS / 2 da linha de relgio. RC1_bit; sbit PS2_Data_Direction Direco do PS / 2 pinos de em TRISC0_bit; d d Direco do PS / pino do relgio sbit PS2_Clock_Direction em TRISC1_bit;

PS / 2 linhas de dados.

Rotinas da biblioteca
- Ps2_Config - Ps2_Key_Read

400

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Ps2_Config
Prottipo Retorna Descrio
vazio Ps2_Config ();

Nada. Inicializa o MCU para trabalhar com o teclado PS / 2. As variveis globais:

Requer

PS2_Data: Dados linha de sinal PS2_Clock: Relgio linha de sinal em PS2_Data_Direction: Direo dos Dados pin Direo do pino do relgio: PS2_Clock_Direction

devem ser definidas antes de utilizar este funo.


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

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

401

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Ps2_Key_Read
Prottipo Retorna
unsigned short Ps2_Key_Read (unsigned short * O valor, unsigned short * Especial, unsigned short * Pressionada);

- 1 se a leitura de uma tecla do teclado foi concludo com xito - 0 Se nenhuma tecla foi pressionada A funo recupera informaes sobre a tecla pressionada. Parmetros:

Descrio

Requer

- valor: mantm o valor da tecla pressionada. Para caracteres, algarismos, sinais de pontuao, e no espao valor ir armazenar o cdigo ASCII adequados. Rotina "Reconhece" a funo da tecla Shift e Caps Lock, e se comporta apropriadamente. Para teclas de funes especiais Teclas de funes especiais ver tabela. - especiais: uma bandeira para teclas de funo especial (F1, Enter, Esc, etc.) Se a tecla pressionada um desses i l ser definido como 1 caso contrrio 0 PS / 2 para teclado precisa ser inicializado. Veja Ps2_Config rotina.
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);

Exemplo

402

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Teclas de Funo Especial


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 Incio 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 Num Lock 29 Seta para esquerda 30 Seta para direita Seta para cima Seta para baixo Escape Tab 31 32 33 34 35

Mikroelektronika - Solues de software e hardware para o mundo embutido

403

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
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 sbit PS2_Data em RC0_bit; em RC1_bit; PS2_Clock PS2_Data_Direction em TRISC0_bit; PS2_Clock_Direction em TRISC1_bit;

vazio main () { ANSEL = 0; ANSELH = 0; / / Configurar um pinos como I / O digital

UART1_Init (19200); / / Inicializa o mdulo 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 tambm espera avano de linha / / Transio para nova linha } else if (Baixo & &! Especiais & & keyData) { UART1_Write (keyData); } } Delay_ms (1); / debounce / } enquanto (1); }

404

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

Exemplo de conexo de teclado PS2

Mikroelektronika - Solues de software e hardware para o mundo embutido

405

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas PWM BIBLIOTECA

mdulo CCP est disponvel com uma srie de microcontroladores PIC. mikroC PRO para PIC biblioteca que fornece simplifica o uso de PWM HW Mdulo. Nota: Alguns MCUs tm vrios mdulos CCP. Para poder usar a rotina da biblioteca desejada CCP, basta alterar o nmero 1 no prottipo com o nmero adequado de mdulo, ou seja,
PWM2_Start ();

Rotinas da biblioteca
- PWM1_Init - PWM1_Set_Duty - PWM1_Start - PWM1_Stop

PWM1_Init
Prottipo Retorna
vazio PWM1_Init (long freq);

Nada. Inicializa o mdulo PWM com razo de direito 0. Parmetro freq um PWM desejado frequncia em Hz (ver dados do dispositivo folha para valores corretos em relao com FOSC). Essa rotina deve ser chamada antes de usar outras funes de PWM Biblioteca. MCU deve ter mdulo CCP.

Descrio

Requer

Nota: O clculo do valor da freqncia de PWM realizada pelo compilador, como seria produzir um cdigo relativamente grande, se feito a nvel de biblioteca. Portanto o compilador precisa saber o valor do parmetro em tempo de compilao Inicializar mdulo PWM na 5KHz:
PWM1_Init (5000);

Exemplo

406

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

PWM1_Set_Duty
Prottipo Retorna Descrio Requer Exemplo
vazio PWM1_Set_Duty (unsigned short duty_ratio);

Nada. Define a relao direito PWM. Parmetro direito assume valores de 0 a 255, onde 0 0%, 127 de 50% e 255 a razo de 100%. Outros valores especficos para a l d MCU deve ter mdulo CCP. PWM1_Init deve ser chamado antes de utilizar esta rotina. Ajuste a proporo direito a 75%:
PWM1_Set_Duty (192);

PWM1_Start
Prottipo Retorna Descrio Requer Exemplo
vazio PWM1_Start (void);

Nada. Inicia PWM. MCU deve ter mdulo CCP. PWM1_Init deve ser chamado antes de utilizar esta rotina.
PWM1_Start ();

PWM1_Stop
Prottipo Retorna Descrio Requer
vazio PWM1_Stop (void);

Nada. Inicia PWM. MCU deve ter mdulo CCP. PWM1_Init deve ser chamada antes de usar este routine. PWM1_Start deve ser chamada antes de usar essa rotina, caso contrrio ter nenhum efeito como o mdulo de PWM no est funcionando.
PWM1_Stop ();

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

407

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

O exemplo a relao muda imposto sobre os pinos PWM RC1 e RC2 continuamente. Se o LED ligados a estes pinos, voc pode observar a mudana gradual da luz emitida.
unsigned short current_duty, old_duty, current_duty1, old_duty1; vazio InitMain () { ANSEL = 0; ANSELH = 0; PORTA = 255; TRISA = 255; PORTB = 0; TRISB = 0; PORTC = 0; TRISC = 0; PWM1_Init (5000); PWM2_Init (5000); } vazio main () { InitMain (); current_duty = 16; current_duty1 = 16; PWM1_Start (); PWM2_Start (); PWM1_Set_Duty (current_duty); PWM2_Set_Duty (current_duty1);

/ / Configurar um pinos como I / O digital

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

configurar o PORTA conjunto PORTB a 0 PORTB designar conjunto PORTC a 0 PORTC designar Inicializar PWM1 Inicializar PWM2

pinos como entrada pinos como sada pinos como sada mdulo em 5KHz mdulo em 5KHz

/ / Valor inicial para current_duty / / Valor inicial para current_duty1 // // // // incio PWM1 incio PWM2 Definir dever atual de PWM1 Conjunto atual dever de PWM2

enquanto (1) {/ / faz um loop infinito se (RA0_bit) {/ / boto pressionado em RA0 Delay_ms (40); current_duty + +; / current_duty incremento / PWM1_Set_Duty (current_duty); } se (RA1_bit) {/ / boto de RA1 pressionado Delay_ms (40); current_duty -; / current_duty / decremento PWM1_Set_Duty (current_duty); } se (RA2_bit) {/ / boto pressionado no RA2 Delay_ms (40); current_duty1 + +; / / incrementa current_duty1 PWM2_Set_Duty (current_duty1); }

408

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
se (RA3_bit) {/ / boto de RA3 pressionado Delay_ms (40); current_duty1 -; / / decremento current_duty1 PWM2_Set_Duty (current_duty1); } Delay_ms (5); } }

CAPTULO 7

Bibliotecas

/ / Desacelerar o ritmo mudar um pouco

HW Conexo

demonstrao PWM

Mikroelektronika - Solues de software e hardware para o mundo embutido

409

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas BIBLIOTECA RS-485

RS-485 uma comunicao multiponto que permite que vrios dispositivos para ser conectado ed a um barramento nico. A mikroC PRO para PIC fornece um conjunto de rotinas de biblioteca para trabalho confortvel com RS485 sistema usando Mestre / Escravo arquitetura. Mestre e Escravo pacotes de intercmbio de informaes. Cada um destes pacotes contm bytes de sincronizao, CRC byte, byte de endereo e os dados. Cada escravo tem endereo nico e recebe apenas pacotes que lhe foi dirigida. O escravo no pode nunca initiate comunicao. de responsabilidade do usurio para garantir que apenas um dispositivo transmite atravs de 485 nibus em um tempo. A RS-485 rotinas exigem o mdulo UART. Pins da UART precisa ser anexado ao transceptor RS-485, como LTC485 ou similares (veja esquema na parte inferior desta pgina). Nota: A biblioteca utiliza o mdulo UART para a comunicao. O usurio deve inicialize o mdulo UART adequado antes de utilizar a Biblioteca RS-485. Para MCUs com dois mdulos UART possvel inicializar ambos e depois alternar usando o UART_Set_Active funo. Veja as funes UART Biblioteca. constantes Biblioteca: - START = valor de byte 150 - Valor STOP byte = 169 - Endereo 50 o endereo de broadcast para todos (Slaves pacotes que contm o endereo 50 ser recebida por todos os escravos, exceto os escravos com endereos 150 e 169). Nota: Como alguns PIC18 MCUs tm mltiplas mdulos UART, UART adequado mdulo deve ser inicializado. Alternando entre mdulos UART UART na biblioteca feito pela funo UART_Set_Active (mdulo UART tem de ser previamente initialized).

As dependncias externas da RS-485 Biblioteca


A varivel seguinte Descrio: deve ser definida em todos os proECTS d RS 48 Controle RS-485 sfr extern sbit Transmisso / recepo de RS485_rxtx_pin; operao Modo sbit sfr extern Direo da RS-485 RS485_rxtx_pin_direcTransmisso / recepo o; de pinos Exemplo:

sbit RS485_rxtx_pin em RC2_bit; sbit RS485_rxtx_pin_direco em TRISC2_bit;

410

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
- RS485master_Init - RS485master_Receive - RS485master_Send - RS485slave_Init - RS485slave_Receive - RS485slave_Send

RS485Master_Init
Prottipo Retorna Descrio
vazio RS485Master_Init ();

Nada. Inicializa MCU como um Mestre de comunicao RS-485. As variveis globais:


RS485_rxtx_pin - Este pino ligado entrada DE RE / RS-485-transceiv

Requer

er (ver esquema em baixo desta pgina). RE / controles sinal DE RS-485 transceptor modo de operao.
RS485_rxtx_pin_direction - Direo da RS-485 de transmisso / recepo do pino

devem ser definidas antes de utilizar esta funo. necessidades mdulo UART HW para ser inicializado. Veja UART1_Init.
/ / RS485 pinagem do mdulo sbit RS485_rxtx_pin_direction em RC2_bit / / transmisso / recepo controle definido para PORTC.B2

Exemplo

/ / Direo Pin sbit RS485_rxtx_pin_direction em TRISC2_bit / / rxtx pino dio definida como produo ... UART1_Init (9600); / / inicializa o mdulo UART RS485Master_Init (); / intialize MCU como um mestre para RS-485 comunicao

Mikroelektronika - Solues de software e hardware para o mundo embutido

411

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
RS485Master_Receive
Prottipo Retorna
vazio RS485Master_Receive (char * Data_buffer);

Nada. Recebe mensagens de Escravos. As mensagens so multi-byte, essa rotina deve ser chamado para cada byte recebido. Parmetros: - data_buffer: 7 buffer de bytes para armazenar os dados recebidos, da seguinte forma: - dados [0 .. 2]: contedo da mensagem - dados [3]: nmero 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]: endereo do escravo, que enviou a mensagem A funo ajusta automaticamente dados [4] e dados [5] sobre todos os recebidos mensagem. Estas bandeiras devem ser limpos por software.

Descrio

Requer Exemplo

MCU deve ser inicializado como um Mestre de comunicao RS-485. Veja RS485master_Init.
char msg [8]; ... RS485Master_Receive (msg);

RS485Master_Send
Prottipo Retorna
vazio RS485Master_Send (char * Data_buffer, char datalen, char Slave_address);

Nada. Envia mensagem para Slave (s). Formato de mensagem pode ser encontrado na parte inferior desta pgina. Parmetros: - data_buffer: dados a serem enviados - datalen: nmero de bytes para transmisso. Valores vlidos: 0 ... 3. E ( ) d MCU deve ser inicializado como um Mestre de comunicao RS-485. Veja RS485Master_Init. de responsabilidade do usurio para garantir (por protocolo) que apenas um dispositivo envia d d msg [8]; 485 ib t d t char
... / / Envia 3 bytes de dados para Escravo com endereo 0x12 RS485Master_Send (msg, 3, 0x12);

Descrio

Requer

Exemplo

412

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

RS485slave_Init
Prottipo Retorna
vazio RS485Slave_Init (char Slave_address);

Nada. Inicializa MCU como um escravo para comunicao RS-485.

Descrio

Parmetros: - slave_address: Endereo do escravo As variveis globais:


RS485_rxtx_pin - Este pino ligado entrada DE RE / RS-485-transceiv

Requer

er (ver esquema no final desta pgina). RE / controles sinal DE RS-485 transceptor modo de operao. Valores vlidos: 1 (Para transmisso) e 0 (Para receing)
RS485_rxtx_pin_direction - Direo da RS-485 de transmisso / recepo do pino

devem ser definidas antes de utilizar esta funo. UART mdulo HW precisa ser inicializado. Veja UART1_Init.
/ / Pinagem do mdulo RS485 sbit RS485_rxtx_pin em RC2_bit / / transmisso / recepo de controle definido para PORTC.B2

Exemplo

/ / Direo Pin sbit RS485_rxtx_pin_direction em TRISC2_bit / / rxtx pino dio definida como produo ... UART1_Init (9600); / / inicializa o mdulo UART RS485Slave_Init (160); / intialize MCU como um Escravo para comunicao RS-485 com o endereo 160

Mikroelektronika - Solues de software e hardware para o mundo embutido

413

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
RS485slave_Receive
Prottipo Retorna
vazio RS485Slave_Receive (char * Data_buffer);

Nada. Recebe mensagens de Mestre. Se Escravo endereo e campo Mensagem endereo no correspondem, em seguida, a mensagem ser descartada. As mensagens so multi-byte, de modo que este rotina deve ser chamado para cada byte recebido.

Descrio

Parmetros: data_buffer: 6 buffer de bytes para armazenar os dados recebidos, da seguinte forma: dados dados dados dados [0 .. 2]: contedo da mensagem [3]: nmero de bytes de mensagens recebidas, 1-3 [4]: fixado em 255 quando a mensagem recebida [5]: fixados em 255 se o erro ocorreu

Requer

A funo ajusta automaticamente d d [4] e d d [5] sobre todos os recebidos MCU deve ser inicializado como um escravo para comunicao RS-485. Veja RS485slave_Init.
char msg [8]; ... RS485Slave_Read (msg);

Exemplo

414

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

RS485slave_Send
Prottipo Retorna
vazio RS485Slave_Send (char * Data_buffer, char datalen);

Nada. Envia uma mensagem para Master. Formato de mensagem pode ser encontrado na parte inferior desta pgina. Parmetros: - data_buffer: dados a serem enviados d b t t i V l lid 0 3 MCU deve ser inicializado como um escravo para comunicao RS-485. Veja RS485slave_Init. de responsabilidade do usurio para garantir (por protocolo) que s um dispositivo envia dados por meio de 485 nibus em um tempo.
char msg [8]; ... / / Envia dois bytes de dados para o Mestre RS485Slave_Send (msg, 2);

Descrio

Requer

Exemplo

Exemplo Biblioteca
Esta uma simples demonstrao de RS485 Biblioteca rotinas de uso. Master envia mensagem para Slave com o endereo 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 incredados documentados de volta ao escravo, etc Master exibe os dados recebidos em PORTB, enquanto o erro de receber (0xAA) e nmero de consecomerciais e executivas tentativas mal sucedidas so exibidos na PORTD. exibe Escravo recebeu dados sobre PORTB, enquanto que o erro na recepo (0xAA) exibido no PORTD. configuraes de hardware, neste exemplo so feitas para o conselho EasyPIC5 e 16F887.

Mikroelektronika - Solues de software e hardware para o mundo embutido

415

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC RS485 cdigo mestre:
char dat [10]; char i, j; / / Buffer para receving / envio de mensagens

Bibliotecas

rs485_rxtx_pin sbit em RC2_bit / / pino conjunto transcieve sbit rs485_rxtx_pin_direction em TRISC2_bit / / pino conjunto transcieve direo / / Rotina de interrupo void interrupt () { RS485Master_Receive (DAT); } vazio main () { tempo cnt = 0; ANSEL = 0; ANSELH = 0; PORTB PORTD TRISB TRISD = = = = 0; 0; 0; 0; / / Configurar um pinos como I / O digital

UART1_Init (9600); Delay_ms (100); RS485Master_Init (); dat [0] = 0xAA; dat [1] = 0xF0; dat [2] = 0x0F; dat [4] = 0; dat [5] = 0; dat [6] = 0;

/ / inicializar o mdulo UART1

/ / Inicializa MCU como Mestre

/ / Garantir que a mensagem recebida bandeira 0 / / Garantir que a bandeira de erro de 0

RS485Master_Send (DAT, 1160);

PIE1.RCIE = 1; PIE2.TXIE = 0; INTCON.PEIE = 1; INTCON.GIE = 1; enquanto (1) {

// // // //

permitir interrupo no UART1 receber desabilitar interrupo na transmisso UART1 habilitar interrupes perifricas habilitar todas as interrupes

/ / sobre concluda mensagem vlida receber / / Dados [4] est situado a 255 cnt + +;

416

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
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);

CAPTULO 7

Bibliotecas

} 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 endereo } } / / Funo para ser devidamente ligados. }

RS485 cdigo Slave:


char dat [9]; char i, j; / / Buffer para receving / envio de mensagens

sbit rs485_rxtx_pin em RC2_bit / / pino conjunto transcieve rs485_rxtx_pin_direction em TRISC2_bit / / pino conjunto transcieve sbit direo / / Rotina de interrupo void interrupt () { RS485Slave_Receive (DAT); } vazio main () { ANSEL = 0; ANSELH = 0; PORTB PORTD TRISB TRISD = = = = 0; 0; 0; 0;

/ / Configurar um pinos como I / O digital

Mikroelektronika - Solues de software e hardware para o mundo embutido

417

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
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; / / Inicializa UART1 mdulo / / MCU Intialize como escravo, o endereo 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 interrupo no UART1 receber / / Desativar interrupo na transmisso UART1 / / Habilitar interrupes perifricas / / Habilitar todas as interrupes

Bibliotecas

enquanto (1) { se (Dat [5]) {/ / se um erro detectado, o sinal pelo PORTD 0xAA = / / configurao portd para 0xAA dat [5] = 0; } se (Dat [4]) {/ / aps concluda mensagem vlida 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 - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

Exemplo de interface PC para 8051 MCU via rede RS485 com LTC485 como Transceptor RS-485 Mikroelektronika - Solues de software e hardware para o mundo embutido

419

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Mensagem clculos formato e CRC
Q: Como CRC checksum calculado sobre RS485 lado Mestre?
START_BYTE = 0x96 / / 10010110 STOP_BYTE 0xa9 = / / 10101001 PACOTE: -------START_BYTE 0x96 ENDEREO Datalen [DATA1] [DATA2] [Data3] CRC STOP_BYTE 0xa9

/ / Se existe / / Se existe / / Se existe

bits datalen -----------bit7 = 1 mestre envia 0 escravo envia bit6 = 1 endereo foi XORed com 1, foi igual STOP_BYTE 0 endereo 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, START_BYTE ou STOP_BYTE 0 DATA1 (caso exista) inalterado bit1bit0 = 0 a 3 nmero de bytes de dados ENVIAR gerao de CRC: ---------------crc_send = Endereo ^ 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: STOP_BYTE <4 .. 0> valores. no ter o

A START_BYTE ou

Foi igual a

Foi igual a

Foi igual A

START_BYTE <4 .. 0>

ou

420

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SOFTWARE DE BIBLIOTECA I C
A mikroC PRO para PIC fornece rotinas para a execuo Software comunicao I2Ccao. Estas rotinas so independentes de hardware e pode ser usado com qualquer MCU. O Software biblioteca I2C permite que voc use MCU como mestre em comunicao I2C. O modo multi-mestre no suportado. Nota: Esta biblioteca implementa as atividades baseadas em tempo, assim interrupes precisam ser disabled ao usar Software I2C. Nota: Todas as funes do software I2C Biblioteca esto bloqueando chamadas funes (eles esto esperando para I2C linha do relgio para se tornar uma lgica). Nota: Os pinos utilizados para a comunicao I2C Software deve ser ligado ao os resistores de pull-up. Desligar os LEDs ligados a estes pinos tambm podem ser necessrio. As dependncias externas de Soft_I2C Biblioteca das seguintes variveis deve ser definida em todos os projetos que utilizam Software Descrio: Exemplo:

sbit extern Soft_I2C_Scl; sbit extern Soft_I2C_Sda;

sbit Soft_I2C_Scl em RC3_bit; sbit Soft_I2C_Sda em Soft I2C linha de dados. RC4_bit;

Soft I2C linha do

sbit extern Soft_I2C_Scl_Direction; sbit extern Soft_I2C_Sda_Direction;

Direo da Soft I2C pino do relgio. Direo da Soft Dados I2C pino.

sbit Soft_I2C_Scl_Direction em TRISC3_bit; sbit Soft_I2C_Sda_Direction em TRISC4_bit;

Rotinas da biblioteca
- Soft_I2C_Init - Soft_I2C_Start - Soft_I2C_Read - Soft_I2C_Write - Soft_I2C_Stop - Soft_I2C_Break Mikroelektronika - Solues de software e hardware para o mundo embutido

421

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Soft_I2C_Init
Prottipo Retorna Descrio
vazio Soft_I2C_Init ();

Nada. Configura o software I Mdulo C. As variveis globais:


- Soft_I2C_Scl: Soft I linha do relgio C

Requer

- Soft_I2C_Sda: Soft I C linha de dados - Soft_I2C_Scl_Pin_Direction: Direo da Soft I pino do relgio C - Soft_I2C_Sda_Pin_Direction: Direo da Soft Eu dados pino C

devem ser definidas antes de utilizar esta funo.


/ / Software conexes 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 conexes I2C ... Soft_I2C_Init ();

Exemplo

Soft_I2C_Start
Prottipo Retorna Descrio Requer Exemplo
vazio Soft_I2C_Start (void);

Nada. Determina se o barramento I2C gratuito e as questes START. Software I2C deve ser configurado antes de usar esta funo. Veja Soft_I2C_Init rotina.
/ / Problema START Soft_I2C_Start ();

422

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Soft_I2C_Read
Prottipo Retorna
unsigned short Soft_I2C_Read (unsigned int ack);

Um byte a partir do escravo. L um byte a partir do escravo.

Descrio

Parmetros:
- Ack: reconhecer parmetro de sinal. Se o ack 0 == no

reconhecer sinal ser enviado aps a leitura, caso contrrio o reconhecer sinal ser enviada. Requer Soft I C deve ser configurado antes de usar esta funo. Veja rotina Soft_I2C_Init. Alm disso, START deve ser emitido, a fim de utilizar esta funo. Veja Soft_I2C_Start rotina.
unsigned short ter; ... / / Ler os dados e enviar o not_acknowledge sinal ter = Soft_I2C_Read (0);

Exemplo

Soft_I2C_Write
Prottipo Retorna
unsigned short Soft_I2C_Write (unsigned data_ curto); - 0 se no houvesse erros. - 1 se escrever coliso foi detectada no barramento C .

Envia dados byte atravs do barramento C . Descrio Parmetros:


- Dados: dados a serem enviados

Requer

Soft I C deve ser configurado antes de usar esta funo. Veja Soft_I2C_Init rotina. Alm disso, START deve ser emitido, a fim de utilizar esta funo. Veja Soft_I2C_Start rotina.
unsigned short dados, o erro; ... = erro Soft_I2C_Write (dados); = erro Soft_I2C_Write (0xA3);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

423

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Soft_I2C_Stop
Prottipo Retorna Descrio Requer Exemplo
vazio Soft_I2C_Stop (void);

Nada. Problemas de sinal STOP. Soft I2C deve ser configurado antes de usar esta funo. Veja rotina Soft_I2C_Init.
/ / Problema de sinal STOP Soft_I2C_Stop ();

Soft_I2C_Break
Prottipo Retorna
vazio Soft_I2C_Break (void);

Nada. Todas as funes do software I2C Biblioteca pode bloquear o programa fluxo (ver nota no

Descrio

topo desta pgina). Chamar essa rotina de interrupo ir desbloquear o programa de execuo. Este mecanismo similar ao TSH. Nada.
/ / Software conexes 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 conexes I2C char contador = 0;

Requer

Exemplo
vazio interrupo { 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 interrupo

424

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
} } vazio main () { OPTION_REG = 0x04; / / Prescaler TMR0 definir a 1:32

CAPTULO 7

Bibliotecas

Exemplo

... / / Tenta Soft_I2C_Init com bloqueio de mecanismo de preveno INTCON.GIE = 1 / / Global interrupt enable INTCON.T0IE = 1; / estouro Timer0 Habilitar interrupo Soft_I2C_Init (); INTCON.GIE = 0; / / Global interrupo desativar ... }

Exemplo Biblioteca
O exemplo demonstra Software I Biblioteca C rotinas de uso. O PIC MCU conectado (SCL, SDA pinos) para PCF8583 RTC (relgio de tempo real). Programa l data e tempo so lidos a partir do RTC e imprime na tela LCD.
char segundos, minutos, horas, dia, ms, ano; variveis / / Software conexes 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 conexes I2C / / Conexes do mdulo 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; / Data / Global / hora

Mikroelektronika - Solues de software e hardware para o mundo embutido

425

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
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 conexes do mdulo 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); = segundos Soft_I2C_Read (1); Soft_I2C_Read minutos = (1); horas = Soft_I2C_Read (1); dia Soft_I2C_Read = (1); = ms Soft_I2C_Read (0); Soft_I2C_Stop (); } //-------------------- 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 ms = * ((mes & 0x10)>> 4) 10 + (mes & 0x0F); Transforme meses } //-------------------- valores de sada para LCD vazio Display_Time () { Lcd_Chr (1, 6, (dia / 10) + 48); / dez / Imprimir dgitos do dia varivel Lcd_Chr (1, 7, (dia 10%) + 48) / / oness Imprimir dgitos do dia varivel Lcd_Chr (1, 9, (ms / 10) + 48); Lcd_Chr (1,10 (% de 10 meses) + 48); Lcd_Chr (1,15, + 56 anos); / ano impresso / vaiable + 8 // // // // // Emisso sinal de partida Endereo PCF8583, ver ficha PCF8583 Incio de endereo 2 Emisso repetidas sinal de partida Endereo PCF8583 para leitura R / W = 1 // // // // // // Leia segundo byte Leia minutos byte Leia horas byte Leia anos / byte dia Leia semana / ms byte Emisso de sinal de paragem

Bibliotecas

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

426

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
(Incio do ano 2008) Lcd_Chr Lcd_Chr Lcd_Chr Lcd_Chr Lcd_Chr Lcd_Chr } (2, 6, (2, 7, (2, 9, (2,10, (2,12, (2,13, (Horas / (% Horas (Minutos (Minutos (Segundo (Segundo 10) 10) / 10) 10%) / 10) 10%) + 48); + 48); + 48); + 48); + 48); + 48);

CAPTULO 7

Bibliotecas

//------------------ 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 comunicao I2C Lcd_Init (); / / Inicializar LCD Lcd_Cmd (_LCD_CLEAR); / Clear LCD Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off Lcd_Out (1,1, "Data:"); 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 (); enquanto (1) { Read_Time (); Transform_Time (); Display_Time (); Delay_ms (1000); } } / / Realizar a inicializao // // // // loop infinito Leia o tempo de RTC (PCF8583) Formato de data e hora Preparar e aparecer no visor LCD / / Preparar e sada de texto esttico no LCD

/ / Espera um segundo

Mikroelektronika - Software e hardware SOLUES PARA mundo embutido

427

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas Software Library SPI

A mikroC PRO para PIC fornece rotinas para a execuo Software comunicao SPIcao. Estas rotinas so independentes de hardware e pode ser usado com qualquer MCU. O SPI Software Library fornece uma fcil comunicao com outros dispositivos atravs da SPI: Conversores A / D e D / A conversores, MAX7219 LTC1290, etc Biblioteca de configurao: - SPI modo Master - Relgio valor = 20 kHz. - Dados amostrados no meio do intervalo. - Relgio 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 dependncias externas de software SPI Biblioteca


As seguintes variveis deve ser definida em todos os projetos que utilizam S ft sbit sfr extern
SoftSpi_SDI; sbit sfr extern SoftSpi_SDO; sbit sfr extern SoftSpi_CLK; sbit sfr extern SoftSpi_SDI_Direction; sbit sfr extern SoftSpi_SDO_Direction; sbit sfr extern SoftSpi_CLK_Direction;

Descrio:

Exemplo:

sbit SoftSpi_SDI em RC4_bit; Dados da linha de sada. sbit SoftSpi_SDO em RC5_bit; sbit SoftSpi_CLK em linha do Relgio. RC3_bit; sbit Direo dos dados no pino. SoftSpi_SDI_Direction em TRISC4_bit; sbit Direo da Sada de Dados do SoftSpi_SDO_Direction em TRISC5_bit;

Dados em linha.

pino sbit Direo do pino do relgio. SoftSpi_CLK_Direction


em TRISC3_bit;

428

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca
- Soft_Spi_Init - Soft_Spi_Read - Soft_Spi_Write

Soft_Spi_Init
Prottipo Retorna Descrio
vazio Soft_SPI_Init ();

Nada. Configura e inicializa o software SPI mdulo. As variveis globais:


- Chip_Select: Chip Selecionar linha

Requer

SoftSpi_SDI: Dados em linha SoftSpi_SDO: Os dados de sada de linha SoftSpi_CLK: Dados da linha de relgio Chip_Select_Direction: Direo do pino de Chip Select SoftSpi_SDI_Direction: Direo do Dados em pino SoftSpi_SDO_Direction: Direo da Sada de dados pino SoftSpi_CLK_Direction: Direo do pino do relgio de dados

devem ser definidas antes de utilizar esta funo.


/ / Software conexes SPI mdulo sbit Chip_Select em RC0_bit; sbit SoftSpi_SDI em RC4_bit; sbit SoftSpi_SDO em RC5_bit; sbit SoftSpi_CLK em RC3_bit;

Exemplo
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 conexes SPI mdulo ... Soft_SPI_Init (); / Soft_SPI Init /

Mikroelektronika - Solues de software e hardware para o mundo embutido

429

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Soft_Spi_Read
Prottipo Retorna
unsigned short Soft_SPI_Read (char sdata);

Byte recebido atravs do barramento SPI. Esta rotina executa trs operaes simultaneamente. Ele fornece o relgio para a Softbarramento SPI ware, l um byte e envia um byte. Parmetros:

Descrio

Requer

Soft SPI deve ser inicializada antes de usar esta funo. Veja Soft_SPI_Init rotina.
unsigned short data_read; data_send char; ... / / Ler um byte e atribu-lo a data_read varivel / / (Byte data_send ser enviado via SPI durante a operao de leitura o) data_read = Soft_SPI_Read (data_send);

d t

d d

i d

Exemplo

Soft_SPI_Write
Prottipo Retorna
vazio Soft_SPI_Write (char sdata);

Nada. Esta rotina envia um byte atravs do barramento SPI Software.

Descrio

Parmetros:
sdata: dados a serem enviados.

Requer Exemplo

Soft SPI deve ser inicializada antes de usar esta funo. Veja rotina Soft_SPI_Init.
/ / Escreve um byte no barramento SPI Soft Soft_SPI_Write (0xAA);

430

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
Este cdigo demonstra o uso de rotinas de biblioteca para a comunicao Soft_SPI. Alm disso, Este exemplo demonstra a trabalhar com MCP4921 da Microchip 12-bit D / A converterer.
/ / Mdulo de conexes 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 mdulo conexes DAC unsigned int valor; vazio InitMain () { TRISB0_bit = 1; TRISB1_bit = 1; Chip_Select = 1; Chip_Select_Direction = 0; Soft_SPI_Init (); } TRISC0_bit; TRISC3_bit; TRISC4_bit; TRISC5_bit;

// // // // //

Definir como entrada pino RA0 Definir como entrada pino RA1 Desmarque DAC Definir CS # pino como sada Inicializar Soft_SPI

/ / Incrementa DAC (0 .. 4095) -> tenso de sada (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 configurao 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 () { ANSEL = 0; / / Desliga entradas analgicas

/ / Loja valueDAC [7 .. 0] para temp [7 .. 0] / / Envia byte baixo via Soft SPI / / Deseleccionar chip DAC

Mikroelektronika - Solues de software e hardware para o mundo embutido

431

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
ANSELH = 0; InitMain (); value = 2048; / / Realizar a inicializao principal / / Quando iniciar o programa, o DAC d / / Sada no mid-range / / Loop infinito / / Se o boto for pressionado RA0 / Valor do incremento /

Bibliotecas

enquanto (1) { se ((RA0_bit) & & (valor < 4095)) { valor + +; } mais { se ((RA1_bit) & & (valor> 0)) { valor -; } } DAC_Output (valor); Delay_ms (1); } }

/ / Se RA1 boto pressionado / Valor / decremento

/ / Enviar valor para chip DAC / Devagar ritmo de repetio das teclas

432

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Software Library UART


A mikroC PRO para PIC fornece rotinas para a execuo do software UART comde comunicao. Estas rotinas so independentes de hardware e pode ser usado com qualquer MCU. O UART Software Library fornece uma fcil comunicao com outros dispositivos atravs do protocolo RS232. Nota: O Software biblioteca UART implementa atividades baseadas em tempo, de modo interrupes 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 SOLUES PARA mundo embutido

433

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Soft_UART_Init
Prottipo
char Soft_UART_Init (char * Porto, char rx_pin, char tx_pin, unsigned long baud_rate, char invertido); - 2 - Taxa de erro, solicitou transmisso muito baixa - 1 - Taxa de erro, solicitou transmisso muito alta - 0 - Inicializao bem-sucedida

Retorna

Configura e inicializa o software do mdulo UART. Parmetros: port: porta a ser utilizado.

Descrio

rx_pin: define rx_pin a ser utilizado. tx_pin: define tx_pin a ser utilizado. baud_rate: taxa de transmisso a ser definido. Mxima taxa de transmisso depende da MCU

relgio e as condies de trabalho. - invertida: bandeira invertida de sada. Quando definido para um valor
diferente de zero, inverteu a lgica

sobre o produto usado. rotinas de software UART uso rotineiro Delay_Cyc. Se solicitado taxa de transmisso muito baixa ento calculado o parmetro para a chamada Delay_Cyc exceeeds Delay_Cyc argumento intervalo Nada. Isto ir iniciar o software UART e estabelecer a comunicao em 9600 bps: Exemplo
char erro; ... = erro Soft_UART_Init (& PORTC, 7, 6, 14400, 0); / / Inicializar Soft UART em 9600 bps

Requer

434

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Soft_UART_Read
Prottipo Retorna
char Soft_UART_Read (char * Erro);

Byte recebido via UART. A funo recebe um byte via software UART. Esta uma chamada de funo de bloqueio (aguarda para o bit de incio).

Descrio

Programador pode desbloque-lo por chamando rotina Soft_UART_Break. Parmetros:


- Erro: Erro de bandeira. Cdigo de erro retornado atravs desta varivel.

Requer

Software UART deve ser inicializado antes de usar esta funo. Veja o Soft_UART_Init rotina.
char dados, o erro; ... / / Aguardar at que os dados so recebidos fazer = dados Soft_UART_Read (e erro); enquanto (Erro); / / Agora podemos trabalhar com os dados: se (Dados) {...}

Exemplo

Mikroelektronika - Softwares e solues de hardware para Embedded World

435

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Soft_UART_Write
Prottipo Retorna Descrio
vazio Soft_UART_Write (char udata);

Nada. Esta rotina envia um byte atravs do barramento UART Software. Parmetros: - udata: dados a serem enviados. Software UART deve ser inicializada antes de usar esta funo. Veja o Soft_UART_Init rotina. Esteja ciente de que Durante a transmisso, software UART incapaz de receber dados protocolo de transferncia de dados deve ser definida de tal forma a evitar a perda
char some_byte = 0x0A; ... / / Escreve um byte atravs Soft Uart Soft_UART_Write (some_byte);

Requer

Exemplo

Soft_Uart_Break
Prottipo Retorna
vazio Soft_UART_Break ();

Nada. Soft_UART_Read est bloqueando a rotina e ele pode bloquear o fluxo do programa. Chamada essa rotina da interrupo sero desbloquear a execuo do programa. Este mecanisnismo similar ao TSH. N d d i d d S f UART Nada. A i
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 interrupo } }

Descrio

Requer

Exemplo

436

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

vazio main () { OPTION_REG = 0x04; ... se (Soft_UART_Init (& PORTC, 7, 6, 9600, 0) = 0) Soft_UART_Write (0x55); / / Prescaler TMR0 definir a 1:32

Exemplo

... / / Tenta Soft_UART_Read com bloqueio de mecanismo de preveno INTCON.GIE = 1 / / Global interrupt enable INTCON.T0IE = 1; / estouro Timer0 Habilitar interrupo data1 = Soft_UART_Read (e erro); INTCON.GIE = 0; / / Global interrupo desativar }

Mikroelektronika - Solues de software e hardware para o mundo embutido

437

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
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; TRISB = 0x00; PORTB = 0;

/ / Variveis auxiliares

/ / Configurar um pinos como I / O digital

/ / Set PORTB como sada (sinalizao 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 no foi detectado, byte de retorno ed, leia } }

438

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

BIBLIOTECA DE SOM
A mikroC PRO para PIC fornece uma biblioteca de som para fornecer aos usurios rotinas necessrias para sinalizao de som em suas aplicaes. Produo de som precisa hardware adicional, como piezo-falante (exemplo de interface piezo-falante dado no esquema no final deste pgina).

Rotinas da biblioteca
- Sound_Init - Sound_Play

Sound_Init
Prottipo Retorna
vazio Sound_Init (char * Snd_port, char snd_pin);

Nada. Configura o pino MCU apropriada para a gerao do som.

Descrio

Parmetros: - snd_port: endereo da porta de sada de som - snd_pin: pino de sada de som

Requer Exemplo

Nada.
/ / Inicializar o RD3 pino para reproduo de som Sound_Init (& PORTD, 3);

Mikroelektronika - Solues de software e hardware para o mundo embutido

439

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Sound_Play
Prottipo Retorna
vazio Sound_Play (unsigned freq_in_hz, no assinado duration_ms);

Nada. Gera o sinal de onda quadrada no pino adequado. Parmetros: - freq_in_Hz: freqncia do sinal em hertz (Hz) - duration_ms: durao do sinal em milissegundos (ms) Nota: A faixa de freqncia limitada pelo parmetro Delay_Cyc. freqncia mxima que pode ser produzido por esta funo Freq_max = FOSC / (80 * 3). fre-mnimo f i i / i i i Para ouvir o som, voc precisa de um alto-falante piezo (ou outro hardware) em dessignada porta. Alm disso, voc deve chamar Sound_Init preparar hardware para a sada antes usar essa funo de 1KHz na durao de 100ms / Play sound /
Sound_Play (1000, 100);

Descrio

Requer

Exemplo

Exemplo Biblioteca
O exemplo uma simples demonstrao 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); } vazio Melody () { Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone3 (); Tone3 ();

/ / = Freqncia 659Hz, durao = 250ms

/ / = Freqncia 698Hz, tempo = 250ms

/ / = Freqncia 784Hz, tempo = 250ms

Tone3 Tone3 Tone3 Tone3 Tone3 Tone2

/ / Reproduz a "Casa Amarela" melodia (); Tone3 (); (); Tone3 (); (); (); Tone3 (); (); (); Tone2 (); Tone1 ();

440

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
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 () { 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); } }

CAPTULO 7

Bibliotecas

/ / Configurar um pinos como I / O digital / Input / Configura RB7 .. RB3 como / RD3 Configure / como sada

/ / RB7 execues Tone1 / / Espera boto para ser liberado / / RB6 execues Tone2 / / Espera boto para ser liberado / / RB5 execues Tone3 / / Espera boto para ser liberado / / RB4 execues Melody2 / / Espera boto para ser liberado / / RB3 execues Melody / / Espera boto para ser liberado

Mikroelektronika - Solues de software e hardware para o mundo embutido

441

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Conexo HW

Exemplo de uma biblioteca de sons sonnection

442

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI BIBLIOTECA

mdulo SPI est disponvel com um nmero de modelos PIC MCU. mikroC PRO para PIC fornece uma biblioteca para inicializar o modo de trabalho escravo e confortvel com o modo Master. PIC pode facilmente comcomunicar com outros dispositivos atravs 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 tm vrios mdulos SPI. Alternando entre os mdulos IPS, no Biblioteca SPI feito pela funo SPI_Set_Active (mdulo SPI tem de ser previamente inicializada). Nota: Para usar o rotina da biblioteca SPI desejado, basta alterar o nmero 1 no prottipo com o nmero adequado de mdulo, ou seja, SPI2_Init ();

Rotinas da biblioteca
- Spi1_Init - Spi1_Init_Advanced - Spi1_Read - Spi1_Write - Spi_Set_Active

Spi_Init
Prottipo Retorna
vazio SPI1_Init (void);

Nada. Isso configura rotina e permite que o mdulo SPI com as seguintes configuraes:

Descrio

- Modo Master - 8 de transferncia de dados de bit - Bit mais significativo primeiro enviado - Relgio de srie baixa quando ociosa - Os dados amostrados na borda - Serial clock = FOSC / 4 Voc necessidade PIC MCU com hardware SPI integrado.
SPI1_Init (); / / Inicializa o mdulo SPI com as configuraes padro

Requer Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

443

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi1_Init_Advanced
Prottipo Retorna
vazio SPI1_Init_Advanced (unsigned short master_slav, unsigned short data_sample, unsigned short clock_idle, unsigned short transmit_edge);

Nada. Configura e inicializa SPI. SPI1_Init ou SPI1_Init_Advanced precisa ser chamada antes de usar outras funes Biblioteca da SPI. Parmetros modo, data_sample e clock_idle configurar o mdulo SPI, e pode ter os seguintes valores: Descrio const biblioteca d fi id SPI modo de trabalho:
_SPI_MASTER_OSC_DIV4 _SPI_MASTER_OSC_DIV16 _SPI_MASTER_OSC_DIV64 _SPI_MASTER_TMR2 _SPI_SLAVE_SS_ENABLE _SPI_SLAVE_SS_DIS

relgio mestre = FOSC / 4 Master clock = Fosc/16 Master clock = Fosc/64

Descrio

Mestre TMR2 fonte de relgio Escravo selecionar habilitado Escravo selecione Desativado

Dados intervalo de amostragem:


Os dados de entrada da amostra no meio do intervalo Os dados de entrada da amostra no final do intervalo _SPI_DATA_SAMPLE_MIDDLE _SPI_DATA_SAMPLE_END

SPI estado relgio em repouso:


Relgio de idle Relgio de marcha lenta Transmite dados em baixa para a borda alta Dados transmitir em alta para baixa borda _SPI_CLK_IDLE_HIGH _SPI_CLK_IDLE_LOW

borda de transmisso:
_SPI_LOW_2_HIGH _SPI_HIGH_2_LOW

Requer

Voc precisa PIC MCU com hardware SPI integrado.


/ / Set SPI1 mdulo para o modo mestre, dados do relgio = FOSC / 4, amostrados em meio do intervalo de baixo estado, relgio parado e dados transmitido 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);

Exemplo

444

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi1_Read
Prottipo Retorna
unsigned short SPI1_Read (unsigned short buffer);

Retorna os dados recebidos. L um byte do barramento SPI.

Descrio

Parmetros: - buffer: dados fictcios para gerao de clock (veja folha de dados
do dispositivo para a SPI

Voc precisa PIC MCU com hardware SPI integrado. Requer SPI deve ser inicializado e comunicao estabelecida antes de usar este funo. Veja SPI1_Init_Advanced ou SPI1_Init.
buffer curto tomar,; ... ter = SPI1_Read (buffer);

Exemplo

Spi1_Write
Prottipo Retorna
vazio SPI1_Write (unsigned short data_);

Nada. Escreve byte atravs do barramento SPI.

Descrio

Parmetros: - wrdata: dados a serem enviados Voc precisa PIC MCU com hardware SPI integrado.

Requer

SPI deve ser inicializado e comunicao estabelecida antes de usar este funo. Veja SPI1_Init_Advanced ou SPI1_Init.
SPI1_Write (1);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

445

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Set_Active
Prottipo Retorna
vazio SPI_Set_Active (char (* Read_ptr) (char))

Nada. Define o mdulo SPI ativos que sero usados pelas rotinas de SPI.

Descrio

Parmetros: - read_ptr: SPI1_Read manipulador

Requer

A rotina disponvel apenas para MCUs com dois mdulos de SPI. Usado mdulo SPI deve ser inicializada antes de usar esta funo. Veja o SPI1_Init, SPI1_Init_Advanced
SPI_Set_Active (& SPI2_Read) / / Define o SPI2 mdulo activo

Exemplo

Exemplo Biblioteca
O cdigo demonstra como usar o SPI biblioteca de funes para a comunicao entre o mdulo de SPI do MCU e MCP4921 da Microchip 12-bit D / A converter
/ / Mdulo de conexes DAC sbit Chip_Select em RC0_bit; sbit Chip_Select_Direction em TRISC0_bit; / / Fim mdulo conexes 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 sada / / Inicializar SPI mdulo

/ / Incrementa DAC (0 .. 4095) -> tenso de sada (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 configurao DAC, consulte MCP4921 datasheet SPI1_Write (temp) / / Envia o byte mais alto via SPI / / Envia Byte Low

446

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
temp = valueDAC; SPI1_Write (temp); Chip_Select = 1; } vazio main () { ANSEL = 0; ANSELH = 0; InitMain (); value = 2048;

CAPTULO 7

Bibliotecas
/ / Loja valueDAC [7 .. 0] para temp [7 .. 0] / / Envia byte baixo via SPI / / Deseleccionar chip DAC

/ / Realizar a inicializao principal / / Quando iniciar o programa, o DAC d / / Sada no mid-range / / Loop infinito / / Se o boto for pressionado RA0 / Valor do incremento /

enquanto (1) {

se ((RA0_bit) & & (valor <4,095)) { valor + +; } mais { se ((RA1_bit) & & (valor> 0)) { valor -; } } DAC_Output (valor); Delay_ms (1); } }

/ / Se RA1 boto pressionado / Valor / decremento

/ / Enviar valor para DAC chip / Devagar ritmo de repetio das teclas

Mikroelektronika - Solues de software e hardware para o mundo embutido

447

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Conexo HW

SPI conexo HW

448

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI biblioteca Ethernet


A ENC28J60 um controlador Ethernet autnomo com um padro da indstria 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 padres IEEE 802.3 especificaes. Ele incorpora um nmero sistemas da filtragem de pacotes para limitar os pacotes de entrada. Ele tambm fornece um interno DMA mdulo para transferncia rpida de dados e hardware clculo de checksum assistida IP es. A comunicao com o controlador de host implementada atravs de dois pinos de interrupo eo IPT, com taxas de dados de at 10 Mb / s. Dois pinos dedicados so utilizados para LED link e indicao de atividade da rede. Esta biblioteca foi projetada para simplificar a manipulao do hardware subjacente (ENC28J60). Ele funciona com qualquer PIC com SPI integrado e mais de 4 Kb de memria ROM. 38 a 40 MHz de clock recomendado para obter 8-10 relgio SPI Mhz, caso contrrio PIC deve ser cronometrado pelo ENC28J60 sada do relgio devido ao seu erro de silcio em hardware SPI. Se voc tentar menor velocidade de relgio do PIC, pode haver placa travar ou perder algumas solicitaes. SPI biblioteca Ethernet suporta: - O protocolo IPv4. - Requisies ARP. - ICMP echo requests. - Os pedidos UDP. - Os pedidos TCP (sem pilha, sem reconstruo de pacotes). - O cliente com cache ARP. - O cliente DNS. - UDP cliente. - O cliente DHCP. - Fragmentao do pacote no suportado. Nota: Devido a PIC16 / Flash RAM limitaes biblioteca PIC16 NO tem ARP, DNS, UDP e suporte ao cliente DHCP implementado.

Nota: A varivel biblioteca Global SPI_Ethernet_userTimerSec usado para acompanhar tempo para todas as implementaes do cliente (ARP, DNS, DHCP e UDP). responsabilidade do usurio dade para aumentar esta varivel a cada segundo em que o cdigo se algum dos clientes usado.

Nota: Para usurios avanados, existem arquivos de cabealho ("eth_enc28j60LibDef.h" e


"Eth_enc28j60LibPrivate.h") em Utiliza \ P16 e P18 usa pastas \ do compilador

com descrio de todas as rotinas e variveis globais, relevantes para o usurio, implementared na Biblioteca Ethernet SPI.

www.mecatronicadegaragem.blogspot.com
Mikroelektronika - Solues de software e hardware para o mundo embutido

449

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Nota: O hardware apropriado mdulo SPI deve ser inicializada antes de usar qualquer o SPI biblioteca de rotinas Ethernet. Consulte a Biblioteca SPI. Para MCUs com dois mdulos SPI possvel inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina.

Bibliotecas

As dependncias externas do SPI Ethernet Biblioteca


As seguintes variveis deve ser definida em todos os projetos usando SPI Eh sbit sfr extern
SPI_Ethernet_CS sbit sfr extern SPI_Ethernet_RST; sbit sfr extern SPI_Ethernet_CS_Direc o; sbit sfr extern SPI_Ethernet_RST_Dire o;

Descrio:

Exemplo:

chip ENC28J60 pinos de l ENC28J60 pino de reset. Direo do ENC28J60 pinos selecionar chip. Direo do ENC28J60 pino de reset.

sbit SPI_Ethernet_CS na RC1_bit; sbit SPI_Ethernet_Rst na RC0_bit; sbit SPI_Ethernet_CS_Direc o em TRISC1_bit; sbit SPI_Ethernet_Rst_Dire o em TRISC0_bit;

As rotinas a seguir deve ser definida em todos os projectos usando SPI Bibli Eth t unsigned int t
SPI_Ethernet_UserTCP (unsigned char * RemoteHost, no assinado int RemotePort, unsigned int localPort, unsigned int reqLength); unsigned int SPI_Ethernet_UserUDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength);

Descrio:

Exemplo:

Consulte a biblioteca exemplo, no botTCP manipulador de Tom de esta pgina para execuo de cdigo solicitao o Consulte a biblioteca exemplo, no botUDP manipulador de Tom desta pgina para execuo de cdigo solicitao o

450

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Rotinas da biblioteca PIC16 e PIC18:


- 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 - Solues de software e hardware para o mundo embutido

451

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Ethernet_Init
Prottipo Retorna
vazio SPI_Ethernet_Init (unsigned char * Mac, unsigned char * Ip, unsigned char FullDuplex);

Nada. Esta a rotina MAC do mdulo. Ele inicializa ENC28J60 controlador. Esta funo internamente subdividida em 2 partes para ajud-vinculador quando vem com pouca memria.
ENC28J60 configuraes do controlador (parmetros no mencionados aqui so definidos

como padro): - Recebe o endereo inicial do buffer: 0x0000. - Receber endereo final buffer: 0x19AD. - Transmitir o endereo inicial do buffer: 0x19AE. - Transmitir endereo final buffer: 0x1fff. - RAM buffer leitura / gravao ponteiros em modo auto-incremento. - Receber filtros definidos como padro: CRC + MAC + MAC Unicast Broadcast no modo de OR. - Controle de fluxo com TX e RX pausa quadros em modo full duplex. - Quadros so preenchidos com 60 + bytes CRC. - Tamanho mximo do pacote definido 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 coliso definido como 63 em modo half duplex para acomodar algumas ENC28J60 revises bugs silcio. - Sada CLKOUT desativado para reduzir a gerao de EMI. - Loopback half duplex com deficincia. - LED de configurao: padro (LEDA link-status, atividade LEDB-link). Parmetros:
i i t di t d MAC lid

Descrio

452

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC As variveis globais: SPI_Ethernet_CS: Chip Selecionar linha Direo do pino de Chip Select: SPI_Ethernet_CS_Direction SPI_Ethernet_RST: linha de reset Direo do pino de Reset: SPI_Ethernet_RST_Direction

CAPTULO 7

Bibliotecas

Requer

devem ser definidas antes de utilizar esta funo. O mdulo SPI deve ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas.
# 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 definies unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} / / meu endereo MAC unsigned char myIpAddr = {192, 168, 1, 60} / / o meu IP addr SPI1_Init (); SPI_Ethernet_Init (myIpAddr myMacAddr, SPI_Ethernet_FULLDUPLEX);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

453

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Ethernet_Enable
Prottipo Retorna
vazio SPI_Ethernet_Enable (unsigned char enFlt);

Nada. Esta a rotina MAC do mdulo. Esta rotina permite que o trfego de rede apropriada no o ENC28J60 mdulo por meio de ela receber filtros (unicast, multicast, broadcast, CDC). Tipo especfico de trfego de rede ser ativado se uma correspondente pouco de parmetro essa rotina de entrada est definido. Portanto, mais do que um tipo de redetrfego 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. Parmetros: - enFlt: trfego de rede / receber bandeiras filtro. Cada bit corresponde discomeu o trfego de rede / filtro de recepo: Bit Descrio Mscara const biblioteca predefinidos

Descrio

MAC trfego Broadcast / filtro de recepo


_SPI_Ethernet_BROAD0 0x01 pavilho. Quando definido, MAC broadcast TrafCAST

fic ser habilitado. MAC trfego Multicast / filtro de recepo _SPI_Ethernet_MULTI1 0x02 pavilho. Quando definido, o trfego multicast MAC CAST ser habilitado. 2 0x04 no utilizado nenhum
3 0x08 no utilizado 4 0x10 no utilizado nenhum

none

CRC marca de verificao. Quando definido, os pacotes _SPI_Ethernet_CRC com o campo CRC invlido ser descartado. 6 0x40 no utilizado nenhum
5 0x20

MAC trfego Unicast / filtro de recepo pavilho.


7 0x80 Quando definido, o MAC ser o trfego unicast _SPI_Ethernet_UNICAST

habilitado. Nota: Advance filtragem disponveis no ENC28J60 mdulo, como Padro Partida, Magic Packet e Hash Table no 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 configurao do filtro receber on the fly No ser no

454

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC Requer Exemplo mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.
SPI_Ethernet_Enable (_SPI_Ethernet_CRC | _SPI_Ethernet_UNICAST); / / CRC permitir a verificao eo trfego Unicast

CAPTULO 7

Bibliotecas

Spi_Ethernet_Disable
Prottipo Retorna
vazio SPI_Ethernet_Disable (unsigned char disFlt);

Nada. Esta a rotina MAC do mdulo. Esta rotina desabilita o trfego de rede apropriada no o ENC28J60 mdulo por meio de ela receber filtros (unicast, multicast, broadcast, CDC). Tipo especfico de trfego de rede ser desativada se um correspondente pouco de parmetro essa rotina de entrada est definido. Portanto, mais do que um tipo de redetrfego 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. Parmetros: - disFlt: trfego de rede / receber bandeiras filtro. Cada bit corresponde a aprotrfego de rede adequado / filtro de recepo: biblioteca Descrio Mask Bit

Descrio

predefinidos const MAC trfego Broadcast / receber bandeira filtro. Quando Spi_Ethernet_BRO 0 0x01 conjunto, MAC trfego de difuso ser desativado. ADCAST MAC trfego Multicast / receber bandeira filtro. Quando Spi_Ethernet_MUL 1 0x02 definido, o trfego multicast MAC ser desativado. TICAST 2 0x04 no utilizado none
3 0x08 no utilizado 4 0x10 no utilizado none none

CRC marca de verificao. Quando definido, verificao de CRC ser


5 0x20 ser desativado e pacotes com CRC invlido Spi_Ethernet_CRC

campo sero aceitos.


6 0x40 no utilizado 7 0x80 none

MAC trfego Unicast / receber bandeira filtro. Quando Spi_Ethernet_UNI conjunto, MAC trfego unicast ser desativado. CAST

Nota: Advance filtragem disponveis no ENC28J60 mdulo, como Padro Partida, Magic Packet e Hash Table no pode ser desativado por esta rotina. Nota: Esta rotina vai mudar configurao do filtro receber on-the-fly. No ser, no l f ti / d ti b /t iti l i l t Mikroelektronika - Solues de software e hardware para o mundo embutido

455

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.
SPI_Ethernet_Disable (_SPI_Ethernet_CRC | _SPI_Ethernet_UNICAST); / / verificao CRC desativar e trfego Unicast

Bibliotecas
Requer Exemplo

Spi_Ethernet_doPacket
Prottipo
unsigned char SPI_Ethernet_doPacket ();

- 0 - Mediante o processamento de pacotes de sucesso (zero pacotes recebidos Retorna ou recebidos pacote processado com sucesso). - 1 - Aquando erro de recepo ou receber corrupo buffer. ENC28J60 controlador precisa ser reiniciado. - 2 - O pacote recebido no foi enviado para ns (no o nosso IP, nem endereo de broadcast IP). R b IP f IP 4 Esta a rotina d MAC do mdulo. Elei processa o pacote recebido seguinte se existir. Os pacotes so processados da seguinte forma: Descrio - Requisies ARP e ICMP so respondidas automaticamente. - Mediante pedido TCP a funo Spi_Ethernet_UserTCP Apelou a mais processamento. - Mediante pedido UDP Spi_Ethernet_UserUDP a funo chamada para mais processamento. Nota: S i Eth t d P k t deve ser chamado o mais rpido possvel no cdigo do usurio mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
se (SPI_Ethernet_doPacket () == 0) (1) {/ / processo recebeu-pack ets ... }

Requer Exemplo

456

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Ethernet_putByte
Prottipo Retorna
vazio SPI_Ethernet_putByte (unsigned char v);

Nada. Esta a rotina MAC do mdulo. Ele armazena um byte para endereo apontado pela corrente aluguel ENC28J60 escrever ponteiro (EWRPT). Parmetros:

Descrio

Requer Exemplo

valor para armazenar mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
char dados; ... SPI_Ethernet_putByte (dados) / / colocar um byte no buffer ENC28J60

Spi_Ethernet_putBytes
Prottipo Retorna
vazio SPI_Ethernet_putBytes (unsigned char * Ptr, unsigned char n);

Nada. Este o mdulo MAC rotina. Ele armazena o nmero solicitado de bytes em ENC28J60 RAM a partir de correntes ENC28J60 escrever localizao (EWRPT) ponteiro.

Descrio

Parmetros: - ptr: RAM tampo contendo bytes a ser escrito em ENC28J60 RAM. - n: nmero de bytes a ser escrito.

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.


char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putBytes (buffer, 16); / / coloque em uma matriz de RAM buffer ENC28J60

Mikroelektronika - Solues de software e hardware para o mundo embutido

457

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Ethernet_putConstBytes
Prottipo Retorna
vazio SPI_Ethernet_putConstBytes (const unsigned char * Ptr, no assinado char n);

Nada. Esta a rotina MAC do mdulo. Ele armazena o nmero de bytes solicitado em const ENC28J60 RAM a partir de correntes ENC28J60 escrever localizao (EWRPT) ponteiro. Parmetros: - ptr: buffer const contendo bytes a ser escrito em ENC28J60 RAM. d deve ser inicializado. Veja Spi_Ethernet_Init. i mdulo Ethernetb
const char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putConstBytes (buffer, 16); / / colocar um array em const ENC28J60 buffer

Descrio

Requer Exemplo

Spi_Ethernet_putString
Prottipo Retorna
unsigned int SPI_Ethernet_putString (unsigned char * Ptr);

Nmero de bytes escritos em ENC28J60 RAM. Esta a rotina MAC do mdulo. Ele armazena string todo (excluindo a terminao nula) em ENC28J60 RAM a partir de corrente ENC28J60 escrever localizao (EWRPT) ponteiro.

Descrio Parmetros: - ptr: string a ser escrita em ENC28J60 RAM. Requer Exemplo mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putString (buffer); / / coloque uma seqncia de RAM em ENC28J60 buffer

458

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Ethernet_putConstString
Prottipo Retorna
unsigned int SPI_Ethernet_putConstString (const unsigned char * Ptr);

Nmero de bytes escritos em ENC28J60 RAM. Esta a rotina MAC do mdulo. Ele armazena string const todo (excluindo a terminao nula) em ENC28J60 RAM a partir de correntes ENC28J60 escrever localizao (EWRPT) ponteiro. Parmetros:

Descrio

Requer Exemplo

t const string a ser escrita em ENC28J60 RAM mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. const char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putConstString (buffer); / / colocar um const string em buffer ENC28J60

Spi_Ethernet_getByte
Prottipo Retorna Descrio Requer Exemplo
unsigned char SPI_Ethernet_getByte ();

Byte lido ENC28J60 RAM. Esta a rotina MAC do mdulo. Ele busca um byte do endereo apontado pelo curl l i d l i (ERDPT) mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
char buffer; ... buffer = SPI_Ethernet_getByte (); / / l um byte de ENC28J60 buffer

Mikroelektronika - Solues de software e hardware para o mundo embutido

459

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Ethernet_getBytes
Prottipo Retorna
vazio SPI_Ethernet_getBytes (unsigned char * Ptr, unsigned int addr, unsigned char n);

Nada. Esta a rotina MAC do mdulo. Ele obtm o nmero de bytes de equested ENC28J60 RAM a partir de determinado endereo. Se o valor da 0xFFFF passado como o parmetro de endereo, a leitura ter incio a partir atual ENC28J60 leia ponteiro (ERDPT) local. Parmetros: - ptr: buffer para armazenamento de bytes lidos ENC28J60 RAM. - addr: ENC28J60 RAM endereo de incio. Valores vlidos: 0 .. 8192. - n: nmero de bytes a serem ler.

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.


char buffer [16]; ... SPI_Ethernet_getBytes (buffer, 0x100, 16); / / l 16 bytes, a partir do endereo 0x100

460

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Ethernet_UserTCP
Prottipo Retorna
unsigned int SPI_Ethernet_UserTCP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int localPort, unsigned int reqLength);

- 0 - No deve haver uma resposta ao pedido. - Comprimento da TCP / resposta HTTP campo de dados - de outra forma. Esta a rotina de mdulo TCP. Ele chamado internamente pela biblioteca. O acesso do usurio es para o pedido de TCP / HTTP usando algumas das rotinas SPI_Ethernet_get. O usurio coloca os dados no buffer de transmisso usando alguns dos SPI_Ethernet_put rotinas. A funo deve retornar o tamanho em bytes da resposta HTTP TCP / ou 0 se no h nada a transmitir. Se no h necessidade de responder ao TCP / HTTP pedidos, apenas definir esta funo com retorno (0) como um nica instruo. Parmetros: remoteHost : Endereo IP do cliente. RemotePort : Porta TCP cliente. localPort : Porta para que o pedido enviado. reqLength : TCP / solicitao HTTP comprimento do campo de dados.

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. Essa funo chamado internamente pela biblioteca e no deve ser chamado pelo o di d i

Mikroelektronika - Solues de software e hardware para o mundo embutido

461

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Ethernet_UserUDP
Prottipo Retorna
unsigned int SPI_Ethernet_UserUDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength);

- 0 - no deve haver uma resposta ao pedido. - Comprimento do campo de dados UDP resposta - outra forma. Esta a rotina de mdulo UDP. Ele chamado internamente pela biblioteca. O acesso do usurio es para o pedido UDP usando alguns dos SPI_Ethernet_get rotinas. O usurio coloca os dados no buffer de transmisso usando algumas das rotinas SPI_Ethernet_put. A funo deve retornar o tamanho em bytes da resposta UDP, ou 0 nada a se transmitir. Se voc no precisa responder s solicitaes UDP, basta definir esta funo com um retorno (0) como nica instruo. Parmetros: - remoteHost : Endereo IP do cliente. - RemotePort : Porta do cliente. - destPort : Porta para que o pedido enviado. - reqLength : Pedido UDP comprimento do campo de dados.

Descrio

Requer Exemplo

mdulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. Essa funo chamado internamente pela biblioteca e no deve ser chamado pelo cdigo de usurio.

SPI_Ethernet_getIpAddress
Prottipo Retorna
unsigned char * SPI_Ethernet_getIpAddress ();

Ponter para a varivel global explorao endereo IP. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar IP atribudo endereo. Nota: O usurio deve sempre copiar o endereo IP do local de RAM retornado por esta rotina em que buffer prprio endereo IP. Estes locais no devem ser alterados pelo usurio, em qualquer caso. mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
unsigned char endereoip [4] / / endereo IP do usurio buffer ... memcpy (ipaddr, SPI_Ethernet_getIpAddress (), 4); / / recupera o endereo IP

Descrio

Requer Exemplo

462

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Ethernet_getGwIpAddress
Prottipo Retorna
unsigned char * SPI_Ethernet_getGwIpAddress ();

Ponter para a varivel global explorao endereo IP do gateway. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar atribudo o endereo IP do gateway.

Descrio O usurio deve: Nota sempre copiar o endereo IP do local de RAM retornado por esta rotina em seu prprio gateway buffer endereo IP. Estes locais no devem ser alteradas pelo usurio, em qualquer caso! Requer mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
unsigned char gwIpAddr [4]; / / user gateway buffer endereo IP ... memcpy (gwIpAddr, SPI_Ethernet_getGwIpAddress (), 4); / / recupera-gate endereo IP como

Exemplo

SPI_Ethernet_getDnsIpAddress
Prottipo Retorna
unsigned char * SPI_Ethernet_getDnsIpAddress ()

Ponter para a varivel global explorao DNS o endereo IP. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar atribudo endereo IP do DNS.

Descrio Nota: O usurio deve sempre copiar o endereo IP do local de RAM retornado por esta rotina em seu prprio buffer DNS o endereo IP. Estes locais no devem ser alteradas pelo usurio, em qualquer caso. Requer mdulo Ethernet tem para ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
unsigned char dnsIpAddr [4]; / / user tampo DNS o endereo IP ... memcpy (dnsIpAddr, SPI_Ethernet_getDnsIpAddress (), 4); / / busca Endereo do servidor DNS

Exemplo

Mikroelektronika - Softwares e solues de hardware para Embedded World

463

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Ethernet_getIpMask
Prottipo Retorna
unsigned char * SPI_Ethernet_getIpMask ()

Ponter para a varivel global explorao IP, mscara de sub-rede. Essa rotina deve ser utilizada quando o servidor DHCP est presente na rede para buscar mscara IP atribudos. Nota: O usurio deve sempre copiar o endereo IP do local de RAM

Descrio

Requer Exemplo

retornado mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
unsigned char IPMask [4] / / IP do usurio buffer mscara ... memcpy (IPMask, SPI_Ethernet_getIpMask (), 4); / / busca de sub-rede IP mscara

SPI_Ethernet_confNetwork
Prottipo Retorna
vazio SPI_Ethernet_confNetwork (char * IPMask, char * GwIpAddr, char * DnsIpAddr);

Nada. Configura os parmetros de rede (IP, mscara de sub-rede, endereo de gateway IP, DNS IP endereo) quando o DHCP est no utilizados.

Descrio

Parmetros: - IPMask: mscara de sub-rede IP. - gwIpAddr endereo IP do gateway. - dnsIpAddr: DNS o endereo IP. Nota: Os parmetros de rede acima mencionadas devem ser fixadas por esta

Requer

mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
char IPMask [4] = {255, 255, 255, 0}; / mscara de rede / (para exemplo: 255.255.255.0) char gwIpAddr [4] = {192, 168, 1, 1}; / gateway / (Roteador) endereo IP char dnsIpAddr [4] = {192, 168, 1, 1} / / IP do servidor DNS endereo ... SPI_Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr); / / set parmetros de configurao de rede

Exemplo

464

Mikroelektronika - Software e Solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Ethernet_arpResolve
Prottipo Retorna
unsigned char * SPI_Ethernet_arpResolve (unsigned char * Ip, no assinado char tmax);

- Endereo MAC para trs o endereo IP - o endereo IP solicitado foi resolvido. - 0 - De outra forma. Esta a rotina do mdulo ARP. Ele envia uma solicitao ARP para determinado endereo IP e aguarda resposta ARP. Se o endereo IP solicitado foi resolvido, uma entrada de caixa ARP usado para armazenar a configurao. dinheiro ARP pode armazenar at 3 entradas. Para ARP referem-se a estrutura de caixa "Eth_enc28j60LibDef.h" arquivo de cabealho na dcada de compilador Uses/P18 pasta. Parmetros: - IP: endereo IP a ser resolvido. mdulo Ethernet deve serdinicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
unsigned char IpAddr [4] = {192, 168, 1, 1} / / endereo IP ... SPI_Ethernet_arpResolve (IpAddr, 5); / / pega o endereo MAC por trs da acima do IP Endereo, aguarde 5 segundos para a resposta

Descrio

Requer

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

465

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Ethernet_sendUDP
Prottipo
unsigned char SPI_Ethernet_sendUDP (unsigned char * DestIP, no assinado int sourcePort, unsigned int destPort, unsigned char * Pkt, no assinado int pktLen);

Retorna

- 1 - Pacote UDP foi enviada com sucesso. - 0 - De outra forma. Esta a rotina de mdulo UDP. Ele envia um pacote UDP na rede. Parmetros:

Descrio

DestIP: endereo IP do host remoto. sourcePort: porta de origem UDP local nmero. destPort: destino nmero da porta UDP. PKT: pacotes para transmitir. pktLen: comprimento em bytes do pacote para transmitir.

Requer

mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
no assinado char IpAddr [4] = {192, 168, 1, 1} / / IP remoto endereo ... SPI_Ethernet_sendUDP (IpAddr, 10001, 10001, "Ol", 5); / / envia Ol mensagem para o endereo IP acima, de porta UDP 10001 para A porta UDP 10001

Exemplo

466

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Ethernet_dnsResolve
Prottipo Retorna
unsigned char * SPI_Ethernet_dnsResolve (unsigned char * Host, unsigned char tmax);

- Ponteiro para o local onde o endereo IP - o nome do host solicitado foi resolvido. - 0 - De outra forma. Este o DNS mdulo 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 endereo IP armazenado na varivel global biblioteca e um ponteiro que contm este endereo retornado por a rotina. UDP porta 53 usada como porta de DNS. Parmetros: -Host: nome do host para ser resolvido. -Tmax: tempo em segundos para esperar por uma resposta. Nota: Os servios de Ethernet no so interrompidos enquanto esta rotina aguarda DNS O d d d l mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
unsigned char * RemoteHostIpAddr [4] / / endereo IP do host do usurio buffer ... / / Servidor SNTP: / Zurique / Sua: Laboratrio de Sistemas Integrveis, da Sua Fed. Inst. de Tecnologia / / 129.132.2.21: swisstime.ethz.ch / / rea de servio: Sua e Europa memcpy (remoteHostIpAddr, SPI_Ethernet_dnsResolve ("swisstime.ethz.ch", 5), 4);

Descrio

Requer

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

467

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Ethernet_initDHCP
Prottipo Retorna
unsigned char SPI_Ethernet_initDHCP (unsigned char tmax);

- 1 - Parmetros de rede foram obtidos com sucesso. - 0 - De outra forma. Esta a rotina de mdulo de DHCP. Ele envia um pedido DHCP para os parmetros de rede (IP, gateway, DNS e endereos IP, mscara de sub-rede) e aguarda resposta de DHCP. Se os parmetros solicitados foram obtidos com sucesso, seus valores so armazenados em a biblioteca de variveis globais. Estes parmetros podem ser obtidos atravs da utilizao adequada biblioteca IP

Descrio

comear rotinas: - SPI_Ethernet_getIpAddress - buscar o endereo IP. - SPI_Ethernet_getGwIpAddress - buscar endereo IP do gateway. - SPI_Ethernet_getDnsIpAddress - buscar DNS o endereo IP. - SPI_Ethernet_getIpMask - buscar IP, mscara de sub-rede. Porta UDP 68 usado como um cliente DHCP e porta UDP 67 usado como serv DHCP er porta. Parmetros:
- Tmax: tempo em segundos para esperar por uma resposta.

Nota: Os servios de Ethernet no so interrompidos enquanto esta rotina Requer mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
... SPI_Ethernet_initDHCP (5); / / obter a configurao de rede DHCP servidor, aguarde 5 segundos para a resposta ...

Exemplo

468

Mikroelektronika - Softwares e solues de hardware para Embedded World

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Ethernet_doDHCPLeaseTime
Prottipo Retorna
unsigned char SPI_Ethernet_doDHCPLeaseTime ();

- 0 - Tempo de concesso ainda no tenha terminado ainda. - 1 - Locao tempo expirou, hora de renovar. Esta a rotina de mdulo de DHCP. Ela cuida de concesso de endereo IP vez por decrea biblioteca de tempo de execuo global de locao contador. Quando esse tempo expirar, mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
while (1) { ... if (SPI_Ethernet_doDHCPLeaseTime ()) ... / / hora de renovar o endereo IP }

Descrio

Requer

Exemplo

SPI_Ethernet_renewDHCP
Prottipo Retorna
unsigned char SPI_Ethernet_renewDHCP (unsigned char tmax);

- 1 - Em caso de sucesso (tempo de concesso foi renovada). - 0 - De outra forma (pedido de renovao expirou). Esta a rotina de mdulo de DHCP. Ele envia concesso de endereo IP do tempo solicitao de renovao de Servidor DHCP. Parmetros:
t t d t

Descrio

Requer

mdulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponvel para microcontroladores da famlia PIC18 s.
while (1) { ... if (SPI_Ethernet_doDHCPLeaseTime ()) SPI_Ethernet_renewDHCP (5); / / hora de renovar o IP concesso de endereo, com 5 segundos para uma resposta ... }

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

469

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca
Este cdigo 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 cabealho feito de IP da mquina remota e nmero da porta - O conselho vai responder a solicitaes HTTP na porta 80, com o mtodo GET caminhos: / Vai retornar a pgina HTML principal / S ir retornar o status da placa como texto / T0 ... / T7 ir mudar para RD0 RD7 pouco e retornar HTML pgina principal todos os outros pedidos de retorno tambm HTML pgina 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 definies /************************************************* *********** * Cordas ROM constante * / const unsigned char httpHeader [] = "HTTP/1.1 200 OKnContent tipo:" / / Cabealho HTTP httpMimeTypeHTML [] = "text / htmlnn"; const unsigned char / / Tipo de MIME HTML const unsigned char httpMimeTypeScript [] = "text plainnn /"; / / Tipo MIME TEXTO unsigned char HttpMethod [] = "GET /"; / * * Pgina web, divididos em 2 partes: * Quando chegar curto de ROM, os dados fragmentado tratado mais eficientemente pelo linker * * Esta pgina HTML chama as placas para obter o seu estatuto, e constri se com javascript * / * Indexpage = / / Mude o endereo IP da pgina para const char ser atualizada "<meta Http-equiv="refresh" content="3;url=http://192.168.20.60">

470

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
<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> # boto" + 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> ";

CAPTULO 7

Bibliotecas

* IndexPage2 = "</ table> </ td> const char <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 requisio HTTP # <script> Document.write (REQ) </ script> </ BODY> </ HTML> "; /*********************************** RAM variveis * * / myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f}; unsigned char / / Meu endereo MAC myIpAddr [4] = {192, 168, 20, 60}; unsigned char / / IP do meu endereo unsigned char GetRequest [15] / / buffer solicitao HTTP

Mikroelektronika - Solues de software e hardware para o mundo embutido

471

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
unsigned char unsigned long dyna [30]; / / buffer para a resposta dinmica httpCounter = 0 / / contador de requisies HTTP

Bibliotecas

/******************************************* * funes * / / * * Colocar a string constante apontada por s ao ENC buffer de transmisso. * / / * PutConstString unsigned int (const char * s) { ctr unsigned int = 0; while (* s) { Spi_Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / * / * * Ele vai ser muito mais rpido de usar a biblioteca Spi_Ethernet_putConstString rotina * Em vez de putConstString rotina acima. No entanto, o cdigo ser ser um pouco * Pouco maior. O usurio deve escolher entre tamanho e velocidade e escolher o implementao 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 transmisso * / / * PutString unsigned int (char * s) { ctr unsigned int = 0; while (* s) { Spi_Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / *

472

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

/ * * Ele vai ser muito mais rpido de usar a biblioteca Spi_Ethernet_putString roudente * Em vez de putString rotina supra. No entanto, o cdigo ser uma pouco * Pouco maior. O usurio deve escolher entre tamanho e velocidade e escolher o implementao que suites * best-lo. Se voc optar por ir com a definio putStringo acima * A linha # define abaixo devem ser comentadas para fora. * * / # Define putString SPI_Ethernet_putString / * * Esta funo chamada pela biblioteca * O usurio acessa o pedido HTTP por chamadas sucessivas para Spi_Ethernet_getByte () * O usurio coloca os dados no buffer de transmisso por chamadas sucessivas para Spi_Ethernet_putByte () * A funo deve retornar o tamanho em bytes da resposta HTTP, ou 0 se nada para transmitir * * Se voc no precisa de responder a pedidos HTTP, * Apenas definir essa funo com um return (0) como nica instruo * * / * RemoteHost, SPI_Ethernet_UserTCP (unsigned char unsigned int unsigned int RemotePort, unsigned int localPort, unsigned int reqLength) { len = 0; / / comprimento resposta minha unsigned int i / / inteiro de uso geral unsigned int if (localPort! = 80) / / Eu ouo apenas para solicitao da web na porta 80 { return (0); } / / Obtm 10 bytes primeiro, somente o pedido, o resto no importa aqui for (i = 0; i <10; i + +) { GetRequest [i] = SPI_Ethernet_getByte (); } GetRequest [i] = 0; if (memcmp (GetRequest, HttpMethod, 5)) mtodo suportado aqui { / / S Comear

Mikroelektronika - Solues de software e hardware para o mundo embutido

473

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
return (0); } httpCounter + +; / / Mais um pedido feito

Bibliotecas

if (GetRequest [5] 's' ==) / / se o nome do caminho comea a pedido com s, armazenamento de dados dinmicos buffer de transmisso { / / A string de texto respondeu por essa solicitao pode ser interpretadas como declaraes de javascript / / Por navegadores putConstString len = (httpHeader); / / cabealho 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 (botes) 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 comea a pedido com t, alternar PORTD nmero de bits (LED) que vem depois { unsigned char bitmask = 0; / mscara de bits para

474

Mikroelektronika - SOLUES EM SOFTWARE E HARDWARE Para embutidos mundo

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

if (GetRequest (isdigit [6])) / / se 0 <= nmero de bits <= 9, 8 e 9 bits no existe, mas no matria { bitmask GetRequest = [6] - '0 '; / / converter ASCII para um inteiro mscara de bits = 1 <bitmask </ / criar mscara de bits PORTD ^ = bitmask; / alternar / PORTD com xor operador } } if (len == 0) / / o que fazer para por defeito { putConstString len = (httpHeader); http / / cabealho len + = putConstString (httpMimeTypeHTML) / / com HTML tipo MIME len + = putConstString (indexpage); / primeira pgina HTML parte len + = putConstString (indexPage2); / seg pgina HTML parte ond } retorno (len); / / retorna para a biblioteca com o nmero de bytes para transmitir } / * * Esta funo chamada pela biblioteca * O usurio acessa o pedido UDP por chamadas sucessivas para Spi_Ethernet_getByte () * O usurio coloca os dados no buffer de transmisso por chamadas sucessivas para Spi_Ethernet_putByte () * A funo deve retornar o tamanho em bytes da resposta UDP, ou 0 se nada para transmitir * * Se voc no precisa responder aos pedidos UDP, * Apenas definir essa funo com um return (0) como nica instruo * * / * RemoteHost, SPI_Ethernet_UserUDP (unsigned char unsigned int unsigned int unsigned int unsigned int RemotePort, destPort, reqLength) { len / / comprimento resposta minha unsigned int unsigned char * Ptr; / / ponteiro para o buffer dinmico / / Resposta feito do endereo IP do host remoto de seres humanos, leiacapaz formato ByteToStr (remoteHost [0], Dyna) / / byte primeiro endereo IP dyna [3] = '.';

Mikroelektronika - Solues de software e hardware para o mundo embutido

475

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
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

Bibliotecas

/ / Nmero da porta, em seguida, o anfitrio remoto WordToStr (RemotePort, dyna + 16); dyna [21] '['; WordToStr (destPort, dyna + 22); dyna [27] ']'; dyna [28] = 0; / / O comprimento total do pedido o comprimento do seqncia dinmica mais o texto do pedido len = 28 + reqLength; / / Coloca a corda dinmica no buffer de transmisso SPI_Ethernet_putBytes (dyna, 28); / / Em seguida, coloca a corda pedido convertido em alta char para o buffer de transmisso while (reqLength -) { SPI_Ethernet_putByte (toupper (SPI_Ethernet_getByte ())); } retorno (len); resposta UDP } / * * Entrada principal * / main () vazio { ANSEL = 0x0C; PORTA = 0; TRISA = 0xff; ANSELH = 0; PORTB = 0; TRISB = 0xff; PORTD = 0; TRISD = 0; / * / / Volta para a biblioteca com o comprimento do

/ / AN2 e AN3 conversores sero utilizados / / Define PORTA como entrada para o ADC / / Configure outras AN pinos como I / O digital / PORTB set / como entrada para os botes

/ / Set PORTD como sada

476

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
* ENC28J60 comea com: * Pouco Reiniciado em RC0 * CS em pouco RC1 * Meu MAC e endereo IP * Full duplex * / SPI1_Init (); SPI_Ethernet_Init (myMacAddr, myIpAddr, Spi_Ethernet_FULLDUPLEX);

CAPTULO 7

Bibliotecas

while (1) / / Faz para sempre { / * * Se necessrio, teste o valor de retorno para obter o cdigo de erro * / SPI_Ethernet_doPacket (); / processo / incoming pacotes Ethernet / * * Adicionar suas coisas aqui, se necessrio * Spi_Ethernet_doPacket () deve ser chamado o mais rpido possvel * Caso contrrio, os pacotes podem ser perdidos * / } }

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

477

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Conexo HW

478

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI biblioteca grfica LCD


A mikroC PRO para PIC fornece uma biblioteca para operacional 128x64 grfico 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 mdulo de comunicao SPI. O usurio deve inicializar o SPI mdulo antes de usar o SPI LCD Grfico Biblioteca. Para MCUs com dois mdulos SPI possvel inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. Nota: Esta biblioteca projetado para trabalhar com o LCD serial mikroElektronika's / GLCD Pinagem do adaptador de mesa, ver esquema na parte inferior da pgina para obter mais detalhes.

As dependncias externas do SPI LCD Grfico Biblioteca


A implementao do SPI Grfica rotinas Lcd Biblioteca baseado em Port Expander Biblioteca de rotinas.

As dependncias externas so as mesmas dependncias do Porto Biblioteca Expander externaCIES.

Rotinas da biblioteca
rotinas bsicas: - SPI_Glcd_Init - SPI_Glcd_Set_Side - SPI_Glcd_Set_Page - SPI_Glcd_Set_X - SPI_Glcd_Read_Data - SPI_Glcd_Write_Data rotinas avanadas: - 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 - Solues de software e hardware para o mundo embutido

479

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
- SPI_Glcd_Set_Font - SPI_Glcd_Write_Char - SPI_Glcd_Write_Text - SPI_Glcd_Image

Spi_Glcd_Init
Prottipo Retorna
vazio SPI_Glcd_Init (DeviceAddress char);

Nada. Inicializa o mdulo GLCD via interface SPI.

Descrio

Parmetros: - DeviceAddress: endereo de hardware spi expansor, ver esquema na final desta pgina As variveis globais:
- SPExpanderCS: Chip Selecionar linha

Requer

- SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direo do pino de Chip Select - SPExpanderRST_Direction: Direo do pino de Reset

deve ser definida antes usar essa funo. O mdulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.
/ / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander ... / / Se a porta Expander Biblioteca utiliza o mdulo SPI: SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander SPI_Glcd_Init (0);

Exemplo

480

Mikroelektronika - SOFTWARE HARDWARE E SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Glcd_Set_Side
Prottipo Retorna
vazio SPI_Glcd_Set_Side (char x_pos;

Nada. Seleciona lado GLCD. Consulte a ficha GLCD para explicao detalhe. Parmetros:

Descrio

- X_pos: posio no eixo-x. Valores vlidos: 0 .. 127

O parmetro 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 explicao de layout de pgina ver esquema em Requer baixo GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init. As duas linhas seguintes so equivalentes, e ambos selecione no lado esquerdo da GLCD:
SPI_Glcd_Set_Side (0); SPI_Glcd_Set_Side (10);

Exemplo

SPI_Glcd_Set_Page
Prottipo Retorna
vazio SPI_Glcd_Set_Page (char pgina);

Nada. Seleciona a pgina de GLCD. Parmetros:

Descrio
- Pgina: nmero da pgina. Valores vlidos: 0 .. 7

Nota: Para lateral, eixo x e explicao de layout de pgina ver esquema em Requer Exemplo baixo GLCD precisa ser inicializado para comunicao SPI, consulte rotinas SPI_Glcd_Init.
SPI_Glcd_Set_Page (5);

Mikroelektronika - Software e Solues de hardware para Embedded World

481

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Glcd_Set_X
Prottipo Retorna
vazio SPI_Glcd_Set_X (char x_pos);

Nada. Define eixo-x posio de x_pos pontos a partir da margem esquerda do GLCD dentro do selectlado ed.

Descrio

Parmetros:
- X_pos: posio no eixo-x. Valores vlidos: 0 .. 63

Nota: Para lateral, eixo x e explicao de layout de pgina ver esquema em Requer Exemplo GLCD necessidades para ser inicializado para a comunicao SPI, consulte rotinas SPI Gl d I it
SPI_Glcd_Set_X (25);

Spi_Glcd_Read_Data
Prottipo Retorna Descrio
char SPI_Glcd_Read_Data ();

Um byte de memria GLCD. L os dados a partir da localizao atual do GLCD memria e move-se para o prximo L l GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init. lado GLCD posio, eixo-x e de pgina deve ser definido primeiro. Veja as funes

Requer

Exemplo

char dados; ... = dados SPI_Glcd_Read_Data ();

482

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Glcd_Write_Data
Prottipo Retorna
vazio SPI_Glcd_Write_Data (char Ddata);

Nada. Grava um byte para a posio atual em GLCD memria e move-se para a prxima Local.

Descrio Parmetros: - Ddata: dados a serem gravados GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init. Requer lado GLCD posio, eixo-x e de pgina deve ser definido primeiro. Veja as funes Exemplo
char dados; ... SPI_Glcd_Write_Data (dados);

SPI_Glcd_Fill
Prottipo Retorna
vazio SPI_Glcd_Fill (char padro);

Nada. Preenche com o byte de memria GLCD padro. Parmetros:

Descrio

- Padro: byte de memria 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 Exemplo GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init.
/ / Limpar ecr SPI_Glcd_Fill (0);

Mikroelektronika - Solues de software e hardware para o mundo embutido

483

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Glcd_Dot
Prottipo Retorna
vazio SPI_Glcd_Dot (char x_pos, char y_pos, char cor);

Nada. Desenha um ponto na GLCD nas coordenadas (x_pos, y_pos). Parmetros:

Descrio

- x_pos: x posio. Valores vlidos: 0 .. 127 - y_pos: y posio. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2 O parmetro cor determina o ponto estado: 0 limpa ponto, um coloca um ponto, e 2 inverte ponto estado. Nota: Para x e explicao layout eixo y ver esquema na parte inferior desta pgina.

Requer Exemplo

GLCD necessidades para ser inicializado para a comunicao SPI, consulte rotinas SPI Inverter o ponto no canto superior esquerdo / / Gl d I it
SPI_Glcd_Dot (0, 0, 2);

SPI_Glcd_Line
Prottipo Retorna
vazio SPI_Glcd_Line (int x_start, int y_start, int x_end, int y_end, char cor);

Nada. Desenha uma linha na GLCD. Parmetros:

Descrio

- X_start: coordenada x do linha de partida. Valores vlidos: 0 .. 127 - Y_start: coordenada y do incio da linha. Valores vlidos: 0 .. 63 - X_end: coordenada x da extremidade da linha. Valores vlidos: 0 .. 127 - Y_end: coordenada y da linha final. Valores vlidos: 0 .. 63 - Cor: parmetro cor. Valores vlidos: 0 .. 2

Requer Exemplo

Parmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada dot GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init.
/ / Desenha uma linha entre os pontos (0,0) e (20,30) SPI_Glcd_Line (0, 0; 20, 30, 1);

484

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Glcd_V_Line
Prottipo Retorna
vazio SPI_Glcd_V_Line (char y_start, char y_end, char x_pos, char cor);

Nada. Desenha uma linha vertical na GLCD. Parmetros:

Descrio

-Y_start: coordenada y do incio da linha. Valores vlidos: 0 .. 63 - y_end: coordenada y da linha final. Valores vlidos: 0 .. 63 - x_pos: coordenada x da linha vertical. Valores vlidos: 0 .. 127 - cor: parmetro de cor. Valores vlidos: 0 .. 2 Parmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto.

Requer Exemplo

GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init.
/ / Desenha uma linha vertical entre os pontos (10,5) e (10,25) SPI_Glcd_V_Line (5, 25, 10, 1);

SPI_Glcd_H_Line
Prottipo Retorna
vazio SPI_Glcd_H_Line (char x_start, char x_end, char y_pos, char cor);

Nada. Desenha uma linha horizontal sobre GLCD. Parmetros:

Descrio

- x_start: coordenada x do incio da linha. Valores vlidos: 0 .. 127 - x_end: coordenada x da extremidade da linha. Valores vlidos: 0 ..
127 - y_pos: coordenada y da linha horizontal. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2

Requer Exemplo

O parmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte d t GLCD precisa ser inicializado para a comunicao SPI, ver SPI_Glcd_Init rotinas.
/ / Desenha uma linha horizontal entre os pontos (10,20) e (50,20) SPI_Glcd_H_Line (10, 50, 20, 1);

Mikroelektronika - Solues de software e hardware para o mundo embutido

485

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
SPI_Glcd_Rectangle
Prottipo Retorna
vazio SPI_Glcd_Rectangle (char x_upper_left, char y_upper_left, char x_bottom_right, char y_bottom_right, char cor);

Nada. Desenha um retngulo na GLCD. Parmetros: - x_upper_left: coordenada x do canto superior esquerdo do retngulo. Valores
vlidos:

Descrio

0 .. 127 - y_upper_left: coordenada y do canto superior esquerdo do retngulo. Valores


vlidos: 0 .. 63 - x_bottom_right: coordenada x menor canto direito do retngulo. Vlido val-

ues: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito do retngulo. Vlido


val-

Requer Exemplo

ues: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2 GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas Spi_Glcd_Init.
/ / Desenha uma caixa entre os pontos (5,15) e (20,40) Spi_Glcd_Box (5, 15, 20, 40, 1);

SPI_Glcd_Box
Prottipo Retorna
vazio SPI_Glcd_Box (char x_upper_left, char y_upper_left, char x_bottom_right, char y_bottom_right, char cor);

Nada. Desenha uma caixa de GLCD. Parmetros: - x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores

Descrio

vlidos: 0 .. 127 - y_upper_left: y coordenadas do canto superior esquerdo caixa. Valores vlidos: 0 .. 63 - x_bottom_right: coordenada x do canto inferior direito caixa. Valores vlidos: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito caixa. Valores vlidos: 0 .. 63 - cor: parmetro de cor. Valores vlidos: 0 .. 2

Requer Exemplo

GLCD precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Glcd_Init.
/ / Desenha uma caixa entre os pontos (5,15) e (20,40) SPI_Glcd_Box (5, 15, 20, 40, 1);

486

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI_Glcd_Circle
Prottipo Retorna
vazio SPI_Glcd_Circle (int x_center, int y_center, int raio, char cor);

Nada. Desenha um crculo em GLCD. Parmetros: - x_center: coordenada x do centro do crculo. Valores vlidos: 0 .. 127 - y_center: coordenada y do centro do crculo. Valores vlidos: 0 ..
63 - Raio: Raio de tamanho - cor: parmetro de cor. Valores vlidos: 0 .. 2

Descrio

Requer Exemplo

O parmetro cor determina a cor da linha do crculo: 0 branco, um negro, 2i t GLCD precisad inicializado para a comunicao SPI, ver SPI_Glcd_Init rotina. ser t
/ / Desenha um crculo com centro em (50,50) e raio = 10 SPI_Glcd_Circle (50, 50, 10, 1);

SPI_Glcd_Set_Font
Prottipo Retorna
vazio SPI_Glcd_Set_Font (cdigo const char * ActiveFont, char aFontWidth, char aFontHeight, unsigned int aFontOffs);

Nada. Define a fonte que ser usada com SPI_Glcd_Write_Char e SPI_Glcd_Write_Text rotinas. Parmetros:

Descrio

- activeFont: fonte a ser definido. Precisa ser formatado como uma


matriz de char

Requer Exemplo

- aFontWidth: largura dos caracteres da fonte em pontos. - aFontHeight: altura dos caracteres da fonte em pontos. - aFontOffs: nmero que representa a diferena entre o mikroC PRO charcional 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 comeam com o GLCD precisa ser inicializado para a SPI comunicao, consulte rotinas SPI_Glcd_Init.
/ / Use o costume 5x7 fonte "MyFont", que comea com o espao (32): SPI_Glcd_Set_Font (MyFont, 5, 7, 32);

Mikroelektronika - Solues de software e hardware para o mundo embutido

487

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Glcd_Write_Char
Prottipo Retorna
vazio SPI_Glcd_Write_Char (char Chr1, char x_pos, char page_num, char cor);

Nada. Imprime personagem em GLCD. Parmetros: - Chr1: caractere a ser escrito - x_pos: posio do caractere a partir de eixo-x. Valores vlidos: 0 .. (127-FontWidth) - page_num: o nmero da pgina na qual personagem vai ser escrito. Vlido valores: 0 .. 7 - cor: cor parmetro. Valores vlidos: 0 .. 2 O parmetro cor determina a cor do personagem: 0 branco, um negro, e 2 inverte cada ponto. Nota: Para eixo x e explicao de layout de pgina ver esquema na parte inferior da GLCD precisa ser inicializado para comunicao SPI, consulte rotinas SPI_Glcd_Init.

Descrio

Requer

Use o SPI_Glcd_Set_Font para especificar a fonte para exibio, se nenhuma fonte especificada
/ / Escreve 'C' personagem no posio 10 no interior da pgina 2: SPI_Glcd_Write_Char ('C', 10, 2, 1);

Exemplo

488

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Glcd_Write_Text
Prottipo Retorna
vazio SPI_Glcd_Write_Text (char [texto] char x_pos, char page_num, char cor);

Nada. Imprime texto na GLCD. Parmetros: - texto: texto a ser escrito - x_pos: posio do texto a partir de eixo-x. - page_num: o nmero da pgina onde o texto ser escrito. Valores vlidos: 0 .. 7 Cor: parmetro de cor. Valores vlidos: 0 .. 2 O parmetro cor determina a cor do texto: 0 branco, um preto, e 2 inverte cada ponto. Nota: Para eixo x e explicao de layout de pgina ver esquema na parte inferior da GLCD precisa ser inicializado para a comunicao SPI, ver SPI_Glcd_Init rotinas.

Descrio

Requer

Use o SPI_Glcd_Set_Font para especificar a fonte para exibio, se nenhuma fonte especificada
/ / Escreve o texto "Ol mundo!" na posio 10 no interior da pgina 2: SPI_Glcd_Write_Text ("Ol mundo!", 10, 2, 1);

Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

489

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Glcd_Image
Prottipo Retorna
vazio SPI_Glcd_Image (cdigo const char * Imagem);

Nada. Exibe bitmap em GLCD. Parmetros:

Descrio

- imagem: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os cdigos e Memria RAM (devido mikroC PRO PIC para ponteiro para ponteiro para const e RAM de equivalncia).

Requer Exemplo

Use o mikroC PRO opo integrada GLCD Bitmap Editor ( Ferramentas > GLCD precisa ser inicializado para comunicao SPI, consulte rotinas SPI_Glcd_Init.
/ / Desenha my_image imagem GLCD SPI_Glcd_Image (my_image);

Exemplo Biblioteca
O exemplo demonstra como se comunicar com KS0108 GLCD atravs do mdulo SPI, usando serial de paralela conversor MCP23S17.
const char cdigo truck_bmp [1024]; / / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit em RC1_bit; SPExpanderCS sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander vazio Delay2s () { Delay_ms (2000); } vazio main () { char * SomeText; char contador; / / Se a porta Expander Library usa SPI1 mdulo SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander // / / Se a porta Expander Biblioteca utiliza o mdulo SPI2 / / 2 segundos, funo de atraso

490

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
/ / SPI2_Init (); / / Inicializar SPI mdulo usado com PortExpander / / Inicializar GLCD via SPI / / Limpar GLCD

CAPTULO 7

Bibliotecas

SPI_Glcd_Init (0); SPI_Glcd_Fill (0x00); while (1) { SPI_Glcd_Image (truck_bmp); Delay2s (); Delay2s (); SPI_Glcd_Fill (0x00); Delay2s;

/ / 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 (); 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 ();

/ / Desenha caixa / / Desenha retngulo / / Desenha uma linha

/ / Desenha horizonte

/ / Limpar GLCD / Font Escolha / v. / / Escreve a string / / Desenha crculos

/ / Desenha caixa

/ / Preencha GLCD / / Alterar a fonte / / Escreve a string

/ / Alterar a fonte / / Escreve a string

Mikroelektronika - Solues de software e hardware para o mundo embutido

491

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC
SPI_Glcd_Set_Font (font5x7, 5, 7, 32); someText = "Fonte 5x7"; SPI_Glcd_Write_Text (someText, 5, 5, 2); Delay2s (); / / Alterar a fonte / / Escreve a string

Bibliotecas

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

Conexo HW

SPI GLCD conexo HW

492

Mikroelektronika - Solues de software e hardware para EMBEDDED MUNDO

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI LCD BIBLIOTECA


A mikroC PRO para PIC fornece uma biblioteca para comunicao com LCD (com controladores HD44780 compatvel) 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 mdulo de comunicao SPI. O usurio deve inicializar o SPI mdulo antes de usar o SPI Lcd Biblioteca. Para MCUs com dois mdulos SPI possvel 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 Cmara pinagem. Veja esquema na parte inferior da pgina para obter mais detalhes.

As dependncias externas do SPI LCD Biblioteca


A implementao de rotinas Lcd Biblioteca SPI baseado em Port Expander Biblioteca rotinas.

As dependncias externas so as mesmas dependncias do Porto Biblioteca Expander externaCIES.

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 SOLUES PARA mundo embutido

493

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Lcd_Config
Prottipo Retorna
vazio SPI_Lcd_Config (char DeviceAddress);

Nada. Inicializa o mdulo LCD via interface SPI.

Descrio

Parmetros: - DeviceAddress: endereo de hardware spi expansor, ver esquema na final desta pgina As variveis globais: SPExpanderCS: Chip Selecionar linha SPExpanderRST: linha de reset SPExpanderCS_Direction: Direo do Chip Pin Select SPExpanderRST_Direction: Direo do pino de Reset

Requer

devem ser definidas antes de utilizar esta funo. O mdulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.
/ / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander vazio main () { / / Se a porta Expander Biblioteca utiliza o mdulo SPI SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander SPI_Lcd_Config (0); / / inicializa Lcd sobre o SPI interface

Exemplo

494

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Lcd_Out
Prottipo Retorna
vazio SPI_Lcd_Out (char linha, char coluna, char * Texto);

Descrio

Nada. Imprime texto na tela LCD a partir de determinada posio. Ambas as variveis string e literais podem ser passados como um texto. Parmetros: - linha: nmero da linha de partida posio - coluna: nmero da coluna a partir posio t it Lcd precisat ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd_Config.
/ / Escreve o texto "Ol!" no LCD a partir da linha 1, coluna 3: SPI_Lcd_Out (1, 3, "Ol!");

Requer Exemplo

Spi_Lcd_Out_Cp
Prottipo Retorna
vazio SPI_Lcd_Out_CP (char * Texto);

Nada. Imprime texto na tela LCD na posio atual do cursor. Ambas as variveis string e-litro als pode ser passado como um texto. Parmetros:

Descrio

Requer Exemplo

Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd_Config.
/ / Escreve o texto "Aqui!" na posio atual do cursor: SPI_Lcd_Out_CP ("Aqui!");

Spi_Lcd_Chr
Prottipo Retorna
vazio SPI_Lcd_Chr (char Row, char Coluna, char Out_Char);

Nada. Imprime caracteres em LCD na posio especificada. Ambas as variveis e literais pode ser passado como personagem.

Descrio

Parmetros: - Linha: escrever o nmero da linha a posio - Coluna: escrever o nmero da coluna posio - Out_Char: caractere a ser escrito

Requer Exemplo

Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd_Config.
/ / Escreve carter "I" na linha 2, coluna 3: SPI_Lcd_Chr (2, 3, 'i');

Mikroelektronika - Solues de software e hardware para o mundo embutido

495

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Lcd_Chr_Cp
Prottipo Retorna
vazio SPI_Lcd_Chr_CP (char Out_Char);

Nada. Imprime caracteres em LCD na posio atual do cursor. Ambas as variveis e literais pode ser passado como personagem. Parmetros:

Descrio

Requer Exemplo

Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd_Config.
/ / Escrever "e" caractere na posio atual do cursor: SPI_Lcd_Chr_Cp ('e');

O t Ch

Spi_Lcd_Cmd
Prottipo Retorna
vazio SPI_Lcd_Cmd (char out_char);

Nada. Envia comando para LCD. Parmetros:

Descrio - out_char: comando a ser enviado Nota: Constantes pr-definidas podem ser passados para a funo, consulte Requer Exemplo Disponvel Lcd Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd_Config.
/ / Clear LCD: SPI_Lcd_Cmd (_LCD_CLEAR);

496

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Disponvel Comandos LCD


Lcd Comando
LCD_FIRST_ROW LCD_SECOND_ROW LCD_THIRD_ROW LCD_FOURTH_ROW LCD_CLEAR LCD_RETURN_HOME LCD_CURSOR_OFF LCD_UNDERLINE_ON LCD_BLINK_CURSOR_ON LCD_MOVE_CURSOR_LEFT LCD_MOVE_CURSOR_RIGHT LCD_TURN_ON LCD_TURN_OFF LCD_SHIFT_LEFT LCD_SHIFT_RIGHT

Finalidade Move o cursor para a linha 1 Move o cursor para a linha 2 Move o cursor para a 3 fila Move o cursor para a linha 4 O visor claro Retornar cursor para a posio inicial, retorna uma tela mudou i i d d RAM f d Desliguei o cursor l M Sublinhar o cursor em Intermitncia do cursor em Move o cursor para esquerda sem alterar RAM exibir d d cursor para direita sem alterar RAM exibir dados Mover Vire a tela LCD Ligue o monitor LCD Shift display esquerdo sem alterar a RAM de dados de ibi Shift direito de exibio sem alterar RAM exibio de dados

Mikroelektronika - Solues de software e hardware para o mundo embutido

497

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Exemplo Biblioteca

Este exemplo demonstra como se comunicar atravs do mdulo de LCD SPI, utilizando conversor de serial para paralelo MCP23S17.
char * Texto = "mikroElektronika"; / / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander vazio main () { / / Se a porta Expander Library usa SPI1 mdulo SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander / / Se a porta Expander Biblioteca utiliza o mdulo SPI2 / / SPI2_Init (); / / Inicializar SPI mdulo usado com PortExpander SPI_Lcd_Config (0); / / interface de inicializao 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 column 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 - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Conexo HW

SPI LCD conexo HW

Mikroelektronika - Solues de software e hardware para o mundo embutido

499

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas SPI LCD8 (8-bit) biblioteca

A mikroC PRO para PIC fornece uma biblioteca para comunicao com LCD (com controladores HD44780 compatvel) 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 mdulo de comunicao SPI. O usurio deve inicializar o SPI mdulo antes de usar o SPI Biblioteca de Lcd. Para MCUs com dois mdulos SPI possvel 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 pgina para obter mais detalhes.

As dependncias externas do SPI LCD Biblioteca


A implementao de rotinas Lcd Biblioteca SPI baseado em Port Expander Biblioteca rotinas.

As dependncias externas so as mesmas dependncias do Porto Biblioteca Expander externaCIES.

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 SOLUES PARA mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Lcd8_Config
Prottipo Retorna Descrio
vazio SPI_Lcd8_Config (char DeviceAddress);

Nada. Inicializa o mdulo LCD via interface SPI. Parmetros: - DeviceAddress: endereo de hardware spi expansor, ver esquema na final desta pgina As variveis globais: - SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direo do pino de Chip Select - SPExpanderRST_Direction: Direo do pino de Reset devem ser definidas antes de utilizar esta funo. O mdulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.
/ / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander ... / / Se a porta Expander Biblioteca utiliza o mdulo SPI SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander SPI_Lcd8_Config (0); / intialize LCD em modo de 8 bits via SPI

Requer

Exemplo

Spi_Lcd8_Out
Prottipo Retorna
vazio SPI_Lcd8_Out (unsigned short linha, unsigned short coluna, char * Texto);

Nada. Imprime texto na tela LCD a partir de determinada posio. Ambos variveis de cadeia e acendeurals pode ser passado como um texto. Parmetros: - linha: nmero da linha de partida posio - coluna: nmero da coluna a partir posio t it Lcd precisat ser inicializado para a comunicao SPI, ver SPI_Lcd8_Config rotinas.
/ / Escreve o texto "Ol!" no LCD a partir da linha 1, coluna 3: SPI_Lcd8_Out (1, 3, "Ol!");

Descrio

Requer Exemplo

Mikroelektronika - Solues de software e hardware para o mundo embutido

501

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Spi_Lcd8_Out_Cp
Prottipo Retorna
vazio SPI_Lcd8_Chr_CP (char out_char);

Nada. Imprime caracteres em monitores LCD na posio atual do cursor. Ambas as variveis e literais pode ser passado como personagem. Parmetros:

Descrio

Requer Exemplo

Lcd precisa ser inicializado para a comunicao SPI, ver SPI_Lcd8_Config rotinas.
/ / Escreve o texto "Aqui!" na posio atual do cursor: SPI_Lcd8_Out_Cp ("Aqui!");

it

Spi_Lcd8_Chr
Prottipo Retorna
vazio SPI_Lcd8_Chr (unsigned short linha, unsigned short coluna, char out_char);

Nada. Imprime caracteres em LCD na posio especificada. Ambas as variveis e literais

Descrio

podem ser passado como personagem. Parmetros: - linha: escrever o nmero da linha a posio - coluna: escrever o nmero da coluna posio t it Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd8_Config.
/ / Escreve caracter "i" na linha 2, coluna 3: SPI_Lcd8_Chr (2, 3, 'i');

Requer Exemplo

502

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Spi_Lcd8_Chr_Cp
Prottipo Retorna
vazio SPI_Lcd8_Chr_CP (char out_char);

Nada. Imprime caracteres em LCD na posio atual do cursor. Ambas as variveis e literais pode ser passado como personagem. Parmetros:

Descrio

Requer Exemplo

t h : caractere a ser escrito Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd8_Config.

Imprimir "E" na posio atual do cursor:


/ / Escrever "e" caractere na posio atual do cursor: SPI_Lcd8_Chr_Cp ('e');

Spi_Lcd8_Cmd
Prottipo Retorna
vazio SPI_Lcd8_Cmd (char out_char);

Nada. Envia comando para LCD. Parmetros:

Descrio - out_char: comando a ser enviado Nota: Constantes pr-definidas podem ser passados para a funo, consulte Requer Exemplo Disponvel LCD Lcd precisa ser inicializado para a comunicao SPI, consulte rotinas SPI_Lcd8_Config.
/ / Limpa display LCD: SPI_Lcd8_Cmd (_LCD_CLEAR);

Mikroelektronika - Solues de software e hardware para o mundo embutido

503

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Disponvel Comandos LCD
Lcd Comando
LCD_FIRST_ROW LCD_SECOND_ROW LCD_THIRD_ROW LCD_FOURTH_ROW LCD_CLEAR LCD_RETURN_HOME LCD_CURSOR_OFF LCD_UNDERLINE_ON LCD_BLINK_CURSOR_ON LCD_MOVE_CURSOR_LEFT LCD_MOVE_CURSOR_RIGHT LCD_TURN_ON LCD_TURN_OFF LCD_SHIFT_LEFT LCD_SHIFT_RIGHT

Finalidade Move o cursor para a linha 1 Move o cursor para a linha 2 Move o cursor para a 3 fila Move o cursor para a linha 4 O visor claro Retornar cursor para a posio inicial, retorna uma tela mudou i i d d RAM f d Desliguei o cursor l M Sublinhar o cursor em Intermitncia do cursor em Move o cursor para esquerda sem alterar RAM exibir d d cursor para direita sem alterar RAM exibir dados Mover Vire a tela LCD Ligue o monitor LCD Shift display esquerdo, sem alterar RAM exibir dados Shift direito de exibio sem alterar RAM exibio de dados

504

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

Exemplo Biblioteca
Este exemplo demonstra como se comunicar LCD em modo de 8 bits, atravs do SPI modULE, usando a srie paralelo conversor MCP23S17.
char * Texto = "mikroE"; / / Porta conexes Expander mdulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto mdulo conexes Expander vazio main () { / / Se a porta Expander Library usa SPI1 mdulo SPI1_Init (); / / Inicializar SPI mdulo usado com PortExpander / / Se o Porto Expander Biblioteca utiliza o mdulo SPI2 / / SPI2_Init (); / / Inicializar SPI mdulo 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 mdulos de LCD com mais de duas linhas SPI_Lcd8_Out (4,15, texto); / / Para os mdulos de LCD com mais de duas linhas

Mikroelektronika - Solues de software e hardware para o mundo embutido

505

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Conexo HW

LCD8 SPI conexo HW

506

Mikroelektronika - Solues de software e hardware para o mundo embutido

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

CAPTULO 7

Bibliotecas

SPI biblioteca grfica 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 pocontrolador do LCD lar para a utilizao em pequenos mdulos grficos. Ele capaz de controlar telas com uma resoluo de at 240x128. Devido sua baixa potncia e pequeno-out linha o mais apropriado para aplicaes mveis, como PDAs, MP3 players ou celulares equipamentos de medio. Embora este controlador pequeno, tem uma capacidade de disbrincando e mesclando texto e grficos 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 mdulo de comunicao SPI. O usurio deve inicializar SPI mdulo antes de usar o SPI T6963C GLCD Biblioteca. Para MCUs com dois mdulos SPI possvel 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 pgina para detalhes. Nota: Algumas placas mikroElektronika do adaptador tem pinagem diferente do T6369C fichas. relaes adequadas entre esses rtulos so dadas na tabela abaixo: Adaptador C RS R/W E datasheet T6369C C/D / RD / WR

As dependncias externas do SPI T6963C LCD Grfico Biblioteca


A implementao do SPI T6963C Grfica rotinas Lcd Biblioteca baseado em Port Expander Biblioteca rotinas.

As dependncias externas so as mesmas dependncias do Porto Biblioteca Expander externaCIES.

Mikroelektronika - Solues de software e hardware para o mundo embutido

507

CAPTULO 7

www.mecatronicadegaragem.blogspot.com
mikroC PRO para PIC

Bibliotecas
Rotinas da biblioteca
- SPI_T6963C_Config - SPI_T6963C_writeData - SPI_T6963C_writeCommand - SPI_T6963C_setPtr - SPI_T6963C_waitReady - SPI_T6963C_fill - SPI_T6963C_dot - SPI_T6963C_write_ch