Microcontroladores Pic 2007

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Microcontroladores Pic 2007 as PDF for free.

More details

  • Words: 4,609
  • Pages: 28
Programação em C ____________________________________________________________

Centro de Formação Profissional Anielo Greco

μCONTROLADOR PIC16F877

DIVINÓPOLIS 2007

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

Presidente da FIEMG Robson Braga de Andrade Gestor do SENAI Petrônio Machado Zica Diretor Regional do SENAI e Superintendente de Conhecimento e Tecnologia Alexandre Magno Leão dos Santos Gerente de Educação e Tecnologia Edmar Fernando de Alcântara

Elaboração Marlon Henrique Teixeira Unidade Operacional CFP-AnG

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

Sumário 1 - INTRODUÇÃO .................................................................................................. 5 1.1 - O QUE SÃO MICROCONTROLADORES ................................................................ 5 1.2 - APLICAÇÕES .................................................................................................. 5 1.3 - VANTAGENS................................................................................................... 5 1.4 - RESTRIÇÕES.................................................................................................. 5 1.5 - CARACTERÍSTICAS DE SISTEMAS EMBUTIDOS .................................................... 6 2 - PARTES DE UM MICROCONTROLADOR....................................................... 7 2.1 - ROM ............................................................................................................ 7 2.2 - RAM............................................................................................................. 7 2.3 - PORTAS ........................................................................................................ 7 2.4 - ALU.............................................................................................................. 7 2.5 - WATCH DOG TIMER........................................................................................ 7 2.6 - TIMER ........................................................................................................... 7 2.7 - A/D............................................................................................................... 8 3 - FABRICANTES ................................................................................................. 8 4 - O PIC 16F877 .................................................................................................... 9 4.1 - PRINCIPAIS CARACTERÍSTICAS ELÉTRICAS ........................................................ 9 4.2 - PINAGEM E DESCRIÇÃO DOS PINOS ................................................................ 10 4.3 - TIMER ......................................................................................................... 11 4.4 - CICLOS DE MÁQUINA .................................................................................... 12 4.5 - MEMÓRIAS .................................................................................................. 12 4.5.1 - Memória de Programa ........................................................................ 12 4.5.2 - Memória de Dados ............................................................................. 13 4.6 - INTERRUPÇÕES ............................................................................................ 14 4.7 - REGISTRADORES ESPECIAIS - SFR ............................................................... 15 4.7.1 - STATUS ............................................................................................. 15 4.7.2 - OPTION_REG .................................................................................... 16 4.7.3 - INTCON .............................................................................................. 17 4.7.4 - PCON ................................................................................................. 18 4.8 - PARÂMETROS DE CONFIGURAÇÃO ................................................................. 18 4.9 - CONFIGURAÇÃO NO PROGRAMA .................................................................... 19 ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5 - A LINGUAGEM C PARA PIC (COMPILADOR CCS) ..................................... 20 5.1 - DIRETIVAS ................................................................................................... 20 5.1.1 - #BIT .................................................................................................... 20 5.1.2 - #BYTE ................................................................................................ 20 5.1.3 - #DEFINE ............................................................................................ 20 5.1.4 - #FUSES .............................................................................................. 21 5.1.5 - #INCLUDE .......................................................................................... 21 5.1.6 - #INT_xxxx ........................................................................................... 21 5.1.7 - #INT_DEFAULT.................................................................................. 22 5.1.8 - #INT_GLOBAL ................................................................................... 22 5.1.9 - #USE DELAY ..................................................................................... 22 5.1.10 - #USE RS232 .................................................................................... 23 5.2 - EXPRESSÕES ............................................................................................... 24 5.3 - FUNÇÕES .................................................................................................... 25 5.3.1 - INPUT( ) ............................................................................................. 27 5.3.2 - INPUT_X( ) ......................................................................................... 27 5.3.3 - OUTPUT_X( ) ..................................................................................... 28 5.3.4 - OUTPUT_BIT( ) .................................................................................. 28 5.3.5 - OUTPUT_HIGH( )............................................................................... 28 5.3.6 - OUTPUT_LOW( ) ............................................................................... 28 5.3.7 - SET_TRIS_X( ) ................................................................................... 28

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

1 - INTRODUÇÃO 1.1 - O que são microcontroladores Integrar num único chip: - Processador - Memória RAM/ROM - Entrada/Saída Baixo custo. Os microcontroladores são diferentes dos processadores pois integram em um único CHIP: o processador, uma memória RAM (dados), uma memória ROM (programa) e outros recursos. Instruções e linguagem de programação

1.2 - Aplicações Sistemas embutidos em geral. Exemplos: - Relógios, alarme, eletrodomésticos (forno de microondas, ar condicionado), brinquedos; - Instrumentação: estação meteorológica, aviação; - Automação industrial, automóveis; - Celulares, impressoras, câmeras digitais; - Sistemas de vigilância, robótica. Os microcontroladores foram projetados para comandarem equipamentos específicos. Estes equipamentos são conhecidos como Sistemas Embutidos, do inglês Embedded System, pois o microcontrolador é embutido dentro de um sistema fechado e com funções bem específicas. Em geral, estes sistemas exigem um controle preciso do tempo, pois trabalham em tempo real. A capacidade de processamento e de memória variam de acordo com a aplicação. A aplicação pode ser um simples relógio ou um equipamento industrial complexo que envolve até uma camada de sistema operacional executando sobre o microcontrolador.

1.3 - Vantagens • • • •

Baixo custo e consumo, portátil; Poucos componentes (eliminar necessidade de componentes externos); Reconfiguração por software; Curto tempo para desenvolvimento (time-to-market).

1.4 - Restrições ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

Potência: - Muitos sistemas embutidos usam baterias; - Sistemas que consomem muito podem se tornar inviáveis; - Mesmo sistemas embutidos que não usam baterias não podem consumir muito: dissipação térmica. Custo: - Muitas vezes, um sistema embutido não pode agregar muito ao preço do sistema final, mas deve respeitar todas as restrições consideradas anteriormente. Confiabilidade: - Falha do sistema pode causar mortes ou prejuízos financeiros; - Software e hardware devem prever falhas; - Técnicas tradicionais de tolerância a falhas podem ser caras; - Redundância; - Alguns sistemas embutidos estão instalados em ambientes inóspitos e devem estar protegidos! (calor, vibração/choques, interferência eletromagnética/eletrostática, água/corrosão, fogo).

1.5 - Características de sistemas embutidos -

-

-

-

Antigamente, o projeto de hardware consumia mais tempo. Software era simples, com recursos de memória e processamento muito reduzidos; Hoje, boa parte do hardware está “pronto” – Microcontrolador; Complexidade do software aumenta a cada dia, com introdução de linguagens de alto nível (C/C++), ferramentas para auxílio no desenvolvimento: simuladores, depuradores, visualização gráfica. Operação em tempo real: muitas vezes, um sistema embutido deve responder a eventos dentro de um intervalo de tempo. Diferente de um computador pessoal, nada é destruído se uma imagem demora pra carregar. Sistema ABS de um carro pode demorar? Requisitos de tempo real devem ser cuidadosamente estudados; Interconexão do sistema: comunicação entre vários dispositivos, protocolos de comunicação de baixo custo, sistemas embutidos com conectividade, TCP/IP; Dentro em breve, dispositivos sem conectividade serão minoria.

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

2 - PARTES DE UM MICROCONTROLADOR 2.1 - ROM -

Read Only Memory ; Memória somente para leitura ; Onde fica armazenado o programa, constantes; Entradas: endereço, controle ; Saídas: dados.

2.2 - RAM -

Random Acess Memory ; Acesso a qualquer posição demora o mesmo tempo; Permite escrita e leitura; Onde ficam armazenados os dados; Entradas: endereço, controle, dados; Saídas: Dados, controle.

2.3 - Portas -

Comunicação com o mundo externo; Entradas: receber informação de teclados, sensores; Saídas: enviar informação para display, atuadores; Entrada/saída: comunicação outros dispositivos.

2.4 - ALU -

Arithmetic Logic Unit; Lógicas: comparação: maior,menor, igual, booleanas: And, Or, Xor; Aritméticas: adição, subtração, incrementa, multiplicação e divisão.

2.5 - Watch Dog Timer -

Segurança; Contador independente do Clock do Microcontrolador; Aplicações: Acordar o microcontrolador (economizar energia), tolerância a falhas através de testes periódicos.

2.6 - Timer -

Contador programável; Registrar eventos, marcar tempo (preciso); Executa em paralelo com o Microcontrolador; Interrupção. ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

2.7 - A/D -

Conversão analógica-digital; Resolução em bits: 8 bits, 10 bits, 12 bits; Resolução em tempo: taxa de amostragem.

3 - FABRICANTES Microchip: PIC - Baixo custo; - Bom desempenho; - Muitas opções de periféricos; - Ferramentas de desenvolvimento (Software) disponíveis no site www.microchip.com gratuitamente; - Ferramentas de desenvolvimento (Hardware); - Gravadores de baixo custo: vários esquemáticos disponíveis na internet. Philips 80C552: (www.philips.com) - Baseado na família 8051; - Vários fabricantes produzem microcontroladores baseados no 8051: Atmel, Dallas, Philips, Siemens. Motorola 68HC05/08, HC908: - Motorola é um fabricante tradicional de microcontroladores; - 2 bilhões de microcontroladores vendidos; - HC05 está sendo substituído pelo 68HC08. Texas: TMS370Cx5x - http://www.ti.com/sc/docs/micro/products/prodinfo.htm Intel: 80C51 - www.intel.com/design/MCS51/ Mitsubishi - www.mitsubishichips.com Atmel - www.atmel.com National - www.national.com

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

4 - O PIC 16F877 -

-

Microcontrolador RISC de 40 pinos; Memória de Programa FLASH (8K de 14 bits); Memória de dados 368 bytes; Memória EEPROM 256 bytes; Freqüência de operação até 20MHz; 33 I/O (Entradas/Saídas) configuráveis: o PORT A: RA0 – RA5 (6 PINOS) o PORT B: RB0 – RB7 (8 PINOS) o PORT C: RC0 – RC7 (8 PINOS) o PORT D: RD0 – RD7 (8 PINOS) o PORT E: RE0 – RE2 (3 PINOS); 14 Interrupções; 3 Timers; 2 Módulos CCP (Capture/Compare/PWM); Comunicação Serial USART; 8 canais de entrada de conversores A/D de 10 bits.

4.1 - Principais características elétricas -

Temperatura de trabalho: -40°C até +125°C; Temperatura de Armazenamento: -65°C até 150°C; Tensão de Trabalho: 3.0Va 5.5V; Voltagem Máxima nos demais pinos (em relação ao Vss): -0.3V até (VDD + 0.3V); Dissipação máxima de potência: 1.0 W; Corrente máxima de saída no pino Vss: 350 mA; Corrente máxima de saída no pino VDD: 250 mA; Corrente máxima de entrada de um pino: 25 mA; Corrente máxima de saída de um pino: 25 mA.

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

4.2 - Pinagem e descrição dos pinos

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

4.3 - Timer O PIC possuí internamente um recurso de hardware denominado Timer0. Trata-se de um contador de 8bits incrementado internamente pelo ciclo de máquina ou por um sinal externo (borda de subida ou descida), sendo esta opção feita por software durante a programação (SFR). Como o contador possui 8 bits ele pode assumir 256 valores distintos (0 até 255). Caso o ciclo de máquina seja de 1us, cada incremento do Timer corresponderá a um intervalo de 1us. Caso ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

sejam necessário intervalos de tempos maiores para o mesmo Ciclo de Máquina, utilizamos o recurso de PRE-SCALE.

4.4 - Ciclos de Máquina Nos microcontroladores PIC, o sinal de clock é internamente dividido por quatro. Portanto, para um clock externo de 4MHz, temos um clock interno de 1 MHz e, conseqüentemente, cada ciclo de máquina dura 1μs; A divisão do clock por quatro forma as fases Q1, Q2, Q3 e Q4. O program Counter é incrementado automaticamente na fase Q1 do ciclo de máquina e a instrução seguinte é buscada da memória de programa e armazenada no registrador de instruções no ciclo Q4. Ela é decoficada e executada no próximo ciclo, no intervalo de Q1 e Q4. Essa característica de buscar a informação em um ciclo de máquina e executá-la no próximo é chamada de PIPELINE. Ela permite que quase todas as instruções sejam executadas em apenas um ciclo, gastando assim 1 μs (para um clock de 4 MHz) e tornando o sistema muito mais rápido. As únicas exeções referem-se às instruções que geram “saltos” no program counter, como chamadas de rotinas e retornos.

4.5 - Memórias 4.5.1 - Memória de Programa A memória de programação é onde as instruções do programa são armazenadas. No caso do 16F877 esta memória é de 8192 palavras (words) (8Kb) de 14 bits cada uma. Na familia PIC existem três tipos de memória de programa: EPROM, EEPROM (janelado) e FLASH. Existem duas posições da memória do programa que recebem nomes especiais: vetor de reset e vetor de interrupção. Vetor de Reset: trata-se do primeiro endereço de programa que será executado quando o PIC começar a funcionar (após a alimentação ou um reset). Aponta para o endereço 0x00. ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

Vetor de Interrupção: As rotinas de interrupções serão armazenadas na área de programação, juntamente com todo resto do programa. No, entanto existe um endereço que é reservado para o início do tratamento de todas as interrupções. Vetor de Interrupção aponta para o endereço 0x04. Pilha (STACK): A pilha é um local, totalmente separado da memória de programação, em que serão armazenados os endereços de retorno quando utilizarmos instruções de chamadas de rotinas.

4.5.2 - Memória de Dados A memória de dados é uma memória volátil do tipo RAM (Random Access Memory). O mapa de memória é divido em duas partes: Registadores especiais (Special Function Register - SFR) e Registradores de uso geral (General Purpose Register - GPR). Como o ponteiro da memória de programa tem capacidade de endereçar somente 128 posições de memória de cada vez (7 bits), a memória de programa é dividida em bancos (banco 0,1,2 e 3 no 16F877). Esta divisão implica em termos posições de memória que somente poderão ser acessadas caso o banco a que ela pertença seja previamente selecionado através de um bit específico do SFR STATUS. A seguir o mapa de registro de memória do PIC16F877:

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

4.6 - Interrupções As Interrupções são causadas através de eventos assíncronos (podem ocorrer a qualquer momento) que causam um desvio no processamento. Este desvio tem como destino o vetor de interrupção. Uma boa analogia para melhor entendermos o conceito de interrupção é a seguinte: você está trabalhando digitando uma carta no computador quando o seu ramal toca. Neste momento você, interrompe o que está fazendo, para atender ao telefone e verificar o que a pessoa do outro lado da linha está precisando. Terminada a conversa, você coloca o telefone no gancho novamente e retoma o seu trabalho do ponto onde havia parado. Observe que não precisamos verificar a todo instante, se existe ou não alguém na linha, pois quando o ramal é chamado, o telefone toca avisando que existe alguém querendo falar com você. -

Interrupções de TIMERS (3); Interrupção de fim de escrita na EEPROM; Interrupção de comparador; Interrupções de USART (2); Interrupção de CCP; ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

-

-

Interrupção externa: Essa interrupção é gerada por um sinal externo ligado a uma porta específica que no caso é a porta RB0. Ela é utilizada para diversas finalidades, como, por exemplo o reconhecimento de um botão ou outro sinal do sistema que necessite de uma ação imediata. Funciona somente na borda de subida ou descida dependendo da configuração. Interrupção por mudança de estado: Ocorre tanto em borda de subida quanto em borda de descida. Ligada às portas RB4, RB5, RB6 e RB7 simultaneamente.

4.7 - Registradores Especiais - SFR 4.7.1 - STATUS As funções mais utilizadas desse registrador estão relacionadas às operações matemáticas, pois ele indica estouros de registradores (C-Carry) e resultados iguais a zero (Z). É bom observar que, no caso da subtração, o Carry trabalha com lógica invertida.

bit 7 IRP: Seletor de banco de memória de dados usado para endereçamento indireto 1 = Bank 2, 3 (100h - 1FFh) 0 = Bank 0, 1 (00h - FFh) bit 6-5 RP1:RP0: Seletor de banco de memória de dados usado para endereçamento direto 11 = Bank 3 (180h - 1FFh) 10 = Bank 2 (100h - 17Fh) 01 = Bank 1 (80h - FFh) 00 = Bank 0 (00h - 7Fh) Each bank is 128 bytes bit 4 TO: Indicação de Time-out 1 = Indica que ocorreu um Power-up ou foi executada a instrução CLEARWDT ou SLEEP. 0 = Indica que ocorreu um estouro do WatchDogTimer (WDT) bit 3 PD: Indicação Power-down 1 = Indica que ocorreu um Power-up ou foi executada a instrução CLEARDT 0 = Indica que a instrução SLEEP foi executada bit 2 Z: Indicação de zero 1 = Indica que o resultado da última operação (lógica ou aritmética) resultou em zero 0 = Indica que o resultado da última operação (lógica ou aritmética) não resultou em zero bit 1 DC: Digit carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

(for borrow, the polarity is reversed) 1 = A última operação da ULA não ocasionou um estouro (carry) entre o bit 3 e 4, isto é, o resultado ultrapassou os 4 bits menos significativos. Utilizado quando se trabalha com números de 4 bits. 0 = A última operação da ULA não ocasionou um estouro de dígito. bit 0 C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) 1 = A última operação da ULA ocasionou um estouro (carry) no bit mais significativo, isto é, o resultado ultrapassou os 8 bits disponíveis. 0 = A última operação da ULA não ocasionou um estouro (carry)

4.7.2 - OPTION_REG

bit 7 RBPU: Habilita Pull-up interno para PORTB 1 = Pull-ups desabilitados 0 = Pull-ups habilitados para os pinos do PORTB configurados como saída bit 6 INTEDG: Configuração da borda que gerará interrupção externa em RB0 1 = Interrupção ocorrerá na borda de subida 0 = Interrupção ocorrerá na borda de descida bit 5 T0CS: Configuração do incremento para TMR0 1 = TMR0 será incrementado externamente pela mudança no pino RA4/T0CK1 0 = TMR0 será incrementado internamente pelo clock da máquina bit 4 T0SE: Configuração da borda que incrementará o TMR0 no pino RA4/T0CK1, quando T0CS=1 1 = O incremento ocorrerá na borda de descida de RA4/T0CKI 0 = O incremento ocorrerá na borda de subida de RA4/T0CKI bit 3 PSA: Configuração de aplicação do Prescaler 1 = Prescaler será aplicado ao WDT 0 = Prescaler será aplicado ao TMR0 bit 2-0 PS2:PS0: Configuraçãodo valor do prescaler Bit Value TMR0 Value WDT Rate 000 1:2 1:1 001 1:4 1:2 010 1:8 1:4 011 1 : 16 1:8 100 1 : 32 1 : 16 101 1 : 64 1 : 32 110 1 : 128 1 : 64 111 1 : 256 1 : 128 PRE-SCALE: O Prescaler é um divisor de freqüência programável do sinal que incrementa o Timer0. Quando temos um prescaler de 1:1, cada ciclo de máquina corresponde a um incremento do Timer0 (unidade de Timer0). Ao ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

alterarmos o prescaler para, por exemplo 1:4 (os valores possíveis são as potencias de dois até 256), o Timer0 será incrementado uma vez a cada quatro ciclos de máquina.

4.7.3 - INTCON

bit 7 GIE: Habilitação geral das interrupções (chave geral) 1 = As interrupções individualmente serão tratadas 0 = Nenhuma interrupção será tratada. bit 6 PEIE: Habilitação das interrupções de periféricos (chave geral para periféricos) 1 = As interrupções de periféricos habilitadas serão tratadas individualmente 0 = As interrupções de periféricos não serão tratadas bit 5 T0IE: Habilitação da interrupção de estouro de TMR0 (chave individual) 1 = Interrupção de TMR0 habilitada 0 = Interrupção de TMR0 desabilitada bit 4 INTE: Habilitação da interrupção externa em RB0/INT (chave individual) 1 = Interrupção externa habilitada 0 = Interrupção externa desabilitada bit 3 RBIE: Habilitação da interrupção por mudança de estado nos pinos RB4 a RB7 (chave individual) 1 = Interrupção por mudança de estado habilitada 0 = Interrupção por mudança de estado desabilitada bit 2 T0IF: Identificação do estouro de TMR0 1 = Ocorreu estouro do TMR0 (este bit deve ser limpo por software) 0 = Não ocorreu estouro do TMR0 bit 1 INTF: Identificação da interrupção externa em RB0/INT 1 = Ocorreu evento da interrupção (este bit deve ser limpo por software) 0 = Não correu o evento da interrupção bit 0 RBIF: Identificação da interrupção por mudança de estado nos pinos RB4 a RB7 1 = Ocorreu evento da interrupção (este bit deve ser limpo por software) 0 = Não correu o evento da interrupção

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

4.7.4 - PCON

bit 7-2 Unimplemented: Read as '0' bit 1 POR: Indicação de Power-on Reset (energização) 1 = Não cocrreu um Power-on Reset 0 = Ocorreu um Power-on Reset bit 0 BOR: Indicação de Brown-out Reset (queda de energia) 1 = Ocorreu um Brown-out Reset 0 = Não ocorreu um Brown-out Reset

4.8 - Parâmetros de Configuração Tipo de Oscilador: 2 grupos: Internos e Externos Oscilador Interno: 32 KHz ou 4 MHz (Seleção por software) Osciladores Externos: RC_CLKOUT: Para oscilador externo tipo RC com o pino 15 operando como CLKOUT, isto é, com uma onda quadrada de ¼ da freqüência; RC_I/O: Para oscilador externo tipo RC com o pino 15 operando como I/O (RA6); INTOSC_CLKOUT: Para oscilador interno com o pino 15 operando como I/O (RA6); EC_I/O: Para clock externo (circuito auto-oscilante) com o pino 15 operando como I/O (RA6); XT: Para osciladores externos tipo cristal ou ressoadores; HS: Para crist ais ou ressoadores externos com freqüências elevadas (acima de 4 MHz); LP: Para cristais ou ressoadores externos com baixas freqüências (abaixo de 200 KHz). Utilizado para minimizar consumo. WATCHDOG (WDT) é um recurso disponível no PIC que parte do princípio que todo sistema é passível de falha. Se todo sistema pode falhar, cabe ao mesmo ter recursos para que, em ocorrendo uma falha, algo seja feito de modo a tornar o sistema novamente operacional. Dentro do PIC existe um contador incrementado por um sinal de relógio (clock) independente. Toda vez que este contador extrapola o seu valor máximo retornando a zero, é provocado a reinicialização do sistema (reset). Clear Watchdog: Se o sistema estiver funcionado da maneira correta, de tempos em tempos uma instrução denominada clear watchdog timer (CLRWDT) zera o valor deste contador, impedindo que o mesmo chegue ao valor máximo. Desta maneira o Watchdog somente irá "estourar" quando algo de errado ocorrer. POWER UP TIMER: é um temporizador que faz com que o PIC, durante a energização (power up), aguarde alguns ciclos de máquina (72 ms) para garantir ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

que todo o sistema periférico (display, teclado, memórias, etc) estejam operantes quando o processamento estiver sendo executado. BROWN OUT DETECT: O Brown Out monitora a diferença de tensão entre VDD e VSS, provocando a reinicialização do PIC (reset) quando esta cai para um valor inferior ao mínimo definido em manual (4V típico por mais de 100μs). LOW VOLTAGE PROGRAM: Trata-se do sistema de programação do PIC (gravação da memória de programa) em baixa tensão: 5V. Normalmente essa programação é habilitada por uma alta (13 V) no pino MCLR. CÓDIGO DE PROTEÇÃO: Para gravação em série é muito importante que esta opção esteja ativada, pois impedirá que qualquer pessoa consiga ler o programa gravado dentro do PIC.

4.9 - Configuração no Programa DIRETRIZ: _CONFIG _CP_ON: Para code protection ligado _CP_OFF: Para code protection desligado _DATA_CP_ON: Para acesso externo à EEPROM habilitado _DATA_CP_OFF: Para acesso exerton à EEPROM desbilitado _PWRTE_ON: Power Up ligado _PWRTE_OFF: Power Up desligado _WDT_ON: Para WatchDog ligado _WDT_OFF: Para WatchDog desligado _LVP_ON: Para sistema de programação em baixa tensão ativado _LVP_OFF: Para sistema de programação em baixa tensão desativado _MCLRE_ON: Para Master Clear externo ativado _MCLRE_OFF: Para Master Clear externo desativado _RC_OSC_CKOUT: Para RC externo com saída CKOUT _RC_OSC_NOCKOUT: Para RC externo sem sída CKOU (com I/O) _EXTCLK_OSC: Para clock externo sem saída CKOUT (com I/O) _LP_OSC: Para oscilador tipo LP _XT_OSC: Para oscilador tipo XT _HS_OSC: Para oscilador tipo HS Exemplo: _CONFIG _CP_ON&_PWRTE_ON&WDT_OFF&_INTOSC_OSC_NOCKOUT ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5 - A LINGUAGEM C PARA PIC (Compilador CCS) -

PCB: para dispositivos 12 bits (séries PIC12 e PIC16C5X); PCM: para dispositivos de 14 bits (séries PIC14000 e PIC16xXXX); PCH: para dispositivos de 16 bits (série PIC18).

5.1 - Diretivas 5.1.1 - #BIT Syntax: #bit id = x.y Elements: id is a valid C identifier, x is a constant or a C variable, y is a constant 0-7. Examples: #bit T0IF = 0xb.2 ... T0IF = 0; // Clear Timer 0 interrupt flag

5.1.2 - #BYTE Syntax: #byte id = x Elements: id is a valid C identifier, x is a C variable or a constant Examples: #byte status = 3 #byte b_port = 6

5.1.3 - #DEFINE Syntax:

#define id text

or

#define id (x,y...) text

Elements: id is a preprocessor identifier, text is any text, x,y and so on are local preprocessor identifiers, and in this form there may be one or more identifiers separated by commas. Examples: #define BITS 8 a=a+BITS; //same as a=a+8;

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5.1.4 - #FUSES Syntax: #fuse options Elements: options vary depending on the device. A list of all valid options has been put at the top of each devices .h file in a comment for reference. The PCW device edit utility can modify a particular devices fuses. The PCW pull down menu VIEW | Valid fuses will show all fuses with their descriptions. Some common options are: • LP, XT, HS, RC • WDT, NOWDT • PROTECT, NOPROTECT • PUT, NOPUT (Power Up Timer) • BROWNOUT, NOBROWNOUT Examples: #fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP

5.1.5 - #INCLUDE Syntax:

#include

or

#include "filename"

Elements: filename is a valid PC filename. It may include normal drive and path information. Examples: #include <16C54.H> #include

5.1.6 - #INT_xxxx Syntax:

#INT_AD Analog to digital conversion complete #INT_ADOF Analog to digital conversion timeout #INT_BUSCOL Bus collision #INT_BUTTON Pushbutton #INT_CCP1 Capture or Compare on unit 1 #INT_CCP2 Capture or Compare on unit 2 #INT_COMP Comparator detect #INT_EEPROM write complete #INT_EXT External interrupt #INT_EXT1 External interrupt #1 #INT_EXT2 External interrupt #2 #INT_I2C I2C interrupt (only on 14000) #INT_LCD LCD activity #INT_LOWVOLT Low voltage detected #INT_PSP Parallel Slave Port data in #INT_RB Port B any change on B4-B7 #INT_RC Port C any change on C4-C7 #INT_RDA RS232 receive data available #INT_RTCC Timer 0 (RTCC) overflow #INT_SSP SPI or I2C activity #INT_TBE RS232 transmit buffer empty #INT_TIMER0 Timer 0 (RTCC) overflow ____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________ #INT_TIMER1 Timer 1 overflow #INT_TIMER2 Timer 2 overflow #INT_TIMER3 Timer 3 overflow Note many more #INT_ options are available on specific chips. Check the devices .h file for a full list for a given chip.

5.1.7 - #INT_DEFAULT Syntax: #int_default Elements: None Purpose: The following function will be called if the PIC® triggers an interrupt and none of the interrupt flags are set. If an interrupt is flagged, but is not the one triggered, the #INT_DEFAULT function will get called.

5.1.8 - #INT_GLOBAL Syntax: #int_global Elements: None Purpose: This directive causes the following function to replace the compiler interrupt dispatcher. The function is normally not required and should be used with great caution. When used, the compiler does not generate start-up code or clean-up code, and does not save the registers.

5.1.9 - #USE DELAY Syntax:

#use delay (clock=speed) or #use delay(clock=speed, restart_wdt)

Elements: speed is a constant 1-100000000 (1 hz to 100 mhz) Examples: #use delay (clock=20000000) #use delay (clock=32000, RESTART_WDT)

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5.1.10 - #USE RS232 Syntax: #use rs232 (options) Elements: Options are separated by commas and may be: BAUD=x Set baud rate to x XMIT=pin Set transmit pin RCV=pin Set receive pin RESTART_WDT Will cause GETC() to clear the WDT as it waits for a character. INVERT Invert the polarity of the serial pins (normally not needed when level converter, such as the MAX232). May not be used with the internal SCI. PARITY=X Where x is N, E, or O. BITS =X Where x is 5-9 (5-7 may not be used with the SCI). FLOAT_HIGH The line is not driven high. This is used for open collector outputs. ERRORS Used to cause the compiler to keep receive errors in the variable RS232_ERRORS and to reset errors when they occur. BRGH1OK Allow bad baud rates on chips that have baud rate problems. ENABLE=pin The specified pin will be high during transmit. This may be used to enable 485 transmit. STREAM=streamed Associates a stream identifier with this RS232 port. The identifier may then be used in functions like fputc. Examples: #use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3)

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5.2 - Expressões

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5.3 - Funções

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5.3.1 - INPUT( ) Syntax: value = input (pin) Examples: while ( !input(PIN_B1) ); // waits for B1 to go high if( input(PIN_A0) ) printf("A0 is now high\r\n");

5.3.2 - INPUT_X( ) Syntax:

value = input_a() value = input_b() value = input_c() value = input_d() value = input_e()

Examples: data = input_b();

____________________________________________________________ Curso Técnico de Eletroeletrônica

Programação em C ____________________________________________________________

5.3.3 - OUTPUT_X( ) X Î A, B, C, D, E Syntax:

output_a (value) output_b (value) output_c (value) output_d (value) output_e (value)

Examples: OUTPUT_B(0xf0);

5.3.4 - OUTPUT_BIT( ) Syntax: output_bit (pin, value) Examples: output_bit( PIN_B0, 0); // Same as output_low(pin_B0); output_bit( PIN_B0,input( PIN_B1 ) ); // Make pin B0 the same as B1 output_bit( PIN_B0, shift_left(&data,1,input(PIN_B1))); // Output the MSB of data to // B0 and at the same time // shift B1 into the LSB of data

5.3.5 - OUTPUT_HIGH( ) Syntax: output_high (pin) Examples: output_high(PIN_A0);

5.3.6 - OUTPUT_LOW( ) Syntax: output_low (pin) Examples: output_low(PIN_A0);

5.3.7 - SET_TRIS_X( ) Syntax:

set_tris_a (value) set_tris_b (value) set_tris_c (value) set_tris_d (value) set_tris_e (value)

Examples: SET_TRIS_B( 0x0F );

// B7,B6,B5,B4 are outputs // B3,B2,B1,B0 are inputs

____________________________________________________________ Curso Técnico de Eletroeletrônica

Related Documents

Microcontroladores Pic
August 2019 34
Microcontroladores
June 2020 19
Pic
May 2020 22
Pic
May 2020 28
Pic
November 2019 36