📄 io2uart.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 + -