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

📄 io2uart.c

📁 IO口模拟串口
💻 C
字号:
#include <reg51.h>

unsigned char data rx_buff,rxdata,rxcnt,rxbits;
unsigned char bdata rx_f=0x20;
sbit rx_start=rx_f^0;
sbit rx_int=rx_f^1;
sbit rxd1=P1^0;
sbit txd1=P1^1;
unsigned char temp0,temp1;
unsigned txcnt,txdata,txbits;

void main(void)
{
	SP=0x5f;
	
	rx_buff=rxdata=rxcnt=rxbits=0;
	rx_start=0;
	txcnt=txdata=txbits=0;

	TMOD=0x22;
	TH0=0xfd;
	TL0=0xfd;
	TR0=1;
	ET0=1;
	EA=1;
	while(1);
}

void timer0_int(void) interrupt 1
{
	/******* receive 1 byte *******/
	temp0=rx_buff&0x03;
	rx_buff>>=1;
	if(rxd1)rx_buff|=0x80;
	temp1=rx_buff&0x38;
	if(rx_start==0)
	{
		rx_int=0;
		if(temp0==0x01)
		{
			if(temp1==0x30 || temp1==0x18 || temp1==0x28 || temp1==0x38)
				return;
			else
			{
				rx_start=1;
				rxcnt=8;
				rxbits=8;
				return;
			}
		}
	}
	else
	{
		rxcnt--;
		if(rxcnt==0)
		{
			rxdata>>=1;
			if(temp1==0x30 || temp1==0x18 || temp1==0x28 || temp1==0x38)
				rxdata|=0x80;
			rxbits--;
			if(rxbits==0)
			{
				rx_int=1;
				rx_start=0;
				rxbits=8;
				rxcnt=8;
			}
		}
	}
	/******* send 1 byte *******/
	if(txbits!=0)
	{
		if(txdata&0x01)
			txd1=1;
		else
			txd1=0;
		txcnt--;
		if(txcnt==0)
		{
			txbits=8;
			txdata>>=1;
		}
	}

} 

⌨️ 快捷键说明

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