亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? microvfd.c

?? 一個兩碟控制的VCD的代碼,兩碟之間的轉動及連續播放,已大量生產的CODE.
?? C
?? 第 1 頁 / 共 3 頁
字號:
{
    VFD_strobeSendByte(VFD_ADDRESS_FIX);
    VFD_next_state = VFD_state_refresh_3;
}

PRIVATE void VFD_state_refresh_3()
{
    unsigned char * refresh_tbl = T_VFD_refresh_tbl;

    RefreshCounter = POPVFD;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(refresh_tbl[RefreshCounter] | VFD_ADDRESS_MASK);
    VFD_next_state = VFD_state_refresh_4;
}

PRIVATE void VFD_state_refresh_4()
{
    VFD_objectSendByte(ShadowRam[RefreshCounter]);
    SET_VFD_STROBE;
    VFD_next_state = VFD_state_refresh_5;
}

PRIVATE void VFD_state_refresh_5()
{
    if (EnableFlashing && (glbTimer > ObjectTime.FlashTime)) {
	ObjectTime.FlashTime = glbTimer + HALF_SECOND;
	flashCalendar();
    }
    VFD_next_state = VFD_state_scan_key_0;
}

#endif /* D16312 */

#ifdef MN12510
/* By Liang Weihua */
PRIVATE	int	AddrCounter;
PRIVATE	int	ShadowCounter;
PRIVATE	int	ReadKey;
/************************************************************************
 ********************** State machine for 12510 *************************
 ************************************************************************/
PRIVATE void VFD_state_init()
{
/*  STATE_INIT is too long,and it can reset by itself,so I don't send 0 to it
                  --- Liang Weihua */
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x00);
    VFD_objectSendByte(FLPCNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x01);
    VFD_objectSendByte(DGTCNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x02);
    VFD_objectSendByte(SEGCNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x03);
    VFD_objectSendByte(P01CNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x04);
    VFD_objectSendByte(P2DIR);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x05);
    VFD_objectSendByte(P2CNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x06);
    VFD_objectSendByte(P3DIR);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x07);
    VFD_objectSendByte(P3CNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x08);
    VFD_objectSendByte(KEYCNT);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x0c);
    VFD_objectSendByte(P01DATA);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x0d);
    VFD_objectSendByte(P2DATA);
    SET_VFD_STROBE;
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(0x0e);
    VFD_objectSendByte(P3DATA);
    SET_VFD_STROBE;
    VFD_next_state = VFD_state_scan_key_0;
}

PRIVATE void VFD_state_scan_key_0()
{
    CLEAR_VFD_STROBE;
    DataLength = KEY_LENGTH;
    ReadKey = 0x60;
    VFD_state_scan_key_1();
}

PRIVATE void VFD_state_scan_key_1()
{
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(ReadKey++);
    VFD_next_state = VFD_state_scan_key_2;
}

PRIVATE void VFD_state_scan_key_2()
{
    VFD_objectReadByte();
    ObjectKey.KeyBuffer[KEY_LENGTH - DataLength] = ReceivedByte;
    --DataLength;
    VFD_next_state = VFD_state_scan_key_3;
}

PRIVATE void VFD_state_scan_key_3()
{
    VFD_objectReadByte();
    ObjectKey.KeyBuffer[KEY_LENGTH - DataLength] = ReceivedByte;
    SET_VFD_STROBE;
    if (--DataLength)
      VFD_next_state = VFD_state_scan_key_1;
    else 
      VFD_next_state = VFD_state_scan_key_4;
}

PRIVATE void VFD_state_scan_key_4()
{
    VFD_searchKey();
    VFD_next_state = VFD_state_scan_key_5;
}

PRIVATE void VFD_state_scan_key_5()
{
    VFD_parseKey();
    VFD_next_state = VFD_state_refresh_0;
}

PRIVATE void VFD_state_refresh_0()
{
    if (!VFDptr) 
      VFD_state_refresh_4();
    else 
      VFD_state_refresh_1();
}

PRIVATE void VFD_state_refresh_1()
{
    unsigned char * refresh_tbl = T_VFD_refresh_tbl;

    RefreshCounter = POPVFD;
    AddrCounter = (int)(RefreshCounter/2);
    if (RefreshCounter & 0x1)
      ShadowCounter = (RefreshCounter - 1);
    else
      ShadowCounter = RefreshCounter;             
    CLEAR_VFD_STROBE;
    VFD_objectSendByte(refresh_tbl[AddrCounter] | VFD_ADDRESS_MASK);
    VFD_next_state = VFD_state_refresh_2;
}

PRIVATE void VFD_state_refresh_2()
{
    VFD_objectSendByte(ShadowRam[ShadowCounter++]);
    VFD_next_state = VFD_state_refresh_3;
}

PRIVATE void VFD_state_refresh_3()
{
    VFD_objectSendByte(ShadowRam[ShadowCounter]);
    SET_VFD_STROBE;
    VFD_next_state = VFD_state_refresh_4;
}

PRIVATE void VFD_state_refresh_4()
{
    if (EnableFlashing && (glbTimer > ObjectTime.FlashTime)) {
	ObjectTime.FlashTime = glbTimer + HALF_SECOND;
	flashCalendar();
    }
    VFD_next_state = VFD_state_scan_key_0;
}

#endif /* MN12510 */


#ifdef BU2872
/* By Liang Weihua */
PRIVATE	int	AddrCounter;
PRIVATE	int	ShadowCounter;
/************************************************************************
 ********************** State machine for 2872 **************************
 ************************************************************************/
PRIVATE void VFD_state_init()
{
    /*
     * BU2872AK VFD driver only send two bit per send a address,its speed
     * very slow, sending  0 to it in STATE_INIT use time,and it can reset ,
     * so I don't do it!  --- Liang Weihua
     */
    VFD_strobeSendByte(VFD_MODE);
    VFD_next_state = VFD_state_scan_key_0;
}

PRIVATE void VFD_state_scan_key_0()
{
    SET_VFD_STROBE;
    DataLength = KEY_LENGTH;
    VFD_objectSendByte(VFD_READ_KEY);
    VFD_next_state = VFD_state_scan_key_1;
}

PRIVATE void VFD_state_scan_key_1()
{
    VFD_objectReadByte();
    VFD_next_state = VFD_state_scan_key_2;
}

PRIVATE void VFD_state_scan_key_2()
{
    ObjectKey.KeyBuffer[KEY_LENGTH - DataLength] = ReceivedByte;
    if (--DataLength)
      VFD_state_scan_key_1();
    else {
	CLEAR_VFD_STROBE;
	VFD_state_scan_key_3();
    }
}

PRIVATE void VFD_state_scan_key_3()
{
    VFD_searchKey();
    VFD_next_state = VFD_state_scan_key_4;
}

PRIVATE void VFD_state_scan_key_4()
{
    VFD_parseKey();
    VFD_next_state = VFD_state_refresh_0;
}

PRIVATE void VFD_state_refresh_0()
{
    if (!VFDptr)
      VFD_state_refresh_4(); 
    else {
	VFD_strobeSendByte(VFD_MODE);
	VFD_next_state = VFD_state_refresh_1;
    }
}

PRIVATE void VFD_state_refresh_1()
{
    unsigned char * refresh_tbl = T_VFD_refresh_tbl;

    RefreshCounter = POPVFD;
    AddrCounter = (int)(RefreshCounter/2) + 1;
    if (RefreshCounter & 0x1)
      ShadowCounter = RefreshCounter;
    else
      ShadowCounter = (RefreshCounter + 1);

    SET_VFD_STROBE;
    VFD_objectSendByte(refresh_tbl[AddrCounter] | VFD_ADDRESS_MASK);
    VFD_next_state = VFD_state_refresh_2;
}

PRIVATE void VFD_state_refresh_2()
{
    VFD_objectSendByte(ShadowRam[ShadowCounter--]);
    VFD_next_state = VFD_state_refresh_3;
}

PRIVATE void VFD_state_refresh_3()
{
    VFD_objectSendByte(ShadowRam[ShadowCounter]);
    CLEAR_VFD_STROBE;
    VFD_next_state = VFD_state_refresh_4;
}

PRIVATE void VFD_state_refresh_4()
{
    if (EnableFlashing && (glbTimer > ObjectTime.FlashTime)) {
	ObjectTime.FlashTime = glbTimer + HALF_SECOND;
	flashCalendar();
    }
    VFD_next_state = VFD_state_scan_key_0;
}

#endif /* BU2872 */

int micro_convert_irkey(int ir_key)
{
    int irKey;
    int newKey;
    char * key_tbl = T_IR_key_tbl;

    irKey = ir_key & 0xff;
#ifdef DEBUG_OSD
/*     debug_osd("IRKEY",irKey,13);*/
#endif


#ifdef IR_PHILIPS
	/* Philips IR */
	newKey = key_tbl[irKey];
#endif /* IR_PHILIPS */

#if (IR_NEC || IR_SANYO)
	/* NEC or SANYO */
        if (REMOTE_KEY > 0x20)
	  newKey = key_tbl[irKey - 0x20];
        else
	  newKey = key_tbl[irKey];
#endif /* IR_NEC || IR_SANYO */

    return (newKey);
}

int micro_is_power_key(int ir_key)
{
    int newKey;
#ifndef MASTER
    newKey = micro_convert_irkey(ir_key) | 0xff00;
    if (newKey == POWER_KEY)
	return (1);
#endif
    return (0);
}

#ifdef VCDROM
int micro_is_reset_key(int ir_key)
{
    int newKey;

    newKey = micro_convert_irkey(ir_key);
    if ((newKey == POWER_KEY) || (newKey == EJECT_KEY))
	return (1);

    return (0);
}
#endif

void microEngine(void)
{
    int tmpKey;
    static int oldTimer;
    extern int dsa_status;
#ifdef SGAME
    static unsigned int hltimer;
#endif

    if (REMOTE_VALID) {
        CLEAR_REMOTE;
	tmpKey =  micro_convert_irkey(codeIR);
        ObjectKey.FireKey = tmpKey;
#ifdef SGAME
   if (vcd_game_loaded == 1){
      if ((ObjectKey.FireKey == 0x68) || (ObjectKey.FireKey == 0x69))
       goto sgame_loop;
    }
#endif
        VFD_parseKey();
    }

#ifdef SGAME
sgame_loop:
   if (vcd_game_loaded == 1){
        if (ObjectKey.FireKey == 0x68) {
            av_game_flag ^=1;
          if (av_game_flag == 1)
               SET_VCD_V;
           else
            SET_GAME_V;
            VFD_parseKey(); 
            return;
        }
       if (ObjectKey.FireKey == 0x69) {
           CLEAR_H_L;
     /*    CLEAR_WE;*/
           hltimer = glbTimer;
           while(1) if((glbTimer - hltimer) > 10) break;
           SET_H_L;
           SET_WE;
           av_game_flag = 0;
           SET_GAME_V;
           VFD_parseKey();
           return;
         }
   }
#endif 


#if defined(DVD_VCD) && defined(SLAVE) /* vcd slave have no VFD to show */
    return;
#endif

#ifdef DSC
    if (DSC_status == DSC_STATUS_RUNNING) {
	if (glbTimer <= oldTimer+5  && 
	    (VFD_next_state == VFD_state_scan_key_0) && !VFDptr)
	  return;
	oldTimer = glbTimer;
	if (VFDptr && (VFD_next_state == VFD_state_scan_key_0)) {
	    VFD_next_state = VFD_state_refresh_0;
	}
    }
#endif

    VFD_next_state();
}

PRIVATE void VFD_objectReadByte(void)
{
    int i;
    for (i = 0; i < 8; i++) {
#ifdef VFD_RCV_MSB_FIRST
	/* Receive most significant bit first */
        ReceivedByte <<= 1;
        CLEAR_VFD_CLK;
        asm("nop");asm("nop");
        SET_VFD_CLK;

	ReceivedByte &= ~0x01;
        if (VFD_DATA_HIGH)
	  ReceivedByte |= 0x01;
#else
	/* Receive least significant bit first */
        ReceivedByte >>= 1;
        CLEAR_VFD_CLK;
        TRIGGER_HOST_PORT;

	ReceivedByte &= ~0x80;
        if (VFD_DATA_HIGH)
	  ReceivedByte |= 0x80;

        SET_VFD_CLK;
#endif /* VFD_RCV_MSB_FIRST */
    }
    TRISTATE_VFD_DATA ;
}

PRIVATE void VFD_objectSendByte(int SendByte)
{
    int i;
 
    for (i = 0;i <8;i++) {
#ifdef VFD_XMIT_MSB_FIRST
	/* Transmit most significant bit first */
        CLEAR_VFD_CLK;
        if (SendByte & 0x80) {
            SET_VFD_DATA;
        } else {
            CLEAR_VFD_DATA;
        }
        SET_VFD_CLK;
        SendByte <<= 1;
#else
	/* Transmit least significant bit first */
        CLEAR_VFD_CLK;
        if (SendByte & 0x01) {
            SET_VFD_DATA;
        } else {
            CLEAR_VFD_DATA;
        }
        SET_VFD_CLK;
        SendByte >>= 1;
#endif /* VFD_XMIT_MSB_FIRST */
    }
    TRISTATE_VFD_DATA;
}

/*
 * If the item is already in the list of things to update, then
 * don't do anything. Otherwise, put the item in the list.
 */
PRIVATE void VFD_push(state)  
{
    int i;

    for (i = 0; i < VFDptr; i++) 
      if (VFD_refresh_stack[i] == state) 
	return;

    VFD_refresh_stack[VFDptr++] = state;
}

PRIVATE void VFD_strobeSendByte(int data)
{
   VFD_STROBE_ACTIVE;
   VFD_objectSendByte(data);
   VFD_STROBE_INACTIVE;
}

void Waiting_powerkey_up()
{
   while (KeySearchLock)
     microEngine();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av电影在线播放| 久久超碰97中文字幕| 日韩国产在线一| 亚洲激情自拍视频| 国产乱码精品一区二区三区五月婷| 亚洲国产毛片aaaaa无费看| 亚洲精品在线免费播放| 成人免费一区二区三区视频| 日韩成人dvd| 欧美视频一区在线| 日本一区二区视频在线| 精品一区在线看| 欧美色欧美亚洲另类二区| 欧美国产一区在线| 国产丶欧美丶日本不卡视频| 日韩免费看网站| 欧美性xxxxx极品少妇| 亚洲国产视频一区| 99vv1com这只有精品| 国产精品日韩成人| 成人激情开心网| 亚洲精品日韩综合观看成人91| 国产成人精品亚洲日本在线桃色| 日韩精品最新网址| 老司机午夜精品| 中文字幕精品—区二区四季| 91麻豆免费看片| 一区二区三区免费| 欧美一卡二卡在线| 成人激情免费电影网址| 婷婷国产在线综合| 国产精品视频你懂的| 欧美理论在线播放| 国产自产视频一区二区三区| 粉嫩一区二区三区在线看| 亚洲男人天堂一区| 欧美精品一区二区三区一线天视频| 国产69精品久久99不卡| 国产精品久久精品日日| 91麻豆精品国产91久久久| 丰满亚洲少妇av| 日韩国产一区二| 一区二区三区不卡视频| 欧美精品一区二区不卡 | 欧美日韩在线观看一区二区| 精品亚洲aⅴ乱码一区二区三区| 国产精品高清亚洲| 久久精品无码一区二区三区| 在线免费观看成人短视频| 国产美女在线观看一区| 美国十次综合导航| 一区二区三区国产精华| 午夜精品123| 欧美精品 日韩| 91麻豆免费看片| 不卡欧美aaaaa| 日本不卡免费在线视频| 一区二区三区在线视频观看58| 国产精品视频看| 国产精品美女www爽爽爽| 国产网站一区二区| 国产亚洲精品福利| 亚洲国产高清aⅴ视频| 精品福利一二区| 日本最新不卡在线| 毛片av一区二区三区| 日韩电影在线免费观看| 在线视频亚洲一区| 欧美丝袜丝交足nylons| 日韩一级片网站| 亚洲夂夂婷婷色拍ww47| 日本欧洲一区二区| 丝袜美腿亚洲一区二区图片| 亚洲成人一区在线| 亚洲成人av电影在线| 日本欧美一区二区| 久久国产精品第一页| 国产在线一区二区综合免费视频| 视频一区二区三区入口| 老司机一区二区| 色成年激情久久综合| 91啪在线观看| 欧美三级电影网站| 日韩欧美国产精品| 久久国产尿小便嘘嘘尿| 精品第一国产综合精品aⅴ| 久久精品在这里| 成熟亚洲日本毛茸茸凸凹| 久久久久久久综合色一本| 欧美国产成人精品| 色综合中文字幕| 国产精品蜜臀在线观看| 亚洲成人激情自拍| 蜜桃久久久久久| 国产精品一区二区黑丝| 中文字幕五月欧美| 舔着乳尖日韩一区| 成年人网站91| 久久久久国产精品免费免费搜索| 亚洲欧洲av另类| 国产真实乱偷精品视频免| 日韩欧美在线观看一区二区三区| 国产精品网站在线播放| 日韩和欧美一区二区| 欧美在线免费视屏| 国产亚洲综合在线| 韩国中文字幕2020精品| 欧美日韩的一区二区| 一区二区三区在线免费视频 | 日韩欧美一区二区视频| 一级中文字幕一区二区| 欧美系列日韩一区| 亚洲国产精品久久一线不卡| 欧美日韩专区在线| 亚洲成人一区在线| 日韩精品一区二区三区视频播放| 丝袜国产日韩另类美女| 色婷婷狠狠综合| 亚洲人成电影网站色mp4| 在线视频综合导航| 天天av天天翘天天综合网| 91精品国产乱| 国产成人精品三级麻豆| 一区二区三区精品久久久| 精品美女在线观看| 精品亚洲欧美一区| 美女性感视频久久| 久久久影院官网| 91女人视频在线观看| 亚洲综合一区二区三区| 欧美一区二区三区免费在线看| 精品一区二区免费| 最好看的中文字幕久久| 91精品国产麻豆| 成人高清av在线| 日韩专区欧美专区| 久久久亚洲精品石原莉奈| 色综合av在线| 美女一区二区在线观看| 日韩理论电影院| 91精品在线一区二区| 91丝袜美女网| av高清不卡在线| 久久国产剧场电影| 亚洲黄色免费网站| 亚洲欧洲精品天堂一级| 欧美肥妇free| 欧美日本一区二区在线观看| 国产精品一区二区果冻传媒| 麻豆精品在线看| 日韩精品一二三四| 亚洲超碰97人人做人人爱| 亚洲一级不卡视频| 亚洲美女免费视频| 亚洲综合免费观看高清完整版在线| 精品理论电影在线| 色狠狠综合天天综合综合| 日本高清不卡在线观看| 99免费精品视频| 欧美自拍偷拍午夜视频| 欧美美女网站色| 韩国精品久久久| 国产精品伊人色| 91麻豆国产在线观看| 在线中文字幕一区| 欧美一二三区在线观看| 日韩免费观看2025年上映的电影| 欧美老肥妇做.爰bbww视频| 欧美日韩精品一区二区在线播放| 97久久精品人人澡人人爽| 午夜免费久久看| 日韩精品欧美成人高清一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 在线电影国产精品| 日韩午夜在线观看视频| 久久久久88色偷偷免费| 国产亚洲一区二区三区在线观看| 欧美国产精品一区二区| 日韩伦理免费电影| 午夜精品久久久久久久99水蜜桃| 亚洲丰满少妇videoshd| 久久精品亚洲乱码伦伦中文| 在线播放中文一区| 日韩欧美色综合网站| 国产亲近乱来精品视频| 亚洲视频在线一区二区| 加勒比av一区二区| 成人视屏免费看| 精品美女一区二区三区| 亚洲高清免费观看高清完整版在线观看| 午夜激情一区二区| 99久久久精品| 国产亚洲欧美日韩在线一区| 一区二区三区在线免费播放| 九色综合国产一区二区三区| 欧美色成人综合| 国产精品九色蝌蚪自拍| 国产一区二区免费在线| 亚洲www啪成人一区二区麻豆| 奇米精品一区二区三区在线观看一 |