Aula 11 - Univasf
Download
Report
Transcript Aula 11 - Univasf
PIC16F877A
Linguagem C e Assembly
Jadsonlee da Silva Sá
[email protected]
www.univasf.edu.br/~jadsonlee.sa
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
IDE 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 C
• Manual digite f12.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
IDE 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 - 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.
VPIC VLED R * I VPIC 0, 7 R * 20m
VPIC 0 ou 5V
4,3
R
215
20m
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Aplicaçã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 - LED
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.
Monte o circuito do PIC/LED e execute o
programa no Proteus.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupçõ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 (0x700x7F).
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Assembly.
–
Verificar qual bit IF do periférico utilizado está
setado.
Porta B
INT
Timer 0
–
Se o bit IF testado for zero, salta o goto.
–
A seqüência dos testes indica a prioridade das
interrupções.
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ções
Exemplo – INT externa (RB0).
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Exemplo – INT externa (RB0).
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupçõ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.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupçõ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çõ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ções
Linguagem C - CCS.
–
Manual.
•
Apenas a diretiva #INT_GLOBAL deve ser utilizada.
#locate
Prioridade é idêntica ao
procedimento em assembly.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP