标题:
STC8A8K单片机串口使用冲突
[打印本页]
作者:
32yyds、
时间:
2022-4-15 21:19
标题:
STC8A8K单片机串口使用冲突
/*
串口2通讯实验
程序目前功能: 发送任意数据 LED都会变化 同时串口2在往主机发送0x0a
MUC主频为11.0592
波特率为9600
*/
#include "stc8.h"
sbit led=P5^5;
#define FOSC 11059200L //MUC主频为11.0592下
#define BAUD 9600 //串口2产生的波特率为9600
#define TM (65536-(11059200L/4/9600)) //计算初值
#define FOSC 11059200L //MUC主频为11.0592下
#define BAUD1 4800 //串口2产生的波特率为9600
#define TM1 (65536-(FOSC/4/BAUD1)) //计算初值
unsigned char a;
void delay(unsigned int m) //延时函数
{
int a=0,b=0;
for(a=0;a<500;a++)
for(b=0;b<m;b++);
}
void ISP_Check1(unsigned char i) //串口2发送数据调用函数
{
S2BUF=i;
while(S2CON&S2TI==0); // 等特数据传送 (S2TI发送中断标志)
S2CON&=~S2TI; //清标志位
}
void ISP_Check(unsigned char i) //串口2发送数据调用函数
{
S3BUF=i;
while(S3CON&S3TI==0); // 等特数据传送 (S2TI发送中断标志)
S3CON&=~S3TI; //清标志位
}
void main()
{
S3CON = 0x50; //REN=1允许串行接受状态,串口工作模式2
T3L=(65536-(11059200L/4/9600)); //配置串口2波特率 初始值
T3H=(65536-(11059200L/4/9600))>>8;
T4T3M |= 0x02; //定时器3为1T模式
T4T3M |= 0x08; //定时器3开始计时
IE2 = 0x08; //串口2中断使能
EA = 1; // 开总中断
S2CON = 0x50; //REN=1允许串行接受状态,串口工作模式2
T2L=TM1; //配置串口2波特率 初始值
T2H=TM1>>8;
AUXR=0X54; //开启定时器T2 并且开启1T模式
IE2|=0X01; //串口2中断使能
EA = 1; // 开总中断
while(1)
{
P55 = 1;
delay(100);
}
}
void Uart3() interrupt 17 using 1 //串口3中断
{
if(S3CON&S3RI) //如果收到数据 S2RI置位
{
P55 = 0;
a = S3BUF;
ISP_Check(a);
S3CON&=~S3RI; //清标志位
}
}
void Uart2() interrupt 8 using 1 //串口2中断
{
if(S2CON&S2RI) //如果收到数据 S2RI置位
{
a = S2BUF;
ISP_Check1(a); //翻转LED效果
S2CON&=~S2RI; //清标志位
}
}
串口2发送数据以后 串口3就接收不到数据了
作者:
188610329
时间:
2022-4-16 00:04
以串口2为例, 如下修改, 串口3同理修改. (当然, 建议是置标志位, 主程序中发送, 而不要在中断中发送,你非要中断中发送,就做如下修改)
//
void ISP_Check1(unsigned char i) //串口2发送数据调用函数
//
{
//
S2BUF=i;
//
while(S2CON&S2TI==0); // 等特数据传送 (S2TI发送中断标志)
//
S2CON&=~S2TI; //清标志位
//
}
void Uart2() interrupt 8 using 1 //串口2中断
{
if(S2CON&S2TI) S2CON&=~S2TI;
if(S2CON&S2RI) //如果收到数据 S2RI置位
{
a = S2BUF;
S2CON&=~S2RI; //清标志位
S2BUF = a;
//
ISP_Check1(a); //翻转LED效果
}
}
作者:
dzbj
时间:
2022-4-16 00:30
帮顶
别人的程序基本不看 主要是水平有限 读半天都不一定能明白 但我用4个串口都开 互相不干扰 证明是完全可行的 请楼主参考其它大侠的回复再修改程序 祝你成功
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1