📄 carinfor.c
字号:
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 + -