/*----------------------------------------------------------------------------- 名称: BIGLED_Run 功能: 大LED运行时的切换 输入: u16 time 切换周期 输出: void -----------------------------------------------------------------------------*/ void BIGLED_Run() { switch(Operation_Type) { case 1: //东西向绿灯与南北向红灯亮 { LED_R1 = 0; LED_Y1 = 0; LED_G1 = 1; LED_R2 = 1; LED_Y2 = 0; LED_G2 = 0; Change_Flag = 0; while(!Change_Flag); //延时 Change_Flag = 0; Operation_Type = 2; //下一操作 break; } case 2: //东西向黄灯开始闪烁,绿灯关闭 { LED_G1 = 0; delay_ms(333); LED_Y1 = ~ LED_Y1; if(++Flash_Count != 6) return; //闪烁3次 Flash_Count = 0; Operation_Type = 3; //下一操作 break; } case 3: //东西向红灯与南北向绿灯亮 { LED_R1 = 1; LED_Y1 = 0; LED_G1 = 0; LED_R2 = 0; LED_Y2 = 0; LED_G2 = 1; Change_Flag = 0; while(!Change_Flag); //延时 Change_Flag = 0; Operation_Type = 4; //下一操作 break; } case 4: //南北向黄灯开始闪烁 { LED_G2 = 0; delay_ms(333); LED_Y2 = ~ LED_Y2; if(++Flash_Count != 6) return; //闪烁3次 Flash_Count = 0; Operation_Type = 1; //下一操作 break; } } LCD5110_SetBL(0); //关闭屏幕背光 UI_Run(RunCyle); //显示正常显示界面 }
static int GetKeyPress(void) { int keycode; if (UI_alt_function >= 0) return 0x1b; /* escape - go to Main Menu */ PLATFORM_DisplayScreen(); for (;;) { static int rep = KB_DELAY; if (PLATFORM_Keyboard() == AKEY_NONE) { rep = KB_DELAY; break; } if (rep == 0) { rep = KB_AUTOREPEAT; break; } rep--; Atari800_Sync(); } do { #ifdef DIRECTX DoEvents(); #endif Atari800_Sync(); keycode = PLATFORM_Keyboard(); switch (keycode) { case AKEY_WARMSTART: UI_alt_function = UI_MENU_RESETW; return 0x1b; /* escape */ case AKEY_COLDSTART: UI_alt_function = UI_MENU_RESETC; return 0x1b; /* escape */ case AKEY_EXIT: UI_alt_function = UI_MENU_EXIT; return 0x1b; /* escape */ case AKEY_UI: #ifdef DIRECTX UI_Run(); #else if (UI_alt_function >= 0) /* Alt+letter, not F1 */ #endif return 0x1b; /* escape */ break; case AKEY_SCREENSHOT: UI_alt_function = UI_MENU_PCX; return 0x1b; /* escape */ case AKEY_SCREENSHOT_INTERLACE: UI_alt_function = UI_MENU_PCXI; return 0x1b; /* escape */ default: UI_alt_function = -1; /* forget previous Main Menu shortcut */ break; } } while (keycode < 0); return UI_BASIC_key_to_ascii[keycode]; }