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

📄 rs232.c

📁 rs232在单片机的环境下
💻 C
字号:
//------------------------------------------Debug info -----------------------------------
#define PROJECT	  "1548"
#define VERSION   "201"			//keep fixed length 3 char
#define DATE      "2003/01/25 "	//keep fixed length 10 char
                
#define FOOTNOTE  "MXC NEW LCD TV F/W" 
#define SIZE_COMMENT	sizeof(FOOTNOTE)-1


void sendCommData(BYTE d)
{	bit bES;
	bES=ES;
	ES=0;

	SBUF=d;
	while(0==TI);	//等待发送结束
	TI=0;
	ES=bES;
}


BYTE value2Ascii(BYTE d)
{	if(d<10)
		return(d+0x30);
	else if(d<16)
		return(d+55);
	else
		return(42);	//不是0-15的数字说明输入有误,返回星花符号"*"
}

void huiche()
{	sendCommData(13);	//回车换行
	sendCommData(10);
}

void sendCommString(BYTE *s,bit huanhang)
{	bit bES;

	bES=ES;			//保存ES原状态
	ES=0;			//查询方式发送字符串,不用中断
	while(*s)
	{	SBUF=*s++;
		while(0==TI);		//等待发送结束
		TI=0;		
	}

	if(huanhang)	huiche();	//回车换行
	ES=bES;					//恢复ES原状态
}

void printData(BYTE d)
{	sendCommData(value2Ascii(d>>4));
	sendCommData(value2Ascii(d & 0x0F));
}



void SerialPort(void)
{		idata BYTE slaveAdd;
		idata BYTE subAdd;
        idata WORD regdata;
        if(RI)
		{		
                switch(_getkey())
				{                                      	
                        case 'S':					//小s写(ASCII为0x73),大S读(ASCII为0x53)
							printData('S');huiche();
                            while(!RI) ;
							slaveAdd = _getkey();
                            RI=0;
							printData(slaveAdd);huiche();
							while(!RI) ;
							subAdd = _getkey();
                            RI=0;
							printData(subAdd);huiche();
		                    regdata = rd_I2C_Byte(slvAdd,subAdd);
							TI=0;
			                SBUF = (BYTE)regdata;
							while(!TI) ;
							TI=0;
                            break;
                            
                        case 's':					//小s写(ASCII为0x73),大S读(ASCII为0x53)
							printData('s');huiche();
                            while(!RI) ;
							slaveAdd = _getkey();
                            RI=0;
							printData(slaveAdd);huiche();
                        	while(!RI) ;
							subAdd = _getkey();
                            RI=0;
							printData(subAdd);huiche();
                            while(!RI) ;
							regdata = _getkey();
                            RI=0;
							printData(regdata);huiche();
       						wr_I2C_Byte(slvAdd,subAdd,(BYTE)regdata);
							TI=0;
							SBUF='s';				//确认信息
							while(!TI) ;
							TI=0;
                            break;  							
  				} // Switch
		} // if (RI)
}




#if 0
void SerialPort(void)
{
        BYTE subAdd;
        WORD regdata;
        
        if(RI){
                switch(_getkey()){

                //-------------------------------------------------------------
                //		MX Flat Panel Controller Read/Write
                //-------------------------------------------------------------		                               
                            			
                        case 'W':
						//#endif                                
                        case 'x':
                            //Write Register Command
                            while(!RI) ;
                            subAdd = _getkey();
                            while(!RI) ;
                            regdata = _getkey();
			                OutPort1(subAdd,  regdata);
                            break;
						//#ifdef UseOldFormat                                
                        case 'R':
						//#endif                                
                        case 'X':
                            //Read Register Command
                            while(!RI) ;
                            subAdd = _getkey();
		                    while(!TI) ;
	                        TI = 0;
        	                SBUF = InPort1(subAdd);
                            break;

                        case 'E':
                            //Echo command
                            while(!RI) ;
                            subAdd = _getkey();
		                    while(!TI) ;
	                        TI = 0;
        	                SBUF = subAdd;
                            break;
                            			
                            						case 'H':
							while(!TI);
							TI=0;
							SBUF=0x55;		//header
							while(!TI);
							TI=0;
							SBUF=0xaa;		//header
							//printf("%s", InfoProjectStr);    	//1.
							//printf("%s", InfoVersionStr);      //2.
							//printf("%s", InfoDateStr);   //3.

   	  						while(!TI);
							TI=0;SBUF=INFO_PANEL;	//4.panel

   	  						while(!TI);
							TI=0;SBUF=INFO_BOARD;	//5.Board

   	  						while(!TI);
							TI=0;SBUF=INFO_RAM;	 //6.ram

							while(!TI);
							TI=0;SBUF=INFO_ADCPLL;	//7.adc,pll
   	  						
							while(!TI);
							TI=0;SBUF=INFO_VIDEODECODER;	//8.video decoder
							
   	  						while(!TI);
							TI=0;SBUF=INFO_OSD;	//9.OSD
							
   	  						while(!TI);
							TI=0;SBUF=INFO_HSEDGE;	//10.Hs edge

   	  						while(!TI);
							TI=0;SBUF=INFO_POWERKEY;	//11. Power key
						    break;
			 case 'S':
                            while(!RI) ;
                            subAdd = _getkey();
		                    regdata = rd_TI5146(subAdd);
			                while (!TI);
                        	TI = 0;
			                SBUF = (BYTE)regdata;
                            break;
                            
                        case 's':
                        	while(!RI) ;
                            subAdd = _getkey();
                            while(!RI) ;
                            regdata = _getkey() ;
       						wr_TI5146(subAdd, (BYTE)regdata);
                            break;

			} // Switch
			RI=0;
	} // if (RI)

}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -