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
}
}
thì (PIND & (1<<4)) là cho PORTD.4=1 mà,còn !(PIND & (1<<4))) là cho bít này =0 .Em muốn hỏi là làm tại sao khi nhấn phím thì cái hàm EEPROM_write(0x02,123) nó không hoạt động,em kiểm tra rồi chắc chắn là khi nhấn phím thì chương trình sẽ làm việc với đoạn chương trình trong phím nhấn,vậy thì tại sao ko ghi được vào eeprom,có nguyên nhân gì ngoài lỗi lập trình không nhỉ.
khổ quá tìm mãi mà ko thấy cái hàm eepromm của codevision đâu cả.Đang bực mình thử làm mô phỏng với chương trình trên thì thấy khi nhấn phím PORTD.5 để ghi vào eeprom thì vi điều khiển không chạy nữa.hic chẳng nhẽ cái eeprom của con vi điều khiển mô phỏng cũng hỏng à pác VNarmy

Comment