Autor: Eng David M Risnik                          dmrsp@terra.com.br                                    * *   2003  *  *

MEMORIA - 24C04

2 WIRE SERIAL CMOS EEPROM

Display LCD - 40 caracteres por 2 linhas ...

Uma prática rotina de teste com o 8031

A série 24Cxx  - EEPROM de baixo custo - baixo consumo e tamanho reduzido (8 ppiinos) são excelentes para aplicação em desenvovimentos compactos . Utilizando a tecnologia I2C (serial) leitura / escrita  , emprega somente 2 pinos  neste controle (veja texto I2C na pagina inicial): 

SERIAL DATA = SDA

SERIAL CLOCK  = SCL

O tamanho desta memoria é especificado em K-bits (isto mesmo , bits) . Assim a memoria 24C01 possue 1K bits (1024 bits que são armazenados em um bloco de 128 bytes , ou  8 x 128 bits). A memoria 24C04 possue 4K bits , armazenados em 512 bytes ( 8 x 512 bits ). 

A posição de armazenagem é definida pelo ENDEREÇO , que vai desde 00 (primeira posição) até o máximo suportada memoria . 

Podemos "testar" estas posições (ou um bloco) de memoria , atraves de uma rotina que "escreva" um determinado valor num endereço , e na sequencia faça a "leitura"  do valor contido neste endereço , que obviamente deverá ser o mesmo escrito para confirmação operação. Para facilitar a escrita / leitura , estas memorias permitem ainda o acesso direto a um "bloco" de até 8 bytes , tornando mais rapida a operação . 

ROTINA ASSEMBLER

A tÍtulo de exemplo apresento uma rotina simples desenvolvida para os "kits" 8031 (com RAM externa de código) que executa os seguinte procedimentos:

- Grava um bloco de dados (8 bytes) pre-definidos (tabela 1) no endereço (40~49H) da 24C04

2 - Procede a leitura desta mesma faixa de endereço

3 - Executa uma comparação entre os dados escritos e lidos

4 - Emite uma mensagem no display confirmando (OK) ou não (erro) a exatidão da operação . 

DETALHES: os pinos A1/A2/A3 da 24c04 devem ser aterrados , correspondendo ao endereço 00 que identifica o dispositivo (pinos 1-2-3-4). O pino 7 (WP = write protec) deve também estar aterrado , permitindo a escrita na memoria. As linhas SDA e SCL (pinos 8 e 9) são conectadas aos pinos 0 e 1 da porta P1 (P1.0 - P1.1). O pino 8 de Vcc é conectado a alimentação de +5V.

Eu utilizei um display LCD de 40 caracteres por duas linhas , mas vc podera utilizar sem problemas os displays de 16 caracteres , pois os comandos de inicialização são identicos (sub-rotina ini_disp) . A linha de dados para o display é fornecida pela porta P2 , enquanto que os sinais de controle (EN , RS) pela porta P3 do micro . Estas caracteristicas vc pode alterar de acordo com sua conveniencia , bastando identificar no software . Aqueles que ja possuem uma certa pratica não encontrarão problemas nesta configuração .

 

DISPLAY  X   LED

 

A saída de informação atraves de um display é interessante pois permite emitir "mensagens" , de qualquer forma o teste poderá também ser implementado sem o display , bastando por exemplo , acionar um LED que identifique um ERRO e outro que identifique R/W = OK  Para isto  nomeie um pino de saida (exmplo P1.3 e P1.4) que servira de driver aos leds . As conclusões do software , ao inves de enviar mensagens ao display , deverão neste caso acionar os respectivos pinos ( CLR ou SETB , para "0"  ou "1"). Normalmente utilizamos o anodo do Led conectado ao +5V e o catodo atraves de um resistor de 150R ao pino de controle , que ao ser levado a nivel logico ZERO (CLR) acendo o led.

A rotina batizada por "eetst.asm" esta neste site , faça o download no seu editor de texto preferido . Sugestão: para melhora-la , amplie o teste para varrer todas as posições de memoria ! Tente ..."boa sorte" ! 

eetst.asm

Projeto linha automotiva: velocimetro digital com alerta/memoria de percurso/registro de vel max/consumo comb./relogio/cronometro

Importante: caso deseje "rodar" esta rotina nos micros com ROM interna (87C55 ou 89C55 (flash) observe que alguns comandos deverão ser alterados