stc12c5a60s2串口程序

HDL语言及源代码

6人已加入

描述

  用过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;

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分