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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? karaoke.c

?? 找了好多地方
?? C
字號:
/*********************************************************************

        Filename: karaoke.c

        Author  : Keung Fung
        Date    : 12th. August. 1996.
        Purpose :
// ECHO-> delay time
                I/O use: GPCR(b1-0), P1^4
*********************************************************************/

#include "vcd25.h"
#include "cc.h"
#include "w9925.h"
#include "karaoke.h"
#include "isr.h"
#include <intrins.h>

#ifdef    KARAOKE
//#if    1

//#ifdef    COMBO_SYSTEM
#if VCD_SYSTEM == VCD25Q_S
sbit    __sbKARAOKEsda = P1 ^ 1;
sbit    __sbKARAOKEsck = P1 ^ 2;
#endif    // COMBO_SYSTEM

#if VCD_SYSTEM == VCD25Q_K1
sbit   __sbKARAOKEsda= P3 ^ 0;
sbit   __sbKARAOKEsck= P3 ^ 1;
#endif  // VCD_SYSTEM

#define FCR 0x00
#define KSR 0x01
#define VCR_YSS 0x02
#define TMR_YSS 0x03

sbit   YSS_YSS_CS = P1^4;
static BYTE bdata _GPCR_Value;
static BYTE bdata _DATA_Buffer;
sbit   YSS_CLK =  _GPCR_Value^0;
sbit   YSS_DATA=  _GPCR_Value^1;
sbit   _DATA_Buffer_bit0 = _DATA_Buffer^0;


void _YSS_CS (BIT state);
void _SCK(BIT state);
void _SDA(BIT state);
void YSS_OutData( BYTE add, BYTE value) ;

BYTE FCR_Value = 0x4A;
BYTE KSR_Value = 0x20;
//BYTE VCR_Value = 0x03;
BYTE TMR_Value = 0x30;

//CR00,CR03, echo initial value 0x40
BYTE  CR_DATA[] =
{ 0x00,  0x00,  0x7F,  0x00,  0x00,  0x00,  0x7F,  0x70,  0x00,  0x7F,      //0x7f
  0x00,  0x20,  0x20,  0x60,  0x00,  0x7F,  0x00,  0x00,  0x00,  0x00};

void _YSS_CS(BIT state)
{
#ifdef    COMBO_SYSTEM
    CDROM_OutPA ( PA_KARAOKE_CS, state );
#else
    YSS_YSS_CS= state;
#endif    // COMBO_SYSTEM
}

//  *********************************************************************
//  Function    :   _SCK
//  Description :   It will control the GPCR bit 0 value
//  Arguments   :       state
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void _SCK(BIT state)
{
   YSS_CLK = state;

#if VCD_SYSTEM == VCD25Q_K
    W9925_WriteReg (GPCR, _GPCR_Value);
#else
    __sbKARAOKEsck= state;

#endif    // COMBO_SYSTEM
}

//  *********************************************************************
//  Function    :   _SDA
//  Description :   It will control the GPCR bit 1 value
//  Arguments   :       state
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void _SDA(BIT state)
{
   YSS_DATA = state;

#if VCD_SYSTEM == VCD25Q_K
    W9925_WriteReg (GPCR, _GPCR_Value);
#else
    __sbKARAOKEsda= state;
#endif    // COMBO_SYSTEM
}

//  *********************************************************************
//  Function    :   YSS_OutData
//  Description :   Perform write data to internal register
//  Arguments   :       add, value
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void YSS_OutData( BYTE add, BYTE value)
{
   BYTE i,j,k;
   for (j =0;j<2; j++)
   {
        // write address first
     if (j==0)
       DATA_Buffer = add;
        // then write data
     else
       DATA_Buffer = value;

        //each write is through a 8-bit interface
        //LSB first
     for (i=0; i<8; i++)
     {
        _SDA(_DATA_Buffer_bit0);
        _SCK(0);   //  /sck low
        for (k=0; k<4; k++);   //delay time > 450ns
        _SCK(1);   //  /sck high and YSS216 receives one bit
        DATA_Buffer >>=1;  // LSB first
     } //for i

   } //for j

} //void


//  *********************************************************************
//  Function    :   YSS_Initial
//  Description :   Initial FCR, KSR, VCR, TMR, CR00-CR13
//  Arguments   :       NULL
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void YSS_Initial(void)
{
 BYTE i,j;
 _SCK(1);
 for (j=0; j<3;j++) ;             //
// YSS_CS = 0;
    _YSS_CS (0);

 // Default FCR:
 // Select YM7110 data input
 // Digital input de-emphasis processing ON(coefficients is normal(44.1kHz)
 // coefficients set by resisters CR00-CR13
 // Output muting on
 YSS_OutData(FCR, 0x42);

 // Default KSR:
 // Normal key
 // Live surround???(bit 6-5=01'b)
 YSS_OutData(KSR, 0x20);

 // Default VCR:
 //
 YSS_OutData(VCR_YSS, 0x03);

 // Default TNR:
 // fading time 0.5 sec
 YSS_OutData(TMR_YSS, 0x30);

 for (i=0; i<20; i++)
   YSS_OutData((0x20+i),CR_DATA[i]);   //CR00 ~ CR13   0x20 ~ 0x33

 // Output muting off
 YSS_OutData(FCR, 0x4A);
 _YSS_CS (1);
}

//  *********************************************************************
//  Function    :   YSS_KSR
//  Description :   Control the key shift
//  Arguments   :       value(0 to 32 levels)
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void YSS_KSR(BYTE value)
{
  BYTE j;
  _SCK(1);
  // delay time
  for (j=0; j<3;j++) ;             //
  _YSS_CS(0);

  // must keep the surround setting
  KSR_Value = (KSR_Value & 0x60) | value ;
  YSS_OutData(KSR, KSR_Value);
  _YSS_CS (1);
}


//  *********************************************************************
//  Function    :   YSS_Echo
//  Description :   Delay time setting by changing the CR05, CR08
//  Arguments   :       value
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void YSS_Echo(BYTE value)
{
  BYTE j;

  value = value * 18;
  if (value >= 0x8A)
      value = 0x8A;
  _SCK(1);
  for (j=0;j<3;j++) ;
  _YSS_CS (0);

  // CR05, bit0 must be 0
  YSS_OutData(0x25, value);
  // CR08, bit0 must be 0
  YSS_OutData(0x28, value);
  _YSS_CS (1);
}

//  *********************************************************************
//  Function    :   YSS_Surround
//  Description :   Change surround effect
//  Arguments   :       value
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void YSS_Surround(BYTE value)
{
  BYTE j;
  _SCK(1);
  for (j=0; j<3 ; j++);
  _YSS_CS (0);
 // YSS_OutData(FCR,0x5A);     // clear "+"
 // YSS_OutData(0x21, bCR01);   //CR01
 // YSS_OutData(0x24, bCR04);   //CR04
 // YSS_OutData(0x22, bCR02);   //CR02
 // YSS_OutData(0x26, bCR06);   //CR06

    switch(value)
    {
      case 0 :  //normal
        YSS_OutData(0x21, 0x00);   //CR01
        YSS_OutData(0x24, 0x00);   //CR04
        YSS_OutData(0x20, 0x00);   //CR00
        YSS_OutData(0x23, 0x00);   //CR03

        YSS_OutData(0x22, 0x7F);   //CR02
        YSS_OutData(0x26, 0x7F);   //CR06

        KSR_Value = (KSR_Value & 0x1F) | 0x20 ;
        break;

      case 1 : //simulation stereo
        YSS_OutData(0x21, 0x00);   //CR01
        YSS_OutData(0x24, 0x7F);   //CR04
        YSS_OutData(0x22, 0x7F);   //CR02
        YSS_OutData(0x26, 0x7F);   //CR06


        KSR_Value &= 0x1F;
        break;

      case 2 : //live
        YSS_OutData(0x24, 0x40);   //CR04
        YSS_OutData(0x22, 0x40);   //CR02
        YSS_OutData(0x21, 0x7F);   //CR01
        YSS_OutData(0x26, 0x7F);   //CR06

        KSR_Value = (KSR_Value & 0x1F) | 0x20;
        break;

      case 3 : //movie
        YSS_OutData(0x24, 0x40);   //CR04
        YSS_OutData(0x22, 0x40);   //CR02
        YSS_OutData(0x21, 0x7F);   //CR01
        YSS_OutData(0x26, 0x7F);   //CR06

        KSR_Value = (KSR_Value & 0x1F) | 0x40;
        break;

      case 4 : //karaoke

        YSS_OutData(0x21, 0x00);   //CR01

        YSS_OutData(0x20, 0x70);   //CR00
        YSS_OutData(0x23, 0x70);   //CR03

        YSS_OutData(0x24, 0x7F);   //CR04
        YSS_OutData(0x22, 0x7F);   //CR02
        YSS_OutData(0x26, 0x7F);   //CR06
        KSR_Value &= 0x1F;

           break;

    } //switch

  YSS_OutData(KSR,KSR_Value);
 // YSS_OutData(VCR_YSS, 0x03);   //VCR_YSS
 // YSS_OutData(0x29,0x7F);
 // YSS_OutData(0x2F,0x7F);
//  YSS_OutData(FCR, 0x5F);
  YSS_OutData(FCR, 0x4A);       //FCR

  _YSS_CS (1);
}

#endif    // KARAOKE

//  *********************************************************************
//  Function    :   KARAOKE_Initial
//  Description :       Initial KARAOKE chip
//  Arguments   :       NULL
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void    KARAOKE_Initial ()
{
#ifdef    KARAOKE
    YSS_Initial ();
    return;
#else
//    YSS_Initial ();     // *** 0.45; Test BCA if has YSS216
#endif    // KARAOKE
}

//  *********************************************************************
//  Function    :   KARAOKE_KeyShift
//  Description :       Control karaoke key shift
//  Arguments   :       bKey, 0 to 32
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void    KARAOKE_KeyShift ( BYTE bKey )
{
#ifdef    KARAOKE
    YSS_KSR ( bKey );
    return;
#endif    // KARAOKE
}

//  *********************************************************************
//  Function    :   KARAOKE_Surround
//  Description :       Control surround effect
//  Arguments   :       bSurround, 0 to 4
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void    KARAOKE_Surround ( BYTE bSurround )
{
#ifdef    KARAOKE
    YSS_Surround ( bSurround );
    return;
#endif    // KARAOKE
}

//  *********************************************************************
//  Function    :   KARAOKE_Echo
//  Description :       Adjust delay time
//  Arguments   :       bEcho, 0 to 8
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void    KARAOKE_Echo ( BYTE bEcho )
{
#ifdef    KARAOKE
    YSS_Echo ( bEcho );
    return;
#endif    // KARAOKE
}

//  *********************************************************************
//  Function    :   KARAOKE_VoicrCancel
//  Description :
//  Arguments   :       NULL
//  Return      :       NULL
//  Side Effect :
//  *********************************************************************
void    KARAOKE_VoiceCancel ( BYTE bCancel )
{
#ifdef    KARAOKE
   BYTE j;

    _SCK(1);
    for (j=0; j<3;j++) ;             //
    _YSS_CS (0);

    switch(bCancel)
    {
    case 0x00 : //no voice cancellation
      YSS_OutData(VCR_YSS, 0x03);
      break;
    default :   //voice cancellation on
      YSS_OutData(VCR_YSS, 0x13);
      break;
    }

    _YSS_CS (1);
#endif    // KARAOKE
}

//  *********************************************************************
//  Function    :   KARAOKE_MICControl
//  Description :   Close MIC-Input as it may cause that F/W can't cross standard
//  Arguments   :       NULL
//  Return      :       NULL
//  Side Effect :   // *** MULTI_DISC;
//  *********************************************************************
void    KARAOKE_MICControl ( BYTE bON )
{
#ifdef    KARAOKE
    BYTE j;

    _SCK(1);
    for (j=0; j<3;j++) ;             //
    _YSS_CS(0);
        YSS_OutData(0x20, (bON * 0x70) );
        YSS_OutData(0x23, (bON * 0x70) );
        YSS_OutData(0x2D, (bON * 0x7F) );
  _YSS_CS(1);
    return;
#endif    // KARAOKE
}

//  *********************************************************************
//  Function    :   KARAOKE_VolumeControl
//  Description :   Control Volume
//  Arguments   :       NULL
//  Return      :       NULL
//  Side Effect :   // *** MULTI_DISC;
//  *********************************************************************
void    KARAOKE_VolumeControl ( BYTE bLevel, BYTE bChannel )
{
#ifdef    KARAOKE
    BYTE     i, j;
    WORD     wTemp;

    if ( bLevel )
    {
        wTemp= 0x7f* (WORD)bLevel;
        j= wTemp/ VOLUME_MAX;
    }
    else
        j= NULL;

    _SCK(1);
    for (i=0; i<3;i++) ;             //
    _YSS_CS(0);

//        YSS_OutData ( 0x22, 0x7F );   // CR02
//        YSS_OutData ( 0x26, 0x7F );   // CR06

    // seems conflict with spec.
    switch ( bChannel )
    {
    case    AUDIO_LL:
        YSS_OutData ( 0x2E, 0x00 );   // CR0E
        YSS_OutData ( 0x2F, 0x00 );   // CR0F

        YSS_OutData ( 0x29, j );   // CR09, DL -> L
        YSS_OutData ( 0x2A, j );   // CR0A, DL -> R
        break;

    case    AUDIO_RR:
        YSS_OutData ( 0x29, 0x00 );   // CR09
        YSS_OutData ( 0x2A, 0x00 );   // CR0A

        YSS_OutData ( 0x2E, j );   // CR0E, DR -> L
        YSS_OutData ( 0x2F, j );   // CR0F, DR -> R
        break;

    case    AUDIO_RL:
        YSS_OutData ( 0x29, 0x00 );   // CR09, DL -> L
        YSS_OutData ( 0x2F, 0x00 );   // CR0F, DR -> R

        YSS_OutData ( 0x2A, j );   // CR0A, DL -> R
        YSS_OutData ( 0x2E, j );   // CR0E, DR -> L
        break;

    case    AUDIO_STEREO:
        YSS_OutData ( 0x2A, 0x00 );   // CR0A, DL -> R
        YSS_OutData ( 0x2E, 0x00 );   // CR0E, DR -> L

        YSS_OutData ( 0x29, j );   // CR09, DL -> L
        YSS_OutData ( 0x2F, j );   // CR0F, DR -> R

    default:
        break;

    }

    _YSS_CS(1);

/*  // *** MULTI_DISC;
    _YSS_CS(0);
        YSS_OutData ( 0x22, j );   // CR02
        YSS_OutData ( 0x26, j );   // CR06
    _YSS_CS(1);
*/

    return;
#endif    // KARAOKE
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷成人一区二区三区91| 色999日韩国产欧美一区二区| 国产一区二区三区日韩| 国产一区二区三区免费播放| 精品国产成人系列| 一区二区三区欧美视频| 国产精品一区二区三区99| 精品视频全国免费看| 亚洲国产高清aⅴ视频| 日韩成人精品在线观看| 91首页免费视频| 久久你懂得1024| 婷婷夜色潮精品综合在线| 成人精品视频一区二区三区| 日韩欧美视频在线 | 精品美女一区二区三区| 亚洲乱码国产乱码精品精可以看| 国产一区美女在线| 国产精品久久看| 国产精品亚洲综合一区在线观看| 中文字幕一区二区三区av| 国产在线精品视频| 亚洲美女电影在线| av成人老司机| 国产精品理论片在线观看| 在线免费观看日本一区| 亚洲精品视频免费看| 欧美一区日韩一区| 男女性色大片免费观看一区二区| 欧美日韩1区2区| 亚洲国产日日夜夜| 在线观看91视频| 激情偷乱视频一区二区三区| 精品人伦一区二区色婷婷| 99re热这里只有精品视频| 亚洲视频狠狠干| 一本一道久久a久久精品| 免费成人在线网站| 中文字幕字幕中文在线中不卡视频| 制服丝袜在线91| 美女网站色91| 精品国产乱码久久久久久图片 | 亚洲色图20p| 欧美岛国在线观看| 欧美性高清videossexo| 亚洲va国产天堂va久久en| 欧美一区二区三区在线看| 99精品欧美一区二区三区综合在线| 美女视频黄久久| 一区二区三区四区在线免费观看| 精品99一区二区三区| 欧美美女一区二区三区| 青青青伊人色综合久久| 亚洲综合男人的天堂| 777久久久精品| 色综合天天综合网天天狠天天| 亚洲欧美日韩中文字幕一区二区三区| 欧美成人r级一区二区三区| 欧美色窝79yyyycom| 色美美综合视频| 成人性生交大片免费看中文| 精品一区二区影视| 亚洲欧洲日韩在线| 中文字幕免费不卡在线| 精品噜噜噜噜久久久久久久久试看| 欧洲精品在线观看| 91老师国产黑色丝袜在线| 波多野结衣中文字幕一区二区三区| 亚洲成a人片在线不卡一二三区| 综合自拍亚洲综合图不卡区| 亚洲国产成人一区二区三区| 久久影院视频免费| 欧美性猛交xxxx乱大交退制版| 色综合天天综合在线视频| a亚洲天堂av| 99精品欧美一区二区蜜桃免费| 国产美女精品人人做人人爽 | 亚洲大片在线观看| 亚洲一二三区视频在线观看| 一区二区三区不卡视频| 一区二区三区**美女毛片| 亚洲狼人国产精品| 亚洲午夜电影网| 亚洲va在线va天堂| 欧美aaa在线| 国产午夜精品一区二区三区四区| 玉米视频成人免费看| 国产精品污www在线观看| 欧美三级电影精品| 欧美日本在线看| 日韩欧美一卡二卡| 久久精品人人爽人人爽| 国产精品色婷婷久久58| 日韩美女视频19| 亚洲午夜成aⅴ人片| 日本女人一区二区三区| 经典一区二区三区| 不卡的av网站| 欧美日韩亚洲综合| 日韩欧美亚洲国产另类| 国产精品丝袜黑色高跟| 亚洲午夜久久久久久久久电影网 | 欧美调教femdomvk| 91精品久久久久久久99蜜桃 | 国产精品嫩草影院av蜜臀| 成人欧美一区二区三区小说| 亚洲高清免费观看| 久久er精品视频| 日本成人在线看| 床上的激情91.| 欧美日韩精品电影| 国产亚洲短视频| 亚洲一区二区三区四区的 | 亚洲精品国产一区二区精华液| 午夜激情综合网| 国产999精品久久| 国产99精品在线观看| 欧美在线三级电影| 337p日本欧洲亚洲大胆色噜噜| 中文字幕一区av| 麻豆精品一二三| 91网站最新网址| 欧美成人video| 亚洲一区二区av在线| 国产一区二区视频在线播放| 欧洲一区在线电影| 国产欧美日本一区视频| 国产日产欧美一区二区视频| 亚洲国产精品欧美一二99| 国产九色精品成人porny| 欧美三级视频在线播放| 久久综合久久综合亚洲| 午夜精品一区二区三区三上悠亚| 国产高清精品网站| 99久久99久久精品免费看蜜桃| 欧美一级欧美三级在线观看| 悠悠色在线精品| 国产精品亚洲视频| 欧美一卡二卡三卡| 亚洲主播在线播放| 成人黄动漫网站免费app| 欧美成人官网二区| 日本亚洲欧美天堂免费| 在线一区二区三区做爰视频网站| 久久久国产精华| 麻豆视频观看网址久久| 欧美视频一区二| 亚洲精品综合在线| 成人涩涩免费视频| 久久久www免费人成精品| 久久国产麻豆精品| 欧美一区二区大片| 视频一区中文字幕| 国产成人鲁色资源国产91色综| 欧美一区二区三区四区久久 | 亚洲视频在线一区| 懂色av中文一区二区三区| 精品国产乱码久久久久久免费| 免费成人深夜小野草| 欧美日韩精品高清| 亚洲成人动漫在线观看| 欧美综合色免费| 亚洲国产精品久久人人爱| 欧美综合亚洲图片综合区| 亚洲综合在线视频| 欧美性猛交xxxxxxxx| 亚洲成人手机在线| 欧美日韩视频在线第一区| 亚洲精品成人a在线观看| 色妹子一区二区| 亚洲一二三四区不卡| 欧美日韩免费高清一区色橹橹| 亚洲狠狠爱一区二区三区| 欧美日韩精品欧美日韩精品一 | 亚洲欧美激情一区二区| 色婷婷久久久久swag精品| 樱桃视频在线观看一区| 欧美综合久久久| 天天操天天综合网| 日韩女优电影在线观看| 国产一区二区三区电影在线观看 | 亚洲视频免费在线| 欧美视频中文一区二区三区在线观看| 夜夜夜精品看看| 欧美一区二区精美| 国产大陆a不卡| 亚洲欧美一区二区三区孕妇| 欧美日韩在线精品一区二区三区激情| 亚洲大片免费看| 精品国产91乱码一区二区三区 | 国产资源精品在线观看| 国产色爱av资源综合区| 9人人澡人人爽人人精品| 夜夜精品浪潮av一区二区三区| 69堂精品视频| 风间由美一区二区av101| 亚洲女同一区二区| 日韩午夜激情av| 天涯成人国产亚洲精品一区av| 精品国产免费人成在线观看|