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

📄 carinfor.c

📁 驾驶员考试电桩考试系统的车载程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	IO3CLR =_WE;
	
	IO0SET = _SpeakControl;
	
	IO3SET = _A0;
	IO3CLR = _A0;

	IO3SET = _A1;                                                                        
	IO3CLR = _A1;

	IO3SET = _A2;
	IO3CLR = _A2;

	IO3SET = _A3;
	IO3CLR = _A3;

	IO3SET = _A4;
	IO3CLR = _A4;

	IO3SET = _A5;
	IO3CLR = _A5;

	IO3SET = _A6;
	IO3CLR = _A6;

	IO3SET = _A7;
	IO3CLR = _A7;

	IO3SET = _A8;
	IO3CLR = _A8;

	IO3SET = _A9;
	IO3CLR = _A9;
//*/
	IO0CLR = _SpeakControl;
	IO0SET = _SpeakPD;
	IO0CLR = _SpeakPD;
	IO0SET = _SpeakPD;
	
}
/****************************************************************************
* 名称:OutPinA0_A9() 外部函数
* 功能:
* 入口参数:
* 出口参数:
****************************************************************************/
void OutPinA0_A9(uint16 u16Address)
{
	uint16 u16Temp;
	
	IO0SET = _SpeakControl;
	
	IO3CLR=_CS2;
	IO3CLR =_A22;
	IO3CLR =_WE;
	

	u16Temp = u16Address;
	if(u16Temp % 2)
		IO3SET = _A0;
	else
		IO3CLR = _A0;
	
	u16Temp = u16Temp / 2;
	if(u16Temp % 2)
		IO3SET = _A1;
	else
		IO3CLR = _A1;
		
	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A2;
	else
		IO3CLR = _A2;
		
	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A3;
	else
		IO3CLR = _A3;
			
	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A4;
	else
		IO3CLR = _A4;
			
	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A5;
	else
		IO3CLR = _A5;
			
	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A6;
	else
		IO3CLR = _A6;
			
	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A7;
	else
		IO3CLR = _A7;

	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A8;
	else
		IO3CLR = _A8;

	u16Temp = u16Temp / 2 ;
	if(u16Temp % 2)
		IO3SET = _A9;
	else
		IO3CLR = _A9;
		
	IO0CLR = _SpeakControl;

	IO3SET = _CS2;
	IO3SET = _A22;
	IO3SET = _WE;
		
}
/****************************************************************************
* 名称:WE_Plus() 外部函数
* 功能:
* 入口参数:
* 出口参数:
****************************************************************************/
void WE_Plus(void)
{
/*	uint16 i;
	// _RW		P3.27		设为输出
	IO0SET = _SpeakPD;
//	IO3CLR = 0x08000000;
	for(i=0;i<2000;i++);
	IO0CLR = _SpeakPD;
//	IO3SET = 0x08000000;
*/
}
/****************************************************************************
* 名称:PD_Plus() 外部函数
* 功能:
* 入口参数:
* 出口参数:
****************************************************************************/
void PD_Plus(void)
{
	uint32 i,j;
	// PD		P0.10		设为输出
	IO0CLR = _SpeakPD;
//	for(j=0;j<2;j++)
//	for(i=0;i<96000;i++);
//	IO0SET = _SpeakPD;
//	IO0CLR = 0x00000400;
//	IO0SET = 0x00000400;
}
/****************************************************************************
* 名称:SpeakPinTest() 外部函数
* 功能:
* 入口参数:
* 出口参数:
****************************************************************************/
void SpeakPinTest(void)
{
	OutPinA0_A9(0x000);
//	OutPinA0_A9(0x002);
//	OutPinA0_A9(0x004);
//	OutPinA0_A9(0x008);
//	OutPinA0_A9(0x010);
//	OutPinA0_A9(0x020);
//	OutPinA0_A9(0x040);
///	OutPinA0_A9(0x080);
	//OutPinA0_A9(0x100);
//	OutPinA0_A9(0x200);
	
	WE_Plus();
	PD_Plus();
}
/****************************************************************************
* 名称:Speak(uint8 bySoundCode)
* 功能:控制语音的函数
* 说明:
* 参数: 语音代号 bySoundCode 0-255
****************************************************************************/
void Speak(uint8 bySoundCode)
{
	IO0SET = _SpeakPD;

	switch(bySoundCode)
	{
		case 0:
			OutPinA0_A9(00);	//0x00  (0x00) :请把车开到起点
			WE_Plus();
			PD_Plus();
			break;
		case 1:
			OutPinA0_A9(0x20);	//0x01  (0x1A - 0x20) :请挂空挡下车。
			WE_Plus();
			PD_Plus();
			break;
		case 2:
			OutPinA0_A9(0x30);	//0x02  (0x2E - 0x30) :再来一次。
			WE_Plus();
			PD_Plus();
			break;
		case 3:
			OutPinA0_A9(0x100);	//0x03  (0x3C/0x3D/0x40) :不合格。
			WE_Plus();
			PD_Plus();
			break;
		case 4:
			OutPinA0_A9(0x110);	//0x04  (0x4A) :合格。
			WE_Plus();
			PD_Plus();
			break;
		case 5:
			OutPinA0_A9(0x120);	//0x05  (0x5A) :移库不入。
			WE_Plus();
			PD_Plus();
			break;
		case 6:
			OutPinA0_A9(0x130);	//0x06  (0x6C) :二次中停。
			WE_Plus();
			PD_Plus();
			break;
		case 7:
			OutPinA0_A9(0x200);	//0x07  (0x7C) :熄火。
			WE_Plus();
			PD_Plus();
			break;
		case 8:
			OutPinA0_A9(0x208);	//0x08  (0x89) :路线出错。
			WE_Plus();
			PD_Plus();
			break;
		case 9:
			OutPinA0_A9(0x210);	//0x09  (0x90) :越线。
			WE_Plus();
			PD_Plus();
			break;
		case 10:
			OutPinA0_A9(0x218);	//0x0A  (0x98) :碰杠。
			WE_Plus();
			PD_Plus();
			break;
		case 11:
			OutPinA0_A9(0x10);	//0x0B  (0x10/0x0F) :请开始
			WE_Plus();
			PD_Plus();
			break;
/*		case 12:
			OutPinA0_A9(0x000);
			WE_Plus();
			PD_Plus();
			break;
		case 13:
			OutPinA0_A9(0x000);
			WE_Plus();
			PD_Plus();
			break;
		case 14:
			OutPinA0_A9(0x000);
			WE_Plus();
			PD_Plus();
			break;*/
		default:
			OutPinA0_A9(0x0E);
			WE_Plus();
			PD_Plus();
			break;
	}
}

/****************************************************************************
* 名称:GetButton1Status(void)
* 功能:查询是否按下button1
* 说明:
* 参数: 返回0则为按下,否则为没有按下
****************************************************************************/
uint8 GetButton1Status(void)
{
	uint32 GPIO_input;
	uint8 u8Return;
	
//	#define bitButton1			0x02000000		//DIN9		P0.25
//	#define bitButton2			0x80000000		//DIN10		D31

	GPIO_input = (IO0PIN & bitButton1) >> 25;
//	GPIO_input = (IO2PIN & byCar_Door) >> 31;//16;
	u8Return=GPIO_input;
	
	return u8Return;
}

/****************************************************************************
* 名称:GetButton2Status(void)
* 功能:查询是否按下button2
* 说明:
* 参数: 返回0则为按下,否则为没有按下
****************************************************************************/
uint8 GetButton2Status(void)
{
	uint32 GPIO_input;
	uint8 u8Return;
	
//	GPIO_input = (IO0PIN & byCar_Door) >> 31;
	GPIO_input = (IO2PIN & bitButton2) >> 31;
	u8Return=GPIO_input;
	
	return u8Return;
}
/****************************************************************************
* 名称:GetLightStatus(void)
* 功能:查询8个光电开关的状态
* 说明:
* 参数: 返回0则为按下,否则为没有按下
****************************************************************************/
uint8 GetLightStatus(void)
{
	uint32 GPIO_input;
	uint8 u8Return;
	uint8 u8Light_1;
	uint8 u8Light_2;
	uint8 u8Light_3;
	uint8 u8Light_4;
	uint8 u8Light_5;
	uint8 u8Light_6;
	uint8 u8Light_7;
	uint8 u8Light_8;

	GPIO_input = (IO2PIN & byLight1) >> 30;
	u8Light_1=GPIO_input;
	GPIO_input = (IO2PIN & byLight2) >> 29;
	u8Light_2=GPIO_input;
	GPIO_input = (IO2PIN & byLight3) >> 28;
	u8Light_3=GPIO_input;
	GPIO_input = (IO1PIN & byLight4) >> 18;
	u8Light_4=GPIO_input;
	GPIO_input = (IO0PIN & byLight5) >> 24;
	u8Light_5=GPIO_input;
	GPIO_input = (IO1PIN & byLight6) >> 19;
	u8Light_6=GPIO_input;
	GPIO_input = (IO0PIN & byLight7) >> 23;
	u8Light_7=GPIO_input;
	GPIO_input = (IO0PIN & byLight8) >> 22;
	u8Light_8=GPIO_input;

	u8Return = (u8Light_8 * 0x00000080) + (u8Light_7 * 0x00000040) + (u8Light_6 * 0x00000020) + (u8Light_5 * 0x00000010) + (u8Light_4 * 0x00000008) + (u8Light_3 * 0x00000004) + (u8Light_2 * 0x00000002) + (u8Light_1 * 0x00000001);
	
	return u8Return;
	
}

/****************************************************************************
* 名称:IO_Out(uint8 IO_OutData)
* 功能:
* 说明:
* 参数: 
****************************************************************************/
void IO_Out(uint8 IO_OutData)
{
	if((IO_OutData & 0x01))
		IO0SET = bitOut1;
	else
		IO0CLR = bitOut1;
	
	if((IO_OutData & 0x02)>>1)
		IO0SET = bitOut2;
	else
		IO0CLR = bitOut2;
}

⌨️ 快捷键说明

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