Escolar Documentos
Profissional Documentos
Cultura Documentos
1.1 - Introduo
Os avanos tecnolgicos conseguidos na fabricao de semicondutores permitiram o surgimento dos microprocessadores. Com isso, foi possvel que os computadores se tornassem cada vez mais compactos e seus custos mais acessveis, permitindo uma ampliao nas possibilidades de suas utilizaes. Onde no se imaginava utilizar sistemas computadorizados h poucos anos atrs, hoje j se faz um amplo uso do computador. Como a indstria tem como principal objetivo, um aumento na qualidade de seus produtos e aumentar a quantidade de produtos fabricados no mesmo tempo, indispensvel que os profissionais do ramo eletrnico tenham um bom conhecimento sobre seu funcionamento. A seguir so apresentados alguns eventos cronologicamente, que podem ser considerados como relevantes para a histria do atual microcomputador. Foram estas idias iniciais que levaram a tecnologia ao que ela hoje. 1642 Com 19 anos de idade Pascal inventa a primeira calculadora automtica (inteiramente mecnica) para ajudar o pai que era cobrador de impostos. 1820 Charles Babbage inventa a Difference Engine para uso na navegao naval, apenas somava e subtraa. 1834 Charles Babbage tenta criar a Analytical Engine, o primeiro computador digital programvel totalmente mecnico. Gasta 17000 libras do governo britnico e toda a sua fortuna pessoal no projeto. No entanto, problemas de natureza mecnica nunca permitiram que a mquina funcionasse com xito. 1936 Surge o primeiro computador a rels projetado por um estudante de engenharia alemo, nunca chegou a ser usado, pois foi destrudo durante um bombardeio de Berlim pelos aliados. 1943 Colossus: Primeiro computador eletrnico encomendado pelo governo britnico para decifrar comunicaes dos submarinos alemes, cifradas com outra mquina chamada Enigma. Possua dimenses gigantescas, cerca de 1.500 vlvulas e era capaz de processar cerca de 5.000 caracteres por segundo. 1944 Mark I: Primeiro computador americano de uso genrico produzido como o apoio da IBM (International Business Machines), projetado em Harvard. Armazenava 72 words de 23 dgitos e tinha um tempo de instruo de 6s. Media dezoito metros de comprimento, por dois metros e meio de altura. 1946 ENIAC (Electronic Numerical Integrator and Calculator): Primeiro computador a se tornar amplamente conhecido. Construdo com 18 mil vlvulas, consumia 178kW de energia e ocupava uma rea de 167m2 na Universidade da Pennsylvania (EUA). Sua construo demorou trs anos e custou US$ 500.000,00. Em vez da lgica binria, ele trabalhava com nmeros decimais. Incapaz de armazenar programas em memria exigia que um programador conectasse um grande nmero de cabos que definia os cdigos a serem processados. Hoje seu poder de processamento caberia num quadrado de silcio com menos de 0,5mm de lado. Foi construdo para clculo de ngulos de artilharia, mas s ficou pronto depois da guerra. 1949 EDSAC (Electronic Delay Storage Automatic Computer): Primeiro computador que armazenava programas em memria. 1951 WHIRLWIND I: Primeiro computador de tempo real desenvolvido no MIT (Massachusetts Institute of Technology). 1951 UNIVAC (Universal Automated Computer): Primeiro computador comercialmente 2
vendido. 1952 IAS: O matemtico Von Neumann cria a arquitetura que ainda hoje utilizada na maioria dos computadores. 1962 7094: Mquina criada pela IBM que dominou o mercado cientfico no incio dos anos 60. 1964 A IBM cria a famlia 360, a primeira famlia de produtos de informtica. 1971 A Intel lana o 4004, primeiro processador programvel de 4 bits em um nico chip. A rpida evoluo na tecnologia dos microprocessadores se deve principalmente capacidade de se integrar cada vez mais transistores em uma nica pastilha. Foi ento criada uma terminologia para identificar a escala de integrao dos componentes. Os primeiros chips de semicondutores possuam um transistor cada, avanos subseqentes adicionaram mais e mais transistores a esses chips, e como conseqncia mais funes individuais ou sistemas eram integrados ao mesmo ao longo do tempo. As terminologias utilizadas so: SSI (Small Scale of Integration) Dezenas de transistores por chip. MSI (Medium Scale of Integration) Centenas de transistores por chip. LSI (Large Scale of Integration) Dezenas de milhares de transistores por chip. VLSI (Very Large Scale of Integration) Centenas de milhares de transistores por chip. ULSI (Ultra Large Scale of Integration) Milhes de Transistores por chip. Tabela 1.1 Tamanho dos transistores, quantidade e freqncia de trabalho (maior) dos microprocessadores da Intel ao longo dos anos, mostrando a velocidade da evoluo tecnolgica da microeletrnica. Ano 1971 1972 1974 1978 1979 1982 1985 1989 1993 1995 1997 1999 2000 2002 2005 2006 2007 2008 Processador 4004 8008 8080 8086 8088 286 386 486 Pentium Pentium Pro Pentium II Pentium III Pentium 4 Pentium M Pentium D Core2 Duo Quad Core 2 Core i7 Comprimento de canal do transistor (L) 10m 10m 6m 3m 3m 1,5m 1,5m 1m 0,8m 0,6m 0,25m 0,18m 0,18m 90 nm 65 nm 65 nm 45 nm 45 nm Nmero de Transistores 2.300 3.500 4.500 29.000 29.000 134.000 275.000 1.200.000 3.100.000 5.500.000 7.500.000 9.500.000 42.000.000 55.000.000 291.000.000 291.000.000 820.000.000 781.000.000 Freqncia Inicial de Operao 108 kHz 500 - 800 kHz 2 MHz 5 MHz 5 MHz 6 MHz 16 MHz 25 MHz 66 MHz 200 MHz 300 MHz 500 MHz 1,5 GHz 1,7 GHz 3,2 GHz 2,93 GHz > 3GHz 2,66 GHz
1.2 - O microcomputador
um equipamento cuja funo executar automaticamente uma seqncia de operaes para as quais foi anteriormente programado. Os microcomputadores so equipamentos capazes de executarem diferentes tarefas para atender s vrias necessidades do usurio, os quais podem ter finalidades gerais. Quando utilizamos em aplicaes gerais como os microcomputadores comercializados, definimos como sendo os de finalidades gerais. Para poderem atender uma aplicao determinada, so projetados os de finalidades especficas. Os dados nos computadores so armazenados e expressos em linguagem binria que utiliza os dgitos 0 e 1. Essas condies so obtidas por meio de flip-flop, que so dispositivos de armazenamento nos sistemas de computadores. O bit pode ser definido como uma unidade bsica de representao de dados em qualquer sistema de computador. Os computadores processam dados com extenso de 8 bits ou um de seus mltiplos, 16, 32, 64. Determinados nmeros de bits so denominados de palavra Word, o qual pode conter, 1, 2, 4, 8, 16, 32 e 64 bits. A palavra de 4 bits chamada de nibble e a palavra de 8 bits de byte. Uma palavra pode representar um dado ou uma diretriz chamada de instruo. O que torna imprescindvel citarmos as definies de: Hardware: Consiste de circuitos eletrnicos responsveis pela execuo direta de instrues em linguagem de mquina: C. Is, placas de circuitos impressos, cabos, fontes de alimentao etc. Software: O grupo ou conjunto de instrues apresentadas ao computador chama-se programa, o qual consiste de algoritmos, que o processo pelo qual as operaes lgicas so executadas pela mquina. Firmware: Consiste de um software embutido em circuitos eletrnicos. comum dizer que qualquer operao feita por software pode tambm ser construda por hardware e qualquer instruo executada pelo hardware pode tambm ser simulada por software.
Tecnologia da memria utilizada. Um exemplo que mostra a diferena de arquitetura e organizao claramente visto quando se coloca em pauta as seguintes questes: Vale a pena ter uma instruo no meu computador que faa multiplicao? (Este assunto est diretamente relacionado arquitetura da mquina). Como vou realizar a multiplicao: vrios passos, pipeline...? (Este assunto est diretamente relacionado organizao da mquina).
INTERFACE
MEMRIA
DMA
DISPOSITIVO DE I/0
Figura 1 Sistema de Microcomputador tpico e suas interfaces Os blocos funcionais representados no diagrama acima so construdos com circuitos integrados (C. Is). Os circuitos integrados so componentes que possuem um elevado nvel de integrao de componentes em uma nica pastilha, esse processo denominado de LSI Large Scale Integration, ou seja Integrao em larga escala. O conjunto de C.Is. que forma os blocos funcionais de um computador tambm conhecido como hardware. Microprocessador O microprocessador ou Unidade Central de Processamento (CPU) um dispositivo digital baseado numa nica pastilha (CHIP). Esta pastilha, por si s, tem a capacidade de controlar e manipular dispositivos externos como: memrias, portas de I/O (entrada/sada) e outros circuitos. Os microprocessadores utilizam sistemas seqenciais sncronos, ou seja, utilizando um CLOCK. A cada pulso de clock ou grupo de pulsos (pode ser de 3 em 3, por exemplo) executamse uma funo especfica. 5
Hoje temos microprocessadores rodando com clock de 3GHz da INTEL, que pode executar centenas de milhes de instrues por segundo. Um microprocessador pode ser divido segundo seus blocos funcionais: * * * registradores e contadores; unidade lgica e aritmtica; unidade de controle e sincronizao.
Os registradores e contadores so utilizados para o armazenamento temporrio dos bits dentro do microprocessador. Este tipo de tarefa executado pelo registrador e decodificador de instruo, pelo contador de programa e pelo acumulador. A Unidade Lgica Aritmtica (ULA) responsvel pelas operaes lgicas e aritmticas entre os bits, gerando uma outra palavra como sada. Estas operaes so executadas entre o acumulador e o registrador temporrio do microprocessador com os quais a ULA se comunica internamente e o resultado armazenado no prprio acumulador. A unidade de controle e sincronizao coordena e controla todas os blocos funcionais do computador em uma seqncia lgica e sincronizada. Ela recebe as instrues vindas do programa armazenado na memria de programa j decodificado pelo decodificador de instrues e emite os sinais de sincronizao e controle para as diversas partes do computador. Unidade de Memria A unidade de memria parte do sistema na qual so armazenados os dados e os programas que podem ser executados pelo computador. A unidade de memria possui dois tipos de memria: * * Memria de Leitura (ROM - Read Only Memory); Memria de Acesso Aleatrio (RAM - Randomic Acess Memory).
Na ROM, correspondente parte de unidade de memria que armazena as instrues que constituem o programa monitor. A memria RAM parte da memria responsvel pelo armazenamento dos dados que sero usados durante a execuo do programa. Para que seja possvel localizar uma entre muitos dados armazenados na memria necessrio que as posies destes dados sejam numeradas. Essas posies so chamadas de endereos. No prximo capitulo vamos estudar os diversos tipos e principais caractersticas das memrias. Unidade de I/O As unidades de I/O so as interfaces pelos quais o usurio comunica-se com o computador e vice-versa. As unidades de I/O possuem conexo com dispositivos chamados unidades perifricas, tais como: teclados, terminais de vdeo, impressoras, etc. Interface A interface um dispositivo que auxilia na transferncia de informaes entre a Unidade Central de Processamento e dispositivos perifricos. Ela usada principalmente em sistemas que possuem somente uma CPU e vrios dispositivos perifricos. DMA DMA ou Direct Memory Acess (Acesso Direto Memria) o processo de comunicao direta entre dispositivos perifricos e memria. Este processo se deve ao fato da necessidade de se aumentar velocidade de transferncia de dados. 6
1.4 Exerccios 1 Qual o principal objetivo da aplicao do microcontrolador na industria ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 2 Qual a funo do microcomputador e qual sua finalidade ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 3 Defina: a Hardware __________________________________________________________________ __________________________________________________________________ b Software __________________________________________________________________ __________________________________________________________________ c firmware __________________________________________________________________ __________________________________________________________________ 4 Quais os blocos bsicos que compe o microcomputador ? Defina-os. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
Anotaes:
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
8
CAPTULO 2
Memria
RAM ROM
2 MEMRIA
Memria parte do sistema onde so armazenados os programas e dados necessrios realizao das operaes efetuadas pelo computador. A memria equivalente a milhares de registradores, cada um armazenando uma palavra binria. Os microcomputadores de 8 bits utilizam memrias de semicondutores com at 65536 posies, cada uma capaz de armazenar um byte de informao. Alm das memrias de semicondutores, outros dispositivos mais comuns tambm podem ser citados: Carto de papel perfurado, fita magntica, disco magntico, tambor magntico, ncleo magntico, memria de bolha. Memrias que possuem a caracterstica de podermos acessar qualquer registrador da memria de modo aleatrio sem antes percorrermos toda a estrutura da memria atravs de endereo dos registradores desejados, so conhecidas como memrias de acesso randmico. Diferente das memrias de acesso seqenciais onde muito mais rpido acessarmos a memria seqencialmente j que para acessarmos dados em diferentes posies da memria h a necessidade de se percorrer a estrutura ate chegarmos no ponto desejado, implicando num tempo maior de leitura. Dentre os vrios tipos de memria, as mais comuns so as memrias RAM e as memrias ROM.
Figura 2 Ilustrao de memria RAM As RAMs podem ser do tipo dinmicas ou estticas. RAM dinmica: (DRAM Dynamic Random Access Memory). a memria que perde a informao armazenada mesmo quando a alimentao constante. Isso acontece porque cada clula da DRAM apresenta um transistor MOSFET e um capacitor que armazena um dado (1 bit). O transistor fica em srie com o capacitor de armazenamento e cumpre a funo de uma chave que permite a entrada ou sada da carga do capacitor quando o pino WE ativado. Devido s fugas de carga do capacitor, h necessidade de reposio dessas cargas atravs de um pulso de REFRESH, vindo do microprocessador. Esse processo requer que todas as clulas de armazenamento sejam endereadas pelo menos uma vez a cada 2 milissegundos. Um circuito contador externo a memria geralmente incorporado ao sistema para ativar o barramento de endereo, quando o microprocessador no est acessando a memria. 10
Existem vrios tipos de memrias DRAM que diferem no modo que elas se comunicam com o sistema, mas cujo principio de armazenamento o mesmo, abaixo citamos algumas delas: EDO (Extended Data Output). Pode manter a sada de dados de um endereo enquanto seta um novo endereo. Utilizada em sistemas de fonte de informao. VRAM (Vdeo RAM). Utilizadas em aceleradores de vdeo. RDRAM - (Rambus DRAM). Fabricada pela Rambus Inc, por isso RDRAM, possui algumas desvantagens em alguns aspectos, em compensao tem uma taxa de transferncia de dados muito alta, cerca de 1000Mbps contra 200Mbps das DRAM comuns. utilizada principalmente em aceleradores de vdeo e em certos videogames, como o Ultra 64 da Nintendo. PSRAM (Pseodo Static Ram). Memria RAM dinmica que simula uma RAM esttica. uma alternativa barata para substituir as RAMs estticas, que so mais caras. utilizada em sistemas embutidos. SDRAM (Synchronous DRAM). Soma um sinal de clock separado. Pode conter estados de maquinas mais complexos. CDRAM (Cached DRAM). Combinam a memria principal e memria cach num nico chip. O controlador da memria cach deve ser adicionado externamente. RAM esttica: (SRAM Static Random Access Memory). uma memria que no necessita de circuitos adicionais em um microprocessador e as informaes permanecem registradas enquanto no houver nova escrita, ou no faltar alimentao aos biestveis utilizados na construo da clula de memria. Enquanto a alimentao for mantida constante, o biestvel permanece travado e pode armazenar o bit indefinidamente. mais rpida que a DRAM, mas por causa de sua pouca densidade de informao temos menor capacidade de armazenamento do que uma DRAM. Geralmente so mais caras que as DRAM e so utilizadas principalmente em locais onde a velocidade extremamente importante como na memria cach.
Sada
Saida em tristate
11
Os transistores T3 e T4 funcionam como chaves lgicas que levam a sada a nvel 1 e 0 respectivamente. Todavia, quando a entrada desabilitadora est em nvel 0 coloca os dois transistores em corte por meio do diodo D. Este drena o potencial de T2 para massa. Assim, a sada fica em alta impedncia em relao fonte (nvel 1) e ao terra (nvel 0). O smbolo do dispositivo de trs estados apresentado abaixo. Entrada Sada
D Figura 4 Smbolo Dispositivos de trs estados podem ser acrescentados s linhas de dados de uma memria para que vrios chips do sistema possam usar o mesmo barramento de comunicao. Essas chaves de trs estados j incorporadas ao C. I. permitem conectar ou desconectar as linhas de sada do barramento de dados.
2.4 RAM
Entre as milhares memrias do tipo RAMs comercializadas atualmente, a 6116 de tecnologia de fabricao MOS, ser apresentada como exemplo. Essa memria equivalente a 2128. Possui as seguintes caractersticas. Capacidade: 2K x 8 bits Alimentao: simples de 5v Tempo de acesso de chip enable (CE): 400 ns (Mximo) Nvel de tenso: compatvel com nvel TTL Sada / entrada de dados comum No requer clocks ou strobe 12
Descrio da pinagem
10
Figura 5 Pinagem da memria RAM 6116 ou 2128 A correspondncia entre pinos e sinais de entrada / sada comentada na tabela a seguir. Pino 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Sinal A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 Vss D3 D4 D5 D6 D7 CE A10 OE Bit 7 de endereo Bit 6 de endereo Bit 5 de endereo Bit 4 de endereo Bit 3 de endereo Bit 2 de endereo Bit 1 de endereo Bit 0 de endereo Bit 0 de dado Bit 1 de dado Bit 2 de dado Alimentao GND = referencia 0 volt Bit 3 de dado Bit 4 de dado Bit 5 de dado Bit 6 de dado Bit 7 de dado Habilita o chip quando em nvel zero. Bit 10 de endereo Habilita barramento de dado quando em nvel zero (tri-state). 13 Funo
21 22 23 24
WE A9 A8 VCC
Habilita escrita quando em nvel zero; habilita leitura quando em nvel 1 Bit 9 de endereo Bit 8 de endereo Alimentao Vcc = +5v
A tabela abaixo mostra os nveis necessrios para ativar os pinos CE / OE e WE. Seleo CE / OE H H L L Leitura / Escrita WE L H L H Sada D0 a D7 Tri-state Tri-state Escrita (entrada de dados) Leitura (sada de dados)
2.5 ROM
ROM: Ready Only Memory Memria somente de leitura Memria no voltil, ou seja, sua informao mantida mesmo sem alimentao. A memria ROM equivalente a um grupo de registradores, onde cada um capaz de armazenar permanentemente uma palavra. Os microcomputadores podem usar mais de uma ROM. O nmero dessas memrias depende da extenso do programa a ser armazenado. As ROMs so usadas para armazenar no s programas principais como tambm sub-rotinas e microprogramas. So tambm bastante teis para o armazenamento de tabelas trigonomtricas, tabelas de diviso e multiplicao, tabelas de logaritmos, tabela de raiz quadrada ou programas de partida e gerenciamento do sistema (programa monitor). Veja abaixo o esquema de uma ROM. Endereo An . A0 ROM Controle S Sada de leitura de dados
Figura 6 Esquema de uma memria ROM As entradas A0 at An formam as linhas de endereo, e a sada de leitura S corresponde ao dado gravado na posio selecionada pelo endereo. A ROM (Read Only Memory) uma memria s de leitura, ou seja, uma vez gravada a informao no pode mais ser apagada. Para gravao, o processo realizado no fabricante, que confecciona uma mascara que permite a produo das memrias. Os CD-ROMs tambm possuem seu contedo fixo, logo so memrias ROM. 14
A PROM (Programmable Read Only Memory) permite que o prprio usurio armazene os dados / programas desejados. Isso feito com o auxlio de um programador PROM. A memria possui uma malha de linhas cruzadas em forma de grade semelhante da ROM. Em cada interseo da grade est localizado um dispositivo (Diodo, transistor bipolar ou MOS) e em serie com cada dispositivo existe um elemento de interrupo (fusvel ou diodo). Os elos fusveis so queimados por meio da saturao de um transistor localizado na interseo linha / coluna cujo endereo foi selecionado pelo circuito de decodificao. Nas PROMs que utilizam diodos, os cruzamentos linha / coluna da grade so unidos por dois diodos ligados em serie oposta. Abaixo temos uma figura que mostra a estrutura e o esquema eltrico de uma PROM que se utiliza diodos.
Figura 7 Estrutura de uma memria PROM por diodos A EPROM (Erasable Programmable Read Only Memory), isto , uma memria programvel e apagvel apenas de leitura. uma ROM que pode ser apagada e reprogramada um nmero indeterminado de vezes. As informaes so apagadas pela exposio do chip luz ultravioleta (UV) de alta intensidade, a qual penetra por uma abertura de cristal (quartzo) existente no centro do circuito integrado. A EPROM no pode ser apagada seletivamente, isto , no pode ter apenas parte de seus bits apagados. Quando exposta a UV, todos os bits so apagados. A EEPROM ou EAROM (Eletrically Erasable Programmable Read Only Memory) ou (Eletrically Alterable Programmable Read Only Memory), no necessitam de UV para serem apagadas e sim de impulsos eltricos. Uma outra vantagem o fato de no ser necessrio retirar esta memria do circuito para ser reprogramada. Apesar de serem memrias que apresentam caractersticas no volteis, as informaes que se encontram armazenadas tendem a se deteriorar com o tempo, o que no ocorre com as outras memrias da famlia ROM. Tem como grande desvantagem um custo elevado e que podem ser apagada somente 10 mil vezes. A FLASH MEMORY so memrias com caractersticas similares a EEPROM e EPROM, em um produto que oferece as vantagens destas memrias sem o alto custo, onde temos: - No voltil, apagvel eletricamente total ou por setor, no prprio circuito, grande densidade, alta velocidade de acesso e o j citado baixo custo. A clula de memria Flash semelhante clula de uma EPROM, e constituda por um nico transistor. Na memria Flash, uma fina camada de oxido de silcio forma a porta do transistor, permitindo apagar eletricamente a memria e uma maior densidade que as EEPROMs, com um custo menor. 15
2.6 - EPROM
As memrias bipolares so mais rpidas que as memrias MOSFETs. Entre as milhares memrias ROMs comercializadas atualmente, a 2732-A de tecnologia de fabricao EPROMMOS, ser apresentada como exemplo. Possui as seguintes caractersticas. Capacidade: 4K x 8 bits Alimentao: fonte nica de 5v Tempo de acesso: 450 ns (Mximo) Tempo de programao total: 200s Nvel de tenso de programao: +21 v Descrio da pinagem
Figura 7 Pinagem da memria ROM 27C32. A correspondncia entre pinos e sinais de entrada / sada comentada na tabela a seguir. Pino 1 2 3 4 5 6 7 8 9 10 11 Sinal A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 Bit 7 de endereo Bit 6 de endereo Bit 5 de endereo Bit 4 de endereo Bit 3 de endereo Bit 2 de endereo Bit 1 de endereo Bit 0 de endereo Bit 0 de dado Bit 1 de dado Bit 2 de dado 16 Funo
12 13 14 15 16 17 18 19 20 21 22 23 24
Vss D3 D4 D5 D6 D7 CE A10
Alimentao GND = referencia 0 volt Bit 3 de dado Bit 4 de dado Bit 5 de dado Bit 6 de dado Bit 7 de dado Habilita o chip quando em nvel zero. Bit 10 de endereo
OE / Vpp Habilita barramento de dado quando em nvel zero (tri-state). Passa para o modo de programao quando em +21 v A11 A9 A8 VCC Bit 11 de endereo Bit 9 de endereo Bit 8 de endereo Alimentao Vcc = +5v
Antes de programar uma memria EPROM, necessrio verificar se esta apagada, onde deve apresentar todos os endereos em nvel 1 e a leitura em qualquer posio de memria devera apresentar o dado FFh. Para apagar esta memria o fabricante recomenda a exposio do CI luz ultravioleta de intensidade 12mW por cm2, por um intervalo de tempo aproximado de 600s. A tabela abaixo mostra os nveis necessrios para ativar os pinos CE / OE e WE. Pinos 18 20 24 9 a 11 13 a 17 Funo CE / PGM OE / Vpp Vcc Sada de dados leitura VIL VIL 5v Sada Q Sada nohabilitada Irrelevante VIH 5v HI - Z Baixo consumo VIH Irrelevante 5v HI - Z Programao (escrita) VIL 21 v 5v Entrada de dados Inibio VIH 21 v 5v HI Z
2.8 Exerccios 1 O que memria e qual a sua funo? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 2 Defina memria RAM. Comente sobre suas principais caractersticas. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 3 Qual a diferena entre uma memria RAM dinmica e uma RAM esttica ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 4 Qual a aplicao em que devemos utilizar uma memria RAM esttica ? E a dinmica ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 5 Comente sobre o dispositivo tri-state. Em quais componentes j temos esta implementao ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 6 Determine a capacidade de acesso das memrias abaixo relacionadas. a Memria com pinos de endereamento de A0 at A11 e 8 bits de dados. __________________________________________________________________ b Memria com pinos de endereamento de A0 at A13 e 8 bits de dados. __________________________________________________________________
18
7 Defina memria ROM. Comente sobre suas principais caractersticas. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 8 Quais os tipos de memria ROM ? Comente sobre cada um dos tipos. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 9 Antes de efetuarmos a programao em uma programao em uma memria EPROM, o que necessrio verificar. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 10 Defina memria virtual e indique suas principais caractersticas. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
19
Anotaes:
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
20
CAPTULO 3
21
3.1 Microprocessador
O microprocessador ou Unidade Central de Processamento (CPU) um dispositivo digital baseado numa nica pastilha (CHIP). Esta pastilha, por si s, tem a capacidade de controlar e manipular dispositivos externos como: memrias, portas de I/O (entrada/sada) e outros circuitos. 22
Os microprocessadores utilizam sistemas seqenciais sncronos, ou seja, utilizando um CLOCK. A cada pulso de clock ou grupo de pulsos (pode ser de 3 em 3, por exemplo) executamse uma funo especfica. Hoje temos microprocessadores rodando com clock de 3GHz da INTEL, que pode executar centenas de milhes de instrues por segundo. Um microprocessador pode ser divido segundo seus blocos funcionais: * * * registradores e contadores; unidade lgica e aritmtica; unidade de controle e sincronizao.
Os registradores e contadores so utilizadas para o armazenamento temporrio dos bits dentro do microprocessador. Este tipo de tarefa executado pelo registrador e decodificador de instruo, pelo contador de programa e pelo acumulador. A Unidade Lgica Aritmtica (ULA) responsvel pelas operaes lgicas e aritmticas entre os bits, gerando uma outra palavra como sada. Estas operaes so executadas entre o acumulador e o registrador temporrio do microprocessador com os quais a ULA se comunica internamente e o resultado armazenado no prprio acumulador. A unidade de controle e sincronizao coordena e controla todos os blocos funcionais do computador em uma seqncia lgica e sincronizada. A UCP chama as instrues da memria, decodifica-as e executa-as, alm de alimentar as portas de entrada / sada a fim de operacionalizar as instrues recebidas, ou seja, ela recebe as instrues vindas do programa armazenado na memria de programa j decodificadas pelo decodificador de instrues e emite os sinais de sincronizao e controle para as diversas partes do computador.
Decodificador de Instrues
Controle da CPU
ALU
(Aritmetic Logic Unit)
Registrador da CPU
Figura 8 Arquitetura padro de um microprocessador Podemos destacar os seguintes blocos da arquitetura apresentada. Registrador da CPU ou acumulador Registrador principal, que contem o dado a ser processado. o responsvel por armazenar os resultados de adies, subtraes e outras operaes executadas pelo sistema. Controle da CPU tambm responsvel pelo Apontador de Pilha (Stack Pointer SP) Registrador que aponta para o endereo de retorno de sub-rotina, sendo este ultimo armazenado em uma pilha de memria. necessrio na inicializao carregar no apontador o endereo inicial da pilha. Controle de endereos ou Contador de Programa (Program Counter PC) Registrador que armazena o endereo de memria da prxima instruo a ser executada. O contedo do contador de programa incrementado aps a execuo da instruo ou trocado por outro valor se a instruo em curso for de desvio de seqncia. Decodificador de instruo Circuito combinacional utilizado para determinar qual a prxima instruo a ser executada. Isto feito a partir do cdigo de operao armazenado previamente no registrador de instruo. Registrador da CPU tambm responsvel pelas Flags Conjunto de flip-flops destinados a guardar as condies resultantes da execuo de instrues. Tais flags so fundamentais no sentido em que se constituem no nico mecanismo que o programador Assembly dispe para desvios de processamento e implementao de algoritmos. Registradores auxiliares Conjunto de registradores de rascunho que podem ser 24
usados em conjunto ou separadamente para operaes intermediarias, sem que seja necessrio o acesso sistemtico a memria. Registrador de instruo (RI) Registrador que armazena a instruo que esta sendo executada. Controle da CPU ou Unidade de Controle Circuito seqencial interno ao microprocessador que utilizado para gerar os sinais de controle, necessrios execuo das instrues previamente decodificadas. Unidade Lgica Aritmtica (ULA) Circuito combinacional utilizado para operaes lgicas e aritmticas envolvendo dois operando. importante salientar alguns aspectos referentes s condies dos Flags, que so clulas de 1 bit e que contem informaes sobre os resultados das operaes e indicam tambm a ocorrncia de condies especficas dessas operaes. As Flags so acionadas (setadas) pela ULA e a ela esto associadas. Cada microprocessador tem seus prprios bits de Flag. Abaixo temos mencionado as Flags mais comuns a serem encontradas na maioria dos microprocessadores.
Condio
Flags C N P/V H Z S X Funo Bit de carry soma/subtrao paridade/over-flow half-carry zero sinal no usado setado C PE Z M ressetado NC PO NZ P setado se: vai um do bit 7 operao de subtrao paridade par/over-flow vai um do bit 3 resultado zero resultado negativo -
7 S
6 Z
5 X
4 H
3 X
2 P/V
1 N
0 C
O nvel lgico de cada bit do registrador F indica a condio de cada uma das flags e forma uma palavra binria. Assim, por exemplo, se o byte do registrador F apresentar a combinao 0100 0001, ocorre a seguinte situao: 7 S 0 6 Z 1 5 X 0 4 H 0 3 X 0 2 P/V 0 1 N 0 0 C 1
ou seja: bit 0 est em nvel 1 informando que houve carry; bit 1 est em nvel 0 indicando que se trata de uma operao de soma; os bits 2 e 4 em zero indicam condio de no-paridade e no-half-carry; os bits 3 e 5 no so utilizados (nvel 0); bit 6 (flag de zero) em nvel 1 informa que a operao lgica ou aritmtica deu resultado zero; bit 7 (flag de sinal) em nvel 0 indica que o resultado da operao positivo. Nesse caso, a palavra armazenada no registrador F 41H porque 0100 = 4 e 0001 = 1. Sempre que o contedo do registrador F for verificado, o resultado mostrado no display de dados aparecer em cdigo hexadecimal. A traduo desse resultado para a linguagem binria fornece a condio das flags naquele momento.
26
3.5 Exerccios 1 Qual a funo dos dispositivos de entrada e sada (I/O)? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 2 O microprocessador composto de trs barramentos independentes. Quais so? Comente sobre eles. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 3 Com base na arquitetura padro de um microprocessador, explique a funo de cada bloco: Acumulador_________________________________________________ ___________________________________________________________ Apontador da pilha___________________________________________ ___________________________________________________________ Contador de programa_________________________________________ ___________________________________________________________ Decodificador de instruo_____________________________________ ___________________________________________________________ Flags______________________________________________________ ___________________________________________________________ Registradores auxiliares_______________________________________ ___________________________________________________________ Registrador de instruo _______________________________________ ___________________________________________________________ Unidade de controle__________________________________________ ___________________________________________________________ Unidade Lgica Aritmtica (ULA)_______________________________ ___________________________________________________________
27
28
Anotaes:
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
29
CAPTULO 4
O Microcontrolador
A arquitetura do Microcontrolador Ciclos de mquina Introduo s interrupes O PIC 16F628 Registradores especiais
30
4 O MICROCONTROLADOR
O microcontrolador um dispositivo que tem a funo de controlar algum processo ou aspecto do ambiente. Componente de aplicao especfica e uma vez implementado permite poucos recursos para alterao do processo em que foi utilizado. Como exemplo podemos citar o Televisor, Forno microondas, videocassete, celulares, brinquedos etc. Os microcontroladores esto revolucionando o projeto de equipamento eletrnico, no somente os sistemas convencionais esto se tornando mais sofisticados e baratos, como novas funcionalidades esto sendo possveis de serem implementadas com um custo compatvel com o mercado. Os microprocessadores destinados ao mercado de computadores pessoais podiam e podem ser empregados como controladores, porm seu custo continua elevado para o tipo de tarefa que se deseja executar no controle dedicado. Por exemplo, utilizarmos um Pentium 4 no controle do nmero de lmpadas acessas simultaneamente em uma residncia. Em virtude deste mercado, os fabricantes de circuitos lanaram ento os microcontroladores, dispositivos que possuem integrados em uma nica pastilha a CPU, RAM, EPROM ou EEPROM, E/S e controladores de interrupo, PWMs etc. O surgimento destes dispositivos a um baixo custo provocou uma revoluo nos mtodos de projetos de sistemas de controle para o uso domstico ou industrial. Os sistemas puramente mecnicos esto sendo alterados por circuitos eletrnicos mais confiveis e baratos. O microcontrolador programvel, pois toda a lgica de operao estruturada na forma de um programa e gravada dentro do componente. Aps isso, toda vez em que alimentarmos o microcontrolador o programa interno ser executado.
A diferena est na forma como os dados e os programas so processados pelo microcontrolador, onde na arquitetura Von-Newman existe apenas um barramento interno, geralmente de 8 bits, por onde passam as instrues e os dados. J na arquitetura do tipo Havard existem dois barramentos internos, sendo um de dados e outro de instrues.
Figura X+1 Arquitetura Harvard versus Von Neumann No caso do PIC, o barramento de dados sempre de 8 bits e o de instrues de 12, 14 ou 16 bits. O PIC 16F628, que ser por nos estudado, possui palavras de dados de oito bits de tamanho, e palavras de instruo de 14 bits. Esse tipo de arquitetura permite que enquanto uma instruo executada outra seja buscada da memria, o que torna o processamento mais rpido. Alm disso, como o barramento de instruo maior que 8 bits, o OPCODE da instruo j inclui o dado e o local onde ela vai operar (quando necessrio), o que significa que apenas uma posio de memria utilizada por instruo, economizando assim muita memria de programa. A largura de memria de programa de 24 bits, alm de implementar diversas facilidades os coloca como dispositivos intermedirios aos DSP, de fato so chamados de DSC (Digital Signal Controller Controlador Digital de Sinais). Os PICs utilizam uma tecnologia chamada RISC (Reduced Instruction Set Computer Computador com Set de Instrues Reduzidas). Desta forma, os PICs possuem cerca de 35 instrues, muito menos que os microcontroladores convencionais CISC que chegam a possuir mais de 100 instrues. Os microcontroladores com a arquitetura Harvard, so tambm designados por "microcontroladores RISC". RISC provm de Computador com um Conjunto Reduzido de Instrues (Reduced Instruction Set Computer). Os microcontroladores com uma arquitetura von-Neumann so designados por 'microcontroladores CISC'. O nome CISC deriva de Computador com um Conjunto Complexo de Instrues (Complex Instruction Set Computer). Como o PIC16F84 um microcontrolador RISC, disso resulta que possui um nmero reduzido de instrues, mais precisamente 35 (por exemplo, os microcontroladores da Intel e da Motorola tm mais de cem instrues). Todas estas instrues so executadas num nico ciclo, exceto no caso de instrues de salto e de ramificao. De acordo com o que o seu fabricante refere, o PIC16F84 geralmente atinge resultados de 2 para 1 na compresso de cdigo e 4 para 1 na velocidade, em relao aos outros microcontroladores de 8 bits da sua classe. As linhas mais finas que partem do centro em direo periferia do microcontrolador correspondem aos fios que interligam os blocos interiores aos pinos do invlucro do microcontrolador. O grfico que se segue representa a parte principal de um microcontrolador.
32
Abaixo temos uma tabela com alguns exemplos da famlia PIC: 12 Bits 16C56 16C57 16C58 16C505 16HV540 14 Bits 16F62x 16C7x 16F7x 16F8x 16F87x 16 Bits 18F242 18F252 18F258 18F442 18F458
33
Entrada
Sada
Clock
Os registros so, portanto, locais de memria cujo papel ajudar a executar vrias operaes matemticas ou quaisquer outras operaes com dados, quaisquer que sejam os locais em que estes se encontrem.
Vamos olhar para a situao atual. Ns temos duas entidades independentes (memria e 34
CPU) que esto interligadas, deste modo, qualquer troca de dados retardada bem como a funcionalidade do sistema diminuda. Se, por exemplo, ns desejarmos adicionar os contedos de dois locais de memria e tornar a guardar o resultado na memria, ns necessitamos de uma ligao entre a memria e o CPU. Dito mais simplesmente, ns precisamos de obter um "caminho" atravs do qual os dados possam passar de um bloco para outro. A unidade central de processamento coordena todas as atividades dentro do microcontrolador. Ela organiza a execuo das instrues e realiza as operaes lgicas e aritmticas sobre os dados e envia os resultados para os diversos registros ou portas de entrada e sada. Portas de entrada e sada Estas localizaes que acabamos de adicionar, chamam-se "portos". Existem vrios tipos de portos: de entrada, de sada e de entrada/sada. Quando trabalhamos com portos primeiro de tudo necessrio escolher a porta com que queremos trabalhar e, em seguida, enviar ou receber dados para ou desse porto.
Quando se est a trabalhar com ele, a porta funciona como um local de memria. Qualquer coisa de que se est a ler ou em que se est a escrever e que possvel identificar facilmente nos pinos do microcontrolador. So os pontos atravs dos quais o microcontrolador interage com o ambiente externo. As portas assumem valores discretos, normalmente referenciados como 0 ou 1, correspondente a 0 v ou 5 v de sada. Alguns microcontroladores possuem uma ou mais portas de entrada especiais chamadas de Interrupts. Estas portas no exigem que a CPU fique vigiando a ocorrncia do evento na porta, porque interrompem o programa sendo executado cada vez que ocorre um dado evento. Os Interrupts so uma das caractersticas mais utilizadas nos projetos em que se necessite de uma rapidez de resposta a eventos assncronos, que podem ocorrer a qualquer instante. Memria de dados A memria a parte do microcontrolador cuja funo guardar dados. A maneira mais fcil de explicar descrev-la como uma grande prateleira cheia de gavetas. Se supusermos que marcamos as gavetas de modo a elas no se confundirem umas com as outras, ento o seu contedo ser facilmente acessvel. Basta saber a designao da gaveta e o seu contedo ser conhecido.
35
Os componentes de memria so exatamente a mesma coisa. Para um determinado endereo, ns obtemos o contedo desse endereo. Dois novos conceitos foram apresentados: endereamento e memria. A memria o conjunto de todos os locais de memria (gavetas) e endereamento nada mais que selecionar um deles. Isto significa que precisamos de selecionar o endereo desejado (gaveta) e esperar que o contedo desse endereo nos seja apresentado (abrir a gaveta). Alm de ler de um local da memria (ler o contedo da gaveta), tambm possvel escrever num endereo da memria (introduzir um contedo na gaveta). Isto feito utilizando uma linha adicional chamada linha de controle. Ns iremos designar esta linha por R/W (read/write) - ler/escrever. A linha de controle usada do seguinte modo: se r/w=1, executada uma operao de leitura, caso contrrio executada uma operao de escrita no endereo de memria. A memria o primeiro elemento, mas precisamos de mais alguns para que o nosso microcontrolador possa trabalhar. normalmente implementada na forma de RAM em que podemos ler e gravar com facilidade. A capacidade de memria RAM no microcontrolador bem pequena, ela possui um barramento de 8bits, pois somente teremos o transito de dados entre a memria e a CPU. A memria RAM dividida em duas partes distintas, uma para abrigar os registradores de funes especiais (SFR) e outra para abrigar os registradores de propsitos gerais (GPR). Memria de programa onde residem as instrues que devem ser executadas pela CPU. O programa gravado apenas uma vez e a partir da o microcontrolador executa apenas este programa. A maior parte dos microcontroladores PIC, utiliza a memria EEPROM ou FLASH, que pode ser apagada por meios eltricos. Existem quatro tecnologias tpicas de implementao: a ROM do tipo mascara, so identificados pelo sufixo CR; o OTP, identificado pelo sufixo C; a EPROM identificada pela janela caracterstica e que pode ser do tipo JW com encapsulamento DIP ou CL para encapsulamento do tipo PLCC. E a memria FLASH. Uma caracterstica importante da memria do microcontrolador PIC que ela pode ser acessada por software. Tambm devido a caractersticas da arquitetura RISC, a instruo de chamada e de desvio tem disponveis somente 11 bits para os endereos usados. Por esse motivo a memria de programa dividida em paginas. Usamos o PCLATH para direcionar os endereos. X X X 4 3 2 1 0 7 6 5 4 3 2 1 0
PC - Program Counter
36
37
38
Quando a rotina de interrupo for terminada, o programa automaticamente voltar ao ponto em que estava antes de ocorrer interrupo. O atraso de tempo existente entre a ocorrncia de um evento de interrupo e o efetivo desvio para o vetor de interrupo chamado de latncia de interrupes. Existem outros modos de interrupo, mas no ser analisado.
1 RA2 2 RA3 3 RA4/TOCKI 4 MCLR 5 VSS 6 7 RB1 8 RB2 9 RB3 RB4 RB5 RB6 RB0/INT PIC OSC2 VDD OSC1 RA0 RA1
18 17 16 15 14 13 RB7 12 11 10
16F628A
39
4.5 - Descrio dos pinos Pino 1 2 3 Funo RA2/AN2/Vref RA3/AN3/CMP1 RA4/T0CKI/CMP2 Tipo Entrada e sada Entrada e sada Entrada e sada Descrio Porta A bit 2 / Entrada do comparador analgico / Sada da referencia de tenso. Porta A bit3 / Entrada comparador analgico / Sada comparador 1. Porta A bit 4 / Entrada clock externo do timer 0 / Sada comparador 2. Sada em dreno aberto. Porta A bit 5 / Reset CPU / tenso de programao. Terra. Porta B bit 0 / Entrada de interrupo externa. Porta B bit 1 / Recepo USART (modo assncrono) / Dados (modo sncrono). Porta B bit 2 / Transmisso USART (modo assncrono) / Clock (modo sncrono) Porta B bit 3 / Entrada e sada do modulo CCP. Porta B bit 4 / E entrada de programao LVP. Porta B bit 5. Porta B bit 6 / Sada oscilador TMR1 / Entrada de clock TMR1. Porta B bit 7 / Entrada do oscilador de TMR1. Alimentao Positiva. Porta A bit 6 / Entrada para cristal oscilador / Sada de clock. Porta A bit 7 / Entrada para cristal oscilador / Entrada de clock externo. Porta A bit 0 / Entrada comparador analgico. Porta A bit 1 / Entrada comparador analgico.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
RA5/MCLR/THV Vss RB0/INT RB1/RX/DT RB2/TX/CK RB3/CCP1 RB4/PGM RB5 RB6/T1OSO/T1CKI RB7/T1OSI Vdd RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RA0/AN0 RA1/AN1
Entrada Alimentao Entrada e sada Entrada e sada Entrada e sada Entrada e sada Entrada e sada Entrada e sada Entrada e sada Entrada e sada Alimentao Entrada e sada Entrada e sada Entrada e sada Entrada e sada
40
PIC16F628
1 2 3 4 5 6 7 8 9 18 17 16 15 14 13 12 11 10
C1
XTAL C2
Figura 11 Oscilador a cristal Oscilador / Resistor utilizado um resistor conectado ao pino RA7 ao terra para gerar o clock para a CPU. O oscilador trabalha com uma freqncia desde 10KHz a 8MHz e o resistor deve estar entre 38K e 1M. Para definirmos esta operao o bit OSCF no registrador PCON, deve estar em 1. RA7 / OSC1 / CLKIN R RA6 / OSC2 / CLKOUT
41
Oscilador Interno um oscilador de 4MHz derivado de um clock obtido a partir de um oscilador RC interno. Esse oscilador possui razovel preciso com um valor tpico de 4Mhz, com mnimo de 3,65 e mximo de 4,28Mhz. Permite uma maior disponibilidade dos pinos do PIC, pois RA6 e RA7 esto liberados. Para definirmos esta operao o bit OSCF no registrador PCON, deve estar em 0, se estiver em 1 estaremos com um clock de 37KHz. necessrio implementar no programa na etapa de configurao do microcontrolador a seguinte instruo _INTRC_OSC_NOCLKOUT e retira-se a instruo _XT_OSC. Clock Externo Quando utilizarmos um clock externo para o PIC necessrio configurar o modo do oscilador para EC.
10
Detector baixa tenso um detector de baixa tenso, conhecido tambm como detector de Brown out, onde caso a tenso de alimentao diminuir abaixo do valor de Vz, um reset do MCU implementado fazendo com que a CPU reinicialize o programa. Caso seja utilizada uma tenso baixa de alimentao necessrio desabilitar o bit BODEN = 0 para que no seja detectado.
Figura 14 Detector baixa tenso Temporizador de Power-Up O temporizador de power-up (PWRT) pode ser utilizado para fazer com que o chip permanea em reset por aproximadamente 72ms aps o chip ter sido ligado. Deve ser utilizado sempre que possvel devido ao fato do tempo de demora de estabilizao da fonte de alimentao para todos os componentes envolvidos no circuito. Esse temporizador pode ser habilitado ou desabilitado somente durante a programao do chip. Mdulo Comparador Analgico O modula comparador analgico consiste em um conjunto de dois comparadores analgicos internos, que podem realizar comparaes entre si ou de tenses analgicas externas. O modulo possui apenas o um registrador CMCON, responsvel pela configurao e controle dos comparadores internos. 42
IRP Seletor de banco de memria usado para endereamento indireto. 0 = Banco 0 e 1 (00h FFh). * Manter sempre em 0 no 16F628 RP1 e RP0 Seletor de banco de memria usado para endereamento indireto. 00 = Banco 0 (00h 7Fh). 10 = Banco 2 (100h 17Fh). 01 = Banco 1 (80h FFh). 11 = Banco 3 (180h 1FFh). 1 = Banco 2 e 3 (100h 1FFh)
* Cada banco possui 128 bits. O PIC 16F628 s possui os bancos 0 e 1. RP1 deve ser 0. /TO Indicao de Time-out. 0 = Indica que ocorreu um estouro de WatchDog (WDT). 1 = Indica que ocorreu um power-up ou foi executada a instruo CLRWDT ou SLEEP. /PD Indicao de Power-down. 0 = Indica que a instruo SLEEP foi executada. 1 = Indica que ocorreu um Power-up ou foi executada a instruo CLRWDT. Z Indicao de zero. 0 = Indica que o resultado da ultima operao (lgica ou aritmtica) no foi zero. 1 = Indica que a ultima operao (lgica ou aritmtica) resultou em zero.
43
DC Digit Carry/borrow. 0 = A ultima operao da ULA no ocasionou um estouro de dgito. 1 = A ultima operao da ULA ocasionou um estouro (carry) entre o bit 3 e 4, isto o resultado ultrapassou os 4 bits menos significativos. C Carry. 0 = A ultima operao da ULA no ocasionou um estouro (carry) 1 = A ultima operao da ULA ocasionou um estouro (carry) no bit mais significativo. Conhecendo o CMCON O modulo comparador permite implementar diversos circuitos atravs dos comparadores analgicos, inclusive conversores A/D, como o de rampa ou conversores. Cada implementao realizada atravs do registrador CMCON. Este registrador implementado no PIC 16F628. Registrador: CMCON Bit 7 R C2OUT Bit 6 R C1OUT Bit 5 R/W C2INV Bit 4 R/W C1INV Endereos: 1Fh Bit 3 R/W CIS Bit 2 R/W CM2 Bit 1 R/W CM1 Bit 0 R/W CM0
C2OUT Bit indicativo do estado da sada do comparador 2. 0 = em C2INV 0 entrada Vin+ < Vin -, 1 entrada Vin+ > Vin -. 1 = em C2INV 0 entrada Vin+ > Vin -, 1 entrada Vin+ < Vin -. C1OUT Bit indicativo do estado da sada do comparador 1. 0 = em C1INV 0 entrada Vin+ < Vin -, 1 entrada Vin+ > Vin -. 1 = em C1INV 0 entrada Vin+ > Vin -, 1 entrada Vin+ < Vin -. C2INV Seleo de inverso do sinal de sada do comparador 2. 0 Sada no invertida 1 Sada invertida.
C1INV Seleo de inverso do sinal de sada do comparador 1. 0 Sada no invertida 1 Sada invertida.
CIS Seleo de entrada dos comparadores nos modos 1 e 2. CM2, CM1 e CM0 Seleo do modo de operao dos comparadores:
44
CM2 0 0 0 0 1 1 1 1
CM1 0 0 1 1 0 0 1 1
CM0 0 1 0 1 0 1 0 1
Modo 0 1 2 3 4 5 6 7
Modo 0 Neste modo os comparadores se encontram em reset, o modo inicial de configurao dos comparadores. Neste modo, as sadas esto desligadas, mas os pinos RA0, RA1, RA2 e RA3 esto conectados s entradas dos comparadores, ou seja, como entradas analgicas. Modo 1 Dois comparadores com trs entradas Multiplexadas onde temos 2 entradas conectadas entrada inversora de C1 e ambos comparadores compartilham a mesma referncia externa conectada entrada inversora de RA2/AN2/Vref. Modo 2 Dois comparadores com quatro entradas multiplexadas onde temos os comparadores configurados com a entrada no inversora conectada ao mdulo de referncia de tenso interna (VREF). As entradas inversoras de cada comparador so multiplexadas. Modo 3 Dois comparadores com uma referncia externa comum onde temos uma configurao na qual os dois comparadores possuem uma referncia de tenso externa conectado ao pino RA2/AN2/Vref. Deste modo o pino RA3/AN3/CMP1 pode ser utilizado como I/O digital. Modo 4 Neste modo temos os dois comparadores independentes. Modo 5 Apenas o comparador C2 est em funcionamento e o comparador C1 permanece desligado, liberando os pinos RA0/AN0 e RA3/AN3/CMP1 para utilizao como I/O digital. Modos 6 Neste modo tm os dois comparadores compartilhando a mesma referncia externa comum (RA2/AN2/Vref). As sadas C1OUT e C2OUT encontram-se disponveis externamente nos pinos RA3/AN3/CMP1 e RA4/T0CKI/CMP2 respectivamente. Modo 7 Neste modo os comparadores se encontram desligados e os pinos de RA0 a RA3 podem ser utilizados para I/O digital.
45
Conhecendo o OPTION Esse registrador serve para configurar uma srie de opes para a operao do microcontrolador. Apesar de este registrador receber o nome OPTION, ele ser referenciado em nossos programas pelo nome OPTION-REG, pois os PICs mais antigos possuam uma instruo chamada OPTION. Registrador: OPTION Bit 6 Bit 5 R/W INTEDG R/W TOCS Endereos: 81h e 181h Bit 2 Bit 1 R/W PS2 R/W PS1
/RBPU Habilitao dos pull-ups internos para o PORTB. 0 = Pull-ups habilitado para todo pino do PORTB configurado como entrada. 1 = Pull-ups desabilitado. INTEDG Configurao da borda que gerar a interrupo externa no RB0. 0 = A interrupo ir ocorrer na borda de descida. 1 = A interrupo ir ocorrer na borda de subida. TOCS Configurao do incremento para o TMR0. 0 = TMR0 ser incrementado internamente pelo clock da mquina. 1 = TMR0 ser incrementado externamente pela mudana no pino RA4/T0CKI. TOSE Configurao da borda que incrementar o TMR0 no pino RA4/T0CKI quando TOCS = 1. 0 = Incremento na borda de subida. PSA Configurao de aplicao do prescaler. 0 = O prescaler ser aplicado ao TMR0. 1 = O prescaler ser aplicado ao WDT. * Para o TMR0 ser incrementado a cada ciclo de mquina necessrio que PSA = 1 PS2, PS1 e PS0 Configurao do valor de prescaler. Bits 2, 1, 0 000 001 010 011 100 TMR0 1:2 1:4 1:8 1:16 1:32 46 WDT 1:1 1:2 1:4 1:8 1:16 1 = Incremento na borda de descida.
Conhecendo o PCON Esse registrador serve para sinalizao de dois estados de reset. O reset por queda de tenso de alimentao (Brown-out) e o reset de inicializao (Power-on reset). Alm disso, o bit 3 desse registrador controla o clock do chip quando nos modos de oscilador interno ou resistor externo. Registrador: PCON Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 R/W OSCF Endereo: 8Eh Bit 2 Bit 1 R/W /POR Bit 0 R/W /BOD
OSCF Bit de controle do modo de operao do oscilador de clock interno. 0 = Clock de 37 KHz somente nos modos de clock interno ou resistor externo. 1 = Clock de 4 MHz interno ou conforme resistor externo. /POR Sinalizador de reset de inicializao. 0 = Houve um reset do tipo POR reset de inicializao. 1 = No ocorreu o reset de inicializao. /BOD Sinalizador de reset por queda de tenso de alimentao (Brown-out). 0 = Houve reset por queda da tenso alimentao. 1 = No houve reset por queda de tenso de alimentao. Conhecendo o INTCON Esse registrador serve para configurar e identificar as interrupes. Registrador: INTCON Bit 7 R/W GIE Bit 6 R/W EEIE Bit 5 R/W T0IE Bit 4 R/W INTE Bit 3 R/W RBIE Endereos: 0Bh e 8Bh Bit 2 R/W T0IF Bit 1 R/W INTF Bit 0 R/W RBIF
GIE Habilitao geral das interrupes (chave geral). 0 = Nenhuma interrupo ser tratada. 1 = As interrupes habilitadas sero tratadas individualmente.
47
EEIE Habilitao da interrupo de final de escrita na EEPROM (chave individual). 0 = A interrupo no ser tratada. 1 = A interrupo ser tratada.
T0IE Habilitao da interrupo de estouro de TMR0 (chave individual). 0 = A interrupo no ser tratada. 1 = A interrupo ser tratada.
INTE Habilitao da interrupo externa no pino RB0 (chave individual). 0 = A interrupo no ser tratada. 1 = A interrupo ser tratada.
RBIE Habilitao da interrupo por mudana de estado nos pinos RB4 a RB7 (chave individual). 0 = A interrupo no ser tratada. 1 = A interrupo ser tratada.
T0IF Identificao da interrupo de estouro de TMR0. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
INTF Identificao da interrupo externa no pino RB0. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
RBIF Identificao da interrupo por mudana de estado nos pinos RB4 a RB7. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
Conhecendo o PIE1 Possui a funo de habilitao / desabilitao das chamadas interrupes perifricas. Registrador: PIE1 Bit 7 R/W EEIE Bit 6 R/W CMIE Bit 5 R/W RCIE Bit 4 R/W TXIE Bit 3 Endereos: 8Ch Bit 2 R/W CCP1IE Bit 1 R/W TMR2IE Bit 0 R/W TMR1IE
EEIE Habilitao de interrupo por trmino de escrita na EEPROM interna. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
CMIE Habilitao de interrupo de mudana de estados dos comparadores analgicos. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
48
RCIE Habilitao de interrupo de mudana de estado dos comparadores. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
TXIE Habilitao de interrupo de transmisso USART. 0 = Esta interrupo no ocorreu. CCP1IE Habilitao de interrupo do modulo CCP. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu. 1 = Esta interrupo ocorreu.
TMR2IE Habilitao de interrupo de transbordo do timer 2. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
TMR1IE Habilitao de interrupo de transbordo do timer 1. 0 = Esta interrupo no ocorreu. 1 = Esta interrupo ocorreu.
O bit 3 do registrador deve ser sempre mantido em 0. Para habilitar a CPU, utilizando uma das interrupes devemos setar o bit PEIE e o bit GIE no INTCON. Conhecendo o PIR1 Localizado no banco 0 e abriga os flags sinalizadores de interrupes perifricas. Registrador: PIR1 Bit 7 R/W EEIE Bit 6 R/W CMIF Bit 5 R/W RCIF Bit 4 R/W TXIF Bit 3 Endereos: 0Ch Bit 2 R/W CCP1IF Bit 1 R/W TMR2IF Bit 0 R/W TMR1IF
EEIF Sinalizador de trmino de escrita na EEPROM. 0 = A escrita ainda no terminou ou no foi iniciada. 1 = A escrita terminou. CMIF Sinalizador de mudana de estado na sada dos comparadores analgicos. 0 = No houve mudana de estado nos comparadores. 1 = Houve mudana na sada dos comparadores. RCIF Sinalizador de recepo de caractere na USART. 0 = No houve recepo de novos caracteres. 1 = Um novo caractere foi recebido. TXIF Sinalizador de transmisso na USART. 0 = No houve transmisso na USART ou o TSR esta ocupado. 1 = O caractere armazenado no TXREG foi repassado para o TSR.
49
CCPIF Sinalizador de comparao / captura no mdulo CCP. 0 = No houve comparao vlida / captura no mdulo CCP. 1 = Houve comparao / captura no mdulo CCP. TMR2IF Sinalizador de transbordo no timer 2. 0 No houve transbordo de contagem no TMR2. 1 Houve transbordo de contagem no TMR2. TMR1IF - Sinalizador de transbordo no timer 1. 0 No houve transbordo de contagem no TMR1. 1 Houve transbordo de contagem no TMR1. Conhecendo o PCL O PCL um registrador que armazena os 8 bits menos significativos do PC (program counter), o qual indica a prxima linha do programa que ser executado no momento. A cada ciclo de mquina o PC automaticamente alterado, para que o programa possa ser executado. Esse registrador tambm pode ser alterado pelo programa, mas isto deve ser feito com extremo cuidado para que o sistema no se perca e/ou trave. Registrador: PCL Bit 7 R/W Bit 6 R/W Bit 5 R/W Bit 4 R/W Bit 3 R/W Endereos: 02h e 82h Bit 2 R/W Bit 1 R/W Bit 0 R/W
Parte baixa do PC Conhecendo o PCLATH Como a rea de memria de programao do PIC 16F628 maior que 256 bytes, no possvel acess-la completamente com somente os 8 bits do PCL. Por isso, o PCLATH possui os 5 bits mais altos do PC. No PIC 16F628, esse registrador controlado diretamente pelo hardware e no precisa ser acessado pelo programa. Registrador: PCLATH Bit 7 Bit 6 Bit 5 Bit 4 R/W Bit 3 R/W Endereos: 0Ah e 8Ah Bit 2 R/W Bit 1 R/W Bit 0 R/W
Parte Alta do PC
50
Registrador: TRISA Bit 7 R/W Ref. RA7 Bit 6 R/W Ref. RA6 Bit 5 R/W Ref. RA5 Bit 4 R/W Ref. RA4 Bit 3 R/W Ref. RA3
Endereos: 85h Bit 2 R/W Ref. RA2 Bit 1 R/W Ref. RA1 Bit 0 R/W Ref. RA0
Registrador: TRISB Bit 7 R/W Ref. RB7 Bit 6 R/W Ref. RB6 Bit 5 R/W Ref. RB5 Bit 4 R/W Ref. RB4 Bit 3 R/W Ref. RB3
Endereos: 86h e 186h Bit 2 R/W Ref. RB2 Bit 1 R/W Ref. RB1 Bit 0 R/W Ref. RB0
As portas PORTA e PORTB Como vimos o PIC 16F628 possui duas portas PORTA e PORTB. O estado dessas portas acessado diretamente em duas posies distintas da memria. Quando um pino dessas portas configurado como entrada ao lermos o seu bit relacionado, encontraremos diretamente o nvel lgico aplicado a esse pino. Da mesma maneira, ao configurarmos um pino como sada, podemos alterar seu estado, escrevendo diretamente no bit relacionado. Registrador: PORTA Bit 7 R/W RA7 Bit 6 R/W RA6 Bit 5 R/W RA5 Bit 4 R/W RA4 Bit 3 R/W RA3 Endereos: 05h Bit 2 R/W RA2 Bit 1 R/W RA1 Bit 0 R/W RA0
Registrador: PORTB Bit 7 R/W RB7 Bit 6 R/W RB6 Bit 5 R/W RB5 Bit 4 R/W RB4 Bit 3 R/W RB3
Endereos: 06h e 106h Bit 2 R/W RB2 Bit 1 R/W RB1 Bit 0 R/W RB0
4.8.2 Contadores
O bloco de temporizao que nos interessa bastante porque pode dar-nos informaes acerca da hora, durao, protocolo, etc. A unidade bsica do temporizador um contador que na realidade um registro cujo contedo aumenta de uma unidade num intervalo de tempo fixo, assim, anotando o seu valor durante os instantes de tempo T1 e T2 e calculando a sua diferena, ns ficamos a saber a quantidade de tempo decorrida. Esta uma parte muito importante do microcontrolador, cujo domnio vai requerer muita da nossa ateno.
51
Conhecendo o TMR0 O TMR0 um contador de 8 bits que pode ser acessado diretamente na memria, tanto par leitura quanto para a escrita. A diferena entre ele e os demais registradores que seu incremento automtico e pode ser feito pelo clock da mquina ou por um sinal externo. importante lembrar que o estouro desse contador pode gerar uma interrupo. acessado por trs registradores, o OPTION_REG, o TMR0 e o INTCON. Registrador: TMR0 Bit 7 R/W Bit 6 R/W Bit 5 R/W Bit 4 R/W Bit 3 R/W Endereos: 01h Bit 2 R/W Bit 1 R/W Bit 0 R/W
Contador automtico de 8 bits Conhecendo o TMR1 O TMR1 um mdulo de 16 bits capaz de operar em trs modos bsicos, como temporizador sncrono, contador sncrono e assncrono, com funes de prescaler interno, possibilidade de conexo de cristal externo e de reset gerado pelo mdulo CCP. Possui uma filosofia similar ao do timer 0, porm se destaca a presena de um registrador de controle destinado especificamente ao timer 1, o T1CON e os registradores especficos para o armazenamento de contagem, (TMR1L e TMR1H). Relacionado aos registradores INTCON, PIR, PIE e T1CON, alm dos j citados. Conhecendo o TMR2 O TMR2 um temporizador de 8 bits com princpio de funcionamento similar ao do timer 0 e com caractersticas de pr-divisor, ps-divisor, capacidade de ligar ou desligar a contagem do mdulo e o registrador de perodo (PR2). Tem o propsito bsico de fornecer a base de tempo para o mdulo CCP1. Relacionado aos registradores INTCON, PIR, PIE, TMR2, T2CON e PR2. Conhecendo o WDT O watchdog outra coisa que nos vai interessar a fluncia da execuo do programa pelo microcontrolador durante a sua utilizao. Suponha que como resultado de qualquer interferncia (que ocorre frequentemente num ambiente industrial), o nosso microcontrolador pra de executar o programa ou, ainda pior, desata a trabalhar incorretamente.
Claro que, quando isto acontece com um computador, ns simplesmente carregamos no boto de reset e continuamos a trabalhar. Contudo, no caso do microcontrolador ns no podemos resolver o nosso problema deste modo, porque no temos boto. Para ultrapassar este obstculo, precisamos de introduzir no nosso modelo um novo bloco chamado watchdog (co de guarda). Este bloco de fato outro contador que est continuamente a contar e que o nosso programa pe a zero sempre que executado corretamente. No caso de o programa "encravar", o zero no vai ser escrito e o contador, por si s, encarregar-se- de fazer o reset do microcontrolador quando alcanar o seu valor mximo. Isto vai fazer com que o programa corra de novo e desta vez corretamente. Este um elemento importante para que qualquer programa se execute fiavelmente, sem precisar da interveno do ser humano.
52
O Watchdog Timer (WDT), popularmente conhecido como co de guarda, tambm um contador incrementado automaticamente, s que com um clock independente. O PIC possui um RC interno s para a operao WDT. Isto significa que seu tempo de incremento constante, independentemente do oscilador utilizado para gerar o clock da mquina. O tempo normal de estouro do WDT cerca de 18ms, mas pode variar de acordo com a tenso de alimentao e a temperatura. Uma outra caracterstica desse contador que ele no acessvel ao programador, nem para a escrita e nem para a leitura. O programador s pode utilizar um comando (CLRWT) para zer-lo, o que muito importante, pois se o WDT estourar (passar de 0xFF para 0x00), o sistema ser automaticamente resetado, tornando a utilizao do WDT muito importante para evitarmos que o sistema trave em determinadas situaes. importante saber tambm que o WDT pode ser desligado, como uma escolha de configurao na hora de gravar o microcontrolador, porm no permite que seja desligado durante a execuo do programa. Conhecendo o PRESCALER Acabamos de ver que o TMR0 pode ser incrementado pelo clock da mquina ou por um sinal externo, assim como o WDT incrementado automaticamente e estoura a cada 18 ms. Desta maneira, fcil efetuarmos clculos de tempo com esses contadores. S que ambos executam aes especficas no caso de estouro (interrupo ou reset). Como alterar ento o tempo de estouro de cada um desses contadores? Para o TMR0 fica mais fcil, pois alterando o oscilador, alteramos tambm os seus incrementos. Mas isso vivel? E para o WDT, como podemos alterar seu tempo? Esta a funo do Prescaler. Trata-se de um divisor configurvel que pode ser aplicado a um dos dois contadores. Temos aqui ento a maior limitao do Prescaler, pois ele s pode ser aplicado a um dos contadores de cada vez (bit PSA do OPTION). Com esse divisor ativo, o tempo de estouro multiplicado na ordem inversa. Por exemplo: Um sistema este rodando a 4 MHz. Desta forma, temos um ciclo de mquina e conseqentemente, uma instruo sendo rodada a cada 1s. Sem o prescaler, o TMR0 tambm seria incrementado a cada 1s. estourando em 256 s. Se configurarmos o Prescaler em 1:4, o TMR0 s ser incrementado a cada 4 ciclos de mquina, neste caso correspondem a 4 s. O estouro aparecer ento em 1024 s. A mesma analogia pode ser aplicada ao WDT. Sem Prescaler, o WDT estoura em aproximadamente 18 ms. Se configurarmos o Prescaler em 1:4, ele ir estourar aproximadamente em 72 ms. Para podermos configurar o Prescaler em 1:1 para o TMR0, necessrio aplicar o Prescaler ao WDT e desta maneira, o TMR0 ficar sem Prescaler, o que resultar em incremento de 1:1.
4.8.3 - EEPROM
Conhecendo o EEADR Trata-se de um registrador em que ser especificado o endereo para escrita ou leitura da EEPROM interna do PIC 16F628, o qual possui uma memria de 128 bytes. Registrador: EEADR Bit 7 R/W Bit 6 R/W Bit 5 R/W Bit 4 R/W Bit 3 R/W Endereos: 9Bh Bit 2 R/W Bit 1 R/W Bit 0 R/W
53
Conhecendo o EEDATA Esse registrador possui duas funes distintas: nas operaes de escrita da EEPROM, ele deve ser preenchido com o dado a ser armazenado, j nas operaes de leitura, ele armazena o dado lido. Registrador: EEDATA Bit 7 R/W Bit 6 R/W Bit 5 R/W Bit 4 R/W Bit 3 R/W Endereos: 9Ah Bit 2 R/W Bit 1 R/W Bit 0 R/W
Dado para escrita / leitura da EEPROM Conhecendo os EECONS Existem dois registradores de configurao da EEPROM: EECON1 e EECON2. Vejamos primeiramente o EECON1 que responsvel pelas operaes de escrita e leitura da EEPROM. Registrador: EECON1 Bit 6 Bit 5 R/W R/W Endereos: 9Ch Bit 2 Bit 1 R/W WREN R/W WR
Bit 7 R/W -
Bit 0 R/W RD
EEIF Identificao da interrupo de final da escrita na EEPROM. 0 = Esta interrupo no ocorreu 1 = Esta interrupo ocorreu * Esse bit se encontra neste registrador por no haver mais espao no registrador INTCOM. WRERR Identificao de erro durante a escrita na EEPROM. 0 = No ocorreu erro, a escrita foi completada 1 = Um erro ocorreu por uma escrita no terminada (um reset pode ter ocorrido). WREN Habilitao de escrita na EEPROM (bit de segurana). 0 = No disponibiliza escrita na EEPROM. 1 = Disponibiliza escrita na EEPROM. WR Ciclo de escrita na EEPROM. 0 = Este bit s pode ser zerado pelo hardware, quando o ciclo de escrita termina. 1 = Inicia o ciclo de escrita. RD Ciclo de leitura na EEPROM. 0 = Este bit s pode ser zerado pelo hardware, quando o ciclo de leitura termina. 1 = Inicia o ciclo de leitura. 54
Em relao ao EECON2, devemos comentar que no se trata de um registrador verdadeiramente implementado na memria. Ele s utilizado durante a inicializao do ciclo de escrita na EEPROM por uma questo de segurana, evitando assim que a memria seja alterada acidentalmente. Registrador: EECON2 Endereos: 9Dh Utilizado para inicializar corretamente a escrita na EEPROM
55
4.9 Exerccios 1 Qual a funo do microcontrolador ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 2 Compare o microcontrolador com o microprocessador e indique suas principais diferenas. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 3 Imaginando o microcontrolador como um dispositivo de seis partes, indique quais so e como defini-las. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 4 Sabendo que o microcontrolador PIC utiliza uma tecnologia RISC, defina-a e indiquem quais as suas vantagens. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
56
5 Dentre os ciclos de mquina, a diviso do clock por quatro, forma as fases Q1, Q2, Q3, Q4. Explique a funo Pipeline, com base nas informaes anteriores. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 6 Qual a funo do vetor de reset, vetor de interrupo e a pilha ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 7 Qual a diferena entre os registradores especiais e os registradores de uso geral ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 8 Para que serve a interrupo nos microcontroladores PIC ? __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 9 Dentre os tipos de interrupo para os microcontroladores PIC, selecionamos somente quatro. Quais so e explique-as. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
57
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 10 Explique o procedimento executado pelo microcontrolador, sempre que uma interrupo acontece. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 11 Cite as principais caractersticas do microcontrolador 16F628. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 12 Comente sobre os circuitos osciladores para o microcntrolador PIC. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ 13 - Explique o comportamento do detector de baixa tenso para o microcontrolador PIC. __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
58
14 Indique qual a funo dos registradores abaixo relacionados. a STATUS _______________________________________________________ __________________________________________________________________ b OPTION________________________________________________________ __________________________________________________________________ c PCON__________________________________________________________ __________________________________________________________________ d INTCON________________________________________________________ __________________________________________________________________ e PIE1___________________________________________________________ __________________________________________________________________ f PIR1___________________________________________________________ __________________________________________________________________ g PCL___________________________________________________________ __________________________________________________________________ h PCLATH________________________________________________________ __________________________________________________________________ i TRIS___________________________________________________________ __________________________________________________________________ j PORTA e PORTB_________________________________________________ __________________________________________________________________ __________________________________________________________________
59
k TMR0__________________________________________________________ __________________________________________________________________ l TMR1__________________________________________________________ __________________________________________________________________ m TRM2_________________________________________________________ __________________________________________________________________ n WDT___________________________________________________________ __________________________________________________________________ o PRESCALER____________________________________________________ __________________________________________________________________ p EEPROM_______________________________________________________ __________________________________________________________________ q EEDATA_______________________________________________________ __________________________________________________________________ r EECONS________________________________________________________ __________________________________________________________________ s FSR e INDF_____________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
60
Anotaes:
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
61
CAPTULO 5
62
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Power-on
Outros Reset
BANK 0
Valor do endereo indireto (no um registrador verdadeiro)
---- ----
---- ----
Contador TMR0 de 8 bits Parte baixa (8 bits menos significativos) do PC IRP RP1 RP0 /TO /PD Z DC C
xxxx xxxx uuuu uuuu 0000 0000 0000 0000 0001 1xxx 000q quuu xxxx xxxx uuuu uuuu
RA0 RB0
Ponteiro para o endereamento indireto memria RA7 RB7 RA6 RB6 RA5 RB5 RA4 RB4 RA3 RB3 RA2 RB2 RA1 RB1
No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero.
GIE EEIE
EEIE CMIF
---0 0000
---0 0000
INTF
TMR2IF TMR1IF
0000 -000 0000 000 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
Registrador de acesso ao LSB do timer 1 Registrador de acesso ao MSB do timer 1 T1CKPS TICKPS T10SCE T1SYN TMR1C TMR10
--00 0000
--uu uuuu
Registrador de acesso ao contedo do timer 2 TOU TPS3 TOU TPS2 TOU TPS1 TOU TPS0 TMR 20N T2CK PS0 T2CK PS0
No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero.
Registrador de captura / comparao / PWM (LSB) Registrador de captura / comparao / PWM (LSB) RX9
CCP1X CCP1Y CCP1 M3 CCP1 M2 CCP1 M1 CCP1 M0
xxx xxxx xxxx xxxx xxx xxxx xxxx xxxx --00 0000 --00 0000
SREN
CREN ADEN
FERR
OERR RX9D
0000 00x 0000 00x 0000 0000 0000 0000 0000 0000 0000 0000
63
CIS
CM2
CM1
CM0
BANK 1
Valor do endereamento indireto /RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
1111 1111 1111 1111 0000 0000 0000 0000 0001 1xxx 000q quuu xxxx xxxx uuuu uuuu 1111 1111 1111 1111 1111 1111 1111 1111 ---- ------- ------- ------0 0000 ---- ------- ------- ------0 0000
Parte baixa (8 bits menos significativos) do PC IRP RP1 RP0 /TO /PD Z DC C
Ponteiro para o endereamento indireto RA7 RB7 RA6 RB6 RB5 RA4 RB4 RA3 RB3 RA2 RB2 RA1 RB1 RA0 RB0
No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero.
GIE EEIE
EEIE CMIE
INTF
TMR2IE TMR1IE
0000 -000 0000 000 ---- ------- 1-0x ---- ------- ------- ------- ------- ------- ------- ------- ------- ------- 1-uq ---- ------- ------- ------- ------- ------- ------- ------- ----
OSCF
/POR /BOD
No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero.
PR2
CSRC
TX9
TXEN SYNC
0000 -010 0000 -010 0000 0000 0000 0000 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
Registrador do gerador de Baud Rate (BRG) Registrador de dados da EEPROM Registrador de endereamento da EEPROM WRERR
WREN
WR
RD
VRE
VROE
VRR
VR3
VR2
VR1
VR0
64
BANK 2 100 101 102 103 104 105 106 107 108 109 10A PCLATH 10B INTCON 11F 180 181 182 183 184 185 186 187 188 189 18A PCLATH 18B INTCON 19F
GIE GIE
Valor do endereamento indireto /RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
---- ----
---- ----
1111 1111 1111 1111 0000 0000 0000 0000 0001 1xxx 000q quuu xxxx xxxx uuuu uuuu ---- ------- ------- ------- ------0 0000 ---- ------- ------- ------- ------- ------- ------0 0000 ---- ------- ----
RB6
RB5
RB4
RB3
RB2
RB1
RB0
No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero.
EEIE
TOIE INTE
1111 1111 1111 1111 0000 0000 0000 0000 0001 1xxx 000q quuu xxxx xxxx uuuu uuuu ---- ------- ------- ------- ------0 0000 ---- ------- ------- ------- ------- ------0 0000 ---- ----
RB6
RB5
RB4
RB3
RB2
RB1
RB0
No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero. No implementado no PIC 16f628. O valor lido sempre zero.
EEIE
TOIE INTE
* u inalterado, x desconhecido, q depende de condio. Os endereos entre 10Ch at 11Fh no banco 2 e os endereos 18Ah at 19Fh no so implementados.
65
Deciso Smbolo utilizado para indicar a possibilidade de desvios para diversos outros pontos do programa de acordo com situaes variveis. Processamento Predefinido Um grupo de operaes no includas no diagrama de blocos. Ex: sub-rotinas.
Conexo de pgina Uma conexo utilizada para indicar uma entrada ou sada, ou para outra pgina do diagrama. Direo de Fluxo A direo do fluxo de dados ou de processamento.
66
Set de instrues, termos mais utilizados Antes de apresentar o set de instrues necessrio que alguns termos utilizados na construo dos nomes das instrues sejam apresentados. WORK Trata-se de um registrador temporrio para operaes na ULA. No Assembler do PIC, ele conhecido com W ou acumulador. FILE Referncia a um registrador (posio de memria) propriamente dito. Utilizaremos a letra F para sua representao nos nomes de instrues e f nos argumentos delas. LITERAL Um numero qualquer que pode ser escrito na forma decimal, hexadecimal ou binria. Utilizaremos a letra L para sua representao nos nomes de instrues e k nos argumentos delas. DESTINO O local onde deve ser armazenado o resultado da operao. Existem somente dois destinos possveis: F, que guardar o resultado no prprio registrador passado como argumento, ou W, que colocar o resultado em Work. Na verdade, a sintaxe das instrues, o destino deve ser expresso pelos nmeros 0 (W) e 1 (F). No entanto, como veremos mais adiante, as letras F e W so definidas no include para facilitar a programao. BIT Bit especifico dentro de um byte, utilizaremos a letra B para sua representao nos nomes de instrues de bit. TESTE Quando queremos testar o estado de um bit, para descobrirmos se ele zero ou um. Utilizaremos a letra T para represent-lo nos nomes das instrues. SKIP Significa pulo e utilizado para criar desvios, pulando a prxima linha. Utilizaremos a letra S para represent-lo nos nomes das instrues. SET Refere-se ao ato de setar um bit, significa lev-lo ao estado Um. Utilizaremos a letra S para represent-lo nos nomes das instrues. CLEAR Refere-se ao clear de um bit, significa lev-lo ao estado Zero. Utilizaremos a letra C para represent-lo nos nomes das instrues. ZERO Algumas instrues podem gerar desvios se o resultado da operao efetuada for zero. Neste caso, utilizaremos a letra Z para indicar tal condio. Outros termos utilizados so especficos das aes realizadas pelas instrues e so praticamente auto-explicativos. Citados abaixo. ADD Soma. CLR Limpar, zerar (Clear) DEC Decremento de uma unidade IOR Lgica OU RL Rotacionar 1 bit para esquerda (Left) SUB Subtrao AND Lgica E. COM - Complemento INC Incremento de uma unidade MOV Mover, transferir para algum lugar. RR Rotacionar 1 bit para direita (Right) XOR Lgica OU exclusivo.
SWAP Inverso entre as partes alta e baixa de um registrador. Para facilitar a compreenso das 35 instrues que compe o PIC 16F628, vamos organiz-los em quatro grupos conforme as suas aplicaes. Operaes com registradores. Operaes com bits - Operaes com literais. - Controles.
67
Impe 1 (um) ao bit b do registrador f. Testa o bit b do registrador f, e pula a prxima linha se ele for 0 (zero). Testa o bit b do registrador f, e pula a prxima linha se ele for 1 (um). Controle Descrio Limpa W. Gasta um ciclo de mquina sem fazer absolutamente nada. Executa a rotina R. Limpa o registrador WDT para no acontecer o reset. Desvia para o ponto R, mudando o PC. Retorna de uma interrupo. Retorna de uma rotina, com k em W. Retorna de uma rotina, sem afetar o W. Coloca o PIC em modo de sleep (dormindo) para economia de energia.
Instruo CLRW NOP CALL CLRWDT GOTO RETFIE RETLW RETURN SLEEP
Argumentos R R K -
69
Anotaes:
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________________________________
_____________________________________________________________________________ 70
CAPTULO 6
71
J1 R12
6 7 8 9 1 2 3 4 5
D13 16F628
RA2 RA1 RA3 RA0 RA4 OSC1 MCLR OSC2 VSS VDD RB0 RB7 RB1 RB6 RB2 RB5 RB3 RB4
R11
Q2
C3 22uF
D18 LED11
73
Em Sistemas Operacionais NT e 2000 necessrio instalar um arquivo de Driver para que o Software consiga comunicar com as portas de interface do PC (porta srie e paralela), pois o Sistema Operacional (Windows) no permite o acesso direto das aplicaes ao Hardware do PC. Este Driver instalado dentro do IC-Prog, bastando para isso abrir a aplicao e acessar o menu : Settings : Options Misc
Figura 17 - Options Como citado acima necessrio ter instalado no computador o programa ICPROG. Para simulao tambm importante que voc tenha instalado no computador o programa MPLAB. Desenvolva o programa no editor preferido (Sugesto MPLAB 6.62) em seguida compile o programa para que possa ser gerado *.HEX. O programa de extenso *.HEX devera ser carregado atravs do compilador ICPROG e transferido para o microcontrolador 16f628. A tela de abertura se encontra na figura 18, onde muitas vezes se faz necessrio que seja alterada a linguagem que esta sendo utilizada para manipulao do ICPROG, nesta implementao necessrio entrar no item configurao, opes e linguagem. Utilizar portugus. J na tela abaixo vemos como carregar o programa de extenso HEX, onde j foi compilado utilizando-se o MPLAB ou do MPASM.
74
Figura 18 Tela de carregamento de arquivo no ICPROG Aps ter carregado o arquivo de extenso HEX deve ser transferido para o microcontrolador PIC. Com o cabo j conectado clicar no item comando e em programar tudo, em seguida o programa transferido e verificado se no houve erro durante transferncia.
selecione o IC a programar
75
76
C. I.
Tipo
Observaes
PIC12C508/A PIC12C509/A PIC 12CE518 PIC12CE519 PIC 12C671 PIC12C672 PIC12CE673 PIC12CE674 PIC12F629 PIC12F675 PIC16C433 PIC16C54 PIC16C56 PIC16C 58 PIC16C61 PIC16C62A/B PIC16C63/A 16C64A 16C65A/B PIC16C66 PIC16C67 PIC16C71 PIC16C72/A PIC16C/F73A/B PIC16C/F74A/B PIC16C/F76 PIC16C/F77 PIC16F83 PIC16C/F84/A PIC16C505 PIC16C605 PIC16C620 PIC16C621 PIC16C622 /A PIC16CE625 PIC16F627 PIC16F628
Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador
Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip
77
PIC16C711 PIC16C712 PIC16C715 PIC16C765 PIC16F870 PIC16F871 PIC16F872 PIC16F873 PIC16F873 A PIC16F874 PIC16F874A PIC 16F876 PIC16F876 PIC16F877 PIC16F877A PIC16C923 PIC16C924 PIC18F242 PIC18F248 PIC18F252 PIC18F258 PIC18F442 PIC18F448 PIC18F452 PIC18F458
Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador Microcontrolador
Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip
78
79
Ciclos
Efetua a soma de um literal no registrador W [label] ADDLW k (W) + k (W) C, DC, Z 0011 111x kkkk kkkk O contedo do registrador W somado com literal k e o resultado colocado no registrador W 1
Ciclos
Efetua a soma do registrador W ao registro f [label] ADDWF f,d (W) + (f) (destino) C, DC, Z 0011 0111 dfff ffff Soma o contedo do registro W ao registro f. Se <d igual a zero o resultado colocado no registro W. Se <d igual a 1 o resultado armazenado no registro f. 1
Ciclos
Operao lgica <E entre o literal k e o registro W [label] ANDLW k (W) .AND. (k) (W) Z 0011 1001 kkkk kkkk Realiza a operao de lgica E (AND) entre o contedo do registrador W com literal o k e o resultado colocado no registrador W 1
80
Ciclos
Operao lgica <E entre o registro W com o registro f. [label] ANDWF f,d (W) .AND. (f) (destino) Z 0000 0101 dfff ffff Realiza a operao de lgica <E (AND) entre o contedo do registrador W e do registrador f. Se <d igual a zero o resultado colocado no registrador W. Se <d igual a 1 o resultado armazenado no registro f. 1
Limpa um bit do registro f [label] BCF f.d 0 (f<b) Nenhum 0001 00bb bfff ffff Faz o bit <b do registro f ser igual a zero. 1
Seta o bit f [label] BSF f.d 1 (f<b) Nenhum 0001 01bb bfff ffff Faz o bit <b do registro f ser igual a um. 1
81
Teste bit f e pula se for zero [label] BTFSC f, d Desvia se f<b for igual zero. Nenhum 0001 10bb bfff ffff Se o bit <b no registro <f for igual zero, pula a prxima instruo. 1 se no houver o desvio, 2 se ocorrer o desvio.
Teste bit f e pula se for um [label] BTFSS f, d Desvia se f<b for igual a um. Nenhum 0001 11bb bfff ffff Se o bit <b no registro <f for igual a um, pula a prxima instruo. 1 se no houver o desvio, 2 se ocorrer o desvio.
Ciclos
Chama uma sub-rotina [label] Call k (PC) +1 TOS k (PC <10C0), (PCLATH <4 -3) (PC <12 11) Nenhum 0010 0kkk kkkk kkkk Chama uma sub-rotina. Primeiro, o endereo de retorno (PC +1) colocado no stack. O endereo de 11 bits armazenado nos bits <100 do PC. Os bits superiores do PC so carregados do registro PCLATH. 2
82
Limpa o registro f [label] CLRF f 0 (f) 1Z Z 0001 0001 1fff ffff O contedo do registro <f feito igual a zero e o bit Z feito igual a um. 1
Limpa o registro W [label] CLRFW 0 (W) 1Z Z 0001 0001 0000 0011 O contedo do registro <W feito igual a zero e o bit Z feito igual a um. 1
Ciclos
Limpa o registro do watch dog [label] CLRWDT 0 (WDT) 0 WDT preescalador 1 TO (invertido) 1 PD (invertido) TO, PD 0000 0000 0110 0100 Faz o temporizador watch dog timer igual a zero. Tambm zera o preescalador do watch dog. Os bits de estado TO e PD so feitos igual a 1. 1
83
Ciclos
Complementa o registro f [label] COMF f,d (naof) destino Z 0001 1001 dfff ffff O contedo do registro <f complementado. Se <d for igual a zero o resultado colocado no registro W. Se <d for igual a 1 o resultado colocado no registro <f. 1
Ciclos
Decrementa f [label] DECF f,d (f) 1 (destino) Z 0000 0011 dfff ffff Decrementa o registro <f. Se <d for igual a zero o resultado ser colocado no registro W. Se <d for igual a 1 o resultado ser colocado no registro <f. 1
Ciclos
Decrementa f e pula se o resultado for zero [label] DECFSZ f,d (f) 1 (destino), desvia se resultado igual a zero. Nenhum 0000 1011 dfff ffff Decrementa o contedo do registro <f. Se <d for igual a 0 e o resultado ser colocado no registro W. Se <d for igual a 1 o resultado ser colocado no registro <f. Se o resultado for zero a prxima instruo descartada. 1 se no ocorrer o desvio. 2 se ocorrer o desvio.
84
Ciclos
Desvia para o endereo especificado [label] GOTO k k (PC) < 100 PCLATH <4 3 (PC <12 11) Nenhum 0010 1kkk kkkk kkkk Desvia o programa pra o endereo k. Os onze bits k so carregados para o registro do PC <100. Os bits superiores do PC so carregados a partir do registro PCLATH. 2
Ciclos
Incrementa f [label] INCF f,d (f) + 1 (destino) Z 0000 1010 dfff ffff Incrementa o contedo do registro <f. Se <d for igual a zero o resultado ser colocado no registro W. Se <d for igual a 1 o resultado ser colocado no registro <f. 1
Ciclos
Incrementa f e pula se o resultado for zero [label] INCFSZ f,d (f) 1 (destino), desvia se resultado igual a zero. Nenhum 0000 1111 dfff ffff Incrementa o contedo do registro <f. Se <d for igual a 0 e o resultado ser colocado no registro W. Se <d for igual a 1 o resultado ser colocado no registro <f. Se o resultado for zero a prxima instruo descartada. 1 se no ocorrer o desvio. 2 se ocorrer o desvio.
85
Ciclos
Ou inclusivo entre k e registrador W [label] IORLW k (W) .OR. (k) (W). Z 0011 1000 kkkk kkkk Realiza a operao lgica OU entre o registro k e o registro W. O resultado colocado no registro W. 1
Ciclos
Ou inclusivo entre f e registrador W [label] IORWF f,d (W) .OR. (f) (destino) Z 0011 0100 dfff ffff Realiza a operao lgica OU entre o registro f e o registro W. Se <d for igual a zero o resultado colocado no registro W. Se <d for igual a 1 o resultado colocado no registro f. 1
Move literal para o registro W [label] MOVLW k k (W) Nenhum 0011 00xx kkkk kkkk Carrega o valor do literal k para o registrador W. 1
86
Ciclos
Movimenta f [label] MOVF f,d (f) destino Z 0000 1000 dfff fffff O contedo do registro f colocado no destino. Se d for igual a 0 o destino ser o registrador W. Se d for igual a 1 o destino ser o prprio registrador. Esta instruo pode ser utilizada para verificarmos se o contedo de um registrador zero, pois o flag Z alterado. 1
Movimenta o registro W para o f [label] MOVWF f (W) (f) Nenhum 0000 0000 1fff fffff Movimenta os dados do registrador W para o registro f. 1
Ciclos
Nenhuma operao [label] NOP Nada Nenhum 0000 0000 0000 0000 No executa nenhuma instruo. til quando utilizado como ajuste fino de laos de temporizao. 1
87
Ciclos
Retorno de uma interrupo. [label] RETFIE TOS - (PC) 1 GIE Nenhum 0000 0000 0000 1001 O topo do stack (TOS) carregado no PC. Os interrupts so habilitados de uma forma global pelo flag GIOE. O apontador do stack pointer diminudo de um (POP). 2
Ciclos
Retorna com um literal na W. [label] RETLW k k (W) TOS (PC) Nenhum 1100 01xx kkkk kkkk O registrador W carregado como valor de k. O contador de programa assume o valor do topo do stack. Equivale a uma instruo de retorno de sub-rotina sendo que o registro W retorna com o valor desejado. 2
Ciclos
Retorna da sub-rotina. [label] RETURN TOS (PC) Nenhum 0000 0000 0000 1000 O contador de programa assume o valor do topo do stack. O apontador do stack atualizado (POP). 2
88
Ciclos
Desloca f para esquerda usando o carry. [label] RLF f,d Veja a descrio C 0000 1101 dfff ffff O contedo do registro <f deslocado de um bit para a esquerda, sendo que o bit 7 enviado para carry. O contedo do carry enviado para o bit 0. Se <d for igual a zero o resultado colocado no registrador W, se for igual a 1 o resultado colocado no registro <f. 1
Ciclos
Desloca f para direita usando o carry. [label] RRF f,d Veja a descrio C 0000 1100 dfff ffff O contedo do registro <f deslocado de um bit para a direita, sendo que o bit 0 enviado para carry. O contedo do carry enviado para o bit 7. Se <d for igual a zero o resultado colocado no registrador W, se for igual a 1 o resultado colocado no registro <f. 1
89
Ciclos
Vai para o modo de repouso (stand by) [label] SLEEP 00 WDT 0 pr-escalador do WDT 1 TO barra 0 PD barra TO, PD barra 0000 0000 0110 0011 O bit de power down, (PD) feito igual a zero. O bit de estouro de tempo (time-out) feito igual a 1. Os temporizadores do watch dog timer e seu pr-escalador so zerados. O processador assume o modo SLEEP, com o oscilador parado. Para sair deste modo somente com reset ou interrupo. 1
Subtrai de um literal o valor do registrador W. [label] SUBLW k k (W) (W) C, DC, Z 0011 110x kkkk kkkk Subtrai do valor do literal <k o contedo do registrador W. O resultado colocado em W. 2
90
Ciclos
Subtrai o registro <f do contedo do registro W [label] SUBWF f,d (f) (W) (dest) C, DC, Z 0000 0010 dfff ffff Subtrai do registrador f o contedo do registrador W. Se <d igual a zero o resultado colocado no registro W. Se <d igual a 1 o resultado armazenado no registro f. 1
Ciclos
Inverte bits em f [label] SWAPF f,d (f<3,0) (dest <7.4) (f<7,4) (dest <3,0) Nenhum 0000 1110 dfff ffff Troca de posio os nibles do registrador f. Se <d igual a zero o resultado colocado no registro W. Se <d igual a 1 o resultado armazenado no registro f. 1
Ciclos
Ou exclusivo entre k e o registro W [label] XORLW k (W) . XOR. (k) (W) Z 0011 1010 kkkk kkkk Realiza a operao lgica OU EXCLUSIVO entre o registrador k e o registro W. O resultado colocado no registro W. 1
91
Ciclos
Ou exclusivo entre o registro W e f [label] XORWF f,d (W) . XOR. (f) (destino) Z 0011 0100 dfff ffff Realiza a operao lgica OU EXCLUSIVO entre o registro f e o registro W. Se ,d for igual a 0 o resultado colocado no registro W. Se <d for igual a 1 o resultado colocado no registro f. 1
92
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * ;* ;* ; ;* ;* TRAB00 NOME DO PROJETO CLIENTE DATA: 10/10/XX DESCRIO DO ARQUIVO MODELO PARA PIC 16F628 OU 16F627 * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * ; *-----------------------------------------------------------------------------------------------------------* ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628 __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE ;USURIO W_TEMP STATUS_TEMP ENDC ;REGISTRADORES TEMPORRIOS PARA USO ;JUNTO S INTERRUPES NOVAS VARIVEIS ;FIM DO BLOCO DE MEMRIA
93
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DOS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DOS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ORG 0x00 GOTO INICIO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ENDEREO DE DESVIO DAS INTERRUPES. A PRIMEIRA TAREFA SALVAR ;OS VALORES DE "W" E "STATUS" PARA RECUPERAO FUTURA ORG 0x04 MOVWF SWAPF MOVWF W_TEMP STATUS,W STATUS_TEMP ;COPIA STATUS PARA STATUS_TEMP ;ENDEREO INICIAL DA INTERRUPO ;COPIA W PARA W_TEMP ;ENDEREO INICIAL DE PROCESSAMENTO
94
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AQUI SER ESCRITA AS ROTINAS DE RECONHECIMENTO E TRATAMENTO DAS ; INTERRUPES ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE SADA DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; OS VALORES DE "W" E "STATUS" DEVEM SER RECUPERADOS ANTES DE ; RETORNAR DA INTERRUPO SAI_INT SWAPF MOVWF SWAPF SWAPF RETFIE ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINAS E SUBROTINAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; CADA ROTINA OU SUBROTINA DEVE POSSUIR A DESCRIO DE ;FUNCIONAMENTO E UM NOME COERENTE S SUAS FUNES. SUBROTINA1 ;CORPO DA ROTINA RETURN ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INICIO BANK0 MOVLW MOVWF BANK1 MOVLW B'00000000' B'00000111' CMCON ;ALTERA PARA O BANCO 0 ;DEFINE O MODO DE OPERAO ;DO COMPARADOR ANALGICO ;ALTERA PARA O BANCO 1 STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W ;MOVE W_TEMP PARA W ;MOVE STATUS_TEMP PARA STATUS
95
;DEFINE ENTRADAS E SADAS DO PORTA ;DEFINE ENTRADAS E SADAS DO PORTB ;DEFINE OPES DE OPERAO ;DEFINE OPES DE INTERRUPES ;RETORNA PARA O BANCO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* MAIN ;CORPO DA ROTINA PRINCIPAL GOTO MAIN ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* END FIM DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
96
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * ; *-----------------------------------------------------------------------------------------------------------* ;* SISTEMA MUITO SIMPLES PARA REPRESENTAR UM LED ACESO ;* ;* * ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628 __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE ;USURIO W_TEMP STATUS_TEMP TEMPO01 TEMPO02 ENDC ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES ;ESTAS VARIVEIS CONTAM O TEMPO DE PISCAGEM ;DOS LEDS ;FIM DO BLOCO DE MEMRIA
97
; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE LED PORTB,0 ; 1 -> ACESO #DEFINE LED1 PORTB,1 ; 1 -> ACESO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET ORG 0x00 GOTO INICIO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG 0x04 RETFIE ;ENDEREO INICIAL DA INTERRUPO ;RETORNA DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;ENDEREO INICIAL DE PROCESSAMENTO ;PORTA DO LED1 ; 0 -> APAGADO ;PORTA DO LED
; 0 -> APAGADO
98
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ROTINA DE DELAY * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DELAY MOVLW MOVWF DL1 MOVLW MOVWF DL2 NOP NOP DECFSZ GOTO DL2 DECFSZ GOTO DL1 RETURN ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO BANK0 CLRF PORTA CLRF PORTB BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF B'00000000' TRISA B'00000000' TRISB B'10000000' OPTION_REG ;PULL-UPS ;PRESCALER 1:2 NO TMR0 DESABILITADOS ;DEFINE TODO O PORTB COMO SADA ;DEFINE TODO O PORTA COMO SADA ;ALTERA PARA O BANCO 0 ;LIMPA O PORTA ;LIMPA O PORTB ;ALTERA PARA O BANCO 1 INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * TEMPO02,F TEMPO01,F .200 TEMPO01 .1000 TEMPO02
99
;AS DEMAIS CONFG. SO IRRELEVANTES MOVLW MOVWF BANK0 B'00000000' INTCON ;TODAS AS INTERRUPES DESLIGADAS ;RETORNA PARA O BANCO 0
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* MAIN BSF BSF LED LED1 ;ACENDE O LED0 ;ACENDE O LED1 ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
100
;* * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DESCRIO DO ARQUIVO ;*-------------------------------- ------------------------------------------------------------------------* ;* SISTEMA MUITO SIMPLES PARA REPRESENTAR O ESTADO DE ;* UM BOTO ATRAVS DE UM LED. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES ;ESTAS VARIVEIS NEM SERO UTILIZADAS ENDC ;FIM DO BLOCO DE MEMRIA
W_TEMP STATUS_TEMP
101
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BOTAO PORTA,2 ;PORTA DO BOTO
; 0 -> PRESSIONADO ; 1 -> LIBERADO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE LED PORTB,0 ; 1 -> ACESO #DEFINE LED1 PORTB,1 ; 0 -> APAGADO ; 1 -> ACESO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET ORG 0x00 GOTO INICIO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;ENDEREO INICIAL DE PROCESSAMENTO ;PORTA DO LED1 ;PORTA DO LED ; 0 -> APAGADO
102
; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO
; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG 0x04 RETFIE ;ENDEREO INICIAL DA INTERRUPO ;RETORNA DA INTERRUPO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO BANK0 MOVLW MOVWF B'00000111' CMCON ;ALTERA PARA O BANCO 0 ;DEFINE O MODO DE OPERAO ;DO COMPARADOR ANALGICO ;LIMPA O PORTA ;LIMPA O PORTB ;ALTERA PARA O BANCO 1 B'00000100' TRISA B'00000000' TRISB B'10000000' OPTION_REG ;PRESCALER 1:2 NO TMR0 ;PULL-UPS DESABILITADOS ;AS DEMAIS CONFG. SO IRRELEVANTES MOVLW MOVWF BANK0 B'00000000' INTCON ;TODAS AS INTERRUPES DESLIGADAS ;RETORNA PARA O BANCO 0 ;DEFINE TODO O PORTB COMO SADA ;DEFINE RA2 COMO ENTRADA E DEMAIS ;COMO SADAS INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CLRF PORTA CLRF PORTB BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF
103
MAIN BTFSC BOTAO ;O BOTO EST PRESSIONADO? ;NO, ENTO TRATA BOTO LIBERADO ;SIM, ENTO TRATA BOTO PRESSIONADO GOTO BOTAO_LIB GOTO BOTAO_PRES BOTAO_LIB BCF BCF GOTO BOTAO_PRES BSF BSF GOTO LED LED1 MAIN ;RETORNA AO LOOP PRINCIPAL ;ACENDE O LED LED LED1 MAIN ;RETORNA AO LOOP PRINCIPAL ;APAGA O LED
104
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ;* ;* ;* TRAB03 DESCRIO DO ARQUIVO CONTADOR SIMPLIFICADO - EX2 KIT PIC 16F628 * * DATA: 30/10/01 * * * *
;* * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * ;*---------------- -------------------------------------------------------------------------* ;* SISTEMA MUITO SIMPLES PARA INCREMENTAR AT UM DETERMINADO ;* VALOR (MAX) DE DEPOIS DECREMENTAR AT OUTRO (MIN). ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628 __CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES VARIVEIS NEM SERO UTILIZADAS ;ARMAZENA O VALOR DA CONTAGEM ;ARMAZENA OS FLAGS DE CONTROLE ;FILTRAGEM PARA O BOTO ;FIM DO BLOCO DE MEMRIA
105
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA #DEFINE SENTIDO FLAGS,0 ;FLAG DE SENTIDO ; 0 -> SOMANDO ; 1 -> SUBTRAINDO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN MAX T_FILTRO EQU EQU EQU .10 .30 .230 ;VALOR MNIMO PARA O CONTADOR ;VALOR MXIMO PARA O CONTADOR ;FILTRO PARA BOTO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BOTAO PORTA,2 ;PORTA DO BOTO
; 0 -> PRESSIONADO ; 1 -> LIBERADO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET ORG 0x00 GOTO INICIO * ;ENDEREO INICIAL DE PROCESSAMENTO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
106
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG 0x04 RETFIE ;ENDEREO INICIAL DA INTERRUPO ;RETORNA DA INTERRUPO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INICIO BANK1 MOVLW MOVWF SADAS MOVLW MOVWF MOVLW MOVWF B'00000100' TRISA B'00000000' TRISB B'10000000' OPTION_REG ;PRESCALER 1:2 NO TMR0 ;PULL-UPS DESABILITADOS ;AS DEMAIS CONFG. SO IRRELEVANTES MOVLW MOVWF BANK0 MOVLW MOVWF B'00000111' CMCON B'00000000' INTCON ;TODAS AS INTERRUPES DESLIGADAS ;RETORNA PARA O BANCO 0 ;DEFINE O MODO DE OPERAO ;DO COMPARADOR ANALGICO ;DEFINE TODO O PORTB COMO SADA ;DEFINE RA2 COMO ENTRADA E DEMAIS COMO ;ALTERA PARA O BANCO 1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS CLRF PORTA CLRF PORTB MOVLW MOVWF MIN CONTADOR ;INICIA CONTADOR = V_INICIAL * ;LIMPA O PORTA ;LIMPA O PORTB ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
107
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAIN MOVLW MOVWF CHECA_BT BTFSC GOTO MAIN DECFSZ TRATA_BT BTFSS GOTO SOMA SUBTRAI DECF CONTADOR,F MOVLW SUBWF BTFSC MIN CONTADOR,W STATUS,C ;DECREMENTA O CONTADOR ;MOVE O VALOR MNIMO PARA W ;SUBTRAI O VALOR DE W (MIN) DE CONTADOR ;TESTA CARRY. RESULTADO NEGATIVO? ;NO, ENTO CONTA >= MIN ;SIM, ENTO CONTA < MIN INCF CONTADOR,F BCF SOMA INCF CONTADOR,F MOVLW SUBWF BTFSS MAX CONTADOR,W STATUS,C ;INCREMENTA O CONTADOR ;MOVE O VALOR MXIMO PARA W ;SUBTRAI O VALOR DE W (MIN) DE CONTADOR ;TESTA CARRY. RESULTADO NEGATIVO? ;SIM, ENTO CONTA < MAX ;NO, ENTO CONTA >= MAX BSF SENTIDO ;MUDA SENTIDO PARA SUBTRAO ;VOLTA AO LOOP PRINCIPAL GOTO MAIN SENTIDO ;INCREMENTA CONTADOR NOVAMENTE ;POIS PASSOU DO LIMITE ;MUDA SENTIDO PARA SOMA ;VOLTA AO LOOP PRINCIPAL GOTO MAIN SENTIDO ;DEVE SOMAR (SENTIDO=0)? ;SIM , ;NO FILTRO,F GOTO CHECA_BT BOTAO ;O BOTO EST PRESSIONADO? ;NO, ENTO CONTINUA ESPERANDO SIM ;DECREMENTA O FILTRO DO BOTO ;NO, CONTINUA ESPERANDO SIM T_FILTRO FILTRO ;INICIALIZA FILTRO = T_FILTRO
GOTO ATUALIZA
GOTO ATUALIZA
108
ATUALIZA MOVF CONTADOR,W MOVWF BTFSS GOTO $-1 GOTO MAIN ;* FIM DO PROGRAMA PORTB BOTAO ;COLOCA CONTADOR EM W ;ATUALIZA O PORTB PARA ;VISUALIZARMOS O VALOR DE CONTADOR ;O BOTO CONTINUA PRESSIONADO? ;SIM, ENTO ESPERA LIBERAO PARA ;QUE O CONTADOR NO DISPARE ;NO, VOLTA AO LOOP PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * END ;OBRIGATRIO
109
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DESCRIO DO ARQUIVO ;*--------------------------- -----------------------------------------------------* ;* PISCA-PISCA VARIVEL PARA DEMONSTRAR A IMPLEMENTAO DE ;* DELAYS E A INVERSO DE PORTAS. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628 * ;* * * * * * * * * * * * * * * * ** * * * * * ** * * * ** * * * * * ** * * * ** * * * * * ** ** * * * * * * * *
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES ESTAS VARIVEIS NEM
W_TEMP STATUS_TEMP
110
;BASE DE TEMPO PARA A PISCADA ;FILTRAGEM PARA O BOTO ;REGISTRADORES AUXILIARES DE TEMPO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN MAX STEP MULTIPLO EQU EQU EQU EQU .10 .240 .5 .5
;A CONSTANTE DISPLAY REPRESENTA O SMBOLO QUE APARECER PISCANDO NO ;DISPLAY. 1=LED LIGADO E 0=LED DESLIGADO. A RELAO ENTRE BITS E ;SEGMENTOS A SEGUINTE: 'EDC.BAFG' DISPLAY EQU B''11011010' ;(LETRA H)
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BT1 PORTA,1 ;BOTO 1 - INCREMENTA ; 0 -> PRESSIONADO ; 1 -> LIBERADO
111
#DEFINE
BT2
PORTA,2
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ORG 0x00 GOTO INICIO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG 0x04 RETFIE ;ENDEREO INICIAL DA INTERRUPO ;RETORNA DA INTERRUPO ;ENDEREO INICIAL DE PROCESSAMENTO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE DELAY * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA AGUARDA TANTOS MILISEGUNDOS QUANTO O VALOR PASSADO ; POR W. POR EXEMPLO, SE W = .200, ELA AGUARDAR 200 MILISEGUNDOS. ; O DELAY PRINCIPAL DURA 1ms, POIS POSSUI 5 INSTRUES (5us) E ; RODADO 200 VEZES (TEMPO1). PORTANTO 200 * 5us = 1ms. ; O DELAY PRINCIPAL RODADO TANTAS VEZES QUANTO FOR O VALOR DE ; TEMPO2, O QUAL INICIADO COM O VALOR PASSADO EM W.
112
DELAY MOVWF DL1 MOVLW MOVWF DL2 NOP NOP DECFSZ GOTO DL2 DECFSZ GOTO DL1 RETURN ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INICIO BANK0 MOVLW MOVWF BANK1 MOVLW MOVWF SADAS MOVLW MOVWF MOVLW MOVWF B'00000110' TRISA B'00000000' TRISB B'10000000' OPTION_REG ;PRESCALER 1:2 TMR0 ;PULL-UPS DESABILITADOS ;AS DEMAIS CONFG. SO IRRELEVANTES MOVLW MOVWF BANK0 B'00000000' INTCON ;TODAS AS INTERRUPES DESLIGADAS ;RETORNA PARA O BANCO 0 ;DEFINE TODO O PORTB COMO SADA ;DEFINE RA1 E 2 COMO ENTRADA E DEMAIS B'00000111' CMCON ;DEFINE O MODO DE OPERAO DO ;COMPARADOR ANALGICO ;ALTERA PARA O BANCO 1 ;ALTERA PARA O BANCO 0 TEMPO2,F TEMPO1,F ;DECREMENTA TEMPO1. ACABOU? ;NO, CONTINUA AGUARDANDO SIM ;DECREMENTA TEMPO2. ACABOU? ;NO, CONTINUA AGUARDANDO SIM .200 TEMPO1 ;ESTE DELAY DURA 1ms (5*200) TEMPO2 ;INICIA TEMPO 2 COM VALOR EM W
113
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CLRF PORTA MOVLW MOVWF MOVLW MOVWF DISPLAY PORTB MIN CONTADOR ;INICIA CONTADOR COM VALOR MIN. ;ACENDE O VALOR CERTO NO DISPLAY ;LIMPA O PORTA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAIN MOVLW MOVWF MULTIPLO TEMPO3 ;INICIA COMTADOR DE MULTIPLICAO, ;POIS OS TEMPOS GERADOS POR DELAY ;SO MUITO PEQUENOS, GERANDO FREQ. ;MUITO ALTAS PARA A VISUALIZAO. MAIN1 MOVF CONTADOR,W CALL DELAY BTFSS BTFSS BT1 BT2 GOTO INCREMENTA GOTO DECREMENTA DECFSZ GOTO MAIN1 MOVLW DISPLAY TEMPO3,F ;COLOCA CONTADOR EM W ;PARA CHAMAR A ROTINA DE DELAY ;CHAMA ROTINA DE DELAY ;BOTO 1 PRESSIONADO? ;SIM, DEVE INCREMENTAR NO ;BOTO 2 PRESSIONADO? ;SIM, DEVE DECREMENTAR NO ;DECREMENTA CONTADOR MULT. ACABOU? ;NO, CONTINUA AGUARDANDO SIM ;APS TRANSCORRIDO O TEMPO, IR ;INVERTER OS LEDS CORRETOS ATRAVS ;DA MSCARA "DISPLAY" E DA OPERAO XOR XORWF GOTO MAIN PORTB,F ;INVERTE LEDS -> PISCA ;COMEA NOVAMENTE
114
DECREMENTA MOVLW SUBWF MOVLW SUBWF BTFSC GOTO MAIN MOVLW MOVWF BTFSS GOTO $-1 GOTO MAIN INCREMENTA MOVLW ADDWF MOVLW SUBWF BTFSS GOTO MAIN MOVLW MOVWF BTFSS GOTO $-1 GOTO MAIN ;* FIM DO PROGRAMA END ;OBRIGATRIO MAX CONTADOR BT1 ;ACERTA CONTADOR NO MXIMO, POIS ;PASSOU DO VALOR ;BOTO 1 CONTINUA PRESSIONADO? ;SIM, AGUARDA LIBERAO SE NO ;VOLTA AO LOOP PRINCIPAL * STEP CONTADOR,F MAX CONTADOR,W STATUS,C ;INCREMENTA O CONTADOR EM STEP ;MOVE O VALOR MXIMO PARA W ;SUBTRAI O VALOR DE W (MIN) DE CONTADOR ;TESTA CARRY. RESULTADO NEGATIVO? ;SIM, ENTO CONTA < MAX ;NO, ENTO CONTA >= MAX MIN CONTADOR BT2 ;ACERTA CONTADOR NO MNIMO, POIS ;PASSOU DO VALOR ;BOTO 2 CONTINUA PRESSIONADO? ;SIM, AGUARDA LIBERAO SE NO ;VOLTA AO LOOP PRINCIPAL STEP CONTADOR,F MIN CONTADOR,W STATUS,C ;DECREMENTA O CONTADOR EM STEP ;MOVE O VALOR MNIMO PARA W ;SUBTRAI O VALOR DE W (MIN) DE CONTADOR ;TESTA CARRY. RESULTADO NEGATIVO? ;NO, ENTO CONTA >= MIN ;SIM, ENTO CONTA < MIN
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
115
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ;* ;* ;* TRAB05 CONTADOR MELHORADO - EX4 KIT PIC 16F628 DATA: 30/10/XX DESCRIO DO ARQUIVO * * * * * * * *
;* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * ;*-------------- -------------------------------------------------------------------* ;* CONTADOR QUE UTILIZA DOIS BOTES PARA INCREMENTAR E DECRE;* MENTAR O VALOR CONTROLADO PELA VARIVEL "CONTADOR". ESTA ;* VARIVEL EST LIMITADA PELAS CONSTANTES "MIN" E "MAX". ;* O VALOR DO CONTADOR MOSTRADO NO DISPLAY. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * *
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 W_TEMP STATUS_TEMP CONTADOR ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES VARIVEIS NAO UTILIZADAS ;ARMAZENA O VALOR DA CONTAGEM
116
;ARMAZENA OS FLAGS DE CONTROLE ;FILTRAGEM PARA O BOTO 1 ;FILTRAGEM PARA O BOTO 2 ;FIM DO BLOCO DE MEMRIA *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA #DEFINE #DEFINE ST_BT1 ST_BT2 FLAGS,0 FLAGS,1 ;STATUS DO BOTO 1 ;STATUS DO BOTO 2
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN MAX T_FILTRO EQU EQU EQU .0 .15 .255 ;VALOR MNIMO PARA O CONTADOR ;VALOR MXIMO PARA O CONTADOR ;FILTRO PARA BOTO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BOTAO1 PORTA,1 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO #DEFINE BOTAO2 PORTA,2 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
117
; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ORG GOTO 0x00 INICIO ;ENDEREO INICIAL DE PROCESSAMENTO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG RETFIE 0x04 ;ENDEREO INICIAL DA INTERRUPO ;RETORNA DA INTERRUPO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE CONVERSO BINRIO -> DISPLAY * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA IR RETORNAR EM W, O SIMBOLO CORRETO QUE DEVE SER ; MOSTRADO NO DISPLAY PARA CADA VALOR DE CONTADOR. O RETORNO J EST ; FORMATADO PARA AS CONDIES DE LIGAO DO DISPLAY AO PORTB. CONVERTE MOVF ANDLW ADDWF ; RETLW RETLW RETLW RETLW RETLW RETLW CONTADOR,W B'00001111' PCL,F ; POSIO CORRETA DOS SEGUIMENTOS B'01111110' ; 00 - RETORNA SMBOLO CORRETO 0 B'00011000' ; 01 - RETORNA SMBOLO CORRETO 1 B'10110110' ; 02 - RETORNA SMBOLO CORRETO 2 B'10111100' ; 03 - RETORNA SMBOLO CORRETO 3 B'11011000' ; 04 - RETORNA SMBOLO CORRETO 4 B'11101100' ; 05 - RETORNA SMBOLO CORRETO 5 ;COLOCA CONTADOR EM W ;MASCARA VALOR DE CONTADOR ;CONSIDERAR SOMENTE AT 15 B'GFABCDE.'
118
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW ;*
B'11101110' ;06 - RETORNA SMBOLO CORRETO 6 B'00111000' ; 07 - RETORNA SMBOLO CORRETO 7 B'11111110' ; 08 - RETORNA SMBOLO CORRETO 8 B'11111100' ; 09 - RETORNA SMBOLO CORRETO 9 B'11111010' ; 10 - RETORNA SMBOLO CORRETO A B'11001110' ; 11 - RETORNA SMBOLO CORRETO b B'01100110' ; 12 - RETORNA SMBOLO CORRETO C B'10011110' ; 13 - RETORNA SMBOLO CORRETO d B'11100110' ; 14 - RETORNA SMBOLO CORRETO E B'11100010' ; 15 - RETORNA SMBOLO CORRETO F *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INICIO DO PROGRAMA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INICIO BANK0 MOVLW MOVWF BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF B'00000110' TRISA B'00000000' TRISB B'10000000' OPTION_REG ;PRESCALER 1:2 NO TMR0 ;PULL-UPS DESABILITADOS ;AS IRRELEVANTES MOVLW MOVWF BANK0 B'00000000' INTCON ;TODAS INTERRUPES DESLIGADAS ;RETORNA PARA O BANCO 0 DEMAIS CONFG. SO ;DEFINE TODO O PORTB COMO SADA ;DEFINE RA1 E 2 COMO ENTRADA ;E DEMAIS COMO SADAS B'00000111' CMCON ;DEFINE O MODO DE OPERAO DO ;COMPARADOR ANALGICO ;ALTERA PARA O BANCO 1 ;ALTERA PARA O BANCO 0
119
;LIMPA O PORTA ;LIMPA O PORTB ;LIMPA TODOS OS FLAGS ;INICIA CONTADOR = MIN ;ATUALIZA O DISPLAY INICIALMENTE
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAIN MOVLW MOVWF MOVWF CHECA_BT1 BTFSC GOTO DECFSZ GOTO BTFSS GOTO GOTO BT1_LIB BCF CHECA_BT2 BTFSC GOTO DECFSZ BOTAO2 BT2_LIB FILTRO2,F ;O BOTO 2 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO SE SIM ;DECREMENTA O FILTRO BOTO TERMINOU? ST_BT1 ;MARCA BOTO 1 COMO LIBERADO BOTAO1 BT1_LIB FILTRO1,F CHECA_BT1 ST_BT1 DEC CHECA_BT2 ;O BOTO 1 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO SE SIM ;DECREMENTA FILTRO DO BOTO TERMINOU? ;NO, CONTINUA ESPERANDO SE SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, CHECA BOTO 2 T_FILTRO FILTRO1 FILTRO2 ;INICIALIZA FILTRO1 = T_FILTRO ;INICIALIZA FILTRO2 = T_FILTRO
;NO, CONTINUA ESPERANDO SE SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, VOLTA AO LOOPING
120
BT2_LIB BCF GOTO DEC BSF MOVF XORLW BTFSC GOTO DECF GOTO INC BSF MOVF XORLW BTFSC GOTO INCF GOTO ATUALIZA CALL MOVWF GOTO CONVERTE PORTB MAIN ;CONVERTE CONTADOR NO NMERO ;ATUALIZA O PORTB PARA ;NO, VOLTA AO LOOP PRINCIPAL ST_BT2 CONTADOR,W MAX STATUS,Z MAIN CONTADOR,F ATUALIZA ST_BT1 CONTADOR,W MIN STATUS,Z MAIN CONTADOR,F ATUALIZA ST_BT2 MAIN ;MARCA BOTO 2 COMO LIBERADO ;RETORNA AO LOOPING ;AO DE DECREMENTAR ;MARCA BOTO 1 COMO J PRESSIONADO ;COLOCA CONTADOR EM W ;APLICA XOR ENTRE CONTADOR E MIN ;RESULTOU EM ZERO? ;SIM, RETORNA SEM AFETAR CONT. SE NO ;DECREMENTA O CONTADOR ;ATUALIZA O DISPLAY ;AO DE INCREMENTAR ;MARCA BOTO 2 COMO J PRESSIONADO ;COLOCA CONTADOR EM W ;APLICA XOR ENTRE CONTADOR E MAX ;RESULTOU EM ZERO? ;SIM, RETORNA SEM AFETAR CONT. SE NO ;INCREMENTA O CONTADOR ;ATUALIZA O DISPLAY
121
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ;* ;* ;* TRAB06 TIMER DE SEGUNDOS - EX5 KIT PIC 16F628 DATA: 30/10/XX DESCRIO DO ARQUIVO * * * *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;*------------------------------------------- --------------------------------------* ;* TIMER DECRESCENTE EM SEGUNDOS. O VALOR INICIAL DETERMINADO * ;* PELA CONSTANTE V_INICIO E PODE ESTAR ENTRE 1 E 9 SEGUNDOS. ;* O BOTO 1 DISPARA O TIMER, MOSTRANDO O TEMPO RESTANTE NO ;* DISPLAY. O BOTO 2 PARALIZA O TIMER. O LED UTILIZADO PARA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628 * *
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES
W_TEMP STATUS_TEMP
122
;ARMAZENA O VALOR DO TEMPO ;ARMAZENA OS FLAGS DE CONTROLE ;REGISTRADORES AUXILIARES ;FILTROS DOS BOTES ;FIM DO BLOCO DE MEMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA #DEFINE #DEFINE #DEFINE F_FIM FLAGS,0 ST_BT1 ST_BT2 FLAGS,1 FLAGS,2 ;FLAG DE FIM DE TEMPO ;STATUS DO BOTO 1 ;STATUS DO BOTO 2
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA V_INICIO T_FILTRO EQU EQU .15 .255 ;VALOR INICIAL DO TIMER (1 A 15 SEG.) ;VALOR DO FILTRO DOS BOTES
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BOTAO1 PORTA,1 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO #DEFINE BOTAO2 PORTA,2 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO
123
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE LED PORTA,3 ;LED ;0 -> DESLIGADO ;1 -> LIGADO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ORG GOTO VETOR DE RESET 0x00 INICIO * ;ENDEREO INICIAL DE PROCESSAMENTO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; UTILIZAREMOS SOMENTE A INTERRUO DE TMR0, MAS EFETUAREMOS O TESTE ; PARA TERMOS CERTEZA DE QUE NENHUM PROBLEMA ACONTECEU. NECESSRIO ; SALVAR E RECUPERAR OS VALOR DE W E STATUS. ORG MOVWF SWAPF MOVWF BTFSS GOTO 0x04 W_TEMP STATUS,W STATUS_TEMP INTCON,T0IF SAI_INT ;SALVA STATUS EM STATUS_TEMP ; INTERRUPO DE TMR0? ;NO, SAI SE AO SE SIM ;ENDEREO INICIAL DA INTERRUPO ;SALVA W EM W_TEMP
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* TRATAMENTO DA INTERRUPO DE TMR0 * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA IR CONTAR O TEMPO, E QUANDO PASSAR 1 SEGUNDO, A VARI; VEL "TEMPO" SER DECREMENTADA. ; 1 SEGUNDO = 64us (PRESCALER) X 125 (TMR0) X 125 (TEMP1)
124
BCF MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF BTFSC GOTO DECFSZ GOTO BSF GOTO
INTCON,T0IF .256-.125 TMR0 TEMP1,F SAI_INT .125 TEMP1 F_FIM SAI_INT TEMPO,F SAI_INT F_FIM SAI_INT
;LIMPA FLAG DA INT. ;REINICIA TMR0 ;DECREM. CONTADOR AUXILIAR SE FIM? ;NO, SAI SEM AO SE SIM ;REINICIALIZA TEMPO AUXILIAR ;J CHEGOU AO FIM? ;SIM, ENTO NO DECREMENTA O TEMPO ;NO ;DECREMENTA TEMPO. ACABOU? ;NO, SAI DA INTERRUPO SE SIM ;MARCA FIM DO TEMPO ;SAI DA INTERRUPO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FIM DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SAI_INT SWAPF MOVWF SWAPF SWAPF RETFIE STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W ;RECUPERA W ;RETORNA DA INTERRUPO ;RECUPERA STATUS
;* * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * ;* ROTINA DE CONVERSO BINRIO -> DISPLAY * ;* * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA IR RETORNAR EM W, O SIMBOLO CORRETO QUE DEVE SER ; MOSTRADO NO DISPLAY PARA CADA VALOR DE CONTADOR. O RETORNO J EST ; FORMATADO PARA AS CONDIES DE LIGAO DO DISPLAY AO PORTB. CONVERTE MOVF ANDLW ADDWF TEMPO,W B'00001111' PCL,F ;COLOCA CONTADOR EM W ;MASCARA VALOR DE CONTADOR ;CONSIDERAR SOMENTE AT 15
125
; RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
B'GFABCDE.' ; POSIO CORRETA DOS SEGUIMENTOS B'01111110' ; 00 - RETORNA SMBOLO CORRETO 0 B'00011000' ; 01 - RETORNA SMBOLO CORRETO 1 B'10110110' ; 02 - RETORNA SMBOLO CORRETO 2 B'10111100' ; 03 - RETORNA SMBOLO CORRETO 3 B'11011000' ; 04 - RETORNA SMBOLO CORRETO 4 B'11101100' ; 05 - RETORNA SMBOLO CORRETO 5 B'11101110' ; 06 - RETORNA SMBOLO CORRETO 6 B'00111000' ; 07 - RETORNA SMBOLO CORRETO 7 B'11111110' ; 08 - RETORNA SMBOLO CORRETO 8 B'11111100' ; 09 - RETORNA SMBOLO CORRETO 9 B'11111010' ; 10 - RETORNA SMBOLO CORRETO A B'11001110' ; 11 - RETORNA SMBOLO CORRETO b B'01100110' ; 12 - RETORNA SMBOLO CORRETO C B'10011110' ; 13 - RETORNA SMBOLO CORRETO d B'11100110' ; 14 - RETORNA SMBOLO CORRETO E B'11100010' ; 15 - RETORNA SMBOLO CORRETO F
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE ATUALIZAO DO DISPLAY * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA CONVERTE O VALOR DE TEMPO ATRAVS DA ROTINA CONVERTE ; E ATUALIZA O PORTB PARA ACENDER O DISPLAY CORRETAMENTE ATUALIZA CALL MOVWF CONVERTE PORTB ;CONVERTE CONTADOR NO NMERO DO ;DISPLAY ;ATUALIZA O PORTB PARA ;VISUALIZARMOS O VALOR DE CONTADOR ;NO DISPLAY RETURN ;NO, RETORNA
DESL_TIMER
126
INTCON,GIE LED
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE LIGAR O TIMER * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA EXECUTA AS AES NECESSRIAS PARA LIGAR O TIMER LIGA_TIMER BTFSC RETURN BCF MOVLW MOVWF MOVLW MOVWF BSF BSF RETURN INTCON,T0IF .256-.125 TMR0 .125 TEMP1 INTCON,GIE LED ;INICIA TEMP1 CORRETAMENTE ;LIGA CHAVE GERAL DE INTERRUPES ;ACENDE O LED ;RETORNA ;INICIA TMR0 CORRETAMENTE INTCON,GIE ;TIMER J ESTA LIGADO? ;SIM, RETORNA DIRETO SE NO ;LIMPA FLAG DE INT. DE TMR0
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO BANK0 MOVLW MOVWF BANK1 MOVLW MOVWF MOVLW MOVWF B'00000110' TRISA B'00000000' TRISB ;DEFINE TODO O PORTB COMO SADA ;DEFINE RA1 E 2 COMO ENTRADA E DEMAIS ;COMO SADAS B'00000111' CMCON ;DEFINE O MODO DE OPERAO ;DO COMPARADOR ANALGICO ;ALTERA PARA O BANCO 1 ;ALTERA PARA O BANCO 0 INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOVLW
B'10000101'
127
MOVWF
OPTION_REG
B'00100000' INTCON ;HABILITADA SOMENTE INTERRUPO TMR0 ;CHAVE GERAL INTERRUES DESLIGADAS ;RETORNA PARA O BANCO 0
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CLRF CLRF CLRF MOVLW MOVWF CALL PORTA PORTB FLAGS V_INICIO TEMPO ATUALIZA ;INICIA TEMPO = V_INICIO ;ATUALIZA O DISPLAY INICIALMENTE ;LIMPA O PORTA ;LIMPA O PORTB ;LIMPA TODOS OS FLAGS
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAIN BTFSC CALL CALL MOVLW MOVWF MOVWF CHECA_BT1 BTFSC GOTO BOTAO1 BT1_LIB ;O BOTO 1 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO ;SIM F_FIM DESL_TIMER ATUALIZA T_FILTRO FILTRO1 FILTRO2 ;INICIALIZA FILTRO1 = T_FILTRO ;INICIALIZA FILTRO2 = T_FILTRO ;CHEGOU AO FIM? ;SIM, ENTO DESLIGA O TIMER SE NO ;ATUALIZA O DISPLAY
DECFSZ
FILTRO1,F
128
GOTO BTFSS GOTO GOTO BT1_LIB BCF CHECA_BT2 BTFSC GOTO DECFSZ GOTO BTFSS GOTO GOTO BT2_LIB BCF GOTO ACAO_BT1 BSF CALL GOTO ACAO_BT2 BSF CALL GOTO
;NO, CONTINUA ESPERANDO SE SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, CHECA BOTO 2
ST_BT1 BOTAO2 BT2_LIB FILTRO2,F CHECA_BT2 ST_BT2 ACAO_BT2 MAIN ST_BT2 MAIN ST_BT1 LIGA_TIMER MAIN
;MARCA BOTO 1 COMO LIBERADO ;O BOTO 2 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO SIM ;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO SE SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, VOLTA AO LOOPING ;MARCA BOTO 2 COMO LIBERADO ;RETORNA AO LOOPING ;AO PARA O BOTO 1 ;MARCA BOTO 1 COMO J PRESSIONADO ;LIGA O TIMER ;AO PARA O BOTO 2
;MARCA BOTO 2 COMO J PRESSIONADO ;DESLIGA O TIMER ;NO, VOLTA AO LOOP PRINCIPAL
129
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ;* ;* ;* TRAB07 DESCRIO DO ARQUIVO CONTADOR FINAL - EX6 KIT PIC 16F628 30/10/01 * * * * * * * * *
;* * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * ;*-----------------------------------------------------------------* ;* CONTADOR QUE UTILIZA DOIS BOTES PARA INCREMENTAR E DECRE;* MENTAR O VALOR CONTROLADO PELA VARIVEL "CONTADOR". ESTA ;* VARIVEL EST LIMITADA PELAS CONSTANTES "MIN" E "MAX". ;* O VALOR DO CONTADOR MOSTRADO NO DISPLAY E ARMAZENADO NA ;* EEPROM PARA NO SER PERDIDO MESMO NO CASO DE RESET. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628
;* * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES VARIVEIS NO UTILIZADAS
W_TEMP STATUS_TEMP
130
;ARMAZENA O VALOR DA CONTAGEM ;ARMAZENA OS FLAGS DE CONTROLE ;FILTRAGEM PARA O BOTO 1 ;FILTRAGEM PARA O BOTO 2 ;FIM DO BLOCO DE MEMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA #DEFINE #DEFINE ST_BT1 ST_BT2 FLAGS,0 FLAGS,1 ;STATUS DO BOTO 1 ;STATUS DO BOTO 2
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN MAX T_FILTRO POS_MEM EQU EQU EQU EQU .0 .15 .255 .0 ;VALOR MINIMO PARA O CONTADOR ;VALOR MXIMO PARA O CONTADOR ;FILTRO PARA BOTO ;ENDEREO DA EEPROM ONDE SER ;ARMAZENADO O VALOR DO CONTADOR ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BOTAO1 PORTA,1 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO #DEFINE BOTAO2 PORTA,2 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO
131
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DA EEPROM * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ORG H'2100'+POS_MEM DE .5 ;INCIO DA EEPROM ;VALOR INICIAL PARA CONTADOR = 5 ;VIDE DIRETRIZ "DE" NO APNDICE B ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ORG 0x00 GOTO INICIO ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG RETFIE 0x04 ;ENDEREO INICIAL DA INTERRUPO ;RETORNA DA INTERRUPO ;ENDEREO INICIAL DE PROCESSAMENTO
;* * * * * * * * * * * ** * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE CONVERSO BINRIO -> DISPLAY * ;* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA IR RETORNAR EM W, O SIMBOLO CORRETO QUE DEVE SER ; MOSTRADO NO DISPLAY PARA CADA VALOR DE CONTADOR. O RETORNO J EST ; FORMATADO PARA AS CONDIES DE LIGAO DO DISPLAY AO PORTB.
132
CONVERTE MOVF ANDLW ADDWF ; RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW CONTADOR,W B'00001111' PCL,F B'GFABCDE.' ; POSIO CORRETA DOS SEGUIMENTOS B'01111110' ; 00 - RETORNA SMBOLO CORRETO 0 B'00011000' ; 01 - RETORNA SMBOLO CORRETO 1 B'10110110' ; 02 - RETORNA SMBOLO CORRETO 2 B'10111100' ; 03 - RETORNA SMBOLO CORRETO 3 B'11011000' ; 04 - RETORNA SMBOLO CORRETO 4 B'11101100' ; 05 - RETORNA SMBOLO CORRETO 5 B'11101110' ; 06 - RETORNA SMBOLO CORRETO 6 B'00111000' ; 07 - RETORNA SMBOLO CORRETO 7 B'11111110' ; 08 - RETORNA SMBOLO CORRETO 8 B'11111100' ; 09 - RETORNA SMBOLO CORRETO 9 B'11111010' ; 10 - RETORNA SMBOLO CORRETO A B'11001110' ; 11 - RETORNA SMBOLO CORRETO b B'01100110' ; 12 - RETORNA SMBOLO CORRETO C B'10011110' ; 13 - RETORNA SMBOLO CORRETO d B'11100110' ; 14 - RETORNA SMBOLO CORRETO E B'11100010' ; 15 - RETORNA SMBOLO CORRETO F ;COLOCA CONTADOR EM W ;MASCARA VALOR DE CONTADOR ;CONSIDERAR SOMENTE AT 15
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE LEITURA NA E2PROM * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA L O BYTE DO ENDEREO ACERTADO POR EEADR E COLOCA ; O VALOR EM W. LE_E2PROM BANK1 BSF MOVF BANK0 RETURN ;RETORNA EECON1,RD EEDATA,W ;BANCO 1 ;PREPARA LEITURA ;COLOCA DADO EM W
133
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE ESCRITA NA E2PROM * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA ESCREVE O DADO PASSSADO EM W NO ENDEREO ACERTADO ; ANTERIORMENTE EM EEADR ESCR_E2PROM BANK1 MOVWF BCF BSF MOVLW MOVWF MOVLW MOVWF BSF BCF BTFSC GOTO $-1 BANK0 BSF RETURN INTCON,GIE EEDATA INTCON,GIE EECON1,WREN 0X55 EECON2 0XAA EECON2 EECON1,WR EECON1,WREN EECON1,WR ;ACABOU ESCRITA? ;NO, AGUARDA ;SIM, BANCO 0 ;HABILITA INTERRUPES ;RETORNA ;INICIA ESCRITA ;BANCO 1 ;ACERTA DADO PASSADO EM W ;DESABILITA INTERRUPES ;HABILITA ESCRITA ;INICIALIZAO DA ESCRITA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE LEITURA DO VALOR DO CONTADOR * ;* * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA L O VALOR DA MEMRIA E COLOCA O RESULTADO NA ; VARIVEL "CONTADOR". LE_CONTA MOVLW BANK1 MOVWF CALL MOVWF RETURN EEADR LE_E2PROM CONTADOR ;ACERTA O ENDEREO PARA LEITURA ;EFETUA A LEITURA DA EEPROM ;ATUALIZA O CONTADOR ;RETORNA POS_MEM
134
;* * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE ESCRITA DO VALOR DO CONTADOR * ;* * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA ESCREVE O VALOR ATUAL DE CONTADOR NA MEMRIA EEPROM ESCR_CONTA MOVLW BANK1 MOVWF BANK0 MOVF CALL RETURN CONTADOR,W ESCR_E2PROM ;COLOCA CONTADOR EM W ;EFETUA A ESCRITA EEPROM ;RETORNA EEADR ;ACERTA O ENDEREO PARA LEITURA POS_MEM
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF B'00000110' TRISA B'00000000' TRISB B'10000000' OPTION_REG ;PRESCALER 1:2 NO TMR0 ;PULL-UPS DESABILITADOS ;AS DEMAIS CONFG. SO IRRELEVANTES MOVLW MOVWF BANK0 MOVLW MOVWF B'00000111' CMCON ;DEFINE O MODO DE OPERAO ;DO COMPARADOR ANALGICO B'00000000' INTCON ;TODAS AS INTERRUPES DESLIGADAS ;RETORNA PARA O BANCO 0 ;DEFINE TODO O PORTB COMO SADA ;DEFINE RA1 E 2 COMO ENTRADA E DEMAIS ;COMO SADAS ;ALTERA PARA O BANCO 1 INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
135
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CLRF CLRF CLRF CALL GOTO PORTA PORTB FLAGS LE_CONTA ATUALIZA ;LIMPA O PORTA ;LIMPA O PORTB ;LIMPA TODOS OS FLAGS ;INICIALIZA CONTADOR COM VALOR ;DA EEPROM ;ATUALIZA O DISPLAY INICIALMENTE
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* MAIN MOVLW MOVWF MOVWF CHECA_BT1 BTFSC GOTO DECFSZ GOTO BTFSS GOTO GOTO BT1_LIB BCF CHECA_BT2 BTFSC GOTO BOTAO2 BT2_LIB ;O BOTO 2 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO ;SIM ST_BT1 ;MARCA BOTO 1 COMO LIBERADO BOTAO1 BT1_LIB FILTRO1,F CHECA_BT1 ST_BT1 DEC CHECA_BT2 ;O BOTO 1 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO ;SIM ;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO ;SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, CHECA BOTO 2 T_FILTRO FILTRO1 FILTRO2 ;INICIALIZA FILTRO1 = T_FILTRO ;INICIALIZA FILTRO2 = T_FILTRO ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
136
DECFSZ GOTO BTFSS GOTO GOTO BT2_LIB BCF GOTO DEC BSF MOVF XORLW
FILTRO2,F CHECA_BT2 ST_BT2 INC MAIN ST_BT2 MAIN ST_BT1 CONTADOR,W MIN
;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO ;SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, VOLTA AO LOOPING ;MARCA BOTO 2 COMO LIBERADO ;RETORNA AO LOOPING ;AO DE DECREMENTAR ;MARCA BOTO 1 COMO J PRESSIONADO ;COLOCA CONTADOR EM W ;APLICA XOR ENTRE CONTADOR E MIN ;PARA TESTAR IGUALDADE. SE FOREM ;IGUAIS, O RESULTADO SER ZERO
;RESULTOU EM ZERO? ;SIM, RETORNA SEM AFETAR CONT. ;NO ;DECREMENTA O CONTADOR ;ATUALIZA O VALOR DE CONTADOR NA ;EEPROM ;ATUALIZA O DISPLAY ;AO DE INCREMENTAR ;MARCA BOTO 2 COMO J PRESSIONADO ;COLOCA CONTADOR EM W ;APLICA XOR ENTRE CONTADOR E MAX ;PARA TESTAR IGUALDADE. SE FOREM ;IGUAIS, O RESULTADO SER ZERO
;RESULTOU EM ZERO? ;SIM, RETORNA SEM AFETAR CONT. ;NO ;INCREMENTA O CONTADOR ;ATUALIZA O VALOR DE CONTADOR NA ;EEPROM
137
;ATUALIZAO DO DISPLAY ;CONVERTE CONTADOR NO NMERO DO ;DISPLAY ;ATUALIZA O PORTB PARA ;VISUALIZARMOS O VALOR DE CONTADOR ;NO DISPLAY
GOTO
MAIN
138
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;*-----------------------------------------------------------------* ;* CONTADOR QUE UTILIZA DOIS BOTES PARA INCREMENTAR E DECRE;* MENTAR O VALOR CONTROLADO PELA VARIVEL "CONTADOR". ESTA ;* VARIVEL EST LIMITADA PELAS CONSTANTES "MIN" E "MAX". ;* O VALOR DO CONTADOR MOSTRADO NO DISPLAY. ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ARQUIVOS DE DEFINIES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #INCLUDE <P16F628.INC> ;ARQUIVO PADRO MICROCHIP PARA 16F628
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* PAGINAO DE MEMRIA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DEFINIO DE COMANDOS DE USURIO PARA ALTERAO DA PGINA DE MEMRIA #DEFINE #DEFINE BANK0 BANK1 BCF STATUS,RP0 BSF STATUS,RP0 ;SETA BANK 0 DE MEMRIA ;SETA BANK 1 DE MAMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VARIVEIS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DOS NOMES E ENDEREOS DE TODAS AS VARIVEIS UTILIZADAS ; PELO SISTEMA CBLOCK 0x20 ;ENDEREO INICIAL DA MEMRIA DE USURIO ;REGISTRADORES TEMPORRIOS PARA ;INTERRUPES
W_TEMP STATUS_TEMP
139
;ARMAZENA O VALOR DA CONTAGEM ;ARMAZENA OS FLAGS DE CONTROLE ;FILTRAGEM 1 PARA O BOTO 1 ;FILTRAGEM 2 PARA O BOTO 1 ;FILTRAGEM 1 PARA O BOTO 2 ;FILTRAGEM 2 PARA O BOTO 2 ;INTERVALOS DE 1 MS ;FIM DO BLOCO DE MEMRIA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FLAGS INTERNOS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA #DEFINE #DEFINE ST_BT1 ST_BT2 FLAGS,0 FLAGS,1 ;STATUS DO BOTO 1 ;STATUS DO BOTO 2
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* CONSTANTES * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA MIN MAX T_FILTRO EQU EQU EQU .0 .15 .20 ;VALOR MNIMO PARA O INTENSIDADE ;VALOR MXIMO PARA O INTENSIDADE ;FILTRO PARA BOTO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ENTRADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO ENTRADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE BOTAO1 PORTA,1 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO #DEFINE BOTAO2 PORTA,2 ;PORTA DO BOTO ; 0 -> PRESSIONADO ; 1 -> LIBERADO
140
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* SADAS * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DEFINIO DE TODOS OS PINOS QUE SERO UTILIZADOS COMO SADA ; RECOMENDAMOS TAMBM COMENTAR O SIGNIFICADO DE SEUS ESTADOS (0 E 1) #DEFINE LAMPADA PORTA,0 ;DEFINE LAMPADA NO PINO17 ;0 LAMP. APAGADA ;1 LAMP. ACESA ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* VETOR DE RESET * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ORG GOTO 0x00 INICIO ;ENDEREO INICIAL DE PROCESSAMENTO
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INCIO DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; AS INTERRUPES NO SERO UTILIZADAS, POR ISSO PODEMOS SUBSTITUIR ; TODO O SISTEMA EXISTENTE NO ARQUIVO MODELO PELO APRESENTADO ABAIXO ; ESTE SISTEMA NO OBRIGATRIO, MAS PODE EVITAR PROBLEMAS FUTUROS ORG MOVWF SWAPF MOVWF BTFSS GOTO 0x04 W_TEMP STATUS,W STATUS_TEMP INTCON,T0IF SAI_INT ;SALVA STATUS EM STATUS_TEMP ; INTERRUPO DE TMR0? ;NO, SAI SE AO SE SIM ;ENDEREO INICIAL DA INTERRUPO ;SALVA W EM W_TEMP
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* TRATAMENTO DA INTERRUPO DE TMR0 * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA IR CONTAR O TEMPO, E QUANDO PASSAR 1 SEGUNDO, A VARI; VEL "TEMPO" SER DECREMENTADA. ; 1 SEGUNDO = 64us (PRESCALER) X 125 (TMR0) X 125 (TEMP1)
141
BCF MOVLW MOVWF INCF MOVLW XORWF BTFSC CLRF MOVLW XORWF BTFSC GOTO MOVF SUBWF BTFSS
INTCON,T0IF .256-.250 TMR0 TEMPO,F .16 TEMPO,W STATUS,Z TEMPO .15 INTENSIDADE,W STATUS,Z LIGA_LAMPADA INTENSIDADE,W TEMPO,W STATUS,C
;LIMPA FLAG DA INT. ;SETA TIMER P250MS ;REINICIA TMR0 ;INCREMENTA TEMPO ;COLOCA 16 EM WORK ;COMPARA TEMPO COM 16 ;TESTA BIT Z DO REG. STATUS ;ZERA TEMPO ;COLOCA 15 EM W ;COMPARA INTENSIDADE COM 15 ;TESTA BIT Z DO REG. STATUS ;MOVE INTENSIDADE PARA W ;SUBTRAI TEMPO DE INTENSIDADE ;TESTA BIC C DO REG. STATUS ;VERIFICA TEMPO MENOR QUE INTENSIDADE
LIGA_LAMPADA LAMPADA SAI_INT LAMPADA SAI_INT ;LIGA LAMPADA ;SAI DA INTERRUPO ;DESLIGA LAMPADA
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* FIM DA INTERRUPO * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SAI_INT SWAPF MOVWF SWAPF SWAPF RETFIE STATUS_TEMP,W STATUS W_TEMP,F W_TEMP,W ;RECUPERA W ;RETORNA DA INTERRUPO ;RECUPERA STATUS
142
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* ROTINA DE CONVERSO BINRIO -> DISPLAY * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; ESTA ROTINA IR RETORNAR EM W, O SIMBOLO CORRETO QUE DEVE SER ; MOSTRADO NO DISPLAY PARA CADA VALOR DE INTENSIDADE. O RETORNO J EST ; FORMATADO PARA AS CONDIES DE LIGAO DO DISPLAY AO PORTB. CONVERTE MOVF ANDLW ADDWF ; RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW INTENSIDADE,W B'00001111' PCL,F B'GFABCDE.' ; POSIO CORRETA DOS SEGUIMENTOS B'01111110' ; 00 - RETORNA SMBOLO CORRETO 0 B'00011000' ; 01 - RETORNA SMBOLO CORRETO 1 B'10110110' ; 02 - RETORNA SMBOLO CORRETO 2 B'10111100' ; 03 - RETORNA SMBOLO CORRETO 3 B'11011000' ; 04 - RETORNA SMBOLO CORRETO 4 B'11101100' ; 05 - RETORNA SMBOLO CORRETO 5 B'11101110' ; 06 - RETORNA SMBOLO CORRETO 6 B'00111000' ; 07 - RETORNA SMBOLO CORRETO 7 B'11111110' ; 08 - RETORNA SMBOLO CORRETO 8 B'11111100' ; 09 - RETORNA SMBOLO CORRETO 9 B'11111010' ; 10 - RETORNA SMBOLO CORRETO A B'11001110' ; 11 - RETORNA SMBOLO CORRETO b B'01100110' ; 12 - RETORNA SMBOLO CORRETO C B'10011110' ; 13 - RETORNA SMBOLO CORRETO d B'11100110' ; 14 - RETORNA SMBOLO CORRETO E B'11100010' ; 15 - RETORNA SMBOLO CORRETO F ;COLOCA INTENSIDADE EM W ;MASCARA VALOR DE INTENSIDADE ;CONSIDERAR SOMENTE AT 15
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIO BANK0 MOVLW MOVWF B'00000111' CMCON ;DEFINE O MODO DE OPERAO DO ;COMPARADOR ANALGICO ;ALTERA PARA O BANCO 0 INICIO DO PROGRAMA * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
143
BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF B'00000110' TRISA B'00000000' TRISB B'10000001' OPTION_REG
;ALTERA PARA O BANCO 1 ;DEFINE RA1 E 2 COMO ENTRADA E DEMAIS ;COMO SADAS ;DEFINE TODO O PORTB COMO SADA ;PRESCALER 1:4 NO TMR0 ;PULL-UPS DESABILITADOS ;AS DEMAIS CONFG. SO IRRELEVANTES
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* INICIALIZAO DAS VARIVEIS CLRF CLRF CLRF MOVLW MOVWF MOVLW MOVWF GOTO PORTA PORTB FLAGS MIN INTENSIDADE .256-.250 TMR0 ATUALIZA ;INICIA INTENSIDADE = MIN ;SETA TIMER P250MS ;REINICIA TMR0 ;ATUALIZA O DISPLAY INICIALMENTE * ;LIMPA O PORTA ;LIMPA O PORTB ;LIMPA TODOS OS FLAGS ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;* MAIN CLRF CLRF MOVLW MOVWF MOVWF FILTRO11 FILTRO21 T_FILTRO FILTRO12 FILTRO22 ;INICIALIZA FILTRO1 = T_FILTRO ;INICIALIZA FILTRO2 = T_FILTRO ROTINA PRINCIPAL * ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
144
CHECA_BT1 BTFSC GOTO DECFSZ GOTO DECFSZ GOTO BTFSS GOTO GOTO BT1_LIB BCF CHECA_BT2 BTFSC GOTO DECFSZ GOTO DECFSZ GOTO BTFSS GOTO GOTO BT2_LIB BCF LIBERADO GOTO MAIN ;RETORNA AO LOOPING ST_BT2 ;MARCA BOTO 2 COMO BOTAO2 BT2_LIB FILTRO21,F CHECA_BT2 FILTRO22,F CHECA_BT2 ST_BT2 INC MAIN ;O BOTO 2 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO ;SIM ;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO ;SIM ;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO ;SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, VOLTA AO LOOPING ST_BT1 ;MARCA BOTO 1 COMO LIBERADO BOTAO1 BT1_LIB FILTRO11,F CHECA_BT1 FILTRO12,F CHECA_BT1 ST_BT1 DEC CHECA_BT2 ;O BOTO 1 EST PRESSIONADO? ;NO, ENTO TRATA COMO LIBERADO ;SIM ;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO ;SIM ;DECREMENTA O FILTRO DO BOTO ;TERMINOU? ;NO, CONTINUA ESPERANDO ;SIM ;BOTO J ESTAVA PRESSIONADO? ;NO, EXECUTA AO DO BOTO ;SIM, CHECA BOTO 2
145
;AO DE DECREMENTAR ;MARCA BOTO 1 COMO J PRESSIONADO ;COLOCA INTENSIDADE EM W ;APLICA XOR ENTRE INTENSIDADE E MIN ;PARA TESTAR IGUALDADE. SE FOREM ;IGUAIS, O RESULTADO SER ZERO BTFSC GOTO DECF GOTO STATUS,Z MAIN INTENSIDADE,F ATUALIZA ST_BT2 INTENSIDADE,W MAX ;RESULTOU EM ZERO? ;SIM, RETORNA SEM AFETAR CONT. ;NO ;DECREMENTA O INTENSIDADE ;ATUALIZA O DISPLAY ;AO DE INCREMENTAR BSF MOVF XORLW ;MARCA BOTO 2 COMO J PRESSIONADO ;COLOCA INTENSIDADE EM W ;APLICA XOR ENTRE INTENSIDADE E MAX ;PARA TESTAR IGUALDADE. SE FOREM ;IGUAIS, O RESULTADO SER ZERO BTFSC GOTO INCF GOTO STATUS,Z MAIN INTENSIDADE,F ATUALIZA ;RESULTOU EM ZERO? ;SIM, RETORNA SEM AFETAR CONT. ;NO ;INCREMENTA O INTENSIDADE ;ATUALIZA O DISPLAY
INC
ATUALIZA CALL MOVWF CONVERTE PORTB ;CONVERTE INTENSIDADE NO NMERO DO ;DISPLAY ;ATUALIZA O PORTB PARA ;VISUALIZARMOS O VALOR DE INTENSIDADE ;NO DISPLAY GOTO MAIN ;NO, VOLTA AO LOOP PRINCIPAL
146
Esquema eltrico
15V +V J1
6 7 8 9 1 2 3 4 5
Q6
Gnd
Q3
Gnd
Q4
Gnd
DISP4
abcdefg.
DISP3
abcdefg.
DISP2
abcdefg.
DISP1
Q1
+
D16 8V2
+
D15 LED10
Q7
C3
R15
22uF
D19 D20 S4 S5 S3
LED14 2K2 S2 S1
R13 R8 R7 R14
R31
R24
R25
XTAL
LigDesl
15V +V U6
+
Con. VE LigDesl VE
D9 C1
IN
OUT COM
LED1 R9 5V +V J4 J2
D10
LED9
Lista bsica de materiais necessrios montagem do Kit de microcontrolador PIC Modelo WM002 1 Microcontrolador PIC16F628 1 Conector DB9 fmea 90 para circuito impresso (necessrio) 4 Displays de sete segmentos catodo comum (400 X 600 Mils) 1 Soquetes de 18 pinos torneados para CI 1 Barra com 80 pinos torneados para CI 5 Teclas para circuito impresso (tipo TACT) (confirmar tamanho) Mdia 1 Diodo Zener 8V2 W D4 1 Diodo Zener 5V1 W D3 4 Diodo 1N4148 D1, D2, D5, D6 7 Transistor BC548 Q1, Q2, Q3, Q5, Q7 2 Transistores PNP uso geral BC557 Q4, Q6 9 Resistores de 470 ohms, 1/8 W ou mais. R1, at R8, R27 10 resistores de 2K2 ohms R13, R14, R15, R16, R26, R29, R30, R31,R32,R33 8 resistores de 330 ohms R18, R19, R20, R21, R22, R23, R24, R25 2 Resistores de 10 K ohms R17 e R2 WM003 1 Resistor de 10 ohms R28 1 Resistor de 1K ohms R9 1 Resistor de 1K5 ohms R1 WM003 1 Regulador de tenso LM 7805 (5V 1A) 1 Cabo de comunicao serial 1 Ressonador cermico de 4MHz 1 Capacitor de 1000 F 25V, eletroltico radial. C1 1 Capacitor de 100 F 25V, eletroltico radial. C2 WM003 1 Capacitor de 22 F 25V, eletroltico radial. C1 WM003 1 Ponte retificadora de 0,5 A 30 V redonda. 1 Chave 1 plo 2 posies para circuito impresso (ver amostra) 14 Leds 3 mm (5 verde, 2 amarelo, 2 verde e 5- outra cor) 2 Conectores fmea RJ11 com 6 vias para placa de circuito impresso 2 Conectores RJ11 com 6 vias 0,5m Cabo para RJ11 com 6 vias 6 Jumper fmea de 2,54 mm 1 Conector para ligar a alimentao 1 Fonte de 9,0 VCC 0,3A ou somente o trafo com cabo de ligao Barra de pinos com espaamento de 2,54 mm (30 pinos) 1 Soquete tipo rosca para lmpada de 12vcc 1 Lmpada de 12V com rosca