kit didÁtico p02 · são buffers de corrente com inversores que fornecem o nível zero necessário...
TRANSCRIPT
KIT DIDÁTICO P02 Manual didático para utilização da plataforma P02
www.professoremersonmartins.com.br
INSTITUTO DE TECNOLOGIA EMERSON MARTINS
EMERSON ELETRÔNICOS Página 2
Conteúdo
APRESENTAÇÃO DO KIT P02 ............................................................................................................................................. 3
Módulo de entradas digitais de pulso: ......................................................................................................................... 3
OSCILADOR À CRISTAL .................................................................................................................................................. 4
MÓDULO DE DISPLAYS DE SETE SEGMENTOS MULTIPLEXADO .................................................................................... 4
MÓDULOS DE LEDS DE SINALIZAÇÃO ........................................................................................................................... 6
MÓDULO DE ENTRADA ANALÓGICA ............................................................................................................................. 6
MÓDULO SINALIZADOR DE AUDIO ............................................................................................................................... 7
MÓDULO DE COMUNICAÇÃO SERIAL ............................................................................................................................... 8
Especificação elétrica parao padrão RS-232 ................................................................................................................. 8
MÓDULO DE DISPLAY DE LCD ......................................................................................................................................... 10
MATRIZ DE LEDS .............................................................................................................................................................. 11
GRAVADOR PICKIT2......................................................................................................................................................... 14
Procedimento para gravar um arquivo com o software PICKIT2.................................................................................... 14
GRAVAÇÃO UTILIZANDO O MPLAB ................................................................................................................................. 16
CRIAÇÃO DE UM PROJETO NO MPLAB v8.92 .................................................................................................................. 18
LISTA DE EXERCÍCIOS RESOLVIDOS EM ASSEMBLY ......................................................................................................... 30
ESQUEMA ELÉTRICO.......................................................................................................................................................54
TERMO DE GARANTIA ..................................................................................................................................................... 54
EMERSON ELETRÔNICOS Página 3
APRESENTAÇÃO DO KIT P02
O kit P02 foi desenvolvido para alunos de cursos técnicos, engenharia e desenvolvedores na área
de microcontroladores, o mesmo conta com alguns módulos que podem ser interligados por meio
de jumpers de modo a unir os módulos para desenvolver sistemas microcontrolados completos.
O kit utiliza um microcontrolador PIC18F4520 do fabricante MICROCHIP que é detentora da
marca, e qualquer nome ou símbolo com referência à altera é de propriedade da mesma.
A seguir serão apresentados os módulos que compõem o P02
Módulo de entradas digitais de pulso:
Este módulo é composto por 8 chaves tácteis sem retenção, e podem fornecer sinais de borda de
subida e descida. Os níveis de tensão fornecidos nas saídas são: Nível lógico zero=0V e Nível
lógico 1=5V. A figura 1 apresenta a localização do módulo na placa e os bornes de saídas dos
sinais.
Figura 1
De acordo com a tabela 1, temos a função de cada entrada do módulo de chaves de pulso.
Tabela 1
CHAVE BORDA DE DESCIDA CHAVE BORDA DE SUBIDA
BT_1 SIM BT_5 SIM
BT_2 SIM BT_6 SIM
BT_3 SIM BT_7 SIM
BT_4 SIM BT_8 SIM
ATIVAS EM UM
ATIVAS EM ZERO
EMERSON ELETRÔNICOS Página 4
OSCILADOR À CRISTAL
Nos pinos 13 e 14 do PIC18f4520 está um oscilador de cristal que pode ser utilizado internamente
pelos programas, o cristal que vem no kit é de 4MHz e a localização é mostrada na figura 2 e o
esquema de ligação na figura 3.
Figura 2
Figura 3
MÓDULO DE DISPLAYS DE SETE SEGMENTOS MULTIPLEXADO
O módulo de display de sete segmentos é formado por 8 displays multiplexados, ou seja, todos os
segmentos de a à dp de todos os displays são interligados, formando um barramento só, para
que seja escolhido o display que irá apresentar a informação desejada deverá ser acionado o
respectivo sinal do catodo do mesmo. Para informações de mais de um dígito deverá ser
acionado um catodo por vez, o esquema elétrico do módulo é apresentado na figura 4 e a
localização na placa na figura 5.
EMERSON ELETRÔNICOS Página 5
Figura 4- esquema elétrico do módulo dos displays
Figura 5 – LOCALIZAÇÃO NA PLACA DOS CONECTORES DO MÓDULO DOS DISPLAYS DE 7 SEGMENTOS
BORNES DOS SEGMENTOS E DOS
TRANSISTORES DOS CATÔDOS
EMERSON ELETRÔNICOS Página 6
MÓDULOS DE LEDS DE SINALIZAÇÃO
Para facilitar a visualização dos resultados dos programas, foi implementado um módulo
composto por 4 leds, estes leds já está interligados aos pinos do PORTD do PIC18F4520,
dispensando então a ligação por meio de bornes. Os pinos e seus respectivos leds são
apresentados na tabela 3.
Os resistores dos leds estão dimensionados para acionamento com 5V, que é a tensão de
alimentação do kit, e presente nas saídas do PIC18F4520.
O JUMPER JP2 está ligado aos catôdos destes leds, caso o programador queira
desabilitá-los basta retirar o jumper do local
Tabela 2
LED PINO DO CPLD
RD0 PINO 19
RD1 PINO 20
RD2 PINO 21
RD3 PINO 22
A localização do módulo de leds é apresentada na figura 6.
Figura 6 – leds e jumper dos leds
MÓDULO DE ENTRADA ANALÓGICA
O módulo de entrada analógica é composto por dois potenciômetros que enviam o sinal analógico
para dois buffers de tensão formado por um circuito integrado LM358, para casamento de
impedância. Dessa forma quando houver mudança na posição dos potenciômetros, a tensão nos
bornes POT_1 e POT_2, podem variar de 0V à 3,7V. A figura 7 apresenta o esquema elétrico do
módulo e a figura 8 apresenta a localização do módulo.
Jumper dos leds
Leds do portD
EMERSON ELETRÔNICOS Página 7
Figura 7 – esquema elétrico do módulo de entradas analógicas
Figura 8- LOCALIZAÇÃO DO MÓDULO DE ENTRADAS ANALÓGICAS
MÓDULO SINALIZADOR DE AUDIO
O módulo de áudio é formado por um buzzer, este dispositivo tem a capacidade de se dilatar e
comprimir de acordo com a aplicação de tensão em seus terminais, dessa forma é muito utilizado
para gerar áudio em sistemas de telefonia, alarmes entre outros.
Dever-se evitar mantê-lo ligado, utilizar para gerar áudio com aplicação de qualquer
frequência entre 20Hz e 20khz que é a faixa audível para os humanos. A figura 9
apresenta sua localização na placa, e o borne de ligação do mesmo.
Figura 9- LOCALIZAÇÃO DO BUZZER
SINAIS ANALÓGICOS
BORNE DE LIGAÇÃO DO
BUZZER
EMERSON ELETRÔNICOS Página 8
MÓDULO DE COMUNICAÇÃO SERIAL
O módulo de comunicação serial permite que o microcontrolador seja ligado a um outro
equipamento tal como um computador para troca de dados de forma serial, entre elas está o
padrão RS-232 com comunicação em duas vias full-duplex. Como os padrões de tensões do
microcontrolador são diferentes de outros dispositivos há a necessidade de se adequar essas
tensões por meio de um circuito integrado MAX232.
Especificação elétrica parao padrão RS-232
O padrão RS-232 define uma faixa de tensão que dever ser identificada pelos terminais
como níveis lógicos ‘0' e '1'.
O nível lógico '1' é representado pela faixa de tensão de -3V a -15V. Da mesma forma, o
nível lógico ‘0' é identificado pela faixa de tensão de 3V a 15V.
A faixa de tensão de -3V a +3V é uma região de transição, sendo, portanto, de nível lógico
indefinido.
Embora os níveis de tensão -3V e +3V sejam reconhecidos, respectivamente, como níveis
lógicos '1' e ‘0', é recomendado que o transmissor não aplique em nenhum dos pinos uma
tensão menor que +5V para representar o nível lógico ‘0’
Assim como ele não deve aplicar nenhuma tensão menor que -5V para representar nível
lógico '1'. Essa diferença de 2V funciona como uma margem de segurança contra ruídos
na linha .
Seguindo esse mesmo raciocínio, vale a pena ressaltar que o padrão RS-232 impõe um
limite máximo para a tensão em cada um dos seus pinos de +25V e -25V, sendo a
diferença (25V - 15V = 10V) utilizada como margem de segurança.
Tendo em vista a faixa de tensão especificada pelo padrão RS-232 para a representação
dos níveis lógicos ‘0’ e ‘1’, não se pode conectar os pinos do DB-9 diretamente aos pinos
do microcontrolador, uma vez que os níveis de tensão fornecidos por este último não são
compatíveis com os do padrão RS-232.
Para resolver o problema é preciso efetuar uma conversão de tensão correspondente aos
respectivos níveis lógicos utilizados pelo padrão RS-232 e pelo microcontrolador.
RS-232 driver/receiver (MAX232)
O que esse CI faz é converter os níveis de tensão correspondentes à lógica TTL no padrão
RS-232 e vice-versa.
Na figura 10 é apresentada uma conexão utilizando apenas um canal do max-232.
EMERSON ELETRÔNICOS Página 9
Figura 10
Pinagem do pino DB-9 macho
A figura 11 apresenta o esquema elétrico da placa P02, e a localização na placa é mostrada na
figura 12
Figura 11 – esquema elétrico do módulo de comunicação serial
EMERSON ELETRÔNICOS Página 10
Figura 12 – localização do módulo de comunicação serial
MÓDULO DE DISPLAY DE LCD
Este módulo é composto por um display LCD de 2 linhas e 16 colunas e pode ter comunicação de
dados à 4 vias e a 8 vias, o pino R/W está diretamente aterrado e com isso só é possível fazer
operação de escrita no LCD.
O potenciômetro “CONTRASTE_LCD” ajusta a tensão no pino VEE do mesmo que controla a
intensidade do contraste LCD.
O esquema de ligação é apresentado na figura 13 e a localização tal como os bornes de ligação
são apresentados na figura 14.
Figura 13 – esquema de ligação do LCD
Bornes de transmissão e
recepção da usart
EMERSON ELETRÔNICOS Página 11
Figura 14 localização do display de LCD e dos bornes de ligação
MATRIZ DE LEDS
O Conceito de matriz de leds é utilizado a bastante tempo em equipamentos eletrônicos
tais como painéis rodoviários, painéis com mensagens em ônibus, painéis publicitários, painéis de
chamadas de clientes entre outros.
A idéia é de apresentar números, letras ou imagens formadas a partir de pontos luminosos
formados pelo acionamento de leds, dessa forma em um painel liga-se somente os leds utilizados
para formar o caractere desejado.
A plataforma P02 possui um painel de led formado por três matrizes 7X5, que são definidas
por 7 linhas e 5 colunas totalizando 35 leds por matriz, dessa forma o painel referido possui 105
leds.
A disposição de cada coluna é apresentada a seguir, com os anodos de cala linha
interligados e os catôdos de cada coluna interligados entre si.
Figura 15
BORNES DE
LIGAÇÃO DO LCD
EMERSON ELETRÔNICOS Página 12
O princípio de funcionamento é ligar cada catôdo comum (nível zero) de cada coluna por
um tempo determinado e nesse mesmo tempo ligar as linhas referentes aos leds que formam o
caractere a ser exibido, e isso pode ser feito da direita para a esquerda repetidamente, para que
cada grupo de leds relacionados a uma coluna qualquer seja exibido por um tempo enquanto os
outros ficam apagados. Essa técnica permite economizar pinos em um projeto, veja que se
fossem acionados um led por pino, somente para uma matriz seria utilizados 35 leds, com essa
técnica a quantidade de pinos cai para 12.
Ao serem adicionadas mais matrizes, o que aumenta é somente o número de colunas, pois
o número de linhas permanece constante, assim na plataforma P02 ao invés de 105 pinos para
as matrizes é necessário apenas 22 pinos.
Outro recurso foi utilizado para o acionamento dos catôdos de modo a economizar mais
pinos, um circuito integrado CD4067 (multiplexador) de 4 entradas para 16 saídas. Esse CI faz a
escolha de um sinal de entrada e o coloca na saída respectiva entre 16 combinações de entrada.
Logo colocando a entrada de dados em nível lógico 1, quando mudarmos as cominações
de entrada de 00002 à 11112 cada uma das saídas será acionada por vez (nível 1), mas como
necessitamos nível zero para cada catôdo foi utilizado também circuitos integrados ULN2803 que
são buffers de corrente com inversores que fornecem o nível zero necessário para dar condições
de acionamentos dos leds da matriz.
O número de pinos do microcontrolador fica então reduzido a 7 para as linhas (L1 à L7) e
mais 4 para as combinações das colunas (A,B,C, e D) num total de 11 pinos para 105 leds.
Como temos somente 15 colunas, a combinação 11112 não foi utilizada e não tem
nenhum efeito no funcionamento.
O esquema elétrico da P02 é apresentado na figura 16:
Figura 16 – esquema elétrico da matris de leds
EMERSON ELETRÔNICOS Página 13
A localização do módulo da matriz de leds é apresentado pela figura 17.
Figura 17
A primeira coluna de leds da matriz (da esquerda para direita) pode ser
utilizada como leds independentes quando a matriz não estiver sendo
utilizada, assim além dos leds “verdes”, pode-se utilizar mais 7 leds
vermelhos modificando a posição dos jumper JP1 para a posição “L”,
caso ele esteja na posição “M” os leds estão direcionados para a matriz,
a figura 18 mostra os leds que podem ser utilizados independentes da
matriz e o jumper JP1.
Figura 18
Cd4067
ULN2803
BORNES DE LINHAS E
COLUNAS
Leds da primeira
coluna da matriz
EMERSON ELETRÔNICOS Página 14
GRAVADOR PICKIT2
O sistema de gravação da P02 é composto por um gravador compatível com o PICKIT2 da
microchip, o mesmo está implementado internamente e faz o procedimento de gravação via porta
USB. Para gravar um programa no pic 18f4520 pode-se proceder de duas formas.
a) Por meio do software PICKIT2
b) Por meio do mplab
Procedimento para gravar um arquivo com o software PICKIT2
Posicione as chaves LIGA (PARA FORA) e grava (PARA DENTRO)
Conforme a figura 19
Figura 19 – chaves de ligação de gravação.
Abra o software pickit2 conforme figura 20
Figura 20 – software pickit2
CHAVE LIGA PARA
FORA
CHAVE GRAVA PARA
DENTRO
EMERSON ELETRÔNICOS Página 15
Na aba FILE clique em import HEX e procure o arquivo que deseja gravar com extensão
hexadecimal, este arquivo é criado automaticamente sempre quando o programa for compilado
com sucesso no momento do desenvolvimento.
Nesse exemplo foi importado o arquivo teste_led_4520 disponível no DVD que acompanha a
plataforma conforme a figura 21.
Figura 21 – programa importado para gravação
clique em WRITE e aguarde o procedimento de gravação terminar.
Ao final da gravação se tudo correu certo deverá ser mostrada a mensagem a seguir.
Figura 22 – MENSAGEM DE SUCESSO DE GRAVAÇÃO
EMERSON ELETRÔNICOS Página 16
A final da gravação, a chave grava deverá ser desligada (para fora) e a chave liga deverá ser
colocada para dentro, desta forma para este exemplo os leds “verdes” deverão piscar
alternadamente.
GRAVAÇÃO UTILIZANDO O MPLAB
Posicione as chaves LIGA (PARA FORA) e GRAVA (PARA DENTRO).
Abra o programa a ser gravado com o mplab, conforme figura 23.
Figura 23 - MPLAB
Na aba PROGRAMER selecione o gravador PICKIT2 conforme figura 24
Figura 24 – escolha do gravador pickit2 no mplab
EMERSON ELETRÔNICOS Página 17
Se a plataforma estiver com as chaves nas posições corretas o microcontrolador será
reconhecido pelo software conforme a figura 25.
Figura 25
Após o reconhecimento va na aba programar e clique em program de acordo com a figura 26.
Figura 26
EMERSON ELETRÔNICOS Página 18
Ao final da gravação a mensagem a seguir será apresentada caso tenha corrido tudo certo, e
assim pode-se colocar a chave liga na posição ligada e desligar a chave grava que a plataforma
estará pronta para rodar o programa.
Figura 27 – mensagem apresentada quando a gravação foi bem sucedida.
CRIAÇÃO DE UM PROJETO NO MPLAB v8.92
O MPLAB é uma IDE que pode ser utilizada sozinha ou em conjunto com outros softwares,
aversão utilizada neste material é o v.8.92 que pode ser baixada gratuitamente em:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002
O primeiro passo é abrir um projeto, vá em Project -> Project wizard conforme a figura 28.
EMERSON ELETRÔNICOS Página 19
Figura 28
Na tela de boas vindas clique em Avançar de acordo com a figura 29.
Figura 29
Na tela de passo 1 escolha o microcontrolador (DEVICE) PIC18F4520 na lista, como mostra a figura 30.
EMERSON ELETRÔNICOS Página 20
Figura 30
Na tela segundo passo caso esteja como a figura 31 clique em avançar para continuar no
compilador de programação em assembly.
Figura 31
EMERSON ELETRÔNICOS Página 21
Na tela passo três, com o browse procura-se a pasta onde se deseja salvar o projeto e depois de
nomeado e clique em avançar conforme figura 32, (a extensão de projeto é .mcp).
Figura 32
Na tela passo 4, caso não queira adicionar nenhum arquivo clique em avançar como na figura 33.
Figura 33
EMERSON ELETRÔNICOS Página 22
Antes de terminar de criar o projeto, confira na tela de sumário, o resumo do projeto criado visto
na figura 34.
Figura 34
A figura 35 apresenta a tela após criado o projeto, agora deve-se criar o programa fonte, é nele
que o programador fará as modificações para que o programa execute as tarefas definidas.
Figura 35
EMERSON ELETRÔNICOS Página 23
Para criar o arquivo fonte clique em FILE -> NEW, ou em no canto superior esquerdo da tela
do MPLAB, a janela untitled aparece em branco, nesta tela deve-se colar o arquivo programa
modelo fornecido anteriormente para que possa ser criado o novo programa fonte, como mostra a
figura 36.
Figura 36
Após colar o programa na tela untitled, pressiona-se F10 para compilar, na primeira vez que for
pressionada a tecla F10, o programa pedirá para salvar o arquivo, procure a pasta onde foi salvo
o projeto, de o mesmo nome mas com extensão .asm e clique em salvar, conforme figura 37.
Figura 37
EMERSON ELETRÔNICOS Página 24
Mesmo que o programa não tenha erros de digitação ou sintaxe, a mensagem BUILD FAILED
deverá aparecer na tela, isso porque o arquivo ainda não foi associado ao projeto, o que pode ser
visto na figura38.
Figura 38
Para associar o arquivo ao projeto va em SouceFiles, clique com o botão direito do mouse e
escolha Add Files como mostra a figura 39.
Figura 39
EMERSON ELETRÔNICOS Página 25
Procure na pasta em que foi salvo o projeto e o arquivo, escolha o nome com extensão .asm e
clique em abrir como na figura 40.
Figura 40
O arquivo com extensão .asm aparece logo abaixo de SourceFiles conforme figura 41, indicando
que foi adicionado ao projeto, assim clique em F10 novamente para compilar.
Figura 41
EMERSON ELETRÔNICOS Página 26
Na primeira vez que é compilado aparece a tela da figura 42, que pergunta se a montagem do
código deve ser absoluto ou realocado, clique em Absolute.
Figura 42
Caso o programa não tenha erro de sintaxe deverá aparecer a tela da figura 43, indicando que o
projeto foi criado com sucesso.
Figura 43
EMERSON ELETRÔNICOS Página 27
Finalmente a tela da figura 44 é apresentada para que o programador possa trabalhar no
programa.
Figura 44
Antes de iniciar o primeiro programa será feito uma descrição de partes do programa modelo para
se entender como o mesmo se divide, logo em seguida será criado o primeiro programa utilizando
as primeiras instruções . A figura 45 apresenta parte do programa, das linhas 1 à 11 são apenas
comentários, veja que todas as linhas estão na cor cinza e começam sempre “;” em linguagem
assembly tudo o que é escrito após “;” na mesma linha é considerado pelo compilador como
comentários, logo não faz parte do programa, serve apenas para o programador organizar de
forma a ficar mais legível para melhorar o processo de manutenção do programa.
Figura 45
EMERSON ELETRÔNICOS Página 28
Entre as linhas 21 e 25 (CBLOCK – ENDC) é o espaço reservado pra criação de registradores
pelo programador, pois sempre é necessário criar espaços de memórias para utilização no
decorrer do programa, assim deve-se declarar para o compilador que o mesmo reconheça como
um nome válido na compilação e utilização.
Na figura 46 linha 32 temos a diretiva include, que é a diretiva que adiciona toda biblioteca de
memórias e endereços para o modelo de microcontrolador utilizado. Nas linha 38 e 42 são
mostradas duas diretivas, a diretiva #DEFINE é utilizada para da um nome a uma saída ou
entrada ou pequeno bloco de instruções para melhorar o processo de manutenção do programa.
Figura 46
A linha 50 apresenta o endereço do vetor inicial de processamento do microcontrolador, ou seja,
toda vez que o microcontrolador for resetado, ou energizado, o programa começa a rodar do
primeiro endereço. Na linha 51 aparece uma instrução de desvio para a rotina que faz a
configuração de registradores especiais necessários para o programa, registradores estes que
configuram entradas, saídas, osciladores, interrupções entre outras funções. A figura 47
apresenta nas linhas 58 à 61 o vetor de tratamento de interrupções, endereço que quando houver
um evento de interrupção e o mesmo estiver habilitado, o programa se desviará para estes
endereços. Da linha 68 à 83 são as configurações dos registradores de funções especiais.
EMERSON ELETRÔNICOS Página 29
Figura 47
Nas linhas 87 à 90 são limpas as portas e latches das portas para dar inicio ao programa
principal, e por fim a partir da linha 96 é o espaço reservado para o programa principal ter a
diretiva END ao final para informar ao compilador o fim das instruções.
Figura 48
EMERSON ELETRÔNICOS Página 30
LISTA DE EXERCÍCIOS RESOLVIDOS EM ASSEMBLY
1) Crie um projeto novo chamado liga led e desenvolva um programa em assembly
para o microcontrolador PIC18F4520 para que quando o sistema for ligado, o
PORTD apresente o número 10 em no sistema binário.
SOLUÇÃO: ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Crie um projeto novo chamado liga led e desenvolva um programa em assembly
;para o microcontrolador PIC18F4520 para que quando o sistema for ligado,
;o PORTD apresente o número 10 em no sistema binário.
; DESENVOLVIDO POR EMERSON MARTINS *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DATA : 01/02/2014 *
; * VERSÃO : 1.0 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#INCLUDE <P18F4520.INC> ; MICROCONTROLADOR UTILIZADO
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CONFIG OSC = XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOREN = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
CONFIG CCP2MX = PORTC, STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
; ESTADO DO BOTÃO 0
EMERSON ELETRÔNICOS Página 31
; 0 -> LIBERADO
; 1 -> PRESSIONADO
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES
RETFIE
ORG 0X0018
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'00000000'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111111'
MOVWF TRISC ; CONFIGURA I/O DO PORTC
MOVLW B'00000000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW B'00000000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E PERIFERICOS E TMR0
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
CLRF LATD
CLRF LATE
;*****************************************************************************
EMERSON ELETRÔNICOS Página 32
;PROGRAMA PRINCIPAL
MAIN
MOVLW B'00001010'
MOVWF LATD
GOTO MAIN
END ; FIM DO PROGRAMA
2) Crie um projeto novo chamado BT_LED e desenvolva um programa em assembly
para o microcontrolador PIC18F4520 para que quando o sistema for ligado, e o bit
“1” do PORTC estiver em ‘1” ligue o bit 1 do PORTB, quando o bit”1” do PORTC
estiver em zero, desligue o bit”1” do PORTB.
SOLUÇÃO
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;Crie um projeto novo chamado BT_LED e desenvolva um programa em assembly
; para o microcontrolador PIC18F4520 para que quando o sistema for ligado,
;e o bit “1” do PORTC estiver em ‘1” ligue o bit 1 do PORTB, quando o bit”1”
;do PORTC estiver em zero, desligue o bit”1” do PORTB.
; DESENVOLVIDO POR EMERSON MARTINS *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DATA : 01/02/2014 *
; * VERSÃO : 1.0 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#INCLUDE <P18F4520.INC> ; MICROCONTROLADOR UTILIZADO
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CONFIG OSC = XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOREN = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
CONFIG CCP2MX = PORTC, STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
EMERSON ELETRÔNICOS Página 33
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE BT PORTC,1
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE LED LATB,1
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES
RETFIE
ORG 0X0018
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'00000000'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111111'
MOVWF TRISC ; CONFIGURA I/O DO PORTC
MOVLW B'00000000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW B'00000000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E PERIFERICOS E TMR0
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
CLRF PORTA
EMERSON ELETRÔNICOS Página 34
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
CLRF LATD
CLRF LATE
;*****************************************************************************
;PROGRAMA PRINCIPAL
MAIN
BTFSS BT
GOTO DESLIGA
GOTO LIGA
LIGA
BSF LED
GOTO MAIN
DESLIGA
BCF LED
GOTO MAIN
END ; FIM DO PROGRAMA
3) Desenvolver em linguagem assembly, um programa de controle de carga de acordo com as orientações a seguir:
Pressionando o botão M, o carro desloca-se para a direita até atingir o fim de curso B, quando então inicia o carregamento através da válvula até atingir o peso deter-minado pelo sensor p. Neste caso, a válvula deve ser fechada e o carro deve retornar para a posição inicial. Esta é detectada pelo fim de curso a. O movimento para a direta é realizado pelo motor M1 e para a esquerda pelo motor M2. Para que o ciclo reinicie um pulso deverá ser dado no botão M novamente.
M= RA0 (ATIVO ALTO) botão liga
FCB= RA 1 (ATIVO ALTO) fim de curso b.
FCA= RA3 (ATIVO ALTO) fim de curso a.
VÁLVULA = RB0 = válvula de carregamento.
SP = RA4 (ATIVO ALTO) sensor de peso.
M1= RD1 motor que move para direita.
M2= RD2 motor que move para esquerda.
EMERSON ELETRÔNICOS Página 35
SOLUÇÃO:
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Desenvolver em linguagem assembly, um programa de controle de carga de
;acordo com as orientações a seguir:
;? Pressionando o botão M, o carro desloca-se para a direita até atingir
;o fim de curso B, quando então inicia o carregamento através da válvula
;até atingir o peso deter-minado pelo sensor p. Neste caso, a válvula
;deve ser fechada e o carro deve retornar para a posição inicial.
;Esta é detectada pelo fim de curso a. O movimento para a direta é
;realizado pelo motor M1 e para a esquerda pelo motor M2. Para que
;o ciclo reinicie um pulso deverá ser dado no botão M novamente.
; DESENVOLVIDO POR EMERSON MARTINS *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DATA : 01/02/2014 *
; * VERSÃO : 1.0 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#INCLUDE <P18F4520.INC> ; MICROCONTROLADOR UTILIZADO
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CONFIG OSC = XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOREN = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
CONFIG CCP2MX = PORTC, STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE M PORTA,0 ;BT_5
#DEFINE FCB PORTA,1 ;BT_6
#DEFINE FCA PORTA,3 ;BT_7
#DEFINE SP PORTA,4 ;BT_8
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
EMERSON ELETRÔNICOS Página 36
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE M1 LATD,1
#DEFINE M2 LATD,2
#DEFINE VALVULA LATB,0 ;L7
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES
RETFIE
ORG 0X0018
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'00000000'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111111'
MOVWF TRISC ; CONFIGURA I/O DO PORTC
MOVLW B'00000000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW B'00000000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E PERIFERICOS E TMR0
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
EMERSON ELETRÔNICOS Página 37
CLRF LATD
CLRF LATE
;*****************************************************************************
;PROGRAMA PRINCIPAL
MAIN
BSF M2
TESTE_FCA
BTFSS FCA
GOTO TESTE_FCA
BCF M2
TESTE_BT
BTFSS M
GOTO TESTE_BT
TESTE_BT_LIB
BTFSC M
GOTO TESTE_BT_LIB
BSF M1 ;LIGA MOTOR PARA DIREITA
TESTE_FCB
BTFSS FCB
GOTO TESTE_FCB
BCF M1 ;DESLIGA MOTOR DIREITA
BSF VALVULA ; LIGA VALVULA
TESTE_PESO
BTFSS SP
GOTO TESTE_PESO
BCF VALVULA ;DESLIGA VALVULA
GOTO MAIN
END ; FIM DO PROGRAMA
4) Desenvolver um programa em linguagem assembly para o microcontrolador
PIC18F4520 que liga um led em RD0, sempre que houver uma borda de subida no
botão RB0, e quando for liberado o botão o led deverá apagar. (utilizar o sistema
de prioridades desabilitado).
SOLUÇÃO:
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Desenvolver um programa em linguagem assembly para o microcontrolador
;PIC18F4520 que liga um led em RD0, sempre que houver uma borda de subida
;no botão RB0, e quando for liberado o botão o led deverá apagar. (utilizar
;o sistema de prioridades desabilitado).
; DESENVOLVIDO POR EMERSON MARTINS *
EMERSON ELETRÔNICOS Página 38
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DATA : 15/01/2014 *
; * VERSÃO : 1.0 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#INCLUDE <P18F4520.INC> ; MICROCONTROLADOR UTILIZADO
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CONFIG OSC = XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOREN = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
CONFIG CCP2MX = PORTC, STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
EMERSON ELETRÔNICOS Página 39
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE BOTAO PORTB,0 ; ESTADO DO BOTÃO 0
; 0 -> LIBERADO
; 1 -> PRESSIONADO
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE LED LATD,0
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;VETOR DE INTERRUPÇAO DE ALTA PRIORIDADE
BCF INTCON,1 ;DESLIGA FLAG QUE SINALIZA QUE ACONTECEU INTERRUPÇAO EM RB0
BSF LED
TESTE_BT_LIB
BTFSC BOTAO
GOTO TESTE_BT_LIB
EMERSON ELETRÔNICOS Página 40
BCF LED
RETFIE
ORG 0X0018 ;VETOR DE INTERRUPÇAO DE BAIXA PRIORIDADE
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'00000001'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111111'
MOVWF TRISC ; CONFIGURA I/O DO PORTC
MOVLW B'11110000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW B'00000000'
MOVWF RCON ;SISTEMA DE PRIORIDADES DESABLITADO <7>
MOVLW B'10010000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E INT EM RB0
MOVLW B'11000000' ; PULL UPS DESABILITADOS <7>
MOVWF INTCON2 ; BORDA DE SUBIDA PARA INTERRUPÇÀO EM RB0 <6>
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
EMERSON ELETRÔNICOS Página 41
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
CLRF LATD
CLRF LATE
;*****************************************************************************
;PROGRAMA PRINCIPAL
MAIN
NOP
NOP
GOTO MAIN
END ; FIM DO PROGRAMA
5) Desenvolver um programa em linguagem assembly para o microcontrolador
PIC18F4520 que liga os leds: LED(RD0), LED1(RD1) e LED2(RD2) sempre que
houver uma borda de subida nos botões BT(RB0), BT1(RB1) e BT2(RB2)
respectivamente. (habilitar o sistema de prioridades) e configurar somente RB2
para baixa prioridade.
SOLUÇÃO:
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Desenvolver um programa em linguagem assembly para o microcontrolador
;PIC18F4520 que liga os leds: LED(RD0), LED1(RD1) e LED2(RD2) sempre que
;houver uma borda de subida nos botões BT(RB0), BT1(RB1) e BT2(RB2)
;respectivamente. (habilitar o sistema de prioridades) e configurar somente
;RB2 para baixa prioridade.
; DESENVOLVIDO POR EMERSON MARTINS *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
EMERSON ELETRÔNICOS Página 42
; * DATA : 01/02/2014 *
; * VERSÃO : 1.0 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#INCLUDE <P18F4520.INC> ; MICROCONTROLADOR UTILIZADO
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CONFIG OSC = XT, FCMEN = OFF, IESO = OFF, PWRT = ON, BOREN = ON, BORV = 0
CONFIG WDT = OFF, WDTPS = 128, MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
CONFIG CCP2MX = PORTC, STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF
CONFIG CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
CONFIG WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF
CONFIG WRTC = OFF, WRTD = OFF, EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF
CONFIG EBTR3 = OFF, EBTRB = OFF
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CBLOCK 0X0000 ; BANK 0 --> 0X00..0X5F --> ACCESS BANK
ENDC
EMERSON ELETRÔNICOS Página 43
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * ENTRADAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS ENTRADAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE BT PORTB,0
#DEFINE BT1 PORTB,1
#DEFINE BT2 PORTB,2
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * SAÍDAS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; AS SAÍDAS DEVEM SER ASSOCIADAS A NOMES PARA FACILITAR A PROGRAMAÇÃO E
; FUTURAS ALTERAÇÕES DO HARDWARE.
#DEFINE LED LATD,0
#DEFINE LED1 LATD,1
#DEFINE LED2 LATD,2
; * VETOR DE RESET DO MICROCONTROLADOR *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; POSIÇÃO INICIAL PARA EXECUÇÃO DO PROGRAMA
ORG 0X00 ; ENDEREÇO DO VETOR DE RESET
GOTO CONFIGURACAO ; PULA PARA CONFIG DEVIDO A REGIÃO
; DESTINADA AS ROTINAS SEGUINTES
EMERSON ELETRÔNICOS Página 44
;*********************************************************************************
;ENDEREÇOS DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X0008 ;VETOR DE INTERRUPÇAO DE ALTA PRIORIDADE
BTFSC INTCON,1
GOTO TRATA_RB0
BTFSC INTCON3,0
GOTO TRATA_RB1
RETFIE
ORG 0X0018 ;VETOR DE INTERRUPÇAO DE BAIXA PRIORIDADE
BCF INTCON3,1 ;DESLIGA FLAG QUE GEROU INTERRUPÇÃO EM RB2
BSF LED2
TESTE_RB2_LIB
BTFSC BT2
GOTO TESTE_RB2_LIB
BCF LED2
RETFIE
TRATA_RB0
BSF LED
TESTE_RB0_LIB
BTFSC BT
GOTO TESTE_RB0_LIB
BCF LED
BCF INTCON,1 ;DESLIGA FLAG RB0
RETFIE
TRATA_RB1
BSF LED1
TESTE_RB1_LIB
BTFSC BT1
EMERSON ELETRÔNICOS Página 45
GOTO TESTE_RB1_LIB
BCF LED1
BCF INTCON3,0 ;DESLIGA FLAG RB0
RETFIE
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES INICIAIS DE HARDWARE E SOFTWARE *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NESTA ROTINA SÃO INICIALIZADAS AS PORTAS DE I/O DO MICROCONTROLADOR E AS
; CONFIGURAÇÕES DOS REGISTRADORES ESPECIAIS (SFR). A ROTINA INICIALIZA A
; MÁQUINA E AGUARDA O ESTOURO DO WDT.
CONFIGURACAO
MOVLW B'11111111'
MOVWF TRISA ; CONFIGURA I/O DO PORTA
MOVLW B'000000111'
MOVWF TRISB ; CONFIGURA I/O DO PORTB
MOVLW B'11111111'
MOVWF TRISC ; CONFIGURA I/O DO PORTC
MOVLW B'11110000'
MOVWF TRISD ; CONFIGURA I/O DO PORTD
MOVLW B'00001111'
MOVWF TRISE ; CONFIGURA I/O DO PORTE
MOVLW B'10000000'
MOVWF RCON ;SISTEMA DE PRIORIDADES HABILITADO <7>
MOVLW B'11010000' ; CONFIGURA INTERRUPÇÕES
MOVWF INTCON ; HABILITA CHAVE GERAL DAS INTERRUPÇÕES E INT EM RB0
EMERSON ELETRÔNICOS Página 46
MOVLW B'11110000' ; PULL UPS DESABILITADOS <7>
MOVWF INTCON2 ; BORDA DE SUBIDA PARA INTERRUPÇÀO EM RB0 <6>, RB1<5>
;E RB2 <4>
MOVLW B'01011000' ;HABILITA CHAVE INDIVIDUAL DE RB1 E RB2
MOVWF INTCON3 ;BAIXA PRIORIDADE PARA RB2 E ALTA PRIORIDADE PARA RB1
MOVLW B'00001111' ; CONFIGURA CONVERSOR A/D
MOVWF ADCON1 ; CONFIGURA PORTA, PORTB E PORTE COMO I/O DIGITAL
;********************************************************************************
;ROTINA PARA LIMPAR OS REGISTRADORES DE ENTRADAS E SAIDAS.
LIMPA_REGS
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CLRF LATA
CLRF LATB
CLRF LATC
CLRF LATD
CLRF LATE
;*****************************************************************************
;PROGRAMA PRINCIPAL
MAIN
NOP
OP
GOTO MAIN
END ; FIM DO PROGRAMA
EMERSON ELETRÔNICOS Página 47
6) Implementar um programa de controle de um semáforo de um cruzamento de duas ruas (A e B) que funcione com ciclo total de 20 segundos, onde o ciclo de cada rua é de 10 segundos, divididos em 10 segundos para o vermelho, 7 segundos para o verde e dois segundos para o amarelo.
Quando o equipamento for ligado as lâmpadas amarelas dos dois semáforos deverão
piscar por 5 vezes em intervalos de 1 segundo e depois ir para o ciclo com semáforo A no
verde. Segue abaixo os pinos do microcontrolador PIC-18F4520 a que serão utilizados.
Caso durante o funcionamento do sistema, o botão de pedestre (RB0 com interrupção externa) seja pressionado, o sistema deverá terminar o ciclo completo, manter os dois semáforos em vermelho e acionar o semáforo para pedestres com 7 segundos em verde, depois o vermelho pedestre deverá piscar por três vezes em intervalos de 1 segundo e assim voltar ao funcionamento normal com o semáforo de pedestre em vermelho.
Verde semáforo A ---------------------RD3
Amarelo semáforo A ------------------RD2
Vermelho semáforo A ----------------RD1
Verde semáforo B----------------------RB7
Amarelo semáforo B ------------------RB6
Vermelho semáforo B ----------------RB5
Verde semáforo pedestre ------------RC2
Vermelho semáforo pedestre -------RC3
EMERSON ELETRÔNICOS Página 48
SOLUÇÃO:
;********************************************************************************** ;1) Implementar um programa de controle de um semáforo de um
;cruzamento de duas ruas (A e B) que funcione com ciclo total ;de 20 segundos, onde o ciclo de cada rua é de 10 segundos, ;divididos em 10 segundos para o vermelho, 7 segundos para o ;verde e dois segundos para o amarelo. ;Quando o equipamento for ligado deverá entrar em funcionamento ;imediatamente, segue abaixo os pinos do microcontrolador ;PIC-16F628a que serão utilizados. ;• Caso durante o funcionamento do sistema, o botão de ;pedestre (RBO com interrupção externa) for pressionado, ;o sistema deverá terminar o ciclo completo, manter os dois ;semáforos em vermelho e acionar o semáforo para pedestres ;com 7 segundos em verde, depois o vermelho pedestre deverá ; piscar por três vezes em intervalos de 1 segundo e assim ;voltar ao funcionamento normal com o semáforo de pedestre ;em vermelho. ;Verde semáforo A ---------------------RB3 ;Amarelo semáforo A ------------------RB2 ;Vermelho semáforo A ----------------RB1 ;Verde semáforo B----------------------RB7 ;Amarelo semáforo B ------------------RB6 ;Vermelho semáforo B ----------------RB5 ;Verde semáforo pedestre ------------RA7 ;Vermelho semáforo pedestre ------RA6 ;********************************************************************************** ; ARQUIVOS DE DEFINICOES ;********************************************************************************** #INCLUDE<P16F628A.INC> ;ARQUIVO PADRAO PARA O PIC 16F628 __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _INTOSC_OSC_NOCLKOUT ; ;********************************************************************************** ; PAGINACAO DA MEMORIA ;********************************************************************************** ; ; COMANDOS PARA ALTERACAO DE PAGINA DE MEMORIA #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANCO 0 DE MEMORIA #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANCO 1 DE MEMORIA ;********************************************************************************** ; VARIAVEIS ;********************************************************************************** CBLOCK 0X20 ;ESPAÇO RESERVADO PARA REGISTRADORES CRIADOS PELO PROGRAMADOR TEMP_1 TEMP_2 TEMP_3 FLAG ;REGISTRADOR QUE POR SER UTILIZADO PARA SINALIZAR ALGUM EVENTO ENDC ;FIM DO BLOCO DE MEMORIA ;********************************************************************************** ;DEFINIÇÃO DOS PINOS DE ENTRADA #DEFINE BT_LIGA PORTA,4 ;ATIVO EM NÍVEL ALTO ;********************************************************************************** ;DEFINIÇÃO DOS PINOS QUE SERAO UTILIZADOS COMO SAIDA #DEFINE SEMAFORO PORTB ;********************************************************************************** ; VETOR DE RESET ;********************************************************************************** ORG 0X00 ;ENDERECO INICIAL DO PROCESSAMENTO GOTO INICIO ;**********************************************************************************
EMERSON ELETRÔNICOS Página 49
; ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES ORG 0X04 BCF INTCON,1 ;DESLIGA FLAG DE RBO BSF FLAG,0 ;LIGA O BIT ZERO DO REGISTRADOR FLAG. QUE SINALIZA QUE ;HOUVE PULSO NO BOTAO RETFIE ; INICIO ;********************************************************************************** ;CONFIGURACAO DOS REGISTRADORES DE PROPOSITOS ESPECIAIS INICIO BANK1 ;CHAVEA O BANCO 1 MOVLW B'00111111' MOVWF TRISA ;DEFINE TODO PORTA COMO ENTRADA ; MOVLW B'00000001' MOVWF TRISB ;DEFINE TODO PORTB COMO SAIDA MOVLW B'11000000' MOVWF OPTION_REG ;PULL_UPS DESABILITADOS<7> ;HABILITADO BORDA DE SUBIDA EM RBO MOVLW B'00010000' MOVWF INTCON ;HABILITADO INT GERAL E INT EM RBO BANK0 MOVLW B'00000111' ;CONFIGURA RA3:RA0 COM I/O <2:0> MOVWF CMCON ;CHAVEA BANCO 0 ;********************************************************************************** ;********************************************************************************** ; ROTINA PRINCIPAL ;********************************************************************************** CLRF PORTA CLRF PORTB CLRF FLAG ;LIMPA O REGISTRADOR CRIADO PARA OS FLAGS BSF INTCON,7 MAIN CICLO_SEMAFORO_A BSF PORTA,6 ;LIGA VERMELHO PEDESTRE MOVLW B'00101000' ; MOVWF SEMAFORO ;LIGA AS LAMPADAS VERDE SEM A E VERMELHA SEMÁFORO B MOVLW .70 CALL DELAY_1SEG ;CHAMA A ROTINA DE TEMPORIZAÇÃO DE 1 SEG POR 7 VEZES MOVLW B'00100100'; MOVWF SEMAFORO;LIGA AS LAMPADAS AMARELO SEMAFRO A E VERMELHA SEMÁFORO B MOVLW .20 CALL DELAY_1SEG ;CHAMA A ROTINA DE TEMPORIZAÇÃO DE 1 SEG POR 7 VEZES MOVLW B'00100010';LIGA AS LAMPADAS VERMELO SEMAFRO A E VERMELHA SEMÁFORO B MOVWF SEMAFORO MOVLW .10 CALL DELAY_1SEG ;CHAMA A ROTINA DE TEMPORIZAÇÃO DE 1 SEG UMA VEZ GOTO CICLO_SEMAFORO_B CICLO_SEMAFORO_B BSF PORTA,6 ;LIGA VERMELHO PEDESTRE MOVLW B'10000010' ; MOVWF SEMAFORO ;LIGA AS LAMPADAS VERDE SEM B E VERMELHA SEMÁFORO A MOVLW .70 CALL DELAY_1SEG ;CHAMA A ROTINA DE TEMPORIZAÇÃO DE 1 SEG POR 7 VEZES
EMERSON ELETRÔNICOS Página 50
MOVLW B'01000010'; MOVWF SEMAFORO ;LIGA AS LAMPADAS AMARELO SEMAFORO B E VERMELHA SEMÁFORO A MOVLW .20 CALL DELAY_1SEG ;CHAMA A ROTINA DE TEMPORIZAÇÃO DE 1 SEG POR 7 VEZES MOVLW B'00100010';LIGA AS LAMPADAS VERMELO SEMAFORO A E VERMELHA SEMÁFORO B MOVWF SEMAFORO MOVLW .10 CALL DELAY_1SEG ;CHAMA A ROTINA DE TEMPORIZAÇÃO DE 1 SEG POR 7 VEZES BTFSS FLAG,0 GOTO CICLO_SEMAFORO_A GOTO CICLO_PEDESTRE CICLO_PEDESTRE BSF PORTA,7 BCF PORTA,6 MOVLW .70 CALL DELAY_1SEG BCF PORTA,7 BSF PORTA,6 MOVLW .10 CALL DELAY_1SEG BCF PORTA,6 MOVLW .10 CALL DELAY_1SEG BSF PORTA,6 MOVLW .10 CALL DELAY_1SEG BCF PORTA,6 MOVLW .10 CALL DELAY_1SEG BSF PORTA,6 MOVLW .10 CALL DELAY_1SEG BCF PORTA,6 MOVLW .10 CALL DELAY_1SEG BCF FLAG,0 GOTO CICLO_SEMAFORO_A DELAY_1SEG ; MOVLW .10 MOVWF TEMP_3 CALL DELAY_100MS DECFSZ TEMP_3,F GOTO $-2 RETURN DELAY_100MS MOVLW .100 MOVWF TEMP_2 CALL DELAY_1MS DECFSZ TEMP_2,F GOTO $-2 RETURN DELAY_1MS ;ROTINA QUE GASTA 1 mS PARA SER EXECUTADA MOVLW .248 MOVWF TEMP_1 NOP DECFSZ TEMP_1,F GOTO $-2 NOP NOP NOP RETURN END ;FIM DO PROGRAMA ;**********************************************************************************
EMERSON ELETRÔNICOS Página 51
7) Desenvolver o programa para um torno cnc que faz dois trabalhos em uma peça. Uma ferramenta FURA a peça e a outra
LIMPA o furo, sendo que a mesma fará o processo em 2 segundos para furar e 2 para limpar.
Quando for dado um pulso negativo na tecla start, o torno deverá entrar em funcionamento furando a peça.
Caso a porta do torno seja aberta o mesmo deverá interromper o seu funcionamento e sinalizar através de uma lâmpada (RD0) que
a porta está aberta.
O torno só deverá voltar a funcionar após ser fechada a porta e pressionado a tecla start novamente, devendo voltar do mesmo
lugar de onde parou antes da porta ser aberta.
Dicas: para o monitoramento da porta deverá utilizar interrupção externa em RB0.
DADOS:
Bt start -------------------RA0 (ativo baixo)
Porta----------------------RB0 (ativo alto)
Ferramenta Fura-------RD2
Ferramenta Limpa-—RD1
SOLUÇÃO:
;Desenvolver o programa para um torno cnc que faz dois trabalhos em uma peça.
;Uma ferramenta FURA a peça e a outra LIMPA o furo, sendo que a mesma fará o
;processo em 2 segundos para furar e 2 para limpar. Caso a porta do torno seja
;aberta o mesmo deverá interromper o seu funcionamento e sinalizar através de
;uma lâmpada (RA6) que a porta está aberta. O torno só deverá voltar a funcionar
;após ser fechada a porta e pressionado a tecla start novamente, devendo voltar
;do mesmo lugar de onde parou antes da porta ser aberta. Dicas: para o
;monitoramento da porta deverá utilizar interrupção externa em RBO.
;Bt start -------------------RA0 (ativo baixo)
;Porta----------------------RB0 (ativo alto)
;**********************************************************************************
; ARQUIVOS DE DEFINICOES
;**********************************************************************************
#INCLUDE<P16F628A.INC> ;ARQUIVO PADRAO PARA O PIC 16F628
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON &
_INTOSC_OSC_NOCLKOUT ;
;**********************************************************************************
; PAGINACAO DA MEMORIA
;**********************************************************************************
;
; COMANDOS PARA ALTERACAO DE PAGINA DE MEMORIA
#DEFINE BANK0 BCF STATUS,RP0 ;SETA BANCO 0 DE MEMORIA
#DEFINE BANK1 BSF STATUS,RP0 ;SETA BANCO 1 DE MEMORIA
;**********************************************************************************
; VARIAVEIS
;**********************************************************************************
CBLOCK 0X20 ;ESPAÇO RESERVADO PARA REGISTRADORES CRIADOS PELO PROGRAMADOR
TEMP_1
TEMP_2
TEMP_3
W_TEMP
STATUS_TEMP
PORTB_TEMP
ENDC ;FIM DO BLOCO DE MEMORIA
;**********************************************************************************
;DEFINIÇÃO DOS PINOS DE ENTRADA
#DEFINE START PORTA,0 ;ATIVO EM NÍVEL BAIXO
#DEFINE SENSOR_PORTA PORTB,0 ;ATIVO EM NÍVEL ALTO
;**********************************************************************************
;DEFINIÇÃO DOS PINOS QUE SERAO UTILIZADOS COMO SAIDA
#DEFINE FURA PORTB,1
EMERSON ELETRÔNICOS Página 52
#DEFINE LIMPA PORTB,2
#DEFINE LED_PORTA PORTA,6
;**********************************************************************************
; VETOR DE RESET
;**********************************************************************************
ORG 0X00 ;ENDERECO INICIAL DO PROCESSAMENTO
GOTO INICIO
;**********************************************************************************
; ENDEREÇO DE TRATAMENTO DE INTERRUPÇÕES
ORG 0X04
BCF INTCON,1 ;DESLIGA FLAG DE INTERRUPÇÃO EM RBO
SALVA_REGS
MOVWF W_TEMP ;MOVE O CONTEÚDO DE W PARA W_TEMP
SWAPF W_TEMP,F ;INVERTE OS NIBBLES ALTO E BAIXO DO REGS W TEMP
MOVF STATUS,W ;MOVE O CONTEÚDO DE STATUS PARA W
MOVWF STATUS_TEMP ;MOVE O VALOR CONTEUDO DE W PARA STATUS_TEMP
SWAPF STATUS_TEMP,F ;INVERTE OS NIBBLES DE STATUS_TEMP
SWAPF PORTB,W ;INVERTE OS NIBBLES DE PORTB, E SALVA O RESULTADO EM W
MOVWF PORTB_TEMP ;MOVE O CONTEÚDO DE W PARA PORTB_TEMP
BSF LED_PORTA ;LIGA LED QUE SINALIZA PORTA ABERTA
BCF FURA ;DESLIGA A FERRAMENTA FURA
BCF LIMPA ;DESLIGA A FERRAMENTA LIMPA
BTFSC SENSOR_PORTA ;VERIFICA SE A PORTA AINDA ESTÁ ABERTA
GOTO $-1 ;PORTA AINDA ABERTA, CONTINUE TESTANTO
BCF LED_PORTA ;PORTA FECHADA, DESLIGA LED QUE INDICA PORTA ABERTA
BTFSC START ;VERIFICA SE START FOI PRESSIONADO
GOTO $-1 ;START NÃO PRESSIONADO, CONTINUE TESTANDO
RECUPERA_REGS
SWAPF PORTB_TEMP,W ; INVERTE OS NIBBLES DO PORTB_TEMP E SALVA EM W
MOVWF PORTB ;MOVE O VALOR DE W PARA PORTB(RECUPERA O ESTADO ORIGINAL)
SWAPF STATUS_TEMP,W ;INVERTE OS NIBBLES DE STATUS TEMP, E GUARDA EM W
MOVWF STATUS
SWAPF W_TEMP,W;INVERTE OS NIBBLES DE W_TEMP E GUARDA O RESULTADO EM W
RETFIE ;RETORNA DA ROTINA DE INTERRUPÇÃO
; INICIO
;**********************************************************************************
;CONFIGURACAO DOS REGISTRADORES DE PROPOSITOS ESPECIAIS
INICIO
BANK1 ;CHAVEA O BANCO 1
MOVLW B'00111111'
MOVWF TRISA ;DEFINE TODO PORTA COMO ENTRADA
;
MOVLW B'00000001'
MOVWF TRISB ;DEFINE TODO PORTB COMO SAIDA
MOVLW B'11000000'
MOVWF OPTION_REG ;PULL_UPS DESABILITADOS<7>
;HABILITADO BORDA DE SUBIDA EM RBO
MOVLW B'00010000'
MOVWF INTCON ;HABILITADO INT EM RBO
BANK0
MOVLW B'00000111' ;CONFIGURA RA3:RA0 COM I/O <2:0>
MOVWF CMCON
EMERSON ELETRÔNICOS Página 53
;CHAVEA BANCO 0
;**********************************************************************************
; ROTINA PRINCIPAL
;**********************************************************************************
CLRF PORTA
CLRF PORTB
BSF INTCON,GIE ; HABILITA CHAVE GERAL DE INTERRUPÇÕES
MAIN
BTFSC START
GOTO $-1
GOTO LOOP
LOOP
BSF FURA
MOVLW .20
CALL DELAY_1SEG
BCF FURA
BSF LIMPA
MOVLW .20
CALL DELAY_1SEG
BCF LIMPA
GOTO LOOP
DELAY_1SEG
; MOVLW .10
MOVWF TEMP_3
CALL DELAY_100MS
DECFSZ TEMP_3,F
GOTO $-2
RETURN
DELAY_100MS
MOVLW .100
MOVWF TEMP_2
CALL DELAY_1MS
DECFSZ TEMP_2,F
GOTO $-2
RETURN
DELAY_1MS ;ROTINA QUE GASTA 1 mS PARA SER EXECUTADA
MOVLW .248
MOVWF TEMP_1
NOP
DECFSZ TEMP_1,F
GOTO $-2
NOP
NOP
NOP
RETURN
END ;FIM DO PROGRAMA
;**********************************************************************************
EMERSON ELETRÔNICOS Página 54
ESQUEMA ELÉTRICO COMPLETO – SCH_A
EMERSON ELETRÔNICOS Página 55
ESQUEMA ELÉTRICO COMPLETO – SCH_B
EMERSON ELETRÔNICOS Página 56
TERMO DE GARANTIA
Os produtos da EMERSON ELETRÔNICOS possuem 1 ano de garantia a partir da data de
aquisição, as condições de utilização devem ser atendidas para que o produto não perca a
garantia.
A garantia de fabrica envolve apenas defeitos detectados de fabricação, estando isentas de
garantias as condições descritas a seguir.
Os kit perdem a garantia nos seguintes casos:
Detectado infiltração de líquido de qualquer natureza.
Detectado defeitos ocasionados por quedas, ou por objetos que possa ter caído sobre o
mesmo.
Defeitos em cabos de alimentação ou gravação ocasionados por torção ou tensão
mecânica acima do permitido.
Alimentação do kit em tensão elétrica acima do permitido para o equipamento.
Defeitos ocasionados por erros de utilização, tais como curto circuitos provocados por
ligações erradas.
Defeitos ocasionados por armazenamento em condições inadequadas.
Utilização do equipamento para fins diferentes do que foi projetado.
Abertura e tentativa de conserto do produto por pessoa não autorizada pela EMERSON
ELETRÔNICOS.
Os CPLDs e MICROCONTROLADORES e CIRCUITOS INTEGRADOS NÃO são cobertos
pela garantia por não serem de fabricação da EMERSON ELETRÔNICOS e por não
receber garantia de seus fabricantes, além de serem sensíveis a estática e erros de
ligação.
Os gastos e responsabilidade sobre transporte dos equipamentos até a assistência técnica
e retorno são do cliente e não da EMERSON ELETRÔNICOS.
Para quer esclarecimento sobre utilização consulte sempre nossa equipe pelo site:
www.professoremersonmartins.com.br