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

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

?? traffic.c

?? 用來(lái)調(diào)試C51程序的軟件
?? C
字號(hào):
/******************************************************************************/
/*                                                                            */
/*   TRAFFIC.C:  Traffic Light Controller using the C-51 COMPILER             */
/*                                                                            */
/******************************************************************************/

char code menu[] = 
   "\n"
   "+***** TRAFFIC LIGHT CONTROLLER using C51 and RTX-51 tiny *****+\n"
   "| This program is a simple Traffic Light Controller.  Between  |\n"
   "| start time and end time the system controls a traffic light  |\n"
   "| with pedestrian self-service.  Outside of this time range    |\n"
   "| the yellow caution lamp is blinking.                         |\n"
   "+ command -+ syntax -----+ function ---------------------------+\n"
   "| Display  | D           | display times                       |\n"
   "| Time     | T hh:mm:ss  | set clock time                      |\n"
   "| Start    | S hh:mm:ss  | set start time                      |\n"
   "| End      | E hh:mm:ss  | set end time                        |\n"
   "+----------+-------------+-------------------------------------+\n";


#include <reg52.h>                    /* special function registers 8052      */
#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */
#include <stdio.h>                    /* standard I/O .h-file                 */
#include <ctype.h>                    /* character functions                  */
#include <string.h>                   /* string and memory functions          */


extern getline (char idata *, char);  /* external function:  input line       */
extern serial_init ();                /* external function:  init serial UART */

#define INIT      0                   /* task number of task:  init           */
#define COMMAND   1                   /* task number of task:  command        */
#define CLOCK     2                   /* task number of task:  clock          */
#define BLINKING  3                   /* task number of task:  blinking       */
#define LIGHTS    4                   /* task number of task:  signal         */
#define KEYREAD   5                   /* task number of task:  keyread        */
#define GET_ESC   6                   /* task number of task:  get_escape     */

struct time  {                        /* structure of the time record         */
  unsigned char hour;                 /* hour                                 */
  unsigned char min;                  /* minute                               */
  unsigned char sec;                  /* second                               */
};

struct time ctime = { 12,  0,  0 };   /* storage for clock time values        */
struct time start = {  7, 30,  0 };   /* storage for start time values        */
struct time end   = { 18, 30,  0 };   /* storage for end   time values        */

sbit  red    = P1^2;                  /* I/O Pin:  red    lamp output         */
sbit  yellow = P1^1;                  /* I/O Pin:  yellow lamp output         */
sbit  green  = P1^0;                  /* I/O Pin:  green  lamp output         */
sbit  stop   = P1^3;                  /* I/O Pin:  stop   lamp output         */
sbit  walk   = P1^4;                  /* I/O Pin:  walk   lamp output         */
sbit  key    = P1^5;                  /* I/O Pin:  self-service key input     */

char idata inline[16];                /* storage for command input line       */


/******************************************************************************/
/*        Task 0 'init': Initialize                                           */
/******************************************************************************/
void init (void) _task_ INIT  {       /* program execution starts here        */
  serial_init ();                     /* initialize the serial interface      */
  os_create_task (CLOCK);             /* start clock task                     */
  os_create_task (COMMAND);           /* start command task                   */
  os_create_task (LIGHTS);            /* start lights task                    */
  os_create_task (KEYREAD);           /* start keyread task                   */
  os_delete_task (INIT);              /* stop init task (no longer needed)    */
}


bit display_time = 0;                 /* flag:  signal cmd state display_time */

/******************************************************************************/
/*        Task 2 'clock'                                                      */
/******************************************************************************/
void clock (void)  _task_ CLOCK  {
  while (1)  {                        /* clock is an endless loop             */
    if (++ctime.sec == 60)  {         /* calculate the second                 */
      ctime.sec = 0;
      if (++ctime.min == 60)  {       /* calculate the minute                 */
        ctime.min = 0;
        if (++ctime.hour == 24)  {    /* calculate the hour                   */
          ctime.hour = 0;
        }
      }
    }
    if (display_time)  {              /* if command_status == display_time    */
      os_send_signal (COMMAND);       /* signal to task command: time changed */
    }
    os_wait (K_IVL, 100, 0);          /* wait interval:  1 second             */
  }
}


struct time rtime;                    /* temporary storage for entry time     */

/******************************************************************************/
/*        readtime: convert line input to time values & store in rtime        */
/******************************************************************************/
bit readtime (char idata *buffer)  {
  unsigned char args;                          /* number of arguments         */

  rtime.sec = 0;                               /* preset second               */
  args = sscanf (buffer, "%bd:%bd:%bd",        /* scan input line for         */
                 &rtime.hour,                  /* hour, minute and second     */
                 &rtime.min,
                 &rtime.sec);
  
  if (rtime.hour > 23  ||  rtime.min > 59  ||  /* check for valid inputs      */
      rtime.sec > 59   ||  args < 2        ||  args == EOF)  {
    printf ("\n*** ERROR: INVALID TIME FORMAT\n");
    return (0);
  }
  return (1);
}



#define ESC  0x1B                     /* ESCAPE character code                */

bit   escape;                         /* flag: mark ESCAPE character entered  */

/******************************************************************************/
/*        Task 6 'get_escape': check if ESC (escape character) was entered    */
/******************************************************************************/
void get_escape (void) _task_ GET_ESC  {
  while (1)  {                                 /* endless loop                */
    if (_getkey () == ESC)  escape = 1;        /* set flag if ESC entered     */
    if (escape)  {                             /* if escape flag send signal  */
      os_send_signal (COMMAND);                /* to task 'command'           */
    }
  }
}


/******************************************************************************/
/*        Task 1 'command': command processor */
/******************************************************************************/
void command (void) _task_ COMMAND  {
  unsigned char i;

  printf (menu);                               /* display command menu        */
  while (1)  {                                 /* endless loop                */
    printf ("\nCommand: ");                    /* display prompt              */
    getline (&inline, sizeof (inline));        /* get command line input      */

    for (i = 0; inline[i] != 0; i++)  {        /* convert to uppercase        */
      inline[i] = toupper(inline[i]);
    }

    for (i = 0; inline[i] == ' '; i++);        /* skip blanks                 */

    switch (inline[i])  {                      /* proceed to command function */
      case 'D':                                /* Display Time Command        */
        printf ("Start Time: %02bd:%02bd:%02bd    "
                "End Time: %02bd:%02bd:%02bd\n",
                 start.hour, start.min, start.sec,
                 end.hour,   end.min,   end.sec);
        printf ("                        type ESC to abort\r");

        os_create_task (GET_ESC);              /* ESC check in display loop   */
        escape = 0;                            /* clear escape flag           */
        display_time = 1;                      /* set display time flag       */
        os_clear_signal (COMMAND);             /* clear pending signals       */

        while (!escape)  {                     /* while no ESC entered        */
          printf ("Clock Time: %02bd:%02bd:%02bd\r",      /* display time     */
                   ctime.hour, ctime.min, ctime.sec);
          os_wait (K_SIG, 0, 0);               /* wait for time change or ESC */
        }

        os_delete_task (GET_ESC);              /* ESC check not longer needed */
        display_time = 0;                      /* clear display time flag     */
        printf ("\n\n");
        break;

      case 'T':                                /* Set Time Command            */
        if (readtime (&inline[i+1]))  {        /* read time input and         */
          ctime.hour = rtime.hour;             /* store in 'ctime'            */
          ctime.min  = rtime.min;
          ctime.sec  = rtime.sec;
        }
        break;

      case 'E':                                /* Set End Time Command        */
        if (readtime (&inline[i+1]))  {        /* read time input and         */
          end.hour = rtime.hour;               /* store in 'end'              */
          end.min  = rtime.min;
          end.sec  = rtime.sec;
        }
        break;

      case 'S':                                /* Set Start Time Command */
        if (readtime (&inline[i+1]))  {        /* read time input and         */
          start.hour = rtime.hour;             /* store in 'start'            */
          start.min  = rtime.min;
          start.sec  = rtime.sec;
        }
        break;

      default:                                 /* Error Handling              */
        printf (menu);                         /* display command menu        */
        break;
    }   
  }
}


/******************************************************************************/
/*        signalon: check if clock time is between start and end              */
/******************************************************************************/
bit signalon (void)   {
  if (memcmp (&start, &end, sizeof (struct time)) < 0)  {
    if (memcmp (&start, &ctime, sizeof (struct time)) < 0  &&
        memcmp (&ctime, &end,   sizeof (struct time)) < 0)  return (1);
  }
                                                
  else  { 
    if (memcmp (&end,   &ctime, sizeof (start)) > 0  &&
        memcmp (&ctime, &start, sizeof (start)) > 0)  return (1);
  }
  return (0);                                  /* signal off, blinking on     */
}


/******************************************************************************/
/*        Task 3 'blinking': runs if current time is outside start & end time */
/******************************************************************************/
void blinking (void) _task_ BLINKING  {        /* blink yellow light          */
  red    = 0;                                  /* all lights off              */
  yellow = 0;
  green  = 0;
  stop   = 0;
  walk   = 0;

  while (1)  {                                 /* endless loop                */
    yellow = 1;                                /* yellow light on             */
    os_wait (K_TMO, 150, 0);                   /* wait for timeout: 150 ticks  */
    yellow = 0;                                /* yellow light off            */
    os_wait (K_TMO, 150, 0);                   /* wait for timeout: 150 ticks  */
    if (signalon ())  {                        /* if blinking time over       */
      os_create_task (LIGHTS);                 /* start lights                */
      os_delete_task (BLINKING);               /* and stop blinking           */
    }
  }
}


/******************************************************************************/
/*      Task 4 'lights': executes if current time is between start & end time */
/******************************************************************************/
void lights (void) _task_ LIGHTS  {            /* traffic light operation     */
  red    = 1;                                  /* red & stop lights on        */
  yellow = 0;
  green  = 0;
  stop   = 1;
  walk   = 0;
  while (1)  {                                 /* endless loop                */
    os_wait (K_TMO, 150, 0);                   /* wait for timeout: 150 ticks */
    if (!signalon ())  {                       /* if traffic signal time over */
      os_create_task (BLINKING);               /* start blinking              */
      os_delete_task (LIGHTS);                 /* stop lights                 */
    }
    yellow = 1;
    os_wait (K_TMO, 150, 0);                   /* wait for timeout: 150 ticks */
    red    = 0;                                /* green light for cars        */
    yellow = 0; 
    green  = 1;
    os_clear_signal (LIGHTS);
    os_wait (K_TMO, 200, 0);                   /* wait for timeout: 200 ticks */
    os_wait (K_TMO + K_SIG, 250, 0);           /* wait for timeout & signal   */
    yellow = 1;
    green  = 0;
    os_wait (K_TMO, 150, 0);                   /* wait for timeout: 150 ticks */
    red    = 1;                                /* red light for cars          */
    yellow = 0;
    os_wait (K_TMO, 150, 0);                   /* wait for timeout: 150 ticks */
    stop   = 0;                                /* green light for walkers     */    
    walk   = 1;
    os_wait (K_TMO, 250, 0);                   /* wait for timeout: 250 ticks */
    os_wait (K_TMO, 250, 0);                   /* wait for timeout: 250 ticks */
    stop   = 1;                                /* red light for walkers       */        
    walk   = 0;
  }
}


/******************************************************************************/
/*        Task 5 'keyread': process key stroke from pedestrian push button    */
/******************************************************************************/
void keyread (void) _task_ KEYREAD  {
  while (1)  {                                 /* endless loop                */
    if (key)  {                                /* if key pressed              */
      os_send_signal (LIGHTS);                 /* send signal to task lights  */
    }
    os_wait (K_TMO, 2, 0);                     /* wait for timeout: 2 ticks   */
  }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区二区三区| 亚洲亚洲精品在线观看| 中文字幕不卡三区| 性做久久久久久免费观看| 国产不卡视频一区二区三区| 欧美亚洲国产一区在线观看网站| 2023国产精华国产精品| 偷偷要91色婷婷| 一本大道久久a久久精品综合| 久久综合久久鬼色| 视频一区二区中文字幕| 日本久久一区二区| 国产精品伦理在线| 国产精华液一区二区三区| 日韩视频免费直播| 日本伊人精品一区二区三区观看方式| 色综合色狠狠天天综合色| 国产欧美视频在线观看| 国内精品视频一区二区三区八戒 | 欧美精品一二三| 国产精品国产a| 国产麻豆精品theporn| 日韩免费看网站| 日日欢夜夜爽一区| 欧美日韩大陆一区二区| 亚洲一区二区在线播放相泽| 99re这里只有精品6| 国产精品成人一区二区艾草 | 色激情天天射综合网| 国产精品情趣视频| 国产高清一区日本| 国产欧美日韩精品一区| 国产精品1区二区.| 中文字幕第一区二区| av午夜精品一区二区三区| 国产欧美1区2区3区| 成人性生交大片免费看中文网站| 国产午夜精品美女毛片视频| 国产91精品入口| 亚洲欧洲国产日韩| 一本色道亚洲精品aⅴ| 亚洲激情图片一区| 欧美日韩一区不卡| 日本女人一区二区三区| 欧美成人aa大片| 国产精品一级在线| 国产精品久久久99| 欧美性受xxxx| 图片区小说区国产精品视频| 日韩欧美国产综合一区| 国产河南妇女毛片精品久久久| 欧美国产激情二区三区| 99精品热视频| 日本视频中文字幕一区二区三区| 精品久久一区二区| 91蜜桃视频在线| 性做久久久久久| 精品国产乱码久久久久久1区2区| 国产丶欧美丶日本不卡视频| 中文字幕一区二区三区在线播放| 欧美视频一区在线| 国产一区二区三区视频在线播放| 中文字幕在线免费不卡| 欧美日韩在线播放三区四区| 久久精品国产99| 中文字幕一区二区三区乱码在线| 欧美日韩大陆在线| 成人精品gif动图一区| 亚洲一级在线观看| 欧美精品一区二区三区蜜桃视频 | 色婷婷久久一区二区三区麻豆| 天天做天天摸天天爽国产一区 | 成人性视频免费网站| 亚洲韩国精品一区| 久久―日本道色综合久久| 色综合久久88色综合天天免费| 美女视频黄免费的久久| 中文字幕精品一区| 欧美一二区视频| 91丨porny丨首页| 精品一区二区三区免费视频| 亚洲精品视频观看| 久久亚洲一级片| 欧美日韩精品系列| 99久久精品国产毛片| 韩国成人精品a∨在线观看| 亚洲一区二区三区自拍| 国产亚洲一二三区| 337p亚洲精品色噜噜噜| 91色在线porny| 国产精品一卡二| 麻豆精品精品国产自在97香蕉| 最新中文字幕一区二区三区| 精品欧美一区二区在线观看| 在线欧美小视频| 99麻豆久久久国产精品免费优播| 精品亚洲aⅴ乱码一区二区三区| 亚洲一区二区三区视频在线播放 | 成人免费看黄yyy456| 国产一区免费电影| 久久福利资源站| 天天综合网 天天综合色| 亚洲天天做日日做天天谢日日欢| 久久精品人人做人人综合| 欧美一级高清片在线观看| 欧美色涩在线第一页| 色哟哟一区二区在线观看| 国产成人免费视频精品含羞草妖精 | 午夜av区久久| 亚洲激情校园春色| 亚洲综合免费观看高清在线观看| 国产欧美日韩中文久久| 欧美极品美女视频| 国产欧美一区二区精品婷婷| 国产日韩在线不卡| 国产欧美日韩视频一区二区| 欧美—级在线免费片| 亚洲国产精品激情在线观看| 久久精品免费在线观看| 久久久久久久久久看片| 久久一区二区三区四区| 国产亚洲午夜高清国产拍精品| 久久蜜桃一区二区| 国产欧美日韩在线看| 1024成人网| 亚洲国产精品一区二区久久恐怖片 | 中文欧美字幕免费| 国产精品久久久久影院亚瑟| 国产精品成人一区二区艾草 | 亚洲第一久久影院| 婷婷夜色潮精品综合在线| 人禽交欧美网站| 韩国三级在线一区| 波多野结衣在线aⅴ中文字幕不卡| 成人免费视频播放| 欧洲亚洲精品在线| 制服视频三区第一页精品| 欧美成人video| 国产精品系列在线| 亚洲成人在线网站| 久久成人久久鬼色| 成人午夜视频免费看| 在线亚洲一区二区| 日韩欧美一区电影| 国产精品美女久久久久久久久| 亚洲综合激情小说| 久久国产精品一区二区| 国产精品中文字幕日韩精品| 99久久国产综合精品麻豆 | 99免费精品在线观看| 欧美日韩在线电影| 国产亚洲欧美激情| 亚洲香肠在线观看| 国产精品资源在线看| 一本大道av伊人久久综合| 欧美一区二区黄| 日本一二三四高清不卡| 午夜欧美2019年伦理| 国产成人在线视频网址| 在线观看日韩国产| 久久综合久久鬼色| 午夜日韩在线电影| 不卡av在线免费观看| 日韩欧美中文字幕一区| 亚洲色图视频网| 精品系列免费在线观看| 色88888久久久久久影院野外| 日韩一区二区免费在线电影| 国产精品视频你懂的| 免费观看91视频大全| 色婷婷综合久久久久中文一区二区| 日韩一卡二卡三卡国产欧美| 综合在线观看色| 国内欧美视频一区二区| 色婷婷亚洲婷婷| 国产精品久久久久久久蜜臀| 免费看精品久久片| 欧亚洲嫩模精品一区三区| 国产日韩精品视频一区| 蜜桃视频一区二区三区| 欧美体内she精视频| 亚洲精品视频在线| 成人动漫精品一区二区| 日韩欧美在线观看一区二区三区| 亚洲乱码国产乱码精品精小说 | 国产精品毛片a∨一区二区三区 | 日韩女优电影在线观看| 一区二区高清在线| 99精品国产一区二区三区不卡| 国产午夜亚洲精品午夜鲁丝片| 裸体一区二区三区| 欧美精品aⅴ在线视频| 亚洲一区二区免费视频| 91在线丨porny丨国产| 亚洲国产精品99久久久久久久久| 国产传媒一区在线| 欧美精品一区二| 国产精品亚洲成人| 久久综合久久综合九色| 国产成人免费9x9x人网站视频|