📄 串口link.c
字号:
#include <reg51.h>
#include <intrins.h>
typedef unsigned char INT8U;
typedef unsigned int INT16U;
typedef unsigned long INT32U;
///////////////定义////////////////////////////
sfr TCON2 = 0xc8;
sfr TMOD2 = 0xc9;
sfr RCAP2L = 0xca;
sfr RCAP2H = 0xcb;
sfr TL2 = 0xcc;
sfr TH2 = 0xcd;
sbit TF2 = TCON2^7;
sbit EXF2 = TCON2^6;
sbit RCLK = TCON2^5;
sbit TCLK = TCON2^4;
sbit EXEN2 = TCON2^3;
sbit TR2 = TCON2^2;
sbit CT2 = TCON2^1;
sbit CPRL2 = TCON2^0;
sbit rs_rev = P3^0;
sbit rs_sent = P3^1;
INT8U bdata rsbuf; //定义虚拟串口寄存器
sbit rs0 = rsbuf^0;
sbit rs1 = rsbuf^1;
sbit rs2 = rsbuf^2;
sbit rs3 = rsbuf^3;
sbit rs4 = rsbuf^4;
sbit rs5 = rsbuf^5;
sbit rs6 = rsbuf^6;
sbit rs7 = rsbuf^7;
//////////////虚拟串口初始化子函数///////////
void rs_com_start(void)
{
RCAP2H = 0xff;
TH2 = RCAP2H;
RCAP2L = 160; //9600波特率
TL2= RCAP2L;
TCON2 = 0x00; //使用定时器2为波特率发生器
// TMOD2 = 0x00;
}
//////////////虚拟串口发送函数/////////////////////
void rs_sen(INT8U T_TXD)
{
rsbuf=T_TXD;
TR2 = 1;
rs_sent = 0; //发出开始位
while(TF2 != 1);
TF2=0;
rs_sent=rs0;
while(TF2 != 1);
TF2=0;
rs_sent=rs1;
while(TF2 != 1);
TF2=0;
rs_sent=rs2;
while(TF2 != 1);
TF2=0;
rs_sent=rs3;
while(TF2 != 1);
TF2=0;
rs_sent=rs4;
while(TF2 != 1);
TF2=0;
rs_sent=rs5;
while(TF2 != 1);
TF2=0;
rs_sent=rs6;
while(TF2 != 1);
TF2=0;
rs_sent=rs7;
while(TF2 != 1);
TF2=0;
rs_sent=1; //发出停止位,数据位为8,结构为10位,无校验
while(TF2 != 1);
TF2=0;
TR2=0;
}
///////////////虚拟串口接收子函数//////////////////
unsigned char rs_in(void)
{
INT8U i;
for(i=0;i<2;i++ )
{
i = 1;
while( rs_rev != 0 ) ;
TR2=1; //收到开始位,开定时器2,
while(TF2 != 1);
TF2 = 0 ;
rs0 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs1 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs2 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs3 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs4 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs5 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs6 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
rs7 = rs_rev ;
while(TF2 != 1);
TF2 = 0 ;
if (rs_rev != 1)
{
i = 0;
}
while(TF2 != 1);
TR2 = 0;
TF2 = 0;
}
return(rsbuf);
}
void main(void)
{
INT8U i;
while(1)
{
rs_com_start();
rs_sen(0xdd);
i=rs_in();
rs_sen(i);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -