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

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

?? test.c

?? atmel AVR MCU UCOS Source code.
?? C
字號:
/*
*******************************************************************************
*                                    uC/OS-II
*                               The Real-Time Kernel
*
*
*                                  AVR Sample code
* File        : TEST.C
* By          : Ole Saether
* Version     : V1.01
*
* AVR-GCC port version : 1.0 2001-04-02 modified/ported to avr-gcc by Jesper Hansen
*						 (jesperh@telia.com)
*
*
* Description : This file contains a simple example program showing how to use the AVR port of
*				uC/OS-II. It is based on Example #1 from Jean Labrosse's book "MicroC/OS-II, The
*				Real Time Kernel." The main difference is that this example does not display the
*				time of day and the uC/OS-II version number. You must have the AVR UART connected
*				to a VT102 compatible terminal (HyperTerminal in Windows is OK) to get the most out
*				of this example.
*				The support routines at the end of this file are included only to make this example
*				run; they should not be used in production code without careful testing.
*******************************************************************************
*/

#include ".\include\includes.h"
#include "uart.h"

/*
*******************************************************************************
*                                   CONSTANTS
*******************************************************************************
*/

#define  TASK_STK_SIZE  OS_TASK_DEF_STK_SIZE            /* Size of each task's stacks (# of bytes)*/
#define  N_TASKS        10                              /* Number of identical tasks*/

/*
*******************************************************************************
*                                  VARIABLES
*******************************************************************************
*/

OS_STK     TaskStk[N_TASKS][TASK_STK_SIZE];    /* Tasks stacks*/
OS_STK     TaskStartStk[TASK_STK_SIZE];
char       TaskData[N_TASKS];     /* Parameters to pass to each task*/
OS_EVENT   *RandomSem;
OS_EVENT   *DispStrSem;
INT32U     RndNext;               /* Used by random generator*/
INT8U      UartTxBuf[256];        /* 256 bytes UART transmit buffer*/
INT8U      UartTxRdPtr;           /* UART transmit buffer read pointer*/
INT8U      UartTxWrPtr;           /* UART transmit buffer write pointer*/
INT8U      UartTxCount;           /* Number of characters to send*/
OS_EVENT   *UartTxSem;


unsigned char kurt;

/*
*******************************************************************************
*                                 FUNCTION PROTOTYPES
*******************************************************************************
*/

void  Task(void *data);				/* Function prototypes of tasks*/
void  TaskStart(void *data);		/* Function prototypes of Startup task*/
void  PutChar(char c);				/* Write a character to the AVR UART*/
void  AvrInit(void);				/* Initialize AVR*/
void  PutString(const char *s);		/* Write a null-terminated string to the AVR UART*/
void  SPrintDec(char *, INT16U, INT8U);	/* Output an INT16U to a string (right adjust)*/
void  PutDec (INT8U x);			/* Display an INT8U without leading zeros*/
void  VT102Attribute (INT8U fgcolor, INT8U bgcolor);		/* Set attributes on VT102 terminal*/
void  VT102DispClrScr(void);	/* Clear VT102 terminal*/
void  VT102DispChar(INT8U, INT8U, char, INT8U, INT8U);	/* Display a character on VT102 terminal*/
void  VT102DispStr(INT8U, INT8U, char *, INT8U, INT8U);	/* Display a string on VT102 terminal*/
INT8U random(INT8U n);			/* Simple random generator (found in K&R)*/

/*
*******************************************************************************
*                                       MAIN
*******************************************************************************
*/

int
main (void)
{
    AvrInit();/* Initialize the AVR UART and Timer*/
    OSInit();
    RandomSem  = OSSemCreate(1);		/* Random number semaphore*/
    DispStrSem = OSSemCreate(1);		/* Display string semaphore*/
    UartTxSem  = OSSemCreate(254);		/* Initialize Uart transmit buffer semaphore to 2*/

    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);

    RndNext = 1;						/* set random generator seed to 1*/
    OSStart();							/* Start multitasking*/
    return 0;
}

/*
*******************************************************************************
*                                 STARTUP TASK
*******************************************************************************
*/
void
TaskStart (void *data)
{
    INT8U   i;
    char    s[10];

    data = data;/* Prevent compiler warning*/

    VT102DispClrScr();				/* Clear the screen*/
    VT102DispStr(26,  1, "uC/OS-II, The Real-Time Kernel", COLOR_WHITE, COLOR_RED);
    VT102DispStr(33,  2, "Jean J. Labrosse", COLOR_WHITE, COLOR_BLACK);
    VT102DispStr(29,  3, "AVR port by Ole Saether", COLOR_WHITE, COLOR_BLACK);
    VT102DispStr(29,  4, "gcc port by Jesper Hansen", COLOR_WHITE, COLOR_BLACK);
    VT102DispStr(1,  23, "Determining  CPU's capacity ...", COLOR_WHITE, COLOR_BLACK);

    OSStatInit();					/* Initialize uC/OS-II's statistics*/
    
    for (i = 0; i < N_TASKS; i++) {	/* Create N_TASKS identical tasks*/
        TaskData[i] = '0' + i;		/* Each task will display its own letter*/
        OSTaskCreate(Task, (void *)&TaskData[i], (void *)&TaskStk[i][TASK_STK_SIZE - 1], i + 1);
    }
    VT102DispStr(1, 23, "#Tasks          : xxxxx  CPU Usage: xxx %", COLOR_WHITE, COLOR_BLACK);
    VT102DispStr(1, 24, "#Task switch/sec: xxxxx", COLOR_WHITE, COLOR_BLACK);
    for (;;) {
        SPrintDec(s, (INT16U)OSTaskCtr, 5);			/* Display #tasks running*/
        VT102DispStr(19, 23, s, COLOR_WHITE, COLOR_BLUE);
        SPrintDec(s, (INT16U)OSCPUUsage, 3);		/* Display CPU usage in %*/
        VT102DispStr(37, 23, s, COLOR_WHITE, COLOR_BLUE);
        SPrintDec(s, (INT16U)OSCtxSwCtr, 5);		/* Display #context switches per second*/
        VT102DispStr(19, 24, s, COLOR_WHITE, COLOR_BLUE);
        OSCtxSwCtr = 0;
        OSTimeDlyHMSM(0, 0, 1, 0);					/* Wait one second*/
    }
}

/*
*******************************************************************************
*                                       TASKS
*******************************************************************************
*/
void
Task (void *data)
{
    INT8U x;
    INT8U y;
    INT8U err;

    for (;;) {
        OSSemPend(RandomSem, 0, &err);			/* Acquire semaphore to perform random numbers*/
        x = random(80);							/* Find X position where task number will appear*/
        y = random(15);/* Find Y position where task number will appear*/
        OSSemPost(RandomSem);					/* Release semaphore*/
/* Display the task number on the screen*/
        VT102DispChar(x + 1, y + 6, *(char *)data, COLOR_WHITE, COLOR_BLACK);
        OSTimeDly(3);							/* Delay 3 clock ticks*/
    }
}

/*
*******************************************************************************
*                                  SUPPORT ROUTINES
*******************************************************************************
*/

/* UART Transmit Complete Interrupt Function */
SIGNAL(SIG_UART_TRANS)      
{
    UartTxCount--;				/* Decrement number of characters left to send*/
    if (UartTxCount) {
        outp(UartTxBuf[UartTxRdPtr], UDR);	/* Place next character into UART transmit register */
        UartTxRdPtr++;			/* Advance to next character*/
        OSSemPost(UartTxSem);	/* Signal that we have room for one more character*/
    } else {
        outp(inp(UCR) & ~0x40, UCR);	/* Disable UART transmit complete interrupt*/
    }
}

void
AvrInit (void)
{
    outp(0x05,	TCCR0);				/* Set TIMER0 prescaler to CLK/1024*/
    outp(0x02,  TIMSK);				/* Enable TIMER0 overflow interrupt*/

    outp((INT8U)UART_BAUD_SELECT, UBRR); /* 9600 BAUD at 4MHz*/

    outp((1<<SRE)/*|(1<<SRW)*/, MCUCR);	/* Enable external RAM*/
    outp(0x08,	UCR);			/* Enable UART transmitter*/
    outp(inp(UDR) | 0x40,UDR);	/* Clear UART transmit complete bit (TXC)*/

    UartTxCount = 0;			/* Clear number of characters to send*/
    UartTxRdPtr = 0;			/* Initialize transmit buffer read pointer*/
    UartTxWrPtr = 0;			/* Initialize transmit buffer write pointer*/
}

void
PutChar (char c)
{
    INT8U err;

    if (UartTxCount) {
        OSSemPend(UartTxSem, 0, &err);	/* Wait for space in transmit buffer*/
    }
    OS_ENTER_CRITICAL();
    if (UartTxCount) {
        UartTxBuf[UartTxWrPtr] = c; /* Put character to send in transmit buffer*/
        UartTxWrPtr++;				/* Prepare for next character*/
        UartTxCount++;				/* Increment number of characters to send*/
    } else {
        outp(c,	UDR);/* Write first char directly to the UART*/
        UartTxCount = 1;
        outp(inp(UCR) | 0x40,UCR); /* Enable UART transmit complete interrupt*/
    }
    OS_EXIT_CRITICAL();
}

void
PutString (const char *s)
{
	while (*s != '\0') {
		PutChar(*s++);
	}
}

void
SPrintDec(char *s, INT16U x, INT8U n)
{
	INT8U i;

	s[n] = '\0';
	for (i = 0; i < n; i++) {
		s[n - i - 1] = '0' + (x % 10);
		x /= 10;
	}

	for (i = 0; i < (n - 1); i++) {
		if (s[i] == '0') {
			s[i] = ' ';
		} else {
			break;
		}
	}
}

INT8U
random (INT8U n)
{
	RndNext = RndNext * 1103515245 + 12345;
	return ((INT8U)(RndNext / 256) % (n + 1));
}

void
PutDec (INT8U x2)
{
	INT8U	x0;
	INT8U	x1;

	x0 = (x2 % 10);
	x2 /= 10;
	x1 = (x2 % 10);
	x2 /= 10;
	if (x2) {
		PutChar(x2 + '0');
	}
	if (x1 || x2) {
		PutChar(x1 + '0');
	}
	PutChar(x0 + '0');
}

void
VT102Attribute (INT8U fgcolor, INT8U bgcolor)
{
    PutChar(0x1b);
    PutChar('[');
    PutDec(30 + fgcolor);
    PutChar(';');
    PutDec(40 + bgcolor);
    PutChar('m');
}


void
VT102DispClrScr (void)
{
    VT102Attribute(COLOR_WHITE, COLOR_BLACK);
    PutString("\x1B[2J");
}


void
VT102DispChar (INT8U x, INT8U y, char c, INT8U fgcolor, INT8U bgcolor)
{
    INT8U err;

    OSSemPend(DispStrSem, 0, &err); /* Acquire semaphore to display string*/
    VT102Attribute(fgcolor, bgcolor);
    PutChar(0x1B);
    PutChar('[');
    PutDec(y);
    PutChar(';');
    PutDec(x);
    PutChar('H');
    PutChar(c);
    OSSemPost(DispStrSem);		/* Release semaphore*/
}


void
VT102DispStr (INT8U x, INT8U y, char *s, INT8U fgcolor, INT8U bgcolor)
{
    INT8U err;

    OSSemPend(DispStrSem, 0, &err); /* Acquire semaphore to display string*/
    VT102Attribute(fgcolor, bgcolor);
    PutChar(0x1B);
    PutChar('[');
    PutDec(y);
    PutChar(';');
    PutDec(x);
    PutChar('H');
    PutString(s);
    OSSemPost(DispStrSem);			/* Release semaphore*/
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区三区四区| 99久久久无码国产精品| 久久99精品久久久| 成人综合日日夜夜| 在线一区二区视频| 精品国产乱码久久久久久闺蜜| 中文字幕乱码一区二区免费| 亚洲mv在线观看| 国产福利91精品一区二区三区| 欧美午夜精品一区| 天堂成人免费av电影一区| 国产99久久久国产精品潘金 | 日本高清不卡一区| 一区二区三区日韩欧美精品| 黑人精品欧美一区二区蜜桃| 欧美伊人精品成人久久综合97| 亚洲午夜在线电影| 97久久精品人人澡人人爽| 亚洲精品videosex极品| 精品一区二区精品| 国产欧美视频一区二区| 蜜臀精品一区二区三区在线观看| 99re这里只有精品视频首页| 一区二区国产盗摄色噜噜| 在线播放中文一区| 一区二区成人在线观看| 91精品国产麻豆国产自产在线| 亚洲一区二区三区四区在线| 一本大道综合伊人精品热热| 国产精品久久久久久久裸模| 国产精品一级黄| 久久蜜桃av一区精品变态类天堂 | 制服.丝袜.亚洲.中文.综合| 日韩伦理免费电影| 成人18视频日本| 国产精品久久久久久久午夜片| 欧美色综合影院| 国产成人精品亚洲777人妖 | 欧美一区二区三区成人| 久久精品国产成人一区二区三区| 91啪九色porn原创视频在线观看| 中文字幕乱码亚洲精品一区| 欧美人xxxx| 日韩国产欧美在线播放| 欧美色视频一区| 天天影视网天天综合色在线播放| 欧美日韩国产一二三| 韩国av一区二区| 亚洲夂夂婷婷色拍ww47| 国产日韩精品久久久| 91精品国产丝袜白色高跟鞋| 91丨porny丨最新| 国产一本一道久久香蕉| 久久精品一区二区| av一本久道久久综合久久鬼色| 中文字幕中文字幕在线一区| 日韩免费电影一区| 国产精品一区在线| 人人狠狠综合久久亚洲| 久久婷婷成人综合色| 成人av电影在线观看| 奇米色一区二区三区四区| 亚洲码国产岛国毛片在线| 91麻豆精品国产91久久久更新时间 | 国产一区不卡精品| 日韩精品色哟哟| 亚洲国产一区二区三区| 亚洲欧美综合另类在线卡通| 欧美图区在线视频| 99riav久久精品riav| av在线免费不卡| 成人午夜私人影院| 成人午夜精品一区二区三区| 精品一区二区精品| 国产资源在线一区| 九九九精品视频| 九一九一国产精品| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久精品国内一区二区三区| 爽好久久久欧美精品| 亚洲va韩国va欧美va| 天天av天天翘天天综合网色鬼国产| 一区二区欧美精品| 亚洲成人av免费| 天堂av在线一区| 日本欧美一区二区在线观看| 日韩二区三区在线观看| 日本一道高清亚洲日美韩| 免费成人在线观看视频| 久久国产精品99久久久久久老狼 | 一级特黄大欧美久久久| 亚洲欧洲av在线| 亚洲精品高清在线| 视频一区欧美精品| 免费视频一区二区| 国产一级精品在线| 99精品视频中文字幕| 色哟哟国产精品免费观看| 欧美性生活一区| 日韩无一区二区| 91丝袜国产在线播放| 色av综合在线| 欧美精品aⅴ在线视频| 欧美tk—视频vk| 51午夜精品国产| 精品免费国产一区二区三区四区| 久久久三级国产网站| 国产精品毛片无遮挡高清| 久久亚洲精华国产精华液| 日本一区免费视频| 亚洲一区视频在线观看视频| 日韩在线一区二区| 成人做爰69片免费看网站| 色中色一区二区| 日韩欧美一级二级| 国产精品人人做人人爽人人添| 亚洲一区二区精品视频| 美女在线视频一区| 99精品热视频| 欧美一区二区三区在线观看视频 | 亚洲精品视频一区二区| 三级影片在线观看欧美日韩一区二区 | 成人精品gif动图一区| 欧美色图激情小说| 久久久久久久久久久久电影 | 亚洲综合视频在线观看| 热久久免费视频| 91在线精品一区二区| 欧美一级日韩一级| 日韩一区中文字幕| 狠狠色狠狠色综合| 在线观看日韩电影| 欧美艳星brazzers| 国产日韩欧美不卡| 免费在线观看视频一区| 91色|porny| 久久久精品综合| 日韩精品成人一区二区三区| 成人伦理片在线| 日韩欧美色电影| 亚洲国产一区二区三区青草影视| 国产成人av自拍| 欧美电影免费观看高清完整版在线 | 91官网在线观看| 国产欧美视频在线观看| 麻豆成人久久精品二区三区红 | 色哟哟一区二区在线观看 | 欧美三级日韩三级国产三级| 国产视频一区在线播放| 日韩国产欧美三级| 欧美少妇bbb| 一区二区三区欧美| 成人国产免费视频| 久久男人中文字幕资源站| 蜜桃视频第一区免费观看| 欧美亚洲国产一区二区三区 | 日本中文在线一区| 欧美日韩一区二区三区四区| 亚洲视频在线一区| 成人a级免费电影| 亚洲国产精品成人综合 | 色综合久久六月婷婷中文字幕| 久久久精品免费网站| 精品一区中文字幕| 日韩精品一区二区三区视频播放 | 精品日韩一区二区三区| 日本中文字幕一区二区视频| 欧美日韩亚洲丝袜制服| 亚洲国产中文字幕| 欧美日韩在线播放三区| 一二三区精品视频| 欧美性生交片4| 亚洲丰满少妇videoshd| 欧美三级电影一区| 婷婷久久综合九色国产成人| 欧美日韩高清在线播放| 偷偷要91色婷婷| 欧美久久一区二区| 日本伊人精品一区二区三区观看方式| 欧美精品丝袜久久久中文字幕| 天堂久久一区二区三区| 日韩一卡二卡三卡国产欧美| 日本va欧美va欧美va精品| 欧美v日韩v国产v| 国产综合久久久久久久久久久久| 久久综合色天天久久综合图片| 国产精品综合一区二区| 中文字幕成人av| 色综合色综合色综合色综合色综合| 亚洲色图一区二区| 欧美日韩日日骚| 麻豆精品新av中文字幕| 欧美精品一区二区久久婷婷| 国产成人日日夜夜| 尤物视频一区二区| 欧美一区二区精品久久911| 国产一区二区久久| 亚洲欧美色一区| 欧美精品一二三四| 国产伦精品一区二区三区免费|