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

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

?? inter.c

?? 一款車載DVD的車機源程序(正在生成中的哦)
?? C
?? 第 1 頁 / 共 2 頁
字號:

		SetBit(Receive_ir_flag,High_45ms_25ms_flag);
		SetBit(Receive_ir_flag,Low_9ms_flag);
		SetBit(Receive_ir_flag,High_15ms_06ms_flag);
		ClrBit(Receive_ir_flag,Last_low_06ms_flag);
		ClrBit(Receive_ir_flag,Back_low_06ms_flag);
		IR_store_code();
		}
}
//-----------------------------------
static void Last_low_06ms(void)
{
	if(Store_time_H > 0x04*2 || Store_time_H < 0x01*2)
		{
		Action_Error();
		Code_cont = 0;
		return;
		}
	if((IR_Code_buff[0] + IR_Code_buff[1] == 0xff) && (IR_Code_buff[2] + IR_Code_buff[3] == 0xff))
		{
		IR_Code_number = IR_Code_buff[2];
		SetBit(Receive_ir_flag,No_rece_first_backupcode_flag);
		switch(IR_Code_number)
			{
			case Remote_power:
			case Remote_menu:
			case Remote_open:
			case Remote_display:
			case Remote_l_r:
			case Remote_title_pbc:
			case Remote_setup:
			case Remote_1:
			case Remote_2:
			case Remote_3:
			case Remote_4:
			case Remote_5:
			case Remote_6:
			case Remote_7:
			case Remote_8:
			case Remote_9:
			case Remote_0:
			case Remote_10_adding:
			case Remote_up:
			case Remote_down:
			case Remote_left:
			case Remote_right:
			case Remote_enter:
			case Remote_mode:
			case Remote_osd:
			case Remote_mute:
			case Remote_search:
			case Remote_repeat:
			case Remote_jump_back:
			case Remote_jump_front:
			case Remote_adding:
			case Remote_dec:
			case Remote_function:
			case Remote_stop:
			case Remote_play_pause:
				ClrBit(System_flag4,Check_long_IR_flag);
				SetBit(System_flag,IR_flag);
				break;
			case Remote_time:
			case Remote_slow_back:
			case Remote_fast_front:
			case Remote_close_panel:
			case Remote_open_panel:
				SetBit(System_flag4,Check_long_IR_flag);
				ClrBit(System_flag,IR_flag);
				IR_delay_110ms = 11;
				break;
			}
		Action_Error();
		}
}
//-----------------------------------
static void Back_low_06ms(void)
{
	Code_cont++;
	if((IR_Code_buff[0] + IR_Code_buff[1] == 0xff) && (IR_Code_buff[2] + IR_Code_buff[3] == 0xff))
		{
		IR_Code_number = IR_Code_buff[2];
		if(!ValBit(Receive_ir_flag,No_rece_first_backupcode_flag))
			{
			if(IR_Code_number == Remote_adding || IR_Code_number == Remote_dec)
				SetBit(System_flag,IR_flag);
			else
				Receive_ir_flag = 0;
			}
		else
			ClrBit(Receive_ir_flag,No_rece_first_backupcode_flag);
		}
	Action_Error();
}
//-----------------------------------
static void Action_Error(void)
{
	ClrBit(Receive_ir_flag,Low_9ms_flag);
	ClrBit(Receive_ir_flag,High_45ms_25ms_flag);
	ClrBit(Receive_ir_flag,Low_06ms_flag);
	ClrBit(Receive_ir_flag,High_15ms_06ms_flag);
	ClrBit(Receive_ir_flag,Last_low_06ms_flag);
	ClrBit(Receive_ir_flag,Back_low_06ms_flag);
	//Receive_ir_flag = 0x00;
	Code_cnt1 = 0x00;
	Code_cnt2 = 0x00;
}
//------------------------------------
static void Back_high_25ms(void)
{
	if((Store_time_H >0x0c*2) || (Store_time_H < 0x06*2))
		{
		Action_Error();
		Code_cont = 0;
		ClrBit(Receive_ir_flag,No_rece_first_backupcode_flag);
		return;
		}
	else
		{
		SetBit(Receive_ir_flag,Low_9ms_flag);
		SetBit(Receive_ir_flag,High_45ms_25ms_flag);
		SetBit(Receive_ir_flag,Low_06ms_flag);
		SetBit(Receive_ir_flag,High_15ms_06ms_flag);
		SetBit(Receive_ir_flag,Last_low_06ms_flag);
		ClrBit(Receive_ir_flag,Back_low_06ms_flag);
		}
}
//------------------------------------
static void IR_store_code(void)
{
	unsigned char Code_num;
	Code_num = 0x00;
	if(Store_time_H >= 0x04*2)
	{
		Code_num = 0x01;
	}
//	Code_buff[Code_cnt1] = Code_buff[Code_cnt1] | Code_num;
	asm
	{
		Ld	A, Code_cnt1
		Ld	X, A
		Ld	A, (IR_Code_buff,X)
		Sla	A			;C<-A<-0
		Or	A, Code_num
		Ld	(IR_Code_buff,X), A
	}
	if(++Code_cnt2 >= 0x08)
		{
		if(++Code_cnt1 >= 0x04)
			{
			SetBit(Receive_ir_flag,0);
			SetBit(Receive_ir_flag,1);
			SetBit(Receive_ir_flag,2);
			SetBit(Receive_ir_flag,3);
			}
		else
			Code_cnt2 = 0x00;
		}
}

void Check_long_IR_key(void)
{
	if(!ValBit(System_flag4,Check_long_IR_flag) || IR_delay_110ms != 0)
		return;
	if(Code_cont >= 7)	/*The ir key is pressing on but the time is out 1s*/
		{
		switch(IR_Code_number)
			{
			case Remote_time:	IR_Code_number = Long_Remote_time; break;	
			case Remote_slow_back: IR_Code_number = Long_Remote_slow_back; break;
			case Remote_fast_front: IR_Code_number = Long_Remote_fast_front; break;
			case Remote_close_panel: IR_Code_number = Long_Remote_close_panel; break;
			case Remote_open_panel: IR_Code_number = Long_Remote_open_panel; break;
			}
		ClrBit(System_flag4,Check_long_IR_flag);
		Code_cont = 0x00;
		Action_Error();
		SetBit(System_flag,IR_flag);
		return;
		}
	if(IR_low_level_time < 2)	/*IR key had not press on,now is free*/
		{
		ClrBit(System_flag4,Check_long_IR_flag);
		Code_cont = 0x00;
		SetBit(System_flag,IR_flag);
		if(Code_cont >= 7)	
			{
			switch(IR_Code_number)
				{
				case Remote_slow_back: IR_Code_number = Long_Remote_slow_back; break;
				case Remote_fast_front: IR_Code_number = Long_Remote_fast_front; break;
				case Remote_close_panel: IR_Code_number = Long_Remote_close_panel; break;
				case Remote_open_panel: IR_Code_number = Long_Remote_open_panel; break;
				}
			}
		}
	else
		{
		SetBit(System_flag4,Check_long_IR_flag);
		IR_delay_110ms = 11;
		}
	Action_Error();
	IR_low_level_time = 0x00;	
}

/***************************************************************
Function:Send the command to the dvd player
***************************************************************/
static Send_command_to_dvd_player(void)
{
	unsigned char transmittal_data;
	if(!ValBit(Send_dvd_command_flag,First_pull_down_flag))
		{
		ClrBit(PF_DR,DVD_IR);
		SetBit(Send_dvd_command_flag,First_pull_down_flag);
		Time_cnt = 17;	/*9ms = 18 * 500us*/
		return;
		}
	
	if(!ValBit(Send_dvd_command_flag,Finish_9ms_pull_high_flag))
		{
		if(Time_cnt != 0)
			Time_cnt--;
		else
			{
			SetBit(PF_DR,DVD_IR);
			SetBit(Send_dvd_command_flag,Finish_9ms_pull_high_flag);
			Time_cnt = 8;	/*4.5ms = 9 * 500us*/
			}
		return;
		}
	
	if(!ValBit(Send_dvd_command_flag,Finish_45ms_pull_low_flag))
		{
		if(Time_cnt != 0)
			Time_cnt--;
		else
			{
			ClrBit(PF_DR,DVD_IR);
			SetBit(Send_dvd_command_flag,Finish_45ms_pull_low_flag);
			}
		return;
		}
	
	if(!ValBit(Send_dvd_command_flag,Low_06ms_pull_high_flag))
		{
		SetBit(PF_DR,DVD_IR);
		SetBit(Send_dvd_command_flag,Low_06ms_pull_high_flag);
		switch(Send_command_byte_cnt)
			{
			case 0:	transmittal_data = DVD_consumer_code_1;break;
			case 1:	transmittal_data = DVD_consumer_code_2;break;
			case 2:	transmittal_data = DVD_command;break;
			case 3:	transmittal_data = 0xff - DVD_command;break;
			}
		if(ValBit(transmittal_data,(7 - Send_command_bit_cnt)))	/*First send the high bit*/
			Time_cnt = 2;
		else
			Time_cnt = 0;
		if(Send_command_byte_cnt >= 4)	/*Finish send 4 bytes*/
			{
			Send_command_byte_cnt = 0;
			Send_command_bit_cnt = 0;
			Send_dvd_command_flag = 0;
			ClrBit(System_flag,Send_command_to_dvd_flag);
			}
		return;
		}
	
	if(!ValBit(Send_dvd_command_flag,Send_one_bit_flag))
		{
		if(Time_cnt !=0)
			Time_cnt--;
		else
			{
			ClrBit(PF_DR,DVD_IR);
			if(++Send_command_bit_cnt >= 8)	/*Finish send 8 bits*/
				{
				asm	nop;
				Send_command_byte_cnt++;
				Send_command_bit_cnt = 0;
				}
			ClrBit(Send_dvd_command_flag,Low_06ms_pull_high_flag);
			}
			return;
		}
	
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : CdcTimer
Input   : Output Compare 2
Output  : 
Description 
        - Timer Int Routine to handle Tx & Rx 
          of SIN-HEUNG CD Changer Output Compare 2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/  
static void CdcTimer (void)
{
  asm
  			{
     		ld      a,TIM1_ACH
     		ld      TmpOch,a
     		ld      a,TIM1_ACL
     		add     a,#0xf0
     		ld      TmpOcl,a
     		ld      a,TmpOch
     		adc     a,#0x01
     		ld      TIM1_OC2H,a
     		ld      a,TmpOcl
     		ld      TIM1_OC2L,a
  			}
  #if 0
/*---------For CDC Rx Routine----------*/
  if (ValBit(CdcFlag,CdcRx))
  {   CrxTimer++;
//     if (CrxTimer > 7 )    CrxTimer = 8;    
     if (CrxTimer > 7 )     
     {
        CrxTimer = 8;
        ClrBit(CdcFlag,CdcRx);
     }     
  }

/*-------------CDC Tx Routine----------*/

  if (ValBit(CdcFlag,RdyCtx))
  {
     switch (CtxState)
     {  
        case CT_LOW:
           BitClr(PinCDC_Data);   /* make low for 500 usec */ 
           CtxState = CT_HIGH;
           break;
        case CT_HIGH:
           BitSet(PinCDC_Data);   /* make high */
           if ((ctbyte == 2) && (ctbit == 0))
           {                      /* finished to the last bit ! */
              PIN_CdcIn();        /* Change to Input */
              ClrBit(CdcFlag, RdyCtx);
              ClrBit(CdcFlag, CdcTx);
              break;
           }
           
           CtxTimer = 3; 
           CtxState = CT_LOW;
           if (ValBit(CtxBuffer[ctbyte],ctbit)) CtxState = CT_WAIT;
           ctbit++;
           if (ctbit == 8)
           {
              ctbit = 0;
              ctbyte++;
           }
           break;
        case CT_WAIT:
           CtxTimer--;
           if (CtxTimer == 0)  CtxState = CT_LOW;
           break;
     }
  }
  #endif
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : CdcTimer1
Input   :
Output  : 
Description 
        - Timer Int Routine to handle Tx & Rx 
          of SANYO CD Changer
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/  
static void CdcTimer1 (void)
{
	asm
  		{
     		ld      a,TIM1_ACH
     		ld      TmpOch,a
     		ld      a,TIM1_ACL
     		add     a,#0x50
     		ld      TmpOcl,a
     		ld      a,TmpOch
     		adc     a,#0x02
     		ld      TIM1_OC2H,a
     		ld      a,TmpOcl
     		ld      TIM1_OC2L,a
  		}
/*---------For CDC1 Rx Routine----------*/
	#if 1
	if (Cd1Tout != 0)  
  		Cd1Tout--;
  	if (Cd1Tout == 0)  
  		ClrBit(CdcFlag,CdcRx);	//Time full out then finish receive the data from the changer
	if (ValBit(CdcFlag,CdcRx))	//Now in receive mode
  		{
     		if (!ValBit(CdcFlag1,SmpReq))  
     			return;
     		CrxTimer--;
     		if (CrxTimer == 0)
     			{  
     			ClrBit(CdcFlag1,SmpReq);
     			CrxBuffer[crbyte] = CrxBuffer[crbyte] << 1;
       		CrxBuffer[crbyte] &= 0xFE;
       		if (Check_CDC_BUS_low)  
       			CrxBuffer[crbyte] |= 0x01;
       		crxcntr++;
       		crbit++;
       		if (crbit == 8)
       			{
          			crbit = 0;
           			crbyte++;
           			if ((crbyte == 1) && (crbit == 0))
           				{
              			switch (CrxBuffer[0] & 0x0F)
              				{
                 				case CS_CDC:  
                 					Crxbits = 64;
                    				break;
                 				case CS_DSC:  
                 					Crxbits = 48;
                    				break;
                 				case CS_TOC:  
                 					Crxbits = 52;
                    				break;
                 				case CS_ERR:  
                 					Crxbits = 32;
                    				break;
                 				case CS_MGZ:  
                 					Crxbits = 64;
                    				break;
                 				case CS_CON:  
                 					Crxbits = 12;
                    				break;
                 				default:
                    				ClrBit(CdcFlag,CdcRx);
                    				return;             /* error ! */
                    
              				}
           				}
        		}
        		if (crxcntr == Crxbits)         /* all received ! */
        			{
           			SetBit(CdcFlag,RdyCrx);	//Finish receive the data from the changer
           			ClrBit(CdcFlag,CdcRx);	//Exit the receive mode
        			}
     		}
  }
#endif

/*-------------CDC1 Tx Routine----------*/

  if (ValBit(CdcFlag,CdcRx))  return;	//In receive data mode then return
  if (ValBit(CdcFlag,RdyCtx))		//Now the mode is send the data to the changer
  {
     switch (CtxState)
     {
        case CT_LOW:
           Make_CDC_BUS_low;	/* make low for 600 usec */
           CtxTimer = 1;
           if (ValBit(CtxBuffer[ctbyte],7-ctbit))  CtxTimer = 3;
           CtxState = CT_HIGH;
           break;
        case CT_HIGH:
           CtxTimer--;
           if (CtxTimer != 0)  break;
           Make_CDC_BUS_high;		/* make high */
           CtxTimer = 3;
           if (ValBit(CtxBuffer[ctbyte],7-ctbit))  CtxTimer = 1;
           CtxState = CT_WAIT;
           break;
        case CT_WAIT:
           CtxTimer--;
           if (CtxTimer != 0)  break;
           ctxcntr--;
           if (ctxcntr == 0)
           {                      /* finished to the last bit ! */
              PIN_CdcIn();        /* Change to Input */
              ClrBit(CdcFlag, CdcTx);
              CtxTimer = 30;      /* 15 msec = 25 * 0.6 */
              CtxState = CT_IDLE;
              break;
           }
           ctbit++;
           if (ctbit == 8)
           {
              ctbit = 0;
              ctbyte++;
           }
           CtxState = CT_LOW;
           break;
        case CT_IDLE:
           CtxTimer--;
           if (CtxTimer == 0)  ClrBit(CdcFlag, RdyCtx);
           break;
     }
  }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新国产精品久久精品| 一本久道中文字幕精品亚洲嫩| 欧美三级日本三级少妇99| 亚洲精品高清在线| 欧美视频三区在线播放| 五月激情综合网| 欧美tickling网站挠脚心| 国产麻豆视频一区二区| 国产精品国产精品国产专区不蜜| 色狠狠综合天天综合综合| 午夜电影网一区| 精品福利二区三区| www.欧美.com| 天堂成人国产精品一区| 欧美xxxxxxxxx| 97国产一区二区| 日韩av一区二区三区| 久久婷婷色综合| 色综合天天性综合| 美女一区二区久久| 国产精品国产自产拍高清av| 欧美视频完全免费看| 韩国av一区二区| 亚洲女与黑人做爰| 日韩美一区二区三区| 成人av动漫网站| 日韩高清在线观看| **网站欧美大片在线观看| 制服丝袜中文字幕亚洲| 国产精品1区2区3区| 亚洲一区在线看| 久久久高清一区二区三区| 欧美综合久久久| 国产成人免费视频网站高清观看视频| 亚洲乱码国产乱码精品精98午夜 | 成人免费观看视频| 亚洲午夜一区二区| 日本一区二区三区视频视频| 欧美日韩一级视频| 成人激情图片网| 精品在线亚洲视频| 无码av中文一区二区三区桃花岛| 国产欧美日韩在线观看| 日韩一区二区在线看| 91成人在线观看喷潮| 国产精一品亚洲二区在线视频| 亚洲成人久久影院| 中文字幕一区av| 精品国产精品一区二区夜夜嗨| 在线观看日韩国产| 播五月开心婷婷综合| 国产在线精品视频| 美女爽到高潮91| 亚洲国产一区二区三区| 国产精品久久久久婷婷二区次| 精品久久久久99| 欧美一区二区三区爱爱| 欧美午夜电影在线播放| av电影在线观看一区| 国产宾馆实践打屁股91| 久久国产精品99精品国产 | 免费在线看成人av| 亚洲一区二区av在线| 中文字幕字幕中文在线中不卡视频| 日韩免费视频线观看| 51精品秘密在线观看| 欧美性高清videossexo| 色婷婷av久久久久久久| av一区二区三区在线| 高清在线成人网| 国产精品99久| 成人黄色在线看| 99在线视频精品| 99久久精品一区| 91麻豆视频网站| 91久久国产综合久久| 色狠狠色狠狠综合| 在线观看三级视频欧美| 欧美日韩黄色影视| 7777精品伊人久久久大香线蕉完整版| 欧美日韩夫妻久久| 日韩一区二区三区免费看| 欧美一区二区观看视频| 欧美成人综合网站| 国产欧美日韩综合精品一区二区| 欧美经典一区二区| 最新久久zyz资源站| 一区二区三区色| 亚洲成人在线网站| 乱一区二区av| 成人午夜视频免费看| 99久久er热在这里只有精品66| 91黄色免费网站| 日韩亚洲欧美一区二区三区| 久久久精品国产99久久精品芒果| 国产精品女主播在线观看| 综合久久一区二区三区| 亚洲综合免费观看高清在线观看| 亚洲综合偷拍欧美一区色| 亚洲国产精品久久艾草纯爱| 青青草国产精品亚洲专区无| 精品无人码麻豆乱码1区2区 | 国产午夜亚洲精品午夜鲁丝片| 国产偷国产偷精品高清尤物| 亚洲人妖av一区二区| 亚州成人在线电影| 国产精品自拍在线| 日本韩国欧美在线| 欧美一区二区三区在线观看| 久久精品日韩一区二区三区| 一区二区三区美女| 久久草av在线| 91久久免费观看| 久久―日本道色综合久久| 一区二区三区影院| 国产一区二区在线看| 91久久精品一区二区二区| 久久女同性恋中文字幕| 亚洲精品免费播放| 精品一区二区在线看| 9i在线看片成人免费| 日韩天堂在线观看| 亚洲裸体在线观看| 极品销魂美女一区二区三区| 91看片淫黄大片一级在线观看| 欧美一区二区三区四区久久| 中文字幕一区二区三区不卡在线| 日韩激情一区二区| 99久久综合国产精品| 欧美大片一区二区| 亚洲精品国产一区二区精华液| 极品瑜伽女神91| 欧美日韩成人在线| 亚洲情趣在线观看| 国产一区二区毛片| 在线不卡一区二区| 亚洲男人的天堂在线aⅴ视频| 精品一区二区三区在线观看国产| 在线一区二区视频| 日韩一区在线播放| 国产成人av福利| 亚洲精品一区二区三区影院| 舔着乳尖日韩一区| 91黄色免费看| 中文字幕一区二区三区不卡| 国产一区啦啦啦在线观看| 欧美日韩高清影院| 亚洲一区二区免费视频| 91色在线porny| 久久久国产精华| 国产一区二区中文字幕| 日韩情涩欧美日韩视频| 亚洲夂夂婷婷色拍ww47| 99久久精品国产麻豆演员表| 国产亚洲短视频| 韩国女主播成人在线| 日韩一区二区电影在线| 日韩激情一二三区| 91精品国产综合久久精品麻豆| 亚洲国产一区二区视频| 欧美视频三区在线播放| 一卡二卡欧美日韩| 色哟哟在线观看一区二区三区| 国产精品萝li| 99精品欧美一区二区蜜桃免费| 国产精品久久久久久妇女6080| 成人国产亚洲欧美成人综合网| 欧美韩国日本不卡| av在线不卡电影| 亚洲精品网站在线观看| 在线日韩av片| 亚洲1区2区3区4区| 欧美一区二区三区爱爱| 久久国产精品99久久久久久老狼| 精品国产伦一区二区三区观看体验 | 久久久av毛片精品| 成人激情小说网站| 亚洲免费av观看| 欧美日韩在线不卡| 七七婷婷婷婷精品国产| 日韩免费观看2025年上映的电影| 九九**精品视频免费播放| 久久久久久久综合日本| 成人毛片视频在线观看| 亚洲欧美综合在线精品| 色综合中文字幕国产| 一区二区三区中文字幕| 欧美揉bbbbb揉bbbbb| 久久er99精品| 国产精品美日韩| 欧美日韩亚洲综合一区| 精东粉嫩av免费一区二区三区| 国产欧美日韩激情| 欧美亚洲另类激情小说| 麻豆一区二区三| 亚洲欧洲日韩av| 欧美高清激情brazzers| 国产精品99久久久| 五月婷婷色综合| 国产亚洲一本大道中文在线|