📄 key_read_in.c
字号:
// include ""
// include ""
#include <xps2_l.h>
#include "xparameters.h"
#define PS2_BASEADDR XPAR_PS2_PORTS_BASEADDR
Xuint8 Read_In_A_Char()
{
Xuint8 x, x1, x2, x3, x4, data;
x = XPs2_RecvByte(PS2_BASEADDR);
x1 = XPs2_RecvByte(PS2_BASEADDR);
x2 = XPs2_RecvByte(PS2_BASEADDR);
if(x1 != 0xf0)
{
x3 = XPs2_RecvByte(PS2_BASEADDR);
x4 = XPs2_RecvByte(PS2_BASEADDR);
if(x ==0xE0 && x1== 0x5A && x2 == 0xE0 && x3 == 0xF0&& x4== 0x5A)
{ data = 11; //enter key
xil_printf("\r\n");}
else { xil_printf("wrong input!\r\n");
data = 12; //wrong input
}
}
else if(x == x2 && x1 == 0xf0)
{
switch (x)
{ case 0x70: data = 0;break;
case 0x69: data = 1;break;
case 0x72: data = 2;break;
case 0x7A: data = 3;break;
case 0x6B: data = 4;break;
case 0x73: data = 5;break;
case 0x74: data = 6;break;
case 0x6C: data = 7;break;
case 0x75: data = 8;break;
case 0x7D: data = 9;break;
case 0x71: data = 10;break;
default : data = 12;break; //wrong input
}
if(data < 10)
xil_printf("%d", data);
else if(data == 10)
xil_printf(".");
else{ xil_printf("wrong input!\r\n");}
}
return (data);
}
Xuint8 Addr_Read_In_8bit()
{
Xuint8 data0, data1;
data0 = 0;
data1 = 0;
xil_printf("press the Enter key to end your inputting");
while(1)
{
data0 = Read_In_A_Char();
if(data1 <= 255)
{
if((data0 >= 0) && (data0 <= 9))
data1 = (data1 * 10) + data0;
else if(data0 == 11) break;
else {
data0 = 0;
data1 = 0;
xil_printf("wrong input, please input again");
continue;
}
}
else {data0 = 0;
data1 = 0;
xil_printf("wrong input, please input again");
continue;
}
}
return data1;
}
Xuint16 Value_Read_In_16bit()
{
Xuint8 data0;
Xuint16 data1;
data0 = 0;
data1 = 0;
xil_printf("press the Enter key to end your inputting");
while(1)
{
data0 = Read_In_A_Char();
if(data1 <= 0xFFFF)
{
if((data0 >= 0) && (data0 <= 9))
data1 = (data1 * 10) + data0;
else if(data0 == 11) break;
else {
data0 = 0;
data1 = 0;
xil_printf("wrong input, please input again");
continue;
}
}
else {data0 = 0;
data1 = 0;
xil_printf("wrong input, please input again");
continue;}
}
return data1;
}
Xuint32 IP_Port_Read_In_32bit()
{
Xuint8 data0, data1, data2, data3;
Xuint32 data;
data = 0;
xil_printf("Input data in four 8-bit(0-255) segments\n\r");
xil_printf("Such as:\n\r");
xil_printf("SIP[31:23] SIP[22:16] SIP[15:8] SIP[7:0]\n\r");
xil_printf("DIP[31:23] DIP[22:16] DIP[15:8] DIP[7:0]\n\r");
xil_printf("SP[31:23] SP[22:16] DP[15:8] DP[7:0]\n\r");
xil_printf("Press the Enter key to end every segment input\n\r");
xil_printf("Input the 1st number segment\n\r");
data3 = Addr_Read_In_8bit();
xil_printf("Input the 2nd number segment\n\r");
data2 = Addr_Read_In_8bit();
xil_printf("Input the 3rd number segment\n\r");
data1 = Addr_Read_In_8bit();
xil_printf("Input the 4th number segment\n\r");
data0 = Addr_Read_In_8bit();
data = data + data3;
data = (data << 8);
data = data + data2;
data = (data << 8);
data = data + data1;
data = (data << 8);
data = data + data0;
return data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -