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

📄 joystick_drv.c

📁 Taiwan sunplus develop spce3200, it is a test program ----- testboard source code
💻 C
字号:
//====================================================================================
//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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -