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