Olá pessoal.
Vou postar aqui para vocês de como se ler e escrever na EEprom do microcontrolador PIC16F628A.
Antes de começar a explicar, já vou dizendo que sou ainda aprendiz de
programação em linguagem C,e que estudo por contra própria lendo
apostilas e exemplos pela Net.
O compilador ao qual eu melhor me adaptei foi o MIKROC FOR PIC V8.2, é verdade que já existe uma nova versão deste compilador.
Aqui abaixo vou colocar um exemplo que aprendi,e que poderá servir de base ou ate mesmo ajudar
a quem esta aprendendo ou servir de ideia para um outro projeto.
Este foi o meu segundo código escrito para acessar a EEprom do
PIC16F628A em 16bits, algumas informações
da Net em linguagem C mas nada de concreto simplesmente ideias, mas este código que vou postar ele realmente funciona porque eu já o testei no microcontrolador PIC16F628.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// COMO ESCREVER NA EEPROM PIC16F628A em 16BITS
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// EEPROM Como Escrever e ler a memória do microcontrolador.
//
// Configuração:
// MCU: PIC16F628A
// Oscillator: 4.MHz Interno
// Ext. Modules: LCD 2x16
// SW: MikroC v8.1
//----------------------- Declarações de Variaveis -----------------------------
unsigned int dados=0,EEpromH=0,EEpromL=0,EscreveValor=0,EEpromWH,EEpromWL;
//---------------------- Conversor de string para o LCD -----------------------
unsigned char longstr[13];
//--------------- funções void Leitura e Escrita ------------------------------
void EEprom16_Read(void){
dados=(EEpromH<<8)+EEpromL;
//Lê Dois bytes da EEPROM interna
EEpromL = EEPROM_Read(0x00); // Lê o endereço 0x00 e atribuir valor para EEpromL
delay_ms(20);
EEpromH = EEPROM_Read(0x01); // Lê o endereço 0x01 e atribuir valor para EEpromH
delay_ms(20);
}
void EEprom16_Write(void){
EEpromWL=EscreveValor;
EEpromWH=(EEpromWL/256);
//Escreve Dois bytes na EEPROM interna
EEPROM_Write(0x00, EEpromWL); //Escrever na EEPROM interna no endereço 0x00
delay_ms(20);
EEPROM_Write(0x01, EEpromWH); //Escrever na EEPROM interna no endereço 0x01
delay_ms(20);
}
//----------------------------- Main Comando -----------------------------------
void main(){
CMCON = 7; // comparador off, digital I/O
TRISB = 0;
PORTB = 0;
TRISA = 0;
PORTA = 0;
//------------------------ Configurações do LCD -------------------------------
// Lcd_Custom_Config(&PORTB,D7,D6,D5,D4 ,&PORTA,RS,RW,E);
Lcd_Custom_Config(&PORTB,5,4,6,7 ,&PORTA ,7,4,6 ); // Initialize Lcd
Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Desliga o cursor do LCD
Lcd_Custom_Out(1,1, "ESCREV NA EEPROM");
Lcd_Custom_Out(2,2, "Info-Tecniko");
Delay_ms(1800); // Tempo para visualizar no LCD
Lcd_Custom_Cmd(Lcd_Clear); // Limpa o LCD
Lcd_Custom_Out(1,2, "Info-Tecniko");
//---------------------- Execução do Programa ----------------------------------
while(1){
EscreveValor=523; // Aqui Voce Escreve o Valor de 0 a 65535
EEprom16_Write();
EEprom16_Read();
WordToStr(dados,longstr);
Lcd_Custom_Out(2,4,longstr); //LCD mostra valor de 0 a 65535
} // Fim Loop while
} // Fim Void Man
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Nenhum comentário:
Postar um comentário