A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

AULA4 – Introdução a Microcontrolador

Apresentações semelhantes


Apresentação em tema: "AULA4 – Introdução a Microcontrolador"— Transcrição da apresentação:

1 AULA4 – Introdução a Microcontrolador
Disciplina: Aplicações Avançadas de Microprocessadores (AAM) Profa. Ana T. Y. Watanabe

2 “Bem-aventurado aquele que lê, e os que ouvem as palavras desta profecia, e guardam as coisas que nela estão escritas; porque o tempo está próximo.” Apocalipse 1:3

3 Tópicos da aula: Gerador de Clock – MCG (Multi-Purpose Clock Generator) Mapa de Memória do JM60 Registrador SOPT1 Código em Assembly Exercício prático

4 Gerador de Clock – MCG (Multi-Purpose Clock Generator)
O módulo gerador de Clock (MCG) fornece várias opções de fonte de clock para o MCU; O módulo pode ser selecionado por filtro de sincronização por freqüência-locked loop (FLL) ou por phase-locked loop (PLL); Também pode ser selecionado por referência interna ou externa (XOSC) com cristal; Qualquer que seja a fonte de clock escolhido, ele é passado através de um divisor de bus reduzida que permite uma menor freqüência de clock de saída.

5 Gerador de Clock – MCG (Multi-Purpose Clock Generator)

6 Gerador de Clock – MCG (Multi-Purpose Clock Generator)
Existem 9 modos de operação do MCG: • FLL Engaged Internal (FEI) • FLL Engaged External (FEE) • FLL Bypassed Internal (FBI) • FLL Bypassed External (FBE) • PLL Engaged External (PEE) • PLL Bypassed External (PBE) • Bypassed Low Power Internal (BLPI) • Bypassed Low Power External (BLPE) • Stop

7 Gerador de Clock – MCG (Multi-Purpose Clock Generator)
Modos de Operação:

8 Gerador de Clock – MCG (Multi-Purpose Clock Generator)

9 Após o reset o MCG vai para o modo FEI; Typical fMCGOUT = 16 MHz;
Gerador de Clock – MCG (Multi-Purpose Clock Generator) Após o reset o MCG vai para o modo FEI; Typical fMCGOUT = 16 MHz; BUSCLK = fMCGOUT /2 = 8 MHz;

10 MAPA DE MEMÓRIA DO JM60

11 REGISTRADOR SOPT1: DESABILITA COP

12 EXERCÍCIO PRÁTICO: Escrever em linguagem assembly um programa que faz acender todos os leds alternadamente da placa do JM60.

13 Código em Assembly ; Include derivative-specific definitions
INCLUDE 'derivative.inc‘ ; variable/data section ; ORG RAMStart ; Insert your data definition here TEMPO1: DS.B 2 TEMPO2: DS.B 2 ; code section ORG ROMStart Inicio: ; Desabilita o COP lda SOPT1 and #63 sta SOPT1

14 Código em Assembly mainLoop: ; PISCA OS LEDS DA PLACA DEMOJM
; PTE2 => LED1 ; PTE3 => LED2 ; PTF0 => LED3 ; PTF1 => LED4 ; PTC2 => LED5 ; PTC4 => LED6 ; PTF5 => LED7 ; PTD2 => LED8 BCLR 2,PTED ; ACENDE LED1 BSET 2,PTEDD ; DIREÇÃO DE PTE2 => SAIDA BSET 3,PTED ; APAGA LED2 BSET 3,PTEDD ; DIREÇÃO DE PTE3 => SAIDA BSET 0,PTFD ; APAGA LED3 BSET 0,PTFDD ; DIREÇÃO DE

15 Código em Assembly mainLoop: ; PISCA OS LEDS DA PLACA DEMOJM
; PTE2 => LED1 ; PTE3 => LED2 ; PTF0 => LED3 ; PTF1 => LED4 ; PTC2 => LED5 ; PTC4 => LED6 ; PTF5 => LED7 ; PTD2 => LED8 BCLR 2,PTED ; ACENDE LED1 BSET 2,PTEDD ; DIREÇÃO DE PTE2 => SAIDA BSET 3,PTED ; APAGA LED2 BSET 3,PTEDD ; DIREÇÃO DE PTE3 => SAIDA BSET 0,PTFD ; APAGA LED3 BSET 0,PTFDD ; DIREÇÃO DE PTF0 => SAIDA

16 Código em Assembly BSET 1,PTFD ; APAGA LED4
BSET 1,PTFDD ; DIREÇÃO DE PTF1 => SAIDA BSET 2,PTCD ; APAGA LED5 BSET 2,PTCDD ; DIREÇÃO DE PTC2 => SAIDA BSET 4,PTCD ; APAGA LED6 BSET 4,PTCDD ; DIREÇÃO DE PTC4 => SAIDA BSET 5,PTFD ; APAGA LED7 BSET 5,PTFDD ; DIREÇÃO DE PTF5 => SAIDA BSET 2,PTDD ; APAGA LED8 BSET 2,PTDDD ; DIREÇÃO DE PTD2 => SAIDA

17 Código em Assembly JSR TIMER ; TIMER BSET 2,PTED ; APAGA LED1
BCLR 3,PTED ; ACENDE LED2 BSET 3,PTED ; APAGA LED2 BCLR 0,PTFD ; ACENDE LED3 BSET 0,PTFD ; APAGA LED3 BCLR 1,PTFD ; ACENDE LED4 BSET 1,PTFD ; APAGA LED4 BCLR 2,PTCD ; ACENDE LED5 BSET 2,PTCD ; APAGA LED5 BCLR 4,PTCD ; ACENDE LED6 BSET 4,PTCD ; APAGA LED6 BCLR 5,PTFD ; ACENDE LED7 BSET 5,PTFD ; APAGA LED7 BCLR 2,PTDD ; ACENDE LED8 BSET 2,PTDD ; APAGA LED8 BRA mainLoop

18 Código em Assembly TIMER: LDHX #$FFFF
STHX TEMPO1 ; ARMAZENA EM TEMPO1 => #$FFFF LDHX #0010 STHX TEMPO2 ; ARMAZENA EM TEMPO2 => #0010 LDHX #$ ; CARREGA HX COM 0 LOOP1: AIX #$ ; INCREMENTA HX COM 1 CPHX TEMPO1 ; VERIFICA SE CHEGOU EM TEMPO1 BEQ FIM PSHH ; GUARDA H NA PILHA PSHX ; GUARDA L NA PILHA LOOP2: AIX #$ ; INCREMENTA HX COM 1 CPHX TEMPO2 ; VERIFICA SE CHEGOU EM TEMPO1 BNE LOOP2 PULX PULH JMP LOOP1 FIM: RTS

19 Código em Assembly ;************************************************************** ;* Interrupt Vectors * ORG $FFFE DC.W Inicio ; Reset


Carregar ppt "AULA4 – Introdução a Microcontrolador"

Apresentações semelhantes


Anúncios Google