Você está na página 1de 25

INSTITUTO SUPERIOR POLITÉCNICO METROPOLITANO DE

ANGOLA

CONTROLE DO LED PELO DISPLAY DE 7 SEGMENTOS


PARA DECREMENTAR VALORES E ACENDER O LED
LUANDA 2023/2024

CONTROLE DO LED PELO DISPLAY DE 7 SEGMENTOS PARA


DECREMENTAR VALORES E ACENDER O LED
LICENCIATURA EM CIÊNCIA DA COMPUTAÇÃO
CADEIRA DE ARQUITECTURA COMPUTADORES

Autores:
Gelson da Costa: Nº 20220346
Geraldo Fragoso: Nº 20220664
Izequiel Cardoso: Nº 20211021
Marcelino Lussala: Nº 20210643
Stelvio Sozinho: Nº 20210475
Anderson Mário Neto: Nº 20220495

DOCENTE:_________________________________
Engª Elsa Guiomar L.ivulo Salombuey
LUANDA 2023/2024
RELÓGIO DIGITAL COM DISPLAY DE 7 SEGMENTOS

RESUMO: Este trabalho abordou o desenvolvimento e simulação de um


contador regressivo em Assembly para o microcontrolador PIC16F628A, utilizando um
display de 7 segmentos cátodo comum. A escolha do ambiente de desenvolvimento foi
o MPLAB em conjunto com a simulação no Proteus. O projeto envolveu uma revisão
bibliográfica para estudo da linguagem Assembly, características do PIC16F628A e a
configuração do display de 7 segmentos. Foi adotado um cristal externo de 4MHz para
proporcionar uma fonte de clock mais precisa.
A implementação do código em Assembly explorou os timers do PIC16F628A,
com destaque para o Timer1, fundamental para a temporização do contador regressivo.
O projeto incluiu a contagem regressiva de 15 até zero em hexadecimal, proporcionando
uma demonstração visual através da iluminação do LED.
A simulação no Proteus permitiu validar o funcionamento do código, analisar o
desempenho e identificar possíveis melhorias. A escolha do cristal externo de 4MHz
proporcionou precisão na contagem regressiva, enquanto a utilização eficiente dos
timers contribuiu para a sincronização adequada entre os periféricos.
A conclusão destaca a importância do projeto no aprimoramento do
entendimento prático da programação Assembly, no domínio das características
específicas do PIC16F628A e na interação eficaz com periféricos. Este trabalho não
apenas cumpriu seus objetivos, mas também representa um ponto de partida para futuras
explorações e aplicações avançadas em sistemas embarcados.

Palavras-chave: contador regressivo, display de 7 segmentos, circuito eletrônico,


simulação Proteus, montagem prática.
INDICE DE FIGURAS

Figura 1 Diagrama de Pinos Do PIC16F628A..............................................................................10


Figura 2 Mapeamento de Memória do PIC16F628A..................................................................12
Figura 3 Diagrama de Bloco do Timer0......................................................................................15
Figura 4 Diagrama de Bloco do Timer1......................................................................................15
Figura 5 Ilustração do Cristal de 4Mhz......................................................................................16
Figura 6 Demostração do Circuito acabado de Ligar..................................................................17
Figura 7 Demostração do Circuito Funcionando e Acendendo o LED após Atingir 0 no Display 17

Sumário
INTRODUÇÃO...............................................................................................................................1
TEMA E PROBLEMA DE PESQUISA...................................................................................2
OBJECTIVOS............................................................................................................................3
OBJECTIVO GERAL..............................................................................................................3
OBJECTIVOS ESPECÍFICOS................................................................................................3
HIPÓTESES...............................................................................................................................5
JUSTIFICATIVA.......................................................................................................................6
METODOLOGIA......................................................................................................................7
DESENVOLVIMENTO............................................................................................................9
MATEIRAIS UTILIZADOS....................................................................................................9
FUNDAMENTAÇÃO TEÓRICA.........................................................................................10
PIC16F628A......................................................................................................................10
CRISTAL OSCILADOR 4MHZ.....................................................................................16
IMPLEMENTAÇÃO DO CIRCUITO...........................................................................17
CONCLUSÃO..........................................................................................................................19
REFERÊNCIAS.......................................................................................................................20
INTRODUÇÃO

No mundo da programação de microcontroladores, a linguagem Assembly


destaca-se como uma ferramenta poderosa para controle direto sobre o hardware. Neste
contexto, o PIC16F628A emerge como um microcontrolador versátil e amplamente
utilizado, oferecendo uma plataforma robusta para o desenvolvimento de aplicações
embarcadas. Este trabalho tem como objetivo explorar a programação em Assembly no
PIC16F628A, especificamente direcionada ao controle de um display de 7 segmsentos
cátodo comum.
A abordagem prática será a decrementação dos valores exibidos no display,
começando de 15 em hexadecimal até atingir zero.Para realizar essa tarefa, serão
utilizadas as ferramentas de desenvolvimento MPLAB e o ambiente de simulação
Proteus.
Ao longo deste trabalho, serão discutidos os conceitos fundamentais da
programação Assembly, as características distintivas do PIC16F628A, a configuração
do display de 7 segmentos cátodo comum e a integração destes elementos para criar
uma aplicação prática e didática. A simulação no Proteus será um componente
essencial, permitindo a visualização e depuração eficientes do código desenvolvido.
Este projeto visa não apenas demonstrar habilidades de programação em
Assembly, mas também proporcionar uma compreensão mais profunda do
funcionamento interno do microcontrolador e da interação com periféricos como o
display de 7 segmentos. Ao final, espera-se que o leitor tenha adquirido conhecimentos
práticos e teóricos valiosos para aplicações futuras em sistemas embarcados.

1
TEMA E PROBLEMA DE PESQUISA

No campo da programação de microcontroladores, a eficácia no controle de


hardware é uma preocupação constante. O PIC16F628A, um microcontrolador
amplamente utilizado, oferece uma plataforma propícia para a implementação de
aplicações embarcadas. No entanto, a programação eficiente em Assembly para
controlar dispositivos específicos, como um display de 7 segmentos cátodo comum,
apresenta desafios notáveis.

O problema central desta pesquisa reside na busca por uma abordagem prática e
eficaz para programar o PIC16F628A em Assembly, visando criar um contador
regressivo no display de 7 segmentos.

Dessa forma, a questão de pesquisa principal é: "Como desenvolver um código


eficiente em Assembly para o PIC16F628A, que controle um display de 7 segmentos
cátodo comum, realize uma contagem regressiva em hexadecimal de 15 até zero
utilizando as ferramentas MPLAB e Proteus?".

2
OBJECTIVOS

OBJECTIVO GERAL

Desenvolver e simular, utilizando a linguagem de programação Assembly, um contador


regressivo no microcontrolador PIC16F628A, controlando um display de 7 segmentos
cátodo comum. Este contador deverá iniciar em 15 (hexadecimal) e decrementar até
zero, para depois ligar o LEDs. O trabalho visa proporcionar uma compreensão
aprofundada da programação Assembly, explorando as características específicas do
PIC16F628A e integrando-as para criar uma aplicação prática e didática.

OBJECTIVOS ESPECÍFICOS

1. Estudar a linguagem de programação Assembly:

 Analisar os conceitos fundamentais da linguagem Assembly,


especialmente aqueles relevantes para a programação do PIC16F628A.

2. Compreender as características do PIC16F628A:

 Investigar as especificidades e funcionalidades do microcontrolador


PIC16F628A, incluindo seus registradores, periféricos e capacidades de
E/S.

3. Configurar o display de 7 segmentos cátodo comum:

 Estabelecer a comunicação eficiente entre o PIC16F628A e o display de


7 segmentos cátodo comum, compreendendo as conexões e
configurações necessárias.

4. Desenvolver o código Assembly para contagem regressiva:

 Criar um código eficiente em Assembly para o PIC16F628A, que inicie


uma contagem regressiva em hexadecimal de 15 até zero, atualizando
dinamicamente o display de 7 segmentos.

3
5. Simular o projeto utilizando MPLAB e Proteus:

 Utilizar as ferramentas MPLAB e Proteus para simular o projeto,


permitindo a visualização e depuração eficaz do código desenvolvido.

6. Analisar e documentar os resultados:

 Avaliar o desempenho do projeto, identificando possíveis melhorias e


documentando os resultados obtidos ao longo do processo de simulação.

4
HIPÓTESES

1. Eficiência na Programação Assembly:

 A hipótese central desta pesquisa sugere que a programação em


Assembly para o PIC16F628A pode ser eficientemente realizada para
controlar um display de 7 segmentos cátodo comum. A linguagem
Assembly proporciona um nível de controle preciso sobre o hardware,
permitindo uma implementação direta e otimizada do contador
regressivo.

2. Integração Bem-sucedida do Display de 7 Segmentos:

 Supõe-se que a configuração do display de 7 segmentos cátodo comum


será bem-sucedida, considerando a compreensão adequada das conexões
e configurações necessárias entre o PIC16F628A e o display. A hipótese
é que a comunicação entre o microcontrolador e o display será efetiva,
permitindo a exibição adequada dos valores durante a contagem
regressiva.

3. Simulação Precisa em MPLAB e Proteus:

 Supõe-se que a simulação do projeto utilizando as ferramentas MPLAB e


Proteus será precisa e confiável. A hipótese é que essas ferramentas
permitirão uma visualização detalhada do funcionamento do código em
Assembly, facilitando a identificação e resolução de possíveis problemas.

4. Aquisição de Conhecimento em Programação Assembly:

 A hipótese é que, ao final da pesquisa, os participantes ou leitores terão


adquirido conhecimentos práticos e teóricos valiosos sobre programação
Assembly, especificamente voltados para o PIC16F628A. A experiência
prática de desenvolver o projeto contribuirá para uma compreensão mais
profunda da linguagem e suas aplicações em sistemas embarcados.

5
JUSTIFICATIVA

A escolha de desenvolver e simular um contador regressivo em Assembly para o


PIC16F628A, controlando um display de 7 segmentos cátodo comum, utilizando as
ferramentas MPLAB e Proteus, encontra sua relevância em diversos aspectos.

Primeiramente, a programação em Assembly proporciona um entendimento mais


profundo da interação entre software e hardware, sendo essencial para programadores
embarcados. A escolha do PIC16F628A, um microcontrolador amplamente empregado
em projetos práticos, visa oferecer uma experiência prática e relevante no
desenvolvimento de sistemas embarcados.

A abordagem específica do contador regressivo não apenas demonstra as


capacidades de programação em Assembly, mas também envolve o controle de um
display de 7 segmentos cátodo comum, um componente frequentemente utilizado em
aplicações de contagem e temporização.

A escolha do MPLAB e Proteus como ferramentas de desenvolvimento e


simulação é respaldada pela sua ampla utilização na indústria e academia. Essas
ferramentas proporcionam ambientes robustos para o desenvolvimento, depuração e
simulação de projetos, contribuindo para a eficiência e precisão na implementação do
código em Assembly.

Além disso, a justificativa para este trabalho reside na importância de


compartilhar conhecimento prático e teórico sobre a programação Assembly, o
PIC16F628A e a integração de periféricos, contribuindo para a formação de
profissionais capacitados na área de sistemas embarcados.

Em síntese, este projeto não apenas aborda desafios práticos e teóricos na


programação Assembly e no controle de periféricos, mas também busca fornecer uma
base sólida para estudantes, entusiastas e profissionais interessados em sistemas
embarcados, contribuindo para o avanço contínuo no campo da engenharia de
computação.

6
METODOLOGIA

A metodologia adotada para o desenvolvimento desta monografia seguirá uma


abordagem prática e experimental, visando atingir os objetivos propostos. O processo de
pesquisa será dividido em etapas distintas, cada uma dedicada a aspectos específicos do
projeto.

1. Revisão Bibliográfica:

 Realizar uma revisão bibliográfica abrangente sobre a linguagem de


programação Assembly, as características do microcontrolador
PIC16F628A, o funcionamento de displays de 7 segmentos cátodo
comum e a integração de LEDs em projetos de sistemas embarcados.
Esta etapa proporcionará uma base teórica sólida para fundamentar o
desenvolvimento prático.

2. Estudo do Ambiente de Desenvolvimento:

 Familiarizar-se com o ambiente de desenvolvimento MPLAB,


explorando suas funcionalidades e ferramentas de programação para o
PIC16F628A. Além disso, compreender a utilização do Proteus para
simulação, identificando suas vantagens e limitações.

3. Configuração do Ambiente de Desenvolvimento:

 Configurar o ambiente de desenvolvimento, incluindo a instalação do


MPLAB e a integração com o Proteus. Certificar-se de que todas as
ferramentas estão operacionais e prontas para o desenvolvimento e
simulação do projeto.

4. Estudo Detalhado do PIC16F628A:

 Investigar detalhadamente as características específicas do


microcontrolador PIC16F628A, como registradores, periféricos e
instruções de Assembly relevantes. Este passo é crucial para o
desenvolvimento de um código eficiente e otimizado.

7
5. Configuração do Display de 7 Segmentos:

 Realizar a configuração do display de 7 segmentos cátodo comum,


estabelecendo as conexões necessárias com o PIC16F628A e
compreendendo as instruções de controle específicas para este periférico.

6. Desenvolvimento do Código em Assembly:

 Implementar o código em Assembly para realizar a contagem regressiva


no display de 7 segmentos, iniciando em 15 hexadecimal e
decrementando até zero. Integrar a visualização dinâmica por meio dos
LEDs, garantindo a sincronização adequada entre os periféricos.

7. Simulação no Proteus:

 Utilizar o Proteus para simular o projeto, verificando o funcionamento


correto do código em Assembly e a interação eficiente com o display de
7 segmentos e os LEDs. Identificar e corrigir possíveis problemas de
funcionamento durante a simulação.

8
DESENVOLVIMENTO

Será apresentada a implementação prática do circuito de contador regressivo


com display de 7 segmentos cátodo comum. O objetivo é demonstrar o funcionamento
do circuito.
O circuito foi desenvolvido com base na utilização de componentes específicos,
tais como displays de 7 segmentos cátodo comum, PIC16F628A, Cristal – 4MHz e
outros elementos eletrônicos.
A implementação prática envolveu a montagem física do circuito, realizada em
uma protoboard, seguindo as devidas conexões e disposição dos componentes. Além
disso, foram realizados testes para verificar o correto funcionamento do circuito, a
precisão e estabilidade do contador regressivo.
Neste relatório, serão apresentados os detalhes do processo de montagem, as
etapas de simulação do circuito no software Proteus e MPLAB, os resultados obtidos e
as considerações finais sobre o projeto. Através dessa implementação prática, busca-se
consolidar o conhecimento teórico adquirido sobre arquitectura de computadores e
proporcionar uma aplicação real dos conceitos estudados.

MATEIRAIS UTILIZADOS

Os componentes e materiais utilizados no circuito do relógio são:

1. PIC16F628A ;
2. Cristal – 4MHz;
3. Resist- 220;
4. Resist- 10k;
5. Capacitor Ceramico;
6. BUTTON;
7. Display de 7 segmentos catodo comum;

Além desses componentes eletrônicos, também são utilizados outros materiais,


como fios de conexão(condutores e jumpers), protoboard para montagem do
circuito, fonte de alimentação.

9
FUNDAMENTAÇÃO TEÓRICA

PIC16F628A

O PIC16F628A, produzido pela Microchip Technology, é um microcontrolador


amplamente utilizado em aplicações embarcadas devido à sua versatilidade, eficiência
energética e recursos robustos. Abaixo, são detalhados alguns aspectos fundamentais
desse componente.
O PIC16F628A faz parte da família PIC de microcontroladores e possui uma
arquitetura de conjunto de instruções reduzido (RISC). Sua arquitetura é baseada em
registradores, sendo composta por um conjunto de instruções simples e eficientes.

O microcontrolador opera a uma frequência de clock de até 20 MHz, fornecendo um


desempenho considerável em diversas aplicações. Além disso, apresenta uma ampla
faixa de voltagem de alimentação, facilitando a integração em diferentes sistemas.
O PIC possui diversos pinos que serao abordados a seguir:

Figura 1 Diagrama de Pinos Do PIC16F628A

10
Cada um dos 18 pinos do microcontrolador tem uma função específica, que pode ser
resumida da seguinte forma:

 RA0/AN0: Entrada/Saída bidirecional e entrada inversora do primeiro


comparador interno;
 RA1/AN1: Entrada/Saída bidirecional e entrada inversora do segundo
comparador interno
 RA2/AN2/VREF: Entrada/Saída bidirecional, entrada não-inversora do segundo
comparador interno, saída da tensão de referência interna programável;
 RA3/AN3/CMP2: Entrada/Saída bidirecional, entrada não-inversora do
primeiro comparador interno, saída do primeiro comparador interno;
 RA4/T0CKI: Entrada/Saída bidirecional em dreno aberto, entrada externa para
incremento do Timer0, saída do segundo comparador interno;
 RA5/MCLR/Vpp: Entrada digital, master clear ativo em nível low. Provoca
um reset no processador;
 RB0/INT: Entrada/Saída bidirecional com pull-up interno programável, entrada
para interrupção externa;
 RB1/RX/DT: Entrada/Saída bidirecional com pull-up interno programável,
recepção para comunicação USART síncrona, via de dados para comunicação
USART síncrona;
 RB2/TX/CK: Entrada/Saída bidirecional com pull-up interno programável,
transmissão para comunicação USART síncrona, via de clock para comunicação
USART síncrona;
 RB3/CCP1: Entrada/Saída bidirecional com pull-up interno programável,
módulo de Captura, Comparação e PWM;
 RB4: Entrada/Saída bidirecional com pull-up interno programável, entrada para
programação em baixa tensão, interrupção por mudança de estado;
 RB5: Entrada/Saída bidirecional com pull-up interno programável, interrupção
por mudança de estado;
 RB6/T1OSO/T1CKI/PGC: Entrada/Saída bidirecional com pull-up interno
programável, saída para cristal externo para o Timer1, entrada externa para
incremento do Timer1, interrupção por mudança de estado;
 RB7/T1OSI/PGD: Entrada/Saída bidirecional com pull-up interno programável,
saída para cristal externo para o Timer1, interrupção por mudança de estado.
 VDD: Pino de alimentação positiva
 VSS: Pino de alimentação negativa ou terra
 OSC1/CLKIN: Pino de entrada do oscilador externo ou do relógio
 OSC2/CLKOUT: Pino de saída do oscilador externo ou do relógio

11
O PIC16F628A possui uma memória de programa Flash regravável, que permite a
fácil atualização do software embarcado. Além disso, conta com uma memória
EEPROM para armazenamento de dados não voláteis:

Figura 2 Mapeamento de Memória do PIC16F628A

12
A tabela é dividida em 4 colunas e 16 linhas, que correspondem aos seguintes campos:

 Endereço indireto (7Fh): O endereço indireto é usado para acessar a memória de dados
usando o registrador FSR (File Select Register), que armazena o endereço do espaço de
memória desejado. O endereço indireto varia de 00h a 7Fh, cobrindo 128 espaços de
memória.
 Endereço de arquivo (9Fh): O endereço de arquivo é usado para acessar a memória de
dados diretamente, usando o nome do registrador ou o seu endereço absoluto. O endereço de
arquivo varia de 80h a 9Fh, cobrindo os mesmos 128 espaços de memória que o endereço
indireto.
 Endereço indireto (BFh): O endereço indireto é usado para acessar a memória de dados
usando o registrador FSR, assim como o endereço indireto (7Fh). A diferença é que o
endereço indireto (BFh) varia de 80h a BFh, cobrindo 192 espaços de memória.
 Endereço de arquivo (FFh): O endereço de arquivo é usado para acessar a memória de
dados diretamente, assim como o endereço de arquivo (9Fh). A diferença é que o endereço
de arquivo (FFh) varia de A0h a FFh, cobrindo os mesmos 192 espaços de memória que o
endereço indireto (BFh).

Cada linha da tabela é rotulada com o nome de um registrador ou de uma área de memória,
como PORTA, TRISA, EECON1.

O conjunto de instruções do PIC16F628A é composto por um conjunto reduzido de


operações, facilitando o desenvolvimento e a otimização do código Assembly. As
instruções são de tamanho fixo, o que simplifica o processo de decodificação.

O microcontrolador oferece modos de economia de energia, tornando-o apropriado


para aplicações alimentadas por bateria, onde a eficiência energética é essencial.

Os registradores especiais, como STATUS, PCL, e FSR, desempenham um papel


crucial na manipulação de dados e controle do fluxo de programa. O entendimento
desses registradores é fundamental para uma programação eficiente.
O PIC16F628A possui dois timers/contadores, o Timer0 e o Timer1, que são
componentes fundamentais para diversas aplicações de temporização e controle de
eventos. Vamos explorar cada um deles:
1. Timer0:
 O Timer0 é um timer de 8 bits que pode operar de forma assíncrona ou síncrona
com o clock do sistema (Fosc/4 ou Fosc/8). Ele é frequentemente utilizado em
aplicações que requerem temporização mais curta e precisa.
 Modos de Operação:
 Temporizador: Pode ser configurado como um temporizador de
contagem descendente de 8 bits.
 Contador: Pode operar como um contador ascendente de 8 bits.
 Interrupções:

13
 O Timer0 pode gerar uma interrupção quando seu valor atinge um
determinado limite, proporcionando uma funcionalidade útil para a
temporização precisa.
2. Timer1:
 O Timer1 é um timer/contador de 16 bits, oferecendo maior resolução em
comparação com o Timer0. Ele opera em modo de 16 bits e pode ser
configurado para funcionar em diversas fontes de clock.
 Modos de Operação:
 Temporizador: Pode ser configurado como um temporizador de
contagem descendente de 16 bits.
 Contador: Opera como um contador ascendente de 16 bits.
 Fontes de Clock:
 Pode utilizar o clock do sistema (Fosc/4), um oscilador externo ou o sinal
de clock do pino T1CKI.
 Interrupções:
 O Timer1 pode gerar interrupções quando seu valor atinge um limite
predefinido, oferecendo um recurso valioso para aplicações que
requerem temporização mais longa.
 Modo Síncrono e Assíncrono:
 Pode operar em modo síncrono ou assíncrono, proporcionando
flexibilidade na configuração conforme a necessidade da aplicação.
Configuração Geral dos Timers:
 A configuração dos timers envolve a manipulação de registradores específicos,
como TMR0, TMR1L, TMR1H, T0CS (Timer0 Clock Source), T0SE (Timer0
Source Edge Select), entre outros.
 Prescaler:
 Ambos os timers possuem um prescaler que permite dividir a frequência
do clock antes de aplicá-la ao contador. Isso é útil para ajustar a faixa de
contagem ou economizar energia.

14
Figura 3 Diagrama de Bloco do Timer0

Figura 4 Diagrama de Bloco do Timer1

15
CRISTAL OSCILADOR 4MHZ

O cristal de 4MHz é uma fonte de clock externa que pode ser utilizada como a
base de tempo para o microcontrolador PIC16F628A. Ao conectar um cristal externo ao
microcontrolador, em conjunto com capacitores apropriados, é possível obter uma
precisão de clock superior em comparação com o clock interno do dispositivo.

Figura 5 Ilustração do Cristal de 4Mhz

A utilização de um cristal externo, como o de 4MHz, proporciona as seguintes


características e considerações:

1. Precisão e Estabilidade:
 Cristais externos oferecem maior precisão e estabilidade em comparação com
osciladores internos. Isso é particularmente importante em aplicações que
demandam sincronização precisa, como em sistemas de comunicação ou
temporização crítica.
2. Configuração do Microcontrolador:
 O cristal de 4MHz é conectado aos pinos XTAL1 e XTAL2 do PIC16F628A.
Para utilizar um cristal externo, é necessário configurar o microcontrolador para
usar a fonte de clock externa. Isso geralmente é feito através do bit
OSCON.IRCF para selecionar a frequência desejada.
3. Maior Capacidade de Processamento:
 Ao utilizar um clock externo mais rápido, como o proporcionado por um cristal
de 4MHz, o microcontrolador pode processar instruções mais rapidamente,
resultando em uma capacidade de processamento maior.

16
CÓDIGO ASSEMBLY E IMPLEMENTAÇÃO DO CIRCUITO

Configuração

 São fornecidas definições de hardware, como LEDs (LED1 e LED2) e botões (S1 e S2),
assim como definições de registradores e bancos de memória.

 Os bits de configuração (FUSE bits) são configurados para o PIC16F628A.

Vetores de Interrupção

 Existem dois vetores: RESET e Interrupção (a cada overflow do Timer1).

 No vetor de interrupção, o programa salva o contexto, verifica se houve overflow no


Timer1, limpa a flag de interrupção, reinicializa os bytes mais significativos do Timer1 e
executa a lógica do timer.

Rotina de Interrupção (exit_ISR)

 Salva e restaura o contexto quando ocorre uma interrupção.

 Verifica se houve overflow no Timer1 e realiza ações com base nisso.

Programa Principal (inicio)

 Configurações iniciais, como a configuração dos registradores TRISA e TRISB,


habilitação da interrupção do Timer1 e inicialização de alguns valores.

 O programa principal entra em um loop (loop) onde verifica se o botão S2 foi


pressionado. Se sim, ele habilita as interrupções.

 Dentro do loop, há uma chamada para a sub-rotina atualiza, que, por sua vez, chama
converte para converter o valor do contador para o formato adequado para o display
de 7 segmentos. O valor convertido é enviado para o PORTB.

Sub-rotinas

 converte: Converte o valor do temporizador para o formato binário correspondente


aos dígitos do display de 7 segmentos.

 atualiza: Atualiza o valor no display de 7 segmentos chamando converte.

 end_process: Desabilita interrupções, indicando o final do processo.

17
Figura 6 Demostração do Circuito acabado de Ligar

Figura 7 Demostração do Circuito Funcionando e Acendendo o LED após Atingir 0 no Display

18
CONCLUSÃO

O desenvolvimento e simulação do contador regressivo em Assembly para o


PIC16F628A, controlando um display de 7 segmentos cátodo comum, representaram
uma jornada significativa no entendimento prático da programação Assembly e das
características distintivas do microcontrolador.

Ao longo deste projeto, foram exploradas diversas facetas, desde a configuração


do ambiente de desenvolvimento com MPLAB e Proteus até a análise detalhada dos
timers, especialmente o Timer1, essencial para a temporização precisa do contador
regressivo.

A escolha do PIC16F628A revelou-se acertada, pois sua arquitetura RISC e a


presença de periféricos integrados ofereceram uma plataforma sólida para a
implementação eficiente do código Assembly. A compreensão detalhada do
microcontrolador, especialmente de seus registradores e modos de operação dos timers,
foi crucial para o sucesso do projeto.

A introdução do cristal externo de 4MHz como fonte de clock proporcionou uma


precisão superior e permitiu uma contagem mais eficiente, contribuindo para a
sincronização adequada do contador regressivo.

A simulação no Proteus permitiu a visualização detalhada do funcionamento do


código em Assembly, facilitando a identificação de possíveis melhorias e validando a
eficácia do projeto.

Este projeto não apenas atingiu seus objetivos específicos, como também
proporcionou uma imersão valiosa na interação entre hardware e software,
enriquecendo o conhecimento prático e teórico na área de sistemas embarcados.

O entendimento adquirido sobre a programação Assembly, o PIC16F628A e a


integração de periféricos não apenas atendeu às expectativas do projeto, mas também
abre caminho para aplicações mais avançadas e complexas no campo da engenharia de
computação.

Portanto, este trabalho não é apenas a conclusão de um projeto específico, mas


também marca o início de um percurso contínuo de aprendizado e exploração no vasto
domínio dos sistemas embarcados.

19
REFERÊNCIAS

1. https://www.microchip.com/en-us/product/PIC16F648A
2. https://www.alldatasheet.com/datasheet-pdf/pdf/74969/MICROCHIP/
PIC16F648A.html
3. https://www.alldatasheet.com/view.jsp?Searchword=PIC16F648A

20

Você também pode gostar