|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
/*********************
程序功能:接收上位机发过来的一个字符串,然后把该字符串发送给上位机,
字符串必须以!结尾
**********************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P2^7;
uchar flag = 0;
uchar index = 0;
uchar data c[100];
void Delay_ms(uint n)
{
uchar i;
while(n--)
for(i = 0;i < 120;i++);
}
void Send_string(uchar *c)
{
while(*c != '!')
{
SBUF=*c;
c++;
while(TI==0);
TI=0;
}
}
void main()
{
SCON=0x50; //串口模式1,允许接收
TMOD=0x20; //T1工作模式2
TH1=0xF3; //波特率4800
TL1=0xF3;
PCON=0x80; //波特率倍增
EA = 1;//开总中断
ES = 1;//开串口中断
TR1=1;//开定时器1中断
while(1)
{
if((SBUF == '!')&&(flag == 1))
{
Send_string(c);
LED = ~LED;
index = 0;
flag = 0;
}
/*
需要理解虽然 读取SBUF和写入SBUF所用的SBUF是不同的,这里可以理解为有两个SBUF,
一个SBUF_read和一个SBUF_write,当往SBUF中写数据时SBUF_read不变。
*/
}
}
//串口接收中断函数
void Serial_INT() interrupt 4
{
if(RI==0) return;
ES=0; //关闭串口中断
RI=0; //清接收中断标志
c[index++]=SBUF;
if(SBUF == '!')
flag = 1;
ES=1;
} |
|