STC单片机虚拟串口发送程序(超简单)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STC单片机虚拟串口发送程序(超简单)
STC单片机(STC12C5A32S)虚拟串口发送程序
//虚拟串口发送子函数
void Uart(uint8 a)
{
ACC=a; //TXD3是已经定义的任意的发送端口
TR1=1;
TXD3=0; //发送起始位
while(TF1==0);
TF1=0; //TF1必须清零,因为只有启用T1中断才会自动清零
TXD3=ACC0; //发送8个位也可以用移位来发送,ACC0-ACC7也必须先定义
while(TF1==0); //表示ACC的8个位,如果用移位发送,就不用这样定义。
TF1=0;
TXD3=ACC1;
while(TF1==0);
TF1=0;
TXD3=ACC2;
while(TF1==0);
TF1=0;
TXD3=ACC3;
while(TF1==0);
TF1=0;
TXD3=ACC4;
while(TF1==0);
TF1=0;
TXD3=ACC5;
while(TF1==0);
TF1=0;
TXD3=ACC6;
while(TF1==0);
TF1=0;
TXD3=ACC7;
while(TF1==0);
TF1=0;
TXD3=1; //发送停止位
while(TF1==0);
TF1=0;
TR1=0;
}
该子函数使用T1定时器,T0也可以。
采用8位自动重装,重装值为A0
Main()
{
TMOD = 0x21; //T0:模式1,16位定时器。
T1:模式2,8位定时器,自动重装AUXR &= 0x3f; //定时器0和定时器1与普通8051定时器一样(不同的单片机设置可能
不同)
TL1 = 0xa0; //虚拟串口波特率:9600
TH1 = 0xa0;
ET0 = 1;
ET1 = 0; //T1中断一定不要使用,要不接收会错误
TR0 = 1;
TR1 = 0;
Uart(0xaa); //0xaa是发送的数据,如果接收有误,在发送一个字节后可加点延时//延时
While(1); //具体程序此处省略
}
注:因本人实验的硬件不需要模拟串口来接收数据,故没给出虚拟串口接收程序。