⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io_rs.c

📁 I/O并行口模拟串行口使用
💻 C
字号:
#include <reg51.h>

sbit BT_REC=P1^7;
sbit BT_SND=P1^6;

#define F_TM F0

void IntTimer1(void) interrupt 3
{
	F_TM=1;
}

void PSendChar(unsigned char inch)
{
	unsigned char ii;
	ii=0;
	BT_SND=0;
	F_TM=0;	
	TR1=1;
	while(!F_TM);
	while(ii<8)
	{
		if(inch&1)
		{
			BT_SND=1;
		}
		else 
		{
			BT_SND=0;
		}
		F_TM=0;
		while(!F_TM);
		ii++;
		inch>>=1;
	}
	BT_SND=1;
	F_TM=0;
	while(!F_TM);
}

unsigned char PGetChar()
{
	unsigned char rch,ii;
	F_TM=0;
	ii=0;
	rch=0;
	TR1=1;
	while(!F_TM);
	while(ii<8)
	{
		rch>>=1;
		if(BT_REC)
		{
			rch|=0x80;
		}
		ii++;
		F_TM=0;
		while(!F_TM);
	}
	F_TM=0;
	while(!F_TM)
	{
		if(BT_REC)
		{break;}
	}
	return rch;
}

//检查是不是有起始位
bit StartBitOn()
{
	return  (BT_REC==0);
}

char code dx516[3] _at_ 0x003b;

void main()
{
	unsigned char gch;

	TMOD=0x22;
	PCON=0x00;
	TH1=(256-192); 		//使用22.1184MHZ时钟
	TL1=TH1;
	EA=1;
	ET1=1;

	PSendChar(0x22);
	PSendChar(0x88);

	while(1)
	{
		if(StartBitOn())
		{	
			gch=PGetChar();
			PSendChar(gch);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -