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

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

?? 5767.txt

?? keil c 編寫的tea5767HL 的程序代碼
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
返回大蝦電子網首頁 返回歷史帖子
[+6]這是TEA5767控制的C語言程序,小弟剛學習C語言,看得不明白,那位可以幫幫我嗎 ?我打算用匯編寫程序14位的PLL不知道怎么算。
 

帖子編號: 32026/797356, 發表用戶:調頻愛好者    發表時間:2006-1-16 12:45:08     訪問次數:115 發貼IP:222.212.70.39 

文章內容: 

    COMPANY CONFIDENTIAL

***************************************************************************
        Filename : Tuner.c
Rev     Date        Author
____________________________________________________________________________
1.0        2002/01/13    Tenon Mao

        TEA5767 basic control 
*/
#define XTAL32K

#define LowestFM         87500              //87.5MHz    for EUR only for USA 87.9M
#define HighestFM       108000              //108.Mhz
#define InitVCO         98000             // 98.00 MHz  for reset Freq  
                              
#define STEP               100                  //setp size =100KHz.
#define AST_STEP        200       //200

#define MAX_STATION        20
#define TUNER_DELAY     250000            //250MS
            
#ifdef XTAL32K
#define REFERENCE_FREQ    32.768
#else
#define REFERENCE_FREQ    50.000
#endif


/**********************
* INCLUDE FILES       *
**********************/
/* Standard include files */

/* Project  include files */
#include "global.h"
#include "tuner.h"
#include "util.h"
#include "lcd.h"
#include "key.h"

/**********************
* LOCAL TYPEDEFS      *
**********************/


/**********************
* EXPORTED DATA       *
**********************/
BYTE  data SearchLevel=3;

BYTE idata WriteDataWord[5];                    // write tea5767H dataword 
BYTE idata ReadDataWord[5];                        // read tea5767H dataword
unsigned long idata TunerStation[20];            //save radio station FM Value HEX format

///For assembly data 
BIT data FlagMute = False;                     // flag to Mute R&L

BIT data FlagSearch = False;                     // flag to search or preset mode
BIT data FlagSearchtUp =True;                 // flag for search direction  
BYTE data FlagLevel =2;                      // flag for current search level
BIT data FlagHighInjection=False;
BIT data FlagMono = False;                   // flag to force mono 
//Mute L
//Mute R
//SWPORT1 for GPIO out 

BIT data FlagSWPORT2=Low;                      // flag for level of pin15
//standy_by
//Japan or ther area 
//XTAL selecton 1 for 32k
BIT data FlagSoftMute = True;//False;                   // flag to force mono 
//HCC 
//SNC
BIT data FlagSWPORT1=True;                      // 1= confige as indication of found!!

//PLL selection 0
//Deem 1.


BYTE data NowStation=0;
BYTE data Max_Station=0;

unsigned long gdwSearchedVCO;               // vco frequency after search command
unsigned long gdwPresetVCO=89800;                 // target vco frequency for Preset
unsigned long gdwWorkingVCO;                // displayed vco frequency 

BIT data NotFound = True;
BIT data BandLimit = False;                  // Indicate the end of band

//unsigned char TunerSearchTimer;            //Timeout for serach
                     

/**********************
* STATIC DATA         *
**********************/


/**********************
* LOCAL MACROS        *
**********************/


/**********************
* FUNCTION PROTOTYPES *
**********************/


/****************************************************************************/
/*    Command Delay                                                         */
/****************************************************************************/
void CMD_Delay(BYTE i)
{
    for (; i!=0; i--) ;
}  

void CMD_CheckHighSCL()
{
    I2cSCL = 1;
}

void CMD_SendStart()
{
    I2cSCL = 1;
    CMD_Delay(CMD_DELAY);
    I2cSDA = 0;
    CMD_Delay(CMD_DELAY);
    I2cSCL = 0;
    CMD_Delay(CMD_DELAY);
}

void CMD_SendStop()
{
    I2cSDA = 0;
    CMD_CheckHighSCL();
    CMD_Delay(CMD_DELAY);
    I2cSDA = 1;
    CMD_Delay(CMD_DELAY);
}

BYTE  CMD_SendByte(BYTE bByte)
{
    BYTE i;
    BIT  Acknowledge=1;
    for(i=0;i<8;i++)
       {
         if(bByte&0x80)
            I2cSDA=1;
         else
            I2cSDA=0;
         bByte<<=1;
         CMD_Delay(CMD_DELAY);
         CMD_CheckHighSCL();
         I2cSCL  =0;
       }
    I2cSDA=1;
    I2cSCL=1;
    CMD_Delay(CMD_DELAY);
    if (I2cSDA) Acknowledge=0;
    I2cSCL=0;
    CMD_Delay(CMD_DELAY);
    return Acknowledge;
}

BYTE CMD_GetByte(BYTE Acknowledge)
{
    BYTE i,bByte=0, bMask=0x80;
    for(i=0;i<8;i++)
       {
          CMD_Delay(CMD_DELAY);
          I2cSCL=1;
        if(I2cSDA)bByte|=bMask;
                bMask >>= 1;
                I2cSCL  =0;
       }
    I2cSDA =(Acknowledge)?1:0; 
    CMD_CheckHighSCL();
    CMD_Delay(CMD_DELAY);
    I2cSCL  =0;                
    I2cSDA  =1;
    CMD_Delay(CMD_DELAY);
    return bByte;
}

//////////////////////////////////////////////

void WriteSTR()
{
    BYTE i;
    EA=0;
    CMD_SendStart();
    if (CMD_SendByte(0x0c0))            //chip addr of write data to driver
    {
        for (i=0; i<5; i++)
        {
           if (!CMD_SendByte(WriteDataWord[i]))    //0 err
            {
                break;
            }
        }
    }
    CMD_SendStop();         //???
    EA=1;
    CMD_Delay(CMD_DELAY);
    CMD_Delay(CMD_DELAY);    
    
}
           

  Byte SearchRead1=0;    //for test only!!!
  Byte SearchRead2=0;        
  Byte SearchRead3=0;
  Byte SearchRead4=0;
  Byte SearchRead5=0;

void ReadSTR() //get datd../
{

   BYTE i;      
   #if 1        //test only!!
   for (i=0; i<=4; i++)            
   {
    ReadDataWord[i]=0;                    //init the read buffer.
   }                           
     SearchRead1=ReadDataWord[0];        //byte 0 --4 .byte 0 first.
    SearchRead2=ReadDataWord[1];        //byte 0 --4 .byte 0 first.
    SearchRead3=ReadDataWord[2];        //byte 0 --4 .byte 0 first.
    SearchRead4=ReadDataWord[3];        //byte 0 --4 .byte 0 first.
    SearchRead5=ReadDataWord[4];        //byte 0 --4 .byte 0 first.

    Delay10us(2);
   #endif              

    
    CMD_SendStart();
    if (CMD_SendByte(0x0c1))             //chip addr of read data 
       {
        for (i=0;i<5;i++)
            ReadDataWord[i] =(i==4)? CMD_GetByte(1):CMD_GetByte(0);      //the last byte with ACK.
        CMD_SendStop();
       }
    else CMD_SendStop();

    #if 1        //test only!!
    SearchRead1=ReadDataWord[0];        //byte 0 --4 .byte 0 first.
    SearchRead2=ReadDataWord[1];        //byte 0 --4 .byte 0 first.
    SearchRead3=ReadDataWord[2];        //byte 0 --4 .byte 0 first.
    SearchRead4=ReadDataWord[3];        //byte 0 --4 .byte 0 first.
    SearchRead5=ReadDataWord[4];        //byte 0 --4 .byte 0 first.

    Delay10us(2);

    #endif


}







/////////////////////////






/*********************************************************
* NAME    : SearchOver
*           CHK if the  search Finished accoding the SWPORT1 
*
* Returns : none
*
* Parameter         Description
* --------------------------------------------------------
* none
* 
* Externals         Usage
* --------------------------------------------------------
*
*
* Additional information:
* Local subfunction
*********************************************************/
BYTE data  LowCount=0;            //for test only 
static BIT SearchOver(void)
{
  LowCount++;                
  return(SWPORT1) ;         //PIN from low to high. Then tuning over
                        
} 

   
/*********************************************************
* NAME    : TuneOver
*           CHK if the PreeSet or search Finished according 
*           the read byte1.7
*            
*
* Returns : none
*
* Parameter         Description
* --------------------------------------------------------
* none
* 
* Externals         Usage
* --------------------------------------------------------
*
*
* Additional information:
* Local subfunction
*********************************************************/
 BYTE tbRead1;
 BYTE tbRead2;
 BIT Stereo=False;
 BIT Ready=False;


static void TuneOver(void)
{
 BIT Ready=False;
 ReadSTR();                                    //how about continue read????   mao 
0227
 tbRead1=ReadDataWord[0];
 tbRead2=ReadDataWord[2];
 LowCount++;                               //for test only.

 if((tbRead1&0x40) != 0) BandLimit=True;       //limited
 else BandLimit=False;
 
 if((tbRead2&0x80) != 0) Stereo=True;
 else Stereo=False;

 tbRead1=ReadDataWord[0];
 if((tbRead1&0x80) != 0) Ready=True;        //Found
 else Ready=False;

  
} 




/*********************************************************
* NAME    : AssembleFrequencyWord
*          given a VCO frequency calculate and load the frequency databitsr 
*           and save the PLL Fre to DataWord[37-24] =14 bits 
*           5757 have 15 bits and the bits location is different!
* Returns : none
*
* Parameter         Description
* --------------------------------------------------------
* none
* 
* Externals         Usage
* --------------------------------------------------------
*  WriteDataWord[37-24]     the bits will be Set according cal result(out)
*  gdwPresetVCO                in    
*        
* Additional information:
* Local subfunction
* All the Frequency unit is KHz.!
* Test it is ok 02/26
*********************************************************/

static void AssembleFrequencyWord(void)        
{
   UINT16 twPLL =0;                            //Dec 
   UINT32 tdwPresetVCO  =gdwPresetVCO;            //Khz
   BYTE tbTmp1;
   BYTE tbTmp2;
                  
  // calcu1ate frequency dataword bits from given station frequency BCD:  
    if(FlagHighInjection)
     twPLL =(unsigned int)((float)((tdwPresetVCO +225)*4)/(float)REFERENCE_FREQ);
    else
     twPLL =(unsigned int)((float)((tdwPresetVCO -225)*4)/(float)REFERENCE_FREQ);
  //convert BCD to Hex.
     tbTmp1 =(unsigned char)(twPLL%256);             //6789=Hex1A85 -->133=Hex85
     tbTmp2 =(unsigned char)(twPLL/256);             //             -->26=Hex1A  
    
     WriteDataWord[0]=tbTmp2;                    //high block                            
     WriteDataWord[1]=tbTmp1;  
       
} 


/*********************************************************
* NAME    : DisAssembleFrequencyWord
*          given a frequency dataword and waveband, 
*           calculate the VCO frequency
*           Get the PLL Freq BITs from DataWord[37-24] =14 bits 
*           5757 have 15 bits and the bits location is different!
* Returns : none
*
* Parameter         Description
* --------------------------------------------------------
* none
* 
* Externals         Usage
* --------------------------------------------------------
* ReadDataWord[37-24]     the bits will be taken(in)
* gdwSearchedVCO              the Freq (out)
*        
* Additional information:
* Local subfunction
* Tested, It is Ok. 02/26
*********************************************************/
 void DisAssembleFrequencyWord(void)        
{
   UINT16 twPLL =0;                                  //Dec 
   UINT32 tdwPresetVCO  =gdwPresetVCO;              //Khz

   BYTE tbTmp1=ReadDataWord[1];
   BYTE tbTmp2=ReadDataWord[0];
   tbTmp2&=0x3f;


   twPLL=tbTmp2*256+tbTmp1;
          
   // calculate searched station frequency from dataword bits 
    if(FlagHighInjection)
     gdwSearchedVCO =(unsigned long)((float)twPLL*(float)REFERENCE_FREQ*(float)0.25-225);
    else
     gdwSearchedVCO =(unsigned long)((float)twPLL*(float)REFERENCE_FREQ*(float)0.25+225);
               
} 


/*********************************************************
* NAME    : AssembleData
*         assemble a full data word based on global variables
*
* Returns : none
*
* Parameter         Description
* --------------------------------------------------------
* none
* 
* Externals         Usage
* --------------------------------------------------------
* DataWord[39-0]     the bits will be Set(out)
* The global Variable in as below list!!
*
* FlagSearch        in, if search or preSet mode?  StartSearch     [38]    
* FlagLevel         in  search stop level                          
[21,22]
* FalgMono            in.
* FlagSWPORT2        in
* FlagSearchtUp     in
* gdwPresetVCO         in
*
* WriteDataWord[]    out.
*
* Additional information:
* Local subfunction
* Tested, It is Ok. 4/16
*********************************************************/
BYTE Write1;

static void AssembleData(void)
{
  WriteDataWord[3] = 0x11;                //32k /p1 found.    
  WriteDataWord[4] = 0x40;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区不卡| 欧美二区乱c少妇| 成人免费在线播放视频| 成人国产精品免费观看动漫| 亚洲国产激情av| 91丝袜美腿高跟国产极品老师 | 精品粉嫩超白一线天av| 捆绑调教美女网站视频一区| 国产亚洲综合色| 99在线热播精品免费| 亚洲乱码国产乱码精品精98午夜| 欧美午夜精品久久久久久孕妇| 日av在线不卡| 欧美国产激情一区二区三区蜜月| 91丝袜呻吟高潮美腿白嫩在线观看| 婷婷中文字幕综合| 久久精品亚洲国产奇米99| av资源站一区| 天天色综合成人网| 国产日韩综合av| 欧美日韩国产中文| 国产99一区视频免费| 性做久久久久久免费观看| 久久男人中文字幕资源站| 一本久道久久综合中文字幕 | 美女网站色91| 椎名由奈av一区二区三区| 在线成人免费视频| 成人免费观看视频| 免费在线欧美视频| 亚洲天堂a在线| 日韩片之四级片| 91麻豆免费在线观看| 久久精品国产免费| 亚洲影视在线播放| 国产精品国产精品国产专区不蜜| 欧美精品欧美精品系列| 不卡的av在线| 国产一区二区久久| 日本伊人午夜精品| 亚洲欧美激情一区二区| 久久久久高清精品| 欧美一区二区三区精品| 色婷婷综合五月| 成人av综合一区| 国产一区二区网址| 免费av成人在线| 亚洲国产一区视频| 亚洲精品中文在线影院| 国产精品网站一区| 精品国产麻豆免费人成网站| 欧美日韩一区二区三区高清 | 欧美性受xxxx| 成人国产亚洲欧美成人综合网| 美国十次了思思久久精品导航| 亚洲一区在线视频| 亚洲精品一卡二卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久婷婷成人综合色| 在线电影院国产精品| 91麻豆蜜桃一区二区三区| 成人精品视频.| 国产电影精品久久禁18| 老汉av免费一区二区三区| 婷婷国产在线综合| 爽好久久久欧美精品| 午夜精品久久久久久久久久久| 亚洲久本草在线中文字幕| 亚洲欧洲日本在线| 亚洲日本一区二区| 成人免费在线播放视频| 1区2区3区精品视频| 中文字幕欧美一| 中文字幕在线不卡| 国产精品高潮呻吟久久| 一区精品在线播放| 亚洲男人的天堂在线观看| 亚洲视频网在线直播| 综合久久国产九一剧情麻豆| 亚洲视频一区在线| 亚洲小说欧美激情另类| 亚洲一二三四在线| 午夜精品影院在线观看| 日韩精品亚洲专区| 久久99热狠狠色一区二区| 久久se这里有精品| 国产不卡在线播放| 97久久久精品综合88久久| 99久久精品一区| 欧美综合天天夜夜久久| 欧美高清一级片在线| 欧美一级二级三级乱码| 精品福利二区三区| 18涩涩午夜精品.www| 亚洲激情五月婷婷| 日韩1区2区3区| 国产精品一卡二卡在线观看| 国产精品影音先锋| 91国产视频在线观看| 4438x亚洲最大成人网| 久久综合色一综合色88| 中文字幕免费观看一区| 亚洲香蕉伊在人在线观| 老司机午夜精品99久久| www.日本不卡| 在线电影院国产精品| 国产无人区一区二区三区| 成人欧美一区二区三区白人| 午夜欧美大尺度福利影院在线看| 黄色成人免费在线| 91福利社在线观看| 日韩欧美国产电影| 亚洲人成影院在线观看| 蜜臀av亚洲一区中文字幕| www.av精品| 日韩欧美一区在线观看| 亚洲欧美一区二区三区国产精品| 日产国产高清一区二区三区| 国产**成人网毛片九色 | 亚洲宅男天堂在线观看无病毒| 日韩国产欧美三级| 9i在线看片成人免费| 日韩免费看的电影| 亚洲精品乱码久久久久久久久 | 3751色影院一区二区三区| 久久久久久亚洲综合影院红桃| 一区二区国产视频| 国内精品国产成人国产三级粉色| 色综合色综合色综合| 日韩免费观看高清完整版| 亚洲乱码国产乱码精品精98午夜 | 蜜桃精品在线观看| 91片在线免费观看| 久久精品综合网| 久久精品99国产国产精| 欧美性生活大片视频| 日韩伦理av电影| 国产一区二区免费看| 日韩免费观看高清完整版| 亚洲自拍偷拍综合| 97久久精品人人做人人爽| 国产偷国产偷精品高清尤物| 久久精品久久综合| 欧美精品日日鲁夜夜添| 亚洲女与黑人做爰| 97se狠狠狠综合亚洲狠狠| 久久色中文字幕| 久久99国产精品久久99果冻传媒| 欧美视频中文一区二区三区在线观看| 日本一区二区三区在线不卡| 久久成人久久鬼色| 日韩网站在线看片你懂的| 图片区小说区区亚洲影院| 欧美性感一类影片在线播放| 亚洲欧美在线观看| 不卡的看片网站| 国产精品久久久久久久久晋中| 国产一区二区免费看| 久久综合给合久久狠狠狠97色69| 日产国产欧美视频一区精品| 91精品国产丝袜白色高跟鞋| 亚洲一区二区在线免费看| 91久久精品一区二区三| 亚洲人成人一区二区在线观看| 成人美女视频在线观看| 国产婷婷精品av在线| 成人一区二区三区在线观看| 日本一区二区免费在线| 成人免费观看av| 成人免费在线视频观看| 在线精品视频一区二区| 亚洲一区二区三区美女| 91精品婷婷国产综合久久| 日韩不卡一区二区| 精品美女在线观看| 国产一本一道久久香蕉| 日本一区二区免费在线观看视频 | 欧美亚洲愉拍一区二区| 午夜精品久久久久久不卡8050| 欧美日韩亚洲国产综合| 奇米色一区二区三区四区| 精品卡一卡二卡三卡四在线| 国产剧情av麻豆香蕉精品| 国产精品三级在线观看| 色婷婷综合在线| 五月天精品一区二区三区| 久久综合给合久久狠狠狠97色69| 国产成人亚洲综合a∨婷婷| 中文字幕亚洲在| 欧美视频自拍偷拍| 久久国产麻豆精品| 国产精品卡一卡二卡三| 欧美日韩一区不卡| 韩国一区二区三区| 亚洲精选在线视频| 日韩精品一区二区三区在线| 从欧美一区二区三区| 亚洲午夜久久久久久久久久久| 欧美精品一区二区三区蜜臀| 不卡欧美aaaaa|