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

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

?? osd.c

?? Bitek 公司 bit1611b模擬屏驅(qū)動芯片外接MCU驅(qū)動DEMO源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* **********************************************************************

         Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd

         All rights are reserved. Reproduction in whole or in parts is
    prohibited without the prior written consent of the copyright owner.
   ----------------------------------------------------------------------

    Module: OSD.C

    Purpose: Implementation of OSD module.

    Version: 0.01                                   11:01AM  2005/11/17

    Compiler: Keil 8051 C Compiler v8.01

    Reference:
    [1] BIT1611B Datasheet Version 1.0, 2005-11-10, Beyond Innovation Technology
    [2] MTV121 Super On-Screen-Display for LCD Monitor, Revision 5.0
        06/29/1999 Myson Technology

   ----------------------------------------------------------------------
    Modification:

    R0.01 09:48AM  2005/11/17 Jeffrey Chang
    Reason:
        1. Original.
    Solution:

   ********************************************************************** */

#define _OSD_C_

/* ------------------------------------
    Header Files
   ------------------------------------ */
#include "bitek.h"
#include "eeprom.h"
#include "intrins.h"
#include "led.h"
#include "osd.h"
#include "platform.h"
#include "timer.h"

/* ------------------------------------
    Macro Definitions
   ------------------------------------ */

/* ------------------------------------
    Type Definitions
   ------------------------------------ */

/* ------------------------------------
    Variables Definitions
   ------------------------------------ */
#if (OSD_CFG == OSD_BIT1611B)
    static UB8 CODE abProgressBarTV[] =         { OSD_00_DASH_0,    OSD_01_DASH_1,  OSD_02_DASH_2   };
    static UB8 CODE abProgressBarMONITOR[] =    { OSD_10_BAR_0,     OSD_11_BAR_1,   OSD_12_BAR_2,
                                                  OSD_13_BAR_3,     OSD_14_BAR_4,   OSD_15_BAR_5    };
    static UB8 CODE abTrackBar[] =              { OSD_01_TRACK_1,   OSD_06_TRACK_2, OSD_07_TRACK_3  };
#endif


/* ------------------------------------
    Function Prototypes
   ------------------------------------ */


#pragma OPTIMIZE (6)
/* -------------------------------------------------------------------
    Name: OSD_DisplayAddress - (OSD_BIT1611B)
    Purpose: To calculate OSD Display Address.
    Passed:
        UB8     bWindow = OSD Window Identifier.
        UB8     bRow    = Position in rows
        UB8     bCol    = Position in columns

    Returns: OSD Display Address.
    Notes:
   ------------------------------------------------------------------- */
UW16 OSD_DisplayAddress (
UB8     bWindow,
UB8     bRow,
UB8     bCol
)
{
    switch (bWindow)
    {
        case OSD_WINDOW1:
            return(VP_0500_057F_DISPLAY_CODE + OSD_WINDOW1_BASE +
                   bRow * OSD_WINDOW1_WIDTH + bCol                  );
            break;

        case OSD_WINDOW2:
            return(VP_0500_057F_DISPLAY_CODE + OSD_WINDOW2_BASE +
                   bRow * OSD_WINDOW2_WIDTH + bCol                  );
            break;

        case OSD_WINDOW3:
        default:
            return(VP_0500_057F_DISPLAY_CODE + OSD_WINDOW3_BASE +
                   bRow * OSD_WINDOW3_WIDTH + bCol                  );
            break;
    }
} /* OSD_DisplayAddress */
#pragma OPTIMIZE (9)


#if (OSD_DSP_PROGRESSBAR)
/* -------------------------------------------------------------------
    Name: OSD_DspProgressBar - (OSD_BIT1611B)
    Purpose: To display a progress bar at specified position in OSD window.
    Passed:
        UB8     bWindow     = OSD Window Identifier.
        UB8     bCol,       = Progress bar horizontal position in columns.
        UB8     bRow,       = Progress bar vertical position in rows.
        UW16    wMin,       = Progress bar minimal value.
        UW16    wMax,       = Progress bar maximal value.
        UW16    wValue      = Progress bar indicative value.
        UB8     bWidth,     = Progress bar width
        UB8     bStyle      = Progress bar Style
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void OSD_DspProgressBar (
UB8     bWindow,
UB8     bCol,       // Progress bar horizontal position in columns
UB8     bRow,       // Progress bar vertical position in rows
UW16    wMin,       // Progress bar minimal value
UW16    wMax,       // Progress bar maximal value
UW16    wValue,     // Progress bar indicative value
UB8     bWidth,     // Progress bar width
UB8     bStyle      // Progress bar style
)
{
    UB8     bFull;
    UB8     bUnit;
    UW16    wAddr;


    wAddr = OSD_DisplayAddress(bWindow, bRow, bCol);

    // Note: MONITOR Style contains LEFT and RIGHT !
    if (bStyle != OSD_STYLE_TV1)
        bWidth -= 2;

    switch (bStyle)
    {
        case OSD_STYLE_TV1:
        default:
            // Dash Type

            // Rounding
            bUnit = (UW32)(wValue - wMin) * OSD_DASH_TOTAL * bWidth /
                    (wMax - wMin);

            bFull = bUnit / OSD_DASH_TOTAL;

            // Fill FULL Dash Bar !
            BITEK_TxRepeat(OSD_MAD, wAddr, bFull, OSD_03_DASH_FULL);

            if (bFull != bWidth)
            {
                // Fill Dash 0 Bar !
                BITEK_TxRepeat(OSD_MAD, wAddr + bFull, bWidth - bFull, OSD_00_DASH_0);

                // Show Dash Bar !
                BITEK_TxByte(OSD_MAD, wAddr + bFull, abProgressBarTV[ bUnit % OSD_DASH_TOTAL ]);
            }
            break;

        case OSD_STYLE_MONITOR1:
            // Bar Type

            // Rounding
            bUnit = (UW32)(wValue - wMin) * OSD_BAR_TOTAL * bWidth /
                   (wMax - wMin);

            bFull = bUnit / OSD_BAR_TOTAL;


            // LEFT/RIGHT BAR !
            BITEK_TxByte(OSD_MAD, wAddr,          OSD_5B_BAR_LEFT);
            BITEK_TxByte(OSD_MAD, wAddr+bWidth+1, OSD_5D_BAR_RIGHT);

            // Fill FULL BAR !
            wAddr++;
            BITEK_TxRepeat(OSD_MAD, wAddr, bFull, OSD_16_BAR_FULL);

            if (bFull != bWidth)
            {
                // Fill Dash 0 Bar !
                BITEK_TxRepeat(OSD_MAD, wAddr + bFull, bWidth - bFull, OSD_10_BAR_0);

                // Show Dash Bar !
                BITEK_TxByte(OSD_MAD, wAddr + bFull, abProgressBarMONITOR[ bUnit % OSD_BAR_TOTAL ]);
            }
            break;
    }
} /* OSD_DspProgressBar */
#endif


#if (OSD_DSP_TRACKBAR)
/* -------------------------------------------------------------------
    Name: OSD_DspTrackBar - (OSD_BIT1611B)
    Purpose: To display a track bar at specified position in OSD window.
    Passed:
        UB8     bWindow     = OSD Window Identifier.
        UB8     bCol,       = Track bar horizontal position in columns
        UB8     bRow,       = Track bar vertical position in rows
        UW16    wMin,       = Track bar minimal value
        UW16    wMax,       = Track bar maximal value
        UW16    wValue      = Track bar indicative value
        UB8     bWidth      = Track bar width
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void OSD_DspTrackBar (
UB8     bWindow,
UB8     bCol,       // Track bar horizontal position in columns
UB8     bRow,       // Track bar vertical position in rows
UW16    wMin,       // Track bar minimal value
UW16    wMax,       // Track bar maximal value
UW16    wValue,     // Track bar indicative value
UB8     bWidth      // Track bar width
)
{
    UB8     bUnit;
    UW16    wAddr;


    wAddr = OSD_DisplayAddress(bWindow, bRow, bCol);

    // Rounding
    bUnit = ((UW32)(wValue - wMin) * OSD_TRACK_TOTAL * bWidth) /
            (wMax - wMin);

    if (bUnit == OSD_TRACK_TOTAL * bWidth)
        bUnit--;

    // Fill Track 0 Bar !
    BITEK_TxRepeat(OSD_MAD, wAddr, bWidth, OSD_00_TRACK_0);

    // Show Track Bar !
    BITEK_TxByte(OSD_MAD, wAddr + bUnit / OSD_TRACK_TOTAL, abTrackBar[ bUnit % OSD_TRACK_TOTAL ]);
} /* OSD_DspTrackBar */
#endif


/* -------------------------------------------------------------------
    Name: OSD_EnableWindow - (OSD_BIT1611B)
    Purpose: To enable/disable OSD Windows.
    Passed:
        UB8     bWindow = OSD Window Identifier.
        BOOL    fOn = Enable (TRUE) or Disable (FALSE).
    Returns: None.
    Notes: [1]118
   ------------------------------------------------------------------- */
void OSD_EnableWindow (
UB8     bWindow,
BOOL    fOn
)
{
    UB8 bData;


    if (bWindow & OSD_WINDOW1)
    {
        ////////////////////////////////////////////////////////
        // [JC010] OSD Image Retention issue fixed by JC 09:15AM  2006/04/25
        #ifdef NOT_JUNK
        bData = BITEK_RxByte(OSD_MAD, VP_143_OSD1_ATTR4);

        if ( fOn )
            bData |= VP_MASK_OSD1_EN;
        else
            bData &= (~VP_MASK_OSD1_EN);

        BITEK_TxByte(OSD_MAD, VP_143_OSD1_ATTR4, bData);
        #endif

        bData = BITEK_RxByte(OSD_MAD, VP_13A_OSD1_POSITION_MSB);

        if ( fOn )
            bData &= (~VP_MASK_H_POSITION_OFF);
        else
            bData |= VP_MASK_H_POSITION_OFF;

        BITEK_TxByte(OSD_MAD, VP_13A_OSD1_POSITION_MSB, bData);
        ////////////////////////////////////////////////////////
    }

    if (bWindow & OSD_WINDOW2)
    {
        bData = BITEK_RxByte(OSD_MAD, VP_151_OSD2_ATTR4);

        if ( fOn )
            bData |= VP_MASK_OSD2_EN;
        else
            bData &= (~VP_MASK_OSD2_EN);

        BITEK_TxByte(OSD_MAD, VP_151_OSD2_ATTR4, bData);
    }

    if (bWindow & OSD_WINDOW3)
    {
        bData = BITEK_RxByte(OSD_MAD, VP_15F_OSD3_ATTR4);

        if ( fOn )
            bData |= VP_MASK_OSD3_EN;
        else
            bData &= (~VP_MASK_OSD3_EN);

        BITEK_TxByte(OSD_MAD, VP_15F_OSD3_ATTR4, bData);
    }
} /* OSD_EnableWindow */



/* -------------------------------------------------------------------
    Name: OSD_FillCharAttr - (OSD_BIT1611B)
    Purpose:
        To fill OSD display RAM with the same character attribute.

    Passed:
        bOffset = The character attribute start location.
        bCnt = The number of filled characters (1..255).
        bCharAttr =  The same character attribute.
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void OSD_FillCharAttr (
UB8     bOffset,
UB8     bCnt,           // 1..255
UB8     bCharAttr       // Char Attribute
)
{
    BITEK_TxRepeat(OSD_MAD, VP_0580_05FF_DISPLAY_ATTR + bOffset, bCnt, bCharAttr);
} /* OSD_FillCharAttr */


/* -------------------------------------------------------------------
    Name: OSD_FillCharCode - (OSD_BIT1611B)
    Purpose:
        To fill OSD display RAM with the same character code.

    Passed:
        bOffset = The character code start location.
        bCnt = The number of filled characters (1..255).
        bCharCode = The same character code.
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void OSD_FillCharCode (
UB8     bOffset,
UB8     bCnt,           // 1..255
UB8     bCharCode       // Character Code
)
{
    BITEK_TxRepeat(OSD_MAD, VP_0500_057F_DISPLAY_CODE + bOffset, bCnt, bCharCode);
} /* OSD_FillCharCode */


/* -------------------------------------------------------------------
    Name: OSD_FillCharCodeAttr - (OSD_BIT1611B)
    Purpose:
        To fill OSD display RAM with the same character code and attribute.

    Passed:
        bOffset = The character start location.
        bCnt = The number of filled characters (1..255).
        bCharCode = The same character code.
        bCharAttr = The same character attribute.
                    5 4 3 2 1 0
                    | | | |_|_|_ Foregound Attribute Index (0..7)
                    |_|_|_______ Backgound Attribute Index (0..7)
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void OSD_FillCharCodeAttr (
UB8     bOffset,
UB8     bCnt,           // 1..255
UB8     bCharCode,      // Char Code
UB8     bCharAttr       // Char Attribute
)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩和欧美一区二区三区| 日韩免费在线观看| 樱桃视频在线观看一区| 99精品欧美一区二区蜜桃免费| 国产精品国产精品国产专区不蜜 | 91麻豆国产福利在线观看| 国产精品女同一区二区三区| 99精品欧美一区| 亚洲综合色在线| 欧美精品高清视频| 国产在线观看免费一区| 久久九九久精品国产免费直播| 丁香天五香天堂综合| 中文字幕中文字幕一区| 欧美午夜一区二区| 久久成人免费网| 日本一区二区免费在线观看视频| 97国产精品videossex| 亚洲一区二区免费视频| 欧美成人福利视频| 成人av资源网站| 一区二区三区精品视频| 欧美一级黄色大片| 成人一区二区三区视频| 午夜日韩在线观看| 国产三级一区二区三区| 在线免费亚洲电影| 黄色精品一二区| 亚洲人成网站影音先锋播放| 日韩一区二区三区在线| av电影一区二区| 免费在线观看一区二区三区| 国产女人18水真多18精品一级做 | 99久久久精品| 日韩激情一二三区| 国产精品理论片| 日韩精品综合一本久道在线视频| 99久久亚洲一区二区三区青草| 天天综合日日夜夜精品| 国产精品美女久久久久久 | 日本成人在线电影网| 国产精品天美传媒| 欧美二区乱c少妇| 91女神在线视频| 国内精品久久久久影院薰衣草| 亚洲欧美日韩一区二区三区在线观看| 日韩一区二区在线观看视频播放 | 91精品福利视频| 国产成人综合自拍| 麻豆久久一区二区| 亚洲一区二区视频在线观看| 国产亚洲欧洲997久久综合| 欧美日精品一区视频| 9久草视频在线视频精品| 美女视频黄 久久| 午夜电影网一区| 一区二区免费视频| 亚洲欧洲成人精品av97| 国产午夜三级一区二区三| 日韩一区二区免费电影| 欧美日韩高清一区二区三区| 色综合久久久久久久久| 不卡大黄网站免费看| 国产在线视视频有精品| 日本aⅴ精品一区二区三区 | 国产亚洲精品资源在线26u| 亚洲免费色视频| 亚洲国产精品成人综合| 久久久一区二区| 欧美一区二区福利在线| 88在线观看91蜜桃国自产| 欧美日韩色一区| 在线观看亚洲成人| 色一情一乱一乱一91av| 91丨porny丨国产入口| 91网站最新地址| 91一区二区在线观看| 99久久伊人网影院| 99精品桃花视频在线观看| 99久久精品一区| 91丨国产丨九色丨pron| 在线日韩av片| 欧美日韩国产高清一区二区三区| 精品视频在线免费观看| 欧美少妇bbb| 91精品在线免费观看| 欧美一级理论片| 精品人在线二区三区| 精品国产91乱码一区二区三区 | 国产色产综合产在线视频| 欧美高清在线精品一区| 国产精品久久久久久久第一福利| 亚洲视频在线观看一区| 亚洲一线二线三线视频| 天堂午夜影视日韩欧美一区二区| 天天操天天干天天综合网| 日韩电影一区二区三区四区| 激情综合色播五月| 成人av在线播放网址| 在线日韩av片| 精品久久久久久久久久久院品网| 国产日韩欧美综合在线| 中文字幕一区二区三区精华液| 亚洲一区二区在线观看视频| 国产精品一品视频| 国产精品一区一区| 色综合久久88色综合天天免费| 色老汉一区二区三区| 制服丝袜中文字幕亚洲| 久久色中文字幕| 一区二区高清免费观看影视大全| 视频一区二区国产| 国产激情一区二区三区| 在线观看91视频| 666欧美在线视频| 国产欧美日韩中文久久| 亚洲va欧美va人人爽| 国产又黄又大久久| 色94色欧美sute亚洲13| 精品美女一区二区| 亚洲精品国产一区二区精华液| 美女国产一区二区三区| 91香蕉视频mp4| 精品美女一区二区三区| 亚洲综合图片区| 国产精品亚洲第一区在线暖暖韩国 | caoporm超碰国产精品| 欧美三区在线视频| 国产欧美一区在线| 日韩国产欧美在线播放| 成人av中文字幕| 26uuu国产在线精品一区二区| 亚洲精品中文字幕乱码三区| 激情文学综合插| 欧美亚洲国产一区二区三区| 国产偷国产偷精品高清尤物| 亚洲1区2区3区4区| 97精品久久久久中文字幕| 精品国产3级a| 日韩精彩视频在线观看| 91视频在线观看免费| 久久亚洲欧美国产精品乐播| 日韩专区欧美专区| 在线免费观看日韩欧美| 国产精品久久99| 国产乱一区二区| 日韩欧美国产一区二区三区| 亚洲综合小说图片| 色综合久久久久综合99| 国产精品无码永久免费888| 国内精品写真在线观看| 日韩欧美一区二区不卡| 午夜精品久久久久久久蜜桃app| 99久久久国产精品| 国产精品美女久久福利网站| 精品亚洲aⅴ乱码一区二区三区| 制服丝袜av成人在线看| 亚洲国产成人高清精品| 在线免费观看不卡av| 中文字幕欧美一区| 成人v精品蜜桃久久一区| 国产欧美日韩中文久久| 国产精品12区| 日本一区二区三区在线不卡| 国产在线精品免费| 久久久久久影视| 国产精品1区二区.| 国产欧美一区二区三区沐欲| 国产麻豆成人传媒免费观看| 久久网这里都是精品| 激情综合色综合久久综合| 精品福利在线导航| 国产乱国产乱300精品| 国产肉丝袜一区二区| 大白屁股一区二区视频| 国产精品丝袜在线| 91网页版在线| 午夜精品一区二区三区三上悠亚 | 成人激情免费网站| 中文字幕制服丝袜成人av| 成人a免费在线看| 亚洲乱码一区二区三区在线观看| 色婷婷国产精品| 日韩精品欧美成人高清一区二区| 欧美一区二区免费观在线| 韩国成人在线视频| 欧美国产97人人爽人人喊| 91蝌蚪porny九色| 午夜不卡在线视频| 精品sm捆绑视频| 99精品视频一区二区三区| 亚洲资源中文字幕| 欧美大白屁股肥臀xxxxxx| 国产精品1区二区.| 亚洲精品久久久蜜桃| 337p亚洲精品色噜噜噜| 国产成人在线视频免费播放| 亚洲天堂av老司机| 在线不卡a资源高清| 国产成人免费视频网站|