⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.c

📁 基于无线单片机24e1的组网程序。在无线传感器之类的应用中的成功案例。
💻 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 + -