Você está na página 1de 3

Combinação de LEDs RBG

Elton Lins Veiga, Gustavo da Silva Cometti

Engenharia da Computação – Unifesspa


Marabá – PA
Brasil

Resumo — Neste projeto, foi desenvolvido um código em LEDs, desenvolver código de montagem em MPLAB X IDE e
assembly através do software MPLAB X IDE e simulado no testar em simuladores.
software SimulIDE. A função deste código é acender um LED
RGB de três cores, e através de botões, combinar essas cores
para obter outras, tendo a utilização do TIMER0.

Palavras-chaves — Código, RGB, LED, TIMER0 III. RESULTADOS OBTIDOS


O programa da imagem Código está em linguagem de
montagem para um microcontrolador PIC16F628A. Ele
I. INTRODUÇÃO configura o microcontrolador, define algumas constantes e
O objetivo deste experimento é projetar e registradores, e implementa um loop principal que verifica
implementar um circuito que controle o acionamento de um se um botão está pressionado. Se o botão estiver
LED RGB usando três microcontroladores PIC. O circuito pressionado, o Pino é ativado e uma interrupção do
deve ser capaz de ligar e combinar todas as cores do LED ao TIMER0 é habilitada. O programa também possui uma
mesmo tempo. O objetivo principal é demonstrar como os rotina de interrupção que é executada quando ocorre um
microcontroladores tem a capacidade de controlar e manipular overflow no TIMER0. Essa rotina decrementa contadores e
programaticamente dispositivos externos, como LEDs. desativa o Pino de acordo com as condições estabelecidas.
O programa continua repetindo esse ciclo até que o botão
não esteja mais pressionado. A função dele utilizando três
II. METODOLOGIA Pic é mostrar as 8 combinações de cores do vermelho, azul
e verde na escala RGB. Segue abaixo o código utilizado.
Neste experimento, um circuito é projetado no simulador
SimulIde para controlar o acionamento de um LED RGB
usando três microcontroladores PIC. Cada microcontrolador é
programado para ligar uma das cores do LED com o objetivo ;Atividade Avaliativa de Mic Mic
de combina-las, caso ligue mais de uma ao mesmo tempo. ;Conbinação de LEDs RGB
Adicionalmente, foi desenvolvido código assembly no ;PIC16F628A
software MPLAB X IDE para configurar as portas digitais,
implementar a lógica de controle do LEDs e utilizar os recursos list p=16F628A ;Utilizado PIC16F628A
dos microcontroladores. O circuito é simulado no SimulIde e #include <p16F628a.inc> ;inclui o arquivo do PIC
testado para verificar se o LED dispara corretamente com base 16F628A
no sinal de entrada. O código assembly é compilado em
MPLAB X IDE e carregado no microcontrolador PIC para __config _XT_OSC & _WDT_OFF & _PWRTE_ON &
testes práticos. _BOREN_OFF & _LVP_OFF & _CP_OFF & _CPD_OFF &
A combinação do SimulIDE com o MPLAB X IDE fornece _MCLRE_ON
um ambiente completo para desenvolver e testar circuitos
usando microcontroladores PIC. Este laboratório prático não ; Paginação de Memória
apenas o familiarizará com as ferramentas comumente usadas
na indústria de sistemas embarcados, mas também o ajudará a #define bank0 bcf STATUS,RP0
entender os conceitos de programação de microcontroladores, #define bank1 bsf STATUS,RP0
usando portas digitais e linguagem de montagem.
Assim, o laboratório envolveu projetar circuitos em
; Mapeamento de Hardware
SimulIDE, programar um microcontrolador PIC para controlar
#define Pino1 PORTA,2 ;Pino1 ligado ao pino RA2
#define Botão PORTB,0 ;Botão ligado ao pino RB0 exit:
swapf STATUS_TEMP,W ;Copia em Work o conteúdo de
;Registradores de Uso Geral STATUS_TEMP ;com os nibbles invertidos
cblock H'20' ;Início da memória disponível para o usuário
movwf STATUS ;Recupera o conteúdo de STATUS
W_TEMP ;Registrador para armazenar o conteúdo temporário
de ;work swapf W_TEMP,F ;W_TEMP = W_TEMP com os nibbles
invertidos
STATUS_TEMP ;Registrador para armazenar o conteúdo
temporário de ;STATUS swapf W_TEMP,W ;Recupera o conteúdo de Work
retfie ;Retorna da interrupção
Contador ;Registrador usado na contagem
inicio:
endc ;Final da memória do usuário
bank1 ;Seleciona o banco 1 de memória
; Vetor de RESET movlw H'06' ;w = 06h
org H'0000' ;Origem no endereço 00h de memória movwf OPTION_REG ;CONFIGURA OPTION_REG...
goto inicio ;Desvia para o início movlw H'F3' ;w = F3h
; Vetor de Interrupção movwf TRISA ;Configura saída para os LEDs em RA3 e RA2
org H'0004' ;As interrupções deste processador apontam para bank0 ;Seleciona o banco 0 de memória
este endereço movlw H'07' ;w = 7h
movwf CMCON ;CMCON = 7h desabilita os comparadores
; Salva rotina internos
movwf W_TEMP ;Copia o conteúdo de Work para W_TEMP
movlw H'80' ;w = 80h
swapf STATUS,W ;Move o conteúdo de STATUS com os
nibbles invertidos ;para Work movwf INTCON ;CONFIGURA INTCON... ;-> Habilita
Interrupção Global
bank0 ;Seleciona o banco 0 de memória (padrão do RESET)
movwf STATUS_TEMP ;Copia o conteúdo de STATUS com ; Interrupção do Timer0 inicia desligada
os ;nibbles invertidos para STATUS_TEMP movlw D'0' ;move a literal 0d para work
movwf TMR0 ;inicializa TMR0 em 10d. Timer0 = 256 - 10 =
; Final do Salvamento da Rotina 246
btfss INTCON,T0IF ;Ocorreu um overflow no Timer0? movlw D'128' ;move a literal 128d para work
goto exit ;Não, desvia para saída da interrupção movwf Contador ;inicializa Contador em 18d
bcf INTCON,T0IF ;Sim, limpa a flag bcf Pino1 ;desliga Pino1
movlw D'10' ;Sim, move a literal 10d para work loop:
movwf TMR0 ;reinicializa TMR0 em 10d. Timer0 = 256 - 10 = btfss Botão ;Botão pressionado?
246
goto timerOn ;Sim, desvia para timerOn
decfsz Contador,F ;Decrementa Contador. Chegou em zero? goto loop ;Não, continua testando botão
goto exit ;Não, desvia para saída da interrupção timerOn:
movlw D'128' ;move a literal 128d para work bsf Pino1 ;Liga Pino1
movwf Contador ;reinicializa counter 1 em 18d bsf INTCON,T0IE ; Habilita interrupção do Timer0
bcf Pino1 ;desliga Pino1 goto loop ; Desvia de volta para loop
bcf INTCON,T0IE ;desabilita interrupção do Timer0 end
;bsf LED2

; Recupera a Rotina (Saída da Interrupção)


Pode se ver o circuito simulado no qual o código é
executado na imagem abaixo. (Figura 1)
IV. CONCLUSÃO
Figura 1: Circuito do código
Neste experimento, o código assembly desenvolvido em
MPLAB X IDE permitiu a correta conexão do LED RGB em
um circuito simulado em SimulIDE. O resultado é satisfatório,
cada cor do RGB é ligada por um tempo quando o botão
atribuído a ela é pressionado, e pressionando mais de um botão,
é possível combina-las, dando ao RGB a capacidade de
fornecer até oito cores diferentes. O código provou ser
eficiente, bem estruturado e as instruções precisas. O circuito
de simulação atende aos requisitos, permitindo o fluxo de
corrente suficiente para acender o LED. Os softwares
utilizados, MPLAB X IDE e SimulIDE, mostraram-se
eficientes e confiáveis. Os laboratórios fornecem aprendizado
em programação de montagem, simulação de circuito e
integração de hardware e software. Ao todo, a experiência
atingiu seus objetivos, aprimorou o conhecimento e serviu de
base para futuros projetos na região.

REFERÊNCIAS
Foi usado de referência as aulas do professor e o material
fornecido por ele.
Fonte: Arquivos Pessoais Softwares: MPLAB X IDE, SimulIDE

Você também pode gostar