📄 soft_232.c
字号:
#include <reg52.h>
#define UART2
sbit RX2_Pin=P3^3; sbit TX2_Pin=P3^4;
U8 RX2_b_CT,rx2buf,TX2_b_CT,tx2buf,rx2buf0;
#define eRS_t 160 //9600bps @11.592Mhz 256-96;
#ifdef UART2
//***************************** Extend RS232 Comunication ***************
//软件仿真串口例程
/*利用51单片机外部中断1触发 一字节接收 同步时钟(T0)
void comUART2(void) interrupt 2 //using 2
{
if(!RX2_Pin){ EX1=0;RX2_b_CT=10; RI2=0; //if(TL0<(eRS_t+10)) TL0=eRS_t;
}
}
*/
void T0OUT(void) interrupt 1 using 2
{
// TH1=255; TL1=eRS_t;
if((RX2_b_CT==0)&&(!RX2_Pin)) RX2_b_CT=9; //起始位到来
else if(RX2_b_CT){ //正在接收当中
if(RX2_b_CT>1){
rx2buf0>>=1; if(RX2_Pin)rx2buf0 |=0x80;RX2_b_CT--;
}
else { RX2_b_CT=0; RI2=1; rx2buf=rx2buf0; } //接收一字节数据结束
}
if(TX2_b_CT){
if(TX2_b_CT==10) { TX2_b_CT--; TX2_Pin=0; }
else {
tx2buf>>=1; TX2_Pin=CY; TX2_b_CT--;
if(TX2_b_CT==0){ TI2=1; TX2_Pin=1; }
}
}
timer0++; timer1++;
if((RX2_b_CT==0)&&(!RX2_Pin)) RX2_b_CT=9; //再次探测是否有起始位到来
}
/*
void SendToPc(U8 dat){
// U8 i;
while(RX2_b_CT);
while(!TF1); TX2=0; TF1=0;tx2buf=dat; TX2_b_CT=8; while(!TF1); //Start
// for(i=8;i;i--){
// dat>>=1; TX2=CY; TF1=0;while(!TF1);
// }
// TX2=1; //EA=1; //Over
}*/
#endif
/***********************end**************************/
main(){
while(1){
if(RI2){ //RI2=1 接收到1字节数据
//添加您的程序
//TX2_b_CT=10; tx2buf=dat; //发送一字节数据
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -