universidade federal do vale do são francisco - univasf colegiado de engenharia da computação –...

19
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A PIC16F877A Linguagem C e Assembly Linguagem C e Assembly Jadsonlee da Silva Sá [email protected] www.univasf.edu.br/~jadsonlee. sa

Upload: internet

Post on 18-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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á

[email protected]/~jadsonlee.sa

Page 2: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 3: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 4: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 5: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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

Page 6: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 7: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 8: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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...

Page 9: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

ProteusProteus .

Page 10: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

Configuração BásicaConfiguração Básica PIC16F877A.

Page 11: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 12: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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).

Page 13: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 14: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

InterrupçõesInterrupções Exemplo – INT externa (RB0).

Page 15: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP

InterrupçõesInterrupções Exemplo – INT externa (RB0).

Page 16: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.

Page 17: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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)

Page 18: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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...

Page 19: Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A Linguagem C e Assembly Jadsonlee da Silva

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.