• Nenhum resultado encontrado

INSTITUTO DE TECNOLOGIA EMERSON MARTINS

N/A
N/A
Protected

Academic year: 2021

Share "INSTITUTO DE TECNOLOGIA EMERSON MARTINS"

Copied!
56
0
0

Texto

(1)

KIT DIDÁTICO P02

Manual didático para utilização da plataforma P02

www.professoremersonmartins.com.br

INSTITUTO DE TECNOLOGIA EMERSON MARTINS

(2)

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

(3)

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

(4)

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.

(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

(6)

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

(7)

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

(8)

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.

(9)

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

(10)

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

(11)

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

(12)

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 0000

2

à 1111

2

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 1111

2

não foi utilizada e não tem

nenhum efeito no funcionamento.

O esquema elétrico da P02 é apresentado na figura 16:

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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.

(18)

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.

(19)

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

(20)

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.

(21)

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.

(22)

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.

(23)

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.

(24)

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.

(25)

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.

(26)

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.

(27)

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.

(28)

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.

(29)

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.

(30)

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.

(31)

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 ;*****************************************************************************

(32)

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 * ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

(33)

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

(34)

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.

(35)

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 *

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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.

(41)

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 *

; * *

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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

(50)

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

(51)

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

(52)

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

Referências

Documentos relacionados

Lá estão sendo feitas coisas como turbinas muito mais eficientes para gerar a energia, eletrodomésticos, motores elétricos e iluminação urbana de altíssima eficiência,

Considerando que essa despesa foi utilizada para fins de gerenciamento de resultados visando alinhá-lo a previsão dos analistas, espera-se que o efeito da mudança da ETR do quarto

§ 1º Só é admitido o registro do estatuto de Partido Político que tenha caráter nacional, considerando-se como tal aquele que comprove o apoiamento de, pelo menos, meio por cento

Alergia nasal : é mais feliz quem respira pelo nariz.. / editores Fátima Emerson, Nelson

EMERSON LUCIANO STEIN

Também para a nossa realidade de Ordinariato castrense, tanto as Jornadas Mundiais, como a sua preparação, são um kairós, uma graça que o Senhor nos está a conceder

Há mais de 30 anos, a Micro Motion da Emerson é a líder em tecnologia, oferecendo os mais precisos dispositivos de medição de fluxo, densidade e concentração para aplicações

Teremos a oportunidade de demonstrar um pouco de nossa gratidão perante a infinita bondade do nosso Deus, trazendo alimentos não perecíveis no culto de ação de graças do dia 15