stc12c5a60s2串口程序

stc12c5a60s2串口程序,第1张

  用过stc12C5A60S2单片机的朋友都知道,该单片机有两个串口可用,看到官网的程序注释的也是比较多,所以自己写了个串口2使用的程序,由于代码相对简单,所以这里只罗列出了串口2的的初始化、发送和接收函数供大家参考。

  程序包含了STC12C5A60S2.H的头文件,这个网上都有,大家懂的。

  这个是初始化的函数,可以添加到程序中调用就可以了。这里是用了独立波特率发生器产生4800的波特率,晶振是24M,这个是用STC波特率计算机生成后添加了后面红字部分,大家如果用其他晶振或者波特率可以下个重新生成然后修改即可。

  /*描述:

  电脑串口显示程序

  硬件支持:  STC12C2052AD 外部12MHZ晶振

  用Windows系统中的“超级终端”软件,将串口端设置 [ 4800,8,无,1,无 ]

  */

  #include《STC12C5A60S2.H》 //单片机头文件

  #include 《intrins.H》

  /******自定义函数**************/

  void UART_init (void); /**UART串口初始化函数**********/

  void UART_T (unsigned char UART_data);/****************UART串口发送函数**************************/

  void UART_TC (unsigned char *str);/*****UART串口发送字符串函数 */

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

  函数名:主函数

  调 用:无

  参 数:无

  返回值:无

  结 果:程序开始处,无限循环

  备 注:

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

  void main (void)

  {

  UART_init();

  UART_T(0x30);

  UART_TC(“ *** 妈逼”);

  while(1);

  }

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

  函数名: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_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++; //无聊警告。。。

  }

  *str = 0;

  }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2596749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存