当前位置:文档之家› 串口通讯-单片机向电脑发送数据

串口通讯-单片机向电脑发送数据

#include<reg52.h>
unsigned char data1[]={"have a nice day!"}; //这是要发送的数据,它将
//显示在电脑的串口调试助手上
bit sent_over;//定义一个本次字符是否已经发送完毕的标志位
void serial_timer1_init() //串口及定时器1的初始化函数
{
SCON=0x40;//串口工作方式1,只发送不接收数据
PCON=0x00;//不倍增
ES=1;//开串口中断
EA=1;//开总中断
TMOD=0x20;//定时器工作方式2,8位自动重装
TH1=0xfd;//初值为0xfd,波特率9600
TL1=0xfd;
TR1=1;//开定时器1
}
void serial_ISR() interrupt 4//串口中断服务例程,每发送完一个字符
{//就会中断一次
TI=0;//TI=0,为下一次发送字符数据作准备
sent_over=1;//本次字符已经发送完毕,标志位置1
}//使下一次发送字符能够进行
void main()
{
serial_timer1_init();
sent_over=1;//置为1,使第一次发送字符能够进行
while(1)
{
static unsigned char i=0;//定义一个静态局部变量,便于在data1中取出字符
if(sent_over==1)//如果为1,说明本次字符已经发送完毕,可以进行
{//下个字符发送了
SBUF=data1[i];//发送字符
sent_over=0;//清0,等字符发送完毕,在中断里再重新置1
if(data1[i]!='\0')//如果整个字符数组还没发送完,就继续发送
i++;
else while(1);//如果整个字符数组发送完了,就使单片机停下来}
}
}。

相关主题