Chào các bác mong được sớm giúp đỡ:
Mình làm chương trình ghi đọc eeprom chương trình của mình như sau:
Mình làm chương trình ghi đọc eeprom chương trình của mình như sau:
Code:
#include<avr/io.h> #include<avr/iom16.h> #include<D:\HamLCD.h> void EEPROM_write(unsigned int diachi,unsigned char data) { //doi cho den khi du lieu truoc duoc ghi xong(kiem tra xem EEWE co bang 0 hay khong) //EEWE=0 ghi xong,EEWE=1 chua xong while(EECR & (1<<1)) ; //thiet lap dia chi va thanh ghi du lieu EEAR = diachi; // EEARH=0x00; EEDR=data; //EEMWE=1 cho phep ghi du lieu len eeprom khi EEWE=1; //EEMWE=0 khi EEWE=1 du lieu cung khong dc ghi EECR |=(1<<2); //bat dau ghi vao eeprom bang cach thiet lap EEWE EECR |=(1<<1); } unsigned char EEPROM_read(unsigned int diachi) { //doi cho den khi qua trinh ghi duoc hoan thanh while(EECR & (1<<1)) ; // thiet lap thanh ghi dia chi EEAR = diachi; //EEARH =0x00; //bat dau doc eeprpm bang cach thiet lap EERE EECR |= (1<<0); //dua du lieu vao thanh ghi du lieu return EEDR; } void main() { unsigned char data1,data2; //PORTA=0x00; //DDRA=0xFF; // Port B initialization PORTB=0x00; DDRB=0xFF; // Port C initialization //PORTC=0x00; //DDRC=0xFF; PORTD=0xFF; DDRD=0x00; khoitaoLCD(); while(1) { In_chuoi(0x80,"start*"); //In_chuoi(0xC0,"4 ghi,5 doc*"); if(!(PIND &(1<<5)))//khi nhấn phím ở PORTD.5 thì bắt đầu ghi eeprom { EEPROM_write(0x0002,234); In_chuoi(0x86,"vua vao*"); //In_So_4(0xCB,EEPROM_read(0x03)); } data1=EEPROM_read(0x0001); data2=EEPROM_read(0x0002); In_So_4(0xC,data1); In_So_4(0xC7,data2);//hien thi eeprom lên LCD } }
Comment