Post on 01-Nov-2018
24/02/2015
1
MPLAB® IDE
124/02/2015
MPLAB® IDE1.1. VISÃO GERALVISÃO GERAL2.2. MPASMMPASM™™
224/02/2015
3.3. MPLABMPLAB®® SIMSIM4.4. MPLABMPLAB®® ICD2ICD2
VISÃO GERALVISÃO GERAL1
VISÃO GERALVISÃO GERAL
324/02/2015
VISÃO GERALVISÃO GERAL
VISÃO GERALVISÃO GERAL1
• IDE – Integrated Development Environment.
• Permite a programação da MCU através do computador.
• O IDE fornecido pela Microchip é o MPLAB®
• MPLAB® – Machine Perception LABoratory.
MPLAB®
424/02/2015
• O MPLAB® permite programar MCU da família PIC®.
VISÃO GERALVISÃO GERAL1MPLAB®
524/02/2015
VISÃO GERALVISÃO GERAL1
• Editor de texto para entrada do código.
• Debugging do código.
• Simulador de PIC® e de dsPIC®.
MPLAB®
624/02/2015
• Assembler (Montador).
• Compilador C.
• Outros itens.
24/02/2015
2
VISÃO GERALVISÃO GERAL1Suporte
724/02/2015
VISÃO GERALVISÃO GERAL1Página na internet
824/02/2015
VISÃO GERALVISÃO GERAL1Download do MPLAB® IDE 8.91
924/02/2015
VISÃO GERALVISÃO GERAL1Componentes disponíveis
1. Serial Memory Devices2. 8-bit MCUs and KeeLoq devices.3. 16-bit MCUs and DSCs4. 32 bit MCUs5. REAL ICE CMD6. ICD 3 Cmd7. PK3CMD8. Procmd9. PM3Cmd10. Visual Procmd11 MPASM S it
23. PICkit24. PICkit225. PICkit326. MPLAB ICE 200027. MPLAB ICE 400028. MPLAB REAL ICE29. KEELOQ30. MPLAB PIC32 Starter Kit31. MPLAB Serial Memory Products Starter Kit32. MPLAB dsPIC Starter Kit33 A li ti M t
USAREMOS
1024/02/2015
11. MPASM Suite12. ASM30 Suite13. MPLAB C32 Suite14. HI-TECH C for PIC10/12/16 MCUs, Lite or PRO Edition15. MPLAB IDE16. MPLAB PM317. PICSTART Plus18. PRO MATE II19. MPLAB ICD 220. MPLAB ICD 321. MPLAB SIM22. AN 851 FLASH Bootloader
33. Application Maestro34. CCS PCB C Compiler, Microchip MPLAB IDE Edition35. Target Application I/O Display36. Data Monitor and Control Interface37. AN908 ACIM Tuning Interface38. Real Time OS Viewer39. MATLAB40. PCLint41. SMPS GUI42. LCD Designer43. dsPIC Filter Designer44. mTouch GUI45. dsPIC Works Plug-in
USAREMOS
USAREMOS
VISÃO GERALVISÃO GERAL1Componentes usados neste curso
• MPASM™ (MPLAB® assembler)
• Permite editar um arquivo de código assembler.
• Gera o arquivo binário para ser enviado ao chip.
• Permite o uso das extensões do MPLAB® assembler.
1124/02/2015
• MPLAB® SIM (simulator)
• Simula, no computador, um chip real.
• O arquivo binário é enviado ao chip virtual.
• Todas as variáveis do chip real podem ser lidas e escritas.
VISÃO GERALVISÃO GERAL1Componentes usados neste curso
• MPLAB® ICD2(in-chip designer)
• Permite a execução do programa no chip real.
• Permite a gravação do programa no chip
1224/02/2015
• Permite a gravação do programa no chip.
• Permite a recuperação de um programa já gravado.
• Todas as variáveis do chip real podem ser lidas e escritas.
24/02/2015
3
VISÃO GERALVISÃO GERAL1Componentes usados neste curso
USAREMOS
1324/02/2015
USAREMOS
USAREMOS
VISÃO GERALVISÃO GERAL1Componentes usados neste curso
1424/02/2015
VISÃO GERALVISÃO GERAL1Ícone do programa
1524/02/2015
VISÃO GERALVISÃO GERAL1Ambiente de trabalho
1624/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
1724/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
1824/02/2015
24/02/2015
4
VISÃO GERALVISÃO GERAL1Project Wizard
1924/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
2024/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
• MPASM™ : Usado para montar um programa.
• MPLINK™ : Usado para juntar programas ou bibliotecas
USAREMOS
2124/02/2015
• MPLINK™ : Usado para juntar programas ou bibliotecas.
• MPLIB™ : Usado para criar uma biblioteca de rotinas.
VISÃO GERALVISÃO GERAL1Project Wizard
2224/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
2324/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
2424/02/2015
24/02/2015
5
VISÃO GERALVISÃO GERAL1Project Wizard
2524/02/2015
VISÃO GERALVISÃO GERAL1Project Wizard
2624/02/2015
VISÃO GERALVISÃO GERAL1Onde obter ajuda
2724/02/2015
USAREMOS
VISÃO GERALVISÃO GERAL1Barra de stado – Stats bar
ClockBanco da
SRAMDependendo do que o programa estiver exibindo,outros itens podem aparecer no status bar.
2824/02/2015
Debugger MCU
ProgramCounter
WorkRegister
(Acumulator)
Status Register
Bit 0 – C – Carry
Bit 1 – DC – Digit Carry
Bit 2 – Z – Zero
Minúsculo: 0
Maiúsculo: 1
VISÃO GERALVISÃO GERAL1Projeto
2924/02/2015
VISÃO GERALVISÃO GERAL1Seleção do dispositivo
Os recursos emverde são aceitospelo dispositivoOs recursos em
3024/02/2015
pelo dispositivo,mesmo se nãotiverem sidoinstalados.
vermelho nãoestão disponíveispara o dispositivoselecionado.
24/02/2015
6
VISÃO GERALVISÃO GERAL1Seleção do dispositivo
USAREMOS
3124/02/2015
Barra de ferramentas do MPLAB® SIM.
USAREMOSUSAREMOS
MPASMMPASM™™2
MPASMMPASM™™
3224/02/2015
MPASMMPASM™™
MPASMMPASM™™2
• Usado na criação de códigos para MCU’s PIC®.
• Para PIC®’s de 8 bits (10/12/16/18) são usados os recursos:
• MPASM™ assembler v5.44.
Componentes
USAREMOS
3324/02/2015
• MPLINK™ object linker v4.42.
• MPLIB™ object librarian v4.42.
MPASMMPASM™™2Componentes
USAREMOS
3424/02/2015
MPASMMPASM™™2Elementos de um projeto
USAREMOS
3524/02/2015
• MCW: MicroChip Workspace.
• MCP: MicroChip Project.
MPASMMPASM™™2Elementos de um projeto
• É necessário que exista um MCP.
• Um arquivo “.ASM” pode ser abertofora de um MCP, apenas para
3624/02/2015
edição, não pode ser montado.• Um arquivo aberto fora do MCP não
é incluído na montagem.
24/02/2015
7
MPASMMPASM™™2
• Assembler para PIC1X.
• Pode ser usado de duas formas:
• Geração do código para a MCU (default).
• Geração de módulos (module).
• O arquivo com o código assembly pronto para
MPASM™
USAREMOS
q g y p pser montado possui a extensão “.ASM”.
• O arquivo com o módulo pronto para ser juntadopossui a extensão “.LIB”.
• O arquivo com o código de máquina pronto paraser enviado à MCU possui a extensão “.HEX”.
3724/02/2015
USAREMOS
USAREMOS
MPASMMPASM™™2Geração do código para a MCU
Montagem Programação
3824/02/2015
MPASMMPASM™™2Geração do módulo para o MPLINK™
• Módulos podem ser juntados (linked) para formar umprograma maior.
• A união de módulos é feita no MPLINK™.
• Módulos podem ser reusados em outros programas.
3924/02/2015
MPASMMPASM™™2Geração do módulo para o MPLINK™
4024/02/2015
MPASMMPASM™™2Arquivos de entrada do MPASM™
• ASM – Código fonte.
• INC Referência de inclusão
4124/02/2015
• INC – Referência de inclusão,usado no cabeçalho (header).
MPASMMPASM™™2Arquivos de saída do MPASM™
• ASM – Arquivo de código (assembler).
• COF – Arquivo com código de objeto (linker).
• HEX – Arquivo exadecimal para 8 bits.
• LST – Arquivo de listagem (assembler/compiler).
4224/02/2015
• MAP – Arquivo de mapa (linker).
• O – Arquivo de objeto (assembler/compiler).
• ERR – Arquivo de erro.
• HXL – Arquivo exadecimal para 16 bits, low.
• HXH – Arquivo exadecimal para 16 bits, high.
• XRF – Arquivo de referência cruzada.
24/02/2015
8
MPASMMPASM™™2Visualizações
As opções desabilitadas nãoestão disponíveis para omodelo de MCU escolhido
4324/02/2015
modelo de MCU escolhido.
MPASMMPASM™™2Conversão para disassembly
4424/02/2015
Do arquivo .ASMdigitado pelo usuário.
Disassembly
Opcodes
MPASMMPASM™™2Conversão para disassembly - ferramentas
4524/02/2015
MPASMMPASM™™2EEPROM
4624/02/2015
Lógica negativa: Os bits apagados contém nível lógico “1”.
MPASMMPASM™™2EEPROM – ferramntas
4724/02/2015
MPASMMPASM™™2Registradores – SRAM
4824/02/2015
32 colunas.
16 linhas.
32 16 = 512.
368 gerais.
144 específicos.
24/02/2015
9
MPASMMPASM™™2Registradores – SRAM
Ban
co0
nco
1
4924/02/2015
Ba
Ban
co2
Ban
co3
As posições desabilitadas não permitem alteração.
MPASMMPASM™™2Registradores – SRAM
5024/02/2015
MPASMMPASM™™2Registradores – SRAM – ferramentas
• Erradamente, os registrado-res presentes em dois ou
5124/02/2015
quatro bancos, aparecem,apenas, no banco 0.
• Seus endereços nos demaisbancos constam comoGPR’s, mas são SFR’s.
MPASMMPASM™™2Pilha
• Esta janela apresenta a pilha como ela realmentefunciona.
• É diferente da forma como é mostrada nos livros.
• Para iniciantes, isto pode gerar confusão.
5224/02/2015
Indicativo de pilha vazia
MPASMMPASM™™2Variáveis locais
5324/02/2015• Usado no compilador.
• Não usado no montador.
MPASMMPASM™™2Program Memory (14 bits)
5424/02/2015
• Valor máximo: 3FFFh.
• Endereço máximo: 1FFFh.
24/02/2015
10
MPASMMPASM™™2Program Memory (14 bits)
5524/02/2015
• São 8192 linhas.• Faixa: 0000h a 1FFFh (13 bits).
• São 14 bits para o opcode.• Faixa: 0000h a 3FFFh (14 bits).
MPASMMPASM™™2Program Memory (14 bits) – ferramentas
5624/02/2015
• É recomendada a remoção dacoluna “line”.
• Essa coluna começa em “1”, o alunopode assumir esse valor comosendo o endereço, mas não é.
MPASMMPASM™™2Registradores específicos
5724/02/2015
MPASMMPASM™™2Registradores específicos
• WREG não possui endereço.
• WREG não é mnemônico válido no MPASM™.
• INDF não é um registrador, não há conteúdo.
• EECON2 não é um registrador, não há conteúdo.
5824/02/2015
• Erradamente, os registradores presentes em doisou quatro bancos, aparecem, apenas, no banco 0
• Seus endereços nos demais bancos constamcomo GPR’s, mas são SFR’s.
MPASMMPASM™™2Registradores específicos
WREG000 INDF001 TMR0002 PCL003 STATUS004 FSR005 PORTA006 PORTB007 PORTC008 PORTD009 PORTE
01B CCPR201B CCPR2L01C CCPR2H01D CCP2CON01E ADRESH01F ADCON0081 OPTION_REG085 TRISA086 TRISB087 TRISC088 TRISD
5924/02/2015
00A PCLATH00B INTCON00C PIR100D PIR200E TMR100E TMR1L00F TMR1H010 T1CON011 TMR2012 T2CON013 SSPBUF014 SSPCON015 CCPR1015 CCPR1L016 CCPR1H017 CCP1CON018 RCSTA019 TXREG01A RCREG
088 TRISD089 TRISE08C PIE108D PIE208E PCON091 SSPCON2092 PR2093 SSPADD094 SSPSTAT098 TXSTA099 SPBRG09E ADRESL09F ADCON110C EEDATA10D EEADR10E EEDATH10F EEADRH18C EECON118D EECON2
MPASMMPASM™™2Registradores específicos
• O SFR name pode serusado na programação.
• O assembler puro não
6024/02/2015
permite o uso do SFR name.
• O uso do SFR name é umrecurso do MPASM™.
24/02/2015
11
MPASMMPASM™™2Inspeção de registradores
6124/02/2015
• O SFR name pode ser usado na programação.
• Os nomes dos bits dos SFR’s também podem ser usados.
MPASMMPASM™™2
• Os SFR’s podem ser chamados, no programa, pelosseus endereços reais ou pelo seus nomes.
• O nome é convertido para o endereço no disassembly.
Registradores específicos
6224/02/2015
MPASMMPASM™™2Bits dos SFR’s
• Os bits dos SFR’spodem ser chamados,no programa, pelosseus endereços reaisou pelo seus nomes.
• O endereço do bit
6324/02/2015
• O endereço do bitvaria de zero a sete.
• O nome é convertidopara o endereço nodisassembly.
MPASMMPASM™™2Mnemônicos
Tipo Exemplos DisassemblyDe instrução NOP, ADDLW, CALL Sim
De SFR INDF, INTCON, STATUS Não
6424/02/2015
De bits de SFR C, Z, DC, GIE, RP0 Não
De controle W, F Não
Rótulo Não
• Ao falar em mnemônico, sem especificaro tipo, considera-se o de instrução.
MPASMMPASM™™2Uso de memória
6524/02/2015
Flash213=8192
SRAMRegistradores de uso geral
MPASMMPASM™™2Uso de memória
6624/02/2015
24/02/2015
12
MPASMMPASM™™2Bits de configuração
6724/02/2015
• São flags armazenados nos registradores de usoespecíficos.
• Permite a configuração do estado inicial da MCU.
• Tais parâmetros podem ser configurados peloprograma ou manualmente nesta janela.
MPASMMPASM™™2Bits de configuração
6824/02/2015
• Não é necessário entender a codificação do configuration word.
• As opções são fornecidas intuitivamente.
• Uso da configuração pelo MPLAB®: Útil quando todos osprogramas usam a mesma configuração em um computadorespecífico.
• Uso da configuração pelo programa: Útil quando cadaprograma usa uma configuração diferente ou quando se usacomputadores públicos.
MPASMMPASM™™2Bits de configuração
E d d fi ti V l d
6924/02/2015
Endereço do configuration word na flash
Valor do configuration word
MPASMMPASM™™2Código fonte (.ASM)
• Qualquer editor de texto compatível com ASCII pode serusado para gerar o código fonte.
• O código é formado por linhas que contém as instruções.
• Cada linha contém apenas uma instrução.
• Cada linha pode conter quatro tipos de informação:
7024/02/2015
p q p
• Label – Rótulo
• Mnemonic, Directive, Macro
• Operands – Operador
• Comments – Comentário
• Para facilitar a leitura do código pelo usuário, recomenda-se usar colunas separadas para cada tipo de informação.
MPASMMPASM™™2Colunas
• Coluna 1: Label Rótulo
• Coluna 2:
• Mnemonic Mnemônico
• Directive DiretivaUSAREMOS
USAREMOS
USAREMOS
7124/02/2015
• Directive Diretiva
• Macro Macro
• Coluna 3: Operands Operandos
• Coluna 4: Comments ComentáriosUSAREMOS
USAREMOS
MPASMMPASM™™2Exemplo
7224/02/2015
24/02/2015
13
MPASMMPASM™™2Colunas
• Elementos:
• Rótulo
• Mnemônico
• Diretiva
• Macro
7324/02/2015
Macro
• Operandos
• Comentários.
• Somente os Mnemônicos e operandos fazemparte do código assembly puro.
• Rótulos, diretivas, macro e comentários não sãoessenciais, são acréscimos disponibilizados noMPLAB® e não são enviados ao chip.
MPASMMPASM™™2Rótulo (Label)
• Coluna 1
• Pode conter qualquer texto, exceto:
• Começar com dois underscores consecutivos.
7424/02/2015
• Começar com um underscore seguido por um número.
• Ser uma palavra reservada do assembler.
• Ser maior do que 32 letras.
MPASMMPASM™™2Mnemônico
• Coluna 2
• É um comando inserido no código.
• Define a instrução a ser montada
7524/02/2015
• Define a instrução a ser montada.
• São determinados pela linguagem assembly.
• Não depende do tamanho da letra, o padrão é maiúsculo.
MPASMMPASM™™2Diretiva
• Coluna 2
• É um comando inserido no código.
• Não está associado a uma instrução.
• Usado para controlar a montagem
7624/02/2015
• Usado para controlar a montagem.
• Não depende do tamanho da letra.
• Não gera linha no código disassembly.
• Não é gravado no chip.
MPASMMPASM™™2Tipos de diretivas
1. De controle.Define como a montagem é feita.
2. Condicional.Define montagens condicionais.
Não define execução condicional
USAREMOS
7724/02/2015
Não define execução condicional.
3. De dados.Define variáveis simbólicas.
4. De listagem.Define o formato da listagem do montador.
5. De macro.
6. De arquivo object.
USAREMOS
MPASMMPASM™™2Exemplos de diretivas
• #include Include Additional Source File
• #define Define a Text Substitution Label
• #undefine Delete a Substitution Label
USAREMOS
USAREMOS
USAREMOS
De controle
7824/02/2015
• Org Set Program Origin
• end End Program Block
USAREMOS
USAREMOS
• __config Set Processor Configuration BitsUSAREMOS
De dados
24/02/2015
14
MPASMMPASM™™2#INCLUDE
• Indica um arquivo a ser incluído na montagem.
• O arquivo deve conter código assembly.
• O caminho para o arquivo deve ser conhecido.
• Se for arquivo de configuração de PIC® o
7924/02/2015
• Se for arquivo de configuração de PIC®, oMPLAB® já sabe o caminho.
• Vários arquivos podem ser incluídos.
• É uma diretiva de controle.
MPASMMPASM™™2Include File (.INC)
• Arquivo a ser anexado ao projeto.
• O include possui códigos em linguagem demontagem.
8024/02/2015
• Um include pode ser usado e reusado pordiversos códigos fonte.
MPASMMPASM™™2Include File (.INC)
8124/02/2015
USAREMOS
MPASMMPASM™™2
LIST
;==========================================================================; MPASM PIC16F877 processor include; ; (c) Copyright 1999-2012 Microchip Technology, All rights reserved;==========================================================================
NOLIST
;==========================================================================Thi h d fil d fi fi ti i t d th f l
Include File (.INC)#INCLUDE <P16F877.INC>
; This header file defines configurations, registers, and other useful; bits of information for the PIC16F877 microcontroller. These names; are taken to match the data sheets as closely as possible.;; Note that the processor must be selected before this file is included.; The processor may be selected the following ways:;; 1. Command line switch:; C:\MPASM MYFILE.ASM /PIC16F877; 2. LIST directive in the source file; LIST P=PIC16F877; 3. Processor Type entry in the MPASM full-screen interface; 4. Setting the processor in the MPLAB Project Dialog;==========================================================================
;==========================================================================;; Verify Processor;;==========================================================================
IFNDEF __16F877MESSG "Processor-header file mismatch. Verify selected processor."
ENDIF8224/02/2015
MPASMMPASM™™2Sintaxe da inclusão de arquivo
#include include_file#include "include_file"#include <include_file>
• São permitidas até 5 hierarquias.
Sã itid té 255 i l õ
USAREMOS
8324/02/2015
• São permitidas até 255 inclusões.
• Para arquivos do usuário, pode-se colocar o caminhocompleto.
• Exemplo: #include "c:\Program Files\mydefs.inc"
MPASMMPASM™™2Include File (.INC)
• A inclusão de arquivo de definição daPIC® (.INC) permite o uso de:
• Mnemônicos de SFR’s.
• Mnemônicos de bits de SFR’s.
8424/02/2015
• Mnemônicos do configuration word.
• Esses mnemônico e a atribuição do valornumérico está contida no próprio arquivo(.INC) e podem ser consultados.
• A não inclusão do arquivo de definiçãorequer o uso dos endereços reais.
24/02/2015
15
MPASMMPASM™™2Resultado de montagem sem #INCLUDE <P16F877.INC>----------------------------------------------------------------------Debug build of project `E:\My Documents\2012_1\Disciplinas\Microprocessadores\Assembler\Marco.mcp' started.Language tool versions: MPASMWIN.exe v5.45, mplink.exe v4.43, mplib.exe v4.43Preprocessor symbol `__DEBUG' is defined.Thu Jul 11 19:49:21 2013----------------------------------------------------------------------Make: The target "H:\2013_1\Microprocessadores\Assembler\pr.o" is out of date.Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F877 "pr.asm" /l"pr.lst" /e"pr.err" /d__DEBUG=1Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 6 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 6 : Symbol not previously defined (RP1)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 7 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 7 : Symbol not previously defined (RP0)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 11 : Symbol not previously defined (STATUS)Error[113] H:\2013 1\MICROPROCESSADORES\ASSEMBLER\PR ASM 11 : Symbol not previously defined (RP1)
8524/02/2015
Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 11 : Symbol not previously defined (RP1)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 12 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 12 : Symbol not previously defined (RP0)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 16 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 16 : Symbol not previously defined (RP1)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 17 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 17 : Symbol not previously defined (RP0)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 21 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 21 : Symbol not previously defined (RP1)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 22 : Symbol not previously defined (STATUS)Error[113] H:\2013_1\MICROPROCESSADORES\ASSEMBLER\PR.ASM 22 : Symbol not previously defined (RP0)Halting build on first failure as requested.----------------------------------------------------------------------Debug build of project `E:\My Documents\2012_1\Disciplinas\Microprocessadores\Assembler\Marco.mcp' failed.Language tool versions: MPASMWIN.exe v5.45, mplink.exe v4.43, mplib.exe v4.43Preprocessor symbol `__DEBUG' is defined.Thu Jul 11 19:49:22 2013----------------------------------------------------------------------BUILD FAILED
MPASMMPASM™™2#DEFINE e #UNDEFINE
• Atribui um nome a um número.
• Este procedimento facilita a compreensão do código.
• A atribuição pode ser desfeita.
8624/02/2015
• São diretivas de controle.
• O tamanho do número deve ser coerente com a aplicação.
• Se necessário, o MPASM™ corrige o erro removendo osbits mais significativos.
MPASMMPASM™™2#DEFINE e #UNDEFINE
Aplicação Tamanho (bits)Dado 8
8724/02/2015
File – direto 7
File – indireto 8
Program Memory 11
Bit 3
MPASMMPASM™™2ORG
• Indica o endereço de início do programa na flash.• Se não for definido, o início é colocado em 0000h.
• É uma diretiva de controle.• O interrupt vector localiza-se na posição 0004h.
8824/02/2015
• Se este recurso for empregado, o programa deveiniciar na posição 0005h ou superior.
• Neste caso, a diretiva ORG deve ser usada e oreset vector deve ter a instrução GOTO direcionadaao endereço chamado na diretiva ORG.
MPASMMPASM™™2Program Memory
8924/02/2015
MPASMMPASM™™2END
• Indica o final do programa.• Todo programa deve ter um end.
• O programa deve ter apenas um end
9024/02/2015
• O programa deve ter apenas um end.
• Nenhum arquivo incluído pode conter um end.
• É uma diretiva de controle.
24/02/2015
16
MPASMMPASM™™2Macro
• Coluna 2
• É uma sequência de instruções ou de diretivas
9124/02/2015
q çque são executadas paralelamente à execuçãodo código assembly assim que forem invocadas.
MPASMMPASM™™2Operando
• Coluna 3
• Gera linha no código disassembly.
• As instruções podem usar um, dois ounenhum operando.
• Operandos fornecem informações numéricas
9224/02/2015
p çnecessárias à execução da instrução.
• Os números podem ser indicados por labels.
• O operando é colocado depois (à direita) domnemônico, separado por um ou maisespaços ou tabulações.
• Múltiplos operandos são separados um dooutro por meio de vírgula.
MPASMMPASM™™2Operandos para a família mid-range01 ANDWF f,d02 IORWF f,d03 XORWF f,d04 ADDWF f,d05 SUBWF f,d06 COMF f d
15 BCF f,b16 BSF f,b17 BTFSC f,b18 BTFSS f,b
23 ANDLW k24 IORLW k25 XORLW k26 ADDLW k27 SUBLW k
19 CLRF f
9324/02/2015
06 COMF f,d07 INCF f,d08 DECF f,d09 INCFSZ f,d10 DECFSZ f,d11 RLF f,d12 RRF f,d13 SWAPF f,d14 MOVF f,d
30 CLRW31 NOP32 CLRWDT33 SLEEP34 RETFIE35 RETURN
28 MOVLW k29 RETLW k
21 GOTO k22 CALL k
19 CLRF f20 MOVWF f
MPASMMPASM™™2Comentário
• Coluna 4
• São textos explicativos para acompreensão do código.
• São precedidos por ponto-e-vírcula.
T d t úd à di it d t í l
9424/02/2015
• Todo conteúdo à direita do ponto-e-vírculaé ignorado pelo montador.
• Ponto-e-vírgula contido em uma cadeia(string) não é considerado, pelo montador,como o início de um comentário.
• Quando o comentário diz respeito aoprograma todo ou a um bloco doprograma, é melhor usar a coluna 1.
MPASMMPASM™™2Cores
9524/02/2015
• Azul: Header, diretivas e mnemônicos
• Verde: Comentários
• Vermelho: Operandos
• Preto: Constantes
Estas cores podem ser alteradas.
MPASMMPASM™™2Tipos de números
Tipo Sintaxe Exemplo
Binário B'dígitos' B'00111001'
Octal O'dígitos' O'777'
9624/02/2015
g
Decimal D'dígitos'.'dígitos'
D'100' .100
Hexadecimal H'dígitos' 0xhex_digits
H'9f' 0x9f
ASCII A'dígitos''dígitos'
A'C' 'C'
USAREMOS
• A base padrão é a decimal.
• Se a base não for especificada, assume-se decimal.
24/02/2015
17
MPASMMPASM™™2Configuração da frequência de operação
9724/02/2015
MPASMMPASM™™2Usando “f” abaixo de 15kHz
9824/02/2015
• Não é possível aumentar muito otempo da contagem abaixando afrequência de operação.
• A solução é aumentar a quantidadede bytes de contagem.
MPASMMPASM™™2Operações do MPASM™
• O MPASM™ permite o uso de operaçõesmatemáticas em lugar dos operandos.
• Essas operações são realizadas pelo
9924/02/2015
• Essas operações são realizadas peloMPASM™ na geração do códigodisassembly antes da montagem.
MPASMMPASM™™2
$ Current/Return program counter( Left Parenthesis) Right Parenthesis! Item NOT (logical complement) - Negation (2's complement) ~ Complementlow1 Return low byte of address high1 Return high byte of address
== Equal to != Not equal to & Bitwise AND ^ Bitwise exclusive OR | Bitwise inclusive OR && Logical AND || Logical OR = Set equal to
Operações em ordem de precedência
10024/02/2015
upper1 Return upper byte of address * Multiply/ Divide % Modulus+ Add- Subtract<< Left shift>> Right shift>= Greater or equal> Greater than< Less than<= Less or equal
+= Add to, set equal-= Subtract, set equal*= Multiply, set equal/= Divide, set equal%= Modulus, set equal<<= Left shift, set equal>>= Right shift, set equal&= AND, set equal|= Inclusive OR, set equal^= Exclusive OR, set equal++ Increment2
-- Decrement2
MPASMMPASM™™2Bits de configuração
1.FOSC Oscillator Selection bits2 W t hd Ti E bl bit
10124/02/2015
2.WDTE Watchdog Timer Enable bit3.PWRTE Power-up Timer Enable bit4.CP FLASH Program Memory Code Protection bits5.BOREN Brown-out Reset Enable bit6.LVP Low Voltage In-Circuit Serial Programming Enable bit7.CPD Data EE Memory Code Protection bit8.WRT FLASH Program Memory Write Enable bit
MPASMMPASM™™2Bits de configuração
; Bits de configuração#include <p16f877.inc>__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _DEBUG_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFFend
10224/02/2015
• O uso dos minemônicos de configuração requer adefinição da PIC®; #include <p16f877.inc>.
• Sem o arquivo de inclusão, é preciso escrever ocódigo correspondente.
24/02/2015
18
MPASMMPASM™™2Bits de configuração
_FOSC_LP 3FFCh 11111111111100b LP oscillator
_FOSC_XT 3FFDh 11111111111101b XT oscillator
_FOSC_HS 3FFEh 11111111111110b HS oscillator
_FOSC_EC 3FFFh 11111111111111b ECIO; port I/O function on RA6/OSC2/CLKO
_LP_OSC 3FECh 11111111111100b LP oscillator
_XT_OSC 3FEDh 11111111111101b XT oscillator
_HS_OSC 3FEEh 11111111111110b HS oscillator
_EXTCLK 3FEFh 11111111111111b ECIO; port I/O function on RA6/OSC2/CLKO
10324/02/2015
_FOSC_INTOSCIO 3FFChINTRC oscillator
port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin
_FOSC_INTOSCCLK 3FFDhINTRC oscillator
CLKO function on RA6/OSC2/CLKO pin and port I/O function on RA7/OSC1/CLKI pin
_FOSC_EXTRCIO 3FFEh EXTRC oscillator; port I/O function on RA6/OSC2/CLKO
_FOSC_EXTRCCLK 3FFFh EXTRC oscillator; CLKO function on RA6/OSC2/CLKO
_INTRC_IO 3FFChINTRC oscillator
port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin
_INTRC_CLKOUT 3FFDhINTRC oscillator
CLKO function on RA6/OSC2/CLKO pin and port I/O function on RA7/OSC1/CLKI pin
_EXTRC_IO 3FFEh EXTRC oscillator; port I/O function on RA6/OSC2/CLKO
_EXTRC_CLKOUT 3FFFh EXTRC oscillator; CLKO function on RA6/OSC2/CLKO
MPASMMPASM™™2Bits de configuração
_WDTE_OFF_WDT_OFF
3FFBh WDT disabled
_WDTE_ON_WDT_ON
3FFFh WDT enabled
_BOREN_OFF_BODEN_OFF
3FBFh BOR disabled
_BOREN_ON_BODEN_ON
3FFFh BOR enabled
10424/02/2015
_PWRTE_ON 3FF7h PWRT enabled
_PWRTE_OFF 3FFFh PWRT disabled
_MCLRE_OFF_MCLR_OFF
3FDFh RA5/MCLR/VPP pin function is digital I/O, MCLR internally tied to VDD
_MCLRE_ON_MCLR_ON
3FFFh RA5/MCLR/VPP pin function is MCLR
_CCPMX_RB3_CCP1_RB3
2FFFh CCP1 function on RB3
_CCPMX_RB0_CCP1_RB0
3FFFh CCP1 function on RB0
MPASMMPASM™™2Bits de configuração
_CPD_ON 3EFFh Data EE memory code‐protected
_CPD_OFF 3FFFh Code protection off
_CP_ON 1FFFh 0000h to 0FFFh code‐protected (all protected)
_CP_ALL 1FFFh 0000h to 0FFFh code‐protected (all protected)
_CP_OFF 3FFFh Code protection off
_WRT_ALLWRT_PROTECT_ALL
39FFh 0000h to 0FFFh write‐protected
WRT 2048 3BFFh 0000h to 07FFh write‐protected 0800h to 0FFFh may be modified by EECON control
10524/02/2015
_WRT_2048 3BFFh 0000h to 07FFh write protected, 0800h to 0FFFh may be modified by EECON control
_WRT_PROTECT_2048 3BFFh 0000h to 07FFh write‐protected, 0800h to 0FFFh may be modified by EECON control
_WRT_256 3DFFh 0000h to 00FFh write‐protected, 0100h to 0FFFh may be modified by EECON control
_WRT_PROTECT_256 3DFFh 0000h to 00FFh write‐protected, 0100h to 0FFFh may be modified by EECON control
_WRT_OFF_WRT_PROTECT_OFF
3FFFh Write protection off
_DEBUG_ON 37FFh In‐Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger
_DEBUG_OFF 3FFFh In‐Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins
_LVP_OFF 3F7Fh RB3 is digital I/O, HV on MCLR must be used for programming
_LVP_ON 3FFFh RB3/PGM pin has PGM function, Low‐Voltage Programming enabled
MPASMMPASM™™2Bits de configuração
; Bits de configuração#include <p16f877.inc>__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _DEBUG_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFFend
_XT_OSC 3FEDh
_WDT_OFF 3FFBh
_PWRTE_OFF 3FFFh
10624/02/2015
_CP_OFF 3FFFh
_DEBUG_ON 37FFh
_BODEN_ON 3FFFh
_LVP_OFF 3F7Fh
_CPD_OFF 3FFFh
3729h
; Bits de configuração#include <p16f877.inc>__config 0x3729end
MPLABMPLAB®® SIMSIM3
MPLABMPLAB®® SIMSIMMPLABMPLAB®® SIMSIM
10724/02/2015
MPLABMPLAB®® SIMSIM3Seleção do simulador
10824/02/2015
USAREMOS
24/02/2015
19
MPLABMPLAB®® SIMSIM3MPLAB® SIM Debuger Tools
10924/02/2015
MPLABMPLAB®® SIMSIM3Montagem
11024/02/2015
USAREMOS
MPLABMPLAB®® SIMSIM3Execução
Run sem o Make antes
Montagem
11124/02/2015
MPLABMPLAB®® SIMSIM3Build – Projeto em branco
Resultado do montagem
Project
11224/02/2015
MPLABMPLAB®® SIMSIM3Build – Projeto em branco
USAREMOS
11324/02/2015
• O projeto (.MCP) pode conter diversostipos de arquivos.
• O tipo “Source” se refere ao códigoassembler ou em linguagem de alto nível.
• É preciso que haja um arquivo nestacategoria.
MPLABMPLAB®® SIMSIM3Build – Inserção de arquivo .ASM
11424/02/2015
24/02/2015
20
MPLABMPLAB®® SIMSIM3Build – Inserção de arquivo .ASM
USAREMOS
11524/02/2015
MPLABMPLAB®® SIMSIM3Build – Make – Out of date
11624/02/2015
MPLABMPLAB®® SIMSIM3Correção do “warning”
Correção
11724/02/2015
MPLABMPLAB®® SIMSIM3Build – Make – Up to date
11824/02/2015
• Nesta operação, o “warning” apresentadono slide anterior já foi resolvido.
• A correção do código foi feita com base nasinformações fornecidas na janela “output”.
MPLABMPLAB®® SIMSIM3
• Durante a montagem , vários arquivos são geradosautomaticamente, relacionados ao arquivo .ASMfornecido pelo usuário.
• Na montagem , o MPLAB® salva, automaticamente, oarquivo .ASM; não há solicitação de confirmação;cuidado deve ser tomado para não perder informações
Out of date
11924/02/2015
cuidado deve ser tomado para não perder informações.
• Como todos os arquivos relacionados ao projeto sãosalvos ao mesmo tempo, todos tem a mesma data.
• Se o arquivo .ASM é mais antigo do que os demaisarquivos, o projeto é considerado out of date.
• Se os arquivos gerados automaticamente não sãoencontrados durante a montagem , o projeto éconsiderado out of date.
MPLABMPLAB®® SIMSIM3Out of date
• Se algum arquivo do projeto aberto sofreualguma alteração, o nome do arquivo recebe umasterisco e o projeto é considerado out of date.
• A montagem out of date consiste de:
• Verificação de erros
12024/02/2015
ç• Gravação do arquivo .ASM.
• Gravação dos demais arquivos.
• Gravação da program memory.
• As gravações ocorrem somente em montagembem sucedida.
24/02/2015
21
MPLABMPLAB®® SIMSIM3Up to date
• Ao término de uma montagem bem sucedida, oprojeto é considerado up of date.
• Se o arquivo .ASM tem a mesma data dos demaisarquivos, o projeto é considerado up of date.
S h i d j t b t f
12124/02/2015
• Se nenhum arquivo do projeto aberto sofreualteração, o projeto é considerado up of date.
• Quanto o projeto está up of date, o montador nãorealiza as três primeiras tarefas, faz, apenas, aescrita da program memory.
MPLABMPLAB®® SIMSIM3Up to date
• Muito cuidado tem que ser tomado ao lidar com umprojeto up of date.
• Ao executar o programa (Run), o MPLAB® não avisapara montar novamente o projeto up of date.
• A execução diz respeito à program memory e não,
12224/02/2015
necessariamente, ao arquivo .ASM do projeto.
• Se a program memory não corresponde ao arquivo.ASM, a execução não fará sentido para o usuário.
• Esse problema ocorre quando foi montado um projetoe, depois, o arquivo .ASM do projeto foi trocado poroutro, que já foi montado em outra ocasião.
• Como o novo arquivo .ASM é considerado up of date, oMPLAB ® não força uma nova montagem na execução.
MPLABMPLAB®® SIMSIM3Montagem
• Por precaução, convém, sempre que for feita algumaalteração relevante no projeto, montar o projeto antesde executá-lo.
• Não é recomendado executar diretamente o programafi d MPLAB® ifi á
12324/02/2015
confiando que o MPLAB® verificará se a programmemory condiz com o arquivo .ASM em questão.
• A montagem pode ser pulada se o usuário tiverconsciência de que realizou alterações invisíveis aomontador, como, por exemplo, comentários.
MPLABMPLAB®® SIMSIM3Program Memory
12424/02/2015
MPLABMPLAB®® SIMSIM3Program Memory – coluna “disassembly”
• A coluna “disassembly” apresenta o código.asm puro, sem as simplificações permitidasno ambiente de edição.
• O programa pode ser construído pelo usuárioO programa pode ser construído pelo usuáriodiretamente na coluna “disassembly”.
• Se um comando inválido for digitado, o editorfornece uma mensagem de erro.
12524/02/2015
MPLABMPLAB®® SIMSIM3Program Memory – coluna “opcode”
• A coluna “opcode” apresenta o código hexadecimal queé enviado ao chip na gravação.
• O código é formado por 14 bits.• O valor máximo é 3FFFh.
• Como as memórias operam em lógica negativa, umaposição apagada apresenta o valor máximo.
• Um valor acima do máximo é reduzido automaticamente.
• O programa pode ser construído pelo usuáriodiretamente na coluna “opcode”.
• Esta é a forma de programação manual do chip.
• No passado, a programação era realizada desta forma.
12624/02/2015
24/02/2015
22
MPLABMPLAB®® SIMSIM3Opcode e Disassembly
• A relação entre opcode e disassembly é biunívoca.
• Um opcode gera um e apenas um código disassembly.
• Um código disassembly gera um e apenas um opcode.
Desmontagem
Opcode Disassembly
Montagem
Desmontagem
• É necessário saber realizar, manualmente, amontagem e a desmontagem da operação,com base na folha de dados do chip. 12724/02/2015
MPLABMPLAB®® SIMSIM3Program Memory
Linha 12805h = 10 1000 0000 0101 b
Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0
GOTO 10 1kkk kkkk kkkk
k = 000 0000 0101 bk = 5 h
12824/02/2015
MPLABMPLAB®® SIMSIM3Program Memory
A posição indicada por ORG contem o apontador para a posição inicial da flash, 5.
12924/02/2015
MPLABMPLAB®® SIMSIM3Status Register
003h, (banco 0)
083h, (banco 1)
103h, (banco 2)
183h, (banco 3)
Banco 0
Banco 1
13024/02/2015
Banco 1
Banco 2
Banco 3
003h, opcode
MPLABMPLAB®® SIMSIM3Seleção de banco de memória
• Quando um mesmo registrador possui endereçoem mais de um banco da SRAM, seus valoressão sempre os mesmos em todos os bancos.
• Ao endereçar um registrador pelo seu nome, e oregistrador está contido no banco vigente, não é
13124/02/2015
preciso preocupar-se com seu endereçonumérico, pois o endereço de 7 bits é o mesmoem todos os bancos onde o registrador aparece.
• Usando rótulo, também não há preocupaçãocom bancos, desde que o banco selecionadocontenha um dos endereços do registrador.
MPLABMPLAB®® SIMSIM3Seleção de banco de memória
;banco 0BCF STATUS,RP1BCF STATUS,RP0
;banco 1BCF STATUS,RP1BSF STATUS,RP0
13224/02/2015
;banco 2BSF STATUS,RP1BCF STATUS,RP0
;banco 3BSF STATUS,RP1BSF STATUS,RP0
24/02/2015
23
MPLABMPLAB®® SIMSIM3Seleção de banco de memória
000
101
BSF STATUS,RP0
BCF STATUS,RP0
13324/02/2015
210
311
BSF STATUS,RP0
BCF STATUS,RP0
BCF
STATUS,RP1
BSF
STATUS,RP1
BCF
STATUS,RP1
BSF
STATUS,RP1
MPLABMPLAB®® SIMSIM3
1703 BSF 0x3, 0x61683 BSF 0x3, 0x51303 BCF 0x3, 0x6
Seleção de banco de memória
BSF STATUS,RP1BSF STATUS,RP0BCF STATUS,RP1BCF STATUS,RP0
Banco 3
Banco 0
Uso do endereço status register pelo banco 0,
1283 BCF 0x3, 0x5
13424/02/2015
eg s e pe o ba co 0
• Neste exemplo, a PIC® usa o endereço do statusregister do banco 0 mesmo estando no banco 3.
• Isto se deve ao fato de que o endereçamento por 7 bitscoincide com o endereçamento por 9 bits no banxo 0.
• Em outras palavras, o endereçamento por 7 bits é feitocomo se todos os registradores estivessem no banco 0.
MPLABMPLAB®® ICD2ICD24
MPLABMPLAB®® ICD2ICD2
13524/02/2015
MPLABMPLAB®® ICD2ICD2
MPLABMPLAB®® ICD2ICD24Introdução
• ICD2 – In-chip debugger
• Permite a execução do programa dentro dochip com a supervisão do MPLAB®.
13624/02/2015
• A monitoração ocorre em tempo real.
• Permite a execução passo a passo.
• Comunicação via RS-232 ou USB.
• Não destinado para fins comerciais.
MPLABMPLAB®® ICD2ICD24Visão geral
http://www.microchip.com/stellent/groups/devtools_sg/documents/devtools/%7Eexport/en010046%7E26%7Een006096%7EPressReleaseLayout/118902-3.png
13724/02/2015
http://www.microchip.com/stellent/groups/devtools_sg/documents/devtools/%7Eexport/en010046%7E26%7Een006096%7EPressReleaseLayout/118902-1.png
MPLABMPLAB®® ICD2ICD24Seleção do ICD2 Debugger
Instalação completa
13824/02/2015
Instalação
mínima
24/02/2015
24
MPLABMPLAB®® ICD2ICD24Seleção o ICD 2 Programmer
Instalação
13924/02/2015
completa
Instalação mínima
MPLABMPLAB®® ICD2ICD24Anternância entre debugger e programmer
14024/02/2015
MPLABMPLAB®® ICD2ICD24Configuração ICD 2
14124/02/2015
MPLABMPLAB®® ICD2ICD24Configuração ICD 2
14224/02/2015
MPLABMPLAB®® ICD2ICD24Seleção da porta de comunicação com o PC
14324/02/2015
MPLABMPLAB®® ICD2ICD24Configuração a alimentação do kit
14424/02/2015
24/02/2015
25
MPLABMPLAB®® ICD2ICD24Configurando a alimentação do kit
• Se a placa compatível com ICD2 possui comunicaçãoRS232, a alimentação deve vir por meio de fonte externa.
• Se a placa compatível com ICD2 possui comunicaçãoUSB, a alimentação pode ser externa ou pela USB.
• A vantagem de usar alimentação pela USB é não precisar
14524/02/2015
gadquirir e lidar com uma fonte externa.
• A vantagem de usar a alimentação externa é nãosobrecarregar a capacidade de fornecimento de correnteda USB e garantir que esse fornecimento será mantidodurante uma gravação da PIC®.
• Usar fonte externa e configurar para alimentação pelaUSB pode provocar estragos.
MPLABMPLAB®® ICD2ICD24Conexão
14624/02/2015
MPLABMPLAB®® ICD2ICD24Conexão
• Se a placa compatível com ICD2 está sempreconectada ao computador, então a opção pela conexãoautomática deve ser escolhida; o usuário não precisapreocupar-se em fazer essa conexão manualmente.
• Se a placa compatível com ICD2 é conectada
14724/02/2015
• Se a placa compatível com ICD2 é conectadararamente ao computador, então a opção pela conexãoautomática não deve ser escolhida pois isso gera umatentativa fracassada de conexão toda vez que oMPLAB® é usado no modo ICD2.
MPLABMPLAB®® ICD2ICD24Envio do programa para o kit didático
14824/02/2015
• O manual do kit didático informa paradesabilitar esta opção.
• Se outro equipamento for usado, épreciso ler o manual correspondente.
MPLABMPLAB®® ICD2ICD24Resumo das configurações
14924/02/2015
MPLABMPLAB®® ICD2ICD24Configurando a porta serial
• O manual do kit didático informapara usar esta configuração.
15024/02/2015
24/02/2015
26
MPLABMPLAB®® ICD2ICD24Outras configurações
15124/02/2015
MPLABMPLAB®® ICD2ICD24Outras configurações
15224/02/2015
MPLABMPLAB®® ICD2ICD24Outras configurações
15324/02/2015
MPLABMPLAB®® ICD2ICD24Outras configurações
15424/02/2015
MPLABMPLAB®® ICD2ICD24Program Memory range
• A faixa de posições da program memoryé determinada automaticamente naocasião da montagem do programa.
15524/02/2015
• Sendo uma memória de gravação lenta,esta determinação automática reduz otempo de gravação.
MPLABMPLAB®® ICD2ICD24MPLAB® ICD 2 Toolbar
Comandos desabilitados
Comandos desabilitados
15624/02/2015
24/02/2015
27
MPLABMPLAB®® ICD2ICD24Conexão
15724/02/2015
MPLABMPLAB®® ICD2ICD24Conexão – falha 1
15824/02/2015
Possíveis explicações:
• Kit desligado.
• Kit desconectado.
• Defeito de natureza elétrica.
MPLABMPLAB®® ICD2ICD24Conexão – falha 2
15924/02/2015
• Erro na configuração do CH7.
• Colocar as quatro chaves para baixo.
MPLABMPLAB®® ICD2ICD24Conexão – sucesso
Comandos habilitados
16024/02/2015
ChipMPLAB®
Código em branco
MPLABMPLAB®® ICD2ICD24Comandos
Verifica se está apagado
16124/02/2015
Apaga o chip
MPLABMPLAB®® ICD2ICD24Apagando o chip
• As memórias não voláteis são apagadas.
• A definição de memória apagada emprega lógica negativa.
• Os valores para memória apagada são:• Flash: 3FFFh
16224/02/2015
• EEPROM: FFh
• Na verificação, ao encontrar o primeiro erro, o verificadorindica a localização do erro, o valor esperado, e o valorencontrado.
24/02/2015
28
MPLABMPLAB®® ICD2ICD24Comandos
Verifica a memória
16324/02/2015
Lê o chip
Lê a EEPROM
MPLABMPLAB®® ICD2ICD24Verificando a memória
• Após a gravação da memória, convém realizar umaverificação, para confirmar se o código foi gravadocorretamente.
• Ao encontrar o primeiro erro, o verificador indica a
16424/02/2015
localização do erro, o valor esperado, e o valor encontrado.
MPLABMPLAB®® ICD2ICD24Comandos
Grava o chip
16524/02/2015
Grava o chip
MPLABMPLAB®® ICD2ICD24Gravação
• Somente a flash é gravada.
• A EEPROM não é gravada.
16624/02/2015
g
• A EEPROM pode ser lida no ICD2.
• A EEPROM é feita para ser escritasomente durante a execução do programa.
MPLABMPLAB®® ICD2ICD24Comandos do ICD2 programmer
16724/02/2015
MPLABMPLAB®® ICD2ICD24Comandos do ICD2 debugger
16824/02/2015
24/02/2015
29
MPLABMPLAB®® ICD2ICD24
Após
• Apagar o chip e
• Ler o chip,
Limpeza e verificação
16924/02/2015
a program memory é:
Também é bom verificar se ochip está mesmo em branco.
MPLABMPLAB®® ICD2ICD24Montagem
17024/02/2015
• Antes da gravação, é preciso executar o comando make.
• Este programa preenche o campo program memory doMPLAB® com o código montado.
• Sempre que o MPLAB® considerar que o códigoassembler não corresponde ao código montado,localizado na program memory do MPLAB®, haverásolicitação para que se execute a montagem.
MPLABMPLAB®® ICD2ICD24
• Na verificação, antes de lero chip, é recomendadofazer um fill memory.
• Isto garante que ainformação e ibida eio do
Gravação e verificação
17124/02/2015
informação exibida veio dochip e não do MPLAB®.
• Também é bom verificar seo chip não está em branco.
MPLABMPLAB®® ICD2ICD24
Após:
• Gravar o chip.
• Ler o chip.
Gravação e verificação
17224/02/2015
A program memory é:
Este programa veio do chip.
MPLABMPLAB®® ICD2ICD24Reiniciando a execução
17324/02/2015
MPLABMPLAB®® ICD2ICD24Gravando o chip – comando program
17424/02/2015
24/02/2015
30
MPLABMPLAB®® ICD2ICD24Executanto passo a passo (step into)
RESET
17524/02/2015
MPLABMPLAB®® ICD2ICD24Supervisionando a execução passo a passo
17624/02/2015
MPLABMPLAB®® ICD2ICD24Adicionando os registradores usados
17724/02/2015
MPLABMPLAB®® ICD2ICD24Verificando alteração nos registros
17824/02/2015
MPLABMPLAB®® ICD2ICD24Mensagens de erro
• Houve tentativa de rodar o programa (comando “RUN”) sendoque o MPLAB® suspeita que houve alguma alteração noprojeto após a última montagem.
• Se o usuário tem certeza de esta alteração não interferirá nocódigo montado, pode pressionar o botão “NO”.
S ã h t t é l i “YES” i t
17924/02/2015
• Se não houver esta certeza, convém selecionar “YES”, istorealizará uma nova montagem (comando “MAKE”).
MPLABMPLAB®® ICD2ICD24Mensagens de erro
• Houve tentativa de rodar o programa (comando “RUN”) sendoque o MPLAB® suspeita que a program memory do MPLAB®
seja diferente da program memory do chip.
• Se o usuário tem certeza de que não há alterações, podepressionar o botão “OK”.
S ã h t t é l ã d
18024/02/2015
• Se não houver esta certeza, convém cancelar a execução doprograma e fazer uma compilação (comando “MAKE”).
24/02/2015
31
MPLABMPLAB®® ICD2ICD24Mensagens de erro
• Houve uma tentativa de executar um código montado emum outro ambiente, como, por exemplo, o MPLAB® SIM.
• Eventualmente, diferenças poderão existir.
• Por segurança, compensa montar novamente o programa.
18124/02/2015
MPLABMPLAB®® ICD2ICD24Etapas do projeto
MontagemMakeBuild
GravaçãoProgram Execução
Run
ICD2
18224/02/2015
Criação do código “.asm”
Geração do código montado
Gravação do chip
Execução do código no chip
Execução do código no MPLAB®
ExecuçãoRun
MPLAB® SIM
MPLABMPLAB®® ICD2ICD24Gravação manual
• É possível programar e gravar o chip sem o uso dalinguagem MPASM™ ou de assembler puro.
• Também é possível gravar o chip sem a necessidade deexecutar o programa pelo ICD 2.
• Não é necessário criar um projeto “MCW”.
18324/02/2015
• O programa é digitado diretamente na Program Memorydo MPLAB®.
• Pode-se digitar os valores de opcode ou de disassembly.
• Se houver algum projeto aberto, deve-se fechá-lo, paraque outros arquivos não sejam incluídos (menu“project””, opção “close”).
• Não há verificação de erros.
MPLABMPLAB®® ICD2ICD24Gravação manual
Programação pelo opcode
18424/02/2015
Programação pelo disassembly
Não há MCW nem MCP.
MPLABMPLAB®® ICD2ICD24Gravação manual
• Antigamente, os primeiros programas de gravação deMCU’s permitiam, apenas, a gravação manual.
• O arquivo com o programa era feito com um editor de textos.
• O nome do arquivo texto era usado como argumento.
18524/02/2015
• O programa gravador era chamado na linha de comando.• Exemplo: C:\micro\gravador.exe /luzinhas.txt
• “gravador.exe” é o programa gravador do chip.
• “luzinhas.txt” é o programa a ser gravado no chip.
MPLABMPLAB®® ICD2ICD24Gravação manual
• As primeiras versões usavam, apenas, os opcodes.
• Os usuários deveriam ser capazes de obter, manualmente, osopcodes para cada instrução juntamente com os operandos.
• Versões posteriores aceitavam arquivos com códigoassembler e faziam a conversão para os opcodes
18624/02/2015
assembler e faziam a conversão para os opcodes.
• Mais tarde, vieram versões que faziam uma limitada buscapor erros.
• Por fim, vieram programas que permitiam ao usuário executaro programa no computador ou no chip, na busca por erros.