📄 moni_uart1_send.c
字号:
#include "at89x52.h"
#define NUM 21
//要发送的串长度
sbit BT_SND =P2^1;
sbit BT_REC =P2^0;
unsigned char buffer[10]={0,0,0,0,0,0,0,0,0,1}; //比特位数组
unsigned char senddata[NUM]; //要发送的字符串
unsigned char BIT_IP=0; //比特位指针
unsigned char DAT_IP=0; //数据指针
unsigned char FillOK=0; //数据填充完成
unsigned char SendOK=1; //数据发送完成
unsigned char OK=0; //定时器中断到
void FillBuf(unsigned char out)
{
unsigned char i,test,da;
da=out;
for(i=0;i<8;i++)
{
test=1;
test=test&da;
if(test) buffer[i+1]=1;
else buffer[i+1]=0;
da=da>>1;
test=1;
}
FillOK=1;
}
void InitTIM(void)
{
TMOD=0X02;
TH0=0XA0;TL0=0XA0; //11.0592MHZ--9600bps
ET0=1;EA=1;
TR0=1;TF0=0;
}
void main()
{
unsigned char i;
for(i=0;i<NUM;i++) senddata[i]=0X41+i;
InitTIM();
for(;;)
{
if((BIT_IP==0) & (SendOK==1) & (FillOK==0)) //一个字符已发送完填入下一字符到比特数组
{
FillBuf(senddata[DAT_IP]);
DAT_IP++;
if(DAT_IP==(NUM-1)) DAT_IP=0;
}
if(OK) //定时器中断溢出发送一位数据
{
if(FillOK & (BIT_IP!=10))
{
BT_SND=buffer[BIT_IP];
BIT_IP++;
SendOK=0;
}
if(BIT_IP==10) //十位比特已发送完毕
{
FillOK=0;
BIT_IP=0;
SendOK=1;
}
OK=0;
}
}
}
void IntTimer0() interrupt 1
{
OK=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -