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

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

?? bsp.c

?? ucos在IAR編譯器atmega128 cpu下的實現
?? C
字號:
/*
*********************************************************************************************************
*                                           Atmel ATmega128
*                                         Board Support Package
*
*                                (c) Copyright 2005, Micrium, Weston, FL
*                                          All Rights Reserved
*
*
* File : BSP.C
* By   : Jean J. Labrosse
*********************************************************************************************************
*/

#include <includes.h>

/*
*********************************************************************************************************
*                                              PROTOTYPES
*********************************************************************************************************
*/

static  void  BSP_InitTickISR(void);
static  void  LED_Init(void);


/*
*********************************************************************************************************
*                                         BSP INITIALIZATION
*
* Description : This function should be called by your application code before you make use of any of the
*               functions found in this module.
*
* Arguments   : none
*********************************************************************************************************
*/

void  BSP_Init (void)
{
    LED_Init();

    BSP_InitTickISR();
}


/*
*********************************************************************************************************
*                                        SETUP THE TICK RATE
*
* Note(s): 1) OCR0 = CPU_CLK_FREQ / (2 * Prescaler * OC_freq) - 1
*          2) The equation actually performs rounding by multiplying by 2, adding 1 and then divising by 2
*             in integer math, this is equivalent to adding 0.5
*********************************************************************************************************
*/

static  void  BSP_InitTickISR (void)
{
    INT32U  num;
    INT32U  denom;


    TCCR0  = 0x0E;                                                      /* Set TIMER0 prescaler to CTC Mode, CLK/256                */
    TCNT0  =    0;                                                      /* Start TCNT at 0 for a new cycle                          */
    num    = (INT32U)CPU_CLK_FREQ;
    denom  = 2 * 256 * (INT32U)OS_TICKS_PER_SEC;
    OCR0   = (INT8U)((2 * num / denom + 1) / 2 - 1);
    TIFR  |= 0x02;                                                      /* Clear  TIMER0 compare Interrupt Flag                     */
    TIMSK |= 0x02;                                                      /* Enable TIMER0 compare Interrupt                          */
}


/*
*********************************************************************************************************
*                                     HANDLE THE TICK INTERRUPT
*
* Note(s): 1) No need to clear the interrupt source since we use output compare mode for Timer #0 and
*             the interrupt is automatically cleard in hardware when the ISR runs.
*********************************************************************************************************
*/

void  BSP_TickISR_Handler (void)
{
    OSTimeTick();
}



/*$PAGE*/
/*
*********************************************************************************************************
*                                       uC/Probe, INITIALIZE TIMER
*
* Description: This function initializes a 16 or 32-bit free-running timer for uC/Probe.
*
* Arguments  : none
*
* Note(s)    : none
*********************************************************************************************************
*/
#if OS_PROBE_HOOKS_EN > 0                                               /* Do not compile this section if Probe is disabled         */
void  OSProbe_TmrInit (void)
{
#if (OS_PROBE_TIMER_SEL == 1)
    TCCR1B  =   0x00;                                                   /* Stop timer                                               */
    TCNT1   = 0xFFFF;                                                   /* Setup TCNT                                               */
    TCCR1A  =   0x00;                                                   /* Normal Mode, count up 0x0000 to 0xFFFF                   */
    TCCR1B  =   0x04;                                                   /* Start timer, prescale by 256                             */
#endif

#if (OS_PROBE_TIMER_SEL == 3)
    TCCR3B  =   0x00;                                                   /* Stop timer                                               */
    TCNT3   = 0xFFFF;                                                   /* Setup TCNT                                               */
    TCCR3A  =   0x00;                                                   /* Normal Mode, count up 0x0000 to 0xFFFF                   */
    TCCR3B  =   0x04;                                                   /* Start timer, prescale by 256                             */
#endif
}
#endif                                                                  /* #if OS_PROBE_HOOKS_EN > 0                                */

/*$PAGE*/
/*
*********************************************************************************************************
*                                       uC/Probe, TIMER READ
*
* Description: This function reads a 16-bit free-running timer for uC/Probe.
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
#if OS_PROBE_HOOKS_EN > 0                                               /* Do not compile this section if Probe is disabled         */
CPU_INT32U  OSProbe_TmrRd (void)
{
    INT16U  cnts;


#if (OS_PROBE_TIMER_SEL == 1)
    cnts    = (INT16U)TCNT1;                                            /* Read current counts of Timer #1                          */
#endif

#if (OS_PROBE_TIMER_SEL == 3)
    cnts    = (INT16U)TCNT3;                                            /* Read current counts of Timer #3                          */
#endif

    return ((INT32U)cnts);
}
#endif                                                                  /* #if OS_PROBE_HOOKS_EN > 0                                */


/*
*********************************************************************************************************
*                                         BSP INITIALIZATION
*
* Description : This function should be called by your application code before you make use of any of the
*               functions found in this module.
*
* Arguments   : none
*********************************************************************************************************
*/

static  void  LED_Init (void)
{
    DDRD  = 0xFF;                                                       /* All PORTD pins are outputs                               */
    PORTD = 0xFF;
    LED_Off(0);                                                         /* Turn ON all the LEDs                                     */
}

/*
*********************************************************************************************************
*                                             LED ON
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to control
*                      0    indicates that you want ALL the LEDs to be ON
*                      1    turns ON LED1 on the board
*                      .
*                      .
*                      8    turns ON LED8 on the board
*********************************************************************************************************
*/

void  LED_On (INT8U led)
{
#if OS_CRITICAL_METHOD == 3                                             /* Allocate storage for CPU status register                 */
    OS_CPU_SR  cpu_sr = 0;
#endif


    OS_ENTER_CRITICAL();
    switch (led) {
        case 0:
             PORTD  =  0x00;
             break;

        case 1:
             PORTD &= ~0x01;
             break;

        case 2:
             PORTD &= ~0x02;
             break;

        case 3:
             PORTD &= ~0x04;
             break;

        case 4:
             PORTD &= ~0x08;
             break;

        case 5:
             PORTD &= ~0x10;
             break;

        case 6:
             PORTD &= ~0x20;
             break;

        case 7:
             PORTD &= ~0x40;
             break;

        case 8:
             PORTD &= ~0x80;
             break;
    }
    OS_EXIT_CRITICAL();
}

/*
*********************************************************************************************************
*                                             LED OFF
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to turn OFF
*                      0    indicates that you want ALL the LEDs to be OFF
*                      1    turns OFF LED1 on the board
*                      .
*                      .
*                      8    turns OFF LED8 on the board
*********************************************************************************************************
*/

void  LED_Off (INT8U led)
{
#if OS_CRITICAL_METHOD == 3                                             /* Allocate storage for CPU status register                 */
    OS_CPU_SR  cpu_sr = 0;
#endif


    OS_ENTER_CRITICAL();
    switch (led) {
        case 0:
             PORTD  =  0xFF;
             break;

        case 1:
             PORTD |=  0x01;
             break;

        case 2:
             PORTD |=  0x02;
             break;

        case 3:
             PORTD |=  0x04;
             break;

        case 4:
             PORTD |=  0x08;
             break;

        case 5:
             PORTD |=  0x10;
             break;

        case 6:
             PORTD |=  0x20;
             break;

        case 7:
             PORTD |=  0x40;
             break;

        case 8:
             PORTD |=  0x80;
             break;
    }
    OS_EXIT_CRITICAL();
}

/*
*********************************************************************************************************
*                                        LED TOGGLE
*
* Description : This function is used to toggle the state of any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to toggle
*                      0    indicates that you want ALL the LEDs to toggle
*                      1    Toggle LED1 on the board
*                      .
*                      .
*                      8    Toggle LED8 on the board
*********************************************************************************************************
*/

void  LED_Toggle (INT8U led)
{
#if OS_CRITICAL_METHOD == 3                                             /* Allocate storage for CPU status register                 */
    OS_CPU_SR  cpu_sr = 0;
#endif


    OS_ENTER_CRITICAL();
    switch (led) {
        case 0:
             PORTD ^=  0xFF;
             break;

        case 1:
             PORTD ^=  0x01;
             break;

        case 2:
             PORTD ^=  0x02;
             break;

        case 3:
             PORTD ^=  0x04;
             break;

        case 4:
             PORTD ^=  0x08;
             break;

        case 5:
             PORTD ^=  0x10;
             break;

        case 6:
             PORTD ^=  0x20;
             break;

        case 7:
             PORTD ^=  0x40;
             break;

        case 8:
             PORTD ^=  0x80;
             break;
    }
    OS_EXIT_CRITICAL();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看91精品国产麻豆| 精品福利视频一区二区三区| 欧美精品久久一区二区三区| 国产色91在线| 天堂一区二区在线免费观看| 国产91精品一区二区麻豆亚洲| 欧美日韩日日摸| 中国av一区二区三区| 天天色天天操综合| 色呦呦国产精品| 中文成人综合网| 看片网站欧美日韩| 欧美日韩一级二级三级| 最新国产成人在线观看| 久久99精品久久久久久| 精品视频在线免费看| 综合色天天鬼久久鬼色| 成人一区二区三区视频在线观看| 欧美人与性动xxxx| 亚洲韩国精品一区| 欧美亚洲高清一区二区三区不卡| 中文字幕高清不卡| 国产美女主播视频一区| 精品欧美一区二区在线观看| 天堂va蜜桃一区二区三区漫画版| 99精品黄色片免费大全| 欧美激情一区二区三区| 久久99精品视频| 日韩精品一区二区三区蜜臀| 日韩一区精品字幕| 在线播放日韩导航| 另类小说综合欧美亚洲| 欧美不卡一二三| 久久精品国产精品青草| 欧美一级免费大片| 免费欧美日韩国产三级电影| 91精品一区二区三区在线观看| 亚洲一二三四久久| 欧美图区在线视频| 午夜欧美在线一二页| 欧美日本精品一区二区三区| 青青草国产精品亚洲专区无| 日韩午夜在线观看视频| 裸体健美xxxx欧美裸体表演| 日韩欧美久久久| 国产成人在线看| 中文字幕亚洲综合久久菠萝蜜| 91丨九色丨国产丨porny| 最新中文字幕一区二区三区 | 欧美特级限制片免费在线观看| 1区2区3区精品视频| 欧美日韩国产综合久久| 久久国产夜色精品鲁鲁99| 久久免费电影网| 99精品国产视频| 日本视频免费一区| 久久免费精品国产久精品久久久久| 成人国产一区二区三区精品| 亚洲欧美电影一区二区| 在线播放/欧美激情| 国内精品伊人久久久久av影院| 国产精品免费免费| 欧美日韩免费视频| 国产精品123区| 亚洲综合男人的天堂| 日韩欧美美女一区二区三区| www..com久久爱| 丝袜美腿一区二区三区| 亚洲国产精品国自产拍av| 在线观看成人免费视频| 激情欧美日韩一区二区| 椎名由奈av一区二区三区| 日韩一区二区免费视频| 成人黄色小视频| 秋霞电影网一区二区| 中文字幕第一区第二区| 日韩一区二区在线看| 粉嫩欧美一区二区三区高清影视| 亚洲电影中文字幕在线观看| 国产午夜久久久久| 91精品在线观看入口| 99精品欧美一区| 久久99国产精品尤物| 亚洲精品国产视频| 国产亚洲短视频| 欧美一二三区在线| 欧洲av一区二区嗯嗯嗯啊| 国产老肥熟一区二区三区| 亚洲.国产.中文慕字在线| 国产情人综合久久777777| 欧美一区二区日韩| 在线欧美小视频| 不卡视频在线观看| 激情综合色综合久久综合| 亚洲福利一区二区| 亚洲人成人一区二区在线观看| 337p日本欧洲亚洲大胆精品| 欧美日韩一区 二区 三区 久久精品| 粉嫩久久99精品久久久久久夜| 激情综合网激情| 蜜桃av噜噜一区| 香蕉成人啪国产精品视频综合网| 中文字幕欧美三区| 久久综合九色综合欧美亚洲| 欧美一区二区三区播放老司机| 日本久久一区二区| 91蜜桃视频在线| av在线免费不卡| 成人av综合在线| av一区二区三区| 成人v精品蜜桃久久一区| 国产成人精品影院| 成人激情午夜影院| 成人视屏免费看| 成人高清视频免费观看| 国产成人精品一区二区三区四区 | 中文字幕巨乱亚洲| 国产欧美日韩三区| 国产欧美日韩在线| 国产精品久久久久久福利一牛影视| 国产亚洲欧洲一区高清在线观看| 日韩欧美二区三区| 欧美成人福利视频| 日韩美女在线视频| 精品美女一区二区| 久久香蕉国产线看观看99| 国产亚洲欧美日韩俺去了| 国产亚洲福利社区一区| 欧美国产综合色视频| 国产精品久久久久久久久快鸭| 国产精品久久午夜夜伦鲁鲁| 亚洲精选视频免费看| 亚洲一本大道在线| 手机精品视频在线观看| 久久狠狠亚洲综合| 丁香六月久久综合狠狠色| 色诱亚洲精品久久久久久| 国产精品一二三四区| 国产v日产∨综合v精品视频| 91免费看视频| 欧美日本视频在线| 久久久久久久久伊人| 亚洲日本韩国一区| 天天操天天干天天综合网| 国产一区在线观看视频| 99国产精品99久久久久久| 777奇米四色成人影色区| 久久午夜电影网| 亚洲另类在线制服丝袜| 天堂在线一区二区| 成人一道本在线| 欧美老人xxxx18| 久久精品人人做| 五月天国产精品| www.视频一区| 日韩欧美国产系列| 亚洲三级电影全部在线观看高清| 五月激情六月综合| 不卡区在线中文字幕| 欧美一区二区福利视频| 国产精品欧美一级免费| 视频在线在亚洲| 成人av在线看| 日韩精品一区二区三区中文不卡| 国产精品久久夜| 另类中文字幕网| 在线亚洲高清视频| 中文字幕av在线一区二区三区| 亚洲午夜久久久久久久久久久| 国产成人啪免费观看软件| 欧美精品丝袜中出| 亚洲卡通动漫在线| 国产精品一区在线| 欧美一区午夜视频在线观看| 亚洲丝袜美腿综合| 国产高清视频一区| 日韩一级视频免费观看在线| 亚洲欧美另类久久久精品| 加勒比av一区二区| 91精品国产一区二区三区香蕉| 亚洲欧洲av色图| 成人一级视频在线观看| 久久久久久久久久久久久夜| 日韩精品久久久久久| 欧美天天综合网| 亚洲免费观看在线观看| 成人免费视频一区二区| 欧美成人官网二区| 蜜桃av噜噜一区二区三区小说| 91国内精品野花午夜精品 | 久久夜色精品国产欧美乱极品| 午夜视黄欧洲亚洲| 欧美日韩视频在线观看一区二区三区| 亚洲乱码一区二区三区在线观看| 成人一区二区三区视频在线观看| 久久久久久久久久久久电影| 国产精品正在播放| 国产亚洲1区2区3区| 国产在线视频精品一区| 欧美精品一区二区三区在线 |