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

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

?? ex51l.c

?? 8051的UCOS實時操作系統(源代碼)
?? C
字號:
/* $Id: ex51l.c,v 1.2 1997/07/17 14:03:01 gianpi Exp $
 *
 * Description:
 *	uC/OS-51 - Example program (CC51 - large model)
 *
 * Author[s]:
 *	Gianpaolo Macario	gianpi@geocities.com
 */

#include <ctype.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include "includes.h"
#include "isr51.h"
#include "../paulmon.h"			/* PM_pStr() */

#define	USE_TIMER0	1		/* 1=Timer0, 0=Timer1 */
#define	TASK_STK_SIZE   64		/* was 32 */

ISR_PTR	OldTimeTick;

#define KEY_Q_SIZE	16			/* Size of keyboard queue    */
void 	*KeyQ[KEY_Q_SIZE];			/* Keyboard queue	     */

OS_EVENT *DpySemPtr;				/* Ptr to display semaphore  */
OS_EVENT *KeyQPtr;				/* Ptr to keyboard queue     */

/* ------------------------------------------------------------------------- */
/* Debugging Functions */

static void ser_putc(u_int8_t ch)
{
  UBYTE err;

  OSSemPend(DpySemPtr, 0, &err);
  SBUF = ch;
}	/* ser_putc() */

/* Return bytes written */
static u_int8_t ser_write(const u_int8_t *buf, u_int8_t buflen)
{
  u_int8_t k;

  for (k = 0; k < buflen; k++) {
      ser_putc(*buf++);
  }
  return k;
}	/* ser_write() */

static int ser_getc(void)
{
  UBYTE err;
  int val;

  val = (u_int8_t) OSQPend(KeyQPtr, 0, &err);
  return val;
}	/* ser_getc() */

static _xdat char dbg_buffer[80];

void dbg_printf(const char *format, ...)
{
  _xdat va_list ap;
  u_int8_t l;

  va_start(ap, format);
  strcpy(dbg_buffer, "DBG: ");
  vsprintf(dbg_buffer+strlen(dbg_buffer), format, ap);
  strcat(dbg_buffer, "\r\n");
  l = strlen(dbg_buffer);
  if (OSRunning)
      ser_write((const u_int8_t *)dbg_buffer, l);
  else
      PM_pStr(dbg_buffer);
}	/* dbg_printf() */

/* ------------------------------------------------------------------------- */
/* Customization for CC51 low-level stdio functions */

int _iowrite(int c, FILE *stream)
{
  switch ((int)stream) {
    case 1:	/* stdout */
    case 2: 	/* stderr */
      ser_putc(c);
      return c;
  }
  return EOF;
}	/* _iowrite() */

int _ioread(FILE *stream)
{
  switch ((int)stream) {
    case 0:	/* stdin */
      return ser_getc();
  }
  return EOF;
}	/* _ioread() */

/* ------------------------------------------------------------------------- */
void OSSerial(void)
{
  if (RI) {
      u_int8_t val;

      RI = 0;
      val = SBUF;
      OSQPost(KeyQPtr, (void *)val);
  }
  if (TI) {
      TI = 0;
      OSSemPost(DpySemPtr);
  }
}	/* OSSerial() */

/* ------------------------------------------------------------------------- */
/* Some debugging functions for uC/OS Internal Data Structures */

static void pr_ucos_status(void)
{
  dbg_printf("OSCtxSwCtr=%u, OSIdleCtr=%lu, OSIntNesting=%d, OSRunning=%d",
	OSCtxSwCtr, OSIdleCtr, OSIntNesting, (int)OSRunning);
  dbg_printf("OSTCBCur=%04X, OSTCBHighRdy=%04X",
	(u_int16_t)OSTCBCur, (u_int16_t)OSTCBHighRdy);
}	/* pr_ucos_status() */

/* ------------------------------------------------------------------------- */
/* Datan[] is organized as "bitno,delay" */

char    Data1[] = "7,1";
char    Data2[] = "6,2";
char    Data3[] = "5,3";

/* TBD: don't know how to make reentrant functions... */

OS_STK_TYPE     Stk1[TASK_STK_SIZE];

void Task1(void /* OS_FAR */ *pdata)
{
    xdat unsigned char mask = 1 << (((char *)pdata)[0] - '0');
    xdat unsigned dlay = (1 << (((char *)pdata)[2] - '0')) * 2;

    pdata = pdata;	/* avoid compiler warning */
    while (1) {
	P1 ^= mask;		/* Toggle P1.<bitno> */
#if 1
	/* When P1 toggles we are in the lowest priority task */
#else
        P2 &= ~mask;		/* Reset P2.<bitno> */
        ser_putc('1');
        OSTimeDly(dlay);
        P2 |= mask;		/* Set   P2.<bitno> */
#endif
    }
}   /* Task1() */


OS_STK_TYPE     Stk2[TASK_STK_SIZE];

void Task2(void /* OS_FAR */ *pdata)
{
    xdat unsigned char mask = 1 << (((char *)pdata)[0] - '0');
    xdat unsigned dlay = (1 << (((char *)pdata)[2] - '0')) * 2;

    pdata = pdata;	/* avoid compiler warning */
    while (1) {
	P1 ^= mask;		/* Toggle P1.<bitno> */
        P2 &= ~mask;		/* Reset P2.<bitno> */
        ser_putc('2');
        OSTimeDly(dlay);
        P2 |= mask;		/* Set   P2.<bitno> */
    }
}   /* Task2() */


OS_STK_TYPE     Stk3[TASK_STK_SIZE];

void Task3(void /* OS_FAR */ *pdata)
{
    xdat unsigned char mask = 1 << (((char *)pdata)[0] - '0');
    xdat unsigned dlay = (1 << (((char *)pdata)[2] - '0')) * 2;

    pdata = pdata;	/* avoid compiler warning */
    while (1) {
	P1 ^= mask;		/* Toggle P1.<bitno> */
        P2 &= ~mask;		/* Reset P2.<bitno> */
        ser_putc('3');
        OSTimeDly(dlay); 
        P2 |= mask;		/* Set   P2.<bitno> */
    }
}   /* Task3() */


OS_STK_TYPE	stk_key[TASK_STK_SIZE];

void task_key(void *pdata)
{
  pdata = pdata;	/* avoid compiler warning */
  while (1) {
      static char buf[40];
      char *s;

      s = fgets(buf, sizeof(buf), stdin);
      if (s != NULL) {
	  buf[strlen(buf)-1] = '\0';	/* Remove trailing '\n' */
          dbg_printf("task_key: fgets() returned \"%s\"", buf);
	  
	  /* Parse command */
	  switch (buf[0]) {
	    case 'e':
	      dbg_printf("This is the 'e' command");
	      continue;
 	    case 's':
	      pr_ucos_status();
	      continue;
	  }	/* switch ()... */
      }
      else {
          dbg_printf("task_key: fgets() returned NULL");
      }
  }	/* while (1)... */
}	/* task_key() */


static void start_serial(void)
{
    dbg_printf("start_serial: before IE=%02X, IP=%02X, PCON=%02X, SCON=%02X, TMOD=%02X",
	IE, IP, PCON, SCON, TMOD);

    /* Chain Serial ISR */
    dbg_printf("setvect(INT_RI_TI, %04X)", (u_int16_t)OSSerialISR);
    setvect(INT_RI_TI, OSSerialISR);

    ES = 1;		/* Enable Serial Port Interrupt */

    dbg_printf("start_serial: after IE=%02X, IP=%02X, PCON=%02X, SCON=%02X, TMOD=%02X",
	IE, IP, PCON, SCON, TMOD);
}	/* start_serial() */



#if USE_TIMER0
void start_timer0(void)
{
    OldTimeTick = getvect(INT_TF0);
    /* dbg_printf("OldTick=%04X", (u_int16_t)OldTimeTick); */
    /* dbg_printf("setvect(INT_TF0, %04X)", (u_int16_t)OSTimeTick); */
    setvect(INT_TF0, OSTimeTick);

    /* Program Timer 0:
     *     Gate = 0 => timer enabled on TR0
     *     C/nT = 0 => source = 1/12 fOSC
     *     mode = 1 => 16-Bit counter/timer
     */
#pragma asm
    mov	a, TMOD
    anl a, #0F0h
    orl a, #01h
    mov TMOD, a
    
    mov a, #00h
    mov TL0, a
    mov a, #00h
    mov TH0, a
#pragma endasm

    ET0 = 1;		/* Enable Interrupt on Timer 0 Overflow */

    TR0 = 1;		/* Start Timer 0 */
}	/* start_timer0() */
#endif	/* start_timer0() */


#if (!USE_TIMER0)
void start_timer1(void)
{
    OldTimeTick = getvect(INT_TF1);
    /* dbg_printf("OldTick=%04X", (u_int16_t)OldTimeTick); */
    /* dbg_printf("setvect(INT_TF1, %04X)", (u_int16_t)OSTimeTick); */
    setvect(INT_TF1, OSTimeTick);

    /* Program Timer 1:
     *     Gate = 0 => timer enabled on TR1
     *     C/nT = 0 => source = 1/12 fOSC
     *     mode = 0 => 13-bit counter
     */
#pragma asm
    mov	a, TMOD
    anl	a, #0Fh
    orl	a, #00h
    mov	TMOD, a

    mov a, #00h
    mov TL1, a
    mov a, #00h
    mov TH1, a
#pragma endasm

    ET1 = 1;		/* Enable Interrupt on Timer 1 Overflow */

    TR1 = 1;		/* Start Timer 1 */
}	/* start_timer1() */
#endif /* (!USE_TIMER0) */


int main(/* int argc, char *argv[] */)
{
    OSInit();

    DpySemPtr	= OSSemCreate(1);			/* Dpy semaphore */
    KeyQPtr	= OSQCreate(&KeyQ[0], KEY_Q_SIZE);	/* Kbd queue     */

    OSTaskCreate(task_key, NULL,  stk_key, 8);
    OSTaskCreate(Task3,    Data3, Stk3,   30);
    OSTaskCreate(Task2,    Data2, Stk2,   40);
    OSTaskCreate(Task1,    Data1, Stk1,   50);

    OS_ENTER_CRITICAL();
#if USE_TIMER0
    start_timer0();
#else
    start_timer1();
#endif
    start_serial();
    dbg_printf("before OSStart IE=%02X, IP=%02X, TMOD=%02X",
	IE, IP, TMOD);

    /* Flush Transmitter Interrupt */
    while (!TI)
	;
    TI = 0;

    /* Start multitasking - will do OS_EXIT_CRITICAL() */
    OSStart();

    return 0;	/* will never happen... */
}	/* main() */

/* === End of File === */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人在线观看| 欧美xxxxx牲另类人与| 美美哒免费高清在线观看视频一区二区| 日本一区二区三区高清不卡| 日韩免费成人网| 日韩视频一区在线观看| 日韩精品中文字幕一区| 日韩一级欧美一级| 欧美成人免费网站| 2020国产精品自拍| 日本一区二区久久| 亚洲男人的天堂在线观看| 亚洲精品视频在线观看网站| 一区二区三区.www| 日韩国产在线一| 蜜臀久久99精品久久久久久9| 久久精品99国产精品日本| 久久99久久99精品免视看婷婷| 激情综合色播五月| 成人免费高清在线| 欧美性大战久久久| 欧美一三区三区四区免费在线看| 日韩亚洲欧美综合| 国产精品乱人伦一区二区| 亚洲精品中文字幕在线观看| 亚洲妇女屁股眼交7| 99re热视频精品| 精品国产91久久久久久久妲己| 欧美性猛片aaaaaaa做受| 在线电影院国产精品| 欧美电影精品一区二区| 国产精品传媒视频| 日韩中文字幕区一区有砖一区| 久久精品二区亚洲w码| 99久久综合国产精品| 欧美日韩国产在线观看| 国产欧美一区二区三区网站 | 亚洲精品视频免费观看| 日本伊人精品一区二区三区观看方式| 久久99精品国产.久久久久| 91色porny| 久久久亚洲国产美女国产盗摄 | 久久久噜噜噜久久人人看| 国产综合久久久久久鬼色| 国产成人一级电影| 欧美肥胖老妇做爰| 日韩一区欧美一区| 久久99精品国产麻豆不卡| 91蜜桃婷婷狠狠久久综合9色| 欧美电视剧在线看免费| 亚洲午夜电影在线观看| 高潮精品一区videoshd| 日韩欧美国产一区在线观看| 亚洲自拍偷拍麻豆| av动漫一区二区| 精品国产免费一区二区三区香蕉| 亚洲国产视频直播| 99re热这里只有精品免费视频| 2020国产成人综合网| 免费xxxx性欧美18vr| 日韩免费看网站| 亚洲电影第三页| 欧美三级电影在线看| 一区二区成人在线| 国产亲近乱来精品视频| 日本一区二区三区电影| 26uuu精品一区二区| 2023国产精品| 中文字幕在线观看一区| 国产精品福利一区二区| 亚洲图片你懂的| 日韩激情在线观看| 亚洲精品免费播放| 久久精品一级爱片| 激情综合五月天| 欧美大度的电影原声| 久久99国产精品久久99果冻传媒| 午夜欧美在线一二页| 久久精品欧美日韩精品| 久久久久久久综合色一本| 午夜欧美电影在线观看| 欧美日韩精品二区第二页| 亚洲一区二区三区不卡国产欧美| www.66久久| 亚洲美女免费视频| 欧美性感一区二区三区| 日本不卡视频在线| 国产精品色哟哟| 成人精品电影在线观看| 亚洲人成网站精品片在线观看| 色综合久久综合网97色综合| 亚洲国产另类av| 日韩网站在线看片你懂的| 国产剧情一区在线| 中文字幕人成不卡一区| 91搞黄在线观看| 性欧美疯狂xxxxbbbb| 日韩色视频在线观看| 26uuu国产电影一区二区| 国产精品久久久一本精品| 久久av老司机精品网站导航| 制服.丝袜.亚洲.中文.综合| 免费成人在线观看| 国产精品水嫩水嫩| 色欧美片视频在线观看| 久久狠狠亚洲综合| 亚洲国产精华液网站w| 欧美调教femdomvk| 国产一区二区在线电影| 亚洲精品你懂的| 2020国产精品自拍| 在线欧美一区二区| 黑人精品欧美一区二区蜜桃| 日韩一区在线看| 精品国产第一区二区三区观看体验| 成人精品视频一区二区三区尤物| 亚洲午夜一区二区三区| 国产亚洲一本大道中文在线| 欧美区视频在线观看| 成人app网站| 久久精品999| 亚洲女子a中天字幕| 中文av一区二区| 亚洲欧美在线视频| 精品国产sm最大网站| 在线一区二区三区做爰视频网站| 精品在线播放免费| 婷婷国产在线综合| 中文字幕亚洲不卡| 国产亚洲成年网址在线观看| 欧美日韩国产片| 色呦呦国产精品| 成人精品小蝌蚪| 国产mv日韩mv欧美| 狠狠色狠狠色合久久伊人| 视频一区二区中文字幕| 亚洲精品第1页| 亚洲男人都懂的| 综合电影一区二区三区| 国产精品免费视频观看| 久久久久9999亚洲精品| 亚洲精品一区二区三区福利| 日韩一区二区三区高清免费看看| 欧美日韩高清在线播放| 欧美亚洲国产一区二区三区| 一本一道波多野结衣一区二区| 成人的网站免费观看| thepron国产精品| 成人av在线播放网址| 粉嫩av一区二区三区| 国产成人av影院| 国产v综合v亚洲欧| 国产成人av一区二区三区在线| 国产精品538一区二区在线| 国产白丝精品91爽爽久久 | 精品一区免费av| 久久久久国产精品厨房| 精品理论电影在线观看| 日韩精品在线一区二区| 欧美va亚洲va在线观看蝴蝶网| 日韩一区二区三区电影在线观看| 91精品国产91久久久久久一区二区 | 亚洲午夜一区二区| 亚洲午夜免费视频| 午夜av一区二区| 蜜桃视频在线一区| 国产综合久久久久影院| 国产69精品久久久久毛片 | 亚洲综合视频网| 午夜电影一区二区| 国内精品嫩模私拍在线| 成人av网站在线观看| 91蝌蚪porny九色| 欧美日韩精品高清| 精品国产不卡一区二区三区| 亚洲国产精品高清| 亚洲精品视频在线看| 秋霞电影一区二区| 国产成人综合亚洲91猫咪| 91在线视频网址| 日韩欧美一区二区视频| 久久久国产一区二区三区四区小说| 欧美精品v国产精品v日韩精品| www.久久精品| 99国产欧美另类久久久精品| 欧美在线999| 日韩精品自拍偷拍| 国产精品午夜在线观看| 久久99国内精品| av不卡在线播放| 日韩午夜在线影院| 国产精品嫩草99a| 日韩av一区二区三区| 国产成人aaa| 91麻豆精品在线观看| 日韩欧美国产一二三区| 亚洲欧美激情视频在线观看一区二区三区 | 国产精品18久久久久久久网站| 色哟哟一区二区三区| 精品va天堂亚洲国产|