AULA4 –
Introdução a Microcontrolador
Disciplina: Aplicações Avançadas de
Microprocessadores (AAM)
Profa. Ana T. Y. Watanabe
[email protected]
“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
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
Gerador de Clock – MCG (MultiPurpose 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.
Gerador de Clock – MCG (Multi-Purpose Clock Generator)
•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
•Gerador de Clock – MCG (Multi-Purpose Clock Generator)
•Modos de Operação:
•Gerador de Clock – MCG (Multi-Purpose Clock Generator)
•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;
MAPA DE MEMÓRIA DO JM60
REGISTRADOR SOPT1: DESABILITA COP
EXERCÍCIO PRÁTICO:
Escrever em linguagem assembly um programa
que faz acender todos os leds alternadamente da placa do
JM60.
•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
•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
•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
•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
•Código em Assembly
JSR TIMER
BSET 2,PTED
BCLR 3,PTED
JSR TIMER
BSET 3,PTED
BCLR 0,PTFD
JSR TIMER
BSET 0,PTFD
BCLR 1,PTFD
JSR TIMER
BSET 1,PTFD
BCLR 2,PTCD
JSR TIMER
BSET 2,PTCD
BCLR 4,PTCD
JSR TIMER
BSET 4,PTCD
BCLR 5,PTFD
JSR TIMER
BSET 5,PTFD
BCLR 2,PTDD
JSR TIMER
BSET 2,PTDD
BRA
; TIMER
; APAGA LED1
; ACENDE LED2
; TIMER
; APAGA LED2
; ACENDE LED3
; TIMER
; APAGA LED3
; ACENDE LED4
; TIMER
; APAGA LED4
; ACENDE LED5
; TIMER
; APAGA LED5
; ACENDE LED6
; TIMER
; APAGA LED6
; ACENDE LED7
; TIMER
; APAGA LED7
; ACENDE LED8
; TIMER
; APAGA LED8
mainLoop
•Código em Assembly
TIMER:
LDHX #$FFFF
STHX TEMPO1 ; ARMAZENA EM TEMPO1 => #$FFFF
LDHX #0010
STHX TEMPO2 ; ARMAZENA EM TEMPO2 => #0010
LDHX #$0000 ; CARREGA HX COM 0
LOOP1:
AIX #$01
; INCREMENTA HX COM 1
CPHX TEMPO1 ; VERIFICA SE CHEGOU EM TEMPO1
BEQ FIM
PSHH
; GUARDA H NA PILHA
PSHX
; GUARDA L NA PILHA
LDHX #$0000 ; CARREGA HX COM 0
LOOP2:
AIX #$01
; INCREMENTA HX COM 1
CPHX TEMPO2 ; VERIFICA SE CHEGOU EM TEMPO1
BNE LOOP2
PULX
PULH
JMP LOOP1
FIM:
RTS
•Código em Assembly
;************************************************
**************
;*
Interrupt Vectors
*
;************************************************
**************
ORG $FFFE
DC.W Inicio
; Reset
Download

aula4___2013_2