H P S P I N E l e t r ô n i c a D i g i t a l e P r o g r a m a ç ã o d e M i c r o c o n t r o l a d o r e s P I C |
HOME PROJETOS PROGRAMAÇÃO |
Às vezes, em determinados circuitos, se torna necessário armazenar dados para que possam ser recuperados posteriormente ou para alimentar aplicativos como planilhas e outros programas no PC ou para que o próprio circuito volte a funcionar adequadamente quando for religado.
A maneira mais fácil de armazenar dados é usar uma memória EEPROM. Muitos microcontroladores PIC possuem memória EEPROM porém seu tamanho é muito limitado e, dependendo da aplicação, é insuficiente para guardar todos os dados requeridos. Assim, o jeito é usar um chip de EEPROM externo como o EPROM 93C66 que, segundo o seu data sheet, possui 4096 bits organizados num array de 256x16 bits, isto é, comporta 512 bytes de 8 bits. Outras características da EPROM 93C66 são:
|
A fim de facilitar a operação da EPROM 93C66, este projeto define as rotinas necessárias para gravar, ler, e apagar essa memória.
REQUISITOS DE HARDWARE
As rotinas aqui apresentadas são desenvolvidas para microcontroladores da família 16F.
Para usar uma EPROM 93C66 é necessário que se reserve 4 (quatro) portas de I/O do microcontrolador PIC para controlar os seguintes sinais:
|
A figura abaixo mostra o esquema elétrico para a construção de um circuito montado em torno de um microprocessador PIC16F628A que será usado para testar o programa de demonstração da rotinas.
AS ROTINAS
As rotinas desenvolvidas para ler, gravar e apagar a memória EPROM 93C66 fazem parte do módulo eeprom_93c66.asm que deve ser incluido no programa fonte através de um comando #include "eeprom_93c66.asm".
DEFINIÇÃO DE REGISTRADORES E SÍMBOLOS NO PROGRAMA
Antes de compilar o programa que vai usar essas rotinas, é necessário incluir os registadores e símbolos abaixo na sessão adequada do programa. Esses registradores são para uso exclusivo das rotinas de controle da EEPROM e não devem ser usados pelo programador para quaisquer outras finalidades.
Os símbolos abaixo permitem ao programador definir as portas e bits de I/O que serão usados pelas rotinas para controlar a memória EEPROM. Os bits podem ser escolhidos a vontade contanto que pertençam a mesma porta. Os valores atribuidos aos símbolos abaixo são apenas exemplos.
Pode-se, opcionalmente, acender um LED indicador de estado da EEPROM durante as instruções de gravação. Para acender o LED indicador, reserve um bit de uma porta qualquer, definindo-os no programa com os símbolos abaixo e conecte o LED a esse pino. Se não desejar o LED indicador, não defina os símbolos abaixo e automaticamente a rotina não vai gerar instrucões para mostrar o status da EPPROM com o LED.
DESCRICAO DAS ROTINA
ROTINA | FUNÇÃO | ENTRADA | SAÍDA | COMO CHAMAR |
---|---|---|---|---|
EP_WEN | Habilita a EEPROM para gravação | não há | EEPROM habilitada para gravação |
call EP_WEN
|
EP_WDS | Desabilita a EEPROM para gravação | não há | EEPROM desabilitada para gravação |
call EP_WDS
|
EP_WRALL | Grava um unico valor (16 bits) em toda a EEPROM | EP_DATA deve conter os 16 bits de dados | toda a EEPROM gravada com o dado especificado |
call EP_WEN ; habilita gravação na
; memória eprom
movlw "A"
movwf EP_DATA+0
movlw "X"
movwf EP_DATA+1
call EP_WRALL
|
EP_WRITE | Grava um dado (16 bits) num endereço da EEPROM | EP_ADDRESS deve conter um endereço (0x00 a 0xFF) EP_DATA deve conter os 16 bits de dados |
dado em EP_DATA (16 bits) gravado no endereço EP_ADDRESS |
call EP_WEN ; habilita gravação na
; memória eprom
movlw 0x20
movwf EP_ADDRESS
movlw "A"
movwf EP_DATA+0
movlw "X"
movwf EP_DATA+1
call EP_WRITE;
|
EP_READ | Le um dado (16 bits) de um endereço da EEPROM | EP_ADDRESS deve conter um endereço (0x00 a 0xFF) | EP_DATA (16 bits) contera o dado lido |
movlw 0x20 ; endereço
movwf EP_ADDRESS
call EP_READ;
|
EP_ERAL | Apaga todos os dados da EPPROM gravando 0xFF | não há | toda a EPPROM apagada (gravada com 0xFF) |
call EP_WEN ; habilita gravação na
; memória eprom
call EP_ERAL
|
EP_ERASE | Apaga um endereço da EEPROM gravando 0xFF | EP_ADDRESS deve conter um endereço (0x00 a 0xFF) | endereço especificado apagado (gravado com 0xFF) |
call EP_WEN ; habilita gravação na
; memória eprom
movlw 0x20
movwf EP_ADDRESS
call EP_ERASE;
|
EP_PUT | Move bytes da memória de dados do processador para a EEPROM | o registrador W contem o número de bytes a serem movidos o registrador FSR contem o endereço de origem do dado na memória do processador EP_ADDRESSS contem o endereço destino do dado na memória EEPROM | endereço EP_ADDRESS da EEPROM com o dado movido do processador |
call EP_WEN ; habilita gravação na memória
; eprom
movlw dado ; endereço do dado na memória de
; dados do processador
movwf FSR ; carrega indexador
movlw 0x50 ; endereço destino na EEPROM
movwf EP_ADDRESS ; carrega destino
movlw n ; número de bytes a mover
call EP_PUT ; chama a movimentação
|
PROGRAMA EXEMPLO
O programa de demonstração mostra como ler a EPROM.
Esse programa usa a controladora de LCD descrita em
LCD HD44780 - interface com 2 fios.
Monte o circuito mostrado no esquema elétrico acima para poder testar o programa. O botão de contato momentâneo, ligado ao
pino RA0 (PORTA), permite ler sequencialmente a EPROM cada vez que for pressionado.
DOWNLOADS
Índice dos circuitos |
![]() |
H P S P I N Desde 04 de Março de 2010 Atualização: 26 de Apr de 2025 |
![]() |