#includeSTC15F2K60S2.H#includeintrins.h#includestdio.h#defineFOSC12000000L//系统频率#defineBAUD9600//串口波特率#defineS1_S00x40//P_SW1.6#defineS1_S10x80//P_SW1.7unsignedchara,i=0;unsignedcharString[32];bitbusy;/*************系统初始化****************/voidsys_init(void){P20=1;P32=1;P33=1;//P_SW1=0x40;//P3.6/P3.7串口1RXD/TXD//P_SW1=0x80;//P1.6/P1.7串口1RXD/TXD}/*************UART_1初始化****************/voidUartInit(void){SCON=0x50;//8位数据,可变波特率T2L=(65536-(FOSC/4/BAUD));//设置波特率重装值T2H=(65536-(FOSC/4/BAUD))8;AUXR=0x14;//T2为1T模式,并启动定时器2AUXR|=0x01;//选择定时器2为串口1的波特率发生器ES=1;//使能串口1中断EA=1;}/*************发送字符****************/voidSendData(unsignedchardat){while(busy);//等待前面的数据发送完成busy=1;SBUF=dat;//写数据到UART数据寄存器}/*************发送字符串****************/voidSendString(char*s){while(*s)//检测字符串结束标志{SendData(*s++);//发送当前字符}}/*************主函数****************/voidmain(){sys_init();UartInit();while(1){if(P33==0){//P20=0;SendString(STC15F2K60S2\r\nUartTest!\r\n);}if(P32==0){//P20=1;//SendData(a);SendString(String);}}}/*************UART_1中断服务程序****************/voidUart1()interrupt4using1{if(RI){RI=0;//清除RI位String[i++]=SBUF;//P0显示串口数据if(i8)i=0;}if(TI){TI=0;//清除TI位busy=0;//清忙标志}}