📄 com.h
字号:
/************************************************************/
/********* COM.H C51 driver *************/
/********** Written by WangBiao---20060824 ****************/
/************************************************************/
//P3_0->RXD ;; P3_1->TXD
//-----------------------------------------------------------------------
//bit read_flag=0;//for ES interrupt
//-----------------------------------------------
//unsigned char Get_Data;//for interrupt get data
//-----------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//-----------------------------------------------------------------------
//-----------------------外部函数----------------------------------------
void Init_Com(void);
void SendChar(unsigned char InData);
void SendString(unsigned char *ptr);
void SendHexChar(unsigned char n);
void SendNumb(unsigned int n,unsigned char number_bit);
void CT(void);//chang tab==enter
//unsigned char Rece_Wait(void);//wait until the RI=1;
//unsigned char Rece_Timer(void);//wait for RI=1 for a little time;
//void Serial() interrupt 4 using 3;//ES interrupt,set read_flag
//-----------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//-----------------------------------------------------------------------
//--------------------------------------------------------------------
void Init_Com(void)
{
TMOD=0x20; //定时器1,方式2
TL1=0xFD;
TH1=0xFD; //11.0592MHZ晶振,波特率为9600
PCON=0x00;
SCON=0x50; //方式3
TR1=1; //启动定时
}
//------------------------------------------------------------------
//发送一个字节
//------------------------------------------------------------------
void SendChar(unsigned char InData)
{
SBUF=InData;
while(TI!=1);TI=0;
}
//------------------------------------------------------------------
//发送一串字符
//------------------------------------------------------------------
void SendString(unsigned char *ptr)
{
unsigned char i,l=0;
while(ptr[l]>31) l++;//get length
for(i=0;i<l;i++) SendChar(*(ptr+i));
}
//-------------------------------------------------------------------
//发送一组数字,位数可变
//--------------------------------------------------------------------------
void SendNumb(unsigned int n,unsigned char number_bit)
{
unsigned char digi[5];
unsigned char i;
digi[0]=n/10000%10;
digi[1]=n/1000%10;
digi[2]=n/100%10;
digi[3]=n/10%10;
digi[4]=n%10;
for(i=0;i<number_bit;i++) SendChar(digi[5-number_bit+i]+0x30);
}
//-------------------------------------------------------------------
//-------------------------------------------------------------------
void SendHexChar(unsigned char n)
{
unsigned char h,l;
SendChar('0');SendChar('x');
h=(n&0xf0)>>4;if(h>9) h+=0x57;else h+=0x30;
l=(n&0x0f);if(l>9) l+=0x57;else l+=0x30;
SendChar(h);SendChar(l);
SendChar(',');
}
//-------------------------------------------------------------------
//回车、换行
//-------------------------------------------------------------------
void CT(void)
{
SendChar(0x0d);SendChar(0x0a);
}
//--------------------------------------------------------------------
/*
//查询接收(一直查询)
//--------------------------------------------------------------------
unsigned char Rece_Wait(void)//wait until the RI=1;
{ unsigned char a;
while(RI!=1);
RI=0;
a=SBUF;
return(a);
}
//--------------------------------------------------------------------
//查询接收(查询一段时间)
//--------------------------------------------------------------------
unsigned char Rece_Timer(void)//wait for RI=1 for a little time;
{ unsigned char a=0;
unsigned int i;
for(i=0;i<100;i++)
{ if(RI)
{ RI=0;
a=SBUF;
break;
}
}
return(a);
}
//--------------------------------------------------------------------
//中断接收(置标志位read_flag)
//--------------------------------------------------------------------
void Serial() interrupt 4 using 3
{
ES=0;
if(RI)
{ RI=0;
Get_Data=SBUF;
read_flag=1;
}
ES=1;
}
*/
//----------com end---------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -