Trích:
Nguyên văn bởi namqn
Bạn nên cho biết phần cứng của bạn thiết kế ra sao, code của bạn viết như thế nào (không cần code chi tiết, chỉ cần chương trình chính, và các phần code liên quan đến đọc/ghi EEPROM).
Những câu hỏi trên của bạn liên quan đến nhiều vấn đề, không thể giải thích đơn giản bằng vài đoạn văn bản.
Thân,
|
cái này chỉ là từng đoạn chường trình thôi. anh coi có giúp gì được cho em không.
Code:
#include<18f4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOBROWNOUT
#device 18F4550*=16 ADC=10
#use delay(clock=48000000)
#include<E:\595\font9moi.c>
#include<E:\595\font7.c>
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#priority rda
#use fast_io(a)
#byte porta=0x05
#use fast_io(b)
#byte portb=0x06
#use fast_io(c)
#byte portc=0x07
#use fast_io(d)
#byte portd=0x08
#use fast_io(e)
#byte porte=0x09
#define clk pin_b4
#define data pin_b5
#define lock pin_b6
//********** DIA CHI CAC EPPROM ************************************************
#define add1 0x06 // 30 byte
#define add2 0x25 // 34 byte
#define add3 0x49 // 80 byte
#define add4 0x9f // 100 byte
#define b1 0x01
#define b2 0x02
#define b3 0x03
#define b4 0x04
//==================
void giao_tiep();
void viet_eeprom();
void doc_eeprom1();
void doc_eeprom2();
void doc_eeprom3();
void doc_eeprom4();
void trabang();
#INT_RDA
void giao_tiep()
{ int8 c;
disable_interrupts(global);
output_low(pin_b0); output_low(pin_b1); output_low(pin_b2); output_low(pin_b3);
c = getc();
putc(c);
k=c;
if(k==255)
{
viet_eeprom();
}
else { chu[s]=k; s++; delay_ms(500);}
enable_interrupts(global);
}
//****************************************************
#INT_EEPROM
void viet_eeprom()
{ int i,l,x;
disable_interrupts(global);
if(chu[0]==251)// chuoi 1
{
write_eeprom(b1,s);
for(i=0;i<s;i++) // s
{ write_eeprom(add1+i,chu[i]); }
}
if(chu[0]==252) // chuoi 2
{
write_eeprom(b2,s);
for(i=0;i<s;i++) // s
{ write_eeprom(add2+i,chu[i]); }
}
if(chu[0]==253)// chuoi 3
{
write_eeprom(b3,s);
for(i=0;i<s;i++) // s
{ write_eeprom(add3+i,chu[i]); }
}
if(chu[0]==254) // chuoi 4
{
write_eeprom(b4,s);
for(i=0;i<s;i++) // s
{ write_eeprom(add4+i,chu[i]); }
}
for(i=0;i<s+2;i++) {chu[i] = 10;}
s=0;
printf("W ");
enable_interrupts(global);
}
//****************************************************
void doc_eeprom1()
{ int i,l;
disable_interrupts(global);
for(i=0;i<f1;i++)
{
l = read_eeprom(add1+i);
chu[i] = l;
}
enable_interrupts(global);
printf("C1 ");
}
//**********************************************************
void doc_eeprom2()
{ int i,l;
disable_interrupts(global);
for(i=0;i<f2;i++)
{
l = read_eeprom(add2+i);
chu[i] = l;
}
enable_interrupts(global);
printf("C2 ");
}
//****************************************************
void doc_eeprom3()
{ int i,l;
disable_interrupts(global);
for(i=0;i<f3;i++)
{
l = read_eeprom(add3+i);
chu[i] = l;
}
enable_interrupts(global);
printf("C3 ");
}
//**********************************************************
void doc_eeprom4()
{ int i,l;
disable_interrupts(global);
for(i=0;i<f4;i++)
{
l = read_eeprom(add4+i);
chu[i] = l;
}
enable_interrupts(global);
printf("C4 ");
}
//====================
void main()
{
set_tris_b(0);
set_tris_a(0);
set_tris_c(0);
set_tris_e(0);
set_tris_d(0);
output_b(0);
output_e(16);
enable_interrupts(INT_eeprom);
enable_interrupts(INT_RDA);
enable_interrupts(global);
printf("v ");
delay_ms(3000);
while(true)
{
// printf("/");
f1 = read_eeprom(b1); f2 = read_eeprom(b2);
f3 = read_eeprom(b3); f4 = read_eeprom(b4);
doc_eeprom1();
trabang();
doc_eeprom2();
trabang();
doc_eeprom3();
trabang();
doc_eeprom4();
trabang();
trabang1();
dichtrai1();
}
}