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

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

?? karaoke.c

?? winboard vcd software
?? 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
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va欧美va人人爽午夜| 中文字幕一区二区视频| av在线播放一区二区三区| 国产中文一区二区三区| 日本午夜一本久久久综合| 亚洲自拍偷拍图区| 亚洲观看高清完整版在线观看 | 午夜国产精品影院在线观看| 亚洲欧洲日韩av| 亚洲精品国久久99热| 一区二区成人在线| 首页国产丝袜综合| 日韩电影在线免费看| 久久99精品国产麻豆婷婷洗澡| 免费在线欧美视频| 韩国精品主播一区二区在线观看 | 欧美乱熟臀69xxxxxx| 欧美老肥妇做.爰bbww视频| 欧美片网站yy| 久久久亚洲高清| 国产精品久久午夜| 亚洲va天堂va国产va久| 另类小说一区二区三区| 国产成人精品一区二区三区四区| eeuss影院一区二区三区| 色妞www精品视频| 日韩欧美在线影院| 国产精品系列在线| 亚洲va天堂va国产va久| 国产成人一区在线| 欧美日韩一二三| 国产午夜精品美女毛片视频| 亚洲人成精品久久久久久| 日本欧美一区二区在线观看| 成人免费毛片片v| 欧美日韩国产综合久久 | 欧美激情一区二区三区蜜桃视频| 日韩理论在线观看| 九九九精品视频| 在线免费不卡视频| 久久久亚洲午夜电影| 亚洲小说春色综合另类电影| 国产美女视频91| 在线综合视频播放| 亚洲三级在线观看| 国产成人在线视频网址| 欧美妇女性影城| 亚洲日穴在线视频| 国产精品一区二区黑丝| 欧美日韩1234| 亚洲激情图片小说视频| 国产a精品视频| 日韩美女在线视频 | 激情成人综合网| 欧美性感一区二区三区| 欧美激情在线一区二区| 精品伊人久久久久7777人| 欧美日韩中文字幕一区| 亚洲码国产岛国毛片在线| 国产精品1区2区| 久久综合九色综合97婷婷女人| 调教+趴+乳夹+国产+精品| 色婷婷国产精品久久包臀| 国产精品网站在线播放| 国产一区二区精品久久| 日韩欧美二区三区| 琪琪久久久久日韩精品| 91精品国产综合久久福利软件| 亚洲蜜臀av乱码久久精品| 99精品视频一区二区| 国产精品理论在线观看| 成人免费观看av| 国产精品久久久久一区二区三区| 国产传媒日韩欧美成人| 国产欧美日韩亚州综合| 成人在线一区二区三区| 国产欧美一区二区精品性| 国产不卡视频在线播放| 国产精品婷婷午夜在线观看| 成人综合婷婷国产精品久久蜜臀 | 日韩一卡二卡三卡国产欧美| 午夜国产精品影院在线观看| 欧美精品在线观看一区二区| 亚洲mv大片欧洲mv大片精品| 欧美精品欧美精品系列| 伦理电影国产精品| 久久伊人蜜桃av一区二区| 国产乱色国产精品免费视频| 欧美国产欧美综合| 色综合久久综合网| 日本中文字幕不卡| 久久久久久**毛片大全| 成人看片黄a免费看在线| 亚洲精品中文在线影院| 56国语精品自产拍在线观看| 久久av资源站| 国产精品国产三级国产aⅴ原创| 91麻豆国产在线观看| 丝袜美腿亚洲综合| 久久久久久一二三区| 91在线丨porny丨国产| 日韩高清在线一区| 国产欧美日韩在线| 欧美日韩高清一区二区| 国产伦理精品不卡| 亚洲综合男人的天堂| 日韩无一区二区| 99久久99精品久久久久久| 污片在线观看一区二区| 久久久亚洲午夜电影| 欧美性一级生活| 国产精品羞羞答答xxdd| 一个色综合av| 国产欧美一区二区精品性色| 欧美视频完全免费看| 成人教育av在线| 热久久免费视频| 亚洲伦在线观看| 26uuu久久综合| 欧美群妇大交群中文字幕| 成人涩涩免费视频| 久久国产麻豆精品| 亚洲综合久久久久| 国产精品久久久久久久蜜臀| 色婷婷精品久久二区二区蜜臀av| 国产在线视频一区二区| 日韩成人精品视频| 一区二区在线免费| 国产精品三级电影| 亚洲精品一区二区三区在线观看 | 欧美一区在线视频| 色综合久久综合| 国产麻豆精品在线观看| 日本欧美一区二区三区乱码| 亚洲一区二区三区自拍| 国产精品久久久久久久午夜片 | 国产精品久久久久久久久免费相片 | 国精品**一区二区三区在线蜜桃| 亚洲图片自拍偷拍| 亚洲欧美精品午睡沙发| 国产精品午夜电影| 欧美国产成人在线| 国产三级欧美三级| 久久天天做天天爱综合色| 日韩精品在线网站| 精品久久久久久最新网址| 宅男噜噜噜66一区二区66| 欧美丰满嫩嫩电影| 欧美一区日韩一区| 日韩午夜精品视频| 日韩视频在线一区二区| 日韩欧美另类在线| 精品国免费一区二区三区| 欧美mv日韩mv| 久久久综合激的五月天| 中文字幕成人av| 亚洲欧洲三级电影| 一区二区三区四区激情| 亚洲午夜精品17c| 天天影视涩香欲综合网| 婷婷综合五月天| 日本欧美肥老太交大片| 蜜臀av一区二区在线观看 | 久久精品一区二区三区四区| 精品日韩在线一区| 日本一区二区在线不卡| 国产日产欧美精品一区二区三区| 久久久www免费人成精品| 国产偷国产偷精品高清尤物| 国产调教视频一区| 国产精品久久久爽爽爽麻豆色哟哟 | 色婷婷综合视频在线观看| 91黄色激情网站| 日韩免费看网站| 国产精品午夜春色av| 亚洲va欧美va国产va天堂影院| 免费高清视频精品| 成人精品高清在线| 欧美精三区欧美精三区| 26uuu精品一区二区在线观看| 中文字幕在线观看不卡视频| 偷偷要91色婷婷| 国产91精品一区二区| 欧美三级日韩在线| 久久精品亚洲一区二区三区浴池 | 欧美日韩国产影片| 欧美哺乳videos| 国产精品久久777777| 亚洲成人7777| 粉嫩av一区二区三区粉嫩| 欧美三级视频在线| 欧美激情中文字幕| 婷婷综合在线观看| 91女厕偷拍女厕偷拍高清| 日韩欧美一区二区免费| 亚洲精品国产第一综合99久久| 免费看黄色91| 欧美色男人天堂| 日本一区二区免费在线| 男人操女人的视频在线观看欧美|