Está en la página 1de 4

Rotinas de leitura e gravação para EPROM 93C66

À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:  Tensão de alimentação entre 2,7v a 5,5v. Drenagem de corrente de 200uA (micro Ampères).  40 anos de retenção dos dados gravados.  Pode ser gravada 1.000.000 de vezes.

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:   

CS sinal do chip select. SK sinal de clock. DI entrada serial de dados. DO saída serial de dados.

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.

cache de instrucao da EPROM EP_TMP1 RES 1 . Os bits podem ser escolhidos a vontade contanto que pertençam a mesma porta. EP_put 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.asm". 16 bits de dados EP_ILC RES 1 . é necessário incluir os registadores e símbolos abaixo na sessão adequada do programa. EP_ADDRESS RES 1 .asm que deve ser incluido no programa fonte através de um comando #include "eeprom_93c66. DEFINIÇÃO DE REGISTRADORES E SÍMBOLOS NO PROGRAMA Antes de compilar o programa que vai usar essas rotinas. . endereco corrente na EPROM EP_DATA RES 2 . gravar e apagar a memória EPROM 93C66 fazem parte do módulo eeprom_93c66. EP_rotate. 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. tamanho da instrucao EP_ICACHE RES 4 . EP_wait EP_TMP2 RES 1 . Os valores atribuidos aos símbolos abaixo são apenas exemplos. temp EP_READ. temp EP_READ.AS ROTINAS As rotinas desenvolvidas para ler. temp EP_READ EP_TMP3 RES 1 .

definindo-os no programa com os símbolos abaixo e conecte o LED a esse pino. tempo para estabilizar a EEPROM no Chip Select (micro segundos) Pode-se. pino DO da EPROM Output --> PIC input EP_STABLE equ .#define EP_TRIS TRISx . pino CS da EPROM Chip Select ---> PIC output EP_SK equ 2 . pino DI da EPROM Input ---> PIC output EP_DO equ 4 . I/O da EPROM #define EP_PORT PORTx . 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. pino para o LED de Wait da gravação (OPCIONAL) DESCRICAO DAS ROTINA FUNÇÃO ENTRADA SAÍDA Habilita a não há EEPROM habilitada EEPROM para para gravação gravação EP_WDS Desabilita a não há EEPROM EEPROM para desabilitada para gravação gravação EP_WRALL Grava um unico EP_DATA deve conter toda a EEPROM valor (16 bits) em os 16 bits de dados gravada com o dado toda a EEPROM especificado ROTINA EP_WEN COMO CHAMAR call EP_WEN call EP_WDS call EP_WEN . habilita gravação na . pino SK da EPROM Clock ---> PIC output EP_DI equ 1 .200 . opcionalmente. porta para o LED de Wait da gravação (OPCIONAL) EP_LEDBIT equ n . memória eprom movlw 0x20 movwf EP_ADDRESS movlw "A" movwf EP_DATA+0 movlw "X" movwf EP_DATA+1 call EP_WRITE. memória eprom movlw "A" movwf EP_DATA+0 movlw "X" movwf EP_DATA+1 call EP_WRALL call EP_WEN . Se não desejar o LED indicador. Para acender o LED indicador. movlw 0x20 . call EP_WEN . endereço movwf EP_ADDRESS call EP_READ. memória eprom call 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 EP_READ Le um dado (16 bits) de um endereço da EEPROM Apaga todos os dados da EPPROM gravando 0xFF EP_ADDRESS deve conter um endereço (0x00 a 0xFF) não há EP_DATA (16 bits) contera o dado lido EP_ERAL toda a EPPROM apagada (gravada com 0xFF) . habilita gravação na . acender um LED indicador de estado da EEPROM durante as instruções de gravação. habilita gravação na . reserve um bit de uma porta qualquer. #define EP_LED PORTy . porta da EPROM EP_CS equ 3 .

br/site1/circuitos/eprom93c66/ . chama a movimentação PROGRAMA EXEMPLO O programa de demonstração mostra como ler a EPROM. EP_PUT Move bytes da o registrador W contem endereço call EP_WEN . memória de o número de bytes a EP_ADDRESS da habilita gravação dados do serem movidos EEPROM com o na memória . http://www. ligado ao pino RA0 (PORTA).EP_ERAL EP_ERASE Apaga um endereço da EEPROM gravando 0xFF EP_ADDRESS deve conter um endereço (0x00 a 0xFF) endereço call EP_WEN . permite ler sequencialmente a EPROM cada vez que for pressionado. eprom processador para dado movido do movlw dado a EEPROM o registrador FSR processador . carrega EP_ADDRESSS indexador movlw contem o endereço 0x50 . especificado habilita gravação apagado (gravado na . carrega destino movlw n . número de bytes a mover call EP_PUT .com.interface com 2 fios. endereço destino do dado na destino na EEPROM memória EEPROM movwf EP_ADDRESS . origem do dado na dados do memória do processador processador movwf FSR . memória eprom com 0xFF) movlw 0x20 movwf EP_ADDRESS call EP_ERASE. Esse programa usa a controladora de LCD descrita em LCD HD44780 . Monte o circuito mostrado no esquema elétrico acima para poder testar o programa. O botão de contato momentâneo.hpspin. endereço do dado contem o endereço de na memória de .