历史上的今天
今天是:2025年08月17日(星期日)
2020年08月17日 | STC12C5A60S2双串口通讯基础程序
2020-08-17 来源:51hei
程序9600波特率 下 STC单片机双串口通讯发基础程序,程序内容,各自中断接收,中断转发接收到的数据。需要两个串口同时工作的可以用的上。
单片机源程序如下:
/*-----------------------------------------------
名称:STC12C5A60S2双串口通信
编写:Nico
日期:2009.5
修改:无
内容:9600波特率 双串口收发
接线:串口1 发送P3.1,接收P3.0
串口2 发送P1.3,接收P1.2
------------------------------------------------*/
#include"stc12c5a60s2.h"
#include"delay.h"
#define S2RI 0x01 //串口2接收中断中断请求标志位
#define S2TI 0x02 //串口2发送中断请求标志位
unsigned char flag1,flag2,temp1,temp2;
unsigned char uart2Receive[100];
unsigned char uart1Receive[100];
unsigned int point1=0,point2=0;
unsigned char i;
/*------------------------------------------------
函数声明
------------------------------------------------*/
//void SendStr(unsigned char *s);
void UART_1SendOneByte(unsigned char c);
void UART_2SendOneByte(unsigned char c);
void uart1SendStr(unsigned char *s);
void uart2SendStr(unsigned char *s);
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
ES = 1; //打开串口中断
S2CON = 0x50; //
BRT = 0xFD; // 9600
AUXR = 0x10; //
IE2 =0x01; //
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
InitUART();
DelayMs(100);
uart1SendStr("串口1初始化成功");
DelayMs(100);
uart2SendStr("串口2初始化成功");
while (1)
{
if(flag1==1)
{
flag1=0;
// uart2SendStr("串口1中断,串口2发送串口1接收的数据:");
uart1SendStr(uart1Receive);
for(i=0;i<=100;i++)
{
uart1Receive[i]=0;
}
}
if(flag2==1)
{
flag2=0;
// uart1SendStr("串口2中断,串口1发送串口2接收的数据:");
uart2SendStr(uart2Receive);
for(i=0;i<=100;i++)
{
uart2Receive[i]=0;
}
}
}
}
/*------------------------------------------------
1发送字符串
------------------------------------------------*/
void uart1SendStr(unsigned char *s)
{
while(*s!='




