//这是PC发给单片机数据,单片机再回给PC
#include <reg51.h> // 引用头文件,里面包含了一些对51单片机内部寄存器的定义
#define uchar unsigned char //定义unsigned int为uint
#define uint unsigned int //定义unsigned uchar为uchar
uchar rec_data; //定义一个字符型变量用于存放接收到的数据
bit rec_flag; //定义一个位变量(接收到数据记标志)
sbit rec_led = P0^0; //接收指示灯为P0^0
sbit send_led = P0^1; //发送指示灯为P0^1
//========= 串口中断服务函数 ============
void serial_int() interrupt 4
{
if(RI) //判断是否为接收中断
{
RI = 0; //接收中断标志清0
rec_data = SBUF; //保存数据
rec_led = 0; //点亮接收指示灯
rec_flag = 1; //接收标志置1
}
}
//========= 主函数 ============
void main()
{
SCON = 0x50; //设置串口工作于方式1,允许接收
TMOD = 0x20; //
TH1 = 0xfD; //设置波特率为9600
TL1 = 0xfD;
TR1 = 1; //启动定时器1
ES = 1; //允许串口中断
EA = 1; //关闭所有中断
rec_flag = 0;
while(1) //主循环
{
rec_led = 1; //接收指示灯熄灭
send_led = 1; //发送指示灯熄灭
if(rec_flag==1) //判断是否接收到数据
{
rec_flag = 0; //接收标志清0
send_led = 0; //点亮发送指示灯
SBUF = rec_data; //把接收到的数据发送出去
while(!TI); //等待发送完毕一个字节
TI = 0; //发送中断标志清0
}
}
}
温馨提示:内容为网友见解,仅供参考