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

📄 key_read_in.c

📁 本系统由服务器软件控制平台和fpga硬件处理系统组成
💻 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 + -