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

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

?? serial.c

?? 基于keil c51的rtos tiny源代碼(keil 7.05 version)
?? C
字號:
/******************************************************************************/
/*                                                                            */
/*       SERIAL.C:  Interrupt Controlled Serial Interface for RTX-51 tiny     */
/*                                                                            */
/******************************************************************************/


#include <reg52.h>                    /* special function register 8052       */
#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */

#define  OLEN  8                      /* size of serial transmission buffer   */
unsigned char  ostart;                /* transmission buffer start index      */
unsigned char  oend;                  /* transmission buffer end index        */
idata    char  outbuf[OLEN];          /* storage for transmission buffer      */
unsigned char  otask = 0xff;          /* task number of output task           */

#define  ILEN  8                      /* size of serial receiving buffer      */
unsigned char  istart;                /* receiving buffer start index         */
unsigned char  iend;                  /* receiving buffer end index           */
idata    char  inbuf[ILEN];           /* storage for receiving buffer         */
unsigned char  itask = 0xff;          /* task number of output task           */

#define   CTRL_Q  0x11                /* Control+Q character code             */
#define   CTRL_S  0x13                /* Control+S character code             */

bit   sendfull;                       /* flag: marks transmit buffer full     */
bit   sendactive;                     /* flag: marks transmitter active       */
bit   sendstop;                       /* flag: marks XOFF character           */

/******************************************************************************/
/*       putbuf:  write a character to SBUF or transmission buffer            */
/******************************************************************************/
void putbuf (char c)  {
  if (!sendfull)  {                   /* transmit only if buffer not full     */
    if (!sendactive && !sendstop)  {  /* if transmitter not active:           */
      sendactive = 1;                 /* transfer the first character direct  */
      SBUF = c;                       /* to SBUF to start transmission        */
    }
    else  {                           /* otherwize:                           */
      outbuf[oend++ & (OLEN-1)] = c;  /* transfer char to transmission buffer */
      if (((oend ^ ostart) & (OLEN-1)) == 0)  sendfull = 1;
    }                                 /* set flag if buffer is full           */
  }
}


/******************************************************************************/
/*       putchar:  interrupt controlled putchar function                      */
/******************************************************************************/
char putchar (char c)  {
  if (c == '\n')  {                   /* expand new line character:           */
    while (sendfull)  {               /* wait for transmission buffer empty   */
      otask = os_running_task_id ();  /* set output task number               */
      os_wait (K_SIG, 0, 0);          /* RTX-51 call: wait for signal         */
      otask = 0xff;                   /* clear output task number             */
    }
    putbuf (0x0D);                    /* send CR before LF for <new line>     */
  }
  while (sendfull)  {                 /* wait for transmission buffer empty   */
    otask = os_running_task_id ();    /* set output task number               */
    os_wait (K_SIG, 0, 0);            /* RTX-51 call: wait for signal         */
    otask = 0xff;                     /* clear output task number             */
  }
  putbuf (c);                         /* send character                       */
  return (c);                         /* return character: ANSI requirement   */
}


/******************************************************************************/
/*       _getkey:  interrupt controlled _getkey                               */
/******************************************************************************/
char _getkey (void)  {
  while  (iend == istart)  {
    itask = os_running_task_id ();    /* set input task number                */
    os_wait (K_SIG, 0, 0);            /* RTX-51 call: wait for signal         */
    itask = 0xff;                     /* clear input task number              */
  }
  return (inbuf[istart++ & (ILEN-1)]);
}


/******************************************************************************/
/*       serial:  serial receiver / transmitter interrupt                     */
/******************************************************************************/
serial () interrupt 4 using 2  {     /* use registerbank 2 for interrupt      */
  unsigned char c;
  bit   start_trans = 0;

  if (RI)  {                         /* if receiver interrupt                 */
    c = SBUF;                        /* read character                        */
    RI = 0;                          /* clear interrupt request flag          */
    switch (c)  {                    /* process character                     */
      case CTRL_S:
        sendstop = 1;                /* if Control+S stop transmission        */
        break;

      case CTRL_Q:
        start_trans = sendstop;      /* if Control+Q start transmission       */
        sendstop = 0;
        break;

      default:                       /* read all other characters into inbuf  */
        if (istart + ILEN != iend)  {
          inbuf[iend++ & (ILEN-1)] = c;
        }
                                     /* if task waiting: signal ready         */
        if (itask != 0xFF) isr_send_signal (itask);
        break;
    }
  }

  if (TI || start_trans)  {          /* if transmitter interrupt              */
    TI = 0;                          /* clear interrupt request flag          */
    if (ostart != oend)  {           /* if characters in buffer and           */
      if (!sendstop)  {              /* if not Control+S received             */
        SBUF = outbuf[ostart++ & (OLEN-1)];      /* transmit character        */
        sendfull = 0;                /* clear 'sendfull' flag                 */
                                     /* if task waiting: signal ready         */
        if (otask != 0xFF)  isr_send_signal (otask);
      }
    }
    else sendactive = 0;             /* if all transmitted clear 'sendactive' */
  }

}


/******************************************************************************/
/*       serial_init: initialize serial interface                             */
/******************************************************************************/
void serial_init (void)  {
  SCON  = 0x50;                      /* mode 1: 8-bit UART, enable receiver   */
  TMOD |= 0x20;                      /* timer 1 mode 2: 8-Bit reload          */
  TH1   = 0xf3;                      /* reload value 2400 baud                */
  TR1   = 1;                         /* timer 1 run                           */
  ES    = 1;                         /* enable serial port interrupt          */
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久www免费人成精品| 亚洲人被黑人高潮完整版| 成人一级片网址| 亚洲综合精品自拍| 国产人成一区二区三区影院| 欧美午夜精品一区二区三区| 国产精品69毛片高清亚洲| 一区二区三区久久| 久久久久久久久久久久电影| 欧美日韩国产中文| eeuss鲁片一区二区三区在线观看| 亚洲成a人片在线观看中文| 天堂av在线一区| 亚洲欧美一区二区不卡| 久久久久久久综合狠狠综合| 91精品久久久久久久91蜜桃| 91影院在线观看| 国产盗摄视频一区二区三区| 日韩国产欧美在线播放| 亚洲欧美激情一区二区| 中文字幕免费观看一区| 精品国产髙清在线看国产毛片 | 色一情一乱一乱一91av| 激情伊人五月天久久综合| 亚洲一区二区精品视频| 国产精品久久久久一区| www激情久久| 欧美一区二区三区四区视频| 欧美日本在线观看| 91成人免费在线视频| 国产xxx精品视频大全| 精品伊人久久久久7777人| 午夜av一区二区| 亚洲成av人片一区二区梦乃| 亚洲黄色av一区| 亚洲欧洲av色图| 国产精品欧美综合在线| 国产色产综合产在线视频| 久久伊人蜜桃av一区二区| 日韩欧美中文一区| 欧美一级黄色大片| 7777精品伊人久久久大香线蕉的 | 日日夜夜免费精品| 婷婷综合在线观看| 日韩一区精品视频| 日韩av一区二区三区四区| 青椒成人免费视频| 韩国精品一区二区| 国产精品911| 成人av在线一区二区| caoporm超碰国产精品| 色香蕉成人二区免费| 一本大道久久a久久综合| 日本韩国欧美国产| 欧美亚洲精品一区| 欧美色图12p| 欧美日韩情趣电影| 日韩欧美在线123| 欧美mv日韩mv亚洲| 日本一区二区三区四区| 中文字幕亚洲综合久久菠萝蜜| 亚洲欧洲国产日韩| 亚洲成人自拍一区| 蜜臀精品久久久久久蜜臀| 国产一区在线视频| av在线播放成人| 一本高清dvd不卡在线观看| 欧美日韩日本视频| 欧美videossexotv100| 国产丝袜美腿一区二区三区| 中文字幕一区二区在线观看| 一二三四区精品视频| 青青草原综合久久大伊人精品优势| 精品一二三四区| jizzjizzjizz欧美| 欧美精品在欧美一区二区少妇| 精品精品国产高清一毛片一天堂| 国产欧美日韩一区二区三区在线观看| 亚洲免费在线看| 日韩二区在线观看| 国产成人h网站| 欧美午夜不卡视频| 精品sm捆绑视频| 亚洲三级电影网站| 极品少妇xxxx精品少妇偷拍| 丰满白嫩尤物一区二区| 欧美午夜免费电影| 久久久www成人免费无遮挡大片| 亚洲美女免费视频| 久久不见久久见中文字幕免费| 99久久精品免费看国产免费软件| 欧美日韩高清一区| 国产精品全国免费观看高清| 天天综合天天综合色| 盗摄精品av一区二区三区| 8v天堂国产在线一区二区| 国产精品无码永久免费888| 天堂一区二区在线免费观看| 国产成人av影院| 在线电影国产精品| 国产精品视频看| 日本不卡一二三| 色婷婷久久久亚洲一区二区三区| 久久久一区二区三区捆绑**| 亚洲一区二区三区在线播放| 懂色一区二区三区免费观看| 欧美一级高清大全免费观看| 一区二区三区蜜桃网| 国产91精品一区二区麻豆网站| 91精品国产免费久久综合| 亚洲婷婷在线视频| 成人深夜福利app| 久久女同精品一区二区| 日韩在线一二三区| 在线看日本不卡| 中文av一区二区| 国产乱子伦视频一区二区三区| 欧美一区二区三区在线电影| 亚洲免费看黄网站| 成人av网站在线| 国产日韩欧美高清| 国产伦精一区二区三区| 日韩欧美国产一区二区在线播放| 亚洲一区二区三区三| 99在线精品视频| 久久久久99精品国产片| 精品一区二区综合| 日韩女优毛片在线| 日韩av一二三| 欧美人妖巨大在线| 亚洲国产日韩a在线播放| 91麻豆.com| 中文字幕综合网| 不卡一区中文字幕| 国产精品久久久久久久第一福利| 国产风韵犹存在线视精品| 精品国产一区二区三区久久影院 | 国内国产精品久久| 日韩欧美专区在线| 免费xxxx性欧美18vr| 日韩欧美国产系列| 免费成人你懂的| 欧美va亚洲va在线观看蝴蝶网| 男女性色大片免费观看一区二区| 日韩欧美视频在线| 国产乱码字幕精品高清av| 国产欧美精品一区二区色综合 | 4438成人网| 日韩av在线发布| 欧美成人性福生活免费看| 蓝色福利精品导航| 久久无码av三级| 成人综合激情网| 国产精品久久久久婷婷二区次| 99精品视频在线播放观看| 亚洲人成网站在线| 欧美三电影在线| 免播放器亚洲一区| 久久久精品免费免费| 99久久精品免费看国产免费软件| 亚洲国产成人高清精品| 欧美日韩国产影片| 精品写真视频在线观看| 中文字幕成人在线观看| 色综合久久中文字幕综合网| 亚洲国产欧美日韩另类综合| 91精品国产综合久久久久久久 | 欧美在线免费观看亚洲| 五月婷婷激情综合网| 精品精品国产高清一毛片一天堂| 国产夫妻精品视频| 亚洲欧美日韩在线| 日韩三级中文字幕| 国产精品主播直播| 亚洲午夜免费视频| 精品国产乱码久久久久久图片 | 日韩和欧美一区二区| 日韩欧美亚洲国产精品字幕久久久| 丁香天五香天堂综合| 亚洲午夜久久久久久久久久久| 日韩午夜在线观看| 不卡av免费在线观看| 视频一区视频二区在线观看| 久久综合九色综合97婷婷女人 | 99久久国产综合精品麻豆| 丝袜亚洲精品中文字幕一区| 国产日韩亚洲欧美综合| 欧美性xxxxx极品少妇| 韩国三级电影一区二区| 亚洲美女视频一区| 久久众筹精品私拍模特| 色成年激情久久综合| 久久精品国产亚洲a| 亚洲欧美日韩中文字幕一区二区三区 | 国产一区二区日韩精品| 一区二区欧美精品| 国产清纯美女被跳蛋高潮一区二区久久w| 在线看日韩精品电影| 国产精品18久久久久久久网站| 亚洲福利视频一区二区|