120 likes | 228 Vues
Desenvolvendo o Sistema Parte 1. Ivan Saraiva Silva Sistemas de Tempo Real Embutidos. Programação Assembler. Diretivas. Pseudo-instruções do assembler Instruções para o assembler não para a CPU BASE: Seleciona base de operação numérica BASE 10 DC: Define constantes na memória
E N D
Desenvolvendo o SistemaParte 1 Ivan Saraiva Silva Sistemas de Tempo Real Embutidos
Diretivas • Pseudo-instruções do assembler • Instruções para o assembler não para a CPU • BASE: Seleciona base de operação numérica • BASE 10 • DC: Define constantes na memória • [<label>:] DC [.<tamanho>] <expressão> [,<expressão>] • <tamanho> = B, W, L • Disciplina: DC.B “Sistemas Embutidos”
Diretivas • DCB: Aloca bloco de tamanho <tamanho>*<quantidade>, iniciado com <valor> • [<label>:] DCB [.<tamanho>] <quantidade>, <valor> • <tamanho> = B, W, L • DCB.W 3 $FFFE • (três palavras iniciadas com $FFFE)
Diretivas • DS: Reserva memória não iniciada • [<label>:] DS [.<tamanho>] <quantidade> • Contador DS.B 2 • Dois bytes para Contador • Sinônimos • RMB = DS.B • RMD = 2DS.B = DS.W • RMQ = 4DS.B = 2DS.W = DS.L • END: Fim do código fonte
Diretivas • EQU: Aloca valor permanente a um símbolo • <label>: EQU <expressão> • RAM: EQU $0040 • PORTA: EQU $0000 • PORTB: EQU $0001 • INCLUDE: Insere arquivo • INCLUDE “nome do arquivo” • INCLUDE “M68HC908QT/QY.INC” • Definições do micro-controlador
Diretivas • ORG: Marca origem de seção • ORG <expressão> • ORG $F800 • Endereço inicial da FLASH no M68HC908QT1 • SECTION: Define seção realocável e inicia contador para o código • SECTION [SHORT] [<número>] • SECTIONDS.W 6 • 6 palavras (12 bytes)
Código Objeto • Formato S19 • Cada linha é um registro e contem: • Tipo: S0 (cabeçalho), S1 (dados), S9 (fim de arquivo) • Comprimento: dois caracteres ASCII indicando o número de bytes restantes no registro • Endereço: 4 caracteres ASCII com o endereço para armazenamento dos dados do registro
Código Objeto • Dados: Pares de caracteres com códigos de máquina • Checksum: dois caracteres ASCII representando a soma em complemento de um de todos os bytes do registro (exceto tipo e checksum)
Código Objeto - Exemplo S0200000433A5C50726F6A65746F73 ... BE S123F800450100948C9A5FA600B71E...E7 S11EF820F82F4A26FA1300B600A404...8C S105FFFEF80005 S9030000FC
Inicio: LDA #00001000B STA CONFIG2 LDA #00011001B STA CONFIG1 LDA #$FF STA PORTA LDA #$02 STA DDRA BSET 1,PORTA volta: LDA PORTA AND #$04 BNE VOLTA BCLR 1,PORTA JSR Dly_1s BSET 1,PORTA fica: LDA PORTA AND #$04 BEQ FICA BRA VOLTA Aplicação LED “Piscante”
Dly_1s: LDA #20 Loop0: LDHX #t50ms Loop1 AIX #-1 CPHX #0 BNE Loop1 DECA BNE Loop0 RTS Sub-rotina Dly-1s 2 3 2 t50ms 3 x20 3 1 3 4