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

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

?? serial.c

?? 這是《Keil Cx51 V7.0單片機高級語言編程與uVision2應用實踐》教材各章中列出的全部程序例子。
?? C
字號:

/*****************************************************************************/
/*       SERIAL.C:  應用RTX-51 tiny的串行口中斷控制器     */
/*****************************************************************************/
#include <reg52.h>                    /* 8052單片機特殊功能寄存器定義 */
#include <rtx51tny.h>                 /* RTX-51 tiny 功能函數定義 */

#define  OLEN  8                      /* 定義串行口通信發送緩沖區的大小 */
unsigned char  ostart;                /* 串行口發送緩沖區起點 */
unsigned char  oend;                  /* 串行口發送緩沖區終點 */
idata    char  outbuf[OLEN];          /* 串行口發送緩沖區 */
unsigned char  otask = 0xff;          /* 輸出任務的任務號 */

#define  ILEN  8                      /* 定義串行口通信接收緩沖區大小 */
unsigned char  istart;                /* 串行口接收緩沖區起點 */
unsigned char  iend;                  /* 串行口接收緩沖區終點 */
idata    char  inbuf[ILEN];           /* 串行口接收緩沖區 */
unsigned char  itask = 0xff;          /* 輸入任務的任務號 */

#define   CTRL_Q  0x11                /* 定義CTRL_Q代碼 */
#define   CTRL_S  0x13                /* 定義CTRL_S代碼 */

bit   sendfull;                       /* 發送緩沖區滿標志 */
bit   sendactive;                     /* 發送激活標志 */
bit   sendstop;                       /* XOFF 字符標志 */

/******************************************************************************/
/*       putbuf:  向SBUF 或發送緩沖區寫入字符函數                             */
/******************************************************************************/
putbuf (char c)  {
  if (!sendfull)  {                   /* 僅當緩沖區未滿時發送 */
    if (!sendactive && !sendstop)  {  /* 如果發送器未處于活動態:*/
      sendactive = 1;                 /* 直接發送第一個字符 */
      SBUF = c;                       /* 到SBUF,啟動發送 */
    }
    else  {                          /* 否則: */
      outbuf[oend++ & (OLEN-1)] = c;  /* 向發送緩沖區傳送字符 */
      if (((oend ^ ostart) & (OLEN-1)) == 0)  sendfull = 1;
    }                                 /* 置位緩沖區滿標志 */
  }
}

/******************************************************************************/
/*       putchar:  中斷控制器的putchar 函數                                  */
/******************************************************************************/
char putchar (char c)  {
  if (c == '\n')  {                   /* 擴展一行新字符: */
    while (sendfull)  {               /* 等待發送緩沖區空 */
      otask = os_running_task_id ();  /* 置位輸出任務號 */
      os_wait (K_SIG, 0, 0);          /* RTX-51 調用: 等待信號 */
      otask = 0xff;                   /* 清零輸出任務號 */
    }
    putbuf (0x0D);                    /* 在換行符LF之前發送回車符CR */
  }
  while (sendfull)  {                 /* 等待發送緩沖區空 */
    otask = os_running_task_id ();    /*  置位輸出任務號 */
    os_wait (K_SIG, 0, 0);            /* RTX-51 調用: 等待信號 */
    otask = 0xff;                     /* 清零輸出任務號 */
  }
  putbuf (c);                         /* 發送字符 */
  return (c);                         /* 返回字符 */
}

/******************************************************************************/
/*       _getkey:  中斷控制器函數 _getkey                                     */
/******************************************************************************/
char _getkey (void)  {
  while  (iend == istart)  {
    itask = os_running_task_id ();    /* 置位輸入任務號 */
    os_wait (K_SIG, 0, 0);            /* RTX-51 調用: 等待信號 */
    itask = 0xff;                     /* 清零輸入任務號 */
  }
  return (inbuf[istart++ & (ILEN-1)]);
}

/******************************************************************************/
/*       serial:  串行接收/發送中斷                                           */
/******************************************************************************/
serial () interrupt 4 using 2  {     /* 中斷使用工作寄存器2區 */
  unsigned char c;
  bit   start_trans = 0;

  if (RI)  {                         /* 如果是接收中斷 */
    c = SBUF;                        /* 讀字符 */
    RI = 0;                          /* 清零中斷請求標志 */
    switch (c)  {                    /* 字符處理 */
      case CTRL_S:
        sendstop = 1;                /* 如果是CTRL_S 則停止發送 */
        break;

      case CTRL_Q:
        start_trans = sendstop;      /* 如果是CTRL_Q 則開始發送 */
        sendstop = 0;
        break;

      default:                       /* 將其它字符讀入輸入緩沖區 */
        if (istart + ILEN != iend)  {
          inbuf[iend++ & (ILEN-1)] = c;
        }
                                     /* 如果是任務等待:信號就緒 */
        if (itask != 0xFF) isr_send_signal (itask);
        break;
    }
  }

  if (TI || start_trans)  {          /* 如果是發送中斷 */
    TI = 0;                          /* 清零中斷請求標志 */
    if (ostart != oend)  {           /* 如果輸入緩沖區接收到字符 */
      if (!sendstop)  {              /* 且不是CTRL_S */
        SBUF = outbuf[ostart++ & (OLEN-1)];      /* 發送字符 */
        sendfull = 0;                /* 清零sendfull 標志 */
                                     /* 如果是任務等待:信號就緒 */
        if (otask != 0xFF)  isr_send_signal (otask);
      }
    }
    else sendactive = 0;             /* 如果全部發送完則清零sendactive */
  }

}

/******************************************************************************/
/*       serial_init: 串行口初始化                                            */
/******************************************************************************/
serial_init ()  {
  SCON  = 0x50;                      /* 串行口方式1,8位 UART, 允許接收 */
  TMOD |= 0x20;                      /* 定時器方式2,8位自動重裝 */
  TH1   = 0xf3;                      /* 2400 波特率 */
  TR1   = 1;                         /* 啟動定時器1 */
  ES    = 1;                         /* 允許串行口中斷 */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲大尺度视频在线观看| 久久久精品国产免费观看同学| 国产精品青草综合久久久久99| 久久99九九99精品| 久久综合色综合88| 成人午夜激情片| 有坂深雪av一区二区精品| 91福利在线观看| 琪琪久久久久日韩精品| 精品日韩一区二区| 成人小视频在线| 亚洲婷婷在线视频| 欧美日韩国产在线播放网站| 日本中文字幕一区二区视频| 精品久久久久久久久久久久久久久 | 成人动漫在线一区| 亚洲精品乱码久久久久久黑人 | 欧美色倩网站大全免费| 奇米精品一区二区三区在线观看| 亚洲精品一线二线三线| 成人动漫一区二区在线| 亚洲午夜免费电影| 精品国产污污免费网站入口 | 美腿丝袜在线亚洲一区 | 精品一区二区日韩| 国产精品久久久久桃色tv| 在线观看一区二区精品视频| 另类小说图片综合网| 国产精品卡一卡二卡三| 51精品国自产在线| av一区二区三区在线| 亚洲高清免费观看高清完整版在线观看| 欧美一区二区日韩| 99精品国产99久久久久久白柏| 偷拍日韩校园综合在线| 国产欧美日韩在线| 欧美日韩国产精品自在自线| 国产不卡免费视频| 天天综合天天做天天综合| 国产精品污污网站在线观看| 欧美美女直播网站| av综合在线播放| 麻豆成人久久精品二区三区红 | 91精品婷婷国产综合久久性色| 高清国产一区二区| 免费视频最近日韩| 亚洲精品乱码久久久久久| 精品电影一区二区| 91电影在线观看| 成人黄色a**站在线观看| 日韩1区2区3区| 一区二区三区精品视频| 国产欧美精品日韩区二区麻豆天美| 欧美日韩三级一区| 91偷拍与自偷拍精品| 国产精品888| 狠狠色丁香久久婷婷综| 日韩精品欧美精品| 亚洲午夜电影在线观看| 国产精品毛片无遮挡高清| 日韩精品一区二区三区四区| 欧美日韩五月天| 在线观看欧美精品| 99精品国产99久久久久久白柏| 国产传媒日韩欧美成人| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美四级电影网| 91麻豆文化传媒在线观看| 国产69精品久久久久777| 精品一区二区在线视频| 日韩av在线播放中文字幕| 亚洲综合视频在线| 亚洲欧洲综合另类在线| 中文字幕在线视频一区| 欧美国产日韩亚洲一区| 久久久www成人免费无遮挡大片| 欧美电影免费观看高清完整版在线| 欧美日韩国产一二三| 欧美色综合网站| 欧美色图一区二区三区| 欧美三级资源在线| 欧美日韩国产精选| 欧美一区二区三区啪啪| 欧美一级黄色录像| 精品精品国产高清a毛片牛牛| 日韩一级大片在线观看| 欧美xxxx老人做受| 欧美精品一区二区三区在线 | 黑人巨大精品欧美一区| 免费高清在线一区| 精彩视频一区二区三区| 国产精品资源在线| 成人免费高清在线| 色屁屁一区二区| 欧美日韩免费在线视频| 91精品国产综合久久久久久漫画| 欧美一区二区三区人| 国产午夜精品福利| 亚洲欧美一区二区三区久本道91| 亚洲一区二区av电影| 日本欧美在线观看| 国产精品亚洲第一| 97精品电影院| 欧美日韩一区不卡| 精品国产一区二区在线观看| 国产三级精品三级在线专区| 亚洲品质自拍视频| 日本亚洲天堂网| 高清国产一区二区| 欧美亚州韩日在线看免费版国语版| 欧美丰满一区二区免费视频| 国产亚洲欧洲一区高清在线观看| √…a在线天堂一区| 日韩在线一区二区| 国产1区2区3区精品美女| 欧美性淫爽ww久久久久无| 精品99999| 国产成人在线视频免费播放| 色综合久久久久综合体| 日韩精品一区二区三区蜜臀| 中文字幕在线视频一区| 琪琪久久久久日韩精品| 成人国产精品免费观看视频| 欧美日本韩国一区| 国产精品家庭影院| 麻豆精品在线看| 在线一区二区视频| 国产午夜精品久久久久久久 | 午夜精品久久久久| 国产高清不卡二三区| 欧美日韩美少妇| 国产精品初高中害羞小美女文| 日韩成人免费电影| 色婷婷综合久色| 久久久久久久久久久电影| 亚洲第一狼人社区| 成人免费看黄yyy456| 欧美变态凌虐bdsm| 亚洲成国产人片在线观看| 成人av在线影院| 欧美成人性战久久| 亚洲成av人片在线观看| 成人黄色片在线观看| www国产精品av| 青青草97国产精品免费观看无弹窗版 | 韩国视频一区二区| 欧美精品在线一区二区三区| 亚洲欧美在线高清| 丁香一区二区三区| 精品国产sm最大网站免费看| 三级久久三级久久| 欧美在线免费视屏| 亚洲免费高清视频在线| 成人av网站免费观看| 久久久久久久久久久久久夜| 全国精品久久少妇| 7878成人国产在线观看| 亚洲精品久久嫩草网站秘色| 99久久免费视频.com| 中文字幕av一区二区三区高 | 不卡的av电影| 国产日韩在线不卡| 国产精品一区久久久久| 久久久亚洲午夜电影| 久久精品99久久久| 日韩美女视频一区二区在线观看| 午夜精品久久久久久久99水蜜桃| 欧美亚洲精品一区| 一区二区三区高清| 日本韩国欧美一区| 亚洲午夜电影在线观看| 欧美日韩一区三区四区| 亚洲成在线观看| 制服丝袜在线91| 日韩不卡一区二区| 日韩欧美国产小视频| 久久精品99国产国产精| 日韩精品资源二区在线| 国产精品一区二区x88av| 国产网站一区二区三区| av在线免费不卡| 亚洲免费在线看| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品护士白丝一区av| 波多野结衣在线aⅴ中文字幕不卡| 国产精品三级视频| 色域天天综合网| 午夜精品久久久久| 欧美精品一区二区三区蜜桃视频 | 最新国产成人在线观看| 一本色道久久综合狠狠躁的推荐 | 欧美国产禁国产网站cc| av网站免费线看精品| 亚洲一级不卡视频| 91精品国产高清一区二区三区| 精品影视av免费| 国产精品久久久久一区| 欧美性做爰猛烈叫床潮| 极品少妇一区二区| 中文字幕在线不卡视频|