joystick_drv.c

来自「Taiwan sunplus develop spce3200, it is a」· C语言 代码 · 共 62 行

C
62
字号
//====================================================================================
//File Name:	JoyStick_Drv.c
//Description:	Joy stick driver
//Update:		2007.03.17 V1.0	by wangtao <wangtao@sunnorth.com.cn>
//====================================================================================
#include "JoyStick_Drv.h"

//=============================================================
//Return Value:	void JoyStick_Init(void);
//Description:	Initialize JoyStick
//Arguments:	None
//Return Value:	None
//=============================================================
void JoyStick_Init(void)
{
	*P_GPIO_CLK_CONF = C_GPIO_CLK_EN|C_GPIO_RST_DIS;
	*P_JOYS_GPIO_PULLUP &= ~((0x01<<(JOYS_DAT0_BIT+JOYS_PULLUP_OFFSET))+(0x01<<(JOYS_DAT1_BIT+JOYS_PULLUP_OFFSET)));
													// DAT0,DAT1 pull up
	*P_JOYS_GPIO_PULLDOWN &= ~((0x01<<(JOYS_DAT0_BIT+JOYS_PULLDOWN_OFFSET))+(0x01<<(JOYS_DAT1_BIT+JOYS_PULLDOWN_OFFSET)));
													// DAT0,DAT1 no pull down
	*P_JOYS_GPIO_OE &= ~((0x01<<(JOYS_DAT0_BIT+JOYS_OE_OFFSET))+(0x01<<(JOYS_DAT1_BIT+JOYS_OE_OFFSET)));
													// DAT0,DAT1 input
	JOYS_LOAD_Clr();								// Initialize LOAD as low level
	JOYS_CLK_Set();									// Initialize CLK as high level
	*P_JOYS_GPIO_OE |= (0x01<<(JOYS_CLK_BIT+JOYS_OE_OFFSET))+(0x01<<(JOYS_LOAD_BIT+JOYS_OE_OFFSET));
													// CLK,LOAD output
}

//=============================================================
//Return Value:	void JoyStick_Get(unsigned short *KeyCode0, unsigned short *KeyCode1);
//Description:	Initialize JoyStick
//Arguments:	KeyCode0: Address of stick0 keys
//				KeyCode1: Address of stick1 keys
//Return Value:	None
//=============================================================
void JoyStick_Get(unsigned short *KeyCode0, unsigned short *KeyCode1)
{
	short i, j;
	unsigned short TempCode0, TempCode1;
	
	TempCode0 = 0x0000;
	TempCode1 = 0x0000;
	
	JOYS_LOAD_Set();
	for(j=0; j<5; j++);
	JOYS_LOAD_Clr();

	for(i=0; i<8; i++)
	{
		JOYS_CLK_Clr();
		TempCode0 <<= 1;
		TempCode1 <<= 1;
		TempCode0 |= !JOYS_DAT0_Get();
		TempCode1 |= !JOYS_DAT1_Get();
		for(j=0; j<5; j++);
		JOYS_CLK_Set();
	}
	*KeyCode0 = TempCode0;
	*KeyCode1 = TempCode1;
}

⌨️ 快捷键说明

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