#include <stc15.h>    	       //包含支持IAP15W4K58S4单片机的头文件
#include <intrins.h>
#include <gpio.h>					 //I/O初始化文件
#define uchar unsigned char
#define uint  unsigned int
uchar temp;
uchar temp1;
void Delay100ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 5;
	j = 144;
	k = 71;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void UartInit(void)		//9600bps@12.000MHz
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器1时钟为Fosc,即1T
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设定定时器1为16位自动重装方式
	TL1 = 0xC7;		//设定定时初值
	TH1 = 0xFE;		//设定定时初值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
}

void main()
{
	gpio();
	UartInit();
	ES=1;
	EA=1;
	while(1)
	{
		temp=P3;
		temp=temp&0x0c;
		ES=0;			//以免与接收中断发生冲突
		SBUF=temp;
		while(TI==0);
		TI=0;
		ES=1;
		Delay100ms();
	}
}
void uart_isr() interrupt 4
{
	if(RI==1)
	{
		RI=0;
		temp1=SBUF;
		switch(temp1&0x0c)
		{
			case 0x00:P17=0;P16=1;P15=1;P14=1;break;
			case 0x04:P17=1;P16=0;P15=1;P14=1;break;
			case 0x08:P17=1;P16=1;P15=0;P14=1;break;
			default:P17=1;P16=1;P15=1;P14=0;break;
		}
	}
}
