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

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

?? messagetimers.c

?? 一個(gè)基于AVR 單片機(jī)的操作系統(tǒng),有組于了解操作系統(tǒng)在單片機(jī)上運(yùn)行的內(nèi)幕.
?? C
字號(hào):
/*
    Timer Message Example

    This example shows:

    1. A task that waits on a message queue for information or a timeout.
    2. Shows how to build messages that contain data
    3. Shows how to include the AvrX Debug monitor

    The task "Switcher" examines the state of the STK switches, connected to
    the port defined in "hardware.h" on a 10ms interval.  When the state of
    the switches change, it sends a message to the second task with the
    current switch state

    The second task "Flasher", starts a special timer that send's itself as a
    message to a message queue when it expires.  The task waits on the
    message queue for either the switch message or the timer message.

    Note: in this example I do not use AvrXCancelTimerMessage.  So the code
    has been arranged so that the timer is restarted only after it has expired
    and been read off the message queue.

    This example also show how to wire in the debug monitor for AvrX.  If the
    kernel library has been compiled with the symbol SINGLESTEPSUPPORT defined
    the monitor will allow you to halt a task and single step it through the
    code

    To remove the monitor code, comment out the AVRX_TASK() definition, the
    call AvrXRunTask and the call to InitSerialIO();
*/
//#define ENABLE_BIT_DEFINITIONS
//#define _SFR_ASM_COMPAT 1
#include <avrx-io.h>
#include <avrx-signal.h>
#include "avrx.h"               // AvrX System calls/data structures
#include "serialio.h"           // From AvrX...
#include "hardware.h"           // Sample code hardware defines

// Declare all my AvrX data structures

AVRX_IAR_TASK(Monitor, 0, 20, 0);       // External Task: Debug Monitor
AVRX_GCC_TASK(Monitor, 20, 0);          // External Task: Debug Monitor

TimerControlBlock SwTimer;      // Plain vanilla timer
TimerMessageBlock Timer;        // TimerMessage timer (just a timer with a
                                // message queue pointer appended)

// This is how you build up a message element that transports data

typedef struct MyMessage
{
    MessageControlBlock mcb;
    unsigned char data;
}
*pMyMessage, MyMessage;

MyMessage SwitchMsg;            // Declare the actual message
MessageQueue MyQueue;           // The message queue itself

/*
    Tasks and AvrX Interrupt handlers exist in their own context (registers
    & stack) hence don't need to save anything and never return, hence "naked"
*/
#pragma optimize=z 4
AVRX_SIGINT(SIG_OVERFLOW0)
{
    IntProlog();                // Save interrupted context, switch stacks
    TCNT0 = TCNT0_INIT;
//    outp(TCNT0_INIT, TCNT0);    // Reload the timer counter
    AvrXTimerHandler();         // Process Timer queue
    Epilog();                   // Restore context of next running task
}


AVRX_IAR_TASKDEF(flasher, 4, 16, 2)
AVRX_GCC_TASKDEF(flasher, 20, 2)    // Note I added r_stack and c_stack!
{
    pMyMessage pMsg;
    unsigned char led = 0;

	LEDDDR = 0xFF;
//    outp(0xFF, LEDDDR);         // Initialize LED port to outputs

    AvrXStartTimerMessage(&Timer, 150, &MyQueue);

    while(1)
    {
    	LED = ~led;
//	    outp(~led, LED);
        pMsg = (pMyMessage)AvrXWaitMessage(&MyQueue);
        if (pMsg == &SwitchMsg)
        {
            led ^= ~(pMsg->data);
            AvrXAckMessage(&pMsg->mcb);
        }
        else if ((pTimerMessageBlock)pMsg == &Timer)
        {
#ifdef __IAR_SYSTEMS_ICC__
            led = led+led+((led & 0x80)?1:0);
#else
            asm("rol %0\n"\
                "\tbrcc .+2\n"\
                "\tinc %0\n"  ::"r" (led));
#endif
            AvrXStartTimerMessage(&Timer, 150, &MyQueue);
        }
        else
        {
            AvrXHalt();
        }
    }
}

AVRX_IAR_TASKDEF(switcher, 4, 6, 3)
AVRX_GCC_TASKDEF(switcher, 10, 3)
{
	SWITCHP = 0xFF;
//    outp(0xFF, SWITCHP);            // Enable pullups on switch inputs
    while(1)
    {
        AvrXDelay(&SwTimer, 10);        // Delay 10 milliseconds
//        if (SwitchMsg.data != inp(SWITCH)) // On change, send message
        if (SwitchMsg.data != SWITCH) // On change, send message
        {
//            SwitchMsg.data = inp(SWITCH);
            SwitchMsg.data = SWITCH;
            AvrXSendMessage(&MyQueue, &SwitchMsg.mcb);
            AvrXWaitMessageAck(&SwitchMsg.mcb);
        }
    }
}

int main(void)
{
    AvrXSetKernelStack(0);

    MCUCR = 1<<SE;
    TCNT0 = TCNT0_INIT;
    TCCR0 = TMC8_CK256;
    TIMSK = 1<<TOIE0;
/*
    outp((1<<SE) , MCUCR);      // Enable "sleep" mode (low power when idle)
    outp(TCNT0_INIT, TCNT0);    // Load overflow counter of timer0
    outp(TMC8_CK256 , TCCR0);   // Set Timer0 to CPUCLK/256
    outp((1<<TOIE0), TIMSK);    // Enable interrupt flag
*/
    InitSerialIO(UBRR_INIT);    // Initialize USART baud rate generator

    AvrXRunTask(TCB(flasher));
    AvrXRunTask(TCB(switcher));
    AvrXRunTask(TCB(Monitor));

    /* Needed for EEPROM access in monitor */

    AvrXSetSemaphore(&EEPromMutex);

    Epilog();                   // Switch from AvrX Stack to first task
    while(1);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色域天天综合网| 亚洲国产一区二区在线播放| 视频一区中文字幕国产| 色婷婷综合久久久久中文| 色噜噜久久综合| 成人精品视频网站| 日韩三级高清在线| 亚欧色一区w666天堂| gogogo免费视频观看亚洲一| 国产精品青草久久| 99re这里只有精品6| 亚洲免费观看高清在线观看| www.亚洲人| 亚洲成人激情综合网| 欧美久久久久久久久| 美女久久久精品| 欧美韩国日本综合| 91久久香蕉国产日韩欧美9色| 一色桃子久久精品亚洲| 欧美熟乱第一页| 另类小说综合欧美亚洲| 日本一区二区综合亚洲| 欧美三区在线观看| 国产在线精品一区二区| 国产精品美日韩| 制服丝袜成人动漫| 成人一级视频在线观看| 亚洲无人区一区| 久久久久青草大香线综合精品| 成人aa视频在线观看| 亚洲第一综合色| 337p日本欧洲亚洲大胆精品| 91麻豆国产香蕉久久精品| 天天射综合影视| 亚洲欧洲av色图| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产网站一区二区三区| 在线免费观看视频一区| 国产高清在线观看免费不卡| 亚洲综合色成人| 国产欧美日韩视频一区二区| 91精品国产福利| 欧美高清性hdvideosex| 99久久精品免费观看| 国产精品亚洲视频| 激情久久久久久久久久久久久久久久| 夜色激情一区二区| 亚洲天堂av一区| 亚洲欧洲99久久| 亚洲天天做日日做天天谢日日欢| 26uuu亚洲综合色欧美| 日韩欧美亚洲国产精品字幕久久久 | 欧美—级在线免费片| 精品久久久久一区二区国产| 在线电影一区二区三区| 欧美日韩1234| 精品美女在线观看| 久久久www成人免费无遮挡大片| 欧美大片在线观看| 欧美国产精品一区二区| **网站欧美大片在线观看| 亚洲精品免费看| 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩在线直播| 91蝌蚪国产九色| 日韩久久免费av| 亚洲六月丁香色婷婷综合久久| 中文字幕亚洲视频| 日本在线不卡视频| youjizz久久| 欧美老肥妇做.爰bbww| 欧美精品一区二区不卡| 亚洲日本中文字幕区| 青青青伊人色综合久久| 99精品视频一区二区三区| 日韩一区二区中文字幕| 国产婷婷色一区二区三区| 丝袜美腿成人在线| 福利电影一区二区三区| 91精品国产高清一区二区三区蜜臀 | 国产一区二区三区不卡在线观看| 91性感美女视频| 国产婷婷色一区二区三区四区| 日本美女一区二区三区视频| 91在线小视频| 国产精品久久久久久久久快鸭| 麻豆免费精品视频| 欧美mv日韩mv国产网站app| 亚洲午夜羞羞片| 91久久国产最好的精华液| 亚洲欧美欧美一区二区三区| 国产精品123| 国产无人区一区二区三区| 国产精品1区2区| 国产免费成人在线视频| 成人看片黄a免费看在线| 中文字幕乱码亚洲精品一区| 精品系列免费在线观看| 久久一日本道色综合| 国产一区二区三区免费播放| 精品久久久久久久久久久久久久久久久| 爽爽淫人综合网网站| 在线电影欧美成精品| 久久99国产乱子伦精品免费| 中文字幕在线不卡视频| 国产福利一区二区| 中文字幕在线免费不卡| 色伊人久久综合中文字幕| 亚洲成年人网站在线观看| 欧美丰满一区二区免费视频| 国产专区综合网| 亚洲午夜日本在线观看| 91精品欧美福利在线观看| 经典一区二区三区| 亚洲欧美一区二区三区久本道91 | 精品国产乱码久久久久久久久| 麻豆91精品91久久久的内涵| 欧美高清一级片在线观看| 在线免费观看日本欧美| 日本女人一区二区三区| √…a在线天堂一区| 91麻豆精品国产自产在线观看一区| 国产一区二区调教| 一区二区三区自拍| 精品久久久三级丝袜| 免费国产亚洲视频| 欧美日韩一区二区三区四区| 久久99热狠狠色一区二区| 香港成人在线视频| 最新不卡av在线| 日韩视频在线永久播放| 成人自拍视频在线| 韩国视频一区二区| 日本视频一区二区三区| 一区二区三区成人| 国产精品三级视频| 国产清纯白嫩初高生在线观看91| 欧美性感一类影片在线播放| 懂色av一区二区在线播放| 精久久久久久久久久久| 九九国产精品视频| 韩国精品主播一区二区在线观看| 亚洲综合网站在线观看| 亚洲国产欧美另类丝袜| 亚洲黄色尤物视频| 亚洲一区影音先锋| 亚洲国产成人91porn| 婷婷综合另类小说色区| 日韩激情视频在线观看| 丝袜美腿亚洲一区| 国产最新精品免费| 懂色av噜噜一区二区三区av| 国产iv一区二区三区| 色婷婷综合久久久中文一区二区| 色婷婷av一区| 日韩欧美电影一二三| 久久色中文字幕| 有码一区二区三区| 免费亚洲电影在线| 国产a视频精品免费观看| 色婷婷综合久久久久中文一区二区| 欧美亚洲尤物久久| 精品欧美一区二区在线观看| 国产精品入口麻豆九色| 亚洲第一搞黄网站| 国产精品资源网| 欧美三级蜜桃2在线观看| 精品1区2区在线观看| 亚洲欧美一区二区三区久本道91 | 91在线高清观看| 日韩视频永久免费| 亚洲一区二区三区四区在线免费观看 | 成人性生交大片| 这里只有精品免费| 亚洲精品久久久久久国产精华液| 免费成人在线视频观看| 欧美系列亚洲系列| 亚洲视频一区在线| 国产伦理精品不卡| 日韩美女在线视频| 日韩中文字幕亚洲一区二区va在线 | 欧美一区二区视频在线观看2020 | 久久亚洲综合色一区二区三区| 亚洲国产毛片aaaaa无费看 | 国产夫妻精品视频| 欧美v国产在线一区二区三区| 亚洲欧美日韩久久精品| 国产河南妇女毛片精品久久久| 91精品在线一区二区| 亚洲国产美女搞黄色| 欧美日韩视频在线一区二区| 亚洲图片另类小说| 欧美艳星brazzers| 亚洲一区二区欧美激情| 欧美中文字幕一区二区三区| 亚洲免费三区一区二区| 欧洲精品一区二区三区在线观看| 亚洲激情av在线| 欧美精品视频www在线观看| 性久久久久久久久久久久|