单片机怎么c语言编程_单片机怎么c语言编程的

单片机怎么c语言编程_单片机怎么c语言编程的MCS-51系列单片机C语言编程UART串口程序模板/*********************************************************************************************函数名:UART串口初始化函数调 

MCS-51系列单片机C语言编程UART串口程序模板
  /*********************************************************************************************

  函数名:UART串口初始化函数

  调  用:UART_init();

  参  数:无

  返回值:无

  结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)

  备  注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]

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

  void UART_init (void){

  EA = 1; //允许总中断(如不使用中断,可用//屏蔽)

  ES = 1; //允许UART串口的中断

  TMOD = 0x20; //定时器T/C1工作方式2

  SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)

  TH1 = 0xF3; //定时器初值高8位设置

  TL1 = 0xF3; //定时器初值低8位设置

  PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)

  TR1 = 1; //定时器启动

  }

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

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

  函数名:UART串口初始化函数

  调  用:UART_init();

  参  数:无

  返回值:无

  结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)

  备  注:振荡晶体为11.0592MHz,PC串口端设置 [ 19200,8,无,1,无 ]

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

  void UART_init (void){

  EA = 1; //允许总中断(如不使用中断,可用//屏蔽)

  ES = 1; //允许UART串口的中断

  TMOD = 0x20; //定时器T/C1工作方式2

  SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)

  TH1 = 0xFD; //定时器初值高8位设置

  TL1 = 0xFD; //定时器初值低8位设置

  PCON = 0x80; //波特率倍频(屏蔽本句波特率为9600)

  TR1 = 1; //定时器启动

  }

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

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

  函数名:UART串口接收中断处理函数

  调  用:[SBUF收到数据后中断处理]

  参  数:无

  返回值:无

  结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)

  备  注:过长的处理程序会影响后面数据的接收

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

  void UART_R (void) interrupt 4  using 1{ //切换寄存器组到1

  unsigned char UART_data; //定义串口接收数据变量

  RI = 0; //令接收中断标志位为0(软件清零)

  UART_data = SBUF; //将接收到的数据送入变量 UART_data

  //用户函数内容(用户可使用UART_data做数据处理)

  //SBUF = UART_data; //将接收的数据发送回去(删除//即生效)

  //while(TI == 0); //检查发送中断标志位

  //TI = 0; //令发送中断标志位为0(软件清零)

  }

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

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

  函数名:UART串口接收CPU查寻语句(非函数体)

  调  用:将下面内容放入主程序

  参  数:无

  返回值:无

  结  果:循环查寻接收标志位RI,如有收到数据则进入if (RI == 1){}

  备  注:

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

  unsigned char UART_data; //定义串口接收数据变量

  if (RI == 1){ //接收中断标志位为1时

  UART_data = SBUF; //接收数据 SBUF 为单片机的接收发送缓冲寄存器

  RI = 0; //令接收中断标志位为0(软件清零)

  //用户函数内容(用户可使用UART_data做数据处理)

  //SBUF = UART_data; //将接收的数据发送回去(删除//即生效)

  //while(TI == 0); //检查发送中断标志位

  //TI = 0; //令发送中断标志位为0(软件清零)

  }

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

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

  函数名:UART串口发送函数

  调  用:UART_T (?);

  参  数:需要UART串口发送的数据(8位/1字节)

  返回值:无

  结  果:将参数中的数据发送给UART串口,确认发送完成后退出

  备  注:

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

  void UART_T (unsigned char UART_data){ //定义串口发送数据变量

  SBUF = UART_data; //将接收的数据发送回去

  while(TI == 0); //检查发送中断标志位

  TI = 0; //令发送中断标志位为0(软件清零)

  }

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

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

  函数名:UART串口发送字符串函数

  调  用:UART_TC (?);

  参  数:需要UART串口发送的数据(8位/1字节)

  返回值:无

  结  果:向串口发送一个字符串,长度不限。

  备  注:例:UART_TC("d9887321$"); 此函数需要#include <string.h>头文件支持。

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

  void UART_TC (unsigned char *str){

  while(*str != '0'){

  UART_T(*str);

  *str++;

  }

  *str = 0;

  }

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

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/93453.html

(0)
上一篇 2024年 5月 28日
下一篇 2024年 5月 28日

相关推荐

关注微信