PORTB <script> var str, i; str = ""; for (i = 0; i <8; i + +) {Str + = " |
# botão" + i + ""; if (PORTB e (1 < ON" ;} mais str document.write (str); < script>
"; * IndexPage2 = " const char
;font-family:
PORTD <script> var str, i; str = ""; for (i = 0; i <3; i + +) {Str + = "bgcolor=yellow> |
"; if (PORTD & (1 < ON" ;} mais +i+ rel="nofollow">
Toggle Este é HTTP pedido # <script> Document.write (REQ) "; /*********************************** RAM variáveis * * / unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f}; / / Meu endereço MAC unsigned char myIpAddr [4] = {192, 168, 20, 60}; / / O meu endereço IP unsigned char gwIpAddr [4] = {192, 168, 20, 6}; / gateway / (Roteador), IP endereço unsigned char IPMask [4] = {255, 255, 255, 0}; / máscara de rede / (Por exemplo: 255.255.255.0) unsigned char dnsIpAddr [4] = {192, 168, 20, 1}; / / Endereço IP do servidor DNS unsigned char unsigned char unsigned long
314
GetRequest [15] / / buffer solicitação HTTP dyna [30]; / / buffer para a resposta dinâmica httpCounter = 0 / / contador de HTTP pedidos
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
/******************************************* * funções * / / * * Colocar a string constante a pontada por s para o con-Ethernet Troller do buffer de transmissão. * / / * PutConstString unsigned int (const char * s) { ctr unsigned int = 0; while (* s) { Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / * / * * Ele vai ser muito mais rápido de usar a biblioteca Ethernet_putConstString roudente * Em vez de putConstString rotina acima. No entanto, o código será ser um pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com o def-putConstString rial acima * A linha # define abaixo devem ser comentadas. * * / # Define putConstString Ethernet_putConstString / * * Colocar a string apontada por s para o controlador Ethernet de trans mit buffer * / / * PutString unsigned int (char * s) { ctr unsigned int = 0; while (* s) { Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / * / *
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
315
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
* Ele vai ser muito mais rápido de usar a biblioteca Ethernet_putString rotina * Em vez de putString rotina acima. No entanto, o código será uma pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com a definição putString ção acima * A linha # define abaixo devem ser comentadas. * * / # Define putString Ethernet_putString / * * Esta função é chamada pela biblioteca * O usuário a o pedido HT TP por chamadas suce ssivas para Ethernet_getByte () * O usuário coloca os dados no buffer de transmissão por chamadas sucessivas para Ethernet_putByte () * A função deve retornar o tamanho em bytes da resposta HTTP, ou 0 se nada para transmitir * * Se você não precisa de responder a pedidos HTTP, * Apenas definir essa função com um return (0) como única instrução * * / unsigned int Ethernet_T (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int l ocalPort, unsigned i nt reqLength) { unsigned int len = 0; / / comprimento resposta minha i / / de propósito geral char unsigned char if (localPort! = 80) / / Eu ouço apenas para solicitação da web na porta 80 { return (0); } / / Obtém 10 bytes primeiro, somente o pedido, o resto não importa aqui for (i = 0; i <10; i + +) { GetRequest [i] = Ethernet_getByte (); } GetRequest [10] = 0; if (memcmp (GetRequest, HttpMethod, 5)) / / só método GET é ados aqui { return (0); }
316
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas httpCounter + +;
/ / Mais um pedido feito
if (GetRequest [5] 's' ==) / / se o nome do caminho começa com pedido s, armazenamento dinâmico de dados em buffer de transmissão { / / A string de texto respondeu por essa solicitação pode ser interpretadas como declarações de javascript / / Por navegadores putConstString len = (httpHeader); / / cabeçalho HTTP len + = putConstString (httpMimeTypeScript) / / com MIME de texto tipo / / Adiciona valor AN2 para responder IntToStr (ADC_Read (2), Dyna); len + = putConstString (AN2 var = "); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona valor AN3 para responder IntToStr (ADC_Read (3), Dyna); len + = putConstString ("AN3 var ="); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona valor PORTB (botões) para responder len + = putConstString (PORTB var = "); IntToStr (PORTB, Dyna); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona valor PORTD (LEDs) para responder len + putConstString = ("var PORTD = "); IntToStr (PORTD, Dyna); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona os pedidos HTTP contador para responder IntToStr (httpCounter, Dyna); len + = putConstString (REQ var = "); len + = putString (Dyna); len + = (";"); putConstString } else if (GetRequest [5] == 't') / / se o nome do caminho começa a pedido com t, alternar PORTD núm ero de bits (LED) que vem depois { unsigned char bitmask = 0; / máscara de bits para if (GetRequest (isdigit [6])) / / se 0 <= pouco <= número 9, os bits 8 e 9 não existe, mas não importa {
Mikroelektronika - Soluções de software e hardware para o mundo embutido
317
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
bitmask GetRequest = [6] - '0 '; / / converter para inteiro ASCII máscara de bits = 1
/ / Adiciona o separador
/ / Número da porta, em seguida, o anfitrião remoto WordToStr (RemotePort, dyna + 16);
318
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas dyna [21] WordToStr dyna [27] dyna [28]
'['; (destPort, dyna + 22); ']'; = 0;
/ / O comprimento total do ped ido é o comprimento do seqüência dinâmica mais o texto do pedido len = 28 + reqLength; / / Coloca a dinâmica string no buffer de transmissão Ethernet_putBytes (dyna, 28); / / Em seguida, coloca a corda pedido convertido em char superior para o buffer de transmissão while (reqLength -) { Ethernet_putByte (toupper (Ethernet_getByte ())); } retorno (len); resposta UDP }
/ / Volta para a biblioteca com o comprimento do
/ * * Entrada principal * / vazio main () { ADCON1 0x0B = / / conversores ADC será usado com AN2 e AN3 CMCON = 0x07 / / desliga os comparadores PORTA = 0; TRISA 0xFC =;
/ / Define PORTA como entrada para o ADC / / Exceto R A0 e RA1 que será utiliza do como / / Ethernet e LEDA LEDB
PORTB = 0; TRISB = 0xff;
/ PORTB set / como entrada para os botões
PORTD = 0; TRISD = 0;
/ / Set PORTD como saída
/ * * Inicializar controlador Ethernet * / Ethernet_Init (myIpAddr myMacA ddr, Ethernet_FULLDU PLEX); / / Dh não serão utilizados aqui, portanto, use pré - Endereços Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
319
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
/ / Faz para sempre
while (1) {
/ * * Se necessário, teste o valor de retorno para obter o código de erro * / Ethernet_doPacket () / / processo de pacotes Ethernet de entrada / * * Adicionar o seu material aqui, se necessário * Ethernet_doPacket () deve ser chamado o mais rápido possível * Caso contrário, os pacotes podem ser perdidos * / } }
320
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
BIBLIOTECA DE MEMÓRIA FLASH Esta biblioteca fornece rotinas para ar microcontrolador de memória Flash. Note-se que protótipos diferentes para as famílias PIC16 e PIC18. Nota: Devido às especificidades P16/P18 flash família, biblioteca flash MCU é dependente. Como a família P18 significantlly diferem no número de bytes que podem ser apagados e / ou escrita para MCUs específico, o sufixo justificativo é acrescentado aos nomes dos funções, a fim de torná-lo mais fácil de utilizá-los. operações de memória Flash são MCU dependentes: 1. Leia operações apoiadas. Para este grupo de função só ler MCU é apli cadas. 2. Leia e Escrever operações apoiadas (escrever é executado como apagar e gravação). Para este grupo de MCU ler e escrever funções são implementadas. Note-se que escrever operação que é executada como apagá-e-escrever, pode escrever bytes menor do que apaga. 3. Ler, Escrever e Apagar operações apoiadas. Para este grupo de leitura MCU, funções escrever e apagar são implementadas. Ainda mais um bloco de memória, flash tem de ser apagado antes de escrita (operação de gravação não é executado como apagar 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 - Soluções de software e hardware para o mundo embutido
321
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas FLASH_Read Protótipo
/ / Para PIC16 não assinado FLASH_Read (unsigned endereço); / / Para PIC18 unsigned short FLASH_Read (long endereço);
Retorna
Retorna dados byte da memória Flash.
Descrição
Lê dados do endereço especificado no Flash memória.
Requer
Nada.
Exemplo
/ / Para PIC18 unsigned short tmp; ... tmp FLASH_Read = (0x0D00); ...
FLASH_Read_N_Bytes
322
Protótipo
vazio FLASH_Read_N_Bytes (long endereço, Char * data_, unsigned int N);
Retorna
Nada.
Descrição
Lê dados de N do especificado endereço em memória Flash para varibale apontado por
Requer
Nada.
Exemplo
FLASH_Read_N (0x0D00, data_buf fer, sizeof (data_bu ffer));
dados
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
FLASH_Write
Protótipo
Retorna
/ / Para PIC16 vazio FLASH_Write (unsigned endereço, unsigned int * / / Para PIC18 vazio FLASH _Write_8 (long e ndereço, Char * vazio FLASH_Write_16 (long endereço, Char * vazio FLASH_Write_32 (long endereço, Char * vazio FLASH_Write_64 (long endereço, Char *
de dados); de de de de
dado s); dados); dados); dados);
Nada. Grava bloco de dados para a memória Flash. tamanho do bloco é MCU dependentes. P16: Esta função pode apagar segm en to de memória antes de escrever bloco
Descrição
Requer
Exemplo
de dado s a ele (MCU depende nte) . Além disso, o segmento de memóri a, que serão apagados pode ser maior que o tamanho do bloco de dados que serão gravados (MCU dependente). Portanto, e ser a escrever, como termuitos bytes como apagar FLASH_Wri te A memóri arecomenda-s flash que irá escrito pode que ser apagada antes .que essa escreve 4 locais de memóri a flash em uma linha, por isso precisa ser chamada função é como muitas vezes chamado MCU (dependente). Consulte a MCU consecutivas, datasheet paraa mais Escrever valores consecutivos em 64 posições partirdetalhes. 0x0D00: em que seja necessário para encontrar o tamanho do bloco de dados que serão gravados. unsigned short toWrite [64]; ... P18: Esta função não realiza apagar antes de escre ver. / / Inicializa array: para (I = 0; i <64; i + +) toWrite [i] = i; / / Escreve o conteúdo da matr iz para o endereço 0 x0D00: FLASH_Write_64 (0x0D00, toWrite);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
323
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas FLASH_Erase Protótipo
/ / Para PIC16 vazio FLASH_Erase (unsigned endereço); / / Para PIC18 vazio FLASH_Erase_64 (long endereço); vazio FLASH_Erase_1024 (long endereço);
Retorna
Nada.
Descrição Requer Exemplo
Apaga um bloco de memória a partir de um determinado endereço. Para P16 familly é implementared somente para aquel es MCU, cuja memóri a flash não supor ta apagar e gravaç Nada. ão operações (consultar os dados para detalhes). Apagar um bloco de memória de 64 bytes de memória, a partir do endereço 0x0D00: FLASH_Erase_64 (0x0D00);
FLASH_Erase_Write / / Para PIC18
Protótipo
vazio FLASH_Erase_Write_64 (long endereço, dados char *); vazio FLASH_Erase_Write_1024 (long endereço, dados char *);
Retorna
Nenhum.
Descrição
Apagar em seguida, escrever de memória bloco a partir de um determinado endereço. Nada.
Requer
Exemplo
char toWrite [64]; int i; ... / / Inicializa array: for (i = 0; i <64; i + +) toWrite [i] = i; / / Apagar bloco de memória no endereço 0x0D00 em seguida, escrever conteúdo a matriz para o endereço 0x0D00: FLASH_Erase_Write_64 (0x0D00, toWrite);
324
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Exemplo Biblioteca O exemplo demonstra simples escrever para a memória flash para PIC16F887, em seguida, lê os dados e exibe-lo em PORTB e PORTC. char i = 0; unsigned int addr, data_, data AR [4] [4] = {{0 0x3 FAA, 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 saída PORTC valor inicial Definir PORTC como saída
/ / Escreve todos os blocos / / Para a memória do programa são feitas até 16 palavras por apagar / / Oito palavras operações de gravação. A operação de gravação é / / borda alinhados e não pode ocorrer através das fronteiras. / / Por isso, é recomendada a realização de flash escreve em 16 palavras pedaços. / / É por isso que 4 bits mais baixos do começo endereço [03:00] deve ser zero. / / Desde rotina FLASH_Write realiza escreve em blocos de 4 palavras, / / precisamos chamá-la quatro vezes seguidas. addr = 0x0430, / / endereço inicial do Flash, válida para P16F887 para (I = 0 ; i <4; i + +) { / / Escr eva alg uns dado s para F lash Delay_ms (100); FLASH_Write (addr + i * 4, dataAR [i]); } Delay_ms (500); addr = 0x0430; para (I = 0; i <16; i + +) { data_ = FLASH_Read (addr + +); Delay_us (10); PORTB data_ =; PORTC data_ => 8; Delay_ms (500); }
// / / // //
FLASH P16 é de 14 bits, de modo MSB dois vai ser sempre '00 ' Exibir dados em PORTB LS Byte e MS PORTC Byte
}
Mikroelektronika - Soluções de software e hardware para o mundo embutido
325
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas GRÁFICO LCD BIBLIOTECA
A mik roC PRO para PIC fornece uma biblioteca para o funcionamento 128x64 gráfico LCD (com comumente usado Samsung controlador KS108/KS107). Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool.
As dependências externas do LCD Gráfico Biblioteca As seguintes variáveis devem ser defin id o em todo s os extern projec tochar s sfr usand o LCD Gráfico GLCD_DataPort; Biblio tec a:
326
Descrição:
Exemplo:
GLCD porta de dados.
char GLCD_DataPort em PORTD;
sbit sfr extern GLCD_CS1;
Chip Selecione uma
sbit GLCD_CS1 em RB0_bit;
sbit sfr extern GLCD_CS2;
linha. Chip Select 2 linha.
sbit GLCD_CS2 em RB1_bit;
sbit sfr extern GLCD_RS; sbit sfr extern GLCD_RW; sbit sfr extern GLCD_EN;
Registre-se selecionar a sbit GLCD_RS em linha. Read / Write linha. Habilitar linha.
RB2_bit; sbit GLCD_RW em RB3_bit; sbit GLCD_EN em RB4_bit;
sbit sfr extern GLCD_RST;
linha de reposição.
sbit GLCD_RST em RB5_bit;
sbit sfr extern GLCD_CS1_Direction;
Direção do Chip Selecione um alfinete.
sbit GLCD_CS1_Direction em TRISB0_bit;
sbit sfr extern GLCD_CS2_Direction;
Direção do Chip Selecione de 2 pinos.
sbit GLCD_CS2_Direction em TRISB1_bit;
sbit sfr extern GLCD_RS_Direction;
Direção do pinos de seleção.
sbit GLCD_RS_Direction em TRISB2_bit;
sbit sfr extern GLCD_RW_Direction;
Direção do Read / Write pino.
sbit GLCD_RW_Direction em TRISB3_bit;
sbit sfr extern GLCD_EN_Direction;
Direção da Habilitar alfinete.
sbit GLCD_EN_Direction em TRISB4_bit;
sbit sfr extern GLCD_RST_Direction;
Direção do Reset alfinete.
sbit GLCD_RST_Direction em TRISB5_bit;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Rotinas da biblioteca rotinas básicas: - Glcd_Init - Glcd_Set_Side - Glcd_Set_X - Glcd_Set_Page - Glcd_Read_Data - Glcd_Write_Data rotinas avançadas: - Glcd_Fill - Glcd_Dot - Glcd_Line - Glcd_V_Line - Glcd_H_Line - Glcd_Rectangle - Glcd_Box - Glcd_Circle - Glcd_Set_Font - Glcd_Write_Char - Glcd_Write_Text - Glcd_Image
Mikroelektronika - Soluções de software e hardware para o mundo embutido
327
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Glcd_Init Protótipo
vazio Glcd_Init ();
Retorna
Nada.
Descrição
Inicializa o módulo GLCD. Cada uma das linhas de controle é tanto um porto e pin-config mensurável, enquanto que as linhas de dados devem ser em uma única porta (pinos <00:07>). As variáveis globais:
Requer
-
GLCD_CS1: Chip selecione um pino de sinal GLCD_CS2: Chip selecionar dois pinos de sinal GLCD_RS: Cadastre-se pino de sinal selecione GLCD_RW: leitura / gravação de pino GLCD_EN: pino do sinal Enable GLCD_RST: Reset sinal GLCD_DataPort: porta de dados GLCD_CS1_Direction: Direção do Chip selecione um pino GLCD_CS2_Direction: Direção do Chip selecione 2 pinos GLCD_RS_Direction: Direção do sinal selecione Registrar pin GLCD_RW_Direction: Direção da leitura / gravação do sinal do pino GLCD_EN_Direction: Direção do sinal Enable pin GLCD_RST_Direction: Direção do pino do sinal Reset
devem ser definidas antes de utilizar esta função. / / GLCD configurações de pinagem char GLCD_DataPort em PORTD;
Exemplo
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;
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 - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Glcd_Set_Side Protótipo
vazio Glcd_Set_Side (unsigned short x_pos);
Retorna
Nada. Seleciona lado GLCD. Consulte a ficha GLCD para explicação detalhada. Parâmetros:
Descrição
- X_pos: posição no eixo-x. Valores válidos: 0 .. 127
O parâmetro x_pos especifica o lado GLCD: valores 0-63 especificar o lado esquerdo, os valores de 64-127 especificar o lado direito. Nota: Para lateral, eixo x e explicaç ão de layou t de págin a ver esquem áti c a na Requer
Exemplo
parte inferior GLCD precisa ser inicializado, veja Glcd_Init rotina. desta página. As duas linhas seguintes são equival entes , e ambos selecione no lado esquer do da GLCD: Glcd_Select_Side (0); Glcd_Select_Side (10);
Glcd_Set_X Protótipo
vazio Glcd_Set_X (unsigned short x_pos);
Retorna
Nada. Define a posição do eixo x para x_pos pontos a partir da margem esquerda do GLCD dentro do selectlado ed.
Descrição Parâmetros: - X_pos: posição no eixo-x. Valores válidos: 0 .. 63
Requer
Nota: Para lateral, eixo x e na págin a explicação layout ver esquem a em baixo desta GLCD página. precisa ser inicializado, veja Glcd_Init rotina.
Exemplo
Glcd_Set_X (25);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
329
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Glcd_Set_Page Protótipo
vazio Glcd_Set_Page (unsigned short página);
Retorna
Nada. Seleciona a página do GLCD. Parâmetros:
Descrição - página: número da página. Valores válidos: 0 .. 7 Nota: Para lateral, eixo x e explicaç ão de layou t de págin a ver esquem a em Requer Exemplo
baixo GLCD precisa ser inicializado, veja rotina Glcd_Init. desta página. Glcd_Set_Page (5);
Glcd_Read_Data Protótipo
unsigned short Glcd_Read_Data ();
Retorna
Um byte de memória GLCD.
Descrição
Lê dados a partir do local atual de memória GLCD e se move para a próximo local. GLCD precisa ser inicializado, veja Glcd_Init rotina.
Requer
Exemplo
330
lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as funções unsigned short dados; Glcd_Set_Side, Glcd_Set_X e Glcd_Set_Page. ... = dados Glcd_Read_Data ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Glcd_Write_Data Protótipo
vazio Glcd_Write_Data (unsigned short ddata);
Retorna
Nada. Grava um byte para a posição atual em GLCD memóri a e move para a próxima Local.
Descrição Parâmetros: - ddata: dados a serem gravados GLCD precisa ser inicializado, veja Glcd_Init rotina. Requer
Exemplo
lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as funções unsigned short dados; Glcd_Set_Side, Glcd_Set_X e Glcd_Set_Page. ... Glcd_Write_Data (dados);
Glcd_Fill Protótipo
vazio Glcd_Fill (unsigned short padrão);
Retorna
Nada. Preenche a memória GLCD com o padrão de byte. Parâmetros:
Descrição
- padrão: byte para preencher GLCD memória com Para limpar a tela GLCD, use Glcd_Fill (0). Para preencher a tela completamente, uso Glcd_Fill (0xFF).
Requer
GLCD precisa ser inicializado, veja Glcd_Init rotina.
Exemplo
/ / Limpar ecrã Glcd_Fill (0);
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
331
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Glcd_Dot Protótipo
vazio Glcd_Dot (unsigned short x_pos, unsigned y_pos curto, não assinado cor curto);
Retorna
Nada. Desenha um ponto na GLCD nas coordenadas (x_pos, y_pos). Parâmetros:
Descrição
- x_pos: x posição. Valores válidos: 0 .. 127 - y_pos: y posição. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2 O parâmetro cor determina um ponto do estado: 0 limpa ponto, um coloca um ponto, e 2 inverte ponto estado. Nota: Para x e explicação layout eixo y ver esquema no final deste página.
Requer
GLCD precisa ser inicializado, veja Glcd_Init rotina.
Exemplo
/ / Inverter o ponto no no canto superior esquerdo Glcd_Dot (0, 0, 2);
Glcd_Line Protótipo
vazio Glcd_Line (int x_start, int y_start, int x_end, int y_end, unsigned short cor);
Retorna
Nada. Desenha uma linha na GLCD. Parâmetros:
Descrição
- x_start: coordenada x do início da linha. Válido valores: 0 .. 127 - y_start: coordenada y do início da linha. Valores válidos: 0 .. 63 - x_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - y_end: coordenada y da linha final. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2
Requer Exemplo
332
O parâmetro 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 lin ha entre os pont os (0,0 ) e (20, 30) Glcd_Line (0, 0, 20, 30, 1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Glcd_V_Line Protótipo
vazio Glcd_V_Line (unsigned short y_start, unsigned short y_end, unsigned short x_pos, unsigned short cor);
Retorna
Nada. Desenha uma linha vertical no GLCD. Parâmetros:
Descrição
-
y_start: coordenada y do início da linha. Valores válidos: 0 .. 63 y_end: y coordenar o fim da linha. Valores válidos: 0 .. 63 x_pos: coordenada x da linha vertical. Valores válidos: 0 .. 127 cor: parâmetro de cor. Valores válidos: 0 .. 2
O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto. Requer
GLCD precisa ser inicializado, veja Glcd_Init rotina.
Exemplo
/ / Desenha uma linha vertical entre os pontos (10,5) e (10,25) Glcd_V_Line (5, 25, 10, 1);
Glcd_H_Line Protótipo
vazio Glcd_H_Line (unsigned short x_start, unsigned short x_end, unsigned short y_pos, unsigned short cor);
Retorna
Nada. Desenha uma linha horizontal sobre GLCD. Parâmetros:
Descrição
- x_start: coordenada x do início da linha. Valores válidos: 0 .. 127 -X_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - y_pos: coordenada y da linha horizontal. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2 O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto.
Requer
GLCD precisa ser inicializado, veja Glcd_Init rotina.
Exemplo
/ / Desenha uma linha horizontal entre os pontos (10,20) e (50,20) Glcd_H_Line (10, 50, 20, 1);
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
333
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Glcd_Rectangle Protótipo
vazio Glcd_Re ctangle ( unsigned short x_u pper_left , unsigne d short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short cor);
Retorna
Nada. Desenha um retângulo na GLCD. Parâmetros: - x_upper_left: coordenada x do retângul o superior esquerdo canto. Valores válidos: 0
Descrição
.. 127 - y_uppe r_left: coordena da y do canto superior esquerdo do retângu lo. Valores válidos: 0 . . 63 - x_bottom_right: coordenada x do canto inferior direito do retângulo. Válido
valores: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito r etângul o canto. Válido valores: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2 Requer Exemplo
GLCD precisa inicializado, vejaborda Glcd_Init rotina. 0 branco, 1 O parâmetro corser determina a cor da do retângulo: inverte preto,um e 2retângulo de cada ponto. / / Desenha entre os pontos (5,5) e (40,40) Glcd_Rectangle (5, 5, 40, 40, 1);
Glcd_Box Protótipo
vazio Glcd_Box (unsigned short x_upper_left, unsigned short y_upper_left, unsigned short x_bottom_right, unsigned short y_bottom_right, unsigned short cor);
Retorna
Nada. Desenha uma caixa de GLCD. Parâmetros: - x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores
Descrição
válidos: 0 .. 127 - y_upper_left: coordenada y do canto superior esquerdo caixa. Valores válidos: 0 .. 63 - x_bott om_right : x coordenadas do canto inferior direito caixa. Valores válidos: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito caixa. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2
Requer
GLCD precisa ser inicializado, veja Glcd_Init rotina. O parâmetro cor determina a cor da caixa de preenchimento: 0 branco, um preto, e 2 / / Desenha uma cai xa entre os pont os (5,1 5) e (20 ,40) inverte cada ponto.
Exemplo
334
Glcd_Box (5, 15, 20, 40, 1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Glcd_Circle Protótipo
vazio Glcd_Circle (int x_center, int y_center, int raio, não assinado curto cor);
Retorna
Nada. Desenha um círculo em GLCD. Parâmetros:
Descrição
- x_center: coordenada x do círculo centro. Valores válidos: 0 .. 127 - y_center: coordenada y do centro do círculo. Valores válidos: 0 .. 63 - Raio: Raio de tamanho - cor: parâmetro de cor. Valores válidos: 0 .. 2
O parâmetro cor determina a cor da linha do círculo: 0 branco, um negro, Requer
e 2 inverte cada ponto. GLCD precisa ser inicializado, veja Glcd_Init rotina.
Exemplo
/ / Desenha um círculo com cen tro em (50,50) e rai o = 10 Glcd_Circle (50, 50, 10, 1);
Glcd_Set_Font Protótipo
vazio Glcd_Set_Font (const char * ActiveFont, unsigned short aFontWidth, unsigned short aFontHeig ht, unsigned int aFontOf fs);
Retorna
Nada. Define a fonte que será usada com Glcd_Write_Char e Glcd_Write_T ext rotinas. Parâmetros: - activeFont: fonte a ser definido. Precisa ser formatado como um array
Descrição
Requer Exemplo
de byte - aFontWidth: largura dos caracteres da fonte em pontos. - aFontHeight: altura dos caracteres da fonte em pontos. - aFontOffs: número que representa a diferença entre mikroC para o PRO
PIC conjunto de caracter es ASCII e definir regular (por exempl o, se 'A' é 65 de caracter es ASCII, e 'A' é 45 no mikroC PRO para PIC conjunto de caracteres, aFontOffs é 20). Demo fontes providas com a bibliotec a tem um desloc amento de 32, o que significa que início GLCD ser inicializado, veja Glcd_Init rotina. com oprecisa espaço. / / Use o costume 5x7 fonte "MyFont", que se inicia com o espaço (32): O usuári o pode usar fontes de 5, dados arquiv o "__Li b_G LCD F onts " arquiv o Glcd_Set_Font (& MyFont, 7, no 32);
localizado na Mikroelektronika - Soluções de software e hardware para o mundo embutido Usa pasta ou criar sua próprias fontes.
335
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Glcd_Write_Char Protótipo
vazio Glcd_Write_Char (unsigned short CDH, unsigned short x_pos, unsigned short page_num, unsigned short cor);
Retorna
Nada. Impressões sobre o caráter GLCD. Parâmetros:
Descrição
- CDH: caractere a ser escrito - x_pos: caractere inicial posição no eixo-x. Valores válidos: 0 .. (127-FontWidth) - page_num: o número da página na qual personagem vai ser escrito. Válido valores: 0 .. 7 - cor: parâmetro de cor. Valores válidos: 0 .. 2 O parâmetro cor determina a cor do personagem: 0 branco, Um preto, e 2 inverte cada ponto. Nota: Para eixo x e explicação de layout de página ver esquema na parte
Requer
Exemplo
336
inferior da GLCD precisa ser inicializado, veja Glcd_Init rotina. Use Glcd_Set_F ont a especiesta página. fy a fonte para exibição, se não é fonte especifi c ado, fonte padrão forneci dos com 5x8 a será usada. na posição 10 no interior da página 2: / /biblioteca Escreve 'C' personagem Glcd_Write_Char ('C', 10, 2, 1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Glcd_Write_Text Protótipo
vazio Glcd_Wr ite_Text (char * T exto, uns igned sho rt x_pos, não assi nado curto page_num, unsigned short cor);
Retorna
Nada. Imprime texto na GLCD. Parâmetros:
Descrição
-
texto: texto a ser escrito x_pos: posição do texto a partir do eixo-x. page_num: o número da página na qual o texto será escrito. Valores válidos: 0 .. 7 cor: parâmetro de cor. Valores válidos: 0 .. 2
O parâmetro cor determina a cor do texto: 0 branco, um preto, e 2 inverte cada ponto. Nota: Para eixo x e explicação de layout de página ver esquema na parte
Requer Exemplo
inferior da GLCD precisa ser inicializado, veja Glcd_Init rotina. Use Glcd_Set_Font para especificar esta página. a fonte para exibição, se nenhuma fonte é especificada, fonte padrão, em seguida, 5x8 fornecido com o será "Olá usada. /biblioteca / Escreve texto mundo!" na posição 10 no interior da página 2: Glcd_Write_Text ("Olá mundo!", 10, 2, 1);
Glcd_Image Protótipo
vazio Glcd_Image (const unsigned short código * Imagem);
Retorna
Nada. Exibe bitmap em GLCD. Parâmetros:
Descrição - imagem: a imagem a ser exibida. matriz bitmap deve estar na memória de código. Use o mikroC PRO para PIC integr ada GLCD Bitmap Editor para converter a
Requer
imagem para GLCD precisa ser inicializado, veja Glcd_Init rotina. uma matriz constante, para a exibição em GLCD.
Exemplo
/ / Desenha my_image imagem GLCD Glcd_Image (my_image);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
337
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
O exemplo a seguir demonstra as rotinas da biblioteca GLCD: inicialização, claro (padrão de preenchimento), exibindo imagens, desenhar linhas, círculos, retângulos e caixas, o texto visualização e manuseio. / / Declarações ----------------------------------------------- -----------------const char código truck_bmp [1024]; //------------------------------------------------ -------------- final declarações / / Conexões GLCD módulo char GLCD_DataPort em PORTD; sbit sbit sbit sbit sbit sbit
GLCD_CS1 GLCD_CS2 GLCD_RS GLCD_RW GLCD_EN GLCD_RST
em em em em em em
RB0_bit; RB1_bit; RB2_bit; RB3_bit; RB4_bit; RB5_bit;
sbit GLCD_CS1_Direction em TRISB0_bit; sbit GLCD_CS2_Direction em TRISB1_bit; sbit GLCD_RS_Direction 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 conexões GLCD módulo vazio delay2S () { Delay_ms (2000); }
/ / 2 segundos, função de atraso
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);
/ / Inicializar GLCD / / Limpar GLCD
while (1) {
338
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas # 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 ();
/ / Desenha a imagem
/ / Limpar GLCD / / Desenha caixa / / Desenhar retângulo / / 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) / / Esc reve o texto para (Ii = 1;
/ / Desenha círculos
Glcd_Box (12,20, 70,57, 2); delay2S ();
/ / Desenha caixa
# Ifdef COMPLETE_EXAMPLE Glcd_Fill (0xFF);
/ / Preencha GLCD
Glcd_Set_Font (Character8x7, 8, 7, 32); / Change / fonte someText = "8x7 Fonte"; Glcd_Write_Text (someText, 5, 0, 2) / / Escreve o texto delay2S (); Glcd_Set_Font (System3x5, 3, 5, 32); / font / Alterar someText = "3X5 únicas capitais"; Glcd_Write_Text (someText, 60, 2, 2) / / Escreve o texto delay2S (); Glcd_Set_Font (font5x7, 5, 7, 32); someText = "5x7 Fonte";
/ / Alterar a fonte
Mikroelektronika - Soluções de software e hardware para o mundo embutido
339
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Glcd_Write_Text (someText, 5, 4, 2); delay2S ();
/ / Escreve a string
Glcd_Set_Fon t (FontS ystem5x7_ v2, 5, 7 , 32); / / Altera r fonte someText = "5x7 Fonte (v2)"; Glcd_Write_Text (someText, 5, 6, 2) / / Escreve o texto delay2S (); # Endif } }
Conexão HW
GLCD conexão HW
340
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
BIBLIOTECA I ² C I ˛ C completo módulo mestre MSSP está disponível com um número de modelos PIC MCU. mik roC PRO para PIC fornece biblioteca que apoia o comandante do I ˛ modo C. Nota: Alguns MCUs ter vários módulos ˛ C. A fim de usar a desejar eu ˛ rotina da biblioteca C, sim ply alterar o número 1 no protótipo com o número adequado de módulo, ou seja, I2C1_Init (100000);
Rotinas da biblioteca - I2C1_Init - I2C1_Start - I2C1_Repeated_Start - I2C1_Is_Idle - I2C1_Rd - I2C1_Wr - I2C1_Stop
I2C1_Init Protótipo
vazio I2C1_Init (unsigned long relógio);
Retorna
Nada. Inicializa I C ˛ com desejado relógio (Ver folha de dados do dispositivo para os valores
Descrição
corretos em respeito com FOSC). Precisa ser chamada antes de usar outras funções de I ˛ C Library. Você não precisa configurar as portas manualmente para usando o módulo; biblioteca terá cuidado com a inicialização. Biblioteca requer MSSP módulo sobre PORTB ou PORTC.
Requer
Nota: O cálculo do valor do relógio que eu ˛ C é realizada pelo compilador, como
Exemplo
seria produzir um código relativamente grande, se realizado em o nível biblioteca. Portanto, o compilador precisa saber o valor do parâmetro em tempo de compilação. I2C1_Init (100000); É por isso que este parâmetro deve ser uma constante, e não uma variável.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
341
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas I2C1_Start Protótipo
unsigned short I2C1_Start (void);
Retorna
Se não houver erro, a função retorna 0.
Descrição
Determina se o bus I2C é gratuito e as questões START.
Requer
I2C deve ser configurado antes de usar esta função. Veja I2C1_Init.
Exemplo
I2C1_Start ();
I2C1_Repeated_Start Protótipo
vazio I2C1_Repeated_Start (void);
Retorna
Nada.
Descrição
Questões repetidas START.
Requer
I2C deve ser configurado antes de usar esta função. Veja I2C1_Init.
Exemplo
I2C1_Repeated_Start ();
I2C1_Is_Idle Protótipo
unsigned short I2C1_Is_Idle (void);
Retorna
Retorna 1 se o bus I2C é livre, caso contrário retorna 0.
Descrição
Testa se I2C bus está livre.
Requer
I2C deve ser configurado antes de usar esta função. Veja I2C1_Init.
Exemplo
se (I2C1_Is_Idle ()) {...}
I2C1_Rd Protótipo
unsigned short I2C1_Rd (unsigned short ack);
Retorna
Retorna um byte a partir do escravo.
Descrição
Lê um byte a partir do escrav o, e não envia reconhec er sinal se o parâmetr o ack é 0, caso contrário, ele envia reconhecer.
Requer
I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja I2C1_Start. Ler e enviar dados não reconhece sinal:
Exemplo
342
unsigned short ter; ... ter = I2C1_Rd (0);
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
I2C1_Wr Protótipo
unsigned sh ort I2C1 _Wr (uns igned sh ort dat a_);
Retorna
Retorna 0 se não houve erros.
Descrição
Envia byte de dados (parâmetros) através do barramento I2C.
Requer
I2C deve ser configurado antes de usar esta função. Veja I2C1_Init. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja I2C1_Start.
Exemplo
I2C1_Write (0xA3);
I2C1_Stop Protótipo
vazio I2C1_Stop (void);
Retorna
Nada.
Descrição
Problemas de sinal STOP.
Requer
I2C deve ser configurado antes de usar esta função. Veja I2C1_Init.
Exemplo
I2C1_Stop ();
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
343
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
Este código demonstra o uso da biblioteca C eu ˛. PIC MCU está conectado (SCL, os pinos SDA) a EEPROM 24C02. Programa envia dados para EEPROM (os dados são gravados no endereço 2). Então, podemos ler os dados via I ˛ C da EEPROM e enviar seu valor para PORTB, para verificar se o ciclo foi bem sucedida (veja a figura abaixo como fazer a interface com PIC 24C02). vazio main () { ANSEL = 0; ANSELH = 0; PORTB = 0; TRISB = 0; I2C1_Init (100000); I2C1_Start (); I2C1_Wr (0xA2); I2C1_Wr (2); I2C1_Wr (0xF0); I2C1_Stop ();
/ / Configurar um pinos como I / O digital
/ / Configurar PORTB como saída // // // // // //
inicializar comunicação I2C emitir sinal de início I2C enviar bytes via I2C (endereço do dispositivo + W) enviar bytes (endereço do local EEPROM) enviar dados (dados a serem escritos) emissão de sinal de paragem I2C
// // // // // // //
emitir sinal de início I2C enviar bytes via I2C (dispositivo Endereço + W) enviar bytes (envio de dados) sinal questão de I2C repetidas início enviar (endereço do dispositivo + R) byte Leia os dados (não reconhece) emissão de sinal de paragem I2C
Delay_100ms (); I2C1_Start (); I2C1_Wr (0xA2); I2C1_Wr (2); I2C1_Repeated_Start (); I2C1_Wr (0xA3); PORTB I2C1_Rd = (0U); I2C1_Stop (); }
344
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
Interface com PIC 24C02 via I2C
Mikroelektronika - Soluções de software e hardware para o mundo embutido
345
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas TECLADO BIBLIOTECA
A mik roC PRO para PIC fornece uma biblioteca para trabalhar com 4x4 teclado. As rotinas de biblioteca pode também ser usado com 4x1, 4x2, 4x3 ou teclado. Para uma explicação conexões ver esquema no bot Tom desta página.
As dependências externas do teclado Biblioteca As seguintes variáveis devem ser definida em todos os projectos sfr extern char keypadPort; Usando o teclado Biblioteca:
Descrição:
Teclado Porto.
Exemplo: char keypadPort em PORTD;
Rotinas da biblioteca - Keypad_Init - Keypad_Key_Press - Keypad_Key_Click
Keypad_Init Protótipo
vazio Keypad_Init (void);
Retorna
Nada.
Descrição
Inicializa porta para trabalhar com o teclado. A variável global:
Requer
- keypadPort - Teclado porto devem ser definidas antes de utilizar esta função.
Exemplo
346
/ / Conexões teclado módulo char keypadPort em PORTD; / / Fim do teclado conexões do módulo ... Keypad_Init ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Keypad_Key_Press Protótipo
char Keypad_Key_Press (void);
Retorna
O código de uma tecla pressionada (1 .. 16). Se nenhuma tecla for pressionada, retorna 0.
Descrição
Lê a tecla do teclado quando a chave fica pressionado.
Requer
Porto precisa ser inicializado para trabalhar com a biblioteca do teclado, consulte Keypad_Init. char kp;
Exemplo
... kp Keypad_Key_Press = ();
Keypad_Key_Click Protótipo
char Keypad_Key_Click (void);
Retorna
O código de uma tecla clicada (1 .. 16). Se nenhuma tecla for clicado, retorna 0.
Descrição
Requer Exemplo
Chamar a atenção para Keypad_Key_Click é uma chamada de bloqueio: a função espera até que alguma tecla for pressionado e liberado. Quando liberado, a função retorna 1 a 16, dependendo a chave. Se mais de uma tecla é pressionada, simultaneamente, a função vai esperar até todas as teclas pressionad as são liberados. Depoi s que a função irá retor nar o código do ser inicializado para trabalhar com a biblioteca do teclado, consulte Porto precisa primeira tecla pressionada. Keypad_Init. char kp; ... kp Keypad_Key_Click = ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
347
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
Este é um exemplo simples do uso da Biblioteca do teclado. Ele a teclados com 1 .. 4 linhas e 1 .. 4 colunas. O código a ser devolvido pelo Keypad_Key_Click () função é na faixa a partir de 1 .. 16. Neste exemplo, o código retornado é transformado em ASCII Códigos [0 .. 9, A.. F] e exibido no LCD. Além disso, uma pequena de byte único dis -counter desempenha no segundo número de linha de LCD de teclas pressionadas. kp unsigned short, cnt, oldstate = 0; char txt [6]; / / Conexões teclado módulo keypadPort char na PORTD; / / Fim conexões teclado módulo / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction sbit LCD_EN_Direction sbit LCD_D4_Direction sbit LCD_D5_Direction sbit LCD_D6_Direction sbit LCD_D7_Direction / / Fim do módulo LCD
em TRISB4_bit; em TRISB5_bit; em TRISB0_bit; em TRISB1_bit; em TRISB2_bit; em TRISB3_bit; conexões
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 variável código-chave
/ / Espera tecla a ser pressionada e liberada fazer / Kp / = Key pad_Key_ Press (); / / cód igo da l oja na va riável -c have kp kp = Keypad_ Key_Clic k (); / / código da loja na variáv el -chave kp enquanto (Kp!);
348
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
/ / 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: caso 6: caso 7: caso 8: caso 9: caso 10: caso 11: caso 12: caso 13: caso 14: caso 15: caso 16:
para a produção, transformação chave para o seu valor ASCII = 42; break;
/ / '*' / Descomente / este bloco para
= 48; break; = 35; break; + = 48;
/ / '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 / /
} 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);
/ / Mostra o valor ASCII chave em LCD
se (Cnt == 255) { cnt = 0; Lcd_Out (2, 10 ", }
/ / Se contador estouro varialble
WordToStr (txt CNT); Lcd_Out (2, 10, txt); } enquanto (1);
");
/ / Valor de Transformação contra a cadeia / / Valor expositor em LCD
}
Mikroelektronika - Soluções de software e hardware para o mundo embutido
349
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
4x4 para conexão da HMI regime
350
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
LCD BIBLIOTECA A mik roC PRO para PIC fornece uma biblioteca de comunicação com LCDs (com HD44780 controladores compatíveis) através do interface de 4 bits. Um exemplo de con-LCD nections é dada sobre o esquema na parte inferior desta página. Para criar um conjunto de personagens personalizadas LCD usam LCD personalizado Personagem Tool.
Externas dependências da Biblioteca LCD As seguintes variáveis deve ser definida em todo s os projetos usando Lcd sbit sfr extern LCD_RS:Biblioteca:
Descrição:
Exemplo:
Registre-line Select.
sbit LCD_RS em RB4_bit;
sbit sfr extern LCD_EN:
Habilitar linha.
sbit LCD_EN em RB5_bit;
sbit sfr extern LCD_D7;
Dados linha 7.
sbit LCD_D7 em RB3_bit;
sbit sfr extern LCD_D6;
Dados de 6 linhas.
sbit LCD_D6 em RB2_bit;
sbit sfr extern LCD_D5;
Dados de 5 linhas.
sbit LCD_D5 em RB1_bit;
sbit sfr extern LCD_D4; sbit sfr extern LCD_RS_Direction; sbit sfr extern LCD_EN_Direction;
Os dados de 4 linhas. Registr e Selecione a direção alfinete. Habilitar direção dos pinos.
sbit LCD_D4 em RB0_bit; sbit LCD_RS_D irection em TRISB4_bit; sbit LCD_EN_D irection em TRISB5_bit;
sbit sfr extern LCD_D7_Direction;
Dados de 7 pinos direção.
sbit LCD_D7_D irection em TRISB3_bit;
sbit sfr extern LCD_D6_Direction;
Dados de 6 pinos de direção. sbit LCD_D6_D irection
sbit sfr extern LCD_D5_Direction;
Dados de 5 pinos de direção. sbit LCD_D5_D irection
sbit sfr extern LCD_D4_Direction;
Dados de 4 pinos de direção. sbit LCD_D4_D irection
em TRISB2_bit; em TRISB1_bit; em TRISB0_bit;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
351
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Rotinas da biblioteca - Lcd_Init - Lcd_Out - Lcd_Out_ - Lcd_Chr - Lcd_Chr_ - Lcd_Cmd
Lcd_Init Protótipo
vazio Lcd_Init ();
Retorna
Nada.
Descrição
Inicializa o módulo LCD.
Requer
As variáveis globais: - LCD_D7: Dados bit 7 - LCD_D6: Dados bit 6 - LCD_D5: Dados bit 5 - LCD_D4: Os dados de 4 bits - LCD_RS: Registo Select (dados / instruções) pinos de sinal - LCD_EN: Habilitar sinal do pino - Direção do pino Dado 7: LCD_D7_Direction - Direção dos Dados de 6 pinos: LCD_D6_Direction - Direção dos Dados 5 pinos: LCD_D5_Direction - Direção dos Dados de 4 pinos: LCD_D4_Direction - LCD_RS_Direction: Direção do Registo Selecione pinos - LCD_EN_Direction: Direção do sinal Enable pin devem ser definidas antes de utilizar esta função.
Exemplo
352
/ / Configurações de pinagem Lcd sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D7 em RB3_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D4 em RB0_bit; / / Direção Pin sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D7_Direction em TRISB3_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D4_Direction em TRISB0_bit; ... Lcd_Init ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Lcd_Out Protótipo
vazio Lcd_Out (char linha, char coluna, char * Texto);
Retorna
Nada. Imprime texto na tela LCD a partir de deter mi nada posição. Ambas as variáveis
Descrição
string e-litro als pode ser ado como um texto. Parâmetros:
Requer Exemplo
- linha: número da linha de partida posição - coluna: número da coluna a partir posição - texto: texto a ser escrito O módulo 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_ Protótipo
vazio Lcd_Out_ (char * Texto);
Retorna
Nada.
Descrição
Imprime texto na tela LCD na posição atual do cursor. Ambas as variáveis e literais string pode ser ado como um texto. Parâmetros:
Requer
- texto: texto a ser escrito O módulo LCD deve ser inicializado. Veja rotina Lcd_Init.
Exemplo
/ / Escreve o texto "Aqui!" na posição atual do cursor: Lcd_Out_ ("Aqui!");
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
353
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Lcd_Chr Protótipo
vazio Lcd_Chr (char linha, char coluna, char out_char);
Retorna
Nada. Imprime caracter es em LCD na posição especifi c ada. Ambas as variáveis e literais
Descrição
podem ser ado como um personagem. Parâmetros:
Requer Exemplo
- linha: escrito Posição de linha número - coluna: escrever o número da coluna posição - out_char: caractere a ser escrito O módulo LCD deve ser inicializado. Veja rotina Lcd_Init. / / Escreve caracter "i" na linha 2, coluna 3: Lcd_Chr (2, 3, 'i');
Lcd_Chr_ Protótipo
vazio Lcd_Chr_ (char out_char);
Retorna
Nada. Imprime caracteres em LCD na posição atual do cursor. Ambas as variáveis e
Descrição
literais pode ser ado como um personagem. Parâmetros:
Requer Exemplo
354
- out_char: caractere a ser escrito O módulo LCD deve ser inicializado. Veja rotina Lcd_Init. / / Escrever "e" caractere na posição atual do cursor: Lcd_Chr_ ('e');
Mikroelektronika - Softwares e soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Lcd_Cmd Protótipo
vazio Lcd_Cmd (char out_char);
Retorna
Nada. Envia comando para LCD. Parâmetros:
Descrição - out_char: comando a ser enviado Nota: Cons tantes pré-defi ni das podem ser ados para a função, consul te Requer Exemplo
Disponív el LCD O módulo LCD deve ser inicializado. Veja a tabela Lcd_Init. Comandos. / / Clear LCD: Lcd_Cmd (_LCD_CLEAR);
Disponível Comandos LCD Lcd Comando
Finalidade
LCD_FIRST_ROW
Move o cursor para a linha 1
LCD_SECOND_ROW
Move o cursor para a linha 2
LCD_THIRD_ROW
Move o cursor para a 3 ª fila
LCD_FOURTH_ROW
Move o cursor para a linha 4
LCD_CLEAR
O visor claro
LCD_RETURN_HOME LCD_CURSOR_OFF
Retornar cursor para a posição inicial, retorna uma tela deslocado para sua posição original posição. Desligue Mostrar o cursordados RAM não é afetada.
LCD_UNDERLINE_ON
Sublinhar o cursor em
LCD_BLINK_CURSOR_ON
Intermitência do cursor em
LCD_MOVE_CURSOR_LEFT
Move o cursor para esquerda sem alterar RAM exibir dados
LCD_MOVE_CURSOR_RIGHT
Mover cursor para direita sem alterar a RAM de dados de exibição
LCD_TURN_ON
Vire a tela LCD
LCD_TURN_OFF
Ligue o monitor LCD
LCD_SHIFT_LEFT
Shift display esquerdo, sem alterar RAM exibir dados
LCD_SHIFT_RIGHT
Shift direito de exibição sem alterar RAM exibição de dados
Mikroelektronika - Soluções de software e hardware para o mundo embutido
355
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca O código a seguir demonstra o uso da rotinas Lcd Biblioteca: / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD char char char char
txt1 txt2 txt3 txt4
[] [] [] []
= = = =
"MikroElektronika"; "EasyPIC5"; "Lcd4bit"; "Exemplo";
char i;
/ / Variável do laço
vazio Move_Delay () { Delay_ms (500); }
/ / Função usada para o texto em movimento / / Você pode alterar a velocidade de movimento aqui
vazio main () { TRISB = 0; PORTB = 0xFF; TRISB = 0xff; ANSEL = 0; ANSELH = 0; Lcd_Init ();
356
/ / Configurar um pinos como I / O digital / / Inicializar LCD
Lcd_Cmd (_LCD_CLEAR); Lcd_Cmd (_LCD_CURSOR_OFF); Lcd_Out (1,6, txt3);
/ / Exibe Limpar / Cursor / off / / Escreve o texto na primeira linha
Lcd_Out (2,6, txt4); Delay_ms (2000); Lcd_Cmd (_LCD_CLEAR);
/ / Escreve o texto na segunda linha
Lcd_Out (1,1, txt1); Lcd_Out (2,5, txt2);
/ / Escreve o texto em primeiro linha / / Escreve o texto na segunda linha
/ / Exibe Limpar
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
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 (); } / / Loop infinito while (1) { for (i = 0; i <8; i + +) { / / Move o texto para a esquerda 7 vezes Lcd_Cmd (_LCD_SHIFT_LEFT); Move_Delay (); } for (i = 0; i <8; i + +) {/ / Move o texto à direita 7 vezes Lcd_Cmd (_LCD_SHIFT_RIGHT); Move_Delay (); } } }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
357
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas conexão HW
LCD conexão HW
358
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
MANCHESTER BIBLIOTECA DO CÓDIGO A mik roC PRO para PIC fornece uma biblioteca para manipulação Manchester sinais codificados. O código de Manchester é um código em que os dados e sinais de clock são combinados para formar um único fluxo de dados de auto-sincronização, cada bit codificado contém uma transição no ponto médio de um período de pouco, a direção da transição determina se o bit é 0 ou 1, o segundo semestre é o valor do bit verdade e no primeiro semestre é o complemento de o valor do bit verdade (como mostrado na figura abaixo).
Notas: O Manchester recebe rotinas são o bloqueio de chamadas (Man_Receive_Init
e Man_Synchro). Isto significa que a MCU irá esperar até que a tarefa tem sido per-
formados (por exemplo, byte é recebido, a sincronização alcançados, etc.) Nota: Manchester biblioteca de código implementa atividades baseadas em tempo, por isso interrompe necessidade a ser desativado quando usá-lo.
As dependências externas do Manchester Code Library
Mikr oele ktro nika Solu ções de soft ware e hard ware para o mun do emb utido
359
As seguin te s variáveis deve ser definida em todos Descrição: os proECTS com Manchester sbit sfr extern MANReceber linha. RXPIN;Biblioteca de sbit sfrcódigo: extern MANlinha de transmissão. TXPIN; sbit sfr extern MANRXPIN_Direction; sbit sfr extern MANTXPIN_Direction;
Direção do recebi mento do
Exemplo:
sbit MANRXPIN em RC0_bit; sbit MANTXPIN em RC1_bit; sbit MANRXPIN_Direction em TRISC0_bit;
pino. sbit MANTXPIN_Direction Direção do pino de transmissão. em TRISC1_bit;
CAPÍTULO 7 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 são para uso interno, compilador só: - Manchester_0 - Manchester_1 - Manchester_Out
Man_Receive_Init Protótipo Retorna
Descrição
unsigned int Man_Receive_Init ();
- 0 - Se a inicialização e sincronização foram bem sucedidas. - 1 - Após a sincronização sem êxito. - 255 - Aquando usuário abortar. A função de receptor configura o pino e realiza processo de sincronização no Para recuperar a taxa de transmissão do sinal de entrada. Nota: Em caso de múltipl os erros persistentes na recepç ão, o usuário deve chamar esse As variáveis globais: rotina uma vez ou Man_Synchro rotina para permitir a sincronização.
Requer
MANRXPIN: Receber linha MANRXPIN_Direction: Direção do pino de recepção
devem ser definidas antes de utilizar esta função.
Exemplo
360
/ / Inicializar Receptor sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; ... Man_Receive_Init ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Man_Receive Protótipo
unsigned char Man_Receive (unsigned char * Erro);
Retorna
Um byte ler a partir do sinal de entrada. A função extrai um byte a partir do sinal de entrada.
Descrição
Parâmetros: - erro: erro bandeira. Se o formato do sinal não coincide com o esperado, o erro
Requer
Exemplo
pavilhão Para utilizar esta função, o usuário deve preparar o MCU para o recebimento. será definido como não-zero. Veja Man_Receive_Init. unsigned char dados = 0, erro = 0; ... = dados Man_Receive (e erro); se (Erro) {/ * Tratamento de erros /}
Man_Send_Init Protótipo
vazio Man_Send_Init ();
Retorna
Nada.
Descrição
A função configura Transmissor pino. As variáveis globais:
Requer
MANTXPIN: linha de transmissão MANTXPIN_Direction: Direção do pino de transmissão
devem ser definidas antes de utilizar esta função.
Exemplo
/ / Inicializar do transmissor: sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; ... Man_Send_Init ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
361
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Man_Send Protótipo
vazio Man_Send (unsigned char tr_data);
Retorna
Nada. Envia um byte.
Descrição
Parâmetros: - tr_data: dados a serem enviados Nota: Baud taxa utilizada é de 500 bps.
Requer
Para utilizar esta função, o usuário deve preparar o MCU para o envio. Veja Man_Send_Init.
Exemplo
unsigned char msg; ... Man_Send (msg);
Man_Synchro Protótipo Retorna Descrição
362
unsigned char Man_Synchro ();
- 255 - Se a sincronização não foi bem sucedida. - Metade do comprimento de bit manchester, expressas em múltiplos de 10us - a susincronização de sucesso. Medidas de metade do comprimento do bit manchester com resolução 10us.
Requer
Para utilizar esta função, primeiro você deve preparar o MCU para o recebimento. Veja Man_Receive_Init. unsigned int man__half_bit_len;
Exemplo
... man__half_bit_len Man_Synchro = ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Man_Break Protótipo
vazio Man_Break ();
Retorna
Nada.
Descrição
Man_Receive está bloqueando a rotina e ele pode bloquear o fluxo do programa. Chame esse rotina de interrupç ão para desbloquear a execução do programa. Este mecanis m o é simlhantes ao WDT.
Requer
Nota: As interrupções devem ser desativados antes de usar o Manchester Nada. char data1, rotinas de novoerro, contador = 0; vazio interrupção { página). (Ver nota no topo desta se (INTCON.T0IF) { se (Contador> = 20) { Man_Break (); contador = 0; / / zerar o contador } mais contador + +; / / incrementa contador INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupção }
Exemplo
} vazio main () { OPTION_REG = 0x04; / prescaler TMR0 / set a 1:32 ... Man_Receive_Init (); ... / / Tenta Man_Receive com bloqueio de mecanismo de prevenção INTCON.GIE = 1 / / Global interrupção permitir INTCON.T0IE = 1 / / Enable estouro Timer0 interrupção data1 = Man_Receive (e erro); INTCON.GIE = 0; / / Global interrupção desativar ... }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
363
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
O código a seguir é o código para o receptor de Manchester, que mostra como usar o Manchester Biblioteca para recepção dos dados: / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD / / Conexões Manchester módulo sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; / / Fim módulo Manchester conexões char erro, ErrorCount, de temperatura; vazio main () { ErrorCount = 0; ANSEL = 0; ANSELH = 0; TRISC.F5 = 0; Lcd_Init (); Lcd_Cmd (_LCD_CLEAR);
/ / Configurar um pinos como I / O digital
/ / Inicializar LCD / / Clear LCD
Man_Receive_Init ();
/ / Inicializar Receptor
enquanto (1) {
/ / Loop infinito
Lcd_Cmd (_LCD_FIRST_ROW);
/ / Move o cursor para a linha 1
enquanto (1) {/ / Espera o "start" byte temp = Man_Receive (& error) / / byte tenta receber se (Temp == 0x0B) / / byte "Iniciar", veja o exemplo do Transmissor break; / / Nós temos a seqüência de partida
364
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas se (Erro) break; }
/ / Saída para que não loop para sempre
fazer { temp = Man_Receive (& error) / / byte Tentativa receber se (Erro) {/ / Se o erro ocorreu Lcd_Chr_ ('?'); / / Escreve ponto de interrogação no LCD ErrorCount + + / / Update erro contra se (ErrorCou nt> 20) {/ / Em c aso de v ários er ros temp = Man_Synchro (); / / 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 byt e "End" foi recebida (ver Transmissor exemplo) Lcd_Chr_ (temp) / / não escrever byte recebido em LCD } Delay_ms (25); } enquanto (Temp = 0x0E!); / Sair / Se byte "End" foi recebido do loop } }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
365
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
O código a seguir é o código para o transmissor de Manchester, que mostra como usar o Manchester Biblioteca de transmissão de dados: / / Conexões Manchester módulo sbit MANRXPIN em RC0_bit; sbit MANRXPIN_Direction em TRISC0_bit; sbit MANTXPIN em RC1_bit; sbit MANTXPIN_Direction em TRISC1_bit; / / Fim conexões Manchester módulo char índice, de caráter; char s1 [] = "mikroElektronika"; vazio main () { Man_Send_Init ();
/ / Inicializar transmissor
enquanto (1) { Man_Send (0x0B); Delay_ms (100);
/ / Loop infinito / / Enviar "start" byte / / Espera por um tempo
caracter = s1 [0]; = índice 0; enquanto (Personagem) { Man_Send (personagem); Delay_ms (90); index + +; caracter = s1 [índice]; } Man_Send (0x0E); Delay_ms (1000);
/ / / / / / /
/ / / / / / /
Tome primeiro char da string Inicializar variável índice String termina com zero Enviar caráter Aguarde um momento Incrementar variável índice Leve o próximo caractere da string
/ / Enviar "fim" byte
} }
366
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Exemplo de conexão
Conexão simples transmissor
Simples Receptor conexão
Mikroelektronika - Soluções de software e hardware para o mundo embutido
367
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas MULTI MEDIA LIBRARY CARD
O Multi Media Card (MMC) é uma memória flash padrão de cartão. cartões MMC são curatualmente disponível nos tamanhos até e incluindo 1 GB, e são usados em celulares, mp3 players, câmeras digitais e PDA's. mik roC PRO para PIC fornece uma biblioteca para ar dados sobre Multi Media Card via SPI biblioteca communication.This também a cartões SD (Secure Digital) de memória.
Secure Digital Card Secure Digital (SD) é um cartão de memória flash padrão, baseado na velha Multi Media Card (MMC) de formato. Os cartões SD estão atualmente disponíveis em tamanhos de até 2 GB, inclusive, e são usados em celulares, mp3 players, câmeras digitais, PDAs e. Notas: - Biblioteca trabalha com a família PIC18 só; - A biblioteca utiliza o módulo de comunicação SPI. O us uário deve inicializar SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. - Para MCUs com dois módulos SPI é possível inicializar ambos e em seguida, mudar usando o SPI_Set_Active () rotina. - Rotinas para manipulação de arquivos só podem ser utilizados com sistema de arquivos FAT16. - Funções de biblioteca criar e ler arquivos no diretório raiz só; - Funções de biblioteca popular ambas as tabelas e FAT1 FAT2 ao escrever em arquivos, mas o arquivo de dados está a ser lido da tabela FAT1 só, ou seja, não há recuperação se FAT1 tabela está corrompido. Nota: O mód u lo SPI tem de ser inicializ ad o atrav és com os seguintes parâmetros:
SPI1_Ini t_Advanc ed rotina
- Mestrado SPI - Modo de 8bit - prescaler primária 16 - Escravo Selecione deficientes - dados amostrados no meio de dados em tempo de saída - relógio de marcha lenta - saída de dados Serial mudanças na transição do estado inativo para ativo relógio Estado relógio SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV16, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH), Deve ser chamado antes de inicializar
Mmc_Init.
368
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Nota: Uma vez o cartão MMC / SD é inicializado, o usuário poderá reinicializar SPI em maior velocidade. Veja o Mmc_Init e rotinas Mmc_Fat_Init.
As dependências externas do MMC Biblioteca As seguintes variáveis devem ser definida em todos os projectos sbit sfr extern usando a biblioteca Mmc_Chip_Select; MMC: sbit sfr extern Mmc_Chip_Select_Direction;
Descrição: Chip pinos de seleção. Direção 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 manipulação de arquivos: - Mmc_Fat_Init - Mmc_Fat_QuickFormat - Mmc_Fat_Assign - Mmc_Fat_Reset - Mmc_Fat_Read - Mmc_Fat_Rewrite - Mmc_Fat_Append - Mmc_Fat_Delete - Mmc_Fat_Write - Mmc_Fat_Set_File_Date - Mmc_Fat_Get_File_Date - Mmc_Fat_Get_File_Size - Mmc_Fat_Get_Swap_File
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
369
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Mmc_Init Protótipo
unsigned char Mmc_Init ();
Retorna
- 0 - Se o cartão SD / MMC foi detectado e inicializado com sucesso - 1 - Caso contrário
Descrição
Inicializa hardwar e de comuni c aç ã o SPI; A função retorna 1 se MMC é presentes e com sucesso inicializado, caso contrário retorna 0. Mmc_Init precisa ser chamada antes de usar outras funções deste biblioteca. As variáveis globais:
Requer
- Mmc_Chip_Select: Chip Selecionar linha - Direção do pino de Chip Select: Mmc_Chip_Select_Direct ion devem ser definidas antes de utilizar esta função.
Exemplo
/ / MMC módulo de conexões sbit sfr Mmc_Chip_Select em RC2_bit; sfr sbit Mmc_Chip_Select_Direction em TRISC2_bit; / / MMC módulo de conexões ... SPI1_Init (); = erro Mmc_Init (); / / linha de inicialização com o CS em RC2_bit
Mmc_Read_Sector Protótipo
unsigned char Mmc_Read_Sector (unsigned long sector, dbuff char *);
Retorna
Retorna 0 se ler era bem sucedida, ou 1 se ocorreu um erro.
Descrição
Função lê um setor (512 bytes) a partir do cartão MMC no endereço sector sector. Ler dados s ão ar mazenados na matriz de dados. A função retorna 0 se ler foi bem sucedida,
370
Requer
ou 1 se ocorreu um erro. Biblioteca precisa ser inicializado, veja Mmc_Init.
Exemplo
= erro Mmc_Read_Sector (sector, dados);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Mmc_Write_Sector Protótipo
unsigned char Mmc_Write_Sector (unsigned long sector, char * Dbuff);
Retorna
Retorna 0 se escrever bem-sucedida; retorna 1 se houve erro no envio comando de escrita; retorna 2 se houve um erro na escrita.
Requer
Função grava 512 bytes de dados a MMC no endereç o sector sector. A função retorna 0 se gravação foi bem sucedida, ou 1 se houver um erro no envio comando de escrita, ou 2, se houve um erro na escrita. Biblioteca precisa ser inicializado, veja Mmc_Init.
Exemplo
erro: = Mmc_Write_Sector (sector, dados);
Descrição
Mmc_Read_Cid Protótipo
unsigned char Mmc_Read_Cid (char data_for_s *);
Retorna
Retorna 0 se ler foi bem sucedida, ou 1 se ocorreu um erro.
Descrição
Função lê registo CID e retorna 16 bytes de conteúdo em
Requer
Biblioteca precisa ser inicializado, veja Mmc_Init.
Exemplo
= erro Mmc_Read_Cid (dados);
data_for_s.
Mmc_Read_Csd Protótipo
unsigned char Mmc_Read_Csd (char data_for_s *);
Retorna
Retorna 0 se ler foi bem sucedida, ou 1 se ocorreu um erro.
Descrição
Função lê registrar CSD e retorna 16 bytes de conteúdo em
Requer
Biblioteca precisa ser inicializado, veja Mmc_Init.
Exemplo
= erro Mmc_Read_Csd (dados);
data_for_s.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
371
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Mmc_Fat_Init Protótipo
unsigned short Mmc_Fat_Init ();
Retorna
- 0 - Se o cartão SD / MMC foi detectado e inicializado com sucesso - 1 - Se o setor de inicialização FAT16 não foi encontrado - 255 - Se o cartão SD / MMC não foi detectada
Descrição
Requer
Inicializa cartão SD / MMC, lê SD / MMC setor de inicialização FAT16 e extratos necess ádados necessárias necessários para a biblioteca. Nota: Cartão SD / MMC tem de ser formatado para FAT16 sistema de As variáveis globais: arquivos. - Mmc_Chip_Select: Chip Selecionar linha - Direção do pino de Chip Select: Mmc_Chip_Select_Direct ion devem ser definidas antes de utilizar esta função. O módul o de hardwar e adequado SPI deve ser previamente inicializada. Veja o SPI1_Init, rotinas SPI1_Init_Advanced. / / MMC módulo de conexões sbit sfr Mmc_Chip_Select em RC2_bit; sbit sfr Mmc_Chip_Select_Direction em TRISC2_bit; / / Módulo MMC conexões / / Inicializar SPI1 módulo e ponteiro conjunto (s) para SPI1 funções
Exemplo
SPI1_Init_Advanced (MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); / / Use fat16 formatação rápida, em vez de rotina init se uma formatação é necessário se (! Mmc_Fat_Init ()) { / / Reinicializa SPI1 a uma velocidade maior SPI1_Init_Advanced (MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); ... }
372
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Mmc_Fat_QuickFormat Protótipo
unsigned char Mmc_Fat_QuickFormat (char * Mmc_fat_label);
Retorna
- 0 - Se o cartão SD / MMC foi detectado e inicializado com sucesso - 1 - Se o formato FAT16 foi unseccessful - 255 - Se o cartão SD / MMC não foi detectada
Formatos para FAT16 e inicializa cartão SD / MMC. Parâmetros:
Descrição
- mmc_fat_label: rótulo de volume (11 caracteres). Se menos de 11 catros são forneci d os , o rótulo será preenc hi d o com espaç os . Se a string null é ad o volume não será identificado Nota: Esta rotina pode ser utilizad o em substitu ição ou em conjunto com rou-Mmc _F at_Init tine.
Requer
Nota: Se o cartão SD / MMC já contém um setor de inicialização válido, ela A hardware apropriado módulo SPI deve ser previamente inicializada. permanecerá /tabelas / Inicializar SPI1 módulo (s) de para SPI1 funções inalter adas (excetoe ponteiro o campoconjunto de rótulo volume) e apenas FAT e raiz será SPI1_Init_Advanced (MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, apagados. Além disso, o rótulo de novo volume será definido. CLK_IDLE_LOW, LOW_2_HIGH);
Exemplo
/ / Formato e inicializar MMC / SD c artão e MMC_FAT16 biblio teca glob als se (! Mmc_Fat_QuickFormat (& mmc_fat_label)) { / / Reinicializar o módulo SPI a uma velocidade maior (principal alteração prescaler). SPI1_Init_Advanced (MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); ... }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
373
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Mmc_Fat_Assign Protótipo
unsigned short Mmc_Fat_Assign (char * Nome do arquivo, char file_cre_attr);
Retorna
- 1 - Se o arquivo já existe ou o arquivo não existe, mas novo arquivo é criado. - 0 - Se arquivo não existe e nenhum arquivo novo é criado.
Atribui arquivo para operaç ões de arquivo (ler, escrev er , apagar ...). Todos os teatros arquivo subseqüe nteções será aplicado sobre o arquivo designado.
Descrição
Parâmetros: - filename: nome do arquivo que deve ser atribuído para operaç ões de ar quivo. O nome do arquivo devem estar em formato DOS 8.3 (Nome_do_ar quiv o.ex tensão). O nome do arquivo e extensão será automatic am ente preenc hi do com espaços pela bibliotec a, se tiverem menos de compri mento necessária ("mikro.tx", ou seja - ". mikro tx">), assim o usuário não faz tem que tomar cuidado com isso. O nome do arquivo e extensão são maiúsculas e minúsculas. A biblioteca irá convertê-los para caso apropriado automaticamente, assim que o usuário não tem que tomar cuidado com isso. Além disso, em Para manter a compatibilidade com a primeira versão do presente biblioteca, nomes de Bit podem Másca Descrição arquivo ra 0 0x01 como string em maiúsculas Leia ser introduzida de 11apenas bytes de comprimento, com nenhum ponto caráter 1 0x02 Oculto entre2o nome0x04 do arquivo e extensão (ie "MIKROELETXT" -> MIKROELE.TXT). Neste Sistema caso 3 últimos caracteres da string são considerados arquivos extensão. 3 0x08 Volume Label - file_cre_attr: 4 0x10 bandeiras e criação do arquivo Subdiretório attributs. Cada bit corresponde 5 0x20 Arquivo a 6 0x40 Dispositivo (uso interno somente, nunca encontrado atribuíveis arquivo apropriado: no bandeir disco) a criação. Se o arquiv o não existe e este Arquivo 7 0x80 sinalizador estiver defini do, novo arquivo com nome especificado será criado.
Requer Exemplo
374
MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo. Veja Mmc_Fat_Init. / / Cria arquivo com atribuíveis arquivo se ele já não existe Mmc_Fat_Assign ('MIKROELE.TXT, 0xA0);
Nota: nomes de arquivo longos (LFN) não são ados. Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Mmc_Fat_Reset Protótipo
vazio Mmc_Fat_Reset (unsigned long * Tamanho);
Retorna
Nada.
Descrição
Procedi m ento redefi ne o ponteir o do arquivo (move para o início do arquiv o) do
Requer
atribuído arquivo, assim que o arquivo possa ser lido. Parâmetro tamanho lojas o tamanho arquivo atribuído, em bytes. O arquivo deve ser atribuído, consultedo Mmc_Fat_Assign.
Exemplo
Mmc_Fat_Reset (tamanho);
Mmc_Fat_Rewrite Protótipo
vazio Mmc_Fat_Rewrite ();
Retorna
Nada.
Descrição Requer
Procedi m ento redefi ne o pontei r o do arquiv o e limpa o atribuído arquiv o de dados para que novos pode ser escrito no atribuído, arquivo. consulte Mmc_Fat_Assign. O arquivo deve ser
Exemplo
Mmc_Fat_Rewrite;
Mmc_Fat_Append Protótipo
vazio Mmc_Fat_Append ();
Retorna
Nada.
Descrição Requer
O processo de mover o ponteiro do arquivo para o final de o arquivo atribuídos, de modo que os dados podem seratribuído, acrescentados aoMmc_Fat_Assign. arquivo. O arquivo deve ser consulte
Exemplo
Mmc_Fat_Append;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
375
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Mmc_Fat_Read Protótipo
vazio Mmc_Fat_Read (unsigned short * Bdata);
Retorna
Nada.
Descrição
Process o lê o byte no qual o ponteir o aponta para o arquiv o e armaz ena dados em dados de parâmetro. O ponteiro do arquivo aumenta automaticamente a cada chamada de
Requer
Mmc_Fat_Read. O arquiv o deve ser atribuíd o, consulte Mmc _F at_As si gn. Além disso, o ponteir o
Exemplo
do arquiv o deve ser iniMmc_Fat_Reset(mydata); ver; tialized. Mmc_Fat_Read
Mmc_Fat_Delete Protótipo
vazio Mmc_Fat_Delete ();
Retorna
Nada.
Descrição
Exclui atualmente atribuídos arquivo do cartão MMC / SD.
Requer
Exemplo
MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo. Veja Mmc_Fat_Init. O deveo ser atribuído anteriormente. Veja Mmc_Fat_Assign. / arquivo / Deletar arquivo atual Mmc_Fat_Delete ();
Mmc_Fat_Write Protótipo
vazio Mmc_Fat_Write (char * FData, não assinado data_len);
Retorna
Nada.
Descrição
Requer Exemplo
376
Procedi mento escreve um pedaç o de bytes (FData) para o arquivo atualmente atribuído, no posição do ponteiro de arquivo. O arquiv o deve ser atribuíd o, consulte Mmc _F at_As si gn. Além disso, o ponteir o do arquiv o deve ser initialized; ver Mmc_Fat_Append Mmc_Fat_Write (txt, 255); ou Mmc_Fat_Rewrite. Mmc_Fat_Write ('Olá mundo', 255);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Mmc_Fat_Set_File_Date Protótipo
vazio Mmc_Fat_Set_File_Date (unsigned int ano, unsigned short mês, unsigned short di a, unsign ed short horas, un signed sh ort minutos, unsigned short segundos);
Retorna
Nada.
Descrição Requer Exemplo
Grava timestamp sistema para um arquivo. Use essa rotina antes de cada gravar o arquivo; Caso contrário, o arquivo será anexado um timestamp A arquiv o deve ser atribuído, consulte Mmc_F at_A ssi gn. desconhecido. Além disso, o ponteir o do arquiv o deve ser iniMmc_Fat_Reset / / 01 de abrilver; detialized. 2005, 18:07:00 Mmc_Fat_Set_File_Date (2005, 4, 1, 18, 7, 0);
Mmc_Fat_Get_File_Date Protótipo
vazio Mmc_Fat_Get_File_Date (unsigned int * Ano, unsigned short * Mês, unsigned short * Dia, unsigned short * horas, unsigned short * Min);
Retorna
Nada.
Descrição
Recuper a a data ea hora para o arquiv o selecionad o. Segund os não estão sendo recuperado, uma vez que são escritas em incrementos de 2 seg.
Requer
O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.
Exemplo
/ / Obtém Data / hora do arquivo não assinado anos; char dat, MNTH, horas, minutos; ... nome_arquivo = "MYFILEABTXT"; Mmc_Fat_Assign (nome_arquivo); Mmc_Fat_Get_File_Date (tvh, MNTH, dat, horas, minutos);
Mmc_Fat_Get_File_Size Protótipo
unsigned long Mmc_Fat_Get_File_Size ();
Retorna
Esta função retorna o tamanho do arquivo ativo (em bytes).
Descrição
Recupera o tamanho de arquivo atualmente selecionado.
Requer
O arquivo deve ser atribuído, consulte Mmc_Fat_Assign.
Exemplo
/ / Obtém Data / hora do arquivo não assinado anos; char dat, MNTH, horas, minutos; ... file_name = "MYFILEXXTXT"; Mmc_Fat_Assign (nome_arquivo); mmc_size = Mmc_Fat_Get_File_Size;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
377
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Mmc_Fat_Get_Swap_File Protótipo
Retorna
unsigned long Mmc_Fat_Get_Swap_File (unsigned long * Sectors_cnt char nome do arquivo, char file_attr);
- Númer o do setor de partida para o arquiv o de swap recém- cri ado, se não foi o suficiente espaço livre na Cartão SD / MMC para criar arquivos de tamanho necessário. -Esta 0 - função De outra forma. para criar um arquiv o de swap de pré-nom e e tamanho do é usada MMC / SD. Se um arquivo com o nome especificado já existe na mídia, pesquisa consec utiv os para setor es irão ignorar setor es ocupados por esse arquiv o. Portanto, é recome nda-s e apagar o arquiv o como se ele existe antes de chamar essa função. Se não for apagada e ainda há bastante espaç o para novo arquivo de permuta, esta função irá apagar depois alocar espaço de memória novo para novo arquivo swap. O objetivo do arquivo de swap é fazer com que a leitura ea escrita para a mídia SD / MMC
Descrição
como rápido possível, usando o Mmc_Read_Sector () e Mmc_Write_Sector () funções diretamente, sem que possa causar danos ao sistema FAT. Trocar arquivos podem ser considerado como uma "janela" na mídia, onde o usuário pode livremente escrever / ler os dados. É objetiv o principal da bibliotec a mikroC é ser usado para a aquisiç ão rápida de dados , quando a aquisição de tempo crítico tiver terminado, os dados podem ser re-escrita em um "normal" arquivo, e formatado da maneira mais adequada. Parâmetros: - sectors_cnt: número de setores consecutivos que o usuário quer que o arquivo de swap para
ter. - filename: nome do arquivo que deve ser atribuído para operações de arquivo. O nome do arquivo
378
devem estar em formato DOS 8.3 (Nome_do_ar quiv o.ex tensão). O nome do arquivo e extensão será automaticamente preenchido com espaços pela biblioteca, se tiverem menos de compri m ento necess ári o (isto é, "mikro.tx " -> ". mikro tx"), para que o usuári o não possua a tomar cuidado -com isso. O enome do arquivo e extensãopara são Embedded maiúsculas eWorld minúsculas. A Mikroelektronika Software Soluções de hardware biblioteca será convert-los ao caso apropri ado automatic am ente, assim que o usuário não tem que cuidar de
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
- file_attr: bandeiras e criação do arquivo attributs. Cada bit corresponde a apro-
comeu atribuíveis ficheiro: Bit
Descrição
0
Másca ra 0x01
Descrição
1 2
0x02 0x04
Oculto Sistema
3
0x08
Volume Label
4 5 6
0x10 0x20 0x40
7
0x80
Leia apenas
Subdiretório Arquivo Dispositivo (uso interno somente, nunca encontrado no disco) Não utilizado
Nota: nomes de arquivo longos (LFN) não são ados. Requer
Exemplo
MMC / SD e MMC biblioteca deve ser inicializado para operações de arquivo. Veja Mmc_Fat_Init. //-------------- Tenta criar um arquivo de swap, cujo tamanho será no pelo menos 100 setores. / / Se for bem sucedido, ele envia o n º do setor de início mais de UART vazio M_Create_Swap_File () { size = Mmc_Fat_Get_Swap_File (100); se (Tamanho <> 0) { UART_Write (0xAA); UART_Write (Lo (tamanho)); UART_Write (Hi (tamanho)); UART_Write (Superior (tamanho)); UART_Write (Máxima (tamanho)); UART_Write (0xAA); } }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
379
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
O exemplo a seguir demonstra MMC teste biblioteca. Ao piscar, insira um Cartão SD / MMC para o módulo, quando deve receber a "Init-OK" mensagem. Depois, você pode experimentar com MMC ler e escrever funções e observar o resultados através do Terminal USART. / / MMC módulo de conexões sbit Mmc_Chip_Select em RC2_bit; sbit Mmc_Chip_Select_Direction em TRISC2_bit; / / Eof módulo de conexões MMC / / Variáveis para rotinas MMC unsigned char SectorData [512], / / Buffer para o setor MMC leitura / escrita unsigned char data_for_s [16] / / buffer para CID e registra CSD / / UART1 es crever u m texto e nova li nha (ali mentação de linha de reto rno + tra nsporte) vazio UART1_Write_Line (char * Uart_text) { UART1_Write_Text (uart_text); UART1_Write (13); UART1_Write (10); } / / Byte exibição em hexadecimal vazio PrintHex (unsigned char i) { unsigned char oi, eis; oi oi oi se eis se
= I & 0xF0; => Oi> 4; Oi + = '0 '; (Oi> '9 ') oi oi = 7; = (I & 0x0F) + '0 '; (Lo> '9 ') = lo lo 7;
/ / Nibble alto
/ / Nibble baixo
UART1_Write (oi); UART1_Write (eis); } vazio main () { const char FILL_CHAR 'm'; unsigned int i, SectorNo; char mmc_error; bit data_ok; ADCON1 | = 0x0F; CMCON | = 7;
/ / Configu rar um p inos com o digita l / / Desligue comparadores
/ / Inicializar UART1 módulo
380
Mikroelektronika - Softwares e soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
UART1_Init (19200); Delay_ms (10); UART1_Write_Line ("PIC-Started"); / relatório da I presentes / / Inicializar módulo SPI1 SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH); / / Inicializar um cartão MMC mmc_error Mmc_Init = (); if (mmc_error == 0) UART1_Write_Line (MMC Init-OK "); / / Se o MMC apresentar relatório mais UART1_Write_Line (MMC Init erro "); / / Se o relatório de erros / / Preencha buffer MMC com mesmos personagens for (i = 0; i <= 511; i + +) SectorData [i] = FILL_CHAR; / / Escreve sector mmc_error = Mmc_Write_Sector (SectorNo, SectorData); if (mmc_error == 0) UART1_Write_Line ("Escreva-OK"); mais / / Se houver erros ..... UART1_Write_Line ("Write Error"); / / Leitura da CID registo mmc_error = Mmc_Read_Cid (data_for_s); if (mmc_error == 0) { UART1_Write_Text ("CID:"); for (i = 0; i <= 15; i + +) PrintHex (data_for_s [i]); UART1_Write_Line (""); } mais UART1_Write_Line (CID-erro "); / / Leitura da CSD registo mmc_error = Mmc_Read_Csd (data_for_s); if (mmc_error == 0) { UART1_Write_Text (CSD: "); for (i = 0; i <= 15; i + +) PrintHex (data_for_s [i]); UART1_Write_Line (""); } mais UART1_Write_Line (CSD erro "); / / Ler sector
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
381
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas mmc_error = Mmc_Read_Sector (SectorNo, SectorData); if (mmc_error == 0) { UART1_Write_Line ("Read-OK"); / / Os dados correspondem Chech data_ok = 1; for (i = 0; i <= 511; i + +) { UART1_Write (SectorData [i]); se (SectorData [i]! = FILL_CHAR) { data_ok = 0; break; } } UART1_Write_Line (""); se (Data_ok) UART1_Write_Line ("Content-OK"); mais UART1_Write_Line ("Erro de conteúdo"); } mais / / Se houver erros ..... UART1_Write_Line ("Erro de leitura"); / / Fim do teste do Sinal UART1_Write_Line ("O Fim do teste."); }
382
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
interface MMC
MMC vista traseira
Mikroelektronika - Soluções de software e hardware para o mundo embutido
383
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas ONEWIRE BIBLIOTECA
A biblioteca OneWire fornece rotinas para comunicação através da OneWire Dallas protocolo, por exemplo, com DS18x20 termômetro digital. OneWire é um Mestre / Escravo protocolo, e toda a comunicação cabeamento necessário é um único fio. OneWire habilitado dispositivos devem ter drivers de coletor aberto (com um único resistor de pull -up) sobre o linha compartilhada de dados. Escravo no ônibus OneWire pode até mesmo chegar a sua fonte de alimentação da linha de dados. Para datasheet detalhadas sobre o dispositivo esquemático ver. Algumas características básicas deste protocolo são: - sistema único mestre, - baixo custo, - baixas taxas de transferência (até 16 kbps), - bastante longas distâncias (até 300 metros), - pequenos pacotes de dados de transferência. Cada dispositivo OneWire também tem um número de registo único de 64 bits (Dispositivo de 8 bits tipo, 48-bit número de série e de 8 bits CRC), para vários escravos podem coexistir na mesmo barramento. Note que a freqüência do oscilador FOSC precisa ser pelo menos 4MHz, a fim de utilizar o rotinas com os termômetros digitais Dallas. Nota: Esta biblioteca implementa as atividades baseadas em tempo, assim interrupções precisam ser disabled quando utilizando a biblioteca OneWire.
Rotinas da biblioteca - Ow_Reset - Ow_Read - Ow_Write
384
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Ow_Reset Protótipo
unsigned short Ow_Reset (unsigned short * Porto, não assinado pino curto);
Retorna
0 DS1820, se estiver presente, e 1 caso não esteja presente.
Descrição
Problem as sinal de reset OneWi r e para DS1820. Os parâmetr os da porta e especifi c ar o pino localização do oDS1820. Funciona com Dallas DS1820 sensor de temperatura apenas.
Requer Exemplo
Para repor o DS1820 que está ligado ao pino RA5: Ow_Reset (& PORTA, 5);
Ow_Read Protótipo
unsigned short Ow_Read (unsigned short * Porto, unsigned short pinos);
Retorna
Leitura de dados de um dispositivo externo sobre o barramento OneWire.
Descrição
Lê um byte de dados através do barramento OneWire.
Requer
Nada.
Exemplo
unsigned short tmp; ... tmp Ow_Read = (& PORTA, 5);
Ow_Write Protótipo
vazio Ow_Write (unsigned short * Por to, unsigned short pino, não assinado curto PAR);
Retorna
Nada.
Descrição
Grava um byte de dados do argumento ( par), através de ônibus OneWire.
Requer
Nada.
Exemplo
Ow_Write (& PORTA, 5, 0xCC);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
385
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
Este exemplo lê a temperatura usando DS18x20 ligado ao pino PORTA.B5. Após a restauração, MCU obtém a temperatura do sensor e imprime no mostrador. Faça Certifique-se de linha de tração PORTA.B5-up e para desligar os LEDs PORTA. / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit; sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD / / Definir TEMP_RES OLUTION a resoluç ão corre spondente de usad os DS18x20 sensor: / / 18S20: 9 (configuração padrão, pode ser 9,10,11, ou 12) / / 18B20: 12 const unsigned short TEMP_RESOLUTION = 9; char * Texto = "000.0000"; não assinado temp; vazio Display_Temperature (unsigned int temp2write) { const unsigned short RES_SHIFT TEMP_RESOLUTION = - 8; char temp_whole; unsigned int temp_fraction; / / Verificar se a temperatura é negativa se (Temp2write & 0x8000) { texto [0] = '-'; temp2write temp2write = ~ + 1; } / / Extrair temp_whole temp_whole temp2write => RES_SHIFT; / / Converte para caracteres temp_whole se (Temp_whole/100) texto [0] = temp_whole/100 + 48; mais texto [0] = '0 ';
386
Mikroelektronika - Softwares e soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
texto [1] =% (temp_whole/10) 10 + 48; texto [2] = temp_whole% 10 + 48;
/ / Extrair dezenas dígitos / / Extrair os dígitos
/ / 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_f raction/1 000 48 / / Extra ir milhar es de dí gitos texto [5] =% (temp_fraction/100) 10 + 48; / centenas / Extrato dígitos texto [6] =% (temp_fraction/10) 10 + 48; / dez / Extrair dígitos texto [7] =% temp_fraction 10 + 48; / os / Extrair dígitos / Temperatura / impressão em LCD Lcd_Out (2, 5, texto); } vazio main () { ANSEL = 0; / Configurar / AN pinos como I / O digital ANSELH = 0; Lcd_Init (); / / Inicializar LCD Lcd_Cmd (_LCD_CLEAR); / Clear LCD Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off Lcd_Out (1, 1, "Temperatura:"); / / Caractere grau Print, 'C' para Centigrades Lcd_Chr (2,13,223); / LCD exibe diferentes têm diferentes características código para o grau / / Se você ver letra grega alfa tente digitar 178 ao invés de 223 Lcd_Chr (2,14, 'C'); //--- Loop principal fazer { //--- Realizar a leitura da temperatura Ow_Reset (& PORTA, 5); / / Sinal de reset Onewire Ow_Write (& PORTA, 5, 0xCC); / / SKIP_ROM comando Emissão Ow_Write (& PORTA, 5, 0x44); / / Emita o comando CONVERT _T Delay_us (120); Ow_Reset (& PORTA, 5); Ow_Write (& PORTA, 5, 0xCC); Ow_Write (& PORTA, 5, 0xBE);
/ / SKIP_ROM comando Emissão / / Comando Emissão READ_SCRATCHPAD
temp = Ow_Read (& PORTA, 5); temp = (Ow_Read (& PORTE, 5) <<8) + temp; //--- Format eo resultado aparecer no visor LCD Display_Temperature (temp); Delay_ms (500); } enquanto (1); }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
387
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
Exemplo de conexão DS1820
388
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
PORTO BIBLIOTECA EXPANDER A mik roC PRO para PIC fornece uma biblioteca para comunicação com o do Microchip Porto Expander M23S17 via interface SPI. Conexões do MCU PIC compatível e M23S17 é dado no esquema na parte inferior desta página. Nota: A Biblioteca não usar a porta Expander interrupções. Nota: O hardware apropriado módulo SPI deve ser inicializada antes de usar qualquer a biblioteca de rotinas Porto Expander. Consulte a Biblioteca SPI.
As dependências externas do Porto Expander Biblioteca As seguintes variáveis deve ser definida em Descrição: todos os projetos que utilizam Porto sbit sfr extern linha de reposição. Biblioteca Expander: SPExpanderRST; sbit sfr extern SPExpanderCS;
Chip linha Select.
sbit sfr extern SPExpanderRST_Direction;
Direção do pino de Reset.
sbit sfr extern SPExpanderCS_Direction;
Direção do Chip Selecione pino.
Exemplo:
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 - Soluções de software e hardware para o mundo embutido
389
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Expander_Init Protótipo
vazio Expander_Init (char ModuleAddress);
Retorna
Nada. Inicializa Porto Expander utilizando a comunicação SPI. As configurações de porta Expander módulo:
Descrição
- Hardware de endereçamento habilitada - Automática de endereços ponteiro de incremento (modo de byte) com deficiência - BANK_0 endereçamento de registro - Taxa de variação habilitado Parâmetros: - ModuleAddress: Port endereço de hardware Expander, ver esquema na final desta página As variáveis globais: - SPExpanderCS: Chip Selecionar linha
Requer
- SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset
devem ser definidas antes de utilizar esta função. módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas. / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander
Exemplo
... ANSEL = 0; Configurar / / AN pinos como I / O digital ANSELH = 0; / / Se a porta Expander Biblioteca utiliza o módulo SPI SPI1_Init (); / / Inicializa o módulo SPI usado com PortExpander Expander_Init (0); / / Inicializar Expander Porto
390
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Expander_Read_Byte Protótipo
char Expander_Read_Byte (char ModuleAddress, char RegAddress);
Retorna
Byte lido. A função lê byte a partir de Port Expander.
Descrição
Parâmetros: - ModuleAddress: Porto endereço de hardware Expander, consulte esquemática na final desta página - RegAddress: Endereço Port Expander do registo interno
Requer
Porto Expander deve ser inicializado. Veja Expander_Init.
Exemplo
/ / Lê um byte do registo Porto expansor char read_data; ... read_data = Expander_Read_Byte (0,1);
Expander_Write_Byte Protótipo
vazio Expander_Write_Byte (char ModuleAddress, char RegAddress, char Dados);
Retorna
Nada. Rotina escreve um byte para Porto Expander. Parâmetros:
Descrição - ModuleAddress: Porto endereço de hardware Expander, consulte esquemática na final desta página - RegAddress: Endereço Port Expander do registo interno - Data_: dados a serem gravados Requer
Porto Expander deve ser inicializado. Veja Expander_Init.
Exemplo
/ / Escreve um byte para registrar o Expander do Porto Expander_Write_Byte (0,1, $ FF);
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
391
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Expander_Read_PortA Protótipo
char Expand er_Read_ PortA (c har Modu leAddre ss);
Retorna
Byte lido. A função lê byte da Porta Porta expansor.
Descrição
Parâmetros: - ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página Porto Expander deve ser inicializado. Veja Expander_Init.
Requer
Exemplo
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_ Direction PortA (0, 0 xFF); p orta / ex pansor / set para ser introduzidas ... read_data = Expander_Read_PortA (0);
Expander_Read_PortB Protótipo
char Expand er_Read_ PortB (c har Modu leAddre ss);
Retorna
Byte lido. A função lê bytes de PortB Porto expansor.
Descrição
Parâmetros: - ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página Porto Expander deve ser inicializado. Veja Expander_Init.
Requer
PortB Porto expans or deve ser configur ado como entrada. Veja Expander _S et_Di r ec/ / Ler um byte da PORTB Porto expansor tionPortB Expander_Set_DirectionPortAB e rotinas. char read_data;
Exemplo
392
... Expander_Set_DirectionPortB (0,0 xFF); / expansor / set's PORTB a entrada ... read_data = Expander_Read_PortB (0);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Expander_Read_PortAB Protótipo
unsigned int Expander_Read_PortAB (char ModuleAddress);
Retorna
Palavra lida.
Descrição
A funç ão lê a palavr a a partir dos portos de Porto Expander. Porta leituras estão no maior byte do resultado. leituras PortB são o byte inferior do resultado. Parâmetros: - ModuleAddress: Porto endereço de hardware Expander, consulte esquemática na final Expander desta página Porto deve ser inicializado. Veja Expander_Init.
Requer
Exemplo
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_ Direction PortAB (0 ,0 xFFFF) ; porta / expansor / set's e PORTB a entrada ... read_data = Expander_Read_PortAB (0);
Expander_Write_PortA Protótipo
vazio Expander_Write_PortA (char ModuleAddress, char Data_);
Retorna
Nada. A função escreve byte para a Porta do Porto expansor.
Descrição
Parâmetros: - ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página - Data_: dados a serem gravados Porto Expander deve ser inicializado. Veja Expander_Init.
Requer
Porta Porta expansor deve ser configurado como saída. Veja Expander_Set_DirectionPortA Expander_Set_DirectionPortAB e rotinas. / / Escreve um byte no Porto PORTA expansor
Exemplo
... Expander_Set_DirectionPortA (0,0 x00); / expansor / set's porta de saída a ser ... Expander_Write_PortA (0, 0xAA);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
393
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Expander_Write_PortB Protótipo
vazio Expander_Write_PortB (char ModuleAddress, char Data_);
Retorna
Nada. A função escreve o byte para PortB Expander do Porto.
Descrição
Parâmetros: - ModuleAddress: Porto endereço de hardware expansor, ver esquema na final desta página - Dados: dados a serem gravados Porto Expander deve ser inicializado. Veja Expander_Init.
Requer
PortB Porto Expander deve ser configurado como saída. Veja Expander_Set_DirectionPortB Expander_Set_DirectionPortAB e rotinas. / / Escreve um byte para PORTB Porto expansor
Exemplo
... Expander_Set_DirectionPortB (0,0 x00); / expansor / set's PORTB a saída ... Expander_Write_PortB (0, 0x55);
Expander_Write_PortAB Protótipo
vazio Expander_Write_PortAB (char ModuleAddress, unsigned int Data_);
Retorna
Nada. A função escreve a palavra Porto expansor portos. Parâmetros:
Descrição - ModuleAddress: Porto endereço de hardware Expander, ver esquema na - Dados: dados a serem gravados. Os dados a serem gravados são ados em Porta Dados da
maior de bytes. Os dados a serem gravados para PortB são ados em byte inferior de Data
Porto Expander deve ser inicializado. Veja Expander_Init. Requer
Exemplo
394
Porta Porta Expander e PortB devem ser configurados como saídas. Veja Expander_Set_DirectionPortA, Expander_Set_DirectionPortB e Expander_Set_DirectionPortAB rotinas. / / Escreve um byte para PORTA Porto Expander e PORTB ... Expander_Set_DirectionPortAB (0,0 x0000); / expansor / set's Porta e PORTB a saída ... Expander_Write_PortAB (0, 0xAA55);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Expander_Set_DirectionPortA Protótipo
vazio Expander_Set_DirectionPortA (char ModuleAddress, char Data_);
Retorna
Nada. A função define Porta Porta expansor direção. Parâmetros:
Descrição
Requer Exemplo
- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página - Dados: dados a serem gravados para o registo direção Porta. Cada bit corresponde para os pinos do registo de Porta. bit Set configur a o corres pon ding pino como entrada. bit Cleared configur a o pino correspondente como uma saída. Porto Expander deve ser inicializado. Veja Expander_Init. / / Set Port Expander do Porta a saída Expander_Set_DirectionPortA (0,0 x00);
Expander_Set_DirectionPortB Protótipo
vazio Expander_Set_DirectionPortB (char ModuleAddress, char Data_);
Retorna
Nada. A função define direção Port Expander do PORTB. Parâmetros:
Descrição
Requer Exemplo
- ModuleAddress: Porto hardware Expander endereço, ver esquema na final desta página - Dados: dados a serem gravados para o registo direção PortB. Cada bit corresponde para os pinos do registo PORT B . bit Set configur a o corres po nding pino como entrada. bit Cleared configur a o pino correspondente como uma saída. Porto Expander deve ser inicializado. Veja Expander_Init. / / PORTB Set Port Expander para ser a entrada Expander_Set_DirectionPortB (0,0 xFF);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
395
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Expander_Set_DirectionPortAB Protótipo
vazio Expander_Set_DirectionPortAB (char ModuleAddress, não assinado int Direção);
Retorna
Nada. A função define Porta Porta Expander e direção PortB. Parâmetros:
Descrição
Requer Exemplo
- ModuleAddress: Porto Expander endereço de hardware, ver esquema na final desta página - Direção: dados a serem escritos aos registos direção. Dados a serem gravados para o Porta registo direção são ados em Direção de maior byte. Dados a serem por escrito à direcção PortB registo são adas em byte inferior de Direção. Cada bit corresponde ao pino apropri ado do registo Porta PortB /. bit Set configur a o pino correspondente como uma entrada. bit Cleared configur a o correscorrespondente pino como saída. Porto Expander deve ser inicializado. Veja Expander_Init. / / Porta Set Port Exp ander par a ser pro duzido e PORTB a e ntrada Expander_Set_DirectionPortAB (0,0 x00FF);
Expander_Set_PullUpsPortA Protótipo
vazio Expande r_Set_Pul lUpsPortA (char Mo duleAddre ss, char Data_);
Retorna
Nada. A função define Porta Porta expansora de puxar para cima / baixo resistores. Parâmetros:
Descrição
Requer Exemplo
396
- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página - Dados: dados para a escolha de puxar para cima / baixo configuração resistores. Cada bit corresponde ao pino apropriado do registo Porta. bit Set permite pull -up para o pino correspondente. Porto Expander deve ser inicializado. Veja Expander_Init. / / Porta Set Port Expander de resistores pull -up Expander_Set_PullUpsPortA (0, 0xFF);
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Expander_Set_PullUpsPortB Protótipo
vazio Expande r_Set_Pul lUpsPortB (char Mo duleAddre ss, char Data_);
Retorna
Nada. A função define PortB Porto expansor pull up / down resistores. Parâmetros:
Descrição
Requer Exemplo
- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página - Dados: dados para a escolha de puxar para cima / baixo configuração resistores. Cada bit corresponde ao pino apropriado do registo PORTB. bit Set permite pull-up para o pino Porto Expander devecorrespondente. ser inicializado. Veja Expander_Init. / / PORTB Set Port Expander de resistores pull -up Expander_Set_PullUpsPortB (0, 0xFF);
Expander_Set_PullUpsPortAB Protótipo
vazio Expander_Set_PullUpsPortAB (ch ar ModuleAddress, unsign ed int Pullups);
Retorna
Nada. A função define Port expansor Porta e PortB pull up / down resistores. Parâmetros:
Descrição
- ModuleAddress: Porto endereço de hardware Expander, ver esquema na final desta página - Pullups: dados para a esc olha de pux ar par a ci ma / baix o confi gur ação r esistor es. P orta puxe up / down de configuração resistores é aprovada em byte de maior pullups. PortB puxe
up / down de c onfi gur aç ão r esi stor es é ado byte inferior do pullups. Cada Requer Exemplo
bit
Porto Expander deve ser inicializado. Veja Expander_Init. correspond e ao pino apropri ado do registo Porta PortB /. bit Set permite / pull-up / Set Port PORTA e PORTB resistores pull -up paraexpansor o pino correspondente. Expander_Set_PullUpsPortAB (0, 0xFFFF);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
397
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
O exemplo demonstra como se comunicar com Porto Expander M23S17. Note que os pinos de Porto Expander A2 A1 A0 estão ligados a GND tão Port Expander Endereço de hardware é 0.
/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander unsigned char i = 0; vazio main () { ANSEL = 0; ANSELH = 0; TRISB = 0; PORTB = 0xFF;
/ / Configurar um pinos como I / O digital / / Set PORTB como saída
/ / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander / / / /
Se a porta Expander Biblioteca utiliza o módulo SPI2 SPI2_Init (); / / Inicializar SPI módulo usado com PortExpander
Expander_Init (0); Expander_Set_DirectionPortA (0, 0x00); ser a saída
/ / Inicializar Porto Expander PORTA / Expander Set / para
Expander_Set_DirectionPortB (0,0 xFF); PORTB / Expander Set / para ser Entrada Expander_Set_PullUpsPortB (0,0 xFF); / / Set pull -ups para todos os Expansor pinos PORTB while (1) {/ / faz um loop infinito Expander_Write_PortA (0, i + +) / / Escreva i para expansor PORTA PORTB = Expander_Read_PortB (0); PORTB / expansor de Ler e escrevê-lo para LEDs Delay_ms (100); } }
398
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
Porto Expander conexão HW
Mikroelektronika - Soluções de software e hardware para o mundo embutido
399
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas BIBLIOTECA PS / 2
A mik roC PRO para PIC fornece uma biblioteca para comunicação com o mercado comum PS / 2 para teclado. Nota: A biblioteca não utilizar interrupções para recuperação de dados, e requer a OSCILlator relógio para ser pelo menos 6MHz. Nota: Os pinos para que um teclado PS / 2 está conectado deve ser ligado ao resistores pull-up. Nota: Embora o PS / 2 é um barramento de comunicação bidirecional, esta biblioteca não fornece MCU para teclado de comunicação; por exemplo, pressionando a tecla Caps Lock não liga o Caps Lock LED.
As dependências externas do PS / 2 Biblioteca As seguintes variveis devem ser Descrição: definidos em todos os projectos que sbit sfr extern PS / 2 linhas de dados. utilizam PS2_Data; PS /extern 2 Biblioteca: sbit sfr PS / 2 da linha de relógio. PS2_Clock;
Exemplo:
sbit PS2_Data em RC0_bit sbit PS2_Clock em RC1_bit;
sbit sfr extern PS2_Data_Direction;
Direcção do PS / 2 pinos de
sbit PS2_Data_Direction em TRISC0_bit;
sbit sfr extern PS2_Clock_Direction;
dados. Direcção do PS / pino do relógio sbit PS2_Clock_Direction em TRISC1_bit;
2.
Rotinas da biblioteca - Ps2_Config - Ps2_Key_Read
400
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Ps2_Config Protótipo
vazio Ps2_Config ();
Retorna
Nada.
Descrição
Inicializa o MCU para trabalhar com o teclado PS / 2. As variáveis globais:
Requer
-
PS2_Data: Dados linha de sinal PS2_Clock: Relógio linha de sinal em PS2_Data_Direction: Direção dos Dados pin Direção do pino do relógio: PS2_Clock_Direction
devem ser definidas antes de utilizar este função.
Exemplo
sbit PS2_Data em RC0_bit; sbit PS2_Clock em RC1_bit; sbit PS2_Data_Direction em TRISC0_bit; sbit PS2_Clock_Direction em TRISC1_bit; ... Ps2_Config (); / / Init PS / 2 Keyboard
Mikroelektronika - Soluções de software e hardware para o mundo embutido
401
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Ps2_Key_Read Protótipo 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 concluído com êxito - 0 Se nenhuma tecla foi pressionada A função recupera informações sobre a tecla pressionada. Parâmetros:
Descrição
Requer
Exemplo
402
- valor: mantém o valor da tecla pressionada. Para caracteres, algarismos, sinai s de pontuaç ão, e no es paç o valor ir á ar maz enar o c ódi go A S CII adequados. Rotina "Reconhece" a função da tecla Shift e Caps Lock, e se comporta apropriadamente. Para teclas de funções especiais Teclas de funções especiais ver tabela. - especiais: é uma bandeira para teclas de função especial (F1, Enter, Esc, etc.) Se a tecla pressionada é um desses, especial será definido como 1, caso contrário, 0. PS / 2 para teclado precisa como ser inicializado. Veja Ps2_Config rotina. - pressionado: é definido um Se a chave é pressionada, e 0 se ele for liberado. 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);
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Teclas de Função Especial Key
Valor retornado
Num Lock
F1
1
Seta para esquerda 30
F2
2
Seta para direita
31
F3
3
Seta para cima
32
F4
4
Seta para baixo
33
F5
5
Escape
34
F6
6
Tab
35
F7
7
F8
8
F9
9
F10
10
F11
11
F12
12
Digite
13
Page Up
14
Page Down
15
Retrocesso
16
Inserir
17
Excluir
18
Windows
19
Ctrl
20
Shift
21
Alt
22
Print Screen
23
Pausa
24
Caps Lock
25
Fim
26
Início
27
Scroll Lock
28
Mikroelektronika - Soluções de software e hardware para o mundo embutido
29
403
CAPÍTULO 7 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; PS2_Clock em RC1_bit; 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 módulo UART a 19200 bps Ps2_Config (); / / Init PS / 2 Keyboard Delay_ms (100); / / Aguarde teclado para terminar UART1_Write_Text ("Pronto"); fazer { se (Ps2_Key_Read (& keyData, e especial, e para baixo)) { se (Down & & (keyData == 16)) {/ / Backspace UART1_Write (0x08); } else if (Down & & (keyData == 13)) {/ / Enter UART1_Write ('r'); / / envia o transporte voltar ao terminal USART / / Usart_Write ('n'); / / descomente esta linha se USART terminal também espera avanço de linha / / Transição para nova linha } else if (Baixo & &! Especiais & & keyData) { UART1_Write (keyData); } } Delay_ms (1); / debounce / } enquanto (1); }
404
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
Exemplo de conexão de teclado PS2
Mikroelektronika - Soluções de software e hardware para o mundo embutido
405
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas PWM BIBLIOTECA
módulo C está disponível com uma série de microcontroladores PIC. mik roC PRO para PIC biblioteca que fornece simplifica o uso de PWM HW Módulo. Nota: Alguns MCUs têm vários módulos C. Para poder usar a rotina da biblioteca desejada C, basta alterar o número 1 no protótipo com o número adequado de módulo, ou seja, PWM2_Start ();
Rotinas da biblioteca - PWM1_Init - PWM1_Set_Duty - PWM1_Start - PWM1_Stop
PWM1_Init Protótipo
vazio PWM1_Init (long freq);
Retorna
Nada.
Descrição
Inicializa o módulo PWM com razão de direito 0. Parâmetro freq é um PWM desejado frequência em Hz (ver dados do dispositivo folha para valores corretos em relação com FOSC). Essa rotina deve ser chamada antes de usar outras funções de PWM Bibliotec a. MCU deve ter módulo C.
Requer
Nota: O cálculo do valor da freqü ên cia de PWM é realizad a pelo compilad o r,
Exemplo
como seria produzir um código relativamente grande, se feito a nível de biblioteca. Portanto, o compilador precisa saber o valor do parâmetro em tempo de compilação. Inicializar módulo PWM na 5KHz: É por isso que este parâmetro deve ser uma constante, e não uma variável. PWM1_Init (5000);
406
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
PWM1_Set_Duty Protótipo
vazio PWM1_Set_Duty (unsigned short duty_ratio);
Retorna
Nada.
Descrição Requer
Define a relação direito PWM. Parâmetr o direito assume valores de 0 a 255, onde 0 é 0%, 127 é de 50% e 255 é a razão de 100%. Outros valores específi c os para a relação dever MCU deve ter módulo C. PWM1_Init deve ser chamado antes de utilizar esta rotina. pode ser calculado como (* Porcentagem 255) / 100. Ajuste a proporção direito a 75%:
Exemplo PWM1_Set_Duty (192);
PWM1_Start Protótipo
vazio PWM1_Start (void);
Retorna
Nada.
Descrição
Inicia PWM.
Requer
MCU deve ter módulo C. PWM1_Init deve ser chamado antes de utilizar esta rotina.
Exemplo
PWM1_Start ();
PWM1_Stop Protótipo
vazio PWM1_Stop (void);
Retorna
Nada.
Descrição
Inicia PWM.
Requer
MCU deve ter módul o C. PWM1_Init deve ser chamada antes de usar este routine. PWM1_Start deve ser chamada antes de usar essa rotina, caso contrário terá nenhum efeito como o módulo de PWM não está funcionando.
Exemplo
PWM1_Stop ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
407
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
O exemplo a relação muda imposto sobre os pinos PWM RC1 e RC2 continuamente. Se o LED é ligados a estes pinos, você pode observar a mudança gradual da luz emitida. unsigned short current_duty, old_duty, current_duty1, old_duty1; vazio InitMain () { ANSEL = 0; ANSELH = 0; PORTA = 255; 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 saída pinos como saída módulo em 5KHz módulo em 5KHz
/ / Valor inicial para current_duty / / Valor inicial para current_duty1 / / / /
/ / / /
início PWM1 início PWM2 Definir dever atual de PWM1 Conjunto atual dever de PWM2
enquanto (1) {/ / faz um loop infinito se (RA0_bit) {/ / botão pressionado em RA0 Delay_ms (40); current_duty + +; / current_duty incremento / PWM1_Set_Duty (current_duty); } se (RA1_bit) {/ / botão de RA1 pressionado Delay_ms (40); current_duty -; / current_duty / decremento PWM1_Set_Duty (current_duty); } se (RA2_bit) {/ / botão pressionado no RA2 Delay_ms (40); current_duty1 + +; / / incrementa current_duty1 PWM2_Set_Duty (current_duty1); }
408
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas se (RA3_bit) {/ / botão de RA3 pressionado Delay_ms (40); current_duty1 -; / / decremento current_duty1 PWM2_Set_Duty (current_duty1); } Delay_ms (5);
/ / Desacelerar o ritmo mudar um pouco
} }
HW Conexão
demonstração PWM
Mikroelektronika - Soluções de software e hardware para o mundo embutido
409
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas BIBLIOTECA RS-485
RS-485 é uma comunicação multiponto que permite que vários dispositivos para ser conectado ed a um barramento único. A mik roC PRO para PIC fornece um conjunto de rotinas de biblioteca para trabalho confortável com RS485 sistema usando Mestre / Escravo arquitetura. Mestre e Escravo pacotes de intercâmbio de informações. Cada um destes pacotes contém bytes de sincronização, CRC byte, byte de endereço e os dados. Cada escravo tem endereço único e recebe apenas pacotes que lhe foi dirigida. O escravo não pode nunca ini tiate comunicação. É de responsabilidade do usuário para garantir que apenas um dispositivo transmite através de 485 ônibus em um tempo. A RS-485 rotinas exigem o módulo UART. Pins da UART precisa ser anexado ao transceptor RS-485, como LTC485 ou similares (veja esquema na parte inferior desta página). Nota: A biblioteca utiliza o módulo UART para a comunicação. O usuário deve inicialize o módulo UART adequado antes de utilizar a Biblioteca RS -485. Para MCUs com dois módulos UART é possível inicializar ambos e depois alternar usando o UART_Set_Active função. Veja as funções UART Biblioteca. constantes Biblioteca: - START = valor de byte 150 - Valor STOP byte = 169 - Endereço 50 é o endereço de broadcast para todos (Slaves pacotes que contém o endereço 50
será recebida por todos os escravos, exceto os escravos com endereços 150 e 169). Nota: Como alguns PIC18 MCUs têm múltiplas módulos UART, UART adequado módulo deve ser inicializado. Alternando entre módulos UART UART na biblioteca é feito pela função UART_Set_Active (módulo UART tem de ser previamente ini tialized). variável seguinte As Adependências externas da RS-485 Biblioteca Descrição: deve ser definida em todos os proECTS usando RS-485 Controle RS-485 sfr extern sbit Biblioteca: Transmissão / recepção de RS485_rxtx_pin; operação Modo sbit sfr extern Direção da RS-485 RS485_rxtx_pin_direcTransmissão / recepção ção; de pinos
410
Exemplo:
sbit RS485_rxtx_pin em RC2_bit; sbit RS485_rxtx_pin_direcção em TRISC2_bit;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Rotinas da biblioteca - RS485master_Init - RS485master_Receive - RS485master_Send - RS485slave_Init - RS485slave_Receive - RS485slave_Send
RS485Master_Init Protótipo
vazio RS485Master_Init ();
Retorna
Nada.
Descrição
Inicializa MCU como um Mestre de comunicação RS-485. As variáveis globais: RS485_rxtx_pin - Este pino é ligado à entrada DE RE / RS-485-transceiv
Requer
er (ver esquema em baixo desta página). RE / controles sinal DE RS-485 transceptor modo de operação. RS485_rxtx_pin_direction - Direção da RS-485 de transmissão / recepção do pino
devem ser definidas antes de utilizar esta função. necessidades módulo UART HW para ser inicializado. Veja UART1_Init. / / RS485 pinagem do módulo sbit RS485_rxtx_pin_direction em RC2_bit / / transmissão / recepção controle definido para PORTC.B2
Exemplo
/ / Direção Pin sbit RS485_rx tx_pin_di rection e m TRISC2_ bit / / r xtx pino di ção definida como produção ... UART1_Init (9600); / / inicializa o módulo UART RS485Master_Init (); / intialize MCU como um mestre para RS -485 comunicação
Mikroelektronika - Soluções de software e hardware para o mundo embutido
411
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas RS485Master_Receive Protótipo
vazio RS485Master_Receive (char * Data_buffer);
Retorna
Nada. Recebe mens a gens de Escrav os. As mens a gens são multi -by te, essa rotina deve ser chamado para cada byte recebido.
Descrição
Parâmetros: - data_buffer: 7 buffer de bytes para armazenar os dados recebidos, da seguinte forma: - dados [0 .. 2]: conteúdo da mensagem - dados [3]: número de bytes de mensagens recebidas, 1-3 - dados [4]: é fixado em 255 quando a mensagem é recebida - dados [5]: é definido como 255 se o erro ocorreu - dados [6]: endereço do escravo, que enviou a mensagem A função ajusta automaticamente dados [4] e dados [5] sobre todos os recebidos mensagem. Estas bandeiras devem ser limpos por software.
Requer
MCU deve ser inicializado como um Mestre de comunicação RS -485. Veja RS485master_Init.
Exemplo
char msg [8]; ... RS485Master_Receive (msg);
RS485Master_Send Protótipo
vazio RS485Master_Send (char * Data_buffer, char datalen, char Slave_address);
Retorna
Nada.
Descrição
Envia mens ag em para Slave (s). Formato de mens a gem pode ser encontr ado na parte inferior desta página. Parâmetros:
Requer
Exemplo
412
- data_buffer: dados a serem enviados - datalen: número de bytes para transmissão. Valores válidos: 0 ... 3. -MCU slave_address: Escravocomo (s) endereço deve ser inicializado um Mestre de comunicação RS-485. Veja RS485Master_Init. É de respons abili d ade do usuári o para garantir (por protoc ol o) que apenas um disposi tiv o envia dados através char msg [8];de 485 ônibus em um tempo. ... / / Envia 3 bytes de dados para Escravo com endereço 0x12 RS485Master_Send (msg, 3, 0x12);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
RS485slave_Init Protótipo
vazio RS485Slave_Init (char Slave_address);
Retorna
Nada. Inicializa MCU como um escravo para comunicação RS-485.
Descrição
Parâmetros: - slave_address: Endereço do escravo As variáveis globais: RS485_rxtx_pin - Este pino é ligado à entrada DE RE / RS-485-transceiv
Requer
er (ver esquema no final desta página). RE / controles sinal DE RS -485 transceptor modo de operação. Valores válidos: 1 (Para transmissão) e 0 (Para receing) RS485_rxtx_pin_direction - Direção da RS-485 de transmissão / recepção do pino
devem ser definidas antes de utilizar esta função. UART módulo HW precisa ser inicializado. Veja UART1_Init. / / Pinagem do módulo RS485 sbit RS485_rxtx_pin em RC2_bit / / transmissão / recepção de controle definido para PORTC.B2
Exemplo
/ / Direção Pin sbit RS485_rx tx_pin_di rection e m TRISC2_ bit / / r xtx pino di ção definida como produção ... UART1_Init (9600); / / inicializa o módulo UART RS485Slave_Init (160); / intia lize MCU como um Esc ravo para comunicação RS-485 com o endereço 160
Mikroelektronika - Soluções de software e hardware para o mundo embutido
413
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas RS485slave_Receive Protótipo
vazio RS485Slave_Receive (char * Data_buffer);
Retorna
Nada. Recebe mensagens de Mestre. Se Escravo endereço e campo Mensagem endereço não correspondem, em seguida, a mensagem será descartada. As mensagens são multi-byte, de modo que este rotina deve ser chamado para cada byte recebido.
Descrição Parâmetros: -
414
data_buffer: 6 buffer de bytes para armazenar os dados recebidos, da seguinte forma: dados [0 .. 2]: conteúdo da mensagem dados [3]: número de bytes de mensagens recebidas, 1-3 dados [4]: é fixado em 255 quando a mensagem é recebida dados [5]: é fixados em 255 se o erro ocorreu
Requer
A função ajusta automaticamente dados [4] e dados [5] sobre todos os recebidos MCU deve ser inicializado como um escravo para comunicação RS-485. Veja mensagem. Estas bandeiras devem ser limpos por software. RS485slave_Init.
Exemplo
char msg [8]; ... RS485Slave_Read (msg);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
RS485slave_Send Protótipo
vazio RS485Slave_Send (char * Data_buffer, char datalen);
Retorna
Nada.
Descrição
Envia uma mens a gem para Master . Formato de mens ag em pode ser encontr ado na parte inferior desta página. Parâmetros:
Requer
- data_buffer: dados a serem enviados - datalen: número de bytes para transmissão. Valores válidos: 0 ... 3. MCU deve ser inicializado como um escravo para comunicação RS -485. Veja RS485sl av e_Ini t. É de respons abili dad e do usuári o para garanti r (por protoc ol o) que só um dispositivo envia dados por meio de 485 ônibus em um tempo.
Exemplo
char msg [8]; ... / / Envia dois bytes de dados para o Mestre RS485Slave_Send (msg, 2);
Exemplo Biblioteca Esta é uma simples demonstração de RS485 Biblioteca rotinas de uso. Master envia mensagem para Slave com o endereço 160 e aguarda uma resposta. O escravo aceita dados, incrementa e envia de volta para o Mestre. Mestre em seguida, faz o mesmo e envia incredados documentados de volta ao escravo, etc Master exibe os dados recebidos em PORTB, enquanto o erro de receber (0xAA) e número de conse comerciais e executivas tentativas mal sucedidas são exibidos na PORTD. exibe Escravo recebeu dados sobre PORTB, enquanto que o erro na recepção (0xAA) é exibido no PORTD. configurações de hardware, neste exemplo são feitas para o conselho EasyPIC5 e 16F887.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
415
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas RS485 código mestre: char dat [10]; char i, j;
/ / Buffer para receving / envio de mensagens
rs485_rxtx_pin sbit em RC2_bit / / pino conjunto transcieve sbit rs485_rxtx_pin_direction em TRISC2_bit / / pino conjunto transcieve direção / / Rotina de interrupção void interrupt () { RS485Master_Receive (DAT); } vazio main () { tempo cnt = 0; ANSEL = 0; ANSELH = 0; PORTB PORTD TRISB TRISD
= = = =
/ / Configurar um pinos como I / O digital
0; 0; 0; 0;
UART1_Init (9600); Delay_ms (100);
/ / inicializar o módulo UART1
RS485Master_Init (); dat [0] = 0xAA; dat [1] = 0xF0; dat [2] = 0x0F; dat [4] = 0; dat [5] = 0; dat [6] = 0;
/ / Inicializa MCU como Mestre
/ / Garantir que a m ensagem r ecebida 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;
/ / / /
/ / / /
permitir interrupção no UART1 receber desabilitar interrupção na transmissão UART1 habilitar interrupções periféricas habilitar todas as interrupções
enquanto (1) { / / sobre co ncluída mensagem válida r eceber / / Dados [4] está situado a 255 cnt + +;
416
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas se (Dat [5]) {/ / se um erro detectado, o sinal que ele PORTD 0xAA = / / definindo portd para 0xAA } se (Dat [4]) {/ / se a me nsagem recebida co m sucesso cnt = 0; dat [4] = 0; / / Mensagem clara recebeu bandeira j = dat [3]; para (I = 1; i <= dat [3]; i + +) {/ / dados mostram a PORTB PORTB = dat [i-1]; } / / Incremento recebeu dat [0] dat [0] = dat [0] 1 / / envia para o mestre Delay_ms (1); RS485Master_Send (DAT, 1160);
} se (> Cnt 100000) { PORTD + +; cnt = 0; RS485Master_Send (DAT, 1160); se (PORTD> 10) / / se o e nvio falhou 10 vez es RS485Master_Send (DAT, 1,50); / / envia mensagem em broadcast endereço } } / / Função para ser devidamente ligados. }
RS485 código Slave: char dat [9]; char i, j;
/ / Buffer para receving / envio de mensagens
sbit rs485_rxtx_pin em RC2_bit / / pino conjunto transcieve sbit rs485_rxtx_pin_direction em TRISC2_bit / / pino conjunto transcieve direção / / Rotina de interrupção void interrupt () { RS485Slave_Receive (DAT); } vazio main () { ANSEL = 0; ANSELH = 0; PORTB PORTD TRISB TRISD
= = = =
/ / Configurar um pinos como I / O digital
0; 0; 0; 0;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
417
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas UART1_Init (9600); Delay_ms (100); RS485Slave_Init (160); dat [4] = 0; dat [5] = 0; dat [6] = 0; PIE1.RCIE = PIE2.TXIE = INTCON.PEIE = INTCON.GIE =
/ / Inicializa UART1 módulo / / MCU Intialize como escravo, o endereço 160 / / Assegura que essa bandeira mensagem recebida é de 0 / / Garantir que a mensagem recebida bandeira é 0 / / Garantir que a bandeira de erro é de 0
1; 0; 1; 1;
/ / Permitir interrupção no UART1 receber / / Desativar interrupção na transmissão UART1 / / Habilitar interrupções periféricas / / Habilitar todas as interrupções
enquanto (1) { se (Dat [5]) {/ / se um erro detectado, o sinal pelo PORTD 0xAA = / / configuração portd para 0xAA dat [5] = 0; } se (Dat [4]) {/ / após concluída mensagem válida receber dat [4] = 0; / / dados [4] é definido como 0xFF j = dat [3]; para (I = 1; i <= dat [3]; i + +) { PORTB = dat [i-1]; } dat [0] = d at [0] 1 / / inc remento recebeu dat [0] Delay_ms (1); RS485Slave_Send (dat, 1) / / e enviá-lo para o mestre } } }
418
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
Exemplo de interface PC para 8051 MCU via rede RS485 com LTC485 como Transceptor RS-485 Mikroelektronika - Soluções de software e hardware para o mundo embutido
419
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Mensagem cálculos formato e CRC Q: Como é CRC checksum calculado sobre RS485 lado Mestre? START_BYTE = 0x96 / / 10010110 STOP_BYTE 0xa9 = / / 10101001 PACOTE: -------START_BYTE 0x96 ENDEREÇO Datalen [DATA1] [DATA2] [Data3] CRC STOP_BYTE 0xa9
/ / Se existe / / Se existe / / Se existe
bits datalen -----------bit7 = 1 mestre envia 0 escravo envia bit6 = 1 ende reço foi XORed com 1, foi i gual STOP_BYTE 0 endereço INALTERADO bit5 = 0 FIXO bit4 = 1 data3 (se existir) WS XORed com 1, START_BYTE ou STOP_BYTE 0 data3 (caso exista) ina lterado Bit3 = 1 DATA2 (se existir) WS XORed com 1, START_BYTE ou STOP_BYTE 0 DATA2 (caso exista) ina lterado bit2 DATA1 = 1 (se existir) WS XORed com 1, START_BYTE ou STOP_BYTE 0 DATA1 (caso exista) inalterado bit1bit0 = 0 a 3 número de bytes de dados ENVIAR
A START_BYTE ou
Foi igual a
Foi igual a
Foi igual A
geração de CRC: ---------------crc_send = Endereço ^ datalen; ^ Crc_send = dados [0]; / / se existe ^ Crc_send = dados [1]; / / se existe ^ Crc_send = dados [2] / / se existir crc_send = ~ crc_send; if ((crc_send == START_BYTE) | | (crc_send == STOP_BYTE)) crc_send + +; Datalen <4 .. 0> pode NOTA: STOP_BYTE <4 .. 0> valores.
420
não
ter
o
START_BYTE <4 .. 0>
Mikroelektronika - Soluções de software e hardware para o mundo embutido
ou
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SOFTWARE DE BIBLIOTECA I ² C A mik roC PRO para PIC fornece rotinas para a execução Software comunicação I2Ccação. Estas rotinas são independentes de hardware e pode ser usado com qualquer MCU. O Software biblioteca I2C permite que você use MCU como mestre em comunicação I2C. O modo multi-mestre não é ado. Nota: Esta biblioteca implementa as atividades baseadas em tempo, assim interrupções precisam ser disabled ao usar Software I2C. Nota: Todas as funções do software I2C Biblioteca estão bloqueando chamadas funções (eles estão esperando para I2C linha do relógio para se tornar uma lógica). Nota: Os pinos utilizados para a comunicação I2C Software deve ser ligado ao os resistores de pull-up. Desligar os LEDs ligados a estes pinos também podem ser necessário. As seguintes variáveis das dependências externas de Soft_I2C Biblioteca deve ser definida em todos os projetos que utilizam Software sbit extern Biblioteca I2C: Soft_I2C_Scl;
Descrição:
Exemplo:
Soft I2C linha do
sbit Soft_I2 C_Scl em RC3_bit;
sbit extern Soft_I2C_Sda;
Relógio. sbit Soft_I2 C_Sda em Soft I2C linha de dados.
sbit extern Soft_I2C_Scl_Direction;
Direção da Soft
sbit extern Soft_I2C_Sda_Direction;
RC4_bit;
I2C pino do relógio. Direção 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 - Soluções de software e hardware para o mundo embutido
421
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Soft_I2C_Init Protótipo
vazio Soft_I2C_Init ();
Retorna
Nada.
Descrição
Configura o software I ˛ Módulo C. As variáveis globais: - Soft_I2C_Scl: Soft I ˛ linha do relógio C
Requer
- Soft_I2C_Sda: Soft I ˛ C linha de dados - Soft_I2C_Scl_Pin_Direction: Direção da Soft I ˛ pino do relógio C - Soft_I2C_Sda_Pin_Direction: Direção da Soft Eu dados ˛ pino C
devem ser definidas antes de utilizar esta função.
Exemplo
/ / Software conexões I2C sbit Soft_I2C_Scl em RC3_bit; sbit Soft_I2C_Sda em RC4_bit; sbit Soft_I2C_Scl_Direction em TRISC3_bit; sbit Soft_I2C_Sda_Direction em TRISC4_bit; / / Fim Software conexões I2C ... Soft_I2C_Init ();
Soft_I2C_Start
422
Protótipo
vazio Soft_I2C_Start (void);
Retorna
Nada.
Descrição
Determina se o barramento I2C é gratuito e as questões START.
Requer
Softwar e I2C deve ser configur a do antes de usar esta função. Veja Soft_I2C _Init rotina.
Exemplo
/ / Problema START Soft_I2C_Start ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Soft_I2C_Read Protótipo
unsigned short Soft_I2C_Read (unsigned int ack);
Retorna
Um byte a partir do escravo. Lê um byte a partir do escravo.
Descrição
Parâmetros: - Ack: reconhecer parâmetro de sinal. Se o ack 0 == não
reconhecer sinal será enviado após a leitura, caso contrário o reconhecer sinal será enviada. Requer
Soft I ˛ C deve ser configurado antes de usar esta função. Veja rotina Soft_I2C_Init. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja Soft_I2C_Start rotina.
Exemplo
unsigned short ter; ... / / Ler os dados e enviar o not_acknowledge sinal ter = Soft_I2C_Read (0);
Soft_I2C_Write Protótipo
unsigned short Soft_I2C_Write (unsigned data_ curto);
Retorna
- 0 se não houvesse erros. - 1 se escrever colisão foi detectada no barramento C ˛.
Envia dados byte através do barramento C ˛. Descrição
Parâmetros: - Dados: dados a serem enviados
Requer
Soft I ˛ C deve ser configurado antes de usar esta função. Veja Soft_I2C_Init rotina. Além disso, START deve ser emitido, a fim de utilizar esta função. Veja Soft_I2C_Start rotina.
Exemplo
unsigned short dados, o erro; ... = erro Soft_I2C_Write (dados); = erro Soft_I2C_Write (0xA3);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
423
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Soft_I2C_Stop Protótipo
vazio Soft_I2C_Stop (void);
Retorna
Nada.
Descrição
Problemas de sinal STOP.
Requer
Soft I2C deve ser configurado antes de usar esta função. Veja rotina Soft_I2C_Init.
Exemplo
/ / Problema de sinal STOP Soft_I2C_Stop ();
Soft_I2C_Break Protótipo
vazio Soft_I2C_Break (void);
Retorna
Nada. Todas as funções do software I2C Biblioteca pode bloquear o programa fluxo (ver nota no
Descrição
Requer
topo desta página) . Chamar essa rotina de interrupç ão irá desbloqu ear o program a de execução. Este mecanismo é similar ao TSH. Nota: As interrupções devem ser desativados antes de usar Software I2C Nada. / / Software conexões I2C sbit Soft_I2C_Scl rotinas novamente em RC0_bit; sbit nota Soft_I2C_Sda em RC1_bit; (Ver no início desta página). sbit Soft_I2C_Scl_Direction em TRISC0_bit; sbit Soft_I2C_Sda_Direction em TRISC1_bit; / / Fim Software conexões I2C char contador = 0;
Exemplo
vazio interrupção { se (INTCON.T0IF) { se (Contador> = 20) { Soft_I2C_Break (); contador = 0; / / zerar o contador } mais contador + +; / / incrementa contador INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupção
424
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas }
} vazio main () { OPTION_REG = 0x04;
Exemplo
/ / Prescaler TMR0 definir a 1:32
... / / Tenta Soft_I2C_Init com bloqueio de mecanismo de prevenção INTCON.GIE = 1 / / Global interrupt enable INTCON.T0IE = 1; / estouro Timer0 Habilitar interrupção Soft_I2C_Init (); INTCON.GIE = 0; / / Global interrupção desativar ... }
Exemplo Biblioteca O exemplo demonstra Software I ˛ Biblioteca C rotinas de uso. O PIC MCU é conectado (SCL, SDA pinos) para PCF8583 RTC (relógio de tempo real). Programa lê data e tempo são lidos a partir do RTC e imprime na tela LCD. char segundos, minutos, horas, dia, mês, ano; variáveis
/ Data / Global / hora
/ / Software conexões I2C sbit Soft_I2C_Scl em RC3_bit; sbit Soft_I2C_Sda em RC4_bit; sbit Soft_I2C_Scl_Direction em TRISC3_bit; sbit Soft_I2C_Sda_Direction em TRISC4_bit; / / Fim Software conexões I2C / / Conexões do módulo do LCD sbit LCD_RS em RB4_bit; sbit LCD_EN em RB5_bit; sbit LCD_D4 em RB0_bit; sbit LCD_D5 em RB1_bit; sbit LCD_D6 em RB2_bit; sbit LCD_D7 em RB3_bit; sbit LCD_RS_Direction em TRISB4_bit; sbit LCD_EN_Direction em TRISB5_bit; sbit LCD_D4_Direction em TRISB0_bit;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
425
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas sbit LCD_D5_Direction em TRISB1_bit; sbit LCD_D6_Direction em TRISB2_bit; sbit LCD_D7_Direction em TRISB3_bit; / / Fim conexões do módulo do LCD //--------------------- Lê a data ea hora da RTC (PCF8583) vazio Read_Time () { Soft_I2C_Start (); Soft_I2C_Write (0xA0); Soft_I2C_Write (2); Soft_I2C_Start (); Soft_I2C_Write (0xA1); = segundos Soft_I2C_Read (1); Soft_I2C_Read minutos = (1); horas = Soft_I2C_Read (1); dia Soft_I2C _Read = (1); = mês Soft_I2C_Read (0); Soft_I2C_Stop ();
/ / / / /
/ / / / /
Emissão sinal de partida Endereço PCF8583, ver ficha PCF8583 Início de endereço 2 Emissão repetidas sinal de partida Endereço PCF8583 para leitura R / W = 1 / / / / / /
/ / / / / /
Leia segundo byte Leia minutos byte Leia horas byte Leia anos / byte dia Leia semana / mês byte Emissão de sinal de paragem
} //-------------------- Formatos de data e hora vazio Transform_Time () { segundos = ((segundo e 0xF0)>> 4) * 10 + (segundo & 0x0F); segundo Transform minutos = ((minutos e 0xF0)>> 4) * 10 + (minutos & 0x0F); Transforme meses horas = ((horas & 0xF0)>> 4) * 10 + (horas & 0x0F); Transforme horas ano = (Dia & 0xC0)>> 6; Transforme anos dia = ((dia & 0x30)>> 4) * 10 + (dia & 0x0F); Transforme dia mês = * ((mes & 0x10)>> 4) 10 + (mes & 0x0F); Transforme meses } //-------------------- valores de saída para LCD vazio Display_Time () { Lcd_Chr (1, 6, (dia / 10) + 48); / dez / Imprimir dígitos do dia variável Lcd_Chr (1, 7, (dia 10%) + 48 ) / / on ess Impr imir dígi tos do d ia variável Lcd_Chr (1, 9, (mês / 10) + 48); Lcd_Chr (1,10 (% de 10 meses) + 48); Lcd_Chr (1,15, + 56 anos); / ano impressão / vaiable + 8
426
Mikroelektronika - Soluções de software e hardware para o mundo embutido
/ / / / / / / / / / / /
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
(Início 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);
}
//------------------ Init executa projetos em todo vazio Init_Main () { TRISB = 0; PORTB = 0xFF; TRISB = 0xff; ANSEL = 0; / Configurar / AN pinos como I / O digital ANSELH = 0; Soft_I2C_Init (); / / Inicializar Soft comunicação I2C Lcd_Init (); / / Inicializar LCD Lcd_Cmd (_LCD_CLEAR); / Clear LCD Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off Lcd_Out (1,1, "Data:"); 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");
/ / Preparar e saída de texto estático no LCD
} //----------------- Principal procedimento vazio main () { Delay_ms (2000); Init_Main ();
/ / Realizar a inicialização
enquanto (1) { Read_Time (); Transform_Time (); Display_Time ();
/ / / /
Delay_ms (1000);
/ / / /
loop infinito Leia o tempo de RTC (PCF8583) Formato de data e hora Preparar e aparecer no visor LCD
/ / Espera um segundo
} }
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
427
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Software Library SPI
A mik roC PRO para PIC fornece rotinas para a execução Software comunicação SPIcação. Estas rotinas são independentes de hardware e pode ser usado com qualquer MCU. O SPI Software Library fornece uma fácil comunicação com outros dispositivos através da SPI: Conversores A / D e D / A conversores, MAX7219 LTC1290, etc Biblioteca de configuração: - SPI modo Master - Relógio valor = 20 kHz. - Dados amostrados no meio do intervalo. - Relógio de baixo estado ocioso. - Dados amostrados no meio do intervalo. - Os dados transmitidos em baixa para a borda alta. Nota: O software da Biblioteca SPI implementa atividades baseadas em tempo, por isso interrompe necessidade ser desativado quando usá-lo.
As dependências externas de software SPI Biblioteca As seguintes variáveis deve ser definida em todos os projetos que utilizam Software sbit sfr extern Biblioteca SPI: SoftSpi_SDI; sbit sfr extern SoftSpi_SDO; sbit sfr extern SoftSpi_CLK;
Dados em linha. Dados da linha de saída. linha do Relógio.
Exemplo:
sbit SoftSpi_SDI em RC4_bit; sbit SoftSpi_SDO em RC5_bit; sbit SoftSpi_CLK em RC3_bit; sbit SoftSpi_SDI_Direction em TRISC4_bit;
sbit sfr extern SoftSpi_SDI_Direction;
Direção dos dados no pino.
sbit sfr extern SoftSpi_SDO_Direction;
Direção da Saída de Dados do SoftSpi_SDO_Direction
sbit sfr extern SoftSpi_CLK_Direction;
428
Descrição:
sbit em TRISC5_bit;
pino sbit Direção do pino do relógio. SoftSpi_CLK_Direction em TRISC3_bit;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Rotinas da biblioteca - Soft_Spi_Init - Soft_Spi_Read - Soft_Spi_Write
Soft_Spi_Init Protótipo
vazio Soft_SPI_Init ();
Retorna
Nada.
Descrição
Configura e inicializa o software SPI módulo. As variáveis globais:
Requer
-
Chip_Select: Chip Selecionar linha SoftSpi_SDI: Dados em linha SoftSpi_SDO: Os dados de saída de linha SoftSpi_CLK: Dados da linha de relógio Chip_Select_Direction: Direção do pino de Chip Select SoftSpi_SDI_Direction: Direção do Dados em pino SoftSpi_SDO_Direction: Direção da Saída de dados pino SoftSpi_CLK_Direction: Direção do pino do relógio de dados
devem ser definidas antes de utilizar esta função.
Exemplo
/ / Software conexões SPI módulo sbit Chip_Select em RC0_bit; sbit SoftSpi_SDI em RC4_bit; sbit SoftSpi_SDO em RC5_bit; sbit SoftSpi_CLK em RC3_bit; sbit Chip_Select_Direction em TRISC0_bit; sbit SoftSpi_SDI_Direction em TRISC4_bit; sbit SoftSpi_SDO_Direction em TRISC5_bit; sbit SoftSpi_CLK_Direction em TRISC3_bit; / / Fim Software conexões SPI módulo ... Soft_SPI_Init (); / Soft_SPI Init /
Mikroelektronika - Soluções de software e hardware para o mundo embutido
429
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Soft_Spi_Read Protótipo
unsigned short Soft_SPI_Read (char sdata);
Retorna
Byte recebido através do barramento SPI.
Descrição
Esta rotina executa três operaç ões simultane am ente. Ele fornec e o relógio para a Softbarramento SPI ware, lê um byte e envia um byte. Parâmetros:
Requer
Exemplo
sdata: dados a serem enviados.
Soft SPI deve ser inicializada antes de usar esta função. Veja Soft_SPI_Init rotina. unsigned short data_read; data_send char; ... / / Ler um byte e atribuí-lo a data_read variável / / (Byte data_send será enviado via SPI durante a operação de leitura ção) data_read = Soft_SPI_Read (data_send);
Soft_SPI_Write Protótipo
vazio Soft_SPI_Write (char sdata);
Retorna
Nada. Esta rotina envia um byte através do barramento SPI Software.
Descrição
Parâmetros: sdata: dados a serem enviados.
430
Requer
Soft SPI deve ser inicializada antes de usar esta função. Veja rotina Soft_SPI_Init.
Exemplo
/ / Escreve um byte no barramento SPI Soft Soft_SPI_Write (0xAA);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Exemplo Biblioteca Este código demonstra o uso de rotinas de biblioteca para a comunicação Soft_SPI. Além disso, Este exemplo demonstra a trabalhar com M4921 da Microchip 12-bit D / A converterer. / / Módulo de conexões DAC sbit Chip_Select em RC0_bit; sbit SoftSpi_CLK em RC3_bit; sbit SoftSpi_SDI em RC4_bit; sbit SoftSpi_SDO em RC5_bit; sbit Chip_Select_Direction em sbit SoftSpi_CLK_Direction em sbit SoftSpi_SDI_Direction em sbit SoftSpi_SDO_Direction em / / Fim módulo conexões DAC
TRISC0_bit; TRISC3_bit; TRISC4_bit; TRISC5_bit;
unsigned int valor; vazio InitMain () { TRISB0_bit = 1; TRISB1_bit = 1; Chip_Select = 1; Chip_Select_Direction = 0; Soft_SPI_Init (); }
/ / / / /
/ / / / /
Definir como entrada pino RA0 Definir como entrada pino RA1 Desmarque DAC Definir CS # pino como saída Inicializar Soft_SPI
/ / Incrementa DAC (0 .. 4095) -> tensão de saída (0 .. Vref) vazio DAC_Output (unsigned int valueDAC) { char temp; Chip_Select = 0;
/ / Seleciona chip DAC
/ / Envia Byte alta temp = (valueDAC>> 8) & 0x0F; / Loja valueDAC [11 .. 8] para temp [3 .. 0] temp | = 0x30 / / Definir configuração DAC, consulte M4921 datasheet Soft_SPI_Write (temp) / / Envia o byte mais alto via Soft SPI / / Envia Byte Low temp = valueDAC; Soft_SPI_Write (temp);
/ / Loja valueDAC [7 .. 0] para temp [7 .. 0] / / Envia byte baixo via Soft SPI
Chip_Select = 1;
/ / Deseleccionar chip DAC
} vazio main () { ANSEL
= 0;
/ / Desliga entradas analógicas
Mikroelektronika - Soluções de software e hardware para o mundo embutido
431
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas ANSELH = 0; InitMain ();
/ / Realizar a inicialização principal
value = 2048;
/ / Quando iniciar o programa, o DAC dá / / Saída no mid-range / / Loop infinito
enquanto (1) { se ((RA0_bit) & & (valor < 4095)) { valor + +; } mais { se ((RA1_bit) & & (valor> 0)) { valor -; } } DAC_Output (valor); Delay_ms (1);
/ / Se o botão for pressionado RA0 / Valor do incremento /
/ / Se RA1 botão é pressionado / Valor / decremento
/ / Enviar valor para chip DAC / Devagar ritmo de repetição das teclas
} }
432
Mikroelektronika - Softwares e soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Software Library UART A mik roC PRO para PIC fornece rotinas para a execução do software UART comde comunicação. Estas rotinas são independentes de hardware e pode ser usado com qualquer MCU. O UART Software Library fornece uma fácil comunicação com outros dispositivos através do protocolo RS232. Nota: O Software biblioteca UART implementa atividades baseadas em tempo, de modo interrupções precisa ser desativado quando usá-lo.
Rotinas da biblioteca - Soft_Uart_Init - Soft_Uart_Read - Soft_Uart_Write - Soft_Uart_Break
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
433
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Soft_UART_Init Protótipo
char Soft_UART_Init (char * Porto, char rx_pin, char tx_pin, unsigned long baud_rate, char invertido); - 2 - Taxa de erro, solicitou transmissão é muito baixa
Retorna
- 1 - Taxa de erro, solicitou transmissão é muito alta - 0 - Inicialização bem-sucedida
Configura e inicializa o software do módulo UART. Parâmetros:
Descrição
-
port: porta a ser utilizado.
rx_pin: define rx_pin a ser utilizado. tx_pin: define tx_pin a ser utilizado. baud_rate: taxa de transmissão a ser definido. Máxima taxa de transmissão depende da MCU
relógio e as condições de trabalho. - invertida: bandeira invertida de saída. Quando definido para um valor diferente de zero, inverteu a lógica
sobre o produto é usado. rotinas de software UART uso rotineiro Delay_Cyc. Se solicitado taxa de transmissão é
Requer
Exemplo
muito baixa então calculado o parâm et ro para a chamada Delay_Cyc exceeeds Delay_Cyc argum ent o intervalo. Nada. Se solicitado taxa de transmissão é muito alta, então erro de arredondamento Delay_Cyc Isto irá iniciar o software UART e estabelecer a comunicação em 9600 bps: CR-argumento char erro; tar interrupções timings Software UART. ... = erro Soft_UART_Init (& PORTC, 7, 6, 14400, 0); / / Inicializar Soft UART em 9600 bps
434
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Soft_UART_Read Protótipo
char Soft_UART_Read (char * Erro);
Retorna
Byte recebido via UART. A função recebe um byte via software UART. Esta é uma chamada de função de bloquei o (aguar da para o bit de início).
Descrição
Programador pode desbloqueá -l o por chamando rotina Soft_UART_Break. Parâmetros: - Erro: Erro de bandeira. Código de erro é retornado através desta variável.
Requer
Exemplo
Software0 UART deve ser inicializado antes de usar esta função. Veja o - Erro não Soft_UART_Init rotina. 1 - Pare de erro de bit 255 - Abort do usuário, chamado Soft_UART_Break char dados, o erro; ... / / Aguardar até que os dados são recebidos fazer = dados Soft_UART_Read (e erro); enquanto (Erro); / / Agora podemos trabalhar com os dados: se (Dados) {...}
Mikroelektronika - Softwares e soluções de hardware para Embedded World
435
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Soft_UART_Write Protótipo
vazio Soft_UART_Write (char udata);
Retorna
Nada. Esta rotina envia um byte através do barramento UART Software.
Descrição
Parâmetros: - udata: dados a serem enviados.
Requer
Exemplo
Software UART deve ser inicializada antes de usar esta função. Veja o Soft_UART_Init rotina. Esteja ciente de que Durante a transmissão, software UART é incapaz de receber dados protoc ol o de transfer ênci a de dados deve ser defini da de tal forma a evitar a perda some_byte de informaç õ=es.0x0A; char ... / / Escreve um byte através Soft Uart Soft_UART_Write (some_byte);
Soft_Uart_Break Protótipo
vazio Soft_UART_Break ();
Retorna
Nada.
Descrição
Requer
Soft_UA RT _ Read está bloqueando a rotina e ele pode bloquear o fluxo do program a. Chamada essa rotina da interrupç ã o serão desbloq uear a execuç ão do progr am a. Este mecani snismo é similar ao TSH. Nota: Nada. As interru p çõ es devem ser desativad o s antes de usar Softw are UART rotin as novam e nt e char data1, erro, contador (Ver nota no topo desta página). = 0; vazio interrupt () { se (INTCON.T0IF) { se (Contador> = 20) { Soft_UART_Break (); contador = 0; / / zerar o contador } mais contador + +; / / incrementa contador
Exemplo
INTCON.T0IF = 0; bandeira / / Limpa estouro Timer0 interrupção } }
436
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
vazio main () { OPTION_REG = 0x04;
/ / Prescaler TMR0 definir a 1:32
... se (Soft_UART_Init (& PORTC, 7, 6, 9600, 0) = 0) Soft_UART_Write (0x55);
Exemplo
... / / Tenta Soft_UART_Read com bloqueio de mecanismo de prevenção INTCON.GIE = 1 / / Global interrupt enable INTCON.T0IE = 1; / estouro Timer0 Habilitar interrupção data1 = Soft_UART_Read (e erro); INTCON.GIE = 0; / / Global interrupção desativar }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
437
CAPÍTULO 7 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 mik roC PRO para PIC USART Ferramenta Terminal. char i, erro, byte_read;
/ / Variáveis auxiliares
vazio main () { ANSEL = 0; ANSELH = 0; TRISB = 0x00; PORTB = 0;
/ / Configurar um pinos como I / O digital
/ / Set PORTB como saída (sina lização de erro) / / Nenhum erro
= erro Soft_UART_Init (& PORTC, 7, 6, 14400, 0); / / Inicializar Soft UART em 9600 bps se (Erro> 0) { PORTB erro = / / sinalizar erro Init while (1); / programa Stop } Delay_ms (100); para (I = 'z', i> = 'A'; i -) {/ / Enviar bytes de 'z' downto 'A' Soft_UART_Write (i); Delay_ms (100); } while (1) {/ / faz um loop infinito byte_read = Soft_UART_Read (& error) / / byte Leia, a seguir sinalizador de erro de teste se (Erro) / / Se o erro foi detectado PORTB erro = / / sinal que a PORTB mais Soft_UART_Write (byte_read) / / Se o erro não foi detectado, byte de retorno ed, leia } }
438
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
BIBLIOTECA DE SOM A mik roC PRO para PIC fornece uma biblioteca de som para fornecer aos usuários rotinas necessárias para sinalização de som em suas aplicações. Produção de som precisa hardware adicional, como piezo-falante (exemplo de interface piezo-falante é dado no esquema no final deste página).
Rotinas da biblioteca - Sound_Init - Sound_Play
Sound_Init Protótipo
vazio Sound_Init (char * Snd_port, char snd_pin);
Retorna
Nada. Configura o pino MCU apropriada para a geração do som.
Descrição
Parâmetros: - snd_port: endereço da porta de saída de som - snd_pin: pino de saída de som
Requer
Nada.
Exemplo
/ / Inicializar o RD3 pino para reprodução de som Sound_Init (& PORTD, 3);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
439
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Sound_Play Protótipo
vazio Sound_Play (unsigned freq_in_hz, não assinado duration_ms);
Retorna
Nada. Gera o sinal de onda quadrada no pino adequado.
Descrição
Parâmetros: - freq_in_Hz: freqüência do sinal em hertz (Hz) - duration_ms: duração do sinal em milissegundos (ms) Nota: A faixa de freqü ên cia é limitad a pelo parâm etro Delay_C yc. freqü ên cia máxim a
Requer
Exemplo
que pode ser produz ido por esta função é Freq_max = FOSC / (80 * 3). fre-mínimo freqüência é Freq_min = FOSC / (80 * 255). Gerado freqüência pode diferir da Para ouvir o som, você precisa de um alto-falante piezo (ou outro hardware) em desfreq_in_hz parâmetro devido à aritmética inteiro. signada porta. Além disso, você deve chamar Sound_Init preparar hardware para a saída antes usar essa função. / Play sound / de 1KHz na duração de 100ms Sound_Play (1000, 100);
Exemplo Biblioteca O exemplo é uma simples demonstração de como usar a biblioteca de som para tocar ing tons em um alto-falante piezo.
vazio Tone1 () { Sound_Play (659, 250); }
/ / = Freqüência 659Hz, duração = 250ms
vazio Tone2 () { Sound_Play (698, 250); }
/ / = Freqüência 698Hz, tempo = 250ms
vazio Tone3 () { Sound_Play (784, 250); }
/ / = Freqüência 784Hz, tempo = 250ms
vazio Melody () { Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone1 (); Tone2 (); Tone3 (); Tone3 ();
440
Tone3 Tone3 Tone3 Tone3 Tone3 Tone2
/ / Reproduz a "Casa Amarela" melodia (); Tone3 (); (); Tone3 (); (); (); Tone3 (); (); (); Tone2 (); Tone1 ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
} 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 =;
/ / Configurar um pinos como I / O digital / Input / Configura RB7 .. RB3 como / RD3 Configure / como saída
Sound_Init (& PORTD, 3); Sound_Play (1000, 1000); enquanto (1) { se (Button (& PORTB, 7,1,1)) Tone1 (); enquanto (PORTB e 0x80);
/ / RB7 execuções Tone1 / / Espera botão para ser liberado
se (Button (& PORTB, 6,1,1)) Tone2 (); enquanto (PORTB e 0x40);
/ / RB6 execuções Tone2
se (Button (& PORTB, 5,1,1)) Tone3 (); enquanto (PORTB e 0x20);
/ / RB5 execuções Tone3
se (Button (& PORTB, 4,1,1)) Melody2 (); enquanto (PORTB e 0x10);
/ / RB4 execuções Melody2
se (Button (& PORTB, 3,1,1)) Melody (); while (PORTB e 0x08);
/ / RB3 execuções Melody
/ / Espera botão para ser liberado
/ / Espera botão para ser liberado
/ / Espera botão para ser liberado
/ / Espera botão para ser liberado
} }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
441
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
Exemplo de uma biblioteca de sons sonnection
442
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI BIBLIOTECA módulo SPI está disponível com um número de modelos PIC MCU. mik roC PRO para PIC fornece uma biblioteca para inicializar o modo de trabalho escravo e confortável com o modo Master. PIC pode facilmente comcomunicar com outros dispositivos através SPI: conversores A / D, conversores D / A, MAX7219, LTC1290, etc Você precisa PIC MCU com hardware integrados SPI (por exemplo, PIC16F877). Nota: PIC18 MCUs Alguns têm vários módulos SPI. Alternando entre os módulos IPS, no Biblioteca SPI é feito pela função SPI_Set_Active (módulo SPI tem de ser previamente inicializada). Nota: Para usar o rotina da biblioteca SPI desejado, basta alterar o número 1 no protótipo com o número adequado de módulo, ou seja, SPI2_Init ();
Rotinas da biblioteca - Spi1_Init - Spi1_Init_Advanced - Spi1_Read - Spi1_Write - Spi_Set_Active Protótipo Spi_Init Retorna
vazio SPI1_Init (void);
Nada. Isso configura rotina e permite que o módulo SPI com as seguintes configurações:
Descrição
Requer
- Modo Master - 8 de transferência de dados de bit - Bit mais significativo primeiro enviado - Relógio de série baixa quando ociosa - Os dados amostrados na borda -Você Serial clock = FOSC 4 necessidade PIC/ MCU com hardware SPI integrado.
Exemplo
SPI1_Init (); / / Inic ializa o módulo SP I com as configura ções padr ão
Mikroelektronika - Soluções de software e hardware para o mundo embutido
443
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi1_Init_Advanced Protótipo
vazio SPI1_Init_Advanced (unsigned short master_slav, unsigned short data_sample, unsigned short clock_idle, unsigned short transmit_edge);
Retorna
Nada. Configura e inicializa SPI. SPI1_Init ou SPI1_Init_Advanc ed precisa ser chamada antes de usar outras funções Biblioteca da SPI. Parâm et ros modo, data_sample e clock_idle configurar o módulo SPI, e pode ter os seguintes valores: Descrição
Descrição
const biblioteca predefinidos SPI modo de trabalho:
relógio mestre = FOSC / 4
_SPI_MASTER_OSC_DIV4
Master clock = Fosc/16
_SPI_MASTER_OSC_DIV16
Master clock = Fosc/64
_SPI_MASTER_OSC_DIV64
Mestre TMR2 fonte de relógio
_SPI_MASTER_TMR2
Escravo selecionar habilitado
_SPI_SLAVE_SS_ENABLE
Escravo selecione Desativado
_SPI_SLAVE_SS_DIS
Dados intervalo de amostragem: Os dados de entrada da amostra no meio do intervalo
_SPI_DATA_SAMPLE_MIDDLE
Os dados de entrada da amostra no final do intervalo
_SPI_DATA_SAMPLE_END
SPI estado relógio em repouso: Relógio de idle
_SPI_CLK_IDLE_HIGH
Relógio de marcha lenta
_SPI_CLK_IDLE_LOW
borda de transmissão:
444
Transmite da dos em b aixa para a borda alta
_SPI_LOW_2_HIGH
Dados transm itir em alta para baixa b orda
_SPI_HIGH_2_LOW
Requer
Você precisa PIC MCU com hardware SPI integrado.
Exemplo
/ / Set SPI1 módulo pa ra o modo mestre, dados do relógio = FOSC / 4 , amostr ados em meio do in tervalo d e baixo e stado, re lógio par ado e dad os trans mitido em baixa para a borda alta: SPI1_Init_Advanced (_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi1_Read Protótipo
unsigned short SPI1_Read (unsigned short buffer);
Retorna
Retorna os dados recebidos. Lê um byte do barramento SPI.
Descrição
Parâmetros: - buffer: dados fictícios para geração de clock (veja folha de dados do dispositivo para a SPI
Vocêmódulos precisa PIC MCU com SPI integrado. de detalhes de hardware implementação) Requer
Exemplo
SPI deve ser inicializado e comunic aç ão estabel eci da antes de usar este função. Veja SPI1_Init_Advanced ou SPI1_Init. buffer curto tomar,; ... ter = SPI1_Read (buffer);
Spi1_Write Protótipo
vazio SPI1_Write (unsigned short data_);
Retorna
Nada. Escreve byte através do barramento SPI.
Descrição
Parâmetros: - wrdata: dados a serem enviados Você precisa PIC MCU com hardware SPI integrado.
Requer
Exemplo
SPI deve ser inicializado e comunic aç ão estabel eci da antes de usar este função. Veja SPI1_Init_Advanced ou SPI1_Init. SPI1_Write (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
445
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Set_Active Protótipo
vazio SPI_Set_Active (char (* Read_ptr) (char))
Retorna
Nada. Define o módulo SPI ativos que serão usados pelas rotinas de SPI.
Descrição
Parâmetros: - read_ptr: SPI1_Read manipulador
Requer
A rotina é disponível apenas para MCUs com dois módulos de SPI. Usado módulo SPI deve ser inicializada antes de usar esta função. Veja o SPI1_Init, SPI1_Init_Advanced
Exemplo
SPI_Set_Active (& SPI2_Read) / / Define o SPI2 módulo activo
Exemplo Biblioteca O código demonstra como usar o SPI biblioteca de funções para a comunicação entre o módulo de SPI do MCU e M4921 da Microchip 12-bit D / A converter / / Módulo de conexões DAC sbit Chip_Select em RC0_bit; sbit Chip_Select_Direction em TRISC0_bit; / / Fim módulo conexões DAC unsigned int valor; vazio InitMain () { TRISB0_bit = 1; TRISB1_bit = 1; Chip_Select = 1; Chip_Select_Direction = 0; SPI1_Init (); }
/ / Definir o pino RA0 como entrada / / Set RA1 pino como entrada / Deseleccionar / CAD / / CS Set # pino como saída / / Inicializar SPI módulo
/ / Incrementa DAC (0 .. 4095) -> tensão de saída (0 .. Vref) vazio DAC_Output (unsigned int valueDAC) { char temp; Chip_Select = 0;
/ / Seleciona chip DAC
/ / Envia Byte alta temp = (valueDAC>> 8) & 0x0F; / Loja valueDAC [11 .. 8] para temp [3 .. 0] temp | = 0x30 / / Definir configuração DAC, consulte M4921 datasheet SPI1_Write (temp) / / Envia o byte mais alto via SPI / / Envia Byte Low
446
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
temp = valueDAC; SPI1_Write (temp);
/ / Loja valueDAC [7 .. 0] para temp [7 .. 0] / / Envia byte baixo via SPI
Chip_Select = 1;
/ / Deseleccionar chip DAC
} vazio main () { ANSEL = 0; ANSELH = 0; InitMain (); value = 2048;
enquanto (1) {
/ / Realizar a inicialização principal / / Quando iniciar o programa, o DAC dá / / Saída no mid-range / / Loop infinito
se ((RA0_bit) & & (valor <4,095)) { valor + +; } mais { se ((RA1_bit) & & (valor> 0)) { valor -; } } DAC_Output (valor); Delay_ms (1);
/ / Se o botão for pressionado RA0 / Valor do incremento /
/ / Se RA1 botão é pressionado / Valor / decremento / / Enviar valor para DAC chip / Devagar ritmo de repetição das teclas
} }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
447
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
SPI conexão HW
448
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI biblioteca Ethernet A ENC28J60 é um controlador Ethernet autônomo com um padrão da indústria Serial Peripheral Interface (SPI ™). Ele é projetado para servir de interface de rede Ethernet para qualquer controlador equipado com SPI. A ENC28J60 atende a todos os padrões IEEE 802.3 especificações. Ele incorpora um número sistemas da filtragem de pacotes para limitar os pacotes de entrada. Ele também fornece um interno DMA módulo para transferência rápida de dados e hardware cálculo de checksum assistida IP ções. A comunicação com o controlador de host é implementada através de dois pinos de interrupção eo IPT, com taxas de dados de até 10 Mb / s. Dois pinos dedicados são utilizados para LED link e indicação de atividade da rede. Esta biblioteca foi projetada para simplificar a manipulação do hardware subjacente (ENC28J60). Ele funciona com qualquer PIC com SPI integrado e mais de 4 Kb de memória ROM. 38 a 40 MHz de clock é recomendado para obter 8-10 relógio SPI Mhz, caso contrário PIC deve ser cronometrado pelo ENC28J60 saída do relógio devido ao seu erro de silício em hardware SPI. Se você tentar menor velocidade de relógio do PIC, pode haver placa travar ou perder algumas solicitações. SPI biblioteca Ethernet a: - O protocolo IPv4. - Requisições ARP. - ICMP echo requests. - Os pedidos UDP. - Os pedidos T (sem pilha, sem reconstrução de pacotes). - O cliente com cache ARP. - O cliente DNS. - UDP cliente. - O cliente DH. - Fragmentação do pacote não é ado. Nota: Devido a PIC16 / Flash RAM limitações biblioteca PIC16 NÃO tem ARP, DNS, UDP e e ao cliente DH implementado. Nota: A variável biblioteca Global SPI_Ethernet_TimerSec é usado para acompanhar tempo para todas as implementações do cliente (ARP, DNS, DH e UDP). É responsabilidade do usuário dade para aumentar esta variável a cada segundo em que o código se algum dos clientes é usado. Nota: Para usuários avançados, existem arquivos de cabeçalho ("eth_enc28j60LibDef.h" e "Eth_enc28j60LibPrivate.h") em Utiliza \ P16 e P18 usa pastas \ do compilador
com descrição de todas as rotinas e variáveis globais, relevantes para o usuário, implementar-
ed na Biblioteca Ethernet SPI.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
449
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Nota: O hardware apropriado módulo SPI deve ser inicializada antes de usar qualquer o SPI biblioteca de rotinas Ethernet. Consulte a Biblioteca SPI. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina.
As dependências externas do SPI Ethernet Biblioteca As seguintes variáveis deve ser definida em Descrição: todos os projetos usando SPI Eth- sfr extern sbit chip ENC28J 60 pinos de ernet Biblioteca: SPI_Ethernet_CS seleção. sbit sfr extern ENC28J60 pino de reset. SPI_Ethernet_RST;
sbit SPI_Ethernet_CS na RC1_bit; sbit SPI_Ethe rnet_Rst na RC0_bit;
sbit sfr extern SPI_Ethernet_CS_Direc ção;
Direção do ENC28J 6 0 pinos selecionar chip.
sbit SPI_Ethernet_ CS_Direc ção em TRISC1_bit;
sbit sfr extern SPI_Ethernet_RST_Dire ç ã o;
Direção do ENC28J 6 0 pino de reset.
sbit SPI_Ethernet_ Rst_Dire ç ã o em TRISC0_bit;
As rotinas a seguir deve ser definida em todos os projectos usando SPI Ethernet: unsignedBiblioteca int SPI_Ethernet_T (unsigned char * RemoteHost, não assinado int RemotePort, unsigned int localPort, unsigned int reqLength); unsigned int SPI_Ethernet_UDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength);
450
Exemplo:
Descrição:
T mani pul a dor de
solicitaç ão. UDP manipul ador de
solicitaç ão.
Exemplo: Consulte a biblioteca exemplo, no botTom de esta página para execução de código ção. Consulte a biblioteca exemplo, no botTom desta página para execução de código ção.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
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_T - SPI_Ethernet_UDP
Só PIC18: - SPI_Ethernet_getIpAddress - SPI_Ethernet_getGwIpA ddress - SPI_Ethernet_getDnsIpAddress - SPI_Ethernet_getIpMask - SPI_Ethernet_confNetwork - SPI_Ethernet_arpResolve - SPI_Ethernet_sendUDP - SPI_Ethernet_dnsResolve - SPI_Ethernet_initDH - SPI_Ethernet_doDHLeaseTime - SPI_Ethernet_renewDH
Mikroelektronika - Soluções de software e hardware para o mundo embutido
451
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Ethernet_Init Protótipo
vazio SPI_Ethernet_Init (unsigned char * Mac, unsigned char * Ip, unsigned char FullDuplex);
Retorna
Nada. Esta é a rotina MAC do módulo. Ele inicializa ENC28J60 controlador. Esta função é internamente subdividida em 2 partes para ajudá-vinculador quando vem com pouca memória. ENC28J60 configurações do controlador (parâmetros não mencionados aqui são definidos
como padrão):
Descrição
- Recebe o endereço inicial do buffer: 0x0000. - Receber endereço final buffer: 0x19AD. - Transmitir o endereço inicial do buffer: 0x19AE. - Transmitir endereço final buffer: 0x1fff. - RAM buffer leitura / gravação ponteiros em modo auto-incremento. - Receber filtros definidos como padrão: CRC + MAC + MAC Unicast Broadcast no modo de OR. - Controle de fluxo com TX e RX pausa quadros em modo full duplex. - Quadros são preenchidos com 60 + bytes CRC. - Tamanho máximo do pacote é definido para 1518. - Back-to-Back-Inter Packet Gap: 0x15 em modo full duplex; 0x12 em modo half duplex. - Non-Back-to-Back-Inter Packet Gap: 0x0012 em modo full duplex; 0x0C12 em modo half duplex. - A janela de colisão é definido como 63 em modo half duplex para acomodar algumas ENC28J60 revisões bugs silício. - Saída CLKOUT é desativado para reduzir a geração de EMI. - Loopback half duplex com deficiência. - LED de configuração: padrão (LEDA link-status, atividade LEDB-link). Parâmetros: - mac: memória intermédia que contém o endereço MAC válido. - IP: RAM buffer que contém o endereço IP válido. - FullDuplex: Ethernet Switch modo duplex. Valores válidos: 0 (Em modo half duplex) e 1 (Modo full duplex).
452
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
As variáveis globais:
Requer
-
SPI_Ethernet_CS: Chip Selecionar linha Direção do pino de Chip Select: SPI_Ethernet_CS_Direct ion SPI_Ethernet_RST: linha de reset Direção do pino de Reset: SPI_Ethernet_RST_Direction
devem ser definidas antes de utilizar esta função. O módulo SPI deve ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas. # Define SPI_Ethernet_HALFDUPLEX 0 # Define um SPI_Ethernet_FULLDUPLEX
Exemplo
/ / ME ehternet pinagem NIC sbit sfr SPI_Ethernet_Rst em RC0_bit; sbit sfr SPI_Ethernet_CS em RC1_bit; sbit sfr SPI_Ethernet_Rst_Direction em TRISC0_bit; sbit sfr SPI_Ethernet_CS_Direction em TRISC1_bit; / / Fim ethernet NIC definições unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} / / meu endereço MAC unsigned char myIpAddr = {192, 168, 1, 60} / / o m eu IP addr SPI1_Init (); SPI_Ethernet_Init (myIpAddr myMacAdd r, SPI_Ethernet_FULLDUPL EX);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
453
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Ethernet_Enable Protótipo
vazio SPI_Ethernet_Enable (unsigned char enFlt);
Retorna
Nada. Esta é a rotina MAC do módul o. Esta rotina permite que o tráfego de rede apropri ada no o ENC28J60 módul o por meio de ela receber filtros (unicast, multicas t, broadcast, CDC). Tipo específico de tráfego de rede será ativado se uma correspondente pouco de parâmetr o essa rotina de entrada está definido. Portanto, mais do que um tipo de redetráfego de trabalho pode ser ativada ao mesmo tempo. Para este efeito, pré biblioteca constantes (ver tabel a abaix o) pode ser ORed para formar o valor de entrada apropri ad o. Parâmetros: - enFlt: tráfego de rede / receber bandeiras filtro. Cada bit corresponde à dis comeu o tráfego de rede / filtro de recepção: Bit Descrição Máscara const biblioteca predefinidos
Descrição
MAC tráfego Broadcast / filtro de recepção
_SPI_Ethernet_BROAD0 0x01 pavilhão. Quando definido, MAC broadcastCAST Traf-
fic será habilitado. MAC tráfego Multicast / filtro de recepção _SPI_Ethernet_MULTI1 0x02 pavilhão. Quando definido, o tráfego multicast CASTMAC será habilitado. 2 0x04 não utilizado nenhum 3 0x08 não utilizado
none
4 0x10 não utilizado nenhum
CRC marca de verificação. Quando definido, os pacotes _SPI_Ethernet_CRC com o campo CRC inválido será descartado. 6 0x40 não utilizado nenhum 5 0x20
MAC tráfego Unicast / filtro de recepção pavilhão. 7 0x80 Quando definido, o MAC será o tráfego unicast _SPI_Ethernet_UNICAST
habilitado. Nota: Advance filtragem disponíveis no ENC28J60 módulo, como Padrão Partida, Magic Packet e Hash Table não pode ser habilitado por esta rotina. Adicionalmente, todos os filtros, exceto CRC, habilitado com essa rotina vai funcionar no modo de OR, o que significa que o pacote será recebi do se qualquer um dos filtros ativados aceita.
454
Nota: Esta rotina vaidemudar configuração do para filtro o receber Mikroelektronika - Soluções software e hardware mundoon-the-fly. embutidoNão será, no qualquer forma, mexer com ativar / desativar receber / transmitir a lógica ou qualquer outra parte o ENC28J60 módulo. A ENC28J60 módulo deve ser devidamente cofigured por
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Requer
módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.
Exemplo
SPI_Ethernet_ Enable (_ SPI_Ether net_CRC | _SPI_Eth ernet_UNI CAST); / / CRC permitir a verificação eo tráfego Unicast
Spi_Ethernet_Disable Protótipo
vazio SPI_Ethernet_Disable (unsigned char disFlt);
Retorna
Nada. Esta é a rotina MAC do módul o. Esta rotina desabilita o tráfego de rede apropri ada no o ENC28J60 módul o por meio de ela receber filtros (unicast, multicas t, broadcast, CDC). Tipo específico de tráfego de rede será desativada se um correspondente pouco de parâmetr o essa rotina de entrada está definido. Portanto, mais do que um tipo de redetráfego de trabalho pode ser desativado, ao mesmo tempo. Para este efeito, pré biblioteca constantes (ver tabel a abaix o) pode ser ORed para formar o valor de entrada apropri ad o. Parâmetros: - disFlt: tráfego de rede / receber bandeiras filtro. Cada bit corresponde a aprotráfego de rede adequado / filtro de recepção: biblioteca
Descrição
predefinidos const MAC tráfego Broadcast / receber bandeira filtro. Quando Spi_Ethernet_BRO 0 0x01 conjunto, MAC tráfego de difusão será desativado. ADCAST MAC tráfego Multicast / receber bandeira filtro. Quando Spi_Ethernet_MUL 1 0x02 definido, o tráfego multicast MAC será desativado. TICAST 2 0x04 não utilizado none
Descrição Mask Bit
3 0x08 não utilizado
none
4 0x10 não utilizado
none
CRC marca de verificação. Quando definido, verificação de CRC será 5 0x20 ser desativado e pacotes com CRC inválido Spi_Ethernet_CRC campo serão aceitos. 6 0x40 não utilizado 7 0x80
none
MAC tráfego Unicast / receber bandeira filtro. Quando Spi_Ethernet_UNI conjunto, MAC tráfego unicast será desativado. CAST
Nota: Advance filtragem disponíveis no ENC28J60 módulo, como Padrão Partida, Magic Packet e Hash Table não pode ser desativ a do por esta rotina. Mikroelektronika - Soluções de software e hardware para o mundo embutido Nota: Esta rotina vai mudar configuração do filtro receber on-the-fly. Não será, no qualquer forma, mexer com ativar / desativar receber / transmitir a lógica ou qualquer outra parte
455
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Requer
módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init.
Exemplo
SPI_Ethernet_Disable (_SPI_Ethernet_ CRC | _SPI_Ethernet_UNIC AST); / / verificação CRC desativar e tráfego Unicast
Spi_Ethernet_doPacket Protótipo
unsigned char SPI_Ethernet_doPacket ();
- 0 - Mediante o processamento de pacotes de sucesso (zero pacotes recebidos Retorna
Descrição
456
ou recebidos pacote processado com sucesso). - 1 - Aquand o erro de recepç ão ou receber corrupç ão buffer. ENC28J60 controlador precisa ser reiniciado. - 2 - O pacote recebi do não foi enviado para nós (não o nosso IP, nem ender eç o de broadc ast IP). -Esta 3 -é Recebeu pacotes IP nãoEle foi processa IPv4. a rotina de MAC do módulo. o pacote recebido seguinte se - 4 - Pacote recebido foi de tipo desconhecido para a biblioteca. existir. Os pacotes são processados da seguinte forma: - Requisições ARP e ICMP são respondidas automaticamente. - Mediante pedido T é a função Spi_Ethernet_T Apelou a mais processamento. - Mediante pedido UDP Spi_Ethernet_UDP a função é chamada para mais processamento.
Requer
Nota: Spi_Ethernet_doPacket deve ser chamado o mais rápido possível no código do usuário. módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
Exemplo
se (SPI_Ethernet_doPacket () == 0) ( 1) {/ / processo recebeu -pack ets ... }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Ethernet_putByte Protótipo
vazio SPI_Ethernet_putByte (unsigned char v);
Retorna
Nada.
Descrição
Esta é a rotina MAC do módulo. Ele armazena um byte para endereço apontado pela corrente aluguel ENC28J60 escrever ponteiro (EWRPT). Parâmetros:
Requer
- v: valor para armazenar módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
Exemplo
char dados; ... SPI_Ethernet_ putByte ( dados) / / colocar um byte no buffer ENC28J60
Spi_Ethernet_putBytes Protótipo
vazio SPI_Ethernet_putBytes (unsigne d char * Ptr, unsigned c har n);
Retorna
Nada. Este é o módulo MAC rotina. Ele armazena o número solicitado de bytes em ENC28J60 RAM a partir de correntes ENC28J60 escrever localização (EWRPT) ponteiro.
Descrição
Parâmetros: - ptr: RAM tampão contendo bytes a ser escrito em ENC28J60 RAM. - n: número de bytes a ser escrito.
Requer
módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
Exemplo
char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putBytes (buffer, 16); / / coloque em uma matriz de RAM buffer ENC28J60
Mikroelektronika - Soluções de software e hardware para o mundo embutido
457
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Ethernet_putConstBytes Protótipo
vazio SPI_Ethernet_putConstBytes (const unsigned char * Ptr, não assinado char n);
Retorna
Nada.
Descrição
Esta é a rotina MAC do módulo. Ele armazena o número de bytes solicitado em const ENC28J60 RAM a partir de correntes ENC28J60 escrever localização (EWRPT) ponteiro. Parâmetros:
Requer Exemplo
- ptr: buffer const contendo bytes a ser escrito em ENC28J60 RAM. - n: número de bytes a ser escrito. módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. const char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putConstBytes (buffer, 16); / / colocar um array em const ENC28J60 buffer
Spi_Ethernet_putString Protótipo
unsigned int SPI_Ethernet_putString (unsigned char * Ptr);
Retorna
Número de bytes escritos em ENC28J60 RAM.
Descrição
Esta é a rotina MAC do módulo. Ele armazena string todo (excluindo a terminação nula) em ENC28J60 RAM a partir de corrente ENC28J60 escrever localização (EWRPT) ponteiro. Parâmetros:
458
Requer
- ptr: string a ser escrita em ENC28J60 RAM. módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
Exemplo
char * Buffer = "mikroElektronika"; ... SPI_Ethernet_putString (buffer); / / coloque uma seqüência de RAM em ENC28J60 buffer
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Ethernet_putConstString Protótipo
unsigned int SPI_Ethernet_putConstString (const unsigned char * Ptr);
Retorna
Número de bytes escritos em ENC28J60 RAM. Esta é a rotina MAC do módulo. Ele armazena string const todo (excluindo a terminação
Descrição
nula) em ENC28J60 RAM a partir de corrent es ENC28J60 escrever localizaç ão (EWRPT ) ponteiro. Parâmetros:
Requer
- ptr: const string a ser escrita em ENC28J60 RAM. módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
Exemplo
const char * Buffer = "mikroElektronika"; ... SPI_Ethernet_ putConstS tring (bu ffer); / / colocar um const string e m buffer ENC28J60
Spi_Ethernet_getByte Protótipo
unsigned char SPI_Ethernet_getByte ();
Retorna
Byte lido ENC28J60 RAM.
Descrição Requer Exemplo
Esta é a rotina MAC do módulo. Ele busca um byte do endereço apontado pelo curaluguel ENC28J60 ponteiro de leitura (ERDPT). módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. char buffer; ... buffer = SPI_Ethernet_getByte (); / / lê um byte de ENC28J60 buffer
Mikroelektronika - Soluções de software e hardware para o mundo embutido
459
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Ethernet_getBytes Protótipo
vazio SPI_Ethernet_getBytes (unsigned char * Ptr, unsigned int addr, unsigned char n);
Retorna
Nada.
Descrição
Esta é a rotina MAC do módulo. Ele obtém o número de bytes de equested ENC28J60 RA M a par tir de deter minado endereç o. S e o val or da 0xFFFF é ado como o parâmetro de endereço, a leitura terá início a partir atual ENC28J60 leia ponteiro (ERDPT) local. Parâmetros: - ptr: buffer para armazenamento de bytes lidos ENC28J60 RAM. - addr: ENC28J60 RAM endereço de início. Valores válidos: 0 .. 8192. - n: número de bytes a serem ler.
460
Requer
módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init.
Exemplo
char buffer [16]; ... SPI_Ethernet_getBytes (buffer, 0x100, 16); / / lê 16 bytes, a partir do endereço 0x100
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Ethernet_T Protótipo
unsigned int SPI_Ethernet_T (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int localPort, unsigned int reqLength);
- 0 - Não deve haver uma resposta ao pedido. - Comprimento da T / resposta HTTP campo de dados - de outra forma.
Retorna
Esta é a rotina de módulo T. Ele é chamado internamente pela biblioteca. O o do
Descrição
usuário es para o pedido de T / HTTP usando algumas das rotinas SPI_Eth er net_g et. O usuário coloca os dados no buffer de transmis s ão usando alguns dos SPI_Ether net_put rotinas. A função deve retornar o tamanh o em bytes da resposta HTTP T / ou 0 se não há nada a transmitir. Se não há necessidade de responder ao T / HTTP pedidos, apenas definir esta função com retorno (0) como um única instrução. Parâmetros: -
Requer Exemplo
remoteHost : Endereço IP do cliente. RemotePort : Porta T cliente. localPort : Porta para que o pedido é enviado. reqLength : T / solicitação HTTP comprimento do campo de dados.
módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. Nota: O código fonte é forneci do com a função adequad as de exempl o. Essa função é chama do internam pelapara bibliotec e não deve ser chamado O código deve ser ajustado pelo ente usuário obtera resposta desejada. pelo o código de usuário.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
461
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Ethernet_UDP Protótipo
unsigned int SPI_Ethernet_UDP (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int destPort, unsigned int reqLength);
Retorna
- 0 - não deve haver uma resposta ao pedido. - Comprimento do campo de dados UDP resposta - outra forma.
Descrição
Esta é a rotina de módulo UDP. Ele é chamado internamente pela biblioteca. O o do usuário es para o pedido UDP usando alguns dos SPI_Ethernet_get rotinas. O usuário coloca os dados no buffer de transmis s ão usando algumas das rotinas SPI_Ether net_put. A função deve retornar o tamanho em bytes da resposta UDP, ou 0 nada a se trans mitir . Se você não precisa responder às solicitações UDP, basta definir esta função com um retorno (0) como única instrução. Parâmetros: - remoteHost : Endereço IP do cliente. - RemotePort : Porta do cliente. - destPort : Porta para que o pedido é enviado. - reqLength : Pedido UDP comprimento do campo de dados.
Requer Exemplo
módulo Ethernet deve ser inicializado. Veja Spi_Ethernet_Init. Nota: O código fonte da função é forneci da com exempl os de projetos adequad os . Essa função é chama do internam pelapara bibliotec a resposta e não deve ser chamado O código deve ser ajustado pelo ente usuário obter desejada. pelo código de usuário.
SPI_Ethernet_getIpAddress Protótipo
unsigned char * SPI_Ethernet_getIpAddress ();
Retorna
Ponter para a variável global exploração endereço IP.
Descrição
Requer
Exemplo
462
Essa rotina deve ser utilizada quando o servidor DH está presente na rede para buscar IP atribuído endereço. Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em que é buffer próprio ender eç o IP. Estes locais não devem ser alterados pelo usuário, em qualquer caso. módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só. unsigned char endereçoip [4] / / endereço IP do usuário buffer ... memy (ipaddr, SPI_Ethernet_getIpAddress (), 4); / / recupera o endereço IP
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Ethernet_getGwIpAddress Protótipo
unsigned char * SPI_Ethernet_getGwIpAddress ();
Retorna
Ponter para a variável global exploração endereço IP do gateway. Essa rotina deve ser utilizada quando o servidor DH está presente na rede para buscar atribuído o endereço IP do gateway.
Descrição O usuário deve: Nota sempre copiar o endereço IP do local de RAM retornado por esta rotina em seu próprio gateway buffer endereço IP. Estes locais não devem ser alteradas pelo usuário, em qualquer caso! Requer
módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.
Exemplo
unsigned char gwIpAddr [4]; / / gateway buffer endereço IP ... memy (gwIpAddr, SPI_Ethernet_getGwIpAddress (), 4); / / recupera -gate endereço IP como
SPI_Ethernet_getDnsIpAddress Protótipo
unsigned char * SPI_Ethernet_getDnsIpAddress ()
Retorna
Ponter para a variável global exploração DNS o endereço IP. Essa rotina deve ser utilizada quando o servidor DH está presente na rede para buscar atribuído endereço IP do DNS.
Descrição Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por esta rotina em seu própri o buffer DNS o ender eç o IP. Estes locais não devem ser alteradas pelo usuário, em qualquer caso. Requer
módulo Ethernet tem para ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só.
Exemplo
unsigned char dnsIpAddr [4]; / / tampão DNS o endereço IP ... memy (dnsIpAddr, SPI_Ethernet_getDnsIpAddress (), 4); / / busca Endereço do servidor DNS
Mikroelektronika - Softwares e soluções de hardware para Embedded World
463
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Ethernet_getIpMask Protótipo
unsigned char * SPI_Ethernet_getIpMask ()
Retorna
Ponter para a variável global exploração IP, máscara de sub-rede.
Descrição
Essa rotina deve ser utilizada quando o servidor DH está presente na rede para buscar máscara IP atribuídos. Nota: O usuário deve semp re copia r o endereç o IP do local de RAM
Requer
Exemplo
retorn ad o módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. por este rotina seu próprio IP buffer máscara. Estes Disponível paraem microcontroladores da família PIC18 só.locais não devem ser alteradas pelo usuário, em qualquer caso. unsigned char IPMask [4] / / IP do usuário buffer máscara ... memy (IPMas k, SPI_Et hernet_ge tIpMask ( ), 4); / / busca d e sub -red e IP máscara
SPI_Ethernet_confNetwork Protótipo
vazio SPI_Ethernet_confNetwork (char * IPMask, char * GwIpAd dr, char * DnsIpAddr);
Retorna
Nada. Configura os parâmetros de rede (IP, máscara de sub-rede, endereço de gateway IP, DNS IP endereço) quando o DH está não utilizados.
Descrição
Parâmetros: - IPMask: máscara de sub-rede IP. - gwIpAddr endereço IP do gateway. - dnsIpAddr: DNS o endereço IP. Nota: Os parâm e tro s de rede acima mencio n a d as devem ser fixad as por
Requer
Exemplo
464
módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. esta rotin a Disponível para microcontroladores da família PIC18 só. somente se o módul o de DH não é usada. Caso contrári o, o DH irá char IPMask [4] = {255, 255, 255, 0}; / máscara de rede / (para substitui r essas configur aç õ es exemplo: 255.255.255.0) char gwIpAddr [4] = {192, 168, 1, 1}; / gateway / (Roteador) endereço IP char dnsIpAddr [4] = {192, 168, 1, 1} / / IP do servidor DNS endereço ... SPI_Ethernet_confNetwork (IPMask, gwIpAddr dnsIpAddr); / / set parâmetros de configuração de rede
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Ethernet_arpResolve Protótipo
unsigned char * SPI_Ethernet_arpResolve (unsigned char * Ip, não assinado char tmax);
Retorna
- Ender eç o MAC para trás o ender eç o IP - o ender eç o IP solicitado foi resolvido. - 0 - De outra forma.
Descrição
Esta é a rotina do módul o ARP. Ele envia uma solicitaç ão ARP para deter mi nad o ender eç o IP e aguar da resposta ARP. Se o ender eç o IP solicitado foi resolvido, uma entrada de caixa ARP é usado para armazenar a configuração. dinheiro ARP pode armazenar até 3 entradas. Para ARP referem-se a estrutura de caixa "Eth_enc28j60LibDef.h" arquivo de cabeçalho na década de compilador Uses/P18 pasta. Parâmetros:
Requer
Exemplo
- IP: endereço IP a ser resolvido. - tmax: tempo em segundos para esperar por uma resposta. módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores família PIC18 só. enquanto esta rotina Nota: Os serviços de Ethernet nãodasão interrompidos unsigned char IpAddr [4] = {192, 168, 1, 1} / / endereço IP aguarda ARP ... SPI_Ethernet_arpResolve (IpAddr, 5); / / pega o endereço MAC por trás da a resposta. Os pacotes de entrada serão processados normalmente durante acima do IP Endereço, aguarde 5 segundos para a resposta este tempo.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
465
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Ethernet_sendUDP Protótipo
unsigned char SPI_Ethernet_sendUDP (unsigned char * DestIP, não assinado int sourcePort, unsigned int destPort, unsigned char * Pkt, não assinado int pktLen);
Retorna
- 1 - Pacote UDP foi enviada com sucesso. - 0 - De outra forma. Esta é a rotina de módulo UDP. Ele envia um pacote UDP na rede. Parâmetros:
Descrição
Requer
Exemplo
466
-
DestIP: endereço IP do host remoto. sourcePort: porta de origem UDP local número. destPort: destino número da porta UDP. PKT: pacotes para transmitir. pktLen: comprimento em bytes do pacote para transmitir.
módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só. não assinado char IpAddr [4] = {192, 168, 1, 1} / / IP remoto endereço ... SPI_Ethernet_ sendUDP ( IpAddr, 1 0001, 100 01, "Olá" , 5); / / envia Olá mensagem para o endereço IP acima, de porta UDP 10001 para A porta UDP 10001
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Ethernet_dnsResolve Protótipo
unsigned char * SPI_Ethernet_dnsResolve (unsigned char * Host, unsigned char tmax);
Retorna
- Ponteir o para o local onde o ender eç o IP - o nome do host solicitado foi resolvido. - 0 - De outra forma. Este é o DNS módul o de rotina. Ele envia um pedido DNS para deter mi na do
Descrição
nome de host e aguar da resposta do DNS. Se o nome do host solicitado foi resolvido, o seu ender eç o IP é armaz enado na variável global bibliotec a e um ponteir o que contém este ender eç o é retornado por a rotina. UDP porta 53 é usada como porta de DNS. Parâmetros: -Host: nome do host para ser resolvido. -Tmax: tempo em segundos para esperar por uma resposta. Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina
Requer
Exemplo
aguarda DNS a resposta. Os pacotes de entrada serão processados normalmente durante módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. este tempo. Disponível para microcontroladores da família PIC18 só. Nota: O usuário deve sempre copiar o endereço IP do local de RAM retornado por unsigned char * RemoteHostIpAddr [4] / / endereço IP do host do usuário esta rotina em seu próprio host resolvido buffer ender eç o IP. Esses locais devem buffer não podem ser alteradas pelo usuário, em qualquer caso. ... / / Servidor SNTP: / Zurique / Suíça: Laboratório de Si stemas Integráveis, da S uíça Fed. Inst. de Tecnologia / / 129.132.2.21: swisstime.ethz.ch / / Área de serviço: Suíça e Europa memy (remoteHostIpAddr, SPI_Ethernet_dnsResolve ("swisstime.ethz.ch", 5), 4);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
467
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Ethernet_initDH Protótipo
unsigned char SPI_Ethernet_initDH (unsigned char tmax);
Retorna
- 1 - Parâmetros de rede foram obtidos com sucesso. - 0 - De outra forma. Esta é a rotina de módul o de DH. Ele envia um pedido DH para os parâmetr os de rede (IP, gateway , DNS e ender eç os IP, másc ar a de sub-red e) e aguar da resposta de DH . Se os parâmetr os solicitados foram obtidos com sucesso, seus valores são armaz enados em a biblioteca de variáveis globais. Estes parâmetr os podem ser obtidos atrav és da utilizaç ão adequ ada bibliotec a IP
Descrição
começ ar rotinas : - SPI_Ethernet_getIpAddress - buscar o endereço IP. - SPI_Ethernet_getGwIpAddress - buscar endereço IP do gateway. - SPI_Ethernet_getDnsIpA ddress - buscar DNS o endereço IP. - SPI_Ethernet_getIpMask - buscar IP, máscara de sub-rede. Porta UDP 68 é usado como um cliente DH e porta UDP 67 é usado como serv DH er porta. Parâmetros: - Tmax: tempo em segundos para esperar por uma resposta.
Nota: Os serviços de Ethernet não são interrompidos enquanto esta rotina Requer
Exemplo
módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. aguarda DNS Disponível para microcontroladores da família PIC18 só. a resposta. Os pacotes de entrada serão processados normalmente durante ... este tempo.
SPI_Ethernet_initDH (5); / / obter a configuração de rede DH servidor, aguarde 5 segundos para a resposta Nota: Quando o módulo de DH é usado, variável biblioteca global ... SPI_Ethernet_ Time rSec é usado para controlar o tempo. É responsabilidade do usuário
dade para aumentar esta variável a cada segundo em que é código.
468
Mikroelektronika - Softwares e soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Ethernet_doDHLeaseTime Protótipo
unsigned ch ar SPI_E thernet_ doDHLe aseTime ();
Retorna
- 0 - Tempo de concessão ainda não tenha terminado ainda. - 1 - Locação tempo expirou, é hora de renovar. Esta é a rotina de módulo de DH. Ela cuida de concessão de endereço IP vez
Descrição
Requer
Exemplo
por decrea biblioteca de tempo de execução global de locação contador. Quando esse tempo expirar, é hora de módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. contato com o servidor DH e renovar o locação. Disponível para microcontroladores da família PIC18 só. while (1) { ... if (SPI_Ethernet_doDHLeaseTime ()) ... / / É hora de renovar o endereço IP }
SPI_Ethernet_renewDH Protótipo
unsigned char SPI_Ethernet_renewDH (unsigned char tmax);
Retorna
- 1 - Em caso de sucesso (tempo de concessão foi renovada). - 0 - De outra forma (pedido de renovação expirou).
Descrição
Esta é a rotina de módul o de DH. Ele envia conces s ão de ender eç o IP do tempo solicitação de renov aç ã o de Servidor DH. Parâmetros:
Requer
Exemplo
- tmax: tempo em segundos para esperar por uma resposta. módulo Ethernet deve ser inicializado. Veja SPI_Ethernet_Init. Disponível para microcontroladores da família PIC18 só. while (1) { ... if (SPI_Ethernet_doDHLeaseTime ()) SPI_Ethernet_renewDH (5); / / é hora de renovar o IP concessão de endereço, com 5 segundos para uma resposta ... }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
469
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca Este código mostra como usar o mini-biblioteca Ethernet: - O conselho vai responder a ARP e ICMP echo requests - O conselho vai responder a UDP pedidos em qualquer porta:
devolve o pedido de char superior com um cabeçalho feito de IP da máquina remota e número da porta - O conselho vai responder a solicitações HTTP na porta 80, com o método GET caminhos: / Vai retornar a página HTML principal / S irá retornar o status da placa como texto / T0 ... / T7 irá mudar para RD0 RD7 pouco e retornar HTML página principal todos os outros pedidos de retorno também HTML página principal. / Duplex / config bandeiras # Define Spi_Ethernet_HALFDUPLEX # Define Spi_Ethernet_FULLDUPLEX
0x00 0x01
/ Half duplex / / / Full duplex
/ / ME ehternet pinagem NIC sbit sfr SPI_Ethernet_Rst em RC0_bit; sbit sfr SPI_Ethernet_CS em RC1_bit; sbit sfr SPI_Ethernet_Rst_Direction em TRISC0_bit; sbit sfr SPI_Ethernet_CS_Direction em TRISC1_bit; / / Fim ethernet NIC definições /************************************************* *********** * Cordas ROM constante * / const unsigned char httpHeader [] = "HTTP/1.1 200 OKnContent tipo:" / / Cabeçalho HTTP const unsigned char httpMimeTyp eHTML [] = "text / htmln n"; / / Tipo de MIME HTML const unsigned char httpMimeTypeScript [] = "text plainnn /"; / / Tipo MIME TEXTO unsigned char HttpMethod [] = "GET /"; / * * Página web, divididos em 2 partes: * Quando chegar curto de ROM, os dados fragmentado é tratado mais eficientemente pelo linker * * Esta página HTML chama as placas para obter o seu estatuto, e constrói se com javascript * / const char * Indexpage = / / Mude o endereço IP da página para ser atualizada "<meta Http-equiv="refresh" content="3;url=http://192.168.20.60">
470
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
PIC + ENC28J60 mini servidor web Recarregar src=/s> <script
6b5973
borda da tabela <= 1 style = "font -size: 20px ; Font-family: terminal "> |
|
colspan=2> ADC
AN2 <script> document.write (AN2) |
AN3 <script> document.write (AN3) borda da tabela <= 1 style = "font -size: 20px; font-family: terminal "> |
PORTB <script> var str, i; str = ""; for (i = 0; i <8; i + +) {Str + = " |
# botão" + i + ""; if (PORTB e (1 < ON" ;} mais str document.write (str); < script>
"; * IndexPage2 = " const char
PORTD <script> var str, i; str = ""; for (i = 0; i <8; i + +) {Str + = "bgcolor=yellow> |
"; if (PORTD & (1 < ON" ;} mais str i + rel="nofollow">
Toggle Este é requisição HTTP # <script> Document.write (REQ) "; /*********************************** RAM variáveis * * / unsigned char myMacAddr [6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f}; / / Meu endereço MAC unsigned char myIpAddr [4] = {192, 168, 20, 60}; / / IP do meu endereço unsigned char GetRequest [15] / / buffer solicitação HTTP
Mikroelektronika - Soluções de software e hardware para o mundo embutido
471
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas unsigned char unsigned long
dyna [30]; / / buffer para a resposta dinâmica httpCounter = 0 / / contador de requisições HTTP
/******************************************* * funções * / / * * Colocar a string constante apontada por s ao ENC buffer de transmissão. * / / * PutConstString unsigned int (const char * s) { ctr unsigned int = 0; while (* s) { Spi_Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / * / * * Ele vai ser muito mais rápido de usar a biblioteca Spi_Ethernet_putConstString rotina * Em vez de putConstString rotina acima. No entanto, o código será ser um pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com o def-putConstString rial acima * A linha # define abaixo devem ser comentadas. * * / # Define putConstString SPI_Ethernet_putConstString / * * Colocar a string apontada por s ao ENC buffer de transmissão * / / * PutString unsigned int (char * s) { ctr unsigned int = 0; while (* s) { Spi_Ethernet_putByte (* s + +); ctr + +; } retorno (CTR); } / *
472
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
/ * * Ele vai ser muito mais rápido de usar a biblioteca Spi_Ethernet_putString roudente * Em vez de putString rotina supra. No entanto, o código será uma pouco * Pouco maior. O usuário deve escolher entre tamanho e velocidade e escolher o implementação que suites * best-lo. Se você optar por ir com a definição putString ção acima * A linha # define abaixo devem ser comentadas para fora. * * / # Define putString SPI_Ethernet_putString / * * Esta função é chamada pela biblioteca * O usuário a o pedido HT TP por chamadas suce ssivas para Spi_Ethernet_getByte () * O usuário coloca os dados no buffer de transmissão por chamadas sucessivas para Spi_Ethernet_putByte () * A função deve retornar o tamanho em bytes da resposta HTTP, ou 0 se nada para transmitir * * Se você não precisa de responder a pedidos HTTP, * Apenas definir essa função com um return (0) como única instrução * * / unsigned int SPI_Ethernet_T (unsigned char * RemoteHost, unsigned int RemotePort, unsigned int localPort, unsigned int reqLength) { unsigned int len = 0; / / comprimento resposta minha i / / inteiro de uso geral unsigned int if (localPort! = 80) / / Eu ouço apenas para solicitação da web na porta 80 { return (0); } / / Obtém 10 bytes primeiro, somente o pedido, o resto não importa aqui for (i = 0; i <10; i + +) { GetRequest [i] = SPI_Ethernet_getByte (); } GetRequest [i] = 0; if (memcmp (GetRequest, HttpMethod, 5)) método é ado aqui {
Mikroelektronika - Soluções de software e hardware para o mundo embutido
/ / Só Começar
473
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas return (0); } httpCounter + +;
/ / Mais um pedido feito
if (GetRequest [5] 's' ==) / / se o nome do caminho começa a pedido com s, armazenamento de dados dinâmicos buffer de transmissão { / / A string de texto respondeu por essa solicitação pode ser interpretadas como declarações de javascript / / Por navegadores putConstString len = (httpHeader); / / cabeçalho HTTP len + = putConstString (httpMimeTypeScript) / / com tipo MIME de texto / / Adiciona valor AN2 para responder IntToStr (ADC_Read (2), Dyna); len + = putConstString (AN2 var = "); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona valor AN3 para responder IntToStr (ADC_Read (3), Dyna); len + = putConstString ("AN3 var ="); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona valor PORTB (botões) para responder len + = putConstString (PORTB var = "); IntToStr (PORTB, Dyna); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona valor PORTD (LEDs) para responder len + = putConstString ("PORTD var ="); IntToStr (PORTD, dyna); len + = putString (Dyna); len + = (";"); putConstString / / Adiciona os pedidos HTTP contador para responder IntToStr (httpCounter, Dyna); len + = putConstString (REQ var = "); len + = putString (Dyna); len + = (";"); putConstString } else if (GetRequest [5] == 't') / / se o nome do caminho começa a pedido com t, alternar PORTD núm ero de bits (LED) que vem depois { unsigned char bitmask = 0; / máscara de bits para
474
Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
if (GetReque st (isdi git [6])) / / se 0 <= núm ero de bi ts <= 9, 8 e 9 bits não existe, mas não matéria { bitmask GetR equest = [6] - '0 '; / / converte r ASCII para um inteiro máscara de b its = 1
Mikroelektronika - Soluções de software e hardware para o mundo embutido
475
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
ByteToStr (remoteHost [1], dyna + 4) / / segundo dyna [7] = '.'; ByteToStr (remoteHost [2], dyna + 8) / / terceiro dyna [11] = '.'; ByteToStr (remoteHost [3], dyna + 12) / / quarta dyna [15] = ':';
/ / Adiciona o separador
/ / Número da porta, em seguida, o anfitrião remoto WordToStr (RemotePort, dyna + 16); dyna [21] '['; WordToStr (destPort, dyna + 22); dyna [27] ']'; dyna [28] = 0; / / O comprimento total do ped ido é o comprimento do seqüência dinâmica mais o texto do pedido len = 28 + reqLength; / / Coloca a corda dinâmica no buffer de transmissão SPI_Ethernet_putBytes (dyna, 28 ); / / Em seguida, coloca a corda pedido convertido em alta char para o buffer de transmissão while (reqLength -) { SPI_Ethernet_putByte (toupper (SPI_Ethernet_getByte ())); } retorno (len); resposta UDP } / * * Entrada principal * / vazio main () { ANSEL = 0x0C; PORTA = 0; TRISA = 0xff; ANSELH = 0; PORTB = 0; TRISB = 0xff; PORTD = 0; TRISD = 0;
/ / Volta para a biblioteca co m o comprimento do
/ / AN2 e AN3 conversores serão utilizados / / Define PORTA como entrada para o ADC / / Configure outras AN pinos como I / O digital / PORTB set / como entrada para os botões
/ / Set PORTD como saída
/ *
476
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas * ENC28J60 começa com: * Pouco Reiniciado em RC0 * CS em pouco RC1 * Meu MAC e endereço IP * Full duplex * / SPI1_Init (); SPI_Ethernet_Init (myMacAddr, myIpAddr, Spi_Ethernet_FULLDU -
PLEX); while (1) / / Faz para sempre { / * * Se necessário, teste o valor de retorno para obter o código de erro * / SPI_Ethernet_doPacket (); / processo / incoming pacotes Ethernet / * * Adicionar suas coisas aqui, se necessário * Spi_Ethernet_doPacket () deve ser chamado o mais rápido possível * Caso contrário, os pacotes podem ser perdidos * / } }
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
477
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
478
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI biblioteca gráfica LCD A mik roC PRO para PIC fornece uma biblioteca para operacional 128x64 gráfico LCD (com comumente usado Samsung controlador KS108/KS107) via interface SPI. Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool. Nota: A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar o SPI módulo antes de usar o SPI LCD Gráfico Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. Nota: Esta biblioteca é projetado para trabalhar com o LCD serial mikroElektronika's / GLCD Pinagem do adaptador de mesa, ver esquema na parte inferior da página para obter mais detalhes.
As dependências externas do SPI LCD Gráfico Biblioteca A implementação do SPI Gráfica rotinas Lcd Biblioteca é baseado em Port Expander Biblioteca de rotinas. As dependências externas são as mesmas dependências do Porto Biblioteca Expander externaCIES.
Rotinas da biblioteca rotinas básicas: - SPI_Glcd_Init - SPI_Glcd_Set_Side - SPI_Glcd_Set_Page - SPI_Glcd_Set_X - SPI_Glcd_Read_Data - SPI_Glcd_Write_Data rotinas avançadas: - SPI_Glcd_Fill - SPI_Glcd_Dot - SPI_Glcd_Line - SPI_Glcd_V_Line - SPI_Glcd_H_Line - SPI_Glcd_Rectangle - SPI_Glcd_Box - SPI_Glcd_Circle Mikroelektronika - Soluções de software e hardware para o mundo embutido
479
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas - SPI_Glcd_Set_Font - SPI_Glcd_Write_Char - SPI_Glcd_Write_Text - SPI_Glcd_Image
Spi_Glcd_Init Protótipo
vazio SPI_Glcd_Init (DeviceAddress char);
Retorna
Nada. Inicializa o módulo GLCD via interface SPI.
Descrição
Parâmetros: - DeviceAddress: ender eç o de hardwar e spi expans or, ver esquem a na final desta página As variáveis globais: - SPExpanderCS: Chip Selecionar linha
Requer
- SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset
deve ser definida antes usar essa função. O módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.
Exemplo
/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander ... / / Se a po rta Expa nder Bib lioteca utiliza o módul o SPI: SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Glcd_Init (0);
480
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Glcd_Set_Side Protótipo
vazio SPI_Glcd_Set_Side (char x_pos;
Retorna
Nada. Seleciona lado GLCD. Consulte a ficha GLCD para explicação detalhe. Parâmetros:
Descrição
- X_pos: posição no eixo-x. Valores válidos: 0 .. 127
O parâmetro x_pos especifica o lado GLCD: valores 0-63 especificar o lado esquerdo, os valores de 64-127 especificar o lado direito. Nota: Para lateral, eixo x e explicaç ão de layou t de págin a ver esquem a em
Requer
Exemplo
baixo GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init. desta página. As duas linhas seguintes são equival entes , e ambos selecione no lado esquer do da GLCD: SPI_Glcd_Set_Side (0); SPI_Glcd_Set_Side (10);
SPI_Glcd_Set_Page Protótipo
vazio SPI_Glcd_Set_Page (char página);
Retorna
Nada. Seleciona a página de GLCD. Parâmetros:
Descrição - Página: número da página. Valores válidos: 0 .. 7
Nota: Para lateral, eixo x e explicaç ão de layou t de págin a ver esquem a em Requer
baixo GLCD precisa ser inicializado para comunicação SPI, consulte rotinas SPI_Glcd_Init. desta página.
Exemplo
SPI_Glcd_Set_Page (5);
Mikroelektronika - Software e Soluções de hardware para Embedded World
481
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Glcd_Set_X Protótipo
vazio SPI_Glcd_Set_X (char x_pos);
Retorna
Nada. Define eixo-x posição de x_pos pontos a partir da margem esquerda do GLCD dentro do selectlado ed.
Descrição
Parâmetros: - X_pos: posição no eixo-x. Valores válidos: 0 .. 63
Nota: Para lateral, eixo x e explicaç ão de layou t de págin a ver esquem a em Requer Exemplo
GLCD baixo necessidades para ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init. desta página. SPI_Glcd_Set_X (25);
Spi_Glcd_Read_Data Protótipo
char SPI_Glcd_Read_Data ();
Retorna
Um byte de memória GLCD.
Descrição
Lê os dados a partir da localização atual do GLCD memória e move-se para o próximo Local. GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.
Requer
Exemplo
482
lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as funções char dados; SPI_Glcd_Set_Side, SPI_Glcd_Set_X e SPI_Glcd_Set_Page. ... = dados SPI_Glcd_Read_Data ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Glcd_Write_Data Protótipo
vazio SPI_Glcd_Write_Data (char Ddata);
Retorna
Nada.
Descrição
Grava um byte para a posição atual em GLCD memóri a e move -s e para a próxi ma Local. Parâmetros: - Ddata: dados a serem gravados GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.
Requer
Exemplo
lado GLCD posição, eixo-x e de página deve ser definido primeiro. Veja as funções char dados; SPI_Glcd_Set_Side, SPI_Glcd_Set_X e SPI_Glcd_Set_Page. ... SPI_Glcd_Write_Data (dados);
SPI_Glcd_Fill Protótipo
vazio SPI_Glcd_Fill (char padrão);
Retorna
Nada. Preenche com o byte de memória GLCD padrão. Parâmetros:
Descrição
- Padrão: byte de memória para preencher GLCD com
Para limpar a tela GLCD, use SPI_Glcd_Fill (0). Para preencher a tela completamente, use SPI_Glcd_Fill (0xFF). Requer
GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.
Exemplo
/ / Limpar ecrã SPI_Glcd_Fill (0);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
483
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Glcd_Dot Protótipo
vazio SPI_Glcd_Dot (char x_pos, char y_pos, char cor);
Retorna
Nada. Desenha um ponto na GLCD nas coordenadas (x_pos, y_pos). Parâmetros:
Descrição
- x_pos: x posição. Valores válidos: 0 .. 127 - y_pos: y posição. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2 O parâmetro cor determina o ponto estado: 0 limpa ponto, um coloca um ponto, e 2 inverte ponto estado. Nota: Para x e explicação layout eixo y ver esquema na parte inferior desta página.
Requer Exemplo
GLCD necessidades para ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init. / / Inverter o ponto no canto superior esquerdo SPI_Glcd_Dot (0, 0, 2);
SPI_Glcd_Line Protótipo
vazio SPI_Glcd_Line (int x_start, int y_start, int x_end, int y_end, char cor);
Retorna
Nada. Desenha uma linha na GLCD. Parâmetros:
Descrição
Requer Exemplo
484
- X_start: coordenada x do linha de partida. Valores válidos: 0 .. 127 - Y_start: coordenada - X_end: coordenada x 127 - Y_end: coordenada y - Cor: parâmetro cor.
y do início da linha. Valores válidos: 0 .. 63 da extremidade da linha. Valores válidos: 0 .. da linha final. Valores válidos: 0 .. 63 Valores válidos: 0 .. 2
Parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada dot. GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init. / / Desenha uma lin ha entre os pont os (0,0 ) e (20, 30) SPI_Glcd_Line (0, 0; 20, 30, 1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Glcd_V_Line Protótipo
vazio SPI_Glc d_V_Line (char y_s tart, cha r y_end, char x_po s, char cor);
Retorna
Nada. Desenha uma linha vertical na GLCD. Parâmetros:
Descrição
-Y_start: coordenada y - y_end: coordenada - x_pos: coordenada - cor: parâmetro de
do início da linha. Valores válidos: 0 .. 63 y da linha final. Valores válidos: 0 .. 63 x da linha vertical. Valores válidos: 0 .. 127 cor. Valores válidos: 0 .. 2
Parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto. Requer
GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Glcd_Init.
Exemplo
/ / Desenha uma linha vertical entre os pontos (10,5) e (10,25) SPI_Glcd_V_Line (5, 25, 10, 1);
SPI_Glcd_H_Line Protótipo
vazio SPI_Glc d_H_Line (char x_s tart, cha r x_end, char y_po s, char cor);
Retorna
Nada. Desenha uma linha horizontal sobre GLCD. Parâmetros:
Descrição
- x_start: coordenada x do início da linha. Valores válidos: 0 .. 127 - x_end: coordenada x da extremidade da linha. Valores válidos: 0 .. 127 - y_pos: coordenada y da linha horizontal. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2
Requer Exemplo
O parâmetro cor determina a cor da linha: 0 branco, 1 preto e 2 inverte cada ponto. GLCD precisa ser inicializado para a comunicação 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 - Soluções de software e hardware para o mundo embutido
485
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_Glcd_Rectangle Protótipo
vazio SPI_Glcd_Rectangle (char x_upper_left, char y_upper_left, char x_bottom_right, char y_bottom_right, char cor);
Retorna
Nada. Desenha um retângulo na GLCD. Parâmetros: - x_upper_left: coordenada x do canto superior esquerdo do retângulo. Valores válidos:
Descrição
0 .. 127 - y_uppe r_left: coordena da y do canto superior esquerdo do retângu lo. Valores válidos: 0 . . 63 - x_bottom_right: coordenada x menor canto direito do retângulo. Válido val-
ues: 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito do retângulo. Válido val-
Requer Exemplo
ues: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2 GLCD precisa ser inicializado para a comunicação SPI, consulte rotinas Spi_Glcd_Init. O parâmetro cor determina a cor da borda do retângulo: 0 branco, 1 / / Desenha xa ponto. entre os pont os (5,1 5) e (20 ,40) inverte preto, euma 2 decai cada Spi_Glcd_Box (5, 15, 20, 40, 1);
SPI_Glcd_Box Protótipo
vazio SPI_Glcd_Box (char x_upper_left, char y_upper_left, char x_bottom_right, char y_bottom_right, char cor);
Retorna
Nada. Desenha uma caixa de GLCD. Parâmetros: - x_upper_left: coordenada x da caixa de canto superior esquerdo. Valores
Descrição
válidos: 0 .. 127 - y_upper_left: y coordenadas do canto s uperior es querdo c aixa. V alor es v álidos: 0 .. 63 - x_bottom_ri ght: c oordenada x d o canto infer ior dir eito c aixa. V alores váli dos : 0 .. 127 - y_bottom_right: coordenada y do canto inferior direito caixa. Valores válidos: 0 .. 63 - cor: parâmetro de cor. Valores válidos: 0 .. 2
Requer
GLCD precisa ser inicializado SPI, hiconsulte SPI_Glcd_Init. A cor parâmetr o deter mi na apara cor adacomunicação caixa de preenc me nto: rotinas 0 branco, um preto, e
Exemplo
/ / Desenha uma cai xa entre os pont os (5,1 5) e (20 ,40) 2SPI_Glcd_Box (5, 15, 20, 40, 1);
inverte cada ponto.
486
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI_Glcd_Circle Protótipo
vazio SPI_Glcd_Circle (int x_center, int y_center, int raio, char cor);
Retorna
Nada. Desenha um círculo em GLCD.
Descrição
Parâmetros: - x_center: coordenada x do centro do círculo. Valores válidos: 0 .. 127 - y_center: coordenada y do centro do círculo. Valores válidos: 0 .. 63 - Raio: Raio de tamanho - cor: parâmetro de cor. Valores válidos: 0 .. 2
Requer Exemplo
O parâmetro cor determina a cor da linha do círculo: 0 branco, um negro, e 2 inverte cada ponto. GLCD precisa ser inicializado para a comuni c aç ão SPI, ver SPI_Glcd_Ini t rotina. / / Desenha um círculo com cen tro em (50,50) e rai o = 10 SPI_Glcd_Circle (50, 50, 10, 1);
SPI_Glcd_Set_Font Protótipo
vazio SPI_Glcd_Set_Font (código const char * ActiveFont, char aFontWidth, char aFontHeight, unsigned int aFontOffs);
Retorna
Nada. Define a fonte que será usada com SPI_Glcd_Write_Char e SPI_Glcd_Write_Text rotinas. Parâmetros: - activeFont: fonte a ser definido. Precisa ser formatado como uma
Descrição matriz de char
Requer Exemplo
- aFontWidth: largura dos caracteres da fonte em pontos. - aFontHeight: altura dos caracteres da fonte em pontos. - aFontOffs: número que representa a diferença entre o mikroC PRO charcional conjunto e definir ASCII regul ar (por exempl o, se 'A' é 65 de caracter es ASCII, e "A" é de 45 no conjunto de caracteres mikroC PRO, aFontOffs é 20). Demo fornecido com fontes a biblioteca tem um deslocamento de 32, o que significa que eles começam com GLCD precisa ser inicializado para a SPI comunicação, consulte rotinas SPI_Glcd_Init. o espaço. / / Use o costume 5x7 fonte "MyFont", que começa com o espaço (32): O usuári o pode usar fontes de dados no 32); arquiv o "__Li b_G lc d_fo nts " arquiv o SPI_Glcd_Set_Font (MyFont, 5, 7,
localizado na Mikroelektronika - Soluções de software e hardware para o mundo embutido Usa pasta ou criar sua próprias fontes ..
487
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Glcd_Write_Char Protótipo
vazio SPI_Glcd_Write_Char (char Chr1, char x_pos, char page_num, char cor);
Retorna
Nada. Imprime personagem em GLCD. Parâmetros:
Descrição
- Chr1: caractere a ser escrito - x_pos: posição do caractere a partir de eixo-x. Valores válidos: 0 .. (127-FontWidth) - page_num: o número da página na qual personagem vai ser escrito. Válido valores: 0 .. 7 - cor: cor parâmetro. Valores válidos: 0 .. 2 O parâmetro cor determina a cor do personagem: 0 branco, um negro, e 2 inverte cada ponto. Nota: Para eixo x e explicação de layout de página ver esquema na parte
Requer
Exemplo
488
inferior da GLCD precisa ser inicializado para comunicação SPI, consulte rotinas SPI_Glcd_Init. esta página. Use o SPI_Glcd_Set_Font para especificar a fonte para exibição, se nenhuma fonte é especificada, / / Escreve 'C' personagem no posição 10 no interior da página 2: o padrão 5x8 fonte fornecida a biblioteca SPI_Glcd_Write_Char ('C',com 10, 2, 1); será usada.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Glcd_Write_Text Protótipo
vazio SPI_Glcd_Write_Text (char [tex to] char x_pos, char pag e_num, char cor);
Retorna
Nada. Imprime texto na GLCD. Parâmetros:
Descrição
- texto: texto a ser escrito - x_pos: posição do texto a partir de eixo-x. - page_num: o número da página onde o texto será escrito. Valores válidos: 0 .. 7 Cor: parâmetro de cor. Valores válidos: 0 .. 2 O parâmetro cor determina a cor do texto: 0 branco, um preto, e 2 inverte cada ponto. Nota: Para eixo x e explicação de layout de página ver esquema na parte
Requer
Exemplo
inferior da GLCD precisa ser inicializado para a comunicação SPI, ver SPI_Glcd_Init rotinas. esta página. Use o SPI_Glcd_Set_Font para especificar a fonte para exibição, se nenhuma fonte é especificada, / / Escreve o texto "Olá mundo!" na posição 10 no interior da página 2: o padrão 5x8 fonte fornecida a biblioteca será1); usada. SPI_Glcd_Write_Text ("Olácom mundo!", 10, 2,
Mikroelektronika - Soluções de software e hardware para o mundo embutido
489
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Glcd_Image Protótipo
vazio SPI_Glcd_Image (código const char * Imagem);
Retorna
Nada. Exibe bitmap em GLCD. Parâmetros:
Descrição
- imagem: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os códigos e Memória RAM (devido à mikroC PRO PIC para ponteiro para ponteiro para const e RAM de equivalência).
Requer Exemplo
Use o mikroC PRO opção integrada GLCD Bitmap Editor ( Ferramentas > GLCD precisa ser inicializado para comunicação SPI, consulte rotinas SPI_Glcd_Init. GLCD Bitmap Editor) para converter a imagem para uma matriz constante / / Desenhapara my_image imagem GLCD apropriada exibição SPI_Glcd_Image (my_image); ção em GLCD.
Exemplo Biblioteca O exemplo demonstra como se comunicar com KS0108 GLCD através do módulo SPI, usando seri al de paralela conversor M23S17. const char código truck_bmp [1024]; / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander vazio Delay2s () { Delay_ms (2000); }
/ / 2 segundos, função de atraso
vazio main () { char * SomeText; char contador; / / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander //
490
/ / Se a porta Expander Biblioteca utiliza o módulo SPI2
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC / /
Bibliotecas SPI2_Init ();
/ / Iniciali zar SPI módulo us ado com PortExpa nder
SPI_Glcd_Init (0); SPI_Glcd_Fill (0x00);
/ / Inicializar GLCD via SPI / / Limpar GLCD
while (1) { SPI_Glcd_Image (truck_bmp); Delay2s (); Delay2s (); SPI_Glcd_Fill (0x00); Delay2s; 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 ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
/ / Desenha a imagem
/ / Limpar GLCD
/ / Desenha caixa / / Desenha retângulo / / Desenha uma linha
/ / Desenha horizonte
/ / Limpar GLCD / Font Escolha / v. / / Escreve a string / / Desenha círculos
/ / Desenha caixa
/ / Preencha GLCD / / Alterar a fonte / / Escreve a string
/ / Alterar a fonte / / Escreve a string
491
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas 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
SPI_Glcd_Set_Font (FontSystem5x7_v2, 5, 7, 32); / font / Alterar someText = "5x7 Fonte (v2)"; SPI_Glcd_Write_Text (someText, 5, 7, 2) / / Escreve o texto Delay2s (); } }
Conexão HW
SPI GLCD conexão HW
492
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI LCD BIBLIOTECA A mik roC PRO para PIC fornece uma biblioteca para comunicação com LCD (com controladores HD44780 compatível) em modo de 4 bits via interface SPI. Para criar um conjunto personalizado de caracteres LCD usam LCD personalizado Personagem Tool. Nota: A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar o SPI módulo antes de usar o SPI Lcd Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. Nota: Esta biblioteca é projetado para trabalhar com o LCD serial mikroElektronika's Adaptador Câmara pinagem. Veja esquema na parte inferior da página para obter mais detalhes.
As dependências externas do SPI LCD Biblioteca A implementação de rotinas Lcd Biblioteca SPI é baseado em Port Expander Biblioteca rotinas. As dependências externas são as mesmas dependências do Porto Biblioteca Expander externaCIES.
Rotinas da biblioteca - SPI_Lcd_Config - SPI_Lcd_Out - SPI_Lcd_Out_ - SPI_Lcd_Chr - SPI_Lcd_Chr_ - SPI_Lcd_Cmd
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
493
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Lcd_Config Protótipo
vazio SPI_Lcd_Config (char DeviceAddress);
Retorna
Nada. Inicializa o módulo LCD via interface SPI.
Descrição
Parâmetros: - DeviceAddress: ender eç o de hardwar e spi expans or, ver esquem a na final desta página As variáveis globais:
Requer
-
SPExpanderCS: Chip Selecionar linha SPExpanderRST: linha de reset SPExpanderCS_Direction: Direção do Chip Pin Select SPExpanderRST_Direction: Direção do pino de Reset
devem ser definidas antes de utilizar esta função. O módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas.
Exemplo
/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander vazio main () { / / Se a porta Expander Biblioteca utiliza o módulo SPI SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Lcd_Config (0); / / inicializa Lcd sobre o SPI interface
494
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Lcd_Out Protótipo
vazio SPI_Lcd_Out (char linha, char coluna, char * Texto);
Retorna
Nada.
Descrição
Requer Exemplo
Imprime texto na tela LCD a partir de deter mi nada posição. Ambas as variáveis string e literais podem ser ados como um texto. Parâmetros: - linha: número da linha de partida posição - coluna: número da coluna a partir posição -Lcdtexto: a ser escrito precisatexto ser inicializado para a comunicação 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á!");
Spi_Lcd_Out_ Protótipo
vazio SPI_Lcd_Out_ (char * Texto);
Retorna
Nada.
Descrição
Requer Exemplo
Impri me texto na tela LCD na posição atual do cursor. Ambas as variáv eis string e-litro als pode ser ado como um texto. Parâmetros: -Lcdtexto: a ser escrito precisatexto ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config. / / Escreve o texto "Aqui!" na posição atual do cursor: SPI_Lcd_Out_ ("Aqui!");
Spi_Lcd_Chr Protótipo
vazio SPI_Lcd_Chr (char Row, char Coluna, char Out_Char);
Retorna
Nada. Imprime caracteres em LCD na posição especificada. Ambas as variáveis e literais pode ser ado como personagem.
Descrição
Parâmetros: - Linha: escrever o número da linha a posição - Coluna: escrever o número da coluna posição - Out_Char: caractere a ser escrito
Requer
Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config.
Exemplo
/ / Escreve caráter "I" na linha 2, coluna 3: SPI_Lcd_Chr (2, 3, 'i');
Mikroelektronika - Soluções de software e hardware para o mundo embutido
495
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Lcd_Chr_ Protótipo
vazio SPI_Lcd_Chr_ (char Out_Char);
Retorna
Nada.
Descrição
Imprime caracteres em LCD na posição atual do cursor. Ambas as variáveis e literais pode ser ado como personagem. Parâmetros:
Requer
- Out_Char: caractere a ser gravado Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config.
Exemplo
/ / Escrever "e" caractere na posição atual do cursor: SPI_Lcd_Chr_ ('e');
Spi_Lcd_Cmd Protótipo
vazio SPI_Lcd_Cmd (char out_char);
Retorna
Nada. Envia comando para LCD. Parâmetros:
Descrição - out_char: comando a ser enviado Nota: Constantes pré-definidas podem ser ados para a função, consulte Requer Exemplo
496
Disponível Lcd Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd_Config. Comandos. / / Clear LCD: SPI_Lcd_Cmd (_LCD_CLEAR);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Disponível Comandos LCD Lcd Comando
Finalidade
LCD_FIRST_ROW
Move o cursor para a linha 1
LCD_SECOND_ROW
Move o cursor para a linha 2
LCD_THIRD_ROW
Move o cursor para a 3 ª fila
LCD_FOURTH_ROW
Move o cursor para a linha 4
LCD_CLEAR
O visor claro
LCD_RETURN_HOME LCD_CURSOR_OFF
Retornar cursor para a posição inicial, retorna uma tela mudou aDesligue sua posição original. Mostrar dados RAM não é afetada. o cursor
LCD_UNDERLINE_ON
Sublinhar o cursor em
LCD_BLINK_CURSOR_ON
Intermitência do cursor em
LCD_MOVE_CURSOR_LEFT LCD_MOVE_CURSOR_RIGHT
Move o cursor para esquer d a sem alterar RAM exibir dados Mover cursor para direita sem alterar RAM exibir dados
LCD_TURN_ON
Vire a tela LCD
LCD_TURN_OFF
Ligue o monitor LCD
LCD_SHIFT_LEFT
Shift display esquer do sem alterar a RAM de dados de exibição Shift direito de exibição sem alterar RAM exibição de dados
LCD_SHIFT_RIGHT
Mikroelektronika - Soluções de software e hardware para o mundo embutido
497
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
Este exemplo demonstra como se comunicar através do módulo de LCD SPI, utilizando conversor de serial para paralelo M23S17. char * Texto = "mikroElektronika"; / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander vazio main () { / / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander / / Se a porta Expander Biblioteca utiliza o módulo SPI2 / / SPI2_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Lcd_Config (0); / / interface de inicialização do LCD sobre o SPI SPI_Lcd_Cmd (_LCD_CLEAR); / / exibe Limpar SPI_Lcd_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off SPI_Lcd_Out (1,6 ", mikroE"); / Imprimir texto para LCD, 1 linha, 6 column SPI_Lcd_Chr_ ('!'); / Anexar '!' SPI_Lcd_Out (2,1, texto); / Imprimir texto / ao LCD, linha 2, coluna 1 / / SPI_Lcd_Out (3,1 ", mikroE"); / / SPI_Lcd_Out (4,15 ", mikroE");
/ / Para o LCD com mais de duas linhas / / Para o LCD com mais de duas linhas
}
498
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
SPI LCD conexão HW
Mikroelektronika - Soluções de software e hardware para o mundo embutido
499
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI LCD8 (8-bit) biblioteca
A mik roC PRO para PIC fornece uma biblioteca para comunicação com LCD (com controladores HD44780 compatível) em modo de 8 bits via interface SPI. Para criar um conjunto personalizado de caracteres LCD usam LCD personalizado Personagem Tool. Nota: A Biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar o SPI módulo antes de usar o SPI Biblioteca de Lcd. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. Nota: Esta biblioteca foi projetada para funcionar com LCD Serial mikroElektronika's / GLCD Pinagem do adaptador de mesa, ver esquema na parte inferior da página para obter mais detalhes.
As dependências externas do SPI LCD Biblioteca A implementação de rotinas Lcd Biblioteca SPI é baseado em Port Expander Biblioteca rotinas. As dependências externas são as mesmas dependências do Porto Biblioteca Expander externaCIES.
Rotinas da biblioteca
500
- SPI_Lcd8_Config - SPI_Lcd8_Out - SPI_Lcd8_Out_ - SPI_Lcd8_Chr - SPI_Lcd8_Chr_ - SPI_Lcd8_Cmd
Mikroelektroni ka SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Lcd8_Config Protótipo
vazio SPI_Lcd8_Config (char DeviceAddress);
Retorna
Nada. Inicializa o módulo LCD via interface SPI.
Descrição
Requer
Exemplo
Parâmetros: - DeviceAddress: ender eç o de hardwar e spi expans or, ver esquem a na final desta página As variáveis globais: - SPExpanderCS: Chip Selecionar linha - SPExpanderRST: linha de reset - SPExpanderCS_Direction: Direção do pino de Chip Select - SPExpanderRST_Direction: Direção do pino de Reset devem ser definidas antes de utilizar esta função. O módulo SPI precisa ser inicializado. Veja SPI1_Init e SPI1_Init_Advanced rotinas. / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander ... / / Se a porta Expander Biblioteca utiliza o módulo SPI SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Lcd8_Config (0); / intialize LCD em modo de 8 bits via SPI
Spi_Lcd8_Out Protótipo
vazio SPI_Lcd8_Out (unsigned short linha, unsigned short coluna, char * Texto);
Retorna
Nada. Impri me texto na tela LCD a partir de deter mi n ada posição. Ambos variáv eis de
Descrição
cadeia e acendeurals pode ser ado como um texto. Parâmetros:
Requer Exemplo
- linha: número da linha de partida posição - coluna: número da coluna a partir posição -Lcdtexto: a ser escrito precisatexto ser inicializado para a comunicação 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á!");
Mikroelektronika - Soluções de software e hardware para o mundo embutido
501
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_Lcd8_Out_ Protótipo
vazio SPI_Lcd8_Chr_ (char out_char);
Retorna
Nada. Imprime caracteres em monitores LCD na posição atual do cursor. Ambas as
Descrição
variáveis e literais pode ser ado como personagem. Parâmetros:
Requer
- texto: texto a ser escrito Lcd precisa ser inicializado para a comunicação SPI, ver SPI_Lcd8_Config rotinas.
Exemplo
/ / Escreve o texto "Aqui!" na posição atual do cursor: SPI_Lcd8_Out_ ("Aqui!");
Spi_Lcd8_Chr Protótipo
vazio SPI_Lcd8_Chr (unsigned short linha, unsigned short coluna, char out_char);
Retorna
Nada. Imprime caracter es em LCD na posição especifi c ada. Ambas as variáveis e literais
Descrição
podem ser ado como personagem. Parâmetros:
Requer Exemplo
502
- linha: escrever o número da linha a posição - coluna: escrever o número da coluna posição - out_char: caractere a ser escrito Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd8_Confi g. / / Escreve caracter "i" na linha 2, coluna 3: SPI_Lcd8_Chr (2, 3, 'i');
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_Lcd8_Chr_ Protótipo
vazio SPI_Lcd8_Chr_ (char out_char);
Retorna
Nada.
Descrição
Imprime caracteres em LCD na posição atual do cursor. Ambas as variáveis e literais pode ser ado como personagem. Parâmetros:
Requer
- out_char : caractere a ser escrito Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd8_Confi g. Imprimir "E" na posição atual do cursor:
Exemplo
/ / Escrever "e" caractere na posição atual do cursor: SPI_Lcd8_Chr_ ('e');
Spi_Lcd8_Cmd Protótipo
vazio SPI_Lcd8_Cmd (char out_char);
Retorna
Nada. Envia comando para LCD. Parâmetros:
Descrição - out_char: comando a ser enviado Nota: Cons tantes pré-defi ni das podem ser ados para a função, consul te Requer
Disponív el LCD Lcd precisa ser inicializado para a comunicação SPI, consulte rotinas SPI_Lcd8_Confi g. Comandos.
Exemplo
/ / Limpa display LCD: SPI_Lcd8_Cmd (_LCD_CLEAR);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
503
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Disponível Comandos LCD Lcd Comando
504
Finalidade
LCD_FIRST_ROW
Move o cursor para a linha 1
LCD_SECOND_ROW
Move o cursor para a linha 2
LCD_THIRD_ROW
Move o cursor para a 3 ª fila
LCD_FOURTH_ROW
Move o cursor para a linha 4
LCD_CLEAR
O visor claro
LCD_RETURN_HOME LCD_CURSOR_OFF
Retornar cursor para a posição inicial, retorna uma tela mudou aDesligue sua posição original. Mostrar dados RAM não é afetada. o cursor
LCD_UNDERLINE_ON
Sublinhar o cursor em
LCD_BLINK_CURSOR_ON
Intermitência do cursor em
LCD_MOVE_CURSOR_LEFT LCD_MOVE_CURSOR_RIGHT
Move o cursor para esquer d a sem alterar RAM exibir dados Mover cursor para direita sem alterar RAM exibir dados
LCD_TURN_ON
Vire a tela LCD
LCD_TURN_OFF
Ligue o monitor LCD
LCD_SHIFT_LEFT
Shift display esquer do, sem alterar RAM exibir dados
LCD_SHIFT_RIGHT
Shift direito de exibição sem alterar RAM exibição de dados
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Exemplo Biblioteca Este exemplo demonstra como se comunicar LCD em modo de 8 bits, através do SPI modULE, usando a série paralelo conversor M23S17. char * Texto = "mikroE"; / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander vazio main () { / / Se a porta Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander / / Se o Porto Expander Biblioteca utiliza o módulo SPI2 / / SPI2_Init (); / / Inicializar SPI módulo usado com PortExpander SPI_Lcd8_Config (0); / Intialize LCD em modo de 8 bits via SPI SPI_Lcd8_Cmd (_LCD_CLEAR); / / exibe Limpar SPI_Lcd8_Cmd (_LCD_CURSOR_OFF); / cursor Rode / off SPI_Lcd8_Out (1,6, texto); / Imprimir texto / ao LCD, linha 1, coluna 6 ... SPI_Lcd8_Chr_ ('!'); / Anexar '!' SPI_Lcd8_Out (2,1 ", mikroElektronika"); / Imprimir texto / para LCD, 2 linha, coluna 1 ... SPI_Lcd8_Out (3,1, texto); / / Para os módulos de LCD com mais de duas linhas SPI_Lcd8_Out (4,15, texto); / / Para os módulos de LCD com mais de duas linhas
Mikroelektronika - Soluções de software e hardware para o mundo embutido
505
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
LCD8 SPI conexão HW
506
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
SPI biblioteca gráfica T6963C LCD A mik roC 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 utilização em pequenos módulos gráficos. Ele é capaz de controlar telas com uma resolução de até 240x128. Devido à sua baixa potência e pequeno-out linha é o mais apropriado para aplicações móveis, como PDAs, MP3 players ou celulares equipamentos de medição. Embora este controlador é pequeno, tem uma capacidade de dis brincando e mesclando texto e gráficos e que gere todos os sinais de interface com o exibe linhas e motoristas Coluna. Para criar um conjunto personalizado de imagens GLCD uso GLCD Bit map Editor Tool. Nota: A biblioteca utiliza o módulo de comunicação SPI. O usuário deve inicializar SPI módulo antes de usar o SPI T6963C GLCD Biblioteca. Para MCUs com dois módulos SPI é possível inicializar ambos e, em seguida, switch usando o SPI_Set_Active () rotina. Nota: Esta biblioteca é projetado para funcionar com GLCD Serial mikroElektronika de 240x128 e 240X64 Adaptador pinagem Quadros, ver esquema na parte inferior desta página para detalhes. Nota: Algumas placas mikroElektronika do adaptador tem pinagem diferente do T6369C fichas. relações adequadas entre esses rótulos são dadas na tabela abaixo: Adaptador Câmara RS R/W E
datasheet T6369C C/D / RD / WR
As dependências externas do SPI T6963C LCD Gráfico Biblioteca A implementação do SPI T6963C Gráfica rotinas Lcd Biblioteca é baseado em Port Expander Biblioteca rotinas. As dependências externas são as mesmas dependências do Porto Biblioteca Expander externaCIES.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
507
CAPÍTULO 7 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_char - SPI_T6963C_write_t ext - SPI_T6963C_line - SPI_T6963C_rectangle - SPI_T6963C_box - SPI_T6963C_circle - SPI_T6963C_image - SPI_T6963C_sprite - SPI_T6963C_set_cursor - SPI_T6963C_clearBit - SPI_T6963C_setBit - SPI_T6963C_negBit
Nota: A seguir as rotinas da biblioteca de baixo nível são implementadas como macros. Estes macros podem ser encontrados no SPI_T6963C.h cabeçalho do arquivo que está localizado na o SPI projetos T6963C pastas exemplo. - SPI_T6963C_displayGr - SPI_T6963C_displayTxt - SPI_T6963C_setGrP anel - SPI_T6963C_set Txt - SPI_T6963C_Fill - SPI_T6963C_grFill - SPI_T6963C_txtFill - SPI_T6963C_cursor_height - SPI_T6963C_graphics - SPI_T6963C_text - SPI_T6963C_cursor - SPI_T6963C_cursor_blink
508
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_Config Protótipo
vazio SPI_T6963C_Config (unsigned in t largura, unsigned char altura, unsigned char fntW, char DeviceAddress, unsigned char wr, unsigned char º, unsigned char cd, unsigned char rst);
Retorna
Nada. Initalizes o gráfico controlador do LCD. Parâmetros:
Descrição
largura: largura do GLCD
-
altura: altura do GLCD fntW: tamanho da fonte DeviceAddress: SPI endereço de hardware de expansão, consulte o esquema na
-
final desta página WR: sinal de escrita pino GLCD porta de controle rd: leia pino GLCD sinal na porta de controle CD: comando / pino de sinal de dados sobre GLCD porta de controle RST: sinal de reset pino sobre GLCD porta de controle
Mostrar organização RAM: A bibliotec a cortes RAM em painéis : um compl eto é um gráfic o fol seguidos por um de texto (ver esquema abaixo). esquemática: +---------------------+ DE IMAGENS # + 0 + + | + + | + + | +---------------------+ + de texto # 0 + + + \ / +---------------------+ + DE IMAGENS # 1 + + | + + | + + | +---------------------+ + de texto # 1 + + + | +---------------------+
/ \ + |
| 0 | / \ + |
| 1 | \ /
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
509
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas As variáveis globais:
Requer
-
SPExpanderCS: Chip Selecionar linha SPExpanderRST: linha de reset SPExpanderCS_Direction: Direção do pino de Chip Select SPExpanderRST_Direction: Direção do pino de Reset
devem ser definidas antes de utilizar este função. O módulo SPI precisa ser inicializado. Veja o SPI1_Init e SPI1_Init_Advanced rotinas.
Exemplo
/ / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander ... / / Inicializar módulo SPI SPI1_Init (); SPI_T6963C_ Config ( 240, 64, 8, 0, 0 , 1, 3, 4);
Spi_T6963C_WriteData Protótipo
vazio SPI_T6963C_writeData (unsigned char Ddata);
Retorna
Nada. Grava dados para o controlador T6963C via interface SPI.
Descrição
Requer Exemplo
Parâmetros: - Ddata: dados a serem gravados necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_writeData (AddrL);
Spi_T6963C_WriteCommand Protótipo
vazio SPI_T6963C_writeCommand (unsigned char Ddata);
Retorna
Nada. Grava T6963C comando para o controlador via interface SPI.
Descrição
Requer Exemplo
510
Parâmetros: - Ddata: comando a ser escrito necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_writeCommand (SPI_T6963C_CURSOR_POINTER_SET);
Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_SetPtr Protótipo
vazio SPI_T6963C_setPtr (unsigned int p, unsigned char c);
Retorna
Nada. Define o ponteiro p de memória para o comando c.
Descrição
Parâmetros: - p: endereço onde comando deve ser escrito - c: comando a ser escrito
Requer Exemplo
necessidades módulo SToshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_setPtr (T6963C_grHomeAddr + start, T6963C_ADDRESS_POINTER_SET);
Spi_T6963C_WaitReady Protótipo
vazio SPI_T6963C_waitReady (void);
Retorna
Nada.
Descrição
Piscinas do byte de status e loops até Toshiba GLCD módulo está pronto.
Requer
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_waitReady ();
Exemplo
Spi_T6963C_Fill Protótipo
vazio SPI_T6963C_fill (unsigned char v, unsigned int de início, unsigned int len);
Retorna
Nada. Preenche bloco controlador de memória com o byte dado.
Descrição
Parâmetros: - v: byte a ser escrito - start: endereço inicial do bloco de memória - len: comprimento do bloco de memória em bytes
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_fill (0x33, 0x000F 0x00FF);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
511
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_T6963C_Dot Protótipo
vazio SPI_T6963C_dot (int x, int y, unsigned char cor);
Retorna
Nada. Desenha um ponto no gráfico do atual GLCD nas coordenadas (x, y). Parâmetros:
Descrição - x: posição do ponto no eixo X - y: dot posição no eixo y - cor: parâmetro de cor. Valores válidos: Spi_T6963C_BLACK e Spi_T6963C_WHITE Requer Exemplo
512
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.
SPI_T6963C_dot (x0, y0, pcolor);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_Write_Char Protótipo
vazio SPI_T6963C_write_char (unsigned char c, unsigned char x, unsigned char y, unsigned char modalidade);
Retorna
Nada. Grava um caractere em o de texto actual do GLCD nas coordenadas (x, y). Parâmetros: -
Descrição
c: char a ser escrito x: char posição no eixo X y: char na posição do eixo-y modo: parâmetro mode. Valores válidos:
SPI_T6963C_ROM_MODE _OR, SPI_T6963C_ROM_MODE_XOR, SPI_T6963C_ROM_MODE _AND e SPI_T6963C_ROM_MODE _TE XT Modo de explicação do parâmetro:
Requer Exemplo
- OU Mode: No OR-Mo de, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões. - XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da lógica "OU exclusivo". Isso pode ser útil para exibir texto no modo negati v o, ou seja, texto branco em fundo preto. - E-Mode: O texto e dados gráficos mostrados no visor são combinados através de a lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A Texto valores dos atributos são armazenados na área gráfica de memória de necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config vídeo. rotina. SPI_T6963C_write_char ("A",T6963C. 22,23, E); Para mais detalhes veja a ficha
Mikroelektronika - Software e Soluções de hardware para Embedded World
513
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_T6963C_write_Text Protótipo
vazio SPI_T69 63C_write _text (un signed ch ar * Str, unsigned char x, unsigned char y, unsigned char modalidade);
Retorna
Nada. Grava o texto no de texto actual do GLCD nas coordenadas (x, y). Parâmetros: -
Descrição
str: texto a ser escrito x: posição do texto no eixo-x y: texto posição no eixo y modo: parâmetro mode. Valores válidos:
SPI_T6963C_ROM_MODE _OR, SPI_T6963C_ROM_MODE_XOR, SPI_T6963C_ROM_MODE _AND e SPI_T6963C_ROM_MODE _TE XT Modo de explicação do parâmetro: - OU Mode: No OR-Mo de, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões. - XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da lógica "OU exclusivo". Isso pode ser útil para exibir texto no modo negati v o, ou seja, texto branco em fundo preto. - E-Mode: O texto e dados gráficos mostrados no visor são combinados através da lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A Texto valores dos atributos são armazenados na área gráfica de memória de vídeo.
Requer Exemplo
514
Para mais detalhes a ficha necessidades módulo veja Toshiba GLCDT6963C. para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_write_text ("DEMO BIBLIOTECA GLCD, BEM -VINDO!", 0, 0; T6963C_ROM_MODE_EXOR);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_line Protótipo
vazio SPI_T6963C_line (int x0, int y0, int x1, int y1, não assinado char pcolor);
Retorna
Nada. Desenha uma linha de (x0, y0) a (x1, y1). Parâmetros:
Descrição
- x0: coordenada x do início da linha - y0: coordenada y da linha final - x1: coordenada x do início da linha - y1: coordenada y o fim da linha - pcolor: parâmetro de cor. Valores válidos: SPI_T6963C_BLA CK e SPI_T6963C_WHITE
Requer
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_line (0, 0, 239, 127, T6963C_WHITE);
Exemplo
Spi_T6963C_rectangle Protótipo
vazio SPI_T6963C_rectangle (int x0, int y0, int x1, int y1, unsigned char pcolor);
Retorna
Nada. Desenha um retângulo na GLCD. Parâmetros:
Descrição
-
x0: coordenada x do canto superior esquerdo do retângulo y0: coordenada y do canto superior esquerdo do retângulo x1: coordenada x do canto inferior direito do retângulo y1: coordenada y do canto inferior direito do retângulo pcolor: parâmetro de cor. Valores válidos:
SPI_T6963C_BLA CK e SPI_T6963C_WHITE Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina.
SPI_T6963C_rectangle (20, 20, 219, 107, T6963C_WHI TE);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
515
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_T6963C_box Protótipo
vazio SPI_T6963C_box (int x0, int y0, int x1, int y1, unsigned char pcolor);
Retorna
Nada. Desenha uma caixa na GLCD Parâmetros:
Descrição
-
x0: coordenada x superior canto esquerdo caixa y0: coordenada y do canto superior esquerdo caixa x1: coordenada x do canto inferior direito caixa y1: coordenada y do canto inferior direito caixa pcolor: parâmetro de cor. Valores válidos:
SPI_T6963C_BLA CK e SPI_T6963C_WHITE Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_box (0, 119, 239, 127, T6963C_WHITE);
Spi_T6963C_circle Protótipo
vazio SPI_T6963C_circle (int x, int y, tempo r, unsigned cha r PCOLou);
Retorna
Nada. Desenha uma círculo no GLCD. Parâmetros:
Descrição
-
x: coordenada x do centro do círculo y: coordenada y do centro do círculo r: tamanho do raio pcolor: parâmetro de cor. Valores válidos:
SPI_T6963C_BLA CK e SPI_T6963C_WHITE
516
Requer
Toshiba módulo GLCD precisa ser inicializado. Veja SPI_T6963C_Config rotina.
Exemplo
SPI_T6963C_circle (120, 64, 110, T6963C_WHITE);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_image Protótipo
vazio SPI_T6963C_image (código const char * PIC);
Retorna
Nada. Exibe bitmap em GLCD. Parâmetros: - pic: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os
Descrição códigos e Memória RAM (devido à mik roC PRO para PIC ponteiro para const e ponteiro para RAM de equivalência).
Requer Exemplo
Use o mikroC PRO opção integrada GLCD Bitmap Editor ( Ferramentas > GLCD Bitmap Editor) para converter a imagem para uma matriz constante apropriada para exibição necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config ção em GLCD. rotina. SPI_T6963C_image (my_image); Nota: A dimensão da imagem deve coincidir com a dimensão do ecrã.
Spi_T6963C_Sprite Protótipo
vazio SPI_T6963C_sprite (unsigned ch ar px, unsigned char py, const código char * Pic, unsigned char sx, unsigned char sy);
Retorna
Nada. Preenc he a área do retângul o gráfic o (px, py) para (px + sx, sy + py) com imagem de tamanho person aliz a do. Parâmetros:
Descrição
- px: c oor denada x do canto s uperior esquerdo de i magem. V alor es válidos: múltiplos de o tamanho da fonte - py: coordenada y do canto superior esquerdo de imagem - pic: imagem a ser exibida - sx: Imagem de largura. Valores válidos: múltiplos da largura da fonte - sy: altura da imagem Nota: Se px e sx parâmetros não são múltiplos da largura da fonte serão
Requer Exemplo
escalado paramódulo o próximo número baixo que é um múltiplo da largura da necessidades Toshiba GLCD mais para ser inicializado. Veja SPI_T6963C_Config fonte. rotina. SPI_T6963C_sprite (76, 4, Einstein, 88, 119); / / desenha um sprite
Mikroelektronika - Soluções de software e hardware para o mundo embutido
517
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_T6963C_set_cursor Protótipo
vazio SPI_T6963C_set_cursor (unsigned char x, unsigned char y);
Retorna
Nada. Define o cursor para a linha xe coluna y.
Descrição
Parâmetros: - x: cursor número da linha a posição - y: número da coluna a posição do cursor
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_set_cursor (osy osx);
Spi_T6963C_clearBit Protótipo
vazio SPI_T6963C_clearBit (char b);
Retorna
Nada. Limpa porta de controle bit (s).
Descrição
Parâmetros: - b: bit da máscara. A função irá limpar bit x na porta de controle se o bit x na máscara de bits é
Requer Exemplo
necessidades definida como 1.módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / / Limpar os bits 0 e 1 na porta de controle SPI_T6963C_clearBit (0x03);
Spi_T6963C_setBit Protótipo
vazio SPI_T6963C_setBit (char b);
Retorna
Nada. Define bit porta de controle (s).
Descrição
Parâmetros: - b: bit da máscara. A função bit x na porta de controle se o bit x em máscara de bits é
Requer Exemplo
518
necessidades Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config definida como módulo 1. rotina. / / Conjunto de bits 0 e 1 no controle do porto SPI_T6963C_setBit (0x03);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_negBit Protótipo
vazio SPI_T6963C_negBit (char b);
Retorna
Nada. Nega bit porta de controle (s).
Descrição
Parâmetros: - b: bit da máscara. A função irá negar bit x na porta de controle se o bit x em máscara de
Requer Exemplo
bits é necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config definida como 1. rotina. / / Nega bits 0 e 1 no controle do porto SPI_T6963C_negBit (0x03);
Spi_T6963C_DisplayGr Protótipo
vazio SPI_T6963C_displayGr (char n);
Retorna
Nada. Mostrar selecionados gráfico.
Descrição
Parâmetros: - n: Número gráfico. Valores válidos: 0 e 1.
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / Display gráfico / 1 SPI_T6963C_displayGr (1);
Spi_T6963C_displayTxt Protótipo
vazio SPI_T6963C_displayTxt (char n);
Retorna
Nada. Mostrar de texto selecionado.
Descrição
Parâmetros: - n: número do . Valores válidos: 0 e 1.
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / / Texto do visor do de um SPI_T6963C_displayTxt (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
519
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_T6963C_setGr Protótipo
vazio SPI_T6963C_setGr (char n);
Retorna
Nada.
Descrição
Calcul ar o ender eç o inicial para o gráfic o selecionad o e defina internos adequ ados ponteiros. Todas as operações subseqüentes gráfico será pré-formados neste gráfico . Parâmetros:
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config - n: Número gráfico. Valores válidos: 0 e 1. rotina. / / Configura como um gráfico gráfico atual. SPI_T6963C_setGr (1);
Spi_T6963C_setTxt Protótipo
vazio SPI_T6963C_setTxt (char n);
Retorna
Nada. Calcular o ender eç o inicial para o de texto selecionado e definir o ponto
Descrição
interno aproers. Todas as operações de texto subseqüentes serão pré-formados neste de texto. Parâmetros:
Requer Exemplo
520
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config - n: número do . Valores válidos: 0 e 1. rotina. / / de texto definido como um de texto atual. SPI_T6963C_setTxt (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_Fill Protótipo
vazio SPI_T6963C_Fill (unsigned char v);
Retorna
Nada.
Descrição
Preencha atual na íntegra (Texto + gráfico) com o valor apropriado (0 a clara). Parâmetros:
Requer Exemplo
- v: valor para preencher com . necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. atual clara SPI_T6963C_Fill (0);
Spi_T6963C_GrFill Protótipo
vazio SPI_T6963C_grFill (unsigned char v);
Retorna
Nada. Preencha atual gráfico com o valor apropriado (0 a clara).
Descrição
Parâmetros: - v: valor para preencher com gráfico.
Requer Exemplo
Toshiba necessidades módulo GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / / atual clara gráfico SPI_T6963C_grFill (0);
Spi_T6963C_txtFill Protótipo
vazio SPI_T6963C_txtFill (unsigned char v);
Retorna
Nada. Preencha texto atual com o valor apropriado (0 a clara).
Descrição
Parâmetros: - v: este valor aumentou 32 será utilizado para preenchimento do de
Requer
Toshiba texto. módulo GLCD precisa ser inicializado. Veja SPI_T6963C_Config rotina.
Exemplo
/ / de texto claro atuais SPI_T6963C_txtFill (0);
Mikroelektronika - Softwares e soluções de hardware para Embedded World
521
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Spi_T6963C_cursor_height Protótipo
vazio SPI_T6963C_cursor_height (unsigned char n);
Retorna
Nada. Defina o tamanho do cursor.
Descrição
Parâmetros: - n: cursor altura. Valores válidos: 0 .. 7.
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. SPI_T6963C_cursor_height (7);
Spi_T6963C_graphics Protótipo
vazio SPI_T6963C_graphics (char n);
Retorna
Nada. Ativar / desativar gráfico exibindo.
Descrição
Parâmetros: - n: gráfico ativar / desativar o parâmetro. Valores válidos: 0 (Desativar gráfico dispaying) e 1 (Habilitar gráfico exibindo).
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / / Ativar gráfico exibindo SPI_T6963C_graphics (1);
Spi_T6963C_text Protótipo
vazio SPI_T6963C_text (char n);
Retorna
Nada. Activar / desactivar a visualização de texto.
Descrição
Parâmetros: - n: texto ativar / desativar o parâmetro. Valores válidos: 0 (Dispaying texto desativar) e 1 (Habilitar exibindo texto).
Requer Exemplo
522
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / / Ativar texto exibindo SPI_T6963C_text (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Spi_T6963C_cursor Protótipo
vazio SPI_T6963C_cursor (char n);
Retorna
Nada. Definir cursor on / off.
Descrição
Parâmetros: - n: on / off parâmetro. Valores válidos: 0 (cursor partiu) e 1 (cursor ativado).
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja SPI_T6963C_Config rotina. / Cursor / set em SPI_T6963C_cursor (1);
Spi_T6963C_cursor_blink Protótipo
vazio SPI_T6963C_cursor_blink (char n);
Retorna
Nada. Ativar / desativar o cursor piscando.
Descrição
Parâmetros: - n: cursor piscando ativar / desativ ar o parâmetr o. Valores válidos: 0 (Cursor
Requer Exemplo
desativ ar necessidades Toshiba GLCDpiscando). para ser inicializado. Veja SPI_T6963C_Config piscando) emódulo 1 (Ativar o cursor rotina. / / Ativar o cursor piscando SPI_T6963C_cursor_blink (1);
Exemplo Biblioteca A demo seguinte desenho testes avançados rotinas da biblioteca SPI GLCD T6963C. Hardware configurações neste exemplo são feitas para a 240x128 T6963C display, placa EasyPIC5 e 16F887.
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
523
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas # Include
"__SPIT6963C.h"
/ * * imagens bitmap armazenado em ROM * / extern código const char me []; extern const char código Einstein] [; / / Porta conexões Expander módulo sbit SPExpanderRST em RC0_bit; sbit SPExpanderCS em RC1_bit; sbit SPExpanderRST_Direction em TRISC0_bit; sbit SPExpanderCS_Direction em TRISC1_bit; / / Fim Porto módulo conexões Expander vazio main () { char txt1 [] = " Einstein teria gostado de mim "; char txt [] = "DEMO BIBLIOTECA GLCD, BEM-VINDO!"; não não não não
assinado assinado assinado assinado
char int char int
TRISA = 0xFF; ANSEL = 0; ANSELH = 0;
; i; vira-latas; osx, osy;
// // // //
atual de propósito geral Registre-se visibilidade do cursor cursor x-y posição
/ / Configurar o PORTA como entrada / / Configurar um pinos como I / O digital
/ / Se Porto Expander Library usa SPI1 módulo SPI1_Init (); / / Inicializar SPI módulo usado com PortExpander // //
/ / Se a porta Expander Biblioteca utiliza o módulo SPI2 SPI2_Init (); / / Inicializa o módulo SPI usado com PortExpander / * * Exposição init para 240 pixels de largura e 128 pixels de altura * 8 bits de largura de caractere * Barramento de dados sobre M23S17 PORTB * Barramento de controle na porta M23S17 * 2 é pouco! WR * 1 é pouco! RD * Bit 0 é! CD * 4 bits é RST * Chip permitirá, no reverso, fonte 8x8 internamen te definida na bibli oteca * / SPI_T6963C_Config (240, 128, 8, 0, 2, 1, 0, 4); Delay_ms (1000);
524
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
/ * * Possibilita r gráfico s e exibi r texto, ao mesmo tempo * / SPI_T6963C_graphics (1); SPI_T6963C_text (1); = 0; i = 0; curs = 0; osy osx = 0; / * As mensagens de texto * * / SPI_T6963C_write_text (txt, 0, 0 SPI_T6963C_ROM_MODE_XOR); SPI_T6963C_write_text (txt1, 0, 15, SPI_T6963C_ROM_MODE_XOR); / * * Cursor * / SPI_T6963C_cursor_height (8); SPI_T6963C_set_cursor (0, 0); SPI_T6963C_cursor (0);
/ / 8 pixels de altura / Mover o cursor / para o canto superior esquerdo / / Cursor fora
/ * * Desenhar retângulos * / SPI_T6963C_rectangle (0, 0, 239, 127, SPI_T6963C_WHITE); SPI_T6963C_rectangle (20, 20, 219, 107, SPI_T6963C_WHITE); SPI_T6963C_rectangle (40, 40, 199, 87, SPI_T6963C_WHITE); SPI_T6963C_rectangle (60, 60, 179, 67, SPI_T6963C_WHITE); / * * Desenhar uma cruz * / SPI_T6963C_line (0, 0, 239, 127, SPI_T6963C_WHITE); SPI_T6963C_line (0, 127, 239, 0, SPI_T6963C_WHITE); / * * Desenhar caixas sólidas * / SPI_T6963C_box (0, 0, 239, 8, SPI_T6963C_WHITE); SPI_T6963C_box (0, 119, 239, 127, SPI_T6963C_WHITE); / * * Desenhar círculos * / SPI_T6963C_circle (120, 64, 10, SPI_T6963C_WHITE); SPI_T6963C_circle (120, 64, 30, SPI_T6963C_WHITE); SPI_T6963C_circle (120, 64, 50, SPI_T6963C_WHITE);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
525
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPI_T6963C_circle SPI_T6963C_circle SPI_T6963C_circle SPI_T6963C_circle
(120, (120, (120, (120,
64, 64, 64, 64,
SPI_T6963C_WHITE SPI_T6963C_WHITE SPI_T6963C_WHITE SPI_T6963C_WHITE
70); 90); 110); 130);
SPI_T6963C_sprite (76, 4, Eins tein, 88, 119); / / desenha um sprite SPI_T6963C_setGr (1); / / Select gráfico outras SPI_T6963C_image (me); / / Preenche a tela com uma imagem gráfica while (1) {
/ / Loop infinito
/ * * Se PORTA_0 é pressionado, alternar a exibição gráfica 0 e gráfico 1 * / if (RA0_bit) { + +; e = 1; SPI_T6963C_displayGr (); Delay_ms (300); } / * * Se PORTA_1 é pressionada, exibir apenas o gráfico * / else if (RA1_bit) { SPI_T6963C_graphics (1); SPI_T6963C_text (0); Delay_ms (300); } / * * Se PORTA_2 é pressionado, visor do de apenas texto * / else if (RA2_bit) { SPI_T6963C_graphics (0); SPI_T6963C_text (1); Delay_ms (300); } / * * Se PORTA_3 é pressionado, o texto de exibição e painéis gráficos * / else if (RA3_bit) { SPI_T6963C_graphics (1); SPI_T6963C_text (1); Delay_ms (300); } / *
526
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas * Se PORTA_4 é pressionado, o cursor mudar * / else if (RA4_bit) { Curs + +; if (curs == 3) curs = 0; switch (vira-latas) { caso 0: / / Cursor não SPI_T6963C_cursor (0); break; caso 1: / / Cursor piscando SPI_T6963C_cursor (1); SPI_T6963C_cursor_blink (1); break; caso 2: / / Cursor intermitente não SPI_T6963C_cursor (1); SPI_T6963C_cursor_blink (0); break; } Delay_ms (300); } / * * Move o cursor, mesmo que não visível * / osx + +; if (osx SPI_T6963C_txtCols ==) { osx = 0; osy + +; if (osy == SPI_T6963C_grHeight SPI_T6963C_CHARACTER_HEIGHT /)
{ osy = 0; } } SPI_T6963C_set_cursor (osy osx); Delay_ms (100); } }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
527
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Conexão HW
Spi T6963C GLCD conexão HW
528
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C biblioteca gráfica LCD A mik roC PRO para PIC fornece uma biblioteca para trabalhar com base em Glcds TOSHIBA controlador T6963C. A Toshiba T6963C é muito popular controlador do LCD para uso em pequenos módulos gráficos. Ele é capaz de controlar exibe com um res olution até 240x128. Devido à sua baixa potência e pequeno esboço é o mais apropriado para aplicações móveis, como PDAs, MP3 players ou celulares medição equipament. Embora pequena, essa contoller tem uma capacidade de exibir e mesclando texto e gráficos, e que gere todos os sinais de interface para a linha exibe e Col umn drivers. Para criar um conjunto personalizado de imagens GLCD uso GLCD Bitmap Editor Tool. Nota: ChipEnable (CE), FontSelect (FS) e Ré (MD) tem que ser definida para ade níveis adequados pelo usuário fora do T6963C_init função. Veja o Biblioteca Exemplo de código na parte inferior desta página. Nota: Algumas placas mikroElektronika do adaptador tem pinagem diferente do T6369C fichas. relações adequadas entre esses rótulos são dadas na tabela abaixo: Adaptador Câmara RS R/W E
datasheet T6369C C/D / RD / WR
Mikroelektronika - Soluções de software e hardware para o mundo embutido
529
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas As dependências externas da T6963C LCD Gráfico Biblioteca As seguintes variáveis devem ser definida em todos os projectos LCD Gráfico com T6963C sfr extern char biblioteca: T6963C_dataPort;
530
Descrição:
Exemplo:
T6963C porta de
char T6963C_d ataPort n a PORTD;
extern sbit sfr T6963C_ctrlwr;
dados. Escrever sinal.
sbit T6963C_ctrlwr na RC2_bit;
sbit sfr extern T6963C_ctrlrd;
Leia sinal.
sbit T6963C_ctrlrd na RC1_bit;
sbit sfr extern T6963C_ctrlcd;
Comando / Dados sbit T6963C_ctrlcd na RC0_bit; sinal.
sbit sfr extern T6963C_ctrlrst;
Reset sinal.
sbit T6963C_ctrlrst em RC4_bit;
sbit sfr extern T6963C_ctrlwr_Direction;
Direção do Escrever pino.
sbit T6963C_ctrlwr _Directio n em TRISC2_bit;
sbit sfr extern T6963C_ctrlrd_Direction;
Direção do Leia pino.
sbit sfr extern T6963C_ctrlcd_Direction;
Direção do Dados dos pinos.
sbit T6963C_ctrlrd _Directio n em TRISC1_bit; sbit T6963C_ctrlcd _Directio n em TRISC0_bit;
sbit sfr extern T6963C_ctrlrst_Direction;
Direção do Reset.
sbit T6963C_ctrlrst_Direction em TRISC4_bit;
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Rotinas da biblioteca - T6963C_init - T6963C_writeData - T6963C_writeCommand - T6963C_setPtr - T6963C_waitReady - T6963C_fill - T6963C_dot - T6963C_write_char - T6963C_write_text - T6963C_line - T6963C_rectangle - T6963C_box - T6963C_circle - T6963C_image - T6963C_sprite - T6963C_set_cursor Nota: A seguir as rotinas da biblioteca de baixo nível são implementadas como macros. Estes macros podem ser encontrados no T6963C.h arquivo de cabeçalho que está localizado na T6963C projetos pastas exemplo. - T6963C_clearBit - T6963C_setBit - T6963C_negBit - T6963C_displayGrP anel - T6963C_display Txt - T6963C_setGr - T6963C_setTxt - T6963C_Fill - T6963C_grFill - T6963C_txtFill - T6963C_cursor_height - T6963C_graphics - T6963C_text - T6963C_cursor - T6963C_cursor_blink
Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo
531
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_Init Protótipo
vazio T6963C_init (unsigned int largura, unsigned char altura, unsigned char fntW);
Retorna
Nada. Initalizes o gráfico controlador do LCD. Parâmetros: - largura: largura do GLCD - altura: altura do GLCD - fntW: tamanho da fonte Mostrar organização RAM: A biblioteca corta a RAM em painéis: um completo é um gráfico seguido por um de texto (ver esquema abaixo).
Descrição
esquemática: +---------------------+ DE IMAGENS # + 0 + + | + + | + + | +---------------------+ + de texto # 0 + + + \ / +---------------------+ + DE IMAGENS # 1 + + | + + | + + | +---------------------+ + de texto # 1 + + + | +---------------------+
/ \ + |
| 0 | / \ + |
| 1 | \ /
As variáveis globais:
Requer
-
T6963C_dataPort: Data Port T6963C_ctrlwr: Escreve o sinal do pino T6963C_ctrlrd: Leia o sinal do pino T6963C_ctrlcd: Comando / pino de sinal de dados T6963C_ctrlrst: Redefinir o sinal do pino T6963C_ctrlwr_Direction: Direção de gravação do sinal do pino T6963C_ctrlrd_Direction: Direção de leitura do sinal do pino T6963C_ctrlcd_Direction: Direção do Comando de sinal de dados / pin T6963C_ctrlrst_Direction: Direção do sinal Reset
devem ser definidas antes de utilizar esta função.
532
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Exemplo
Bibliotecas
/ / Conexões T6963C módulo char T6963C_dataPort em PORTD; sbit T6963C_ctrlwr em RC2_bit; sbit T6963C_ctrlrd em RC1_bit; sbit T6963C_ctrlcd em RC0_bit; sbit T6963C_ctrlrst em RC4_bit; sbit T6963C_ctrlwr_Direction em TRISC2_bit; sbit T6963C_ctrlrd_Direction em TRISC1_bit; sbit T6963C_ctrlcd_Direction em TRISC0_bit; sbit T6963C_ctrlrst_Direction em TRISC4_bit; / / Fim do conexões T6963C módulo / / Não Sina is Utili zados pel a biblio teca, el es são de finidos em funçã o princip al sbit T6963C_ctrlce em RC3_bit; / / O sinal CE sbit T6963C_ctrlfs em RC6_bit / / sinal de FS sbit T6963C_ctrlmd em RC5_bit / / MD sinal sbit T6963C_ctrlce_Direction em TRISC3_bit / / direção do sinal CE ção sbit T6963C_ctrlfs_Direction em TRISC6_bit / / sinal de FS direção sbit T6963C_ctrlmd_Direction em TRISC5_bit; / sinal / MD direção / / Fim conexões T6963C módulo ... / Exposição / init para 240 pixels de largura, 128 pixels de altura e 8 bits largura de caractere T6963C_init (240, 128, 8);
T6963C_writeData Protótipo
vazio T6963C_writeData (unsigned char mydata);
Retorna
Nada. Grava dados para o controlador T6963C.
Descrição
Parâmetros: - mydata: dados a ser escrito
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init.
T6963C_writeData (AddrL);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
533
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_WriteCommand Protótipo
vazio T6963C_writeCommand (unsigned char mydata);
Retorna
Nada. Grava o comando para o controlador T6963C.
Descrição
Parâmetros: - mydata: comando a ser escrita
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. T6963C_writeCommand (T6963C_CURSOR_POINTER_SET);
T6963C_SetPtr Protótipo
vazio T6963C_setPtr (unsigned int p, unsigned char c);
Retorna
Nada. Define o ponteiro p de memória para o comando c.
Descrição
Parâmetros: - p: endereço onde o comando deve ser escrito - c: comando a ser escrito
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init rotina. T6963C_setPtr (T6963C_grHomeAddr + start, T6963C_ADDRESS_POINTER_SET);
T6963C_waitReady Protótipo
vazio T6963C_waitReady (void);
Retorna
Nada.
Descrição
Piscinas do byte de status e loops até Toshiba GLCD módulo está pronto.
Requer
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina
Exemplo
534
T6963C_init.
T6963C_waitReady ();
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C_fill Protótipo
vazio T6963C_fill (unsigned char v, unsigned int de início, não assinado int len);
Retorna
Nada. Preenche bloco controlador de memória com o byte dado.
Descrição
Parâmetros: - v: byte a ser escrito - start: endereço inicial do bloco de memória - len: comprimento do bloco de memória bytes
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. T6963C_fill (0x33, 0x000F 0x00FF);
T6963C_Dot Protótipo
vazio T6963C_dot (int x, int y, unsigned char cor);
Retorna
Nada. Desenha um ponto no gráfico atual do GLCD nas coordenadas (x, y).
Descrição
Parâmetros: - x: posição do ponto no eixo X - y: dot posição no eixo y - cor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init rotina. T6963C_dot (x0, y0, pcolor);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
535
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_write_Char Protótipo
vazio T6963C_write_char (unsigned char c, unsigned char x, não assinado char y, unsigned char modalidade);
Retorna
Nada. Grava um char no de texto actual do GLCD nas coordenadas (x, y). Parâmetros: - c: char a ser escrito - x: char posição no eixo X - y: char na posição do eixo-y - modo: parâmetro mode. Valores válidos: T6963C_ROM_MODE_OR, T6963C_ROM_MODE_XOR, T6963C_ROM_MODE_A ND e T6963C_ROM_MODE_TE XT
Descrição Modo de explicação do parâmetro:
Requer Exemplo
536
- OU Mode: No OR-Mo de, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões. - XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da lógica "OU exclusivo". Isso pode ser útil para exibir texto em negativo modo, ou seja, texto branco em fundo preto. - E-Mode: O texto e gráficodados ic mostrados na exposição são combinados através da lógica "Função E". - Em modo texto: O texto e dados gráficos mostr ados na exposiç ão são combi n ados através de a lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A Texto Atributo valores são armazenados na área gráfica de memória de necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina vídeo. T6963C_init. T6963C_write_char ('A', 22,23, E); Para mais detalhes veja a ficha T6963C.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C_write_text Protótipo
vazio T6963C_write_text (unsigned char * Str, unsigned char x, unsigned char y, unsigned char modalidade);
Retorna
Nada. Grava o texto no de texto atual de GLCD nas coordenadas (x, y). Parâmetros:
Descrição
- str: texto a ser escrito - x: posição do texto no eixo-x - y: posição do texto no eixo-y - modo: parâmetro mode. Valores válidos: T6963C_ROM_MODE_OR, T6963C_ROM_MODE_XOR, T6963C_ROM_MODE_A ND e T6963C_ROM_MODE_TE XT Modo explicação do parâmetro:
Requer Exemplo
- OU Mode: No OR-Mo de, texto e gráficos podem ser exibidos e os dados é logicamente "OU-ed". Esta é a forma mais comum de combinar texto e gráficos para rótulos exemplo nos botões. - XOR-Mode: Neste modo, os dados de texto e gráficos são combinados através da lógica "OU exclusivo". Isso pode ser útil para exibir texto em negativo modo, ou seja, texto branco em fundo preto. - E-Mode: O texto e dados gráficos mostrados na exposição são combinados através de a lógica "Função E". - TEXT-Mode: Esta opção só está disponível ao exibir apenas um texto. A Texto valores dos atributos são armazenados na área gráfica de memória de vídeo. necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init Para rotina.mais detalhes veja a ficha T6963C. T6963C_write_text ("DEMO BIBLIOTECA GLCD, BEM-VINDO!", 0, 0; T6963C_ROM_MODE_XOR);
Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo
537
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_line Protótipo
vazio T6963C_line (int x0, int y0, int x1, int y1, unsigned char pcolor);
Retorna
Nada. Desenha uma linha de (x0, y0) a (x1, y1). Parâmetros:
Descrição
-
x0: coordenada x do início da linha y0: coordenada y da linha final x1: coordenada x do início da linha y1: coordenada y da linha final pcolor: parâmetro de cor. Valores válidos:
T6963C_BLACK e T6963C_WHITE Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. T6963C_line (0, 0, 239, 127, T6963C_WHITE);
T6963C_rectangle Protótipo
vazio T6963C_rectangle (int x0, int y0, int x1, int y1, unsigned char pcolor);
Retorna
Nada. Desenha um retângulo na GLCD. Parâmetros:
Descrição
Requer Exemplo
538
-
x0: coordenada x do canto superior esquerdo do retângulo y0: coordenada y do canto superior esquerdo do retângulo x1: coordenada x do canto inferior direito do retângulo y1: coordenada y no canto inferior direito do retângulo pcolor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init.
T6963C_rectangle, 20, 219, 107, T6963C_WHITE);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C_box Protótipo
vazio T6963C_box (int x0, int y0, int x1, int y1, unsigned char pcolor);
Retorna
Nada. Desenha uma caixa de GLCD Parâmetros:
Descrição
Requer Exemplo
-
x0: coordenada x no canto superior esquerdo caixa y0: coordenada y do canto superior esquerdo caixa x1: coordenada x do canto inferior direito caixa y1: coordenada y do canto inferior direito caixa pcolor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. T6963C_box (0, 119, 239, 127, T6963C_WHITE);
T6963C_circle Protótipo
vazio T6963C_ circle (i nt x, int y, tempo r, unsig ned char pcolor);
Retorna
Nada. Desenha um círculo em GLCD. Parâmetros:
Descrição Requer Exemplo
x: coordenada x do centro do círculo y: coordenada y do centro do círculo r: tamanho do raio pcolor: parâmetro de cor. Valores válidos: T6963C_BLACK e T6963C_WHITE
necessidades módulo Toshiba GLCD para ser inicializado. Veja o T6963C_init rotina. T6963C_circle (120, 64, 110, T6963C_WHITE);
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
539
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_image Protótipo
vazio T6963C_image (código const char * PIC);
Retorna
Nada. Exibe bitmap em GLCD. Parâmetros: - pic: imagem a ser exibida. matriz de bitmap podem ser localizados em ambos os
Descrição
Requer Exemplo
códigos e Memória RAM (devido à mikroC PRO PIC para ponteiro para ponteiro para const e RAM de equivalência). Use o mikroC PRO opção integrada GLCD Bitmap Editor ( Ferramentas > GLCD Bitmap Editor) para converter a imagem para uma matriz constante apropriada para exibição Toshiba necessidades módulo GLCD para ser inicializado. Veja a rotina ção em GLCD. T6963C_init. T6963C_image (mc); Nota: A dimensão da imagem deve coincidir com a dimensão do ecrã.
T6963C_sprite Protótipo
vazio T6963C_sprite (unsigned char px, unsigned char py, código de const char * Pic, unsigned char sx, unsigned char sy);
Retorna
Nada. Preenc he a área do retângul o gráfic o (px, py) para (px + sx, sy + py) com imagem de tamanho person aliz a do. Parâmetros:
Descrição
Requer Exemplo
540
- px: coordenada x do canto superior esquerdo de imagem. Valores válidos: múltiplos do fonte largura - py: coordenada y do canto superior esquerdo de imagem - pic: imagem a ser exibida - sx: Imagem de largura. Valores válidos: múltiplos da largura da fonte - sy: altura da imagem Nota: Se px e sx parâmetros não são múltiplos da largura da fonte serão escalado para módulo o próximo número maispara baixo que é um múltiplo largura da necessidades Toshiba GLCD ser inicializado. Vejada a rotina fonte. T6963C_init. (76, 4, Einstein, 88, 119); / / desenha um sprite T6963C_sprite
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C_set_cursor Protótipo
vazio T6963C_set_cursor (unsigned char x, unsigned char y);
Retorna
Nada. Define o cursor para a linha xe coluna y.
Descrição
Parâmetros: - x: cursor número da linha a posição - y: número da coluna a posição do cursor
Requer Exemplo
Toshiba necessidades módulo GLCD para ser inicializado. Veja a rotina T6963C_init. T6963C_set_cursor (osy osx);
T6963C_clearBit Protótipo
vazio T6963C_clearBit (char b);
Retorna
Nada. Limpa bits de controle de porta (s).
Descrição
Parâmetros: - b: bit da máscara. A função vai limpar bit x na porta de controle se o bit x na máscara de bits é
Requer Exemplo
necessidades definida como 1. módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Limpar os bits 0 e 1 na porta de controle T6963C_clearBit (0x03);
T6963C_setBit Protótipo
vazio T6963C_setBit (char b);
Retorna
Nada. Define o controle bit da porta (s).
Descrição
Parâmetros: - b: bit da máscara. A função bit x na porta de controle se o bit x na máscara de bits é
Requer Exemplo
necessidades definida como 1. módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Conjunto de bits 0 e 1 no controle do porto T6963C_setBit (0x03);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
541
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_negBit Protótipo
vazio T6963C_negBit (char b);
Retorna
Nada. Nega bit porta de controle (s).
Descrição
Parâmetros: - b: bit da máscara. A função irá negar bit x na porta de controle se bit x na máscara de
Requer Exemplo
bits é necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina definida como 1. T6963C_init. / / Nega bits 0 e 1 no controle do porto T6963C_negBit (0x03);
T6963C_displayGr Protótipo
vazio T6963C_displayGr (char n);
Retorna
Nada. Mostrar selecionados gráfico.
Descrição
Parâmetros: - n: Número gráfico. Valores válidos: 0 e 1.
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / Display gráfico / 1 T6963C_displayGr (1);
T6963C_displayTxt Protótipo
vazio T6963C_displayTxt (char n);
Retorna
Nada. Mostrar de texto selecionado.
Descrição
Parâmetros: - n: número do . Valores válidos: 0 e 1.
Requer Exemplo
542
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Texto do visor do de um T6963C_displayTxt (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C_setGr Protótipo
vazio T6963C_setTxt (char n);
Retorna
Nada.
Descrição
Calcular o endereço inicial para o gráfico selecionado e conjunto apropriado ponteiros internos. Todas as operações subseqüentes gráfico será pré-formados neste gráfico. Parâmetros:
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina - n: Número gráfico. Valores válidos: 0 e 1. T6963C_init. / / de texto definido como um de texto atual. T6963C_setTxt (1);
T6963C_SetTxt Protótipo
vazio T6963C_setTxt (n char);
Retorna
Nada.
Descrição
Calcular o ender eç o inicial para o de texto selecionado e definir o ponto interno aproers. Todas as operações subsequentes do texto será pré-formados neste de texto. Parâmetros:
Requer Exemplo
neces si dad es módul o Toshi ba GLCD para ser inicializado. Veja a rotina - n: número do . Valores válidos: 0 e 1. T6963C _Ini t. de texto definido como um de texto atual. / / T6963C_setTxt (1);
T6963C_Fill Protótipo
vazio T6963C_Fill (unsigned char v);
Retorna
Nada. Preencha atual na íntegra (texto + gráfico) com o valor apropriado (0 a clara).
Descrição Parâmetros: - v: valor para preencher com. Requer
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init.
Exemplo
/ / transparente atual T6963C_Fill (0);
Mikroelektronika - Software e Soluções de hardware para Embedded World
543
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_grFill Protótipo
vazio T6963C_grFill (unsigned char v);
Retorna
Nada. Preencha atual gráfico com valor apropriado (0 a clara).
Descrição
Parâmetros: - v: valor para preencher com gráfico.
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / atual clara gráfico T6963C_grFill (0);
T6963C_txtFill Protótipo
vazio T6963C_txtFill (unsigned char v);
Retorna
Nada. Preencha texto atual com o valor apropriado (0 a clara).
Descrição
Parâmetros: - v: este valor aumentou 32 será utilizado para preenchimento do de
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina texto. T6963C_init. / / de texto claro atuais T6963C_txtFill (0);
T6963C_cursor_height Protótipo
vazio T6963C_cursor_height (unsigned char n);
Retorna
Nada. Defina o tamanho do cursor.
Descrição
Parâmetros: - n: cursor altura. Valores válidos: 0 .. 7.
Requer Exemplo
544
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. T6963C_cursor_height (7);
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
T6963C_Graphics Protótipo
vazio T6963C_graphics (char n);
Retorna
Nada. Ativar / desativar gráfico exibindo.
Descrição
Parâmetros: - n: on / off parâmetro. Valores válidos: 0 (Dispaying gráfico desativar) e 1 (Habilitar exibição gráfica).
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Enable gráfico exibindo T6963C_graphics (1);
T6963C_text Protótipo
vazio T6963C_text (char n);
Retorna
Nada. Activar / desactivar a visualização de texto.
Descrição
Parâmetros: - n: on / off parâmetro. Valores válidos: 0 (Texto desativar dispaying) e 1 (Habilitar texto visualizar).
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Ativar texto exibindo T6963C_text (1);
T6963C_cursor Protótipo
vazio T6963C_cursor (char n);
Retorna
Nada. Definir cursor on / off.
Descrição
Parâmetros: - n: on / off parâmetr o. Valores válidos : 0 (Curs or compens aç ã o) e 1 (Conjunto
Requer
Toshiba cursor). módulo GLCD precisa ser inicializado. Veja a rotina T6963C_init.
Exemplo
/ Cursor / set em T6963C_cursor (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
545
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_Cursor_Blink Protótipo
vazio T6963C_cursor_blink (char n);
Retorna
Nada. Ativar / desativar o cursor piscando.
Descrição
Parâmetros: - n: on / off parâmetro. Valores válidos: 0 (Cursor desativar a piscar) e 1 (Habilitar cursor piscando).
Requer Exemplo
necessidades módulo Toshiba GLCD para ser inicializado. Veja a rotina T6963C_init. / / Ativar o cursor piscando T6963C_cursor_blink (1);
Exemplo Biblioteca Os testes de demonstração a seguir rotinas avançadas de desenho da biblioteca GLCD T6963C. Hardware configurações neste exemplo são feitas para a 240x128 T6963C display, placa EasyPIC5 e 16F887. # Include
"__T6963C.h"
/ / Conexões T6963C módulo T6963C_dataPort char na PORTD;
/ / Porta de dados
sbit sbit sbit sbit sbit sbit sbit sbit
/ / WR sinal de escrita / / RD leitura do sinal / / CD de comando / sinal de dados / / RST sinal de reset / / WR sinal de escrita / / RD leitura do sinal / / CD de comando / sinal de dados / / RST sinal de reset
T6963C_ctrlwr em T6963C_ctrlrd em T6963C_ctrlcd em T6963C_ctrlrst em T6963C_ctrlwr_Direction T6963C_ctrlrd_Direction T6963C_ctrlcd_Direction T6963C_ctrlrst_Direction em
RC2_bit; RC1_bit; RC0_bit; RC4_bit; em em em
TRISC2_bit; TRISC1_bit; TRISC0_bit; TRISC4_bit;
/ / Não Sin ais Util izados p ela bibl ioteca, eles sã o defini dos em f unção p rincipal sbit T6963C_ctrlce em RC3_bit; / / O sinal CE sbit T6963C_ctrlfs em RC6_bit / / sinal de FS sbit T6963C_ctrlmd em RC5_bit; / sinal / MD sbit T6963C_ctrlce_Direction em TRISC3_bit / / direção do sinal CE sbit T6963C_ctrlfs_Direction em TRISC6_bit / / direção do sinal FS sbit T6963C_ctrlmd_Direction em TRISC5_bit / / direção do sinal MD / / Fim conexões T6963C módulo
546
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
/ * * imagens bitmap armazenado em ROM * / const char código mC []; const char código Einstein] [; vazio main () { char txt1 [] = "EINSTEIN teria gostado mim "; char txt [] = "DEMO BIBLIOTECA GLCD, BEM -VINDO!"; não não não não
assinado assinado assinado assinado
; i; vira-latas; osx, osy;
char int char int
TRISA0_bit TRISA1_bit TRISA2_bit TRISA3_bit TRISA4_bit
= = = = =
1; 1; 1; 1; 1;
T6963C_ctrlce_Direction = 0; T6963C_ctrlce = 0; T6963C_ctrlfs_Direction = 0; T6963C_ctrlfs = 0; T6963C_ctrlmd_Direction = 0; T6963C_ctrlmd = 0; ANSEL = 0; ANSELH = 0;
/ / atual / / Registrador genérico / / Visibilidade do cursor / / A posição do cursor-x, y / / / / /
/ / / / /
Definir Definir Definir Definir Definir
RA0 RA1 RA2 RA3 RA4
como como como como como
Entrada Entrada Entrada Entrada Entrada
/ / Ativar T6963C / / Fonte Selecione 8x8 / / Número da coluna na escolha / / Configurar um pinos como I / O digital
/ / Inicializar T6369C T6963C_init (240, 128, 8); / * * Possibilitar gráficos e exibir texto, ao mesmo tempo * / T6963C_graphics (1); T6963C_text (1); = 0; i = 0; curs = 0; osy osx = 0; / * As mensagens de texto * * / T6963C_write_text (txt, 0, 0 T6963C_ROM_MODE_XOR); T6963C_writ e_text ( txt1, 0, 15, T69 63C_ROM _MODE_XO R);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
547
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas / * * Cursor * / T6963C_cursor_height (8); T6963C_set_cursor (0, 0); T6963C_cursor (0);
/ / 8 pixels de altura / / Move o cursor para cima à esquerda / Cursor / off
/ * * Desenhar retângulos * / T6963C_rectangle (0, 0, 239, 127, T6963C_WHITE); T6963C_rectangle (20, 20, 219, 107, T6963C_WHITE); T6963C_rectangle (40, 40, 199, 87, T6963C_WHITE); T6963C_rectangle (60, 60, 179, 67, T6963C_WHITE); / * * Desenhar uma cruz * / T6963C_line (0, 0, 239, 127, T6963C_WHITE); T6963C_line (0, 127, 239, 0, T6963C_WHITE); / * * Desenhar caixas sólidas * / T6963C_box (0, 0, 239, 8, T6963C_WHITE); T6963C_box (0, 119, 239, 127, T6963C_WHITE); / * * Desenhar círculos * / T6963C_circle (120, 64, T6963C_circle (120, 64, T6963C_circle (120, 64, T6963C_circle (120, 64, T6963C_circle (120, 64, T6963C_circle (120, 64, T6963C_circle (120, 64,
T6963C_WHITE T6963C_WHITE T6963C_WHITE T6963C_WHITE T6963C_WHITE T6963C_WHITE T6963C_WHITE
T6963C_sprite (76, 4, Einstein, 88, 119); T6963C_setGr (1);
10); 30); 50); 70); 90); 110); 130); / / Desenha um sprite
/ / Selecione outra gráfico
T6963C_image (MC); for (;) {/ / faz um loop infinito / * * Se RA0 é pressionada, exibir apenas o gráfico * / if (RA0_bit) { T6963C_graphics (1);
548
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas T6963C_text (0); Delay_ms (300); }
/ * * Se RA1 é pressionado, alternar a exibição entre o gráfico 0 e um gráfico * / else if (RA1_bit) { + +; e = 1; T6963C_displayGr (); Delay_ms (300); } / * * Se RA2 é pressionado, visor do de apenas texto * / else if (RA2_bit) { T6963C_graphics (0); T6963C_text (1); Delay_ms (300); } / * * Se RA3 é pressionado, o texto de exibição e painéis gráficos * / else if (RA3_bit) { T6963C_graphics (1); T6963C_text (1); Delay_ms (300); } / * * Se RA4 é pressionado, o cursor mudar * / else if (RA4_bit) { Curs + +; if (curs == 3) curs = 0; switch (vira-latas) { caso 0: / / Cursor não T6963C_cursor (0); break; caso 1: / / Cursor piscando T6963C_cursor (1); T6963C_cursor_blink (1); break; caso 2:
Mikroelektronika - Soluções de software e hardware para o mundo embutido
549
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas / / Cursor intermitente não T6963C_cursor (1); T6963C_cursor_blink (0); break; } Delay_ms (300); }
/ * * Move o cursor, mesmo que não visível * / osx + +; if (osx T6963C_txtCols ==) { osx = 0; osy + +; if (osy == T6963C_grHeight / T6963C_CHARACTER_HEIGHT) { osy = 0; } } T6963C_set_cursor (osy osx); Delay_ms (100); } }
550
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
T6963C GLCD conexão HW
Mikroelektronika - Soluções de software e hardware para o mundo embutido
551
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas UART BIBLIOTECA
UART módulo de hardware está disponível com uma série de microcontroladores PIC. mikroC PRO para PIC Biblioteca UART dá trabalho confortável com o (full duplex) assíncrona modo. Você pode facilmente comunicar com outros dispositivos via protocolo RS -232 (por exemplo com o PC, veja a figura no final do tópico - RS-232 HW). Você precisa um microcontrolador PIC com hardware UART integrado, por exemplo 16F887. Então, simplesmente use as funções listadas abaixo. Nota: PIC18 MCUs Alguns têm vários módulos UART. Alternando entre os módulos UART UART na biblioteca é feito pela função UART_Set_Active (UART módulo tem que ser previamente inicializada). Nota: Para usar a rotina da biblioteca UART desejado, basta alterar o número 1 no protótipo com o número adequado de módulo, ou seja, UART2_Init (2400);
Rotinas da biblioteca - UART1_Init - UART1_Data_Ready - UART1_Tx_Idle - UART1_Read - UART1_Read_Text - UART1_Write - UART1_Write_Text - UART_Set_Active
552
Mikroelektronika - Soluções de software e hardware para EMBEDDED MUNDO
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Uart_Init Protótipo
vazio UART1_Init (unsigned long baud_rate);
Retorna
Nada.
Descrição
Inicializa o módulo desejado hardware UART com a taxa de transmissão. Consulte a dados do dis posi tiv o fol ha par a tax as de tr ans mis s ão per miti u es pecífic as FOSC. Se você especificar o
taxa de transmissão sem e, compilador relatará um erro. Você precisa PIC MCU com hardware UART. UART1_Init precisa ser chamada antes de usar as outras funções da UART Biblioteca.
Parâmetros: Requer
- baud_rate: solicitou taxa de transmissão Consulte a folha de dados do dispositivo para taxas de transmissão permitiu FOSC específicos. Nota: O cálculo do valor da taxa de UART transmissão é realizada pelo compilador,
Exemplo
como Isto módulo de hardware UART1grande, e estabelecer a comunicação em que irá iriainicializar produziro um código relativamente se realizado em o nível 2400 bps: biblioteca. Portanto, o compilador precisa saber o valor do parâmetro em tempo de compilação. UART1_Init (2400); É por isso que este parâmetro deve ser uma constante, e não uma variável.
Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo
553
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Uart_Data_Ready Protótipo
char UART1_Data_Ready ();
- 1 se os dados estão prontos para leitura - 0 se não houver dados no cadastro receber
Retorna Descrição Requer
Exemplo
Use a função para testar se os dados no buffer de recepção está preparado para a leitura. UART módul o HW deve ser inicializad o e comuni c aç ão estabel eci d a antes usar essa função. Veja UART1_Init. / / Se os dados estiverem prontos, lê-lo: se (UART1_Data_Ready () == 1) { receber = UART1_Read (); }
UART1_Tx_Idle Protótipo
char UART1_Tx_Idle ();
- 1 se os dados estão prontos para a leitura - 0 se não houver dados no cadastro receber
Retorna Descrição Requer
Exemplo
Use a função para testar se o registrador de transmissão mudança está vazia ou não. UART módul o HW deve ser inicializad o e comuni c aç ão estabel eci d os antes usar essa função. Veja UART1_Init. / / Se os dados anteriores foi deslocado para fora, enviar os dados a seguir: se (UART1_Tx_Idle () == 1) { UART1_Write (_data); }
UART1_Read
554
Protótipo
char UART1_Read ();
Retorna
Retorna o byte recebido.
Descrição
Função recebe um byte via UART. Use a função para UART1_Data_Ready testar se de dados está pronto primeiro.
Requer
UART módul o HW deve ser inicializad o e comuni c aç ão estabel eci d a antes usar essa função. Veja UART1_Init.
Exemplo
/ / Se os dados estiverem prontos, lê-lo: se (UART1_Data_Ready () == 1) { receber = UART1_Read (); }
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
UART1_Read_Text Protótipo
vazio UART1_Read_Text (char * Saída, char * Delimitador, char As tentativas);
Retorna
Nada. Lê caracter es recebi dos via UART até a seqüênci a delimita dor é detecta do. A seqüência de leitura é armazenado no parâmetro saída; seqüência delimitador é armazenado no parâmetro delimitador.
Descrição Esta é uma chamada de bloquei o: a seqüênci a delimitador Espera- s e, caso contrári o o proce-
Requer
mento s ai (se o delimitador não é encontr ado). Par âmetr o Tentativas define o númer o de caracteres recebidos em que Delimitador seqüência é esperado. Se Tentativas é definido UART módul o HW deve ser inicializad o e comuni c aç ão estabel eci d a antes a 255, essa rotina será continuamente tentar detectar o Delimitador seqüência. usar essa função. Veja UART1_Init. Leia o texto até a seqüência de "OK" é recebida, e enviar de volta o que é foram recebidos: UART1_Init (4800) / / inicializar o módulo UART1 Delay_ms (100);
Exemplo enquanto (1) { se (UART1_Data_Ready () == 1) {/ / se os dados são recebidos UART1_Read_Text (saída ", delim", 10) / / lê o texto até "Delim 'é encontrado UART1_Write_Text (output); / / envia o texto } }
UART1_Write Protótipo
vazio UART1_Write (char _data);
Retorna
Nada. A função transmite um byte através do módulo de UART.
Descrição
Parâmetros: _data: dados a serem enviados
Requer
UART módul o HW deve ser inicializad o e comuni c aç ão estabel eci d a antes usar essa função. Veja UART1_Init.
Exemplo
unsigned char _data = 0x1E; ... UART1_Write (_data);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
555
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas UART1_Write_Text Protótipo
vazio UART1_Write_Text (char * UART_text);
Retorna
Nada.
Descrição
Envia texto (UART _text parâmetr o) via UART. O texto deve ser zero encerr ad o.
Requer
UART módul o HW deve ser inicializad o e comuni c aç ão estabel eci d a antes usar essa função. Veja UART1_Init. Leia o texto até a seqüência de "OK" é recebida, e enviar de volta o que foi recebido: UART1_Init (4800); / / inicializa UART1 módulo Delay_ms (100);
Exemplo enquanto (1) { se (UART1_Data_Ready () == 1) {/ / se os dados são recebidos UART1_Read_Text (saída ", delim", 10) / / lê o texto até "Delim 'é encontrado UART1_Write_Text (output); / / envia o texto } }
UART_Set_Active Protótipo
vazio UART_ Set_Acti ve (char (* Read _ptr) ( ), vazio (* Write_ptr) (unsigned char data_), char (Ready_ptr) (), char (* Tx_idle_ptr) ())
Retorna
Nada. Define módulo UART ativos que serão usados pelas rotinas de biblioteca UART. Parâmetros:
Descrição -
read_ptr: manipulador UART1_Read write_ptr: manipulador UART1_Write ready_ptr: UART1_Data_Ready manipulador tx_idle_ptr: manipulador UART1_Tx_Idle
A rotina é disponível apenas para MCUs com dois módulos UART. Requer
Usado módulo UART deve ser inicializado antes de utilizar esta rotina. Veja UART1_Init rotina
Exemplo
556
/ / Ativar módulo UART2 UART_Set_Active (& UART1_Read & UART1_Write & UART1_Data_Ready, & UART1_Tx_Idle);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Exemplo Biblioteca O exemplo demonstra uma simples troca de dados via UART. Quando PIC MCU recebe os dados, ele imediatamente envia-lo de volta. Se o PIC é ligado ao PC (ver o figura abaixo), você pode testar o exemplo da mik roC PRO para PIC terminal para Comunicação RS-232, opção de menu Ferramentas > Terminal. char uart_rd; vazio main () { UART1_Init (9600); bps Delay_ms (100); lize enquanto (1) { se (UART1_Data_Ready ()) { uart_rd UART1_Read = (); UART1_Write (uart_rd); } }
/ / Inicializa o módulo UART em 9600 / / Espera módulo UART para estabili-
/ / / /
/ / / /
Loop infinito Se os dados são recebidos, Lê os dados recebidos, E enviar dados via UART
}
Mikroelektronika - Soluções de software e hardware para o mundo embutido
557
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas HW Conexão
RS-232 HW
558
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
USB HID BIBLIOTECA Universal Serial Bus (USB) fornece um barramento serial padrão para conectar uma ampla variedade de dispositivos, incluindo computadores, telefones celulares, consoles de jogos, PDA's, etc mik roC PRO para PIC inclui uma biblioteca para trabalhar com dispositivos de interface humana através Universal Serial Bus. Um dispositivo de interface humana ou HID é uma tipo de dispositivo de computador que interage diretamente com os e leva a entrada de seres humanos, tais como o teclado, mouse, mesa digitalizadora, e assim por diante.
O descritor de arquivos Cada projeto baseado na biblioteca HID USB deve incluir um arquivo de origem descritor que contém identificação do fornecedor e nome, identificação do produto e nome, comprimento relatório, e outros informações relevantes. Para criar um arquivo descritor, o uso integrado USB HID terminal de mikroC PRO para PIC (Ferramentas> Terminal USB HID). O nome padrão para arquivo descritor é USBdsc.c, mas você pode renomeá-lo. O código fornecido na "Exemplos" obras de pasta de 48MHz, e as bandeiras não podem ser alterados sem consultar a ficha apropriada em primeiro lugar.
Rotinas da biblioteca - Hid_Enable - Hid_Read - Hid_Write - Hid_Disable
Mikr oele ktro nika Solu ções de soft ware e hard ware para o mun do emb utido
559
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Hid_Enable Protótipo
vazio Hid_Enable (unsigned readbuff, não assinado writebuff);
Retorna
Nada.
Descrição
Permite a comunicação USB HID. Parâmetros readbuff e writebuff são O buffer de leitura e de gravaç ão do buffer, respecti v ame nte, os quais são utilizados para com HIDde comunicação.
Requer
Esta função precisa ser chamada antes de usar outras rotinas de USB HID Nada.
Exemplo
Hid_Enable (& rd, wr &); Biblioteca.
Hid_Read Protótipo
unsigned char Hid_Read (void);
Retorna
Número de caracteres no buffer de leitura recebidos do host.
Descrição Requer
Recebe a mens a gem de acolhi m ento e armaz ena no buffer de leitura. função retorna o número de caracteres recebidos de leitura. HID USB precisa ser ativada antes no debuffer usar este função. Veja Hid_Enable.
Exemplo
obter Hid_Read = ();
Hid_Write Protótipo
não assinado curto Hid_Write (unsigned writebuff, unsigned short len);
Retorna
1 se os dados foram enviados com sucesso, 0 se não.
Descrição
Função envia dados do buffer de escrita writebuff para hospedar. Escrever é o Buffer mesmo parâmetro utilizado na inicialização; Hid_Enable ver. Parâmetro len devem especificar o tamanho dos dados a serem transmitidos. Chamada de função necessita de ser repetida, desde que os dados não são
560
Requer
enviados sucesso. HID USB com precisa ser ativada antes de usar esta função. Veja Hid_Enable.
Exemplo
/ / Repetir até o sucesso. while (Hid_Write (& my_Usb_Buff, 1)!);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Hid_Disable Protótipo
vazio Hid_Disable (void);
Retorna
Nada.
Descrição
Desativa a comunicação USB HID.
Requer
HID USB precisa ser ativada antes de usar esta função. Veja Hid_Enable.
Exemplo
Hid_Disable ();
Exemplo Biblioteca O exemplo a seguir envia continuamente seqüência de números de 0 .. 255 para o PC via Universal Serial de ônibus. usbdsc.c devem ser incluídas no projeto (via mikroC PRO para PIC ferramenta IDE ou via # Include mecanismo de código fonte). unsigned short m, k; unsigned short RD_buffer [64]; unsigned short WR_buffer [64]; vazio interrupt () { asm CALL _Hid_InterruptProc nop asm } void Init_Main () { / / Desativar todas as interrupções / / Disable GIE, PEIE, TMR0IE INT0IE, RBIE INTCON = 0; INTCON2 0xF5 =; INTCON3 = 0xC0; / / Desactivar Níveis de prioridade na interrupções RCON.IPEN = 0; PIE1 = 0; PIE2 = 0; TIP1 = 0; PIR2 = 0; / / Configura todas as portas com função analógica como digital ADCON1 | = 0x0F; / / Configuração de Portas TRISA = 0; TRISB = 0; TRISC = 0xFF; TRISD = 0xFF; TRISE = 0x07;
Mikroelektronika - Soluções de software e hardware para o mundo embutido
561
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas LATA LATB LATC LATD TARDE
= = = = =
0; 0; 0; 0; 0;
/ / RAM usuário Limpar / / Bancos [00 .. 07] (8 x 256 = 2048 bytes) asm { LFSR FSR0, 0x000 MOVLW 0x08 CLRF POSTINC0, 0 FSEQ FSR0H, 0 BRA $ - 2 } / Timer / 0 T0CON = 0x07; TMR0H => (65536-156)> 8; TMR0L = (65536-156) e 0xFF; INTCON.T0IE = 1 / / Enable T0IE T0CON.TMR0ON = 1; }
/ ** Rotina programa principal ** / vazio main () { Init_Main (); Hid_Enable (& RD_buffer & WR_buffer); fazer { para (K = 0; k <255; k + +) { / / Prepara buffer de envio WR_buffer [0] = k; / / Envia a Número via USB Hid_Write (& WR_buffer, 1); } } enquanto (1); Hid_Disable (); }
562
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Conexão HW
Esquema de conexão USB
Mikroelektronika - Soluções de software e hardware para o mundo embutido
563
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Padrão ANSI C bibliotecas - ANSI - ANSI - ANSI - ANSI
C C C C
Ctype Biblioteca Biblioteca de Matemática Stdlib Biblioteca String Biblioteca
Biblioteca Ctype ANSI C A mik roC PRO para PIC fornece um conjunto de funções da biblioteca padrão ANSI C para o testeção e mapeamento de caracteres. Nota: Nem todos os funções padrão foram incluídos. Nota: As funções têm sido quase sempre executado de acordo com os padrões ANSI Cdard, mas algumas funções têm sido modificados de modo a facilitar programa PICming. Certifique-se de percorrer a descrição antes usando funções C padrão.
Funções da biblioteca - isalnum - isalpha - iscntrl - isdigit - isgraph - islower - ispunct - isspace - isupper - isxdigit - toupper - tolower
564
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
isalnum Protótipo
unsigned short isalpha (char personagem);
Descrição
A função retorna 1 se o caráter é alfanumérico (A-Z, um-z, 0-9), caso contrário retorna zero.
isalpha Protótipo
unsigned short isalpha (char personagem);
Descrição
A função retorna 1 se o caráter é alfabética (A-Z, um-z), caso contrário, retorna zero.
iscntrl Protótipo
unsigned short iscntrl (char personagem);
Descrição
A função retorna 1 se o caráter é um controle ou eliminar caracter (decimal 0 31 e 127), caso contrário retorna zero.
isdigit
isgraph Protótipo
unsigned short isgraph (char personagem);
Descrição
A função retorna 1 se o caráter é uma impressão, excluindo o espaço (decimal 32), caso contrário retorna zero.
islower
ispunct
Mikroelektronika - Soluções de software e hardware para o mundo embutido
565
Protótipo
unsigned short isdigit (char personagem);
Descrição
A função retorna 1 se o caráter é um dígito (0-9), caso contrári o retorna zero.
Protótipo
int islower (char personagem);
Descrição
A função retorna 1 se o caráter é uma letra minúscula (a-z), caso contrário, retorna zero.
Protótipo
unsigned short ispunct (char personagem);
Descrição
A função retorna 1 se o caráter é uma pontuação (decimal 32-47, 58-63, 91 96, 123-126), caso contrário retorna zero.
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas isspace Protótipo
unsigned short isspace (char personagem);
Descrição
A função r etorna 1 se o caráter é um espaço em br anc o ( espaço, tabulaç ão, CR, HT , VT , NL, FF), caso contrário retorna zero.
isupper Protótipo
unsigned short isupper (char personagem);
Descrição
A função retorna 1 se o caráter é uma letra maiúsc ul a (A-Z), caso contrári o retorna zero.
isxdigit Protótipo Descrição
unsigned short isxdigit (char personagem);
A função retorna 1 se o caráter é um dígito hexadeci m al (0-9, A-F, a-f), caso contrári o retorna zero.
toupper Protótipo
unsigned short toupper (char personagem);
Descrição
Se o caráter é uma letra minúscula (az), a função retorna uma maiúscula carta. Caso contrário, a função retorna um parâmetro de entrada inalterado.
tolower
566
Protótipo
unsigned short tolower (char personagem);
Descrição
Se o caráter é uma letra maiúscula (AZ), a função retorna uma minúscula deixeter. Caso contrário, a função retorna um parâmetro de entrada inalterado.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Biblioteca matemática ANSI C A mik roC PRO para PIC fornece um conjunto de biblioteca padrão ANSI C funções para manipulação matemática de ponto flutuante. Nota: Nem todas as funções padrão foram incluídos. Nota: As funções têm sido quase sempre executado de acordo com os padrões ANSI Cdard, mas algumas funções têm sido modificados de modo a facilitar programa PICming. Certifique-se de percorrer a descrição antes de usar funções C padrão.
Funções da biblioteca - acos - asin - atan - atan2 - ceil - cos - cosh - eval_poly - exp - fabs - andar - frexp - ldexp - log - log10 - modf - pow - pecado - sinh - sqrt - bronzeado - tanh
Mikroelektronika - Soluções de software e hardware para o mundo embutido
567
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas acos Protótipo
dupla acos (double x);
Descrição
F unç ão r etor na o arc o c oss eno de par âmetr o x, ou seja, o valor cujo cosseno é x. O parâmetro de entrada x deve estar entre -1 e 1 (inclusive) . A retorno valor é em radianos entre 0 e Π (Inclusive).
asin Protótipo
dupla asin (duplo x);
Descrição
A função retorna o arco seno de parâmetro x, ou seja, o valor cujo seno é x. O parâmetro de entrada x deve estar entre -1 e 1 (inclusive). O retorno valor é em radianos, entre-Π / 2 eΠ / 2 (inclusive).
atan Protótipo
dupla atan (double f);
Descrição
Função calcula o arco tangente de parâmetr o f, isto é, o valor cujo tangent é f. O valor de retorno é em radianos entre-Π / 2 e Π / 2 (Inclusive).
atan2 Protótipo
dupla atan2 (duplo y, dupla x);
Descrição
Esta é a dois argumentos da função arco tangente. É semel hante ao cálculo do arco tangente y / x, exceto que os sinais de ambos argumentos são usados para determinar
ceil
o quadr ante do resultado e x é permiti d a a zero. O retor no valor está em radianos, entre-Π e Π (Inclusive).
cos
568
Protótipo
dupla cos (double f);
Descrição
A função retorna o cosseno de f em radianos. O valor de retorno é de -1 a 1.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
Protótipo
dupla ceil (double x);
Descrição
Função retorna o valor do parâmetro x arredondado para o próximo número inteiro.
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
cosh Protótipo
dupla cosh (duplo x);
Descrição
A f unç ão ret orna o c oss eno hiperbólic o de x, definida matematicamente como (Ex + e -x) / 2. Se
eval_poly Protótipo Descrição
o valor de x é muito grande (se estouro ocorre), a função falha. estático duplo eval_poly (duplo x, c onst dupla Código * d, i nt n);
Funç ão polinómi o Calcul a par a o númer o x, com coeficientes armazenados em d [], para
grau n.
exp Protótipo
dupla exp (double x);
Descrição
A função retorna o valor de e - a base dos logaritmos naturais - levantadas para o poder x (ou seja, ex).
fabs
andar
frexp Protótipo Descrição
dupla frexp (duplo valor, int * Eptr);
Função divide um valor de ponto flutuante em uma fração normaliz ada e um integr ante potência de 2. O valor de retorno é normalizado fração eo expoente inteiro é armazenado no objeto apontado por eptr.
ldexp
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
569
Protótipo
dupla fabs (double d);
Descrição
A função retorna o valor (ou seja, positivo) absoluta de d.
Protótipo
dupla andar (dupla x);
Descrição
A função retorna o valor do parâmetr o x arredon dado para o númer o inteiro mais próximo.
Protótipo Descrição
dupla ldexp (duplo valor, int newexp);
Função retorna o resultad o da multiplic aç ão do númer o de ponto flutuante Num. por 2 elevado à potência n (Ou seja, retorna x * 2n).
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas log Protótipo
dupla log (double x);
Descrição
A função retorna o logaritmo natural de x (ou seja, loge (x)).
log10
modf Protótipo
dupla modf (duplo val, dupla * Iptr);
Descrição
Retorna o argumento val divisão para a parte fracionária (função val ida e volta) e inteiro parte (em iptr número).
pow Protótipo
dupla pow (double x, dupla y);
Descrição
A função retorna o valor de x elevado à potência y (ou seja, xy). Se x é negativo, a função será automaticamente elenco y em unsigned long.
pecado
sinh Protótipo
dupla sinh (duplo x);
Descrição
Função Retorna o seno hiperbólico de x, definida matematicamente como (Ex-ex) / 2. Se o valor da x é muito grande (se ocorrer estouro), a função falha.
sqrt
570
Protótipo
dupla sqrt (double x);
Descrição
A função retorna a raiz quadrada não negativa de x.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
Protótipo
dupla log10 (double x);
Descrição
A função retorna o logaritmo de base 10 de x (ou seja, log10 (x)).
Protótipo
dupla sin (double f);
Descrição
A função retorna o seno de f em radianos. O valor de retorno é de -1 a 1.
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
bronzeado Protótipo
dupla tan (double x);
Descrição
A função retorna a tangente de x em radianos. A retorno abrange o valor intervalo permitido de ponto flutuante no mik roC PRO para a PIC.
tanh Protótipo Descrição
dupla tanh (duplo x);
A função retorna a tangente hiperbólica de x, definida matematicamente como sinh (x) / cosh (x).
ANSI C Stdlib Biblioteca A mik roC PRO para PIC fornece um conjunto de funções da biblioteca padrão ANSI C de utilidade geral. Nota: Nem todas as funções padrão foram incluídos. Nota: As funções têm sido quase sempre executado de acordo com o padrão ANSI C, mas certos funções foram alteradas a fim de facilitar a programação de PIC. Certifique-se de percorrer o descrição antes de usar funções C padrão.
Funções da biblioteca - abs - atof - atoi - atol - div - ldiv - uldiv - laboratórios - max - min - rand - srand - xtoi
Mikroelektronika - Soluções de software e hardware para o mundo embutido
571
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas abs Protótipo
int abs (int a);
Descrição
A função retorna o valor (ou seja, positivo) absoluta de a.
atof Protótipo
Descrição
atoi Protótipo
Descrição
atol Protótipo
Descrição
div
572
dupla atof (char * S)
Função converte a seqüência de entrada s em um valor de precisão dupla e retorna o valor. Seqüênci a de entrada s deve estar em confor mi dade com o formato de ponto flutuante literal, com uma espaços opcionais no início. A seqüência será processada uma personagem ao mesmo tempo, até que a função atinge um personagem que ele não reconhece (inclução um caractere nulo). int atoi (char * S);
Função converte a seqüência de entrada s em um valor inteiro e retorna o valor. A seqüência de entrada s deveria consistir exclusivamente de casas decimais, com um opcional branco e um sinal no início. A seqüência será processada uma cater de cada vez, até o função atinge um person age m que não reconhec e (Incluindo um caractere nulo). tempo atol (char * S)
Funç ão conver te a seqüênci a de entrada s em um valor inteiro e retorna o valor. A seqüênci a de entrada s deve consistir exclusivam e nte de casas decimai s, com espaços opcionais e um sinal no início. A seqüência será processada uma caracteres de cada vez, até que a função atinge um personagem que não reconhece Nize (incluindo um caractere nulo).
Protótipo
div_t div (int número, int denom);
Descrição
Função calcula o resultado da divisão do numerador número por denom ainator denom, a função retorna uma estrutura do tipo div_t c ompr eendendo quociente (Quot) eo restante (REM), ver Div. Estruturas.
Mikroelektronika - Software e Soluções de hardware para Embedded World
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
ldiv Protótipo
ldiv_t ldiv (long número, tempo denom);
A função é semelhante à função div, exceto que os argumentos eo resultado membros de estrutura têm tipo tempo. Descrição Função calcula o resultado da divisão do numerador número por denom ainator denom, a função retorna uma estrutura do tipo ldiv_t compreendendo quopaciente (quot) eo restante (REM), consulte Estruturas Div.
uldiv Protótipo
uldiv_t uldiv (unsigned long número, unsigned long denom);
A função é semelhante à função div, exceto que os argumentos eo resultado membros de estrutura têm tipo unsigned long. Descrição
Função calcula a resultado da divisão do numerador número por denom ainator denom, a função retorna uma estrutura do tipo uldiv_t compreendendo quopaciente (quot) eo restante (REM), ver Div. Estruturas.
laboratórios
max Protótipo
int max (int um, int b);
Descrição
A função retorna maior dos dois inteiros, um e b.
min
rand Protótipo
int rand ();
Descrição
Função retorna um seqüênci a de númer os pseudo- al eatóri o entre 0 e 32767. A funç ão será sempr e produzir a mes ma seqüênci a de númer os a menos srand é chamado para semear o ponto de partida.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
573
Protótipo
tempo laboratórios (de longo x);
Descrição
A função retorna o valor (ou seja, positivo) absoluta de inteiro longo x.
Protótipo
int min (int um, int b);
Descrição
A função retorna menor dos dois números inteiros, um e b.
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas srand Protótipo Descrição
xtoi Protótipo
Descrição
vazio srand (unsigned x);
Função usa x como ponto de partida para uma nova seqüência de números pseudo-aleatóriosmembr os a ser devolvi do por chamad as subseq üentes para rand. Nenhu m valor é retorna do por essa função. não assinado xtoi (registo char * S);
Função converte a seqüência de entrada s composto de dígitos hexadecimais em uma integer valor. O parâmetro de entrada s deveria consistir exclusivamente de cavar hexadecimal seu, com um espaç o em branc o opcional e um sinal na início. A seqüênci a será processado um personagem de cada vez, até que a função atinge um personagem que não reconhece (incluindo um caractere nulo).
Div. Estruturas typedef struct divstruct { int quot; int REM; Div_t};
typedef struct ldivstruct { tempo quot; tempo REM; Ldiv_t};
typedef struct uldivstruct { unsigned long quot; unsigned long REM; Uldiv_t};
574
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Biblioteca C ANSI String A mik roC PRO para PIC fornece um conjunto de funções da biblioteca padrão ANSI C útil para manipular strings e memória RAM. Nota: Nem todas as funções padrão foram incluídos. Nota: Funções têm sido maioritariamente implementados de acordo com o padrão ANSI C, mas algumas funções têm sido modificados de modo a facilitar a programação de PIC. Seja Certifique-se de percorrer a descrição antes de usar funções C padrão.
Funções da biblioteca - memchr - memcmp - memy - memmove - memset - strcat - strchr - strcmp - stry - strlen - strncat - strny - strspn - strncmp - strstr - strcspn - strpbrk - strrchr
Mikroelektronika - Soluções de software e hardware para o mundo embutido
575
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas memchr Protótipo
Descrição
vazio * Memchr (void * P, char n, unsigned int v);
Função localiza a primeira ocorrência de n em inicial v bytes da área de memória iniciando no endereço p. A função retorna o ponteiro para esse local ou 0 se o n não foi encontrado. Para o parâmetro p você pode usar um valor numérico (literal / / variável constante) indicando o ender eç o de memóri a ou derefer e nc e d valor de um objeto, por exempl o & Mystring ou & P0.
memcmp Protótipo
Descrição
memy
int memcmp (void * S1, vazio * S2, int n);
Função compara o primeiro n caracteres de objetos apontados por s1 e s2 e retorna zero se os objetos são iguais, ou retorna a diferenç a entre a diferenç a do primeir o causador da interferência caracteres (em uma avaliação da esquerda para a direita). Assim, o resultado é maior que zero se o objeto apontado por s1 é maior que o objeto apontado por s2 e vice-versa.
Protótipo
vazio * Memy (void * D1, vazio * S1, int n);
Descrição
cópias Função n caracteres do objeto apontado por s1 para o objeto de ponto ed pelo d1. Se a cópia ocorre entre os objetos que se sobrepõem, o comportamento é
indefinido. A função retorna endereço do objeto apontado por d1.
memmove Protótipo Descrição
vazio * Memmove (void * A, vazio * A partir de, registo int n);
cópias Função n caracteres do objeto apontado por a partir de para o objeto apontado por para. Ao contrário memy, as áreas de memória para e a partir de podem se sobrepor. A função retorna endereço do objeto apontado por para.
memset
576
Protótipo
vazio * Mem set (voi d * P1, char per sonagem , int n)
Descrição
função copia o valor da caráter em cada um dos primeiros n caracteres o objeto apontado por p1. A função retorna endereço do objeto apontado por p1.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
strcat Protótipo
Descrição
strchr
char * Strcat (char * A, char * A partir de);
Função anexa uma cópia da string a partir de para a cadeia para, substituindo o nulo personagem no final da para. Então, um caractere nulo de terminação é adicionado à
resultado. Se a cópia ocorre entre os objetos que se sobrepõem, o comportamento é undemultado. para cadeia deve ter espaço suficiente para armazenar o resultado. A função retorna endereço do objeto apontado por para.
Protótipo
char * Strchr (char * Ptr, char CDH);
Descrição
Função localiza a primeira ocorrência do caractere chr na seqüência ptr. A função r etorna um ponteiro par a a primeira ocorr ência de car áter chr, ou um ponteiro nulo se chr não ocorre no ptr. O caractere nulo de terminação é considerado um
parte da cadeia.
strcmp Protótipo
Descrição
stry Protótipo
int strcmp (char * S1, char * S2);
Função compara strings s1 e s2 e retorna zero se o seqüências são iguais, ou retorna uma diferenç a entre os primeir os caracter es diferentes (em um ava da esquer da para a direita ation). Assim, o resultado é maior que zero se s1 é maior do que s2 e viceversa. char * Stry (char * A, char * A partir de);
funç ão copia a s tring a partir de na seqüência para. Se a cópia for bem sucedida, Descrição
strlen
o
retorna a função. Se a cópia ocorre entre os objetos que se sobrepõem, o comportamento é indefinido.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
577
Protótipo
int strlen (char * S);
Descrição
Função retorna o comprimento da corda s (O caractere nulo final não imputados comprimento da corda é).
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas strncat Protótipo
char * Strncat (char * A, char * A partir de, int tamanho);
Descrição
Função não acrescenta mais do que tamanho caracteres da string a partir de para para. A caráter inicial da a partir de substitui o caractere nulo no final do para. O termicaractere nulo de NAT é sempre anexado ao resultado. A função retorna para.
strny Protótipo
char * Strny (char * A, char * A partir de, int tamanho);
cópias de função não s uperior a tamanho car acteres da string a partir de para para. Se Descrição
copiar
ING tem lugar entre os objetos que se sobrepõem, o comportamento é indefinido. Se a partir de
strspn
é menor do que tamanho caracteres, em seguida, para estará fora preenchido com caracteres nulos para fazer a diferença. A função retorna a string resultante para.
Protótipo
int strspn (char * Str1, char * Str2);
Descrição
Função retorna o comprimento do segmento inicial máximo de str1 que consiste inteiramente de caracteres str2. O caracter nulo que encerra no final do string não é comparado.
strncmp Protótipo
int strncmp (char * S1, char * S2, char len);
Descrição
Função lexicographically compara não superior a len (caracteres que seguem o caractere nulo não comparados) da string apontada por s1 para a string apontada por s2. A função retorna um valor que indica o s1 e s2 relação: Valor Significado <0 s1 "menor que" s2 = 0 s1 "igual" s2 > 0 s1 "maior que" s2
578
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
strstr Protótipo
Descrição
char * Strstr (char * S1, char * S2);
Função localiza a primeira ocorrência da string s2 em a cadeia s1 (Excluindo o caractere nulo de terminação). A função retorna ponteiro para a primeira ocorrência de s2 em s1; se a string foi encontrada,
strcspn
função retorna 0. Se s2 é uma string nula, a função retorna 0.
Protótipo
char * Strcspn (char * S1, char * S2);
Descrição
Função calcula o comprimento do segmento inicial máximo do ponto de cordas ed pelo s1 que consiste inteiramente de car acteres que não estão na c adeia de c aracter es apontada pelo s2. A função retorna o comprimento do segmento inicial.
strpbrk Protótipo
char * Strpbrk (char * S1, char * S2);
Descrição
Função procura s1 para a primeira ocorrência de qualquer caractere da seqüência s2. O caractere nulo final não está incluído na pesquisa. A função retorna ponteiro para o caractere correspondente na s1. Se s1 não contém caracteres de s2, o função retorna 0.
strrchr Protótipo
Descrição
char * Strrchr (char * Ptr, unsigned int CDH);
Função de procura na string ptr para a ocorrência do caractere chr. A caractere nulo de terminação ptr não está incluído na pesquisa. A função retorna ponteiro par a o último chr encontr ada em ptr, se nenhuma correspondência c aracter e foi encontrado, a função retorna 0.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
579
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas BIBLIOTECAS DIVERSAS - Biblioteca Button - Conversões Biblioteca - Sprint Biblioteca - Setjmp Biblioteca - Time Library - Trigonometria Biblioteca
580
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
BOTÃO DE BIBLIOTECA A biblioteca contém rotinas Button miscelânea útil para o desenvolvimento do projeto.
Rotinas da biblioteca - Button
Button Protótipo
unsigned shor t Button (unsigned short * Porto, un signed sh ort pino, unsigned short tempo, unsigned short active_state);
Retorna
Retorna 0 ou 255. Funç ão elimina a influênci a de cintilaç ão contato após pression ar um botão (Debouncing).
Descrição
Requer
Parâmetro porto especifica a localização do botão; parâmetro pinos é o pino número do designado porto e vai de 0 .. 7; parâmetro tempo é um debounce período em milissegundos; parâmetro active_sta te pode ser 0 ou 1, e determinas se o botão está ativo em zero lógica ou lógica. Button pino deve ser configurado como entrada. Exempl o lê RB0, para que o botão é ligado, na transição de 1-0 (Liberação de botão), PORTD é invertida:
Exemplo
fazer { se (Button (& PORTB, 0, 1, 1)) oldstate = 1; se (Oldstate Button & & (& PORTB, 0, 1, 0)) { PORTD = ~ PORTD; oldstate = 0; } } while (1);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
581
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas CONVERSÕES DE BIBLIOTECA
A mik roC PRO para PIC Conversões Biblioteca disponibiliza rotinas para numerais para cordas e BCD / conversões decimal.
Rotinas da biblioteca Você pode obter representação de texto do valor numérico ando-a para um dos following rotinas: - ByteToStr - ShortToStr - WordToStr - IntToStr - LongToStr - LongWordToStr - FloatToStr As seguintes funções converter valores decimais em BCD e vice-versa: - Dec2Bcd - Bcd2Dec16 - Dec2Bcd16
582
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
ByteToStr Protótipo
vazio ByteToStr (unsigned short entrada, char * Saída);
Retorna
Nada.
Descrição
Converte o byte de entrada para uma seqüênci a. A seqüênci a de saída tem de largura fixa de 4 caracter es incluindo nulo personagem no final (terminaç ão de cadeia) . A seqüênci a de saída é direito justificados e restantes posições à esquerda (se houver) são preenchidos com espaços em branco. Parâmetros:
Requer
string de destino deve ter no mínimo 4 caracteres de comprimento. - entrada: byte a ser convertido - saída: string unsigned shortdetdestino = 24;
Exemplo
char txt [4]; ... ByteToStr (t, txt) / / txt é "24" (um branco aqui)
ShortToStr Protótipo
vazio ShortToStr (curto entrada, char * Saída);
Retorna
Nada.
Descrição
Conver te entrada assinado pequeno númer o em uma string. A seqüênci a de saída tem de largura fixa de 5 caracteres, incluindo o caracter nulo no final (terminação de cadeia). A saída string é justificado à direita e posições restantes do lado esquer d o (se houver ) são preenc hi dos com espaços em branco. Parâmetros:
Requer
- entrada: pequeno número a ser convertido string de destino deve ser de pelo menos 5 caracteres de comprimento. - saída: string de destino
Exemplo
curto t = -24; char txt [5]; ... ShortToStr (t, txt) / / txt é "-24" (um branco aqu i)
Mikroelektronika - Soluções de software e hardware para o mundo embutido
583
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas WordToStr Protótipo
vazio WordT oStr (un signed e ntrada, char * Saída);
Retorna
Nada. Converte palavra de entrada em uma seqüênci a. A seqüênci a de saída tem de
Descrição
largura fixa de 6 caracter es incluindo o caracter e nulo no final (string terminaç ão). A seqüênci a de saída é direito justificadas e as posições restantes do lado esquerdo (se houver) são preenchidos com espaços em branco. Parâmetros:
Requer
string de destino deve ser de pelo menos 6 caracteres de comprimento. - entrada: palavra a ser convertida - saída: string tde=destino não assinado 437;
Exemplo
char txt [6]; ... WordToStr (t, txt) / / txt é " 437" (dois espaços e m branco aqui)
IntToStr Protótipo
vazio IntToStr (int entrada, char * Saída);
Retorna
Nada.
Descrição
Converte entrada assinado número inteiro para uma string. A seqüência de saída tem de largura fixa de 7 caracteres, incluindo o caracter nulo no final (terminação de cadeia). A saída string é justificado à direita e as posições restantes do lado esquerdo (Se houver) são preenchidos com espaços em branco. Parâmetros:
584
Requer
- entrada: número inteiro assinado a ser convertido string de destino deve ser de pelo menos sete caracteres de comprimento. - saída: string de destino
Exemplo
int j = -4220; char txt [7]; ... IntToStr (j, txt) / / txt é "- 4220" (em branco aqu i)
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
LongintToStr Protótipo
vazio LongToStr (long entrada, char * Saída);
Retorna
Nada.
Descrição
Converte entrada assinado longo número inteiro para uma string. A seqüência de saída tenha sido fixada largura de 12 caracteres, incluindo o caracter nulo no final (terminação de cadeia). A seqüênci a de saída está justificado a direita e as posições restantes do lado esquer do (se houver) preenchido com espaços em branco. Parâmetros:
Requer
- entrada: assinado número inteiro longo para ser convertido string de destino deve ser de pelo menos 12 caracteres de comprimento. - saída: string de destino
Exemplo
tempo jj = -3700000; char txt [12]; ... LongToStr (txt, jj); / / txt é "-3700000" (três espaços em branco aqui)
LongWordToStr Protótipo
vazio LongWordToStr (unsigned long entrada, char * Saída);
Retorna
Nada.
Descrição
Conv er te um númer o inteiro de entrada unsigned long para uma string. A seqüênci a de saída tem largura fixa de 11 caracteres incluindo o caractere nulo no final (terminação de cadeia). A seqüênci a de saída é justificado à direita e as posições restantes do lado esquer do (se houver ) são preenchidos com espaços em branco. Parâmetros:
Requer
- entrada: número inteiro sem sinal por muito tempo para ser convertido string de destino deve ter pelo menos 11 caracteres de comprimento. - saída: destino string
Exemplo
unsigned long jj = 3700000; char txt [11]; ... LongToStr (txt, jj); / / Txt é "3700000" (três espaços em branco aqui)
Mikroelektronika - Soluções de software e hardware para o mundo embutido
585
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas FloatToStr Protótipo
Retorna
unsigned char FloatToStr (float fnum, unsigned char * Str);
- 3 se o número de entrada é NaN 2 - se o número de entrada é-INF - 1 se o número de entrada é INF + - 0 se a conversão foi bem-sucedida Converte uma variável número do ponto em uma string. Parâmetros:
Descrição
- entrada: número de ponto flutuante para ser convertido - saída: string de destino A seqüência de saída é justificada à esquerda e nulos rescindido após o último dígito.
Requer
Exemplo
586
Nota: maior númer o de ponto flutuante Dado será trunc ado para 7 dígitos string de destino deve ter pelo menos 14 caracteres de comprimento. significativ flutuar os FF1 = -374,2; antes da conversão. flutuar ff2 123,456789 =; flutuar ff3 0,000001234 =; char txt [15]; ... FloatToStr (FF1, txt); / / txt é "-374,2" FloatToStr (FF2, txt); / / txt é "123,4567" FloatToStr (ff3, txt); / / txt é "1.234e-6"
Mikroelektronika - Software e hardware SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Dec2Bcd Protótipo
unsigned short Dec2Bcd (unsigned short decnum);
Retorna
Convertido BCD valor.
Descrição
Conv er te um númer o inteiro de entrada unsigned short a sua repres e ntaç ã o BCD aproção. Parâmetros:
Requer
- decnum: número inteiro curto sem sinal a ser convertido Nada.
Exemplo
unsigned short a, b; ... uma = 22; Dec2Bcd b = (a); / b igual a 34
Bcd2Dec16 Protótipo
não assinado Bcd2Dec16 (unsigned bcdnum);
Retorna
valor decimal de conversão. Converte 16 bits BCD numeral para seu equivalente decimal.
Descrição
Parâmetros: - bcdnum: 16 bits BCD numeral a ser convertido
Requer
Nada.
Exemplo
não assinado a, b; ... a = 0x1234 / / a é igual a 4660 b = Bcd2Dec16 (a), / b / é igual a 1234
Mikroelektronika - Soluções de software e hardware para o mundo embutido
587
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Dec2Bcd16 Protótipo
não assinado Dec2Bcd16 (unsigned decnum);
Retorna
Convertido valor BCD. Converte o valor decimal sem sinal de 16 bits para seu equivalente em BCD.
Descrição
Parâmetros: - decnum número de 16 bits sem sinal decimal a ser convertido
588
Requer
Nada.
Exemplo
não assinado a, b; ... = 2345 um; b = Dec2Bcd16 (a), / b / é igual a 9029
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
IMPRESSÃO BIBLIOTECA A mik roC PRO para PIC fornece os dados de rotina para PrintOut fácil formatação e impressão. Nota: Biblioteca funciona com a família PIC18 só.
Rotinas da biblioteca - Imprimir
Imprimir Protótipo
vazio PrintOu t (void ( * Prntout func) (ch ar ch), c onst char F * ,... );
Retorna
Nada. Imprimir é usado para formatar dados e imprimi-los de uma forma definida pelo usuário
através de uma função de manipulador de impressão. Parâmetros: - prntoutfunc: função de manipulador de impressão - f: formato de string A f argumento é uma seqüênci a de formato e pode ser compos to de personage ns , escapar Descrição
seqüências, e as especificações de formato. caracteres comuns e fugir seqüênci as são copiados para o manipul ador de impress ão na ordem em que são interpretado. Formato especificações sempre começam com um sinal de porcentagem (%) e exigem novos argumentos a serem incluídos na chamada de função. A seqüênci a de formato é lido da esquer da para a direita. O encoun primeira especific aç ão de formato tered se refere ao primeiro argumento após o f parâmetro e, em seguida, converte e fora coloca-l o usando a especific aç ão do formato. Os os segund a especifi c aç ão de formato o segundo argumento, após f, e assim por diante. Se há mais argumentos que o formato
especificações, os argumentos extras são ignorados. Os resultados são imprevisíveis, se houver não são argumentos suficientes para as especificações do formato. As especificações do formato Mikroelektronika - Soluções de software e hardware para o mundo embutido ter o seguinte formato: % [Flags] [width] [{L | L}] [precisão.] Conversion_type
589
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas conversion_type
Argumento
d
int
Assinado número decimal
u
unsigned int
Unsigned número decimal
o
unsigned int
Unsigned número octal
x
unsigned int
X
unsigned int
f
dupla
e
dupla
Unsigned número hexadecimal usando 0123456789ABCDEF Unsigned número hexadecimal usando 0123456789ABCEDF Númer o de ponto flutuante usando o formato []Númer Dddd.dddd o de ponto flutuante usando o
E
dupla
g
dupla
c
int
int é convertido para um unsigned char, eo caráter resultante é escrito
s
Char *
String com um caractere nulo de
p
void *
terminação valor do ponteiro, o formato de X é usado
%
<none>
Tipo
Descrição
590
Formato de saída
formato [[] D.dddde dd flutuante usando o Númer o de -]ponto formato []Númer D.ddddE dd flutuante usando E ou F o de[-]ponto formato, o que é mais compac to para o valor especificado e precisão
A% é escrito. Nenhum argumento é conver ti do. A especificação completa conversão deve ser%%.
Mikroelektronika - SOFTWARE HARDWARE E SOLUÇÕES PARA mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
A bandeiras campo é onde um único caractere é usado para justificar a saída e imprimir sinais + / - e espaços em branco e os pontos decimais, e prefixos octal e hexadecimal, como mostrados na tabela a seguir.
A largura campo é um número não negativo que especifica o número mínimo de caracteres impressos. Se um número de caracteres no valor de saída é menor que a largura, espaços em branco são adicionados à esquerda ou à direita (quando o - sinalizador é especificado), a fim de pad a largura mínima. Se a largura for prefixado com 0, então os zeros são preenchidos em vez de espaços em branco. A largura campo nunca trunca um campo. Se o comprimento do outvalor colocado exceder a largura especificada, todas as personagens são saída.
Descrição A precisão campo é um número não negativo que especifica o número de caacters imprimir, o número de dígitos significativos, ou o número de casas decimais. Os précampo de cisão pode causar truncamento ou o arredondamento do valor da produção em o caso de um número de ponto flutuante, conforme especificado na tabela a seguir. Mikr oele ktro nika Solu ções de soft ware e hard ware para o mun do emb utido
bandeir Significado +as Esquerda justificar a saída no campo especificado largura. espaço ('') #
*
591
Prefixo o valor de saída com sinal + ou - se a saída é um tipo de . Prefixo o valor de saída com um branco se for assinado um valor positivo. Caso branco é prefixado. Prefixocontrário, de um valornenhum de saída em diferente de zero com 0, 0x ou 0X quando utilizado com o, x e X tipos de campo, respectivamente. Quando usado com o e, E, F e G, e G tipos de campo, o # sinalizador força o valor de saída para incluir um ponto decimal Ignorar especificador de formato. ponto. Em qualquer outro caso, o # sinalizador é ignorado.
bandeir MeaningMeaning da precisão campo as O campo de precisão é onde você especific a o númer o mínimo de d, u, o, x, X
f e, E g c, C s
dígitos que serão incluídos no valor da saída. Dígitos não são truncado se o número de dígitos em um argumento excede o definido na precis ão de campo. Se o númer o de dígitos do argumento é menor que o campo de precis ão, o valor de saída é preenc hi do na esquerda com zeros. O campo de precisão é onde você especifi c a o númer o de dígitos à direita do ponto decimal. O último dígito é arredondados. O campo de precisão é onde você especifi c a o númer o de dígitos à direita do ponto decimal. O último dígito é arredondado. O campo de precisão é onde você especific a o númer o máximo de algarismos significativos no valor de saída. A campo de precisão não tem efeito sobre esses tipos de campos. O campo de precisão é onde você especific a o númer o máximo de caracter es no valor de saída. Excesso de caracter es não são trans miti dos.
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Os caracteres opcional l ou L pode preceder imediatamente conversion_ty pe para respectivamente especificar as versões longas do tipo integer d, i, o, u, x, e X. Descrição Você deve garanti r que o tipo de argum ento corres pon de à da especifi c aç ão de
Requer
formato ção. Você pode usar o tipo de moldes para garantir que o tipo correto é ado para Nada. impressão para fora. Imprimir arquivo exemplo mikroElektronika do cabeçalho para UART. vazio PrintHandler (char c) { UART1_Write (c); } vazio main () { UART1_Init (9600); Delay_ms (100); PrintOut (PrintHandler ", / * \ r \ n"
Exemplo
"* Nome do projeto: \ n \ r" "O uso Print OutExamp le (Amost ra de PrintOut () função) \ r \ n " "Copyright *: \ n \ r" "Mikroelektronika (c), 2006. \ R \ n " "20060710: \ r \ n" - Versão inicial \ r \ n " "* Descrição: \ n \ r" "Simples dem onstraçã o sobre o uso da impressão () função \ n \ r " "* Teste de configuração: \ r \ n" "MCU: PIC18F8520 \ r \ n " "Dev.Board: n BigPIC5 r \ \" "Oscilador: HS, 10.3fMHz% \ r \ n " "Ext Módulos: Nenhuma. \ R \ n". "SW: mikroC PRO PIC para \ r \ n " "NOTAS *: \ n \ r" "Nenhuma. \ R \ n" "* / \ N \ r", Get_Fosc_kHz () / 1000).; }
592
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Setjmp BIBLIOTECA Esta biblioteca contém funções e definições de tipos para ignorar a chamada de função normal e retorno da disciplina. O tipo de declaração é jmp_buf que é um tipo de mat riz adequada para a realização da inas informações necessárias para restaurar um ambiente de chamada. Tipo de declaração está contida em sejmp16.h e arquivos de cabeçalho setjmp18.h para PIC16 e PIC18 fam ily MCUs respectivamente. Estes cabeçalhos podem ser encontrados na pasta de inclusão do compilador. A execução do implementação desta biblioteca é diferente para PIC16 e PIC18 MCUs da família. Para a família PIC16 setjmp e longjmp são implementadas como macros definidas no arquivo de cabeçalho setjmp16.h e para a família PIC18 como funções definidas no arquivo de biblioteca setjmp. Nota: Devido a PIC16 família específica de não ser capaz de ler / escrever pilha ponteiro, o programa de execução após ivocation longjmp ocorre depende o conteúdo da pilha. É por isso que, para PIC16 family apenas, a execução de funções setjmp e longjmp não é padrão ANSI C complacente.
Rotinas da biblioteca - Setjmp - Longjmp
Setjmp
Mikr oele ktro nika Solu ções de soft ware e hard ware para o mun do emb utido
593
Protótipo Retorna
Descrição
int setjmp (jmp_buf env);
se o retorno é de invocação de dirigi-lo retorna 0 se o retorno é de uma chamada para o longjmp ele retorna valor diferente de zero Essa função salva chamando posição no jmp_buf para uso posterior pelo longjmp. A parâmetro env: matriz do tipo (jmp_buf) suitible para a realização da necessidade de informações
Requer
ed para o restabelecimento do ambiente de chamada. Nada.
Exemplo
setjmp (buf);
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Longjmp
594
Protótipo
vazio longjmp (jmp_buf env, val int);
Retorna
setjmp causas longjmp para retornar Val, se val for 0 significa que vai retornar 1.
Descrição
Restaura ambiente de chamada salvo em jmp_buf pela invocação mais recente setjmp macro. Se não houve tal invocação ou função conatinig a invocação setjmp terminou nesse ínterim, o comportamento é undefined.Parameter matriz do tipo (jmp_buf) que detém as informações salvas pelo
Requer
correspondente: env invocação valor antes char, irá setjmp Invocação desetjmp, longjmp val: deve ocorrer do que retorno da retornar função em que S etjmp correspondente.
Exemplo
longjmp (buf, 2);
encontros foi chamado.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Exemplo Biblioteca Exemplo demonstra cruz função de chamada usando funções setjmp e longjmp. Quando chamado, setjmp () salva o seu ambiente de chamada em sua argumentação jmp_buf para mais tarde utilização pelo longjmp (). Longjmp (), por outro lado, restaura o ambiente salvos pela invocação mais recente do setjmp () com o correspondente jmp_buf argumento. O exemplo dado é para P16. # Include <Setjmp16.h> # Include <Setjmp16.h> buf jmp_buf; de acordo
/ / Nota: diagramas de fluxo de programas estão indexados / / Para a sequência de execução
vazio func33 () { asm nop; longjmp (buf, 2); asm nop; } vazio func () { PORTB = 3; se (Buf setjm p () == 2 ) PORTB = 1; mais func33 (); asm nop; } vazio main () { PORTB = 0; TRISB = 0; asm nop; func (); asm nop;
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ 2 <----------| / | / | / 3 -------------->| / | | / | | / | | / | | / 1 <------ | | | / | | | / | | | / 3 <--------------| / 4 -> | | | / | | | / 2 ---------->| / | | / 4 <- | | / 5 -------|------> depende na pilha o conteúdo / | / | / | / | / | / | / | / | / 1 ------>| / /
}
Mikroelektronika - Soluções de software e hardware para o mundo embutido
595
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas SPRINT BIBLIOTECA
A mik roC PRO para PIC estabelece o padrão ANSI C função sprintf para formatar os dados fácil. Nota: Para além do padrão ANSI C, a Biblioteca Sprint também inclui duas versões limitadas do sprintf função (sprinti e sprintl). Estas funções recebem menos ROM e RAM e pode ser mais conveniente para o uso em alguns casos.
Funções - Sprintf - Sprintl - Sprinti
sprintf Protótipo
sprintf (char * Wh, const char F * ,...);
Retorna
A função retorna o número de caracteres realmente escrito o destino string. sprintf é usado para formatar dados e imprimi-los em seqüência destino.
Parâmetros: - wh: string de destino - f: formato de string A f argumento é uma seqüênci a de formato e pode ser compos to de personage ns , Descrição
escapar seqüências, e as especificações de formato. caracteres comuns e fugir seqüências são copiados para a seqüência de destino na ordem em que eles estão interinterpr etados . Formato especifi c aç õ es sempr e começ am com um sinal de porcentagem (%) e requer e m argumentos adicionais para ser incluído na chamada de função. A seqüênci a de formato é lido da esquer da para a direita. O encoun primeira especific aç ão de formato ter ed s e r efer e ao pri meir o ar gu mento após f e depoi s c onv er te-l o us ando e s aídas a especi fic aç ã o do formato. O segundo formato a o segundo especifi c aç ão argumento após f, e assim por diante. Se há mais argumentos que especificações de formato
596
ções, estes argumentos extras são ignorados . Os resultados são imprevisív eis, se houver Mikroelektronika Soluções de softwarepara e hardware para o mundo embutido não são -argumentos suficientes as especificações do formato. A As especificações do formato ter o seguinte formato:
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Cada campo na especificação do formato pode ser um único caractere ou um número que Especifi c a uma opção de formato específi c o. A conversion_ type campo é onde um único caráter especifica que o argumento é interpretado como um personagem, cordas, núber, ou ponteiro, como mostrado na tabela a seguir:
Descrição
conversion_type
Argumento
d
int
Assinado número decimal
u
unsigned int
Unsigned número decimal
o
unsigned int
Unsigned número octal
x
unsigned int
X
unsigned int
f
dupla
e
dupla
Unsigned número hexadecimal usando 0123456789ABCDEF Unsigned hexadecimal número usando 0123456789ABCEDF Númer o de ponto flutuante usando o formato [] Dddd.dddd Númer o de ponto flutuante usando o
E
dupla
g
dupla
c
int
s
Char *
String com um caractere nulo de
p
void *
terminação Ponteiro valor, o formato de X é usado
%
<none>
Tipo
Formato de saída
formato [[] D.dddde dd flutuante usando o Númer o de -]ponto formato []De D.ddddE [-] dd Númer o usando E ou F ponto flutuante formato, o que é mais compac to para o valor especificado e precisão int é convertido para um unsigned char, eo caráter resultante é escrito
A% é escrito. Nenhum argumento é conver ti do. A especificação completa conversão deve ser%%.
Mikroelektronika - Soluções de software e hardware para o mundo embutido
597
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
A bandeiras campo é onde um único caractere é usado para justificar a saída e imprimir sinais + / - e espaços em branco e os pontos decimais, e prefixos octal e hexadecimal, como mostra a tabela a seguir.
A largura campo é um número não negativo que especifica o número mínimo de caracteres impressos. Se um número de caracteres no valor de saída é menor que a largura, espaços em branco são adicionados à esquerda ou à direita (quando a opção - é especificado), a fim de bloco a largura mínima. Se a largura for prefixado com 0, então os zeros são preenchidos em vez de espaços em branco. A largura campo nunca trunca um campo. Se o comprimento do outvalor colocado exceder a largura especificada, todas as personagens estão de saída. Descrição A precisão campo é um número não negativo que especifica o número de caacters imprimir, o número de dígitos significativos, ou o número de casas decimais. Os précampo de cisão pode causar truncamento ou o arredondamento do valor da produção no caso de um número de ponto flutuante, conforme especificado no tabela a seguir.
598
bandeir Significado +as Esquerda justificar a saída da largura do campo especificado. Prefixo valor de saída com sinal + ou - se o saída é um tipo de . espaço Prefixo o valor de saída com um branco se for assinado um valor ('') positivo.
Caso branco é prefixado. Prefixocontrário, de um valornenhum de saída em diferente de zero com 0, 0x ou 0X quando utilizado com o, x e X tipos de campo, respectivamente. Quando utilizado com o e, E, F e G, e G tipos de campo, o # sinalizador força o valor de saída para incluir um ponto decimal Ignorar especificador de formato. ponto. Em qualquer outro caso, o # sinalizador é ignorado.
#
*
Mikroelektroni ka - Soluções de software e hardware para o mundo embutido
bandeir MeaningMeaning do precisão campo as A precisão campo é onde você especific a o númer o mínimo de d, u, o, x, X
f e, E g c, C s
dígitos que serão incluídos no valor da saída. Dígitos não são truncado se o número de dígitos em um argumento excede o definido no campo de precisão. Se o númer o de dígitos do argumento é menor que o campo de precis ão, o valor de saída é preenc hi do na esquerda com zeros. O campo de precisão é onde você especifi c a o númer o de dígitos à direita do ponto decimal. O último dígito é arredondado. O campo de precisão é onde você especifi c a o númer o de dígitos à direita do ponto decimal. O último dígito é arredondado. O campo de precisão é onde você especific a o númer o máximo de algarismos significativos no valor de saída. O campo de precisão não tem efeito sobre esses tipos de campos. O campo de precisão é onde você especific a o númer o máximo de caracter es no valor de saída. Excesso de caracter es não são trans miti dos.
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Os caracter es opcional l ou L pode preced er imedi atam ente conver sion_typ e para respectivamente especificar as versões longas do tipo integer d, i, o, u, x, e X. Descrição Você deve garantir que a tipo de argumento corresponde ao da especificação do formato. Você pode usar o tipo de moldes para garantir que o tipo correto é ado para sprintf.
sprintl Protótipo
sprintl (char * Wh, const char F * ,...);
Retorna
A função retorna o número de caracteres realmente escrito o destino string.
Descrição
O mesmo que sprintf, exceto que ele não a números tipo float.
sprinti Protótipo
sprinti (char * Wh, const char F * ,...);
Retorna
A função retorna o número de caracteres realmente escrito o destino string.
Descrição
O mesmo que sprintf, exceto que não apoio inteiros longos e num tipo floatbros.
Mikroelektronika - Software e Soluções de hardware para Embedded World
599
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca
Esta é uma demonstração do padrão de uso sprintf biblioteca C rotina. Três difeent representações do mesmo número de poing flutuantes obtidas usando o sprintf rotina são enviados via UART. dupla ww =-1.2587538e 1; char buffer [15]; / / Função para enviar cadeia para UART vazio UartWriteText (char * Txt) { while (* txt) UART1_Write (* txt + +); } / / Função para enviar const string para UART vazio UartWriteConstText (const char * Txt) { while (* txt) UART1_Write (* txt + +); } vazio main () { UART1_Init (4800); Delay_ms (10); UartWriteConstText ("Floating Escrever mensagens no UART
/ / Inicializa o módulo UART em 4800 bps
ponto
número
representação ");
sprintf (buffer, "% 12e" ww); / / ww formato e armazená -lo para tamponar UartWriteConstText ("\ formato r \ ne:"); / / Escr eve mensagem no UART UartWriteText (buffer); / / Escreve no buffer UART sprintf (buffer, "% 12f" ww); / / ww formato e armazená-lo para tamponar UartWriteConstText ("\ r nf \ formato:"); / / Escr eve mensagem no UART UartWriteText (buffer); / / Escreve no buffer UART sprintf (buffer, "% 12g" ww); / / ww formato e armazená -lo para tamponar UartWriteConstText ("\ formato r \ ng:"); / / Escr eve mensagem no UART UartWriteText (buffer); / / Escreve no buffer UART }
600
Mikroelektronika - Soluções de software e hardware para o mundo embutido
/ /
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Time Library A Biblioteca Time contém funções e definições de tipo para cálculos de tempo no UNIX formato de tempo que conta o número de segundos desde o "Época". Esta é muito conveniente para os programas que funcionam com intervalos de tempo: a diferença entre dois valores de tempo UNIX é um tempo real diferença medido em segundos. Qual é a época? Originalmente ele foi definido como o início de 1970 GMT. (Janeiro 1, 1970 dia juliano ) GMT, Greenwich Mean Time, é um termo tradicional para o fuso horário da Inglaterra. A TimeStruct tipo é um tipo de estrutura adequada para o armazenamento e data. Tipo declaração está contida em timelib.h que pode ser encontrado no mikroC PRO para PIC Time Library pasta exemplo Demo.
Rotinas da biblioteca - Time_dateToEpoc h - Time_epochToDate - Time_dateDiff
Mikroelektronika - Soluções de software e hardware para o mundo embutido
601
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Time_dateToEpoch Protótipo
tempo Time_dateToEpoch (TimeStruct * Ts);
Retorna
Número de segundos desde 1 de janeiro de 1970 0h00mn00s.
Descrição
Esta função retor na o tempo unix: númer o de segund os desde 1 de janeir o de 1970 0h00mn00s. Parâmetros:
Requer
Exemplo
- ts: tempo e valor de data para o cálculo de tempo Unix. Nada. # Include "timelib.h" ... TimeStruct TS1; tempo época; ... / * * Qual é a época da data em st? * / = Time_dateToEpoch época (e TS1);
Time_epochToDate Protótipo
vazio Time_epochToDate (long e, TimeStruct * Ts);
Retorna
Nada. Converte o tempo Unix para data e hora.
Descrição
Parâmetros: - e: tempo unix (Segundos desde a época Unix) - TS: data e hora estrutura para armazenar a saída de conversão
Requer
Exemplo
602
Nada. # Include "timelib.h" ... TimeStruct ts2; tempo época; ... / * * Que data é 1234567890 época? * / época = 1234567890; Time_epochToDate (da época, e TS2);
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Time_dateDiff Protótipo
tempo Time_dateDiff (TimeStruct * t1, TimeStruct * t2);
Retorna
Diferença de tempo em segundos como um long assinado. Essa função compara duas datas e retorna diferença de segundos como um assinado prazo. O resultado é positivo se t1 é antes t2 resultado, é nulo se t1 é o mesmo que t2 eo resultado é negativo se t1 é depois t2.
Descrição Parâmetros: - t1: data e hora estrutura (o primeiro parâmetro de comparação) - t2: data e hora estrutura (o segundo parâmetro de comparação) Nota: Esta função é implem en tad a como macro no arquiv o de cabeçalh o que Requer
Exemplo
Nada. timelib.h # Include "timelib.h" pode ser encontrada na PRO mikroC para PIC Tempo pasta exemplo Biblioteca ... Demo. TimeStruct TS1, TS2; tempo diff; ... / * * Quantos segundos entre estas duas datas contidas no TS1 e ts2 amortecedores? * / Time_dateDiff diff = (& TS1, TS2 &);
Mikroelektronika - Softwares e soluções de hardware para Embedded World
603
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas Exemplo Biblioteca Este exemplo demonstra o tempo de uso da Biblioteca. # Include
"Timelib.h"
TimeStruct TS1, TS2; tempo época; tempo diff; vazio main ts1.ss = ts1.mn = ts1.hh = ts1.md = ts1.mo = ts1.yy =
() { 0; 7; 17; 23; 5; 2006;
/ * * Qual é a época da data em st? * / = Time_dateToEpoch época (e TS1);
/ * * Qual é a data 1234567890 época? * / época = 1234567890; Time_epochToDate (da época, e TS2); / * * Como segundo muito entre estas duas datas? * / Time_dateDiff diff = (& TS1, TS2 &); }
604
Mikroelektronika - Soluções de software e hardware para o mundo embutido
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas
Trigonometria BIBLIOTECA A mik roC PRO para PIC implementa funções trigonométricas fundamentais. Essas funções são implementadas como tabelas de consulta. funções trigonométricas são implementadas em formato de número inteiro, a fim para economizar memória.
Rotinas da biblioteca - SinE3 - CosE3
sinE3 Protótipo
int sinE3 (unsigned angle_deg);
Retorna
A função retorna o seno do parâmetro de entrada. A função calcula seno multiplicado por 1000 e arredondados para o número inteiro mais próximo:
Descrição
resultado: = rodada (* sin (angle_deg) 1000)
Parâmetros: - angle_deg: Ângulo de entrada em graus Requer
Nota: faixa de valor de retorno: -1000 .. 1000. Nada.
Exemplo
int res; ... res = sinE3 (45); / / resultado é 707
Mikroelektronika - Soluções de software e hardware para o mundo embutido
605
CAPÍTULO 7 mikroC PRO para PIC
Bibliotecas cosE3 Protótipo
int cosE3 (unsigned angle_deg);
Retorna
A função retorna o cosseno de parâmetro de entrada. A função calcula seno multipli c ado por 1000 e arredonda dos para o inteiro: resultado: = rodada (cos (angle_deg) * 1000)
Descrição Parâmetros: - angle_deg: Ângulo de entrada em graus Nota: faixa de valor de retorno: -1000 .. 1000.
606
Requer
Nada.
Exemplo
int res; ... res = cosE3 (196); / / resultado é -193
Mikroelektronika - SOLUÇÕES EM SOFTWARE E HARDWARE Para embutidos mundo
CAPÍTULO 7 mikroC PRO para PIC
Mikroelektronika - Soluções de software e hardware para o mundo embutido
Bibliotecas
607
Related Documents 3h463d
Manual Mikroc Pro Em Portugues 2ox6 March 2021 0
Mikroc Pro Avr Manual V100 5v485e December 2019 63
Inissia Manual Em Portugues 323at October 2019 51
Manual Em Portugues Newgen 3e4fv March 2021 0
Manual Em Portugues Bluesoleil m3c3y December 2019 30
Manual Trena Em Portugues 2h2z3r March 2021 0
More Documents from "Darilho Batista Ignacio" 4o1l1e
Eletronica-5-centro-paula-souza.pdf 5f2c6a November 2020 0
Bobinagem De Motores Esquemas 3y2o16 July 2019 154
Manual Mikroc Pro Em Portugues 2ox6 March 2021 0
Corazon De Coco Partition 1j4040 August 2020 0
Disfagia Por Demencia Tipo Alzheimer, Ela, Lewy 3lp67 April 2020 11
|
|
|
|