//发送数据波特率为9600
//1、如果在电脑上发送以$开始的字符串,则将整个字符串原样返回(字符串长度不是固定的)。
//2、如果接收到1,则将P10置高电平,接收到0,P01置低电平。(用来控制一个LED)
#include "STC/STC15F2K60S2.H"
sbit LED = P0^1;
sbit ledle = P2^5;
sbit bell = P4^5;
unsigned char UART_buff,buff;
bit New_rec = 0, Send_ed = 1, Money = 0;
unsigned flag1 = 0;//接收完成标志位
unsigned flag2 = 0; //发送完成标志位
//----------------------------------------------
void main (void)
{
// ledle = 1;
SCON = 0x50; //串口方式1 ,允许接收
AUXR = 0x00;
PCON = 0x00;
TMOD = 0x20; //定时器工作方式2,使用定时器1作为波特率发生器
TH1 = 0xFD;
TL1 = 0xFD;
REN = 1;
TR1 = 1; //开启定时器T1
ES = 1; //打开串口中断.
EA = 1; //开启总中断
while(1)
{
if(flag1 == 1)
LED = 0;
if(flag1 == 0)
LED = 1;
while(flag2 == 0);
while(1)
{
if(flag2 == 1)
{
SBUF = UART_buff;
flag2 = 0;
}
}
}
}
//1、如果在电脑上发送以$开始的字符串,则将整个字符串原样返回(字符串长度不是固定的)。
//2、如果接收到1,则将P10置高电平,接收到0,P01置低电平。(用来控制一个LED)
#include "STC/STC15F2K60S2.H"
sbit LED = P0^1;
sbit ledle = P2^5;
sbit bell = P4^5;
unsigned char UART_buff,buff;
bit New_rec = 0, Send_ed = 1, Money = 0;
unsigned flag1 = 0;//接收完成标志位
unsigned flag2 = 0; //发送完成标志位
//----------------------------------------------
void main (void)
{
// ledle = 1;
SCON = 0x50; //串口方式1 ,允许接收
AUXR = 0x00;
PCON = 0x00;
TMOD = 0x20; //定时器工作方式2,使用定时器1作为波特率发生器
TH1 = 0xFD;
TL1 = 0xFD;
REN = 1;
TR1 = 1; //开启定时器T1
ES = 1; //打开串口中断.
EA = 1; //开启总中断
while(1)
{
if(flag1 == 1)
LED = 0;
if(flag1 == 0)
LED = 1;
while(flag2 == 0);
while(1)
{
if(flag2 == 1)
{
SBUF = UART_buff;
flag2 = 0;
}
}
}
}
//----------------------------------------------
void ser_int (void) interrupt 4
{
if(RI == 1)
{ //如果收到
RI = 0; //清除标志
UART_buff = SBUF;
if(UART_buff == '1') //输入文本模式1点亮LED
flag1 = 1;
if(UART_buff == '0') //熄灭LED
{
flag1 = 0;
}
if(UART_buff == '$')
flag2 = 1;
}
else //发送完毕
{
TI = 0; //清除标志
Send_ed = 1;
}
}
//----------------------------------------------