Curso Básico – Microcontrolador PIC – Parte 2

Este post faz parte da série Curso Básico - Microcontrolador PIC

Reduced Instruction Set Code – RISC

Descrição e funcionamento

Opcode do PIC
Formato de Instruções do PIC

As 35 instruções

Instruções RISC do PIC

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
Stack do PIC

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.

Esquema elétrico com PIC

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

IC PROG
IC PROG - Hardware settings

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:

  1. 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.

  2. 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.

  3. Deve ser incrementado apenas um número por pressionamento de botão (cuidado com o debouncing!)

  4. 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

PIC na IoT com ESP8266 e ThingSpeak

Microchip – Microcontroladores PIC de 8 bits

Curso Básico - Microcontrolador PIC

Curso Básico – Microcontrolador PIC – Parte 1 Curso Básico – Microcontrolador PIC – Parte 3
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Allan Oliveira de Moura
Allan Oliveira de Moura
14/04/2018 16:43

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.

Home » Hardware » Sistemas Digitais » Curso Básico – Microcontrolador PIC – Parte 2

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: