Post on 18-Apr-2015
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
PIC16F877A PIC16F877A Linguagem C e AssemblyLinguagem C e Assembly
Jadsonlee da Silva Sá
Jadsonlee.sa@univasf.edu.brwww.univasf.edu.br/~jadsonlee.sa
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
IDE PCW – CCS CIDE PCW – CCS C Desenvolvido pela CCS – www.ccsinfo.com
Utilizado para desenvolver projetos em linguagem C para PICs – Compatível com o padrão ANSI.
O IDE consiste de três módulos independentes:
– PCB Dispositivos de 12 bits.– PCM Dispositivos de 14 bits.– PCH Dispositivos de 16 bits.– PCD Dispositivos de 24 bits.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
IDE PCW – CCS CIDE PCW – CCS C
• Manual digite f12.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
IDE PCW – CCS CIDE PCW – CCS C Desenvolvendo um projeto.
– Project New Source File.
Inclui o uC 16F877A.Utilizado para programar as opções
de word_configuration – view/fuses valid.Define clock utilizado.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
Aplicação - LEDAplicação - LED Utilizar o pino B3 para controlar o LED.
– A queda de tensão no LED é de 0,7 V e a corrente nominal de até 20 mA.
– O PIC fornece no máximo 20 mA.
* 0,7 *20
4,30 ou 5 215
20
PIC LED PIC
PIC
V V R I V R m
V V Rm
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
Aplicação - LEDAplicação - LED Programas em C (CCS) e Assembly (MPLAB).
O atraso entre ligar/desligar é aproximadamente zero.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
Exercício - LEDExercício - LED
Em grupo: faça um programa em C e outro em assembly que dê um atraso de 1 s entre o ligar/desligar e desligar/ligar do LED.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
ProteusProteus Ferramenta para desenvolvimento de sistemas
eletrônicos.
– ARES Projeto de circuitos para prototipação.
– ISIS Simulação de circuitos eletrônicos.
www.labcenter.com
Instalação...
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
ProteusProteus .
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
Configuração BásicaConfiguração Básica PIC16F877A.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
ExercícioExercício Em grupo: monte o circuito do PIC/LED e
execute o programa do exercício anterior no Proteus.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Assembly.
Apenas PC é salvo automaticamente na pilha.
W, STATUS e PCLATH devem ser salvos via software.
Para ser acessível na mesma posição por todos os bancos (0x70-0x7F).
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Assembly.
– Verificar qual bit IF do periférico utilizado está setado.
– Se o bit IF testado for zero, salta o goto.
– A seqüência dos testes indica a prioridade das interrupções.
Porta B
INT
Timer 0
END_ISR aponta para o endereço imediatamente antes do restaurar o contexto.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Exemplo – INT externa (RB0).
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Exemplo – INT externa (RB0).
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Linguagem C - CCS.
– Existem duas formas básicas para tratar as interrupções:
• Automático - O compilador gera quase todo código necessário para tratar a interrupção – O programador apenas inclui as funções de tratamento.
• Manual - O programador inclui todo código para tratar a interrupção.
– O automático é simples, mas o código torna-se maior. Enquanto que no manual, o código é menor, mas o programador deve incluir todo código para realizar o tratamento.
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Linguagem C - CCS.
– Automático.
• A diretiva #INT_xxx deve ser utilizada antes da função ISR.
• O compilador zera o bit IF do periférico.
• Ver manual (#INT_xxx)
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções
Linguagem C - CCS.
– Automático – Definição da prioridade.
• #priority nome_int1, nome_int2,...
– nome_int1 possui a maior prioridade...
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP
InterrupçõesInterrupções Linguagem C - CCS.
– Manual.
• Apenas a diretiva #INT_GLOBAL deve ser utilizada.
#locate#locatePrioridade é idêntica ao procedimento em assembly.