亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产欧美一区二区精品性色| 日韩综合一区二区| 五月天一区二区| 国产成人在线视频网址| 欧美日韩国产小视频在线观看| 精品少妇一区二区三区视频免付费| 亚洲精品成人少妇| 福利一区二区在线观看| 欧美一区二区人人喊爽| 一区二区久久久久久| 成人性生交大合| 久久影视一区二区| 日韩激情一区二区| 欧美日韩亚洲不卡| 亚洲乱码一区二区三区在线观看| 国产精一品亚洲二区在线视频| 欧美日本韩国一区二区三区视频| 亚洲欧洲av在线| 成人激情校园春色| 国产精品久久毛片a| 国产精品资源网| 久久久久久一二三区| 美女脱光内衣内裤视频久久网站| 欧美日韩久久不卡| 午夜亚洲福利老司机| 色欧美片视频在线观看在线视频| 一本到一区二区三区| 成人免费看的视频| 欧美日韩免费电影| 国产夜色精品一区二区av| 美女网站视频久久| 欧美精品一区二区三区很污很色的| 日韩电影在线观看一区| 欧美一级日韩免费不卡| 日韩av电影免费观看高清完整版在线观看| 欧美专区亚洲专区| 日韩精品一卡二卡三卡四卡无卡| 欧美三级乱人伦电影| 五月天精品一区二区三区| 欧美精品成人一区二区三区四区| 日韩精品一级二级| 久久久精品2019中文字幕之3| 国产一区二区免费视频| 中文欧美字幕免费| 在线精品视频免费观看| 日韩影院精彩在线| 久久久电影一区二区三区| 成人性生交大片免费看在线播放| 中文字幕在线播放不卡一区| 99精品国产视频| 亚洲18色成人| 精品福利一二区| 白白色 亚洲乱淫| 亚洲国产欧美在线| 久久一夜天堂av一区二区三区| 高清久久久久久| 亚洲国产成人tv| 精品成a人在线观看| 成人黄色在线网站| 午夜日韩在线观看| 亚洲国产精品成人综合色在线婷婷| av一本久道久久综合久久鬼色| 亚洲在线中文字幕| 精品国产污污免费网站入口 | 欧美日韩美少妇| 狠狠色丁香婷婷综合久久片| 国产欧美日韩不卡| 欧美三级午夜理伦三级中视频| 激情国产一区二区| 亚洲精品美国一| 国产欧美一区二区在线观看| 91官网在线观看| 国产一区二区三区电影在线观看| 日韩美女视频19| 日韩精品最新网址| 色综合视频在线观看| 免费不卡在线观看| 亚洲欧美国产高清| 国产日韩欧美高清| 欧美丰满一区二区免费视频| 成人国产视频在线观看| 久久不见久久见中文字幕免费| 亚洲欧美一区二区三区久本道91| 精品国产乱码久久久久久夜甘婷婷| 93久久精品日日躁夜夜躁欧美| 韩国视频一区二区| 日韩在线一区二区三区| 亚洲精品一二三区| 国产精品视频yy9299一区| 日韩欧美一级片| 欧美日韩国产一区二区三区地区| www.色精品| 国产成人精品午夜视频免费| 日本午夜一区二区| 日韩电影一区二区三区四区| 一区二区三区中文字幕| ...xxx性欧美| 国产精品丝袜91| 久久久精品中文字幕麻豆发布| 欧美日韩不卡在线| 欧美不卡123| 欧美一区二区在线播放| 91久久奴性调教| 色哟哟欧美精品| 波波电影院一区二区三区| 国产真实乱对白精彩久久| 九九九久久久精品| 狠狠色丁香婷婷综合久久片| 开心九九激情九九欧美日韩精美视频电影| 亚洲第一搞黄网站| 水蜜桃久久夜色精品一区的特点| 亚洲乱码国产乱码精品精的特点 | 欧美va在线播放| 欧美精品久久99久久在免费线 | 亚洲一区二区在线观看视频| 国产精品久久久久毛片软件| 中文幕一区二区三区久久蜜桃| 国产亚洲欧美中文| 欧美激情一区不卡| 国产精品麻豆99久久久久久| 国产精品久久久久一区二区三区| 亚洲欧美在线视频| 一区二区日韩电影| 丝袜美腿成人在线| 国产一区二区女| www..com久久爱| 欧美日韩三级一区| 日韩精品一区二区三区三区免费| 日韩精品一区二区三区swag | 日韩毛片高清在线播放| 亚洲免费资源在线播放| 亚洲永久免费视频| 蜜臀av性久久久久蜜臀aⅴ| 国产制服丝袜一区| 99riav一区二区三区| 欧美少妇xxx| 日韩精品一区国产麻豆| 国产喷白浆一区二区三区| 亚洲人快播电影网| 日本亚洲三级在线| 高清不卡一二三区| 欧美性猛片xxxx免费看久爱| 91精品国产综合久久福利软件| 久久综合久久综合亚洲| 亚洲欧美怡红院| 免费成人美女在线观看.| 从欧美一区二区三区| 欧美日韩国产美| 国产日本亚洲高清| 婷婷综合在线观看| 成人一区二区三区在线观看 | 视频在线观看一区二区三区| 精品一区免费av| 色婷婷综合久久| 久久综合九色综合97婷婷| 亚洲精品亚洲人成人网| 精品在线播放免费| 欧洲视频一区二区| 国产女人aaa级久久久级| 午夜精品影院在线观看| 国产不卡视频一区| 日韩欧美一区在线| 亚洲综合在线观看视频| 国产精品1区2区| 欧美剧情片在线观看| 最新高清无码专区| 久久99精品国产麻豆不卡| 一本在线高清不卡dvd| 久久色.com| 日韩成人午夜精品| 色综合亚洲欧洲| 国产精品久久毛片a| 极品少妇xxxx精品少妇偷拍| 在线观看日韩电影| 1000精品久久久久久久久| 国产精品主播直播| 欧美xfplay| 免费久久精品视频| 欧美日韩一级大片网址| 亚洲色图清纯唯美| 成人激情黄色小说| 国产精品天天摸av网| 国产一区二区不卡在线| 日韩欧美国产三级| 亚洲www啪成人一区二区麻豆| 一本到三区不卡视频| 中文一区在线播放| 成人综合婷婷国产精品久久| 欧美大片拔萝卜| 美女免费视频一区| 日韩免费高清视频| 日韩福利电影在线观看| 欧美日韩国产一区| 天天爽夜夜爽夜夜爽精品视频| 色婷婷久久综合| 亚洲国产成人av好男人在线观看| 91国产福利在线| 性欧美疯狂xxxxbbbb| 欧美丝袜第三区| 午夜精品福利一区二区三区av|