📄 main.c
字号:
//main.c
#include <reg52.h> //包含头文件
#include "fun.h"
void USART_interrupt() interrupt 4
{
if (RI) //接收中断
{
RI = 0;
r1tag=1; //正在接收标志
reciev1[rec_num1] = SBUF;//收到缓冲区
rec_num1++;
r1tag=0;
}
if (TI)
{
TI = 0;
}
}
void USART2_interrupt() interrupt 8
{
//if (RI)
if (S2CON & 0x01) //串口2接收中断
{
//RI = 0;
S2CON &= 0xfe; //清串口2接收中断标志S2RI
r2tag=1; //正在接收标志
reciev2[rec_num2] = S2BUF;//收到缓冲区
rec_num2++;
r2tag=0;
}
//if (TI)
if (S2CON & 0x02) //串口2发送中断
{
//TI = 0;
S2CON &= 0xfd; //清串口2发送中断标志S2TI
}
}
main()
{
ms_delay(100);
init_usart();
init_usart2();
init_timer();
rec_num1 = 0;
rec_num2 = 0;
r1tag = 0;
r2tag = 0;
dir1 = 0; //485接收数据
dir2 = 0; //485接收数据
EA = 1;//开总中断
while(1)
{
if (rec_num1 > 0) //串口1缓冲区有数据待发?
{
if (r2tag == 0) //串口2空闲
{
rec_num1 --;
send2(reciev1[rec_num1]); //转发
}
}
if (rec_num2 > 0) //串口2缓冲区有数据待发?
{
if (r1tag == 0) //串口1空闲
{
rec_num2 --;
send1(reciev2[rec_num2]); //转发
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -