📄 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 + -