em hỏi các bác tí :
em làm đồ án đếm sản phẩm lưu vào eeprom trừ khi mất điện nó còn lưu lại được ,nhưng đang bị bế tắc chỗ lưu vào eeprom.
em dùng codevision và mega16 eeprom=512bytes
vd: em muốn lưu biến đếm i vào eeprom
đây là bài code của em bác nào chỉ giáo em với nhá,,,,cảm ơn bác nào nhiệt tình.
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
unsigned long int i=0;
char flash *str="GIA TRI DEM : ";
interrupt [EXT_INT1] void ext_int1_isr(void)
{
i++;
}
// Declare your global variables here
void number(unsigned long int i){
unsigned char a,b,c,d,e,f,g,h,l,m;
m=i%10;
i=i/10;
l=i%10;
i=i/10;
h=i%10;
i=i/10;
g=i%10;
i=i/10;
f=i%10;
i=i/10;
e=i%10;
i=i/10;
d=i%10;
i=i/10;
c=i%10;
i=i/10;
b=i%10;
i=i/10;
a=i%10;
lcd_gotoxy(6,1);
lcd_putchar(a+48);
lcd_putchar(b+48);
lcd_putchar(c+48);
lcd_putchar(d+48);
lcd_putchar(e+48);
lcd_putchar(f+48);
lcd_putchar(g+48);
lcd_putchar(h+48);
lcd_putchar(l+48);
lcd_putchar(m+48);
}
void main(void)
{
PORTA=0;
DDRA=0xff;
PORTD=0xff;
DDRD=0;
GICR|=0x80;
MCUCR=0x08;
MCUCSR=0x00;
GIFR=0x80;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_clear();
lcd_putsf("HUAN-NGAN_SON");
delay_ms(100);
lcd_clear();
lcd_putsf("DEM SAN PHAM BANG HONG NGOAI");
delay_ms(200);
lcd_clear();
lcd_putsf(str);
delay_ms(100);
// Global enable interrupts
#asm("sei")
while (1)
{
number(i);
};
}
em làm đồ án đếm sản phẩm lưu vào eeprom trừ khi mất điện nó còn lưu lại được ,nhưng đang bị bế tắc chỗ lưu vào eeprom.
em dùng codevision và mega16 eeprom=512bytes
vd: em muốn lưu biến đếm i vào eeprom
đây là bài code của em bác nào chỉ giáo em với nhá,,,,cảm ơn bác nào nhiệt tình.
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
unsigned long int i=0;
char flash *str="GIA TRI DEM : ";
interrupt [EXT_INT1] void ext_int1_isr(void)
{
i++;
}
// Declare your global variables here
void number(unsigned long int i){
unsigned char a,b,c,d,e,f,g,h,l,m;
m=i%10;
i=i/10;
l=i%10;
i=i/10;
h=i%10;
i=i/10;
g=i%10;
i=i/10;
f=i%10;
i=i/10;
e=i%10;
i=i/10;
d=i%10;
i=i/10;
c=i%10;
i=i/10;
b=i%10;
i=i/10;
a=i%10;
lcd_gotoxy(6,1);
lcd_putchar(a+48);
lcd_putchar(b+48);
lcd_putchar(c+48);
lcd_putchar(d+48);
lcd_putchar(e+48);
lcd_putchar(f+48);
lcd_putchar(g+48);
lcd_putchar(h+48);
lcd_putchar(l+48);
lcd_putchar(m+48);
}
void main(void)
{
PORTA=0;
DDRA=0xff;
PORTD=0xff;
DDRD=0;
GICR|=0x80;
MCUCR=0x08;
MCUCSR=0x00;
GIFR=0x80;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_clear();
lcd_putsf("HUAN-NGAN_SON");
delay_ms(100);
lcd_clear();
lcd_putsf("DEM SAN PHAM BANG HONG NGOAI");
delay_ms(200);
lcd_clear();
lcd_putsf(str);
delay_ms(100);
// Global enable interrupts
#asm("sei")
while (1)
{
number(i);
};
}
Comment