×
单片机 > 单片机程序设计 > 详情

一个简易的51单片机串口接收和发送程序

发布时间:2024-05-16 发布时间:
|

/*********************

程序功能:接收上位机发过来的一个字符串,然后把该字符串发送给上位机,

字符串必须以!结尾

**********************/

#include

#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;

}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于AT91M42800A的LED显示系统设计