📄 earkey.c
字号:
/*void rxtx() interrupt 4
{
char ch;
if(RI)
{
if(!fim10mode)
{
ET0 = 0;
ch = SBUF;
if(ch == '[')
{
index = 0;
}
else if(ch == ']')
{
_data[index] = 0;
processdata();
}
else
{
_data[index] = ch;
index++;
}
RI = 0;
inittimer0();
}
}
} */
/*void inittimer0()
{
TMOD = (TMOD & 0xF0) | 0x01;
ET0 = 1;
TR0 = 1;
EA = 1;
}
void __transmit(char *str)
{
while(*str)
{
SBUF = *str;
while(!TI);
TI = 0;
str++;
}
}
void transmit(char *str)
{
while(*str)
{
SBUF = *str;
while(!TI);
TI = 0;
str++;
}
}
//For FIM10 module
void transmitpacket( char port,
char command,
char param1,
char param2,
char data_size,
char error,
char header_checksum,
char *packet_data,
char data_checksum)
{
char i;
long d_cksm = 0;
if(port == 1) //FIM10 module
{
fim10mode = 1;
COM_SELECT = 0;
}
SBUF = 0x7E;while(!TI);TI = 0;
//Command
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = command;while(!TI);TI = 0;
//Parameter1
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = param1;while(!TI);TI = 0;
//Parameter2
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = param2;while(!TI);TI = 0;
//Data size
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = data_size;while(!TI);TI = 0;
//Error
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
//Header Checksum
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = 0x00;while(!TI);TI = 0;
SBUF = command + param1 + param2 + data_size + error;
while(!TI);TI = 0;
//Data
if(data_size > 0)
{
for(i = 0; packet_data[i] != '\0'; i++)
{
SBUF = packet_data[i];
while(!TI);
TI = 0;
d_cksm += packet_data[i];
}
for(; i < data_size; i++)
{
SBUF = 0x00;
while(!TI);
TI = 0;
}
//Data Checksum
SBUF = (d_cksm & 0xFF000000) >> 24;while(!TI);TI = 0;
SBUF = (d_cksm & 0x00FF0000) >> 16;while(!TI);TI = 0;
SBUF = (d_cksm & 0x0000FF00) >> 8;while(!TI);TI = 0;
SBUF = (d_cksm & 0x000000FF) >> 0;while(!TI);TI = 0;
}
if(port == 1)
{
COM_SELECT = 1;
fim10mode = 0;
}
}
char getserch()
{
char ch;
while(!RI);
ch = SBUF;
RI = 0;
return ch;
}
void receivepacket( char port,
char *command,
char *param1,
char *param2,
char *data_size,
char *error,
char *header_checksum,
char *packet_data,
char *data_checksum)
{
char ch;
char i = 0;
if(port == 1)
{
fim10mode = 1;
COM_SELECT = 0;
}
while(1)
{
ch = getserch();
if(ch == 0x7E)break;
}
//Command
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*command = ch;
//Parameter1
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*param1 = ch;
//Parameter2
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*param2 = ch;
//Data size
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*data_size = ch;
//Error
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*error = ch;
//Header checksum
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*header_checksum = ch;
if(*data_size > 0)
{
*data_checksum = 0;
for(i = 0; i < *data_size; i++)
{
packet_data[i] = getserch();
}
for(i = 0; i < 4; i++)
{
ch = getserch();
}
*data_checksum = ch;
}
if(port == 1)
{
COM_SELECT = 1;
fim10mode = 0;
}
} */
void main()
{
//char j;
int x = 0;
//char i;
int y = 3;
char text[15];
init89c51rd2(BAUD_RATE_9600);
ENABLE_ONCHIP_XRAM();
initlcd();
delay(25000);
clearlcd();
lcddisplaybmp(0, 0, JBB, JBB_BMP_COLS, JBB_BMP_ROWS, INVERTED_MODE);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
clearlcd();
lcddisplaystr(2 * 8, 2, "HELLO WORLD", NORMAL_MODE);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
lcddisplaystr(2 * 8, 2, "KEYBOARD TEST", NORMAL_MODE);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
while(1)
{
text[x] = getkey();
text[x + 1] = '\0';
clearlcd();
lcddisplaystr(0 * 8, 1, "Char received", NORMAL_MODE);
lcddisplaystr(0 * 8, 3, text, NORMAL_MODE);
x++;
if(x >= 15)x = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -