|
程序經(jīng)過實(shí)物驗(yàn)證過的。
程序如下:
- /*////////////////////////////////////////////////////
- 系統(tǒng):RTX51-TNY
- 功能:按鍵控制LED流水燈左右依次點(diǎn)亮。用信號傳遞方式。
- 日期:2018/06/13
- /////////////////////////////////////////////////////////*/
- #include <rtx51tny.h>
- #include <reg52.h>
-
- #define u8 unsigned char
- #define u16 unsigned int
- // LED依次亮滅控制數(shù)組
-
- u8 LED_L[] = {0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00};
- u8 LED_R[] = {0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00};
- u8 retry = 0;
-
- sbit KEY1=P1^0;
- sbit KEY2=P1^1;
- void task_start(void) _task_ 0
- {
-
- // 創(chuàng)建4個(gè)任務(wù)
- os_create_task(1);
- os_create_task(2);
- os_create_task(3);
- os_create_task(4);
- // 創(chuàng)建任務(wù)后,刪除自己
- os_delete_task(0);
- }
- void job1(void) _task_ 1 //按鍵開啟任務(wù)
- {
- while(1)
- {
- if(KEY1==0)
- { //判斷按鍵是否按下
-
- while(!KEY1);
- os_send_signal (3);
- os_create_task(3);
- }
-
- }
-
- }
- void job2(void) _task_ 2 //按鍵關(guān)閉任務(wù)
- {
- while(1)
- {
-
- if(KEY2==0)
- { //判斷按鍵是否按下
-
- while(!KEY2);
- P0=0XFF;
- os_delete_task (3);
- }
- }
-
- }
- //以下是左右流水任務(wù)
- void LightOnLed(void) _task_ 3
- {
- while(1){
- // 等待一個(gè)信號
- os_wait (K_SIG, 0, 0);
- // 依次點(diǎn)亮 LED
- for(retry=0; retry!=8; ++retry)
- {
- P0 = LED_L[retry];
- os_wait (K_TMO, 8, 0);
- }
- P0=0xff;
- // 給任務(wù)3發(fā)送一個(gè)信號
- os_send_signal (4);
- }
- }
-
- void LightOffLed(void) _task_ 4
- {
- while(1){
- // 等待一個(gè)信號
- os_wait (K_SIG, 0, 0);
- // 依次熄滅 LED
- for(retry=0; retry!=8; ++retry)
- {
- P0 = LED_R[retry];
- os_wait (K_TMO, 8, 0);
- }
- P0=0xff;
- // 給任務(wù)2發(fā)送一個(gè)信號
- os_send_signal (3);
- }
- }
復(fù)制代碼
|
-
-
main.rar
2018-6-13 11:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
863 Bytes, 下載次數(shù): 28, 下載積分: 黑幣 -5
評分
-
查看全部評分
|