欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: RTX51_TNY之按鍵控制LED流水燈左右依次點亮,用信號傳遞方式。 [打印本頁]

作者: jubaolun    時間: 2018-6-13 11:28
標題: RTX51_TNY之按鍵控制LED流水燈左右依次點亮,用信號傳遞方式。
程序經過實物驗證過的。
程序如下:
  1. /*////////////////////////////////////////////////////
  2. 系統:RTX51-TNY
  3. 功能:按鍵控制LED流水燈左右依次點亮。用信號傳遞方式。
  4. 日期:2018/06/13

  5. /////////////////////////////////////////////////////////*/
  6. #include <rtx51tny.h>  
  7. #include <reg52.h>  

  8. #define u8 unsigned char
  9. #define u16 unsigned int
  10. // LED依次亮滅控制數組  

  11. u8 LED_L[] = {0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00};
  12. u8 LED_R[] = {0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00};

  13. u8 retry = 0;  

  14. sbit KEY1=P1^0;
  15. sbit KEY2=P1^1;



  16. void task_start(void) _task_ 0  
  17. {  
  18.   
  19.     // 創建4個任務  
  20.         os_create_task(1);
  21.     os_create_task(2);  
  22.     os_create_task(3);   
  23.     os_create_task(4);   
  24.     // 創建任務后,刪除自己     
  25.      os_delete_task(0);
  26. }



  27. void job1(void) _task_ 1 //按鍵開啟任務
  28. {         
  29.         while(1)
  30.         {  
  31.         if(KEY1==0)
  32.                 {           //判斷按鍵是否按下  
  33.                         
  34.                         while(!KEY1);
  35.                         os_send_signal (3);        
  36.                         os_create_task(3);
  37.         }
  38.         
  39.     }  
  40.         
  41. }

  42. void job2(void) _task_ 2 //按鍵關閉任務
  43. {         
  44.         while(1)
  45.         {  
  46.       
  47.                 if(KEY2==0)
  48.                 {           //判斷按鍵是否按下  
  49.                         
  50.                         while(!KEY2);
  51.                         P0=0XFF;                        
  52.                         os_delete_task (3);                        
  53.         }                  
  54.     }  
  55.         
  56. }

  57. //以下是左右流水任務

  58. void LightOnLed(void) _task_ 3  
  59. {  
  60.     while(1){         
  61.         // 等待一個信號  
  62.         os_wait (K_SIG, 0, 0);  
  63.         // 依次點亮 LED  
  64.         for(retry=0; retry!=8; ++retry)
  65.                 {  
  66.             P0 = LED_L[retry];  
  67.             os_wait (K_TMO, 8, 0);  
  68.         }
  69.                 P0=0xff;
  70.         // 給任務3發送一個信號  
  71.         os_send_signal (4);  
  72.     }  
  73. }  
  74.   
  75. void LightOffLed(void) _task_ 4  
  76. {  
  77.     while(1){  
  78.         // 等待一個信號  
  79.         os_wait (K_SIG, 0, 0);  
  80.         // 依次熄滅 LED  
  81.         for(retry=0; retry!=8; ++retry)
  82.                 {  
  83.             P0 = LED_R[retry];  
  84.             os_wait (K_TMO, 8, 0);  
  85.         }
  86.         P0=0xff;               
  87.         // 給任務2發送一個信號  
  88.         os_send_signal (3);      
  89.     }  
  90. }  
復制代碼


main.rar

863 Bytes, 下載次數: 28, 下載積分: 黑幣 -5


作者: 小房    時間: 2018-10-14 03:32
連按兩次key1,燈就會亂。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1