#include <reg52.h>
#include <function.h> //详见第六章第8讲
#include <uart.h> //详见第十章第4讲
#include <iic.h> //详见第十二章第3讲
u8 uart_i=0;
u8 pdata RXDBUF[130];
void
COUNT_TIMES()
{
TMOD&=0xF0;
TMOD|=0x01;
}
void
UART_E2Write()
{
u8 j,k;
u8 E2_add;
u8 pdata E2BUF[102];
if
( RXDBUF[0]==
'E'
&&RXDBUF[1]==
'2'
&&RXDBUF[2]==
'W'
&&RXDBUF[3]==
'r'
&&RXDBUF[4]==
'i'
&&RXDBUF[5]==
't'
&&RXDBUF[6]==
'e'
&&RXDBUF[7]==
':'
)
{
E2_add=(RXDBUF[8]-
'0'
)*100+(RXDBUF[9]-
'0'
)*10+(RXDBUF[10]-
'0'
);
k=uart_i-12;
for
(j=0; j<k; j++)E2BUF[j]=RXDBUF[j+12];
E2Write(E2BUF,E2_add,k);
printf_str(
"\r\n写入完成!\r\n"
);
printf_str(
"地址写到了"
);
printf_num( (u32)E2_add+j-1 );
printf_rn();
}
}
void
UART_E2Read()
{
u8 E2_add,n;
u8 pdata E2BUF[102];
if
( RXDBUF[0]==
'E'
&&RXDBUF[1]==
'2'
&&RXDBUF[2]==
'R'
&&RXDBUF[3]==
'e'
&&RXDBUF[4]==
'a'
&&RXDBUF[5]==
'd'
&&RXDBUF[6]==
':'
)
{
E2_add=(RXDBUF[7]-
'0'
)*100+(RXDBUF[8]-
'0'
)*10+(RXDBUF[9]-
'0'
);
n=(RXDBUF[11]-
'0'
)*100+(RXDBUF[12]-
'0'
)*10+(RXDBUF[13]-
'0'
);
E2Read(E2BUF,E2_add,n);
E2BUF[n]=
'\0'
;
printf_str(E2BUF);
}
}
void
main()
{
u8 x;
EA = 1;
COUNT_TIMES();
ConfigUART(9600);
while
(1)
{
if
(TH0>=200)
{
TR0=0;
UART_E2Write();
UART_E2Read();
uart_i=0;
TH0=0;
TL0=0;
for
(x=0;x<64;x++)RXDBUF[x]=0x00;
}
}
}
void
InterruptUART() interrupt 4
{
if
(RI)
{
RI = 0;
TH0=0;
TL0=0;
TR0=1;
RXDBUF[uart_i]=SBUF;
uart_i++;
}
}