pc单片机之间串口通信的程序

2024-11-22 15:34:22
推荐回答(2个)
回答1:

//这是PC发给单片机数据,单片机再回给PC
#include // 引用头文件,里面包含了一些对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
}
}
}

回答2:

pc 程序,推荐看书
Visual C++_Turbo C串口通信编程实践

单片机 程序
建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词