GoGo Board: Assembler – V

Antes da rotina chamada INICIO, deveremos inserir estes códigos:

;DISPARA ALARME
LIGA
MOVLW .1
MOVWF PORTC
BSF PORTC,2
GOTO MAIN

;DESLIGA ALARME
DESLIGA
MOVLW .0
MOVWF PORTC
BCF PORTC,2
GOTO MAIN

Serão responsáveis por ligar e desligar o alarme quando houver o acionamento do botão.

O código completo poderá ser visualizado aqui.

GoGo Board: Assembler – IV

Agora construiremos a rotina principal, MAIN. Seu código, neste exemplo, será assim:

;PROGRAMA PRINCIPAL
MAIN
;CLEAR PORTB
CLRF PORTB
;TESTA BITS
BTFSS PORTD,1 ; VERIFICA BIT 1 DA PORTA D
CALL DESLIGA ; DESVIO NAO
BTFSC PORTD,1 ; VERIFICA BIT 1 DA PORTA D
CALL LIGA ; DESVIO SIM
END

O objetivo deste código será a simulação de um alarme, assim, caso o botão ligado ao pino D1 do microcontrolador seja acionado, o buzzer (bip) ligado ao pino C2 do microcontrolador será acionado, disparando o alarme.

Como pode ser visto, este código utiliza sub-rotinas (LIGA/DESLIGA), assim elas deverão ser criadas, conforme os passos a seguir.

GoGo Board: Assembler – II

Após instalado o MPLAB, um novo projeto deverá ser criado, conforme este tutorial e o microcontrolador selecionado deverá ser o PIC18F4550.

Iniciamos o código assim:

#INCLUDE <p18f4550.inc>

;INÍCIO
ORG 0x1840
GOTO INICIO
;ÁREA PARA INTERRUPÇÕES
ORG 0x1848
RETFIE
;DECLARAR VARIÁVEIS
CBLOCK 0x0c
ENDC

Definimos o microcontrolador, os endereços de início do código, da interrupção e variáveis utilizadas, neste caso, valores utilizados para a GoGo Real.

A seguir, deveremos configurar os pinos de I/O.

GoGo Board: Assembler – III

Para configurarmos os pinos, deveremos utilizar:

INICIO
;CONFIGURAR PORTAS
MOVLW B'00000011'
MOVWF TRISB
MOVLW B'00101111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'00000010'
MOVWF TRISD
MOVLW B'00000111'
MOVWF TRISE
MOVLW B'00000000'
MOVWF INTCON

Este código ficará antes da rotina principal (MAIN), a qual será construída a seguir.

GoGo Board: Assembler

Já demonstramos várias formas de programar ou interagir com a plataforma, no entanto, este tipo de programação baseada em assembler, acabou ficando esquecido.

Da mesma forma que realizamos a construção de um firmware, utilizando a linguagem C, para os diversos compiladores, poderemos utilizar, por exemplo o MPLAB para escrever nosso código diretamente em assembler e gerar o firmware desejado.

As vantagens não poderão ser notadas e projetos de pequeno porte, porém em projetos mais complexos, o algorítimo tenderá a ficar mais adequado ao hardware e aplicação desenvolvida, será possível uma melhor intimidade com o microcontrolador e explorar melhor suas funcionalidades, o que, em determinados compiladores C poderá passar despercebido pelo usuário.