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

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

?? basal_fmradio.c

?? 5807收音機模塊用于炬力平臺
?? C
字號:
/*
 *******************************************************************************
 *                ACTOS AP
 *        FM tunner basal module implementation
 *
 *        (c) Copyright Actions Co,Ld.
 *
 *******************************************************************************
 */
#include "actos.h"
#include "fmradio.h"     
//#include "chip_cfg.h" 
//#include "../inc/typeext.h"
//#include "../inc/mmcmd.h"
//---公共變量區


//extern WORD FMStationTab[20];
//WORD            G_FMStationTab[20];
//fm_play_status_t    G_FMPlaystatus;


//-----basal module ----
#pragma memory=dataseg(RCODE)

//電臺頻率對照表(注:頻率范圍87M-108M 以K為精度要三位數,但由于最高位都是1,所以就可不記錄,只記中低位就可以了).

WORD m_FMStationTab[20]; 
fm_play_status_t m_FMPlaystatus; //當前電臺信息
FMStatus_Tab_t d_FMStatus; //從FM硬件讀取的當前頻率和聲道信息
char disable_hosc;


#pragma memory=default
//extern WORD SearchFreq;
//extern WORD SetFreq;

#pragma codeseg(MOD_BS_FMRADIO)

BOOL fmSendCommand(BYTE cmd, int param)
{
    int i;
    uchar k;
    uint Tempfreq; 

//    if( (0x7f34 < m_FMPlaystatus.freq) && ( m_FMPlaystatus.freq < 0x80c4) ) disable_hosc = 1;
//    else disable_hosc = 0;
//    

    switch (cmd)
    {
        case MC_OPEN:
        BankSwitch(address_24_of(FM_Init) >> 16);
        return FM_Init(m_FMPlaystatus.mode, (BYTE) param);
        case MC_PLAY:
        BankSwitch(address_24_of(FM_SetFreq) >> 16);
           Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
           FM_SetFreq(Tempfreq);                 
        break;

        case MC_STEP:
        if (m_FMPlaystatus.station_count == 0)
            return FALSE;
        k = 0;
        switch (param)
        {
            case UP: //找到下一電臺頻率
            if (m_FMPlaystatus.station == m_FMPlaystatus.station_count)
                m_FMPlaystatus.station = 0;
            m_FMPlaystatus.station++;
            for (i = 0; i < 20; i++)
            {
                if (m_FMStationTab[i] != 0)
                {
                    k++;
                    if (k == m_FMPlaystatus.station)
                        break;
                }

            }
            if (i >= 20) // 如沒有找到電臺,重新設置電臺數
            {
                m_FMPlaystatus.station_count = k - 1;
                m_FMPlaystatus.station = 1;
            }
            break;
            case DOWN: //找到上一電臺頻率
            if (m_FMPlaystatus.station == 1)
                m_FMPlaystatus.station = m_FMPlaystatus.station_count + 1;
            m_FMPlaystatus.station--;
            for (i = 0; i < 20; i++)
            {
                if (m_FMStationTab[i] != 0)
                {
                    k++;
                    if (k == m_FMPlaystatus.station)
                        break;
                }
            }
            if (i >= 20) // 如沒有找到電臺,重新設置電臺數
            {
                m_FMPlaystatus.station = m_FMPlaystatus.station_count = k + 1;
            }
            break;
            default:
            break;
        }
            m_FMPlaystatus.freq = m_FMStationTab[i];
        BankSwitch(address_24_of(FM_SetFreq) >> 16);
           Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
           FM_SetFreq(Tempfreq); 
        return TRUE;

        case MC_STEPGRID:
        switch (param)
        {
            case UP:
               if(((m_FMPlaystatus.freq+1)>210)&&(m_FMPlaystatus.mode==0))
                   m_FMPlaystatus.freq=0;
               else if(((m_FMPlaystatus.freq+1)>140)&&(m_FMPlaystatus.mode==1))
               m_FMPlaystatus.freq=0;
            else
               {
                   m_FMPlaystatus.freq += 1;
               }                                                            
            break;
            case DOWN:
               if((m_FMPlaystatus.freq == 0)&&(m_FMPlaystatus.mode==0))m_FMPlaystatus.freq=210;
               else if((m_FMPlaystatus.freq==0)&&(m_FMPlaystatus.mode==1))m_FMPlaystatus.freq=140;
                   
//               if(((m_FMPlaystatus.freq-1)<0)&&
               else
               {
                   m_FMPlaystatus.freq-=1; 
                }                                                                                                                   
            break;
            default:
            break;
        }
        BankSwitch(address_24_of(FM_SetFreq) >> 16);
          Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
          //SetFreq = m_FMPlaystatus.freq;
           FM_SetFreq(Tempfreq);                                     
        return TRUE;

        case MC_SEARCH:
        FM_MUTE(SetMUTE);
        BankSwitch(address_24_of(FM_Search) >> 16);
           Tempfreq = (m_FMPlaystatus.freq<<6) + 0x0010;
           //SearchFreq = m_FMPlaystatus.freq ;
           return     FM_Search(Tempfreq,param);

        case MC_SAVESTATION:
        if (m_FMPlaystatus.station != 0) //當前電臺在電臺表中有保存的情況
        {
            k = 0;
            for (i = 0; i < 20; i++)
            {
                if (m_FMStationTab[i] != 0)
                    k++;
                if (k == m_FMPlaystatus.station)
                {
                    m_FMStationTab[i] = m_FMPlaystatus.freq;
                    break;
                }
            }
        }
        else if (m_FMPlaystatus.station_count > 19)
            return FALSE;
        else //新的電臺頻率保存到電臺表
        {
            m_FMPlaystatus.station_count++;
            for (i = 0; i < 20; i++)
            {
                if (m_FMStationTab[i] == 0)
                {
                    m_FMStationTab[i] = m_FMPlaystatus.freq;
                    m_FMPlaystatus.station = i + 1;
                    break;
                }
            }
        }

        return TRUE;
        case MC_SETMODE:
        m_FMPlaystatus.mode = (Station_bank_t) param;
        break;
        case MC_SETVOLUME:
        BankSwitch(address_24_of(FM_VolumeSet) >> 16);
        FM_VolumeSet((BYTE) param);
        m_FMPlaystatus.volume = (BYTE) param;
        break;
        case MC_BACKUP:
        memcpy((void *) (*(WORD *) param), m_FMStationTab, 40);
        memcpy((void *) (*(WORD *) (param + 2)), &m_FMPlaystatus, sizeof(fm_play_status_t));
        break;

        case MC_RESTORE:
        memcpy(m_FMStationTab, (void *) (*(WORD *) param), 40);
        memcpy(&m_FMPlaystatus, (void *) (*(WORD *) (param + 2)), sizeof(fm_play_status_t));
        break;

        case MC_GETSTATUS:
        BankSwitch(address_24_of(FM_GetStatus) >> 16);
        FM_GetStatus(&d_FMStatus);
        m_FMPlaystatus.freq=d_FMStatus.FM_CurrentFreq;  //rda chenggangdeng
        m_FMPlaystatus.stereo_status = d_FMStatus.FM_Stereo_Status;
           k=0; 
           //當前電臺頻率值和電臺表中某一頻率差距小于150KHZ,此電臺和此電臺表對應         
           for(i=0;i<20;i++)
           {
               m_FMPlaystatus.station=0;
               if(m_FMStationTab[i]!=0)
               {
                   k++;
                   if(abs(m_FMPlaystatus.freq-m_FMStationTab[i])<1)
                   {
                       m_FMPlaystatus.station=k;
                       break;
                   }
               }
           }                             
        memcpy((fm_play_status_t *) param, &m_FMPlaystatus, sizeof(fm_play_status_t));
        break;
        case MC_GETTABLE:
        memcpy((WORD *) param, &m_FMStationTab[0], 20);
        break;
        case MC_DELONE:
        if (m_FMPlaystatus.station == 0)
            return FALSE;
        //m_FMStationTab[m_FMPlaystatus.station-1]=0;
        for (k = m_FMPlaystatus.station; k < m_FMPlaystatus.station_count + 1; k++)
        {
            m_FMStationTab[k - 1] = m_FMStationTab[k];
        }
        m_FMStationTab[m_FMPlaystatus.station_count - 1] = 0;
        m_FMPlaystatus.station_count--;
        m_FMPlaystatus.station = 0;
        return TRUE;
        case MC_DELALL:
        for (i = 0; i < 20; i++)
        {
            m_FMStationTab[i] = 0;
        }
        m_FMPlaystatus.station = 0;
        m_FMPlaystatus.station_count = 0;
        break;
        case MC_MUTE: //靜音
        BankSwitch(address_24_of(FM_MUTE) >> 16);
        while (!(k = FM_MUTE(param)))
        {
            output8(0x4e, input8(0x4e) | 0x8);
            FM_GetStatus(&d_FMStatus);
        }

        break;
        case MC_CLOSE:
        BankSwitch(address_24_of(FM_Standby) >> 16);
           FM_Exit();                //防止退出FM菜單,POP聲
           FM_Standby();
//           FM_Exit();
        break;
        case MC_GETFREQ:
        *(uint *) param = m_FMPlaystatus.freq;
        break;
        case MC_SETFREQ:
        m_FMPlaystatus.freq = param;
        break;
        default:
        break;
    }

    return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜自拍制服另类| 亚洲影院久久精品| 国精产品一区一区三区mba视频 | 日韩毛片视频在线看| 99久久精品国产毛片| 国产精品久久午夜| 在线观看一区不卡| 日韩和欧美一区二区| 日韩欧美中文字幕制服| 国产一区二区三区四区五区入口| 久久色成人在线| 不卡一区二区在线| 亚洲一线二线三线视频| 欧美精品色一区二区三区| 看电视剧不卡顿的网站| 国产日韩欧美高清| 日本国产一区二区| 热久久久久久久| 亚洲国产精品ⅴa在线观看| 93久久精品日日躁夜夜躁欧美| 亚洲第一综合色| 精品福利在线导航| 99久久久国产精品| 天天亚洲美女在线视频| 精品久久一区二区| 色先锋资源久久综合| 麻豆精品在线观看| 日韩一区中文字幕| 欧美xingq一区二区| 91在线丨porny丨国产| 蜜桃av一区二区| 亚洲婷婷综合色高清在线| 奇米影视在线99精品| 国产色婷婷亚洲99精品小说| 色婷婷久久综合| 日韩精品每日更新| 欧美日韩精品久久久| 国产精品网站导航| 日韩黄色一级片| 亚洲一二三专区| 亚洲第一成年网| 99视频精品在线| 亚洲精品日韩专区silk| 国内精品免费**视频| 欧美日韩大陆一区二区| 欧美一区二区黄| 成人黄页在线观看| 蜜臀久久99精品久久久画质超高清| 欧美国产精品一区| 日韩色在线观看| 色av成人天堂桃色av| 国产一区二区在线视频| 亚洲国产成人av网| 国产精品国产三级国产普通话99 | 国产精品午夜电影| 欧美在线一区二区| 亚洲最大成人综合| 成人黄色免费短视频| 成人高清视频在线| 亚洲欧美综合另类在线卡通| kk眼镜猥琐国模调教系列一区二区| 欧美精彩视频一区二区三区| 91免费观看视频| 国产成人av一区二区三区在线观看| 国产精品久久免费看| 91精品国产综合久久精品性色| 国产一区欧美日韩| 丝袜美腿亚洲一区二区图片| 亚洲国产成人一区二区三区| eeuss鲁一区二区三区| 久久精品国产久精国产爱| 日韩激情中文字幕| 亚洲人一二三区| 欧美日韩国产精品成人| 91女神在线视频| 成人ar影院免费观看视频| 国产资源精品在线观看| 午夜伊人狠狠久久| 亚洲一区二区三区自拍| 亚洲男女毛片无遮挡| 欧美高清在线精品一区| 国产喂奶挤奶一区二区三区| 久久久777精品电影网影网 | 日韩欧美一区在线| 久久夜色精品国产欧美乱极品| 欧美一二三区精品| 日韩三级.com| 国产婷婷色一区二区三区 | 色美美综合视频| 粉嫩av亚洲一区二区图片| 国产成人综合自拍| 色婷婷综合久色| 日韩一级片在线播放| 欧美va在线播放| 国产精品国产a| 亚洲一卡二卡三卡四卡无卡久久| 午夜精品久久久久久久99樱桃| 亚洲国产婷婷综合在线精品| 日韩三级中文字幕| 精品毛片乱码1区2区3区| 国产精品1024久久| 日本不卡一区二区三区高清视频| 国产亚洲欧美在线| 18成人在线视频| 亚洲一区二区三区四区在线观看 | 一个色综合av| 国产精品日产欧美久久久久| 日本美女一区二区| 欧美一区二区私人影院日本| 午夜精品久久久久久久久久久| 色综合久久久久综合99| 国产精品美女久久久久高潮| 久久超碰97人人做人人爱| 欧美精品三级在线观看| 亚洲自拍另类综合| 在线观看亚洲精品视频| 一区二区三区精品| 欧美aⅴ一区二区三区视频| 成人丝袜高跟foot| 国产亚洲福利社区一区| 国产伦精品一区二区三区视频青涩 | 九九**精品视频免费播放| 欧美日韩一区二区三区视频| 天堂成人免费av电影一区| 精品国产一二三| 日韩高清不卡一区二区三区| 99久久99久久久精品齐齐| 久久综合久久综合亚洲| 日日骚欧美日韩| 在线观看91精品国产麻豆| 怡红院av一区二区三区| 成人高清伦理免费影院在线观看| 亚洲国产高清不卡| 99久久夜色精品国产网站| 亚洲一区二区三区中文字幕| 在线观看www91| 视频一区欧美精品| 久久亚洲春色中文字幕久久久| 国产黄色91视频| 亚洲色图20p| 日韩无一区二区| 国产999精品久久久久久| 日韩精品一区二区三区老鸭窝| 久久国产视频网| 亚洲成人免费看| 蜜臀国产一区二区三区在线播放| 久久男人中文字幕资源站| 日韩一区二区三区电影在线观看| av不卡一区二区三区| 韩国女主播成人在线观看| 天天av天天翘天天综合网色鬼国产 | 亚洲视频中文字幕| 精品成a人在线观看| 欧美三区在线观看| 岛国一区二区三区| 蜜臀91精品一区二区三区| 国产精品美女一区二区| 日韩欧美一区二区免费| 在线亚洲精品福利网址导航| 粗大黑人巨茎大战欧美成人| 激情六月婷婷综合| 欧美aⅴ一区二区三区视频| 亚洲美女视频在线| 一区精品在线播放| 亚洲女厕所小便bbb| 国产亚洲欧美在线| 最新国产成人在线观看| 一区二区三区日韩在线观看| 亚洲成人你懂的| 韩国欧美国产一区| 欧美亚洲精品一区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩毛片视频在线看| **欧美大码日韩| 首页国产丝袜综合| 国产一区二区美女诱惑| 国产在线精品一区二区夜色 | 国产成人99久久亚洲综合精品| 韩国av一区二区三区在线观看| 久热成人在线视频| 成人永久看片免费视频天堂| 成+人+亚洲+综合天堂| 3d成人h动漫网站入口| 337p日本欧洲亚洲大胆精品| 日本一区二区成人| 婷婷亚洲久悠悠色悠在线播放 | 福利一区二区在线| www.成人在线| 久久久久久久国产精品影院| 偷拍一区二区三区四区| 欧美在线观看一二区| 专区另类欧美日韩| 成人一区二区三区视频在线观看 | 日韩精品亚洲专区| 精品无人区卡一卡二卡三乱码免费卡| 蜜桃一区二区三区在线| 国产成a人无v码亚洲福利| av不卡在线观看| 欧美精品一二三| 中文字幕欧美日韩一区|