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

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

?? cdc.c

?? 一款車載DVD的車機源程序(正在生成中的哦)
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************
Project  :  Car two ting dvd System
Compiler :  ST7 HiCross C (HiWARE)
Module   :  autos.c 
Version  :  V 1.0
Created  :  24 11, 2005
Author   :  tomi / SA
Description
         -  CD Changer Control Procedure of the car two ting dvd System.  
Modified
		 - tomi
***************************************************************************/
#include "CDC.h"
#include "Inter.h"
#include "Libr.h"
#include "St72321.h"
#include "IOport.h"
#include "Sys_config.h"
#include "System_operation.h"


/**************************************************************************
        Definition of Constants & Public Variables
***************************************************************************/

#define DSCMAX    10

unsigned char CdcCode=1;	//Force it is the Sanyo  10 Disc Model
unsigned char CdcCmd;
unsigned char CdcFlag;
unsigned char CdcFlag1;
unsigned char CdcStatus;
unsigned char CdcStatus1;
unsigned char CdcErr;
unsigned char CurDisc;
unsigned int CdcDiscs;
unsigned char CdcTrack;
unsigned char CdcState;
unsigned char CdcMin;
unsigned char CdcSec;
unsigned char DiscNo;
unsigned char TxCntr;
static unsigned char iCdc;	//From this register then you can find out how many bits data send to the changer
static unsigned char jCdc;
static unsigned char Err4Cnt;

static unsigned char StaMusic;
static unsigned char EndMusic;


unsigned char Opt2Flag;
unsigned char Fpn_State;
unsigned char KeyFlag1;
unsigned char CurMode;
unsigned char PwrFlag;

static void CdcPlay (void);
static void CdcNoMgz (void);
static void CdcError (void);
static void CdcNoDsk (void);
static void CdcNoCnt (void);

static void Cdc1Idle (void);
static void Cdc1Try (void);
static void Cdc1Try1 (void);
static void Cdc1Stop (void);


static char Cdc_MegazControl;


void PIN_CdcOut(void);
void PIN_CdcIn(void);


        
//#define CDC_MEGAZ_VALUE    0    
//#define CDC_MEGAZ_CTRL     1
//#define CDC_NODSC_VALUE    2    
//#define CDC_NODSC_CTRL     3
//#define CDC_MEGAZ_CURVAL   ValBit(CrxBuffer[0],CDC_MEGAZ_VALUE)  
//#define CDC_MEGAZ_PREVAL   ValBit(Cdc_MegazControl,CDC_MEGAZ_VALUE)
//#define CDC_NODSC_CURVAL   GetCdcStat1(NoDsk1)
//#define CDC_NODSC_PREVAL   ValBit(Cdc_MegazControl,CDC_NODSC_VALUE)     
/*--------------------------------------------------------------------------
Routine : CdcPlay
Input   : 
Output  : 
Description 
        - 'Play after Stop' Handling Routine of CD Changer
--------------------------------------------------------------------------*/ 
static void CdcPlay (void)
{
	if (GetCdcFlg(ReqCtx))
  		{
     		//AUD_FastMuteOff();
     		CdcState = CD_IDLE;
     		return;
  		}
  	if (CdcDelay != 0)  return;
  	if (GetCdcStat1(DscChn)) return; 
  
  	CdcState = CD_IDLE;
  	if (GetCdcStat(fplay))
  		{  
    		if (BitVal(PinAUD_TelDet))
         	//AUD_FastMuteOff();
     		return;
  		}
	if (GetCdcStat1(NoMgzn) || GetCdcStat1(NoDsk) || (CdcErr != 0))
  		{
     		if (BitVal(PinAUD_TelDet))  //AUD_FastMuteOff();
     		return;
  		}
     	CdcCmd = C_PLAY;
     	SetCdcFlg(ReqCtx);
}

/*--------------------------------------------------------------------------
Routine : CdcNoMgz
Input   : 
Output  : 
Description 
        - No Magazine Handling Routine of CD Changer
--------------------------------------------------------------------------*/ 
static void CdcNoMgz (void)
{
  	if (CurMode != CDCMOD)
  		{                                     /* Mode Changed ? */ 
     		CdcState = CD_IDLE;
     		return;
  		}
  	if (!GetCdcStat1(NoMgzn))
  		{                                       /* Magazine Inserted ? */
     		ClrCdcStat(fplay);                 /* Clear The Remaining Flag */
     		CdcCmd = C_PLAY;                   
     		SetCdcFlg(ReqCtx);
     		CdcState = CD_IDLE;
     		return;
  		}  
  	if (CdcDelay != 0)  return;
}

/*--------------------------------------------------------------------------
Routine : CdcError
Input   : 
Output  : 
Description 
        - Error Handling Routine of CD Changer
--------------------------------------------------------------------------*/ 
static void CdcError (void)
{
  	if (CurMode != CDCMOD)
  		{                                     /* Mode Changed ? */ 
     		CdcState = CD_IDLE;
     		return;
  		}
  	if (GetCdcStat1(NoMgzn))
  		{
     		CdcDelay = 500;
     		CdcState = CD_NOMGZ;         
     		return;
  		}  
  	if (CdcDelay != 0)  return;

  	if (!GetCdcFlg1(Cdc1))
  		{ 
     		if ((CdcErr == 4) && (Err4Cnt < (DiscNo-1)))
     			{
        		Err4Cnt++;
        		SetCdcStat1(Err4);     
        		CdcCmd = C_DISCUP;
        		SetCdcFlg(ReqCtx);     
        		CdcState = CD_IDLE;
        		return;
     			}
  		}  
  	Err4Cnt = 0;   
}

/*--------------------------------------------------------------------------
Routine : CdcNoDsk
Input   : 
Output  : 
Description 
        - No Disk Handling Routine of CD Changer
--------------------------------------------------------------------------*/ 
static void CdcNoDsk (void)
{
	if (CurMode != CDCMOD)
  		{                                     /* Mode Changed ? */ 
     		CdcState = CD_IDLE;
     		return;
  		}
  	if (GetCdcStat1(NoMgzn))
  		{
     		CdcDelay = 500;
     		CdcState = CD_NOMGZ;         
     		return;
  		}  
  	if (CdcDelay != 0)  return;
}

/*--------------------------------------------------------------------------
Routine : CdcNoCnt
Input   : 
Output  : 
Description 
        - No Connection Handling Routine of CD Changer
--------------------------------------------------------------------------*/ 
static void CdcNoCnt (void)
{
  	if ((CurMode != CDCMOD) || !GetCdcFlg(NoCdc))
  		{                                     /* Mode Changed ? */ 
     		CdcState = CD_IDLE;
     		return;
  		}
  	if (CdcDelay != 0)  return;
}
/*--------------------------------------------------------------------------
Routine : WriteCdc1
Input   : 
Output  :         
Description 
        - Write to SANYO CD Changer Control Procedure
--------------------------------------------------------------------------*/ 
void WriteCdc1 (void)
{
  switch (CdcState)
  {
     case CD_IDLE:   Cdc1Idle();
        break;
     case CD_PLAY:   CdcPlay();
        break;
     case CD_TRY:    Cdc1Try();
        break;
     case CD_TRY1:   Cdc1Try1();
        break;
     case CD_STOP:   Cdc1Stop();
        break;
     case CD_NOMGZ:  CdcNoMgz();
        break;
     case CD_ERROR:  CdcError();
        break;        
     case CD_NODSK:  CdcNoDsk();
        break;
     case CD_NOCNT:  CdcNoCnt();
        break;        
     default:        CdcState = CD_IDLE;
        break;
  }
}

/*--------------------------------------------------------------------------
Routine : Cdc1Idle
Input   : 
Output  : 
Description 
        - Idle State Handling Routine of CD Changer
--------------------------------------------------------------------------*/ 
static void Cdc1Idle (void)
{
	if (!GetCdcFlg(ReqCtx))
  		{
     		/* Send Connection Check Command Every 2 Sec if there was no recei data*/
     		if (Cd1Delay == 0)           /* during pause and disc change no */
     			{
        		CdcCmd = C_CHECK; 
        		SetCdcFlg(ReqCtx);
        		Cd1Delay = 70;    /*70=1sec*/
     			}        
     		if (System_mode == CDC_mode)
     			{    
        		if (GetCdcStat(fplay)) 
        			asm	nop;//AUD_FastMuteOff(); //mute control only donghae project
        		if (GetCdcStat1(NoMgzn))
        			{
           			CdcDelay = 500;
           			CdcState = CD_NOMGZ;
           			return;
        			}
        		if((CdcErr != 0))
        			{
           			CdcDelay = 1000;
           			CdcState = CD_ERROR;
           			return;
        			}
       		if(GetCdcStat1(NoDsk))
        			{
           			CdcDelay = 500;
           			CdcState = CD_NODSK;         
        			}
       	 	if(GetCdcFlg(NoCdc))
        			{
           			CdcDelay = 500;
           			CdcState = CD_NOCNT;
        			} 
     			}
    		return;            
  	}

  	if (GetCdcFlg(RdyCtx))  return;
  	if (Cd1Tout != 0)  return;
  	if (GetCdcStat1(NoMgzn))
  		{
     		if ((CdcCmd != C_STOP) && (CdcCmd != C_PLAY))
     			{
        		ClrCdcFlg(ReqCtx);
        		return;
     			}
  		}
  	if (GetCdcFlg(CdcRx))  return;	//In receive mode then return
  	SetCdcFlg(CdcTx);	//Chang to send data mode
  	ClrCdcFlg(ReqCtx);
  	CtxBuffer[0] = (CdcCode << 4) + 0x01; /* Write Command */
  	CtxBuffer[2] = 0;
  	CtxBuffer[3] = 0;
  	switch (CdcCmd)
  		{
     		case C_CHECK:     
        		CtxBuffer[0] = (CdcCode << 4) + 0x08;
        		SetCdcFlg1(ConChk);
        		TxCntr = 10;                    /* try 10 times */
        		CdcDelay = 2;                   /* Some Delay */
        		CdcState = CD_TRY; 
        		break;
     		case C_BACKUP:
        		CtxBuffer[0] = (CdcCode << 4) + 0x09;
        		SetCdcFlg1(BckUp);
        		TxCntr = 1;                    /* try 10 times */
        		CdcDelay = 2;                   /* Some Delay */
        		CdcState = CD_TRY1; 
        		break;
     		case C_STOP:     
        		CtxBuffer[1] = 0x12;            /* stop request */
        		CdcDelay = 50;                  /* Some Delay */        
        		CdcState = CD_STOP;
        		break;
     		case C_REPLAY:      
        		CtxBuffer[1] = 0x10;
        		CtxBuffer[2] = 0x10;            /* play request */ 
        		break;
     		case C_SEAROFF:
        		CtxBuffer[1] = 0x10;
        		CtxBuffer[2] = 0x10;            /* play request */
        		break;
     		case C_PLAY:
        		if (GetCdcFlg(CdcStop))
        			{
           			CurDisc = 0;                 /* for '--' display */
           			ClrCdcFlg(CdcStop);
        			}
        		CtxBuffer[1] = 0x10;
        		CtxBuffer[2] = 0x10;            /* play request */
        		CdcDelay = 50;                  /* Some Delay */
        		CdcState = CD_PLAY;
        		break;
     		case C_PAUSE:
        		CtxBuffer[1] = 0x10;     
        		CtxBuffer[2] = 0x20;            /* pause request */
        		SetCdcFlg1(DspLtr);           /* Display Later */                    
        		break;
     		case C_TRACKUP:
        		CtxBuffer[1] = 0x30;            /* current disc */
        		CtxBuffer[2] = 0xA3;        /* Music 1 Up */
        		if (GetCdcStat(fdrdm))
        			{
           			CtxBuffer[1] = 0x3B;        /* Disc 1 Up */  
        			}
        		CtxBuffer[3] = 0x10;            /* & play */
        		SetCdcFlg1(SusTm);
        		break;
     		case C_TRACKDN:
        		CtxBuffer[1] = 0x30;            /* current disc */
           		CtxBuffer[2] = 0xB3;        /* Music 1 Down */
        		if (GetCdcStat(fdrdm))
        			{
           			CtxBuffer[1] = 0x3F;        /* Disc 1 Down */
        			}
        		CtxBuffer[3] = 0x10;            /* & play */
        		SetCdcFlg1(SusTm);
        		break;
     		case C_SEARUP:
        		CtxBuffer[1] = 0x10;
        		CtxBuffer[2] = 0x40;            /* FWD request */
        		break;
     		case C_SEARDN:
        		CtxBuffer[1] = 0x10;
        		CtxBuffer[2] = 0x80;            /* BWD request */
        		break;
     		case C_DISCUP:
        		for (iCdc = 0; iCdc < DSCMAX; iCdc++)
        			{
           			CurDisc++;
           			if (CurDisc == DSCMAX + 1)  CurDisc = 1;
           			if (ValBit(CdcDiscs, CurDisc-1))
           				{
              			CtxBuffer[1] = 0x30 + CurDisc;
              			CtxBuffer[2] = 0x01;      /* Music 1 */
              			CtxBuffer[3] = 0x10;         /* & play */
					break;
           				}
        			}
        		break;
     		case C_DISCDN:
        		for (iCdc = 0; iCdc < DSCMAX; iCdc++)
        			{
           			CurDisc--;
           			if (CurDisc == 0)  CurDisc = DSCMAX;
           			if (ValBit(CdcDiscs, CurDisc-1))
           				{
              			CtxBuffer[1] = 0x30 + CurDisc;
              			CtxBuffer[2] = 0x01;      /* Music 1 */
              			CtxBuffer[3] = 0x10;         /* & play */
					break;
           				}
        			}
        		break;
     		case C_REPEAT:
        		CtxBuffer[1] = 0x44;            /* repeat */
        		break;
     		case C_DSCREP:
        		CtxBuffer[1] = 0x48;            /* disc repeat */
        		break;
     		case C_REPOFF:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费观看| 久久精品国产亚洲一区二区三区 | 日韩精品中文字幕在线一区| 午夜欧美在线一二页| 7878成人国产在线观看| 午夜影院在线观看欧美| 日韩限制级电影在线观看| 久久国产精品99久久久久久老狼| 久久你懂得1024| 99re亚洲国产精品| 日本vs亚洲vs韩国一区三区| 欧美白人最猛性xxxxx69交| 风间由美一区二区三区在线观看| 国产精品视频观看| 色系网站成人免费| 久久99蜜桃精品| 亚洲精品视频在线观看网站| 欧美高清性hdvideosex| 91小视频免费看| 国产在线精品一区二区夜色| 最新欧美精品一区二区三区| 欧美一级夜夜爽| 色呦呦一区二区三区| 国产一区二区三区四区五区美女 | 6080午夜不卡| 在线观看成人小视频| 国产乱码精品一区二区三区忘忧草| 亚洲另类色综合网站| 国产精品美女一区二区在线观看| 日韩一区二区三区四区| 91香蕉视频污在线| 日韩国产在线一| 亚洲精品日韩一| 一区二区三区视频在线观看| 亚洲乱码中文字幕| 亚洲欧美aⅴ...| 亚洲国产日日夜夜| 亚洲1区2区3区视频| 亚洲精品免费在线播放| 日韩美女视频一区二区| 亚洲欧美日本在线| 亚洲成人黄色影院| 六月丁香婷婷色狠狠久久| 经典一区二区三区| 成人av网在线| 欧美日韩视频不卡| 久久久久久免费毛片精品| 国产欧美1区2区3区| 成人免费在线观看入口| 亚洲国产精品精华液网站| 紧缚捆绑精品一区二区| 91小视频免费观看| 精品噜噜噜噜久久久久久久久试看 | 久久久精品综合| 亚洲最快最全在线视频| 激情综合网最新| 波多野结衣一区二区三区 | 一区二区三区小说| 国产精品中文字幕日韩精品| 91蝌蚪porny| 国产欧美日韩三级| 久久爱www久久做| 在线观看91精品国产入口| 国产精品久久三| 国产老妇另类xxxxx| 欧美日韩国产高清一区二区三区| 欧美国产精品中文字幕| 久久99精品久久久久久动态图 | www久久精品| 蜜臀av一区二区| 91精品国产综合久久久久久久久久 | 欧美成人一级视频| 日本欧洲一区二区| 欧美久久久影院| 亚洲国产精品尤物yw在线观看| 成人av在线电影| 成人免费一区二区三区视频| 国产不卡在线播放| 国产精品天美传媒| 成人伦理片在线| 一区二区视频在线| 欧美三级韩国三级日本三斤| 午夜精品成人在线视频| 欧美日韩一级片在线观看| 国产乱人伦精品一区二区在线观看 | 国产成人亚洲综合a∨婷婷| 精品福利一二区| 成人免费视频一区二区| 亚洲精品少妇30p| 欧美成人一区二区三区片免费| 精品亚洲成a人| 亚洲欧洲av色图| 3751色影院一区二区三区| 精品亚洲欧美一区| 亚洲欧美区自拍先锋| 日韩午夜激情视频| 91亚洲男人天堂| 国产一区二区精品在线观看| 亚洲日穴在线视频| 日韩欧美一区二区在线视频| 91香蕉视频在线| 国产精品一区二区免费不卡 | 久久精品综合网| 欧美精品日韩一区| 色猫猫国产区一区二在线视频| 日韩高清国产一区在线| 一区二区在线看| 国产精品国产三级国产aⅴ中文| 精品少妇一区二区三区| 欧美男男青年gay1069videost| 波多野洁衣一区| 99久久99久久综合| 国产福利一区在线观看| 麻豆精品国产91久久久久久| 日韩福利视频导航| 丝袜美腿亚洲综合| 亚洲国产综合色| 日韩福利视频网| 日韩av一区二区在线影视| 美女国产一区二区三区| 激情欧美一区二区| 成人国产精品视频| 97精品视频在线观看自产线路二| 粉嫩嫩av羞羞动漫久久久| 成人一区二区三区视频在线观看| 国产在线日韩欧美| jlzzjlzz欧美大全| 欧美在线观看视频一区二区| 在线免费观看不卡av| 日韩一区二区电影网| 久久久久久久久久久久电影| 中文字幕欧美一区| 亚洲一区免费观看| 国精产品一区一区三区mba桃花 | 日本在线观看不卡视频| 国产成人在线视频网址| 欧美人伦禁忌dvd放荡欲情| 欧美一级黄色片| 亚洲激情自拍偷拍| 久久 天天综合| 欧美色综合天天久久综合精品| 久久亚洲一区二区三区四区| 中文字幕在线观看一区二区| 精彩视频一区二区| 欧美一区二区视频在线观看| 亚洲靠逼com| www.成人网.com| 国产亚洲成av人在线观看导航| 一区二区三区在线视频免费| 激情文学综合网| 欧美电影免费观看完整版| 亚洲国产精品一区二区久久恐怖片 | 国产精品理伦片| 国产精品一区二区果冻传媒| 91精品国产91热久久久做人人 | 精品成人一区二区| 美女在线一区二区| 91黄色免费看| 一区二区三区日韩欧美| 99精品视频一区| 亚洲精品国久久99热| www.日韩大片| 亚洲一区视频在线观看视频| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧美日韩久久精品| 91国产福利在线| 蜜臀av一区二区| 国产精品第13页| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲日韩欧美一区二区在线| 91成人免费在线| 黄网站免费久久| 亚洲福利视频一区| 久久久久免费观看| 不卡视频在线观看| 天堂成人免费av电影一区| 精品国产亚洲在线| 一本大道久久a久久综合婷婷| 天天色天天操综合| 国产亚洲综合在线| 在线播放一区二区三区| 国产精品亚洲成人| 日韩高清国产一区在线| 国产精品久久久久四虎| 欧美电影免费观看高清完整版在线| 成人高清伦理免费影院在线观看| 亚洲线精品一区二区三区八戒| 久久久99久久| 欧美成人精品3d动漫h| 欧美日韩在线三区| 成人福利视频在线| 国产大陆亚洲精品国产| 免费看欧美女人艹b| 亚洲成人www| 日韩1区2区日韩1区2区| 亚洲成人中文在线| 亚洲午夜久久久久中文字幕久| 亚洲欧洲精品天堂一级| 亚洲欧美中日韩| 自拍偷拍国产精品|