#include "5A16S2.h"
#include "intrins.h"
#define INT8U unsigned char
#define INT16U unsigned int
#define RELOAD_COUNT 0xfd /* fosc=11.0592,smod=0;12t,9600 */
sbit sci0 = P1^0; /* 4052A */
sbit sci1 = P1^1; /* 4052B */
//==============================================================
sbit CHH1 = P2^3; /* 串口1工作指示 */
sbit rxd_r = P1^2; /* 上位机发送RXD */
sbit txd_r = P1^3; /* 上位机发送TXD */
sbit EN485 = P3^7; /* 上位机发送485使能 */
//==============================================================
sbit CHH2 = P2^4; /* 串口2工作指示 */
sbit SDA = P3^0; /* 下位机接收RXD */
sbit SCL = P3^1; /* 下位机接收TXD */
sbit EN485_R = P3^6; /* 下位机接收485使能 */
//==============================================================
void en485();
//==============================================================
void s1_port_init(); /* 串口1初始化 */
void s1end_uart_one(INT8U s1data); /* 串口1发送数据 */
void UART_one_Interrupt_Receive(void); /* 串口1中断接收 */
//==============================================================
void s2_port_init(); /* 串口2初始化 */
void s2end_uart_two(INT8U s2data); /* 串口2发送数据 */
void UART_two_Interrupt_Receive(void); /* 串口2中断接收 */
//==============================================================
void delay(); /* 一秒延时 */
//==============================================================
void one_disp1(); /* 串口1接收数据显示 */
void two_disp2(); /* 串口2接收数据显示 */
main()
{
EN485 = 0; /* 485上位机发送使能 */
EN485_R= 0; /* 485下位机接收使能 */
s1_port_init(); /* 串口1初始化 */
CHH1=0;
delay();
CHH1=1;
s1end_uart_one(0x00); /* 串口1发送数据 */
delay();
CHH1=0;
delay();
CHH1=1;
//==============================================================
en485(); /* 串口2选择485通信 */
s2_port_init(); /* 串口2初始化 */
CHH2=0;
delay();
CHH2=1;
s2end_uart_two(0xff); /* 串口2发送数据 */
delay();
CHH2=0;
delay();
CHH2=1;
//==============================================================
while(1);
} /* 一秒延时 */
void delay()
{
INT16U j,g;
j=0;
g=0;
for(j=0;j<5;j++)
{
for(g=0;g<500;g++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void one_disp1() /* 串口1接收数据显示 */
{
CHH1=0;
CHH2=1;
}
void two_disp2() /* 串口2接收数据显示 */
{
CHH1=1;
CHH2=0;
}
void en485() /* 串口2选择485通信 */
{
sci1=1;
sci0=0;
}
void s1_port_init() /* 串口1初始化 */
{
SCON = 0x50 ;
BRT = RELOAD_COUNT ;
AUXR = 0x11 ;
ES = 1 ;
EA = 1 ;
}
void s2_port_init() /* 串口2初始化 */
{
SCON = 0x50 ;
BRT = RELOAD_COUNT ;
AUXR = 0x11 ;
IE2 = 0x01 ; //ES2 = 1 ;
EA = 1 ;
}
void s1end_uart_one(INT8U s1data) /* 串口1发送数据 */
{
one_disp1();
EN485_R = 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
ES = 0 ;
TI = 0 ;
SBUF = s1data ;
while(TI==0);
TI = 0 ;
ES = 1 ;
EN485_R = 0 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void s2end_uart_two(INT8U s2data) /* 串口2发送数据 */
{
INT8U temp ;
two_disp2();
EN485= 1 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
IE2 = 0x00 ; //ES2 = 0 ;
S2CON= S2CON&0xfd ; //S2TI = 0 ;
S2BUF= s2data ;
do
{
temp = S2CON ;
temp = temp&0x02 ;
}
while(temp==0); //while(S2TI==0);
S2CON= S2CON&0xfd ; //S2TI = 0 ;
IE2 = 0x01 ; //ES2 = 1 ;
EN485= 0 ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void UART_one_Interrupt_Receive(void) interrupt 4
{
INT8U k = 0 ;
if(RI==1)
{
RI = 0 ;
k = SBUF ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
s1end_uart_one(k+1);
}
else
{
TI = 0 ;
}
}
void UART_two_Interrupt_Receive(void) interrupt 8
{
INT8U k = 0 ;
k = S2CON ;
k = k&0x01; //if(S2RI==1)
if(k==1)
{
S2CON = S2CON&0xfe; //S2RI=0;
k = S2BUF ;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
s2end_uart_two(k+1);
}
else
{
S2CON = S2CON&0xfd; //S2TI=0;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
stc系列单片机双串口操作实例.rar (77个子文件)
stc系列单片机双串口操作实例
STC485发送12c5410ad
STARTUP.LST 14KB
test.plg 4KB
test.LST 4KB
STARTUP.A51 6KB
test.Uv2 2KB
STARTUP.OBJ 749B
test.lnp 56B
5410ad.h 4KB
test.hex 383B
test.c 2KB
test.OBJ 5KB
test.Opt 1024B
test.M51 6KB
STC485发送12c2052ad
STARTUP.LST 14KB
test.plg 152B
test.LST 4KB
STARTUP.A51 6KB
test.Uv2 2KB
2052ad.H 4KB
STARTUP.OBJ 749B
test.lnp 56B
test.hex 772B
test.c 2KB
test.OBJ 5KB
test.Opt 1KB
test.M51 6KB
S2_test双串口1接2发
STARTUP.LST 14KB
s1_s2.LST 10KB
s1_s2.M51 10KB
STARTUP.A51 6KB
s1_s2.lnp 58B
s1_s2.OBJ 7KB
STARTUP.OBJ 749B
s1_s2.plg 162B
s1_s2.c 4KB
5A16S2.h 18KB
s1_s2.Uv2 2KB
s1_s2.hex 693B
s1_s2.Opt 1KB
S2_test双串口发送
STARTUP.LST 14KB
s1_s2.LST 10KB
s1_s2.M51 10KB
STARTUP.A51 6KB
s1_s2.lnp 58B
s1_s2.OBJ 7KB
STARTUP.OBJ 749B
s1_s2.plg 961B
s1_s2.c 4KB
5A16S2.h 18KB
s1_s2.Uv2 2KB
s1_s2.hex 713B
s1_s2.Opt 1KB
STC485中断发送接收12c5410ad
485.c 2KB
485.hex 1KB
485.Uv2 2KB
485 5KB
485.lnp 38B
485.plg 168B
485.LST 4KB
5410ad.h 4KB
485.Opt 2KB
485.M51 3KB
485.OBJ 6KB
S2_test双串口接收发送
STARTUP.LST 14KB
s1_s2.LST 11KB
s1_s2.M51 14KB
s1_s2 10KB
STARTUP.A51 6KB
s1_s2.lnp 58B
s1_s2.OBJ 10KB
STARTUP.OBJ 749B
s1_s2.plg 150B
s1_s2.c 5KB
5A16S2.h 18KB
s1_s2.Uv2 2KB
s1_s2.hex 1KB
s1_s2.Opt 1KB
共 77 条
- 1
fortune158
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页