当前位置:首页 > 单片机 > 单片机
[导读]1、串行通信,查询模式,单片机转发PC机发来的数据。PC通过串口向单片机发数据,单片机将接收到的数据在转发给PC/*******************************************************************************说明:AT89S52芯

1、串行通信,查询模式,单片机转发PC机发来的数据。

PC通过串口向单片机发数据,单片机将接收到的数据在转发给PC


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

*说明:AT89S52芯片,12M晶振

*串行通信,工作方式1,波特率可变

*定时器T1产生波特率,工作方式2,8位自动重装

*(注意:定时器T1此时不能工作在中断的模式下)

*本程序:PC向单片机发数据,单片机将接收到的数据在转发给PC

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

#include

unsignedcharSerial_Receive(void);

voidSerial_Send(unsignedchartransmit);

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

*名称:delay1ms()

*功能:延时1ms

*参数:intt

*返回:无

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

voiddelay1ms(intt)

{

unsignedchari;

while(t--)

{

for(i=0;i<125;i++)

{

;

}

}

}

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

*名称:Serial_Init()

*功能:初始化串口,工作方式1,波特率9600

*参数:无

*返回:无

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

voidSerial_Init(void)

{

/*-------------串行通信初始化,定时器T1产生波特率,工作方式2------------*/

//1、配置串口控制寄存器SCON(98H)

//SCON:SM0,SM1,SM2,REN,TB8,RB8,TI,RI

SCON=0x50;//01010000工作方式1,10位异步接发,波特率自定,

//起始位和停止位芯片自动加上和去掉,用户只需发送8位数据就行

//REN串行口接收允许控制位

//2、配置电源控制寄存器PCON(97H)和波特率相关,寄存器PCON不能按位赋值

//PCON:SMOD,-,-,-,GF1,GF0,PD,IDL

PCON=0x80;//波特率加倍(不加倍,可不配置PCON,或PCON=0x00;)

//3、配置中断允许寄存器IE(0A8H)

//IE:EA,-,ET2,ES,ET1,EX1,ET0,EX0

/*---若要串行通信工作在中断的状态下,则按一下配置,否则不配置寄存器IE---*/

//EA=1;//开总中断

//ES=1;//允许串口ES产生中断

//4、配置定时器T1,产生自定的波特率

//4.1、配置定时器方式寄存器TMOD:

//TMOD:GATE,C/T~,M1,M0,|GATE,C/T~,M1,M0(T1|T0)

TMOD=0x20;//00100000:T1定时器,工作方式2:8位自动重装定时器

//4.2、给定时器赋初值:

TL1=0xFA;//定时器T1产生波特率:9600

TH1=TL1;

//4.3、配置定时器/中断控制寄存器TCON:

//TCON:TF1,TR1,TF0,TR0,|IE1,IT1,IE0,IT0

TR1=1;//运行定时器T1

}

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

*名称:Serial_Receive()

*功能:从串口接收一个字节的数据(8位)

*参数:无

*返回:unsignedcharget_data:返回接收到的数据

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

unsignedcharSerial_Receive(void)

{

unsignedcharget_data;

if(RI==1)//RI==1表示有数据从串口传来,暂时存放在SBUF寄存器中

{

RI=0;//清空串行接收数据申请中断标志位

get_data=SBUF;

P0=get_data;//P0口的LED灯显示从串口接收的数据

Serial_Send(get_data);//调用函数将接收到的数据通过串口发送出去

returnget_data;//将串口接收到那朵数据作为函数的返回值

}

}

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

*名称:Serial_Send()

*功能:发送一个字节的数据(8位)

*参数:unsignedchartransmit:要发送的数据

*返回:无

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

voidSerial_Send(unsignedchartransmit)

{

SBUF=transmit;//先将要发送的数据放到寄存器SBUF中

while(!TI)//等待数据发送完成,发送数据过程:TI==0;发送完毕:TI==1;

{;}

TI=0;//清空串行发送数据申请中断标志位

}

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

===============================================================================

voidmain(void)函数部分

===============================================================================

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

voidmain(void)

{

Serial_Init();//初始化串口

while(1)

{

Serial_Receive();//扫描方式从串口接收数据

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

机器人的寻路系统基于A*算法,该算法能有效地计算出有障碍物环境中的最优路径。该系统实现为分布式架构,其中计算密集型寻路运行在机器人的树莓派4上,而机器人的TI板执行计算路径。

关键字: 机器人 树莓派4 串行通信

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

在高速串行通信中,集成误码率测试仪(Integrated Bit Error Ratio Tester,简称IBERT)是Xilinx提供的一款用于测试transceiver的免费IP。IBERT的example des...

关键字: IBERT 串行通信

在嵌入式系统开发的广阔领域,51单片机和STM32无疑是两种极具代表性的微控制器。对于初学者而言,选择学习路径时往往会面临一个抉择:是直接跨越51单片机,挑战更高层次的STM32,还是从51开始,逐步进阶?本文旨在探讨直...

关键字: 51单片机 STM32

在现代工业控制系统和汽车电子领域,CAN(Controller Area Network)总线作为一种高效、可靠的串行通信协议,得到了广泛的应用。CAN总线通过广播的方式发送报文,每个节点都可以接收到总线上的所有信息,但...

关键字: CAN总线 串行通信 节点

在嵌入式系统开发中,特别是在使用8051系列单片机(简称C51)进行编程时,数据类型的选择与定义对程序的性能和可读性至关重要。C51语言在标准C语言的基础上进行了扩展,以适应单片机特有的硬件结构和操作需求。本文将深入探讨...

关键字: C51数据 51单片机

在嵌入式系统领域,51单片机作为一种经典的微控制器,广泛应用于各种自动化控制系统中。其外部引脚作为单片机与外界交互的接口,承载着数据传输、控制信号输出等重要功能。本文将通过对51单片机外部引脚的案例分析,结合实际代码,深...

关键字: 51单片机 单片机

在电子技术的浩瀚星空中,LED(发光二极管)以其独特的魅力成为了一颗璀璨的明星。而结合51单片机这一经典的嵌入式开发平台,LED的应用更是被赋予了无限可能,其中,花样流水灯便是一个生动而富有创意的实例。本文将带您深入探索...

关键字: 51单片机 LED

在现代嵌入式系统设计中,51单片机作为一种经典的微控制器,凭借其丰富的功能和广泛的应用领域,仍然受到工程师们的青睐。定时器中断是51单片机中一个非常实用的功能,它可以在特定的时间间隔内自动触发中断,执行预设的操作,从而提...

关键字: 51单片机 定时器
关闭