#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++;
}
}