模擬串口的實(shí)現(xiàn)單片機(jī)IO口
一般的單片機(jī)都只有一個(gè)串口,所以必須模擬一個(gè)出來(lái)。
本文引用地址:http://m.butianyuan.cn/article/201611/318339.htm/*
sbit TXD1= P1^4;//define p14 as the analog transmit port
sbit RXD1= P1^2;//define p12 as the analog recieve port
*/
#include "REG52.H"
#define uint unsigned int
#define uchar unsigned char
#include
void WaitTF0(void);
void TIMEINI(void)//counter initial
{
TMOD=0x02;
TH0=0xA0;、//9600 BPS
TL0=TH0;
TR0=1;
TF0=0;
}
void WByte(uchar input)//send function
{
uchar i=8;
TR0=1;
TXD1=0;//begin bit
WaitTF0();
//send the Byte
while(i--)
{
TXD1=input&0x01;//send Byte from low bit to high bit
WaitTF0();
input=input>>1;//right shift
}
TXD1=1;//stop bit
WaitTF0();
TR0=0;//stop the counter
}
uchar RByte()//the recieve function
{
uchar Output=0;
uchar i=8;
while(RXD1);
i=i;
i=i;
i=i;
i=i;
i=i;
i=i;
i=i;
TR0=1;//計(jì)數(shù)器開(kāi)始工作
WaitTF0();
while(i--)//接收8位數(shù)據(jù)位
{
Output>>=1;
if(RXD1)Output=Output|0x80;//recieve from the high bit to low bit
WaitTF0();
}
TR0=0;
returnOutput;
}
void WaitTF0(void)//check the counter
{
while(!TF0);
TF0=0;
}
評(píng)論