Reduced Instruction Set Code – RISC
Descrição e funcionamento
As 35 instruções
MPLAB
-
Como é feita a criação de projetos no MPLAB
-
Como editar arquivos de programa assembly (.ASM)
-
A importância do uso de comentários durante a programação
-
Estrutura de um programa .ASM
-
Vetores de Reset e de interrupção
-
Ajuste de fusíveis de gravação
-
Diretivas do MPLAB
-
Chaveamento entre os bancos de memória
-
O que é o arquivo include
Como estruturar um programa para PIC?
;******************************************************************* ;* CABEÇALHO - NOME DO ARQUIVO - NÚMERO DO EXERCÍCIO * ;******************************************************************* ;*********************ARQUIVO DE INCLUDE**************************** #INCLUDE <P16F628A.INC> ;ARQUIVO PADRÃO MICROCHIP PARA 16F628A ;****************CONFIGURATION BITS (FUSÍVEIS)********************** __CONFIG _BOREN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _HS_OSC ;******PAGINAÇÃO AUTOMÁTICA DE MEMÓRIA RAM - BANCOS DE MEMÓRIA****** ;DEFINIÇÃO DE COMANDOS DE USUÁRIO PARA ALTERAÇÃO DA PÁGINA DE MEMÓRIA #DEFINE BANCO0 BCF STATUS,RP0 ;SETA BANK 0 DE MEMÓRIA #DEFINE BANCO1 BSF STATUS,RP0 ;SETA BANK 1 DE MEMÓRIA ;*****************VARIÁVEIS DENTRO DA MEMÓRIA RAM******************* ; DEFINIÇÃO DOS NOMES E ENDEREÇOS DE TODAS AS VARIÁVEIS UTILIZADAS ; PELO SISTEMA ;*************************FLAGS INTERNOS**************************** ;DEFINIÇÃO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA CRIADOS PELO USER ;**************************CONSTANTES******************************* ;DEFINIÇÃO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA ;****************************ENTRADAS******************************* ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;****************************SAÍDAS********************************* ; DEFINIÇÃO DE TODOS OS PINOS QUE SERÃO UTILIZADOS COMO SAÍDA ; RECOMENDAMOS TAMBÉM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;*************************VETOR DE RESET**************************** ORG 0x0000 ;ENDEREÇO INICIAL DE PROCESSAMENTO. AO SER LIGADO O uC ;COMEÇARA A LER A MEMÓRIA DE PROGRAMA (FLASH MEMORY) ;A PARTIR DESTE ENDEREÇO. CALL CONFIGURA_uC ;É CHAMADA A SUBROTINA QUE FARÁ TODA A ;CONFIGURAÇÃO INICIAL DO uC: ; -> SETAR ENTRADAS E SAÍDAS ; -> LIGAR OU DESLIGAR INTERRUPÇÕES ; -> CONFIGURAR TIMERS ; -> AJUSTAR TODOS OS PERIFÉRICOS GOTO PROGRAMA ;SÓ APÓS TODA A CONFIGURAÇÃO É QUE O uC ;SERÁ DESVIADO PARA O PROGRAMA PROPRIAMENTE DITO ;*********************VETOR DE INTERRUPÇÃO************************** ; AS INTERRUPÇÕES NÃO SERÃO UTILIZADAS NESTE EXERCÍCIO, POR ISSO ; PODEMOS SUBSTITUIR TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO ; PELO APRESENTADO ABAIXO. ESTE SISTEMA NÃO É OBRIGATÓRIO, MAS ; PODE EVITAR PROBLEMAS FUTUROS. ORG 0x0004 ;ENDEREÇO INICIAL DE INTERRUPÇÃO. AO SER INTERROMPIDO ;O uC DESVIA O FLUXO DO PROGRAMA PARA ESTE ENDEREÇO ;DA MEMÓRIA DE PROGRAMA (FLASH MEMORY). O USUÁRIO DEVE ;ESCREVER UMA ROTINA QUE FAÇA O TRATAMENTO DA INT DE ;MODO ADEQUADO A PARTIR DESTE ENDEREÇO. ;*********************ENTRADA DA INTERRUPÇÃO************************ ;*******************TRATAMENTO DA INTERRUPÇÃO*********************** ;**********************SAÍDA DA INTERRUPÇÃO************************* RETFIE ;RETORNA DA INTERRUPÇÃO ;**************************SUBROTINAS******************************* ;/////////// ROTINA DE CONFIGURAÇÃO INICIAL DO MICROCONTROLADOR CONFIGURA_uC RETURN ; TERMINOU A ROTINA DE CONFIGURAÇÃO INICIAL. ; DEVE RETORNAR AO PROGRAMA PRINCIPAL ;/////////// ROTINA DE ATUALIZAÇÃO DE SAÍDA DE DADOS PORTB ATUALIZA ;ESCREVE AQUI OS COMANDOS DA SUA SUBROTINA DE ATUALIZAÇÃO RETURN ; TERMINOU A ROTINA DE ATUALIZAÇÃO DE SAÍDAS. ; DEVE RETORNAR AO PROGRAMA PRINCIPAL ;***********************PROGRAMA PRINCIPAL************************** ;É AQUI QUE DEVE SER ESCRITO O PROGRAMA PRINCIPAL. PROGRAMA ;TODO O DESENVOLVIMENTO DO PROGRAMA PRINCIPAL DEVE SER FEITO AQUI CALL ATUALIZA ;DURANTE O PROGRAMA PODEM EXISTIR SUB-ROTINAS GOTO PROGRAMA ;VOLTA PARA O INÍCIO DO PROGRAMA ;*************************FIM DO PROGRAMA*************************** ;OBRIGATÓRIO. AVISA AO MPLAB QUE ELE PODE PARAR A COMPILAÇÃO END ;OBRIGATÓRIO
EXERCÍCIO 1: 1 BOTÃO E 1 LED
Escreva um programa que faça a leitura do status de um botão. Caso ele esteja pressionado, deve acender um LED correspondente. Se o botão não estiver pressionado, o LED deve permanecer apagado.
Utilize toda a estruturação de programa mostrada no artigo.
Para resolver este exercício, é necessário conhecer o hardware onde será carregado o programa. Para isso, abaixo foi inserida uma cópia do esquema elétrico do kit didático do SENAI.
MPLAB – STIMULUS
-
O que é a ferramenta Stimulus
-
Como criar um Workbook
-
Sinais síncronos e assíncronos
-
Simulando as condições de funcionamento do KIT didático
EXERCÍCIO 2: 5 BOTÕES E 5 LEDs
Modifique o programa escrito no exercício 01 de modo que ele passe a fazer a leitura de todas as chaves que estão conectadas no PORTA. Caso qualquer botão esteja pressionado, o programa deve acender o LED correspondente no PORTB. Se o botão não estiver pressionado, o LED deve permanecer apagado.
Utilize toda a estruturação de programa mostrada nos artigos.
IC-Prog – Como gravar dados no KIT didático
-
Configurações e recursos do software
-
Carregamento de arquivos para o chip
EXERCÍCIO 3: Contador acionado por botões
No livro desbravando PIC, página 108, é sugerido no exemplo dois um contador binário simplificado e limitado entre dois valores (10 h e 30 h). Um único botão faz o contador subir e descer os valores dentro dos limites pré-estabelecidos. Você deve fazer um exercício mais simples, mas pode utilizar este exemplo do livro como referência.
O exercício a ser feito é o seguinte: ao pressionar um botão no PORTA, um contador binário deve ser incrementado e o resultado mostrado nos LEDs do PORTB. O funcionamento deve ser o seguinte:
-
Ao ligar o kit, enquanto nenhum botão for pressionado, os LEDs devem permanecer apagados. Após o primeiro pressionamento de botão, os valores mostrados no PORTB (LEDs) devem permanecer ativos.
-
Ao pressionar o botão pela primeira vez, os LEDs devem mostrar o número 1 em binário. A cada pressionamento do botão este valor deve ser incrementado em uma unidade (1, 2, 3, 4, ……,255). Quando chegar ao limite de 255, o próximo pressionamento deve mostrar novamente o zero e reiniciar a contagem.
-
Deve ser incrementado apenas um número por pressionamento de botão (cuidado com o debouncing!)
-
Se o usuário mantiver o botão pressionado, o incremento dos LEDs deverá acontecer apenas quando o botão for solto.
EXERCÍCIO 4: Contador UP-DOWN acionado por botões
Este novo contador deve ter exatamente as mesmas características dos itens a até d do exercício anterior (3), com uma diferença: no exercício anterior apenas um botão era habilitado e ele apenas fazia o incremento da contagem.
Agora deverão estar habilitados dois botões e quando um for pressionado, a contagem será incrementada. Quando o outro botão for pressionado, a contagem será decrementada.
No próximo artigo aprenderemos um pouco sobre tabela BCD e acesso à memória. Aguardem!
Saiba mais
Curso de C com microcontroladores MCF51QE128 e MC9S08QE128 – Parte 1













Ficou ótima a estrutura do programa.
E é essencial que todo exercício seja feito com organização, só assim fica tudo claro.
Imagina só se um projeto é feito sem estrutura rsrs, seria um caos fazer qualquer alteração depois.