STC15F2K60S2单片机的串口通信程序及相关知识

news/2025/4/1 7:35:27/
一、STC15F2K60S2单片机简介

    中国深圳宏晶STC系列单片机是2005年推出中国本土的第一款具有全球竞争力的,且与MCS-51兼容的STC系列单片机。它完全兼容51单片机,是新一代增强型单片机,速度快、抗干扰性强、加密性强,带ADC/PWM,超低功耗,可以远程升级,内部有MAX810专用复位电路,价格低廉。深圳宏晶科技有限公司根据市场需求,在STC89C51、STC89C52的基础上,先后推出STC10、STC11、STC12、STC15系列单片机。

    其中,STC15F2K60S2单片机是一种增强型的8051单片机,是新型的FLASH单片机,与传统的8051系列单片机兼容,在片内资源、操作性能和运行速度上做了很大的的改进。IAP15F2K60S2是可以把单片机芯片硬件配置为具有仿真功能的单片机,与Keil C51编译器配合使用,进行仿真实验。

二、STC15F2K60S2单片机串口通信的相关知识

    STC15F2K60S2单片机内部有两个可编程的全双工串行通信接口。每个串行口由一个数据缓存器、一个移位寄存器、一个串行控制器和一个波特率发生器组成。每个串行口的数据缓冲器在物理上分为两个独立的发送、接收缓冲器,可以同时发送和接收数据。发送缓存器只可以写入数据,接收缓存器只能读出数据,两个缓冲器共用一个地址。串口1的数据缓冲器为SBUF,地址为99H,串口2的数据缓冲器为S2BUF,地址为9BH。与串行口相关的特殊寄存器见下表。

与串行口相关的特殊寄存器

寄存器功能地址位地址复位值
PCON电源控制寄存器87HSMODSMOD0LVDFPOFGF1GF0PDIDL00110000
AUXR辅助寄存器8EHT0x12T1x2UART_M0x6T2RT2C/TT2x12EXTRAMS1ST200000001
CLK-DIV时钟分频寄存器97HMCKO-S1MCKO-S0ADRJTx-RxTx2-Rx2CLKS2CLKS1CLKS000000000
SCON串口控制寄存器98HSM0SM1SM2RENTB8RB8TIRI00000000
SBUF串口数据寄存器99H00000000
S2CON串口2控制寄存器9AHS2M0-S2M2S2RENS2TB8S2RB8S2TIS2RI00000000
S2BUF串口2数据缓冲区9BH00000000
AUXR1辅助寄存器A2HS1_S1S1_S0CCP_S1CCP_S0SPI_S1SPI_S00DPS01000000
IE中断控制寄存器A8HEAELVDEADCESET1EX1ET0EX000000000
IE2中断控制寄存器2AFH-----ET2ESPIES2xxxxx000
IP2中断优先级控制寄存器2B5H------PSPIPS2xxxxxx00
IP中断优先级控制寄存器B8HPPCAPLVFPADCPSPT1PX1PT0PX000000000
P_SW2外围功能切换寄存器BBH-----S4_SS3_SS2_Sxxxxx000

(1)寄存PCON中的SMOD位为波特率倍增系数选择位,SMOD为1时,波特率加倍。

(2)辅助寄存器AUXR中的UART_M0x6用于设置串口1在方式0时数据传输的波特率,置1时波特率为fsys/2,置0时波特率为fsys/12。辅助寄存器AUXR中的S1ST2位用于选择串口1在方式1、3时的波特率发生器,置1时选择T2为波特率发生器,置0时选择T1为波特率发生器。

(3)串口控制寄存器SCON的功能和用法与一般的8051单片机类似,不同的是其中的SM0/FE位可以用作帧错误检测。

(4)数据寄存器SBUF和S2BUF分别用于串口1和串口2的数据缓冲器。

(5)寄存器S2CON用于设置串口2的工作方式,其余用法与SCON相同。

(6)寄存器IE、IE2中的PS、PS2位分别用于控制串口1和串口2的中断允许与禁止。置1为允许,置0为禁止。

(7)寄存器IP、IP2中的PS、PS2分别用于控制串口1和串口2的中断优先级,置1为高优先级,置0为低优先级。

(8)时钟分频寄存器CLK_DIV中的Tx_Rx用于设置串口1的中继广播方式,置1为中继广播方式,置0为正常工作方式。

(9)辅助寄存器AUXR1的S1_S1、S1_S0位用于串口1的硬件引脚切换,具体情况如下表。

串口1的硬件引脚切换

S1_S1S1_S0TXDRXD
00P3^1P3^0
01P3^7P3^6
10P1^7P1^6
11无效

(10)寄存器P2_SW2的S2_S位用于串口2的硬件引脚切换,具体情况如下表。

串口2的硬件引脚切换

S2_STXD2RXD2
0P1^1P1^0
1P4^7P4^6

    另外,对于波特率,还有一个很重要的寄存器,即电源控制寄存器(PCON),电源管理寄存器(PCON)也在特殊功能寄存器中,字节地址为87H,不可位寻址,复位值0x00。

    PD:掉电模式设定位。PD=0时,单片机处于正常工作状态;PD=1时,单片机进入掉电(Power Down)模式,可由外部中断低电平触发或由下降沿触发或者硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。

    IDL:空闲模式设定位。IDL=0时,单片机处于正常工作模式;IDL=1时,单片机进入空闲(IDLE)模式,除CPU不工作外,其余的部件继续工作,在空闲模式下可由任何一个中断或硬件复位唤醒。

三、串口通信程序

注:以下程序在一定程度上已调试成功,但是因为有很多功能没有实现完,所以后期可能需要修改,后期会进行更新。

1. UART头文件

#ifndef _UART_H_
#define _UART_H_#include <STC15F2K60S2.H>#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endifextern bit pageflag;	//返回页面ID标志
extern uchar pageID;	//页面ID号	
extern uchar pagenum;	//页面结束数据检测,满3代表结束void write_COM(uchar COM);
void write_txt(char *s);	 
void write_END(void);
void UART_Init();#endif

2. UART程序

#include "UART.h"/*********串口送数据**********/
void write_COM(uchar COM)
{SBUF=COM;			while(!TI);TI=0;
}
/*********发送文本串**********/
void write_txt(char *s)	  
{int i=0;while(s[i]!=0){write_COM(s[i]);i++;}
}
/*********发送结束符**********/
void write_END(void)   
{write_COM(0xFF);write_COM(0xFF);write_COM(0xFF);
}
/*********串口初始化**********/
void UART_Init()
{		//串口1	初始化SCON = 0x50;   AUXR &= 0xBE;  AUXR |= 0x00;    TMOD &= 0x0F;	TMOD |= 0x20;           TH1 = 0xfd;                 TL1 = 0xfd;                 TR1 = 1;                         //定时器1启动ES = 1;                         //开放串口中断EA = 1;	//		//串口2	初始化
//    S2CON = 0x10;  
//    T2L = 0xE8;        
//    T2H = 0xFF;      
//    AUXR &= 0xE3;  
//    AUXR |= 0x10;   
//    IE2 &= 0xFE;        
//    IE2 |= 0x01;          	}/************UART1 中断服务程序*******************/
void Uart1(void) interrupt 4 
{uchar dataflag=0;//返回的十六进制数据的第一位if(RI)                           //如果是接收中断{RI=0;dataflag = SBUF;    //将接收缓冲区的数据保存到num1变量中/***********页面接收**********/			if(dataflag==0x66) pageflag = 1;if(pageflag==1){pageID = dataflag;//接收页面ID号if(dataflag==0xff)	//开始接收结束符{pagenum++;if(pagenum==3) pageflag = 0;//接收3个结束符,数据接收完成				}}	}			else                           //如果是发送中断,将TI清0TI = 0;
}

http://www.ppmy.cn/news/191826.html

相关文章

ESP32-S2 Arduino开发环境搭建

ESP32-S2 Arduino开发环境搭建 目录 ESP32-S2 Arduino开发环境搭建前言1 安装Arduino IDE1.1 下载Arduino IDE1.2 安装Arduino IDE 2 在Arduino IDE上安装esp32库2.1 在线安装2.2 半离线安装 结束语 前言 ESP32-S2是继ESP32之后新出的一款的MCU&#xff0c;它和ESP32最大的区别…

STC15F2K60S2单片机笔记

1. 对时钟进行分频&#xff0c;可以降低系统功耗&#xff1b; 2. STC单片机上电复位的时候&#xff0c;普通I/O口为弱上拉&#xff08;准双向口&#xff09;高电平输出。 这些IO口均可配置为四种工作类型之一&#xff1a;弱上拉&#xff08;准双向口&#xff09;高电平输出、…

【DVB】DVB-S2和DVB-S的区别

DVB-S.2作为新一代数字卫星广播标准即将出台&#xff0c;草案已正式发布&#xff0c;新标准在提升原有信道传输容量的同时&#xff0c;还将大大拓展业务范围&#xff0c;得到了广电、电信、计算机等领域的广泛关注。在与以往标准相比较的基础上&#xff0c;本文阐述了新标准技术…

S2B2C模式学习总结

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 5月26日&#xff0c;曾鸣教授在天猫智慧供应链开放日的论坛上发表了一次演讲&#xff0c;在这次演讲中曾鸣教授提出了S2b的概念&#xff0c;这是对新零售、新商业未来的创新思考。 S代表着大的供应平…

S2-052 远程代码执行漏洞检查利用

2017年9月5日&#xff0c;Apache Struts发布最新安全公告&#xff0c;Apache Struts2的REST插件存在远程代码执行的高危漏洞&#xff0c;该漏洞由lgtm.com的安全研究员汇报&#xff0c;漏洞编号为CVE-2017-9805&#xff08;S2-052&#xff09;。Struts2 REST插件的XStream组件存…

使用 AntV S2 打造大数据表格组件

导读 在蚂蚁的大数据研发平台中&#xff0c;数据表格是一类重要的业务组件。我们需要流畅的展示 SQL 查询出来的上万条结果&#xff0c;并对结果做筛选、排序、搜索、复制、框选、聚合分析等操作。同时也存在数据手工录入的场景&#xff0c;需要表格有可编辑的能力。所以我们最…

S2-045漏洞之简单分析+实战

##0X00 前言&#xff1a; 尽管s2-045的poc已经烂大街了&#xff0c;博主只是想学习了解一下它的用法&#xff0c;顺带写了一个测试小工具。 ##0x01 漏洞简介 Apache Struts是一套用于创建企业级Java Web 应用的开源MVC框架 。 Apache Struts 2.3.5 – 2.3.31版本及2.5 – 2.5.…

S2-016 远程代码执行漏洞

在struts2中&#xff0c;DefaultActionMapper类支持以"action:"、“redirect:”、"redirectAction:"作为导航或是重定向前缀&#xff0c;但是这些前缀后面同时可以跟OGNL表达式&#xff0c;由于struts2没有对这些前缀做过滤&#xff0c;导致利用OGNL表达式…