#include <reg52.h>
#include <function.h> //详见第六章第8讲
#include <lcd.h> //详见第十一章第3讲
#include <uart.h> //详见第十章第4讲
u8 i=0;
u8 pdata RXDBUF[64];
void COUNT_TIMES()
{
TMOD&=0xF0;
TMOD|=0x01;
}
void UART_LcdFullClear()
{
if( RXDBUF[0]== 'L'&&RXDBUF[1]== 'c'&&RXDBUF[2]== 'd'&&RXDBUF[3]=='F'
&&RXDBUF[4]== 'u'&&RXDBUF[5]== 'l'&&RXDBUF[6]== 'l'&&RXDBUF[7]== 'C'
&&RXDBUF[8]== 'l'&&RXDBUF[9]== 'e'&&RXDBUF[10]=='a'&&RXDBUF[11]=='r' )
{
LcdFullClear();
}
}
void UART_LcdShowStr()
{
u8 lcd_x,lcd_y,z;
if( RXDBUF[0]=='L'&&RXDBUF[1]=='c'&&RXDBUF[2]=='d'&&RXDBUF[3]=='S'&&RXDBUF[4]=='h'
&&RXDBUF[5]=='o'&&RXDBUF[6]=='w'&&RXDBUF[7]=='S'&&RXDBUF[8]=='t'&&RXDBUF[9]=='r')
{
if(RXDBUF[12]>='0'&&RXDBUF[12]<='9')
{
lcd_x=(RXDBUF[11]-'0')*10;
lcd_x+=RXDBUF[12]-'0';
}
else lcd_x=RXDBUF[11]-'0';
if(RXDBUF[14]>='0'&&RXDBUF[14]<='9')
{
lcd_y=RXDBUF[14]-'0';
}
else lcd_y=RXDBUF[13]-'0';
if(RXDBUF[15]=='"')
{
for(z=1; ;z++)
{
if(RXDBUF[15+z]=='"')
{
RXDBUF[15+z]='\0';
break;
}
}
LcdShowStr(lcd_x,lcd_y,RXDBUF+15+1);
}
else if(RXDBUF[16]=='"')
{
for(z=1; ;z++)
{
if(RXDBUF[16+z]=='"')
{
RXDBUF[16+z]='\0';
break;
}
}
LcdShowStr(lcd_x,lcd_y,RXDBUF+16+1);
}
}
}
void main()
{
u8 x;
EA = 1;
COUNT_TIMES();
ConfigUART(9600);
InitLcd1602();
LcdShowStr(1, 0, "Good Good Study");
LcdShowStr(3, 1, "Day Day Up!");
while(1)
{
if(TH0>=200)
{
TR0=0;
UART_LcdFullClear();
UART_LcdShowStr();
TH0=0;
TL0=0;
i=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[i]=SBUF;
i++;
}
}