📄 serial.c
字号:
//========================================================
//深圳奥特迅电力设备有限公司
//电池监控系统用无线传输模块
//文件名:serial.h
//描述:串口操作
//By:Andylee 2006-6-13
//anssett@163.com
//=========================================================
#include<battery.h>
//#include<serial.h>
//unsigned char TxBuf[TxBuf_Len]; //发送缓冲区
//unsigned char RxBuf[RxBuf_Len]; //接收缓冲区
//unsigned char *toTxBuf,*fromTxBuf,*toRxBuf,*fromRxBuf;//fifo 指针
//bit TIflag=1;
//================================================================
//函数功能:串口初始化
//filename:InitSerial()
//input:none
//output:none
//================================================================
void InitSerial(void)
{
TH1 = 243; // 19200@16MHz (when T1M=1 and SMOD=1)
CKCON |= 0x10; // T1M=1 (/4 timer clock)
PCON = 0x80; // SMOD=1 (double baud rate)
SCON = 0x52; // Serial mode1, enable receiver
TMOD = 0x20; // Timer1 8bit auto reload
TR1 = 1; // Start timer1
ES = 0;
EA=1;
}
//================================================================
//函数功能:串口缓冲区初始化
//filename:InitSerialBuffer()
//input:none
//output:none
//================================================================
/*void InitSerialBuffer(void)
{
toTxBuf=TxBuf;
fromTxBuf=TxBuf;
toRxBuf=RxBuf;
fromRxBuf=RxBuf;
ES=1;
}/*
//================================================================
//函数功能:串口中断服务程序
//filename:SerialIsr()
//input:none
//output:none
//================================================================
/*void SerialIsr(void) interrupt 4
{ unsigned char *temp;
if(TI)
{
TI=0;
if(toTxBuf==fromTxBuf) //发送缓冲区为空
{
TIflag=1;
return;
}
SBUF=*fromTxBuf++; //取数指针指向下一单元
if(fromTxBuf==TxBuf+TxBuf_Len) //指向缓冲区开头
fromTxBuf=TxBuf;
}
if(RI)
{
RI=0;
temp=toRxBuf;
if(temp==RxBuf+RxBuf_Len)
temp=RxBuf; //指向缓冲区开头
if(++temp==fromRxBuf) //接收缓冲区为满
return;
*toRxBuf=SBUF;
toRxBuf=temp;
}
}*/
void UartISR (void) interrupt 4 using 2
{
// unsigned char temp;
EA = 0;
if(RI)
{/*
temp = SBUF;
if(temp == '@')
{
Rx.Buf[0] = '@';
Rx.Counter = 1;
}
else if(temp == '*')
{
Rx.Buf[Rx.Counter] = temp;
Rx.Buf[Rx.Counter + 1] = '\0';
Rx.NewData = 1;
}
else if(Rx.Counter < 39){
Rx.Buf[Rx.Counter] = temp;
Rx.Counter += 1;
}*/
RI = 0;
}
if(TI)
{
TI = 0;
}
EA = 1;
}
//================================================================
//函数功能:从串口缓冲区读取一个字节的数据
//filename:L_getch()
//input:ch 指针指向读出的地址
//output:none
//================================================================
/*bit L_getch(unsigned char *ch) //从串口缓冲区读1字节数据
{
if(toRxBuf==fromRxBuf)
{ES=1;return 0;} //RxBuf Empty
*ch=*fromRxBuf;
fromRxBuf++;
if(fromRxBuf==RxBuf+RxBuf_Len)
fromRxBuf=RxBuf;
return 1;
} */
//================================================================
//函数功能:打印一个字符(向发送缓冲区写入一个字符)
//filename:PrintChar()
//input:ch char变量
//output:none
//================================================================
//================================================================
//函数功能:显示ASII
//filename:PrintChar()
//input:ch char变量
//output:none
//================================================================
/*void PrintCh(unsigned char ch)
{
if(ch>=0&&ch<=9) ch=ch+'0';
else ch=ch+'A'-10;
PrintChar(ch);
}*/
//================================================================
//函数功能:以十六进制格式显示1个字节数据
//filename:insidePrintByte()
//input:Byte char变量
//output:none
//================================================================
/*void insidePrintByte(unsigned char Byte)
{
unsigned char c;
c=Byte;
c=c>>4;
PrintCh(c);
c=Byte;
c=c&0x0F;
PrintCh(c);
}*/
//================================================================
//函数功能:以十六进制格式显示1个字节数据
//filename:PrintByte()
//input:Byte char变量
//output:none
//================================================================
/*void PrintByte(unsigned char Byte) //以十六进制格式显示1个字节数据
{
EA=0;
insidePrintByte(Byte);
EA=1;
}*/
//================================================================
//函数功能:以十六进制格式显示1个字数据
//filename:insidePrintWord()
//input:Word int变量
//output:none
//================================================================
/*void insidePrintWord(unsigned int Word)
{
insidePrintByte(Word>>8);
insidePrintByte(Word&0xFF);
}*/
//================================================================
//函数功能:以十六进制格式显示1个字数据
//filename:PrintWord()
//input:Word int变量
//output:none
//================================================================
/*void PrintWord(unsigned int Word)
{
EA=0;
insidePrintWord(Word);
EA=1;
} */
//================================================================
//函数功能:以十六进制格式显示1个长字数据
//filename:PrintLong()
//input:Long0Word Long变量
//output:none
//================================================================
/*void PrintLong(unsigned long LongWord)
{
EA=0;
insidePrintWord(LongWord>>16);
insidePrintWord(LongWord&0xFFFF);
EA=1;
} */
//================================================================
//函数功能:显示字符串
//filename:PrintStr()
//input:char *str
//output:none
//================================================================
/*
void PrintStr(unsigned char *str)
{
int i;
unsigned char j;
unsigned char ch;
EA=0;
for(i=0;i<MaxStrLen;i++){
ch=*(str+i);
if(ch=='\0') break;
else if(ch=='\n'){PrintChar(10);PrintChar(13);}
else if(ch=='\t'){
for(j=0;j<TABNum;j++)
PrintChar(' ');
}
else PrintChar(ch);
}
EA=1;
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -