描述

用过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精彩内容

点击阅读全文

stc12串口收发计算机,stc12c5a60s2串口程序相关推荐

  1. stc12串口收发计算机,STC12C5A60S2 串口中断接收程序

    printf("%c",UART1_Recv_BUF[i]); Appcall(UART1_Recv_BUF,UART1_Recv_count); printf("rn& ...

  2. stc12串口收发计算机,半双工串口通信实例36:STC12单片机和STC12单片机串口通信...

    半双工串口通信实例36:STC12单片机和STC12单片机串口通信 一.串口通信实例目的: STC12单片机主站数字量输入DI01~DI08控制STC12单片机从站数字量输出DO01~DO08: ST ...

  3. c语言接收串口数据信息,C51通用串口收发数据C语言程序

    #include //C51通用串口收发数据C语言程序模块 #define  uchar unsigned char #define uint unsigned int uchar shu; bit ...

  4. linux c 串口 调用命令,Linux系统C语言串口收发

    Linux系统C语言串口收发 Linux系统对串口提供了很好的支持,使我们很容易就能用C语言编写出串口收发程序. 先简单说明一下编写串口收发程序前的准备工作.首先串口收发需要有硬件上的串口,在Linu ...

  5. STM32串口收发处理

    STM32串口收发 STM32的串口接收和发送方式都有三种情况,即轮询.中断和DMA,俩俩组合便有9种可能的组合. 下面挑出其中三种收发方式进行研究,以及优缺点比较. 一.中断接收.轮询发送,无缓存模 ...

  6. 串口收发乱码解决方案

    串口收发乱码解决方案 串口收发乱码解决方案 总结 串口收发乱码解决方案 在使用基于stm32f103rct6芯片的板子实现485收发时,发现可以发送也可以接收,但是收发的数据都是乱码. 第一步,因为可 ...

  7. stc 串口收发 c语言,STC12C5A60S2 串口中断接收程序

    原标题:STC12C5A60S2 串口中断接收程序 #define UART0_BUF_LEN 32 int UART1_Recv_count; //接收计数 bit UART1_Overflow_F ...

  8. 利用python程序、虚拟串口软件、串口通信助手,实现串口通信(两串口互相收发文字)

    一.流程简述 程序可以参考: https://blog.csdn.net/colcloud/article/details/42454839 这是我参考后简化的版本: https://github.c ...

  9. c8051f020C语言程序,C8051F020编程UART串口收发数据

    C8051F020编程UART串口收发数据 我编了一个 老是编译不过去 求高手改正 我用的是UART0端口 方式2 程序如下 //>>UART0串口编程--向PC发送和接受字符串<& ...

  10. 基于Atmega8单片机的串口收发程序

    Atmega8出厂默认的内部时钟频率是1Mhz,做串口收发时波特率最高设置为4800,设置为9600会乱码,提高时钟频率才能将波特率提高. #include <avr/io.h> #inc ...

最新文章

  1. react开发心路历程
  2. NYOJ 137 取石子(三)
  3. 加窗Fourier变换算法的C++实现
  4. 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)
  5. shell遍历根目录_大厂运维高手如何打造核心竞争力?这些Shell命令合集得知道!...
  6. 数据结构上机实践第七周项目2 - 自建算法库——链队(链式队列)
  7. 在工作中能学到的东西-2
  8. 拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
  9. 最新Java面试资料整理
  10. TVS参数详解及选型应用
  11. Java程序实现繁体字转换简体字
  12. python sin_Python入门之三角函数sin()函数实例详解
  13. python+selenium环境配置及浏览器调用
  14. WinInet是什么?
  15. 《宝塔面板教程6》:如何修改用户名和密码
  16. Jupyter Notebook 输出有颜色的文字
  17. 串口通信——S5PV210串口通信接口详解
  18. NUC980开源项目40-PLC远程下载/内网穿透(非技术)
  19. 精准引流客源的方法 129种引流方法全方位操作
  20. 正则表达式(手机号前带区号)

热门文章

  1. win764位loadrunner安装问题:提示:少了Microsoft Visual c++2005 sp1运行时组件,安装时会提示命令行选项语法错误,键入“命令/?”可获取帮肋信息,无法正常安装;
  2. 使用springboot jpa完成复杂的分页查询
  3. @ComponentScan注解
  4. 【收集】Oracle官网账号
  5. 华师大计算机专业怎么样,2019年二本科班上岸华东师范大学计算机学硕,初试387分排名第四初复试经验分享!...
  6. 房地产项目开发流程参考
  7. C轮融资已完成!思迈特软件领跑国内BI生态赋能,产品、服务竿头一步
  8. 【电子学会】2021年12月图形化四级 -- 棕熊大战
  9. Connection closed prematurely
  10. matlab rand函数解释,matlab rand()函数五种用法