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

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

?? s7leklcd.c

?? IAR5.2下 AT91SAM9260 ARM 對 MCP2515 控制源化碼
?? C
字號:
/* ----------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support 
 * ----------------------------------------------------------------------------
 * Copyright (c) 2008, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

//------------------------------------------------------------------------------
//         Headers
//------------------------------------------------------------------------------

#include "s7leklcd.h"
#include <board.h>
#include <utility/assert.h>

//------------------------------------------------------------------------------
//         Local variables
//------------------------------------------------------------------------------

/// List of the 26 SLCD upper chars ( A ~ Z )
static const unsigned short pLcdUpperChars[26] = {
    S7LEKLCD_A, S7LEKLCD_B, S7LEKLCD_C, S7LEKLCD_D,
    S7LEKLCD_E, S7LEKLCD_F, S7LEKLCD_G, S7LEKLCD_H,
    S7LEKLCD_I, S7LEKLCD_J, S7LEKLCD_K, S7LEKLCD_L,
    S7LEKLCD_M, S7LEKLCD_N, S7LEKLCD_O, S7LEKLCD_P,
    S7LEKLCD_Q, S7LEKLCD_R, S7LEKLCD_S, S7LEKLCD_T,
    S7LEKLCD_U, S7LEKLCD_V, S7LEKLCD_W, S7LEKLCD_X,
    S7LEKLCD_Y, S7LEKLCD_Z 
};

/// List of the 26 SLCD lower chars ( a ~ z )
static const unsigned short pLcdLowerChars[26] = {
    S7LEKLCD_a, S7LEKLCD_b, S7LEKLCD_c, S7LEKLCD_d,
    S7LEKLCD_e, S7LEKLCD_f, S7LEKLCD_g, S7LEKLCD_h,
    S7LEKLCD_i, S7LEKLCD_j, S7LEKLCD_k, S7LEKLCD_l,
    S7LEKLCD_m, S7LEKLCD_n, S7LEKLCD_o, S7LEKLCD_p,
    S7LEKLCD_q, S7LEKLCD_r, S7LEKLCD_s, S7LEKLCD_t,
    S7LEKLCD_u, S7LEKLCD_v, S7LEKLCD_w, S7LEKLCD_x,
    S7LEKLCD_y, S7LEKLCD_z 
};

/// List of the 10 SLCD numbers ( 0 ~ 9 )
static const unsigned short pLcdNumbers[10] = {
    S7LEKLCD_0, S7LEKLCD_1, S7LEKLCD_2, S7LEKLCD_3,
    S7LEKLCD_4, S7LEKLCD_5, S7LEKLCD_6, S7LEKLCD_7,
    S7LEKLCD_8, S7LEKLCD_9
};

//------------------------------------------------------------------------------
//         Local functions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// Returns the LCD character code to display given an input character.
/// \param c  Character to display.
/// \param dot  Indicates if the character should be dotted or not.
//------------------------------------------------------------------------------
static unsigned short GetSLcdChar(unsigned char c, unsigned char dot)
{
    unsigned short symbol = 0;

    // Add dot if needed
    if (dot) {

        symbol = S7LEKLCD_DOT;
    }

    // Find corresponding symbol for character
    // Space
    if (c == ' ') {
    
        symbol |= S7LEKLCD_NONE;
    }
    // Single dot
    else if (c == '.') {
    
        symbol |= S7LEKLCD_NONE | S7LEKLCD_DOT;
    }
    // Number
    else if ((c >= '0') && (c <= '9')) {
    
        symbol |= pLcdNumbers[c - '0'];
    }
    // Lower-case letter
    else if ((c >= 'a') && (c <= 'z')) {
    
        symbol |= pLcdLowerChars[c - 'a'];
    }
    // Upper case letter
    else if ((c >= 'A') && (c <= 'Z')) {
    
        symbol |= pLcdUpperChars[c - 'A'];
    }
    // Special characters
    else {
        switch (c) {
            case '+': symbol |= S7LEKLCD_PLUS; break;
            case '-': symbol |= S7LEKLCD_MINUS; break;
            case '=': symbol |= S7LEKLCD_EQUAL; break;
            case '>': symbol |= S7LEKLCD_LARGE; break;
            case '<': symbol |= S7LEKLCD_LESS; break;
            case '\\': symbol |= S7LEKLCD_SLASH; break;
            case '/': symbol |= S7LEKLCD_BACKSLASH; break;
            case '$': symbol |= S7LEKLCD_DOLLAR; break;
            case '|': symbol |= S7LEKLCD_OR; break;
            case ',': symbol |= S7LEKLCD_COMMA; break;
            case '\'': symbol |= S7LEKLCD_INVCOMMA1; break;
            case '"': symbol |= S7LEKLCD_INVCOMMA2; break;
            case '_': symbol |= D; break;
            default: symbol = S7LEKLCD_NONE;
        }
    }

    return symbol;
}

//------------------------------------------------------------------------------
//         Global functions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// Switches a symbol of the LCD on or off.
/// \param symbol  Symbol Index in the LCD buffer matrix.
/// \param set  If 1, the symbol is turned on; otherwise it is turned off.
//------------------------------------------------------------------------------
void S7LEKLCD_Symbol(unsigned short symbol, unsigned char set)
{
    unsigned int common = symbol / 40;
    unsigned int reg = (symbol % 40) / 32;
    unsigned int bit = (symbol % 40) % 32;
    
    if (set) {

        AT91C_BASE_SLCDC->SLCDC_MEM[common * 2 + reg] |= 1 << bit;
    }
    else {

        AT91C_BASE_SLCDC->SLCDC_MEM[common * 2 + reg] &= ~(1 << bit);
    }
}

//------------------------------------------------------------------------------
/// Switches a pixel of the matrix on or off.
/// \param x  Horizontal pixel coordinate.
/// \param y  Vertical pixel coordinate.
/// \param set  If true, the pixel is switched on; otherwise it is switched off.
//------------------------------------------------------------------------------
void S7LEKLCD_Pixel(unsigned char x, unsigned char y, unsigned char set)
{
    SANITY_CHECK(x < 12);
    SANITY_CHECK(y < 10);

    S7LEKLCD_Symbol((x + 1) + (40 * (9 - y)), set);
}

//------------------------------------------------------------------------------
/// Displays a character at the given position on the LCD.
/// \param c  Character definition.
/// \param index  Position of the character on the LCD ([0...11]).
//------------------------------------------------------------------------------
void S7LEKLCD_Char(unsigned short c, unsigned char index)
{
    SANITY_CHECK(index < 12);

    S7LEKLCD_Symbol((40 * 2) + 37 - index * 2 , (c & A) != 0);
    S7LEKLCD_Symbol((40 * 4) + 37 - index * 2 , (c & B) != 0);
    S7LEKLCD_Symbol((40 * 6) + 37 - index * 2 , (c & C) != 0);
    S7LEKLCD_Symbol((40 * 8) + 38 - index * 2 , (c & D) != 0);
    S7LEKLCD_Symbol((40 * 6) + 38 - index * 2 , (c & E) != 0);
    S7LEKLCD_Symbol((40 * 4) + 38 - index * 2 , (c & F) != 0);
    S7LEKLCD_Symbol((40 * 5) + 38 - index * 2 , (c & G) != 0);
    S7LEKLCD_Symbol((40 * 5) + 37 - index * 2 , (c & H) != 0);
    S7LEKLCD_Symbol((40 * 3) + 38 - index * 2 , (c & I) != 0);
    S7LEKLCD_Symbol((40 * 2) + 38 - index * 2 , (c & J) != 0);
    S7LEKLCD_Symbol((40 * 3) + 37 - index * 2 , (c & K) != 0);
    S7LEKLCD_Symbol((40 * 7) + 38 - index * 2 , (c & L) != 0);
    S7LEKLCD_Symbol((40 * 8) + 37 - index * 2 , (c & M) != 0);
    S7LEKLCD_Symbol((40 * 7) + 37 - index * 2 , (c & N) != 0);
    S7LEKLCD_Symbol((40 * 9) + 37 - index * 2 , (c & P) != 0);
}

//------------------------------------------------------------------------------
/// Displays a clock number at the given position.
/// \param c  Number definition.
/// \param index  Position of the character to be displayed ([0..3]).
//------------------------------------------------------------------------------
void S7LEKLCD_ClockNumber(unsigned short c, unsigned char index)
{
    SANITY_CHECK(index < 4);

	S7LEKLCD_Symbol((40 * 0) + 30 - index * 4 , (c & A) != 0);
    S7LEKLCD_Symbol((40 * 0) + 29 - index * 4 , (c & B) != 0);
    S7LEKLCD_Symbol((40 * 0) + 27 - index * 4 , (c & C) != 0);
    S7LEKLCD_Symbol((40 * 1) + 27 - index * 4 , (c & D) != 0);
    S7LEKLCD_Symbol((40 * 1) + 28 - index * 4 , (c & E) != 0);
    S7LEKLCD_Symbol((40 * 1) + 29 - index * 4 , (c & F) != 0);
    S7LEKLCD_Symbol((40 * 0) + 28 - index * 4 , (c & G) != 0);
}

//------------------------------------------------------------------------------
/// Displays a string on the SLCD starting at the specified character index.
/// \param pString  String to display.
/// \param index  Starting index of string.
//------------------------------------------------------------------------------
void S7LEKLCD_PutString(const char *pString, unsigned char index)
{
    unsigned char i;
    unsigned char j;
    unsigned char dot;

    // Clear characters before index
    for (i=0; i < index; i++) {

        S7LEKLCD_Char(S7LEKLCD_NONE, i);
    }

    // Display string
    j = 0;
    dot = 0;
    while ((i < S7LEKLCD_MAX_CHARS) && (pString[j] != 0)) {

        // Check if next character is a dot
        if (pString[j+1] == '.') {

            dot = 1;
        }

        // Skip dots
        if (pString[j] == '.') {

            j++;
        }
        // Display character
        else {

            S7LEKLCD_Char(GetSLcdChar(pString[j], dot), i);
            dot = 0;
            i++;
            j++;
        }
    }

    // Clear characters at end of string
    for (; i < S7LEKLCD_MAX_CHARS; i++) {

        S7LEKLCD_Char(S7LEKLCD_NONE, i);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品传媒视频| 亚洲一区二区三区四区在线观看| 丝袜脚交一区二区| 91福利在线导航| 国内外成人在线| 色视频成人在线观看免| 日韩精品一区国产麻豆| 麻豆精品视频在线| 5月丁香婷婷综合| 欧美在线免费视屏| 国产日韩欧美精品综合| 亚洲午夜精品久久久久久久久| 免费观看久久久4p| 91视频精品在这里| 国产日韩欧美在线一区| 青青草成人在线观看| 一区二区成人在线| 欧美日韩一二区| av中文字幕不卡| 午夜伊人狠狠久久| 国产精品国产三级国产专播品爱网| 国产精品一区二区免费不卡| 国产精品国产三级国产有无不卡 | 亚洲第一成人在线| 欧美群妇大交群中文字幕| 国产99久久久国产精品免费看| 国产蜜臀av在线一区二区三区| 在线成人午夜影院| 成人av资源网站| 亚洲精品一二三| 不卡在线视频中文字幕| 久久综合久久99| 亚洲欧美一区二区久久| 日产精品久久久久久久性色| 亚洲精品老司机| 不卡区在线中文字幕| 欧美国产精品专区| 风间由美一区二区三区在线观看| 日韩精品一区二区三区视频 | 色婷婷综合五月| 中文字幕制服丝袜成人av| 国产精品一区二区视频| 久久女同互慰一区二区三区| 国产综合一区二区| 国产日韩欧美不卡| 菠萝蜜视频在线观看一区| 亚洲国产成人在线| 色综合色狠狠天天综合色| 亚洲精品五月天| 在线观看亚洲成人| 天堂在线一区二区| 精品国产一区二区三区久久久蜜月 | 一本大道久久a久久精二百| 中文字幕欧美区| 99久久久久久99| 专区另类欧美日韩| 欧美探花视频资源| 毛片av中文字幕一区二区| 久久这里只精品最新地址| 懂色av一区二区在线播放| 中文字幕免费观看一区| 色婷婷一区二区三区四区| 午夜久久电影网| 国产视频一区二区三区在线观看| 成人av集中营| 亚洲国产精品精华液网站| 日韩一区二区在线看片| 福利一区福利二区| 午夜精品久久久久影视| 国产精品久久毛片av大全日韩| 色网站国产精品| 久久精品国产精品亚洲综合| 中文字幕在线一区免费| 欧美一级一级性生活免费录像| 国产激情偷乱视频一区二区三区| 最新日韩在线视频| 欧美刺激午夜性久久久久久久| 99久久久免费精品国产一区二区| 日本午夜精品视频在线观看| 欧美激情一区二区三区在线| 日韩精品久久理论片| 成人avav在线| 免费观看日韩电影| 国产精品精品国产色婷婷| 美女性感视频久久| 欧美在线免费视屏| 亚洲国产sm捆绑调教视频| 日韩理论在线观看| 国产蜜臀av在线一区二区三区| 亚洲伊人伊色伊影伊综合网| 精品国产麻豆免费人成网站| 在线观看亚洲成人| 99精品黄色片免费大全| 国产综合色在线| 偷拍与自拍一区| 一区二区三区**美女毛片| 国产成人啪午夜精品网站男同| 欧美三级资源在线| 偷拍日韩校园综合在线| 欧美肥妇bbw| 激情欧美一区二区| 亚洲天堂av老司机| 亚洲国产综合色| 久久久精品tv| 欧美一区二区三区在线看| av在线不卡观看免费观看| 国产一区二区女| 久久不见久久见中文字幕免费| 亚洲国产视频网站| 亚洲精品国产无天堂网2021| 亚洲三级小视频| 亚洲欧美一区二区三区久本道91| 国产精品欧美一区喷水| 欧美国产精品一区| 国产精品你懂的| 中文字幕在线观看不卡| 日韩一区中文字幕| 亚洲麻豆国产自偷在线| 亚洲日本欧美天堂| 亚洲综合久久久久| 亚洲大片精品永久免费| 午夜精品福利一区二区三区av | 亚洲精品视频在线观看免费 | 99久久精品免费看| 91小视频在线| 欧美色成人综合| 91麻豆精品国产自产在线| 欧美一区二区在线播放| 日韩欧美亚洲国产精品字幕久久久| 欧美大片在线观看| 久久精品亚洲乱码伦伦中文 | 久久久久久久精| 国产精品理伦片| 亚洲精品国产无套在线观| 亚洲自拍偷拍综合| 日韩vs国产vs欧美| 国产一区二区三区久久悠悠色av| 国产一区二区成人久久免费影院| 福利电影一区二区| 欧美探花视频资源| 欧美mv和日韩mv的网站| 中文字幕一区二区三| 亚洲线精品一区二区三区| 免费成人av在线播放| 国产精品99精品久久免费| av成人免费在线| 91精品国产麻豆| 中文字幕一区三区| 性欧美疯狂xxxxbbbb| 国产美女主播视频一区| 97久久精品人人做人人爽50路| 欧美天天综合网| 久久久精品免费免费| 亚洲午夜激情av| 蜜臀91精品一区二区三区| 成人av小说网| 欧美一区在线视频| 国产精品成人免费在线| 天天操天天干天天综合网| 国产精品系列在线观看| 精品视频一区二区不卡| 国产欧美精品在线观看| 视频在线在亚洲| 成人精品一区二区三区中文字幕| 欧美日本国产视频| 亚洲国产精品成人综合色在线婷婷| 亚洲高清视频中文字幕| 粉嫩av一区二区三区| 欧美一区二区三区喷汁尤物| 最新国产の精品合集bt伙计| 久久国产精品无码网站| 欧美亚洲动漫另类| 欧美极品xxx| 韩国av一区二区三区在线观看| 欧美性生交片4| √…a在线天堂一区| 国产一区在线视频| 欧美一区二区网站| 亚洲一区二区在线视频| 不卡的av在线播放| 精品日韩一区二区| 蜜桃一区二区三区在线观看| 欧美亚洲动漫另类| 亚洲欧美乱综合| 91亚洲精品久久久蜜桃网站| 国产欧美一区视频| 国产中文字幕一区| 欧美电视剧免费观看| 日日摸夜夜添夜夜添亚洲女人| 色一区在线观看| ●精品国产综合乱码久久久久| 国产99久久久国产精品潘金网站| 精品国产区一区| 黄网站免费久久| 精品久久久久久久久久久久久久久久久| 日韩在线一区二区| 欧美日本一区二区三区| 亚洲电影一区二区三区| 欧美性生活影院| 亚洲va天堂va国产va久|