?? 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 + -