D第12章RTX51實時操作系統_第1頁
D第12章RTX51實時操作系統_第2頁
D第12章RTX51實時操作系統_第3頁
D第12章RTX51實時操作系統_第4頁
D第12章RTX51實時操作系統_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、內內內內內內 容容容容容容 提提提提提提 要要要要要要 前言前言前言前言前言前言 RTX51 RTX51 RTX51 系統特點系統特點系統特點系統特點系統特點系統特點 RTX51 RTX51 RTX51 的程序結構的程序結構的程序結構的程序結構的程序結構的程序結構 RTX51RTX51RTX51的功能函數的功能函數的功能函數的功能函數的功能函數的功能函數 RTX51RTX51RTX51的任務調度的任務調度的任務調度的任務調度的任務調度的任務調度 RTX51RTX51RTX51的系統配置的系統配置的系統配置的系統配置的系統配置的系統配置 RTX51RTX51RTX51的應用舉例的應用舉例的應用舉

2、例的應用舉例的應用舉例的應用舉例 小結小結小結小結小結小結12.1 前言前言 RTX51是一款小巧的針對基于是一款小巧的針對基于8051系列嵌入式系統的多任務實時系列嵌入式系統的多任務實時操作系統。它的使用可以簡化比較復雜、有嚴格時間限制的軟件的設計操作系統。它的使用可以簡化比較復雜、有嚴格時間限制的軟件的設計過程。過程。RTX51主要有兩個不同的可用版本:主要有兩個不同的可用版本:RTX5lFull版。這里稱之為版。這里稱之為RTX51的標準版,既可以以循環(huán)(的標準版,既可以以循環(huán)(Round 一一Robin )方式執(zhí)行任務,也可以按)方式執(zhí)行任務,也可以按4 級任務優(yōu)先級的方式切換不同優(yōu)級

3、任務優(yōu)先級的方式切換不同優(yōu)先級的任務。標準版以并行方式工作,支持中斷管理,信號和消息可以先級的任務。標準版以并行方式工作,支持中斷管理,信號和消息可以通過郵箱系統在不同任務之間傳遞。通過郵箱系統在不同任務之間傳遞。RTX5lTiny版。這里稱之為版。這里稱之為RTX5l的精簡版,是其標準版的一個子集。的精簡版,是其標準版的一個子集。它可以很容易地運行在它可以很容易地運行在8051 的單芯片系統而不需要任何外部數據存儲的單芯片系統而不需要任何外部數據存儲器。通用性強,系統需求低,但功能上受到限制。它只支持循環(huán)方式和器。通用性強,系統需求低,但功能上受到限制。它只支持循環(huán)方式和信號方式的任務切換,

4、而不支持優(yōu)先級方式的任務切換。信號方式的任務切換,而不支持優(yōu)先級方式的任務切換。 由于由于KEIL C中自帶了中自帶了RTX5l的精簡版的精簡版RTX5lTiny,事實上精簡版,事實上精簡版也能夠滿足絕大部分場合的應用要求,所以以下只講解也能夠滿足絕大部分場合的應用要求,所以以下只講解RTX5lTiny的內的內容,出現容,出現RTX51的地方默認為其精簡版的地方默認為其精簡版RTX51Tiny。 12.112.112.112.2 RTX5112.2 RTX51系統特點系統特點 RTX51 RTX51 可以在所有的可以在所有的8051 8051 系列芯片上運行。用戶只需系列芯片上運行。用戶只需要

5、用標準的要用標準的C C語言編寫語言編寫RTX51 RTX51 程序,然后用程序,然后用C51C51編譯器編譯編譯器編譯即可生成代碼。其中,僅有少數內容和標準即可生成代碼。其中,僅有少數內容和標準C C 語言有差異,語言有差異,這些內容是為了實現任務標識和優(yōu)先級而設置的。這些內容是為了實現任務標識和優(yōu)先級而設置的。RTX51 RTX51 程序設計需要包含實時運行頭文件和必要的庫文件,并且程序設計需要包含實時運行頭文件和必要的庫文件,并且要用要用BL51 BL51 連接定位器來實現連接。在連接定位器來實現連接。在KeilKeil中,你只需要中,你只需要在目標選項的在目標選項的TargetTarg

6、et標簽中的標簽中的OperatingOperating中選擇中選擇RTX-51 RTX-51 TinyTiny,在你的頭文件中加上,在你的頭文件中加上#include #include 即可。即可。 在在RTX51 TINY環(huán)境下生成代碼,需要用到下列工具:環(huán)境下生成代碼,需要用到下列工具:1)C51編譯器編譯器2)BL51連接連接/定位器定位器3)A51宏匯編器宏匯編器此外,庫文件此外,庫文件RTX51TNY.LIB必須存放在環(huán)境變量必須存放在環(huán)境變量C51LIB所指定的路徑下。所指定的路徑下。 RTX51 TinyRTX51 Tiny版可以運行在版可以運行在80518051的單芯片嵌入式

7、系統上,的單芯片嵌入式系統上,且不需要任何外部數據存儲器,但也不排斥應用程序訪問且不需要任何外部數據存儲器,但也不排斥應用程序訪問外部的數據存儲器。外部的數據存儲器。RTX51 TinyRTX51 Tiny版本可以使用版本可以使用C51C51所支持的所支持的所有存儲模式。所使用的存儲模式只影響應用對象的存儲所有存儲模式。所使用的存儲模式只影響應用對象的存儲位置。位置。RTX51 TinyRTX51 Tiny的系統變量和應用程序的堆棧區(qū)總是存的系統變量和應用程序的堆棧區(qū)總是存儲在儲在80518051的片內的片內RAMRAM中(即中(即DATADATA和和IDATAIDATA)。典型的)。典型的R

8、TX51 RTX51 TinyTiny應用程序一般運行于應用程序一般運行于SMALLSMALL存儲模式下。存儲模式下。 RTX51 TinyRTX51 Tiny版本使用了版本使用了80518051的定時器的定時器0 0和定時器和定時器0 0的中斷信號。的中斷信號。SFRSFR中的全局中斷允許位或定時器中的全局中斷允許位或定時器0 0中斷屏蔽位都可能使中斷屏蔽位都可能使RTX51 TinyRTX51 Tiny停止運停止運行。因此,除非有特殊的應用目的,應該使定時器行。因此,除非有特殊的應用目的,應該使定時器0 0的中斷始終開啟,的中斷始終開啟,以保證以保證RTX51 TinyRTX51 Tiny

9、的正常運行。實時操作系統的性能參數對嵌入式系統的正常運行。實時操作系統的性能參數對嵌入式系統的應用開發(fā)也有著直接影響,的應用開發(fā)也有著直接影響,RTX51RTX51的性能參數如表的性能參數如表12-112-1所示。所示。 表表表表表表12-112-112-112-112-112-112.212.212.3 RTX51 的程序結構的程序結構 RTX51Tiny通過循環(huán)(通過循環(huán)(Round-Robin)方式來實現多任)方式來實現多任務,以達到多個無限循環(huán)或任務的準并行執(zhí)行。這里的多任務,以達到多個無限循環(huán)或任務的準并行執(zhí)行。這里的多任務并不是真正同時執(zhí)行的,而是使用不同的時間片來執(zhí)行,務并不是真

10、正同時執(zhí)行的,而是使用不同的時間片來執(zhí)行,即只是宏觀上的同時執(zhí)行。它將可用的即只是宏觀上的同時執(zhí)行。它將可用的CPU周期分成多個時周期分成多個時間片,由間片,由RTX51把這些時間片分配給每一個任務使用。每個把這些時間片分配給每一個任務使用。每個任務只能在預定的時間片里運行。然后,任務只能在預定的時間片里運行。然后,RTX51再切換到另再切換到另一個己經準備就緒的任務,讓它再執(zhí)行一定的時間片。一個己經準備就緒的任務,讓它再執(zhí)行一定的時間片。時間片一般是比較短促的,一個時間片大約只有毫秒級時間片一般是比較短促的,一個時間片大約只有毫秒級時間。正是由于這個原因,在用戶看來,多個任務似乎是在時間。正

11、是由于這個原因,在用戶看來,多個任務似乎是在同時執(zhí)行的。同時執(zhí)行的。RTX51 利用了一個由利用了一個由8051定時器中斷信號驅動的定時程定時器中斷信號驅動的定時程序來實現控制。定時器產生的周期性中斷信號用來驅動序來實現控制。定時器產生的周期性中斷信號用來驅動RTX51的定時節(jié)拍。的定時節(jié)拍。 RTX51與用戶程序中的與用戶程序中的main函數是無關的。用戶程序中函數是無關的。用戶程序中即使沒有即使沒有main 程序,操作系統也會自動從設定的任務程序,操作系統也會自動從設定的任務0開始開始執(zhí)行。如果用戶程序中已經有了執(zhí)行。如果用戶程序中已經有了main 函數,就必須用人工方函數,就必須用人工方

12、式來啟動式來啟動RTX51。這對于。這對于RTX51 Tiny版,可以調用版,可以調用os_create_task函數來完成。函數來完成。下面是一個只使用下面是一個只使用Round-Robin Round-Robin 任務方式的簡單任務方式的簡單RTX51 RTX51 程序實例。程序中的兩個任務都是簡單的計數循環(huán)。程序實例。程序中的兩個任務都是簡單的計數循環(huán)。RTX51 RTX51 從從job0job0函數(設定為任務函數(設定為任務0 0)開始執(zhí)行。程序中還有另一個)開始執(zhí)行。程序中還有另一個名為名為job1job1的任務(設定為任務的任務(設定為任務l l)。系統一旦啟動,在)。系統一旦啟

13、動,在job0 job0 執(zhí)行一段時間后,執(zhí)行一段時間后,RTx51 RTx51 就自動切換到就自動切換到job1job1的執(zhí)行;而的執(zhí)行;而job1job1執(zhí)行一段時間后,執(zhí)行一段時間后,RTX51RTX51又切換回又切換回job0job0, 如此無限循如此無限循環(huán)地重復執(zhí)行下去。環(huán)地重復執(zhí)行下去。#include int counter0;int counter1;void job0(void) _task_ 0os_create_task(1); /*任務任務l 己準備就緒己準備就緒*/while (1) /*無限循環(huán)無限循環(huán)*/ counter0+; /*更新計數值更新計數值count

14、er0*/ void job1(void) _task_ 1while(1) /*無限循環(huán)無限循環(huán)*/counter1+; /*更新計數值更新計數值counter1*/12.312.4 RTX51的功能函數的功能函數 RTX51精簡版支持的功能函數如表精簡版支持的功能函數如表12-2所示,具體含義分別介紹如下。所示,具體含義分別介紹如下。12.4.1 信號控制函數信號控制函數 isr_send_signal函數原型:函數原型: char isr_send_signal(unsigned char task_id);功能說明:功能說明:發(fā)送一個信號到發(fā)送一個信號到task_id說明的任務。如果此

15、任務已在等待一個;說明的任務。如果此任務已在等待一個;信號,那么調用函數將使此任務就緒,準備執(zhí)行。否則,信號講存儲在此信號,那么調用函數將使此任務就緒,準備執(zhí)行。否則,信號講存儲在此任務的信號標志中。此函數只能從中斷函數中調用;任務的信號標志中。此函數只能從中斷函數中調用;返回值:返回值:若執(zhí)行成功,此函數返回若執(zhí)行成功,此函數返回0值;若所指定的任務不存在,則返回值;若所指定的任務不存在,則返回-1。os_clear_signal函數原型:函數原型:char os_clear_signal(unsigned char task_id);功能說明:功能說明:清除由清除由task_id說明的任務

16、的信號;說明的任務的信號;返回值:返回值:若信號清除成功,函數返回若信號清除成功,函數返回0值;若所指定的任務不存在,返回值;若所指定的任務不存在,返回-1。 os_send_signal函數原型:函數原型:char os_send_signal(unsigned char task_id);功能說明:功能說明:發(fā)送一個信號到發(fā)送一個信號到task_id說明的任務。如果此任務已在等待一個;說明的任務。如果此任務已在等待一個;信號,那么調用函數將使此任務就緒,準備執(zhí)行。否則,信號講存儲在此信號,那么調用函數將使此任務就緒,準備執(zhí)行。否則,信號講存儲在此任務的信號標志中。此函數只能在任務函數中調用

17、;任務的信號標志中。此函數只能在任務函數中調用;返回值:返回值:若若執(zhí)行成功,此函數返回執(zhí)行成功,此函數返回0值;若所指定的任務不存在,則返回值;若所指定的任務不存在,則返回-1。12.4.2 任務控制函數任務控制函數 os_create_task函數原型:函數原型:char os_create_task(unsigned char task_id);功能說明:功能說明:啟動已定義的由啟動已定義的由task_id說明的任務。此任務根據說明的任務。此任務根據RTX51運行運行規(guī)則,標記為就緒,并準備執(zhí)行;規(guī)則,標記為就緒,并準備執(zhí)行;返回值:返回值:如果任務成功啟動,此函數返回如果任務成功啟動,

18、此函數返回0值;如果沒有值;如果沒有task_id說明的任說明的任務,則返回務,則返回-1。 os_delete_task函數原型:函數原型:char os_delete_task(unsigned char task_id);功能說明:功能說明:停止停止task_id說明的任務,此任務將從任務表中刪除;說明的任務,此任務將從任務表中刪除;返回值:返回值:如果任務成功啟動,此函數返回如果任務成功啟動,此函數返回0值;如果沒有值;如果沒有task_id說明的任說明的任務,則返回務,則返回-1。 os_running_task_id函數原型:函數原型:char os_running_task_id

19、(unsigned char task_id);功能說明:功能說明:判斷當前執(zhí)行任務的編號;判斷當前執(zhí)行任務的編號;返回值:返回值:返回當前正在執(zhí)行的任務的編號,返回值為返回當前正在執(zhí)行的任務的編號,返回值為015。 12.4.3 延時控制函數延時控制函數 os_wait函數原型:函數原型:char os_wait( unsigned char event_sel, /*將要等待的事件將要等待的事件*/ unsigned char tisks, /*將要等待的定時器時標數將要等待的定時器時標數*/ unsigned char dummy ); /*未用參數未用參數*/ 功能說明:功能說明:停止

20、當前執(zhí)行的任務,并等待一個或多個事件,如時間間隔、超停止當前執(zhí)行的任務,并等待一個或多個事件,如時間間隔、超時、從另一個任務或中斷發(fā)出的信號等。參數時、從另一個任務或中斷發(fā)出的信號等。參數event_sel說明所等待的一個事說明所等待的一個事件或幾個事件的組合。件或幾個事件的組合。表表表表表表12-4 12-4 12-4 os_waitos_waitos_wait 函數的返回值函數的返回值函數的返回值函數的返回值函數的返回值函數的返回值 os_wait1os_wait1os_wait1 函數原型:函數原型:函數原型:函數原型:函數原型:函數原型:char os_wait1(unsigned c

21、har char os_wait1(unsigned char char os_wait1(unsigned char event_selevent_selevent_sel) ) );功能說明:功能說明:功能說明:功能說明:功能說明:功能說明:暫停當前的任務,等待著一個事件的發(fā)生。它是暫停當前的任務,等待著一個事件的發(fā)生。它是暫停當前的任務,等待著一個事件的發(fā)生。它是暫停當前的任務,等待著一個事件的發(fā)生。它是暫停當前的任務,等待著一個事件的發(fā)生。它是暫停當前的任務,等待著一個事件的發(fā)生。它是os_waitos_waitos_wait函數的函數的函數的函數的函數的函數的一個子集,不接受針對一個

22、子集,不接受針對一個子集,不接受針對一個子集,不接受針對一個子集,不接受針對一個子集,不接受針對os_waitos_waitos_wait函數提供的全部事件。參數函數提供的全部事件。參數函數提供的全部事件。參數函數提供的全部事件。參數函數提供的全部事件。參數函數提供的全部事件。參數event_selevent_selevent_sel指定了指定了指定了指定了指定了指定了等待的事件,它只能是等待的事件,它只能是等待的事件,它只能是等待的事件,它只能是等待的事件,它只能是等待的事件,它只能是K_SIGK_SIGK_SIG。返回值:返回值:返回值:返回值:返回值:返回值:當信號事件發(fā)生時,任務就被允

23、許執(zhí)行,任務的執(zhí)行將恢復。返當信號事件發(fā)生時,任務就被允許執(zhí)行,任務的執(zhí)行將恢復。返當信號事件發(fā)生時,任務就被允許執(zhí)行,任務的執(zhí)行將恢復。返當信號事件發(fā)生時,任務就被允許執(zhí)行,任務的執(zhí)行將恢復。返當信號事件發(fā)生時,任務就被允許執(zhí)行,任務的執(zhí)行將恢復。返當信號事件發(fā)生時,任務就被允許執(zhí)行,任務的執(zhí)行將恢復。返回用于識別事件、使任務重新啟動的常量。回用于識別事件、使任務重新啟動的常量?;赜糜谧R別事件、使任務重新啟動的常量?;赜糜谧R別事件、使任務重新啟動的常量?;赜糜谧R別事件、使任務重新啟動的常量?;赜糜谧R別事件、使任務重新啟動的常量。 os_wait2os_wait2os_wait2函數原型:函數

24、原型:函數原型:函數原型:函數原型:函數原型:char os_wait2( unsigned char char os_wait2( unsigned char char os_wait2( unsigned char event_selevent_selevent_sel, /, /, /* * *將要等待的事件將要等待的事件將要等待的事件將要等待的事件將要等待的事件將要等待的事件* * */ / / unsigned char unsigned char unsigned char tiskstiskstisks); /); /); /* * *將要等待的定時器時標數將要等待的定時器時標數

25、將要等待的定時器時標數將要等待的定時器時標數將要等待的定時器時標數將要等待的定時器時標數* * */ / /功能說明:功能說明:功能說明:功能說明:功能說明:功能說明:與與與與與與os_waitos_waitos_wait相同,但是不需要相同,但是不需要相同,但是不需要相同,但是不需要相同,但是不需要相同,但是不需要dummydummydummy參數。參數。參數。參數。參數。參數。 返回值:返回值:返回值:返回值:返回值:返回值:與與與與與與os_waitos_waitos_waitos_waitos_waitos_wait相同相同相同相同相同相同 12.412.5 RTX51的任務調度的任務

26、調度 RTX51利用任務狀態(tài)來管理各個任務。用戶為利用任務狀態(tài)來管理各個任務。用戶為RTX51定定義的每個任務都會以各種狀態(tài)的某一種來運行。義的每個任務都會以各種狀態(tài)的某一種來運行。RTX51內核內核為每個任務保留了適當的狀態(tài)如表為每個任務保留了適當的狀態(tài)如表12-5所示。所示。表表12-5 RTX5112-5 RTX51的任務狀態(tài)的任務狀態(tài) RTX51以以round-robin多任務方式執(zhí)行程序,它支持多個多任務方式執(zhí)行程序,它支持多個無限循環(huán)或任務的準并行執(zhí)行。任務不是被同時執(zhí)行,而是無限循環(huán)或任務的準并行執(zhí)行。任務不是被同時執(zhí)行,而是以分時的方式輪片執(zhí)行??捎玫囊苑謺r的方式輪片執(zhí)行??捎?/p>

27、的CPU時鐘周期被分成多個時時鐘周期被分成多個時間片,然后由間片,然后由RTX51 將這些時間片分配給各個任務。每個任將這些時間片分配給各個任務。每個任務只允許在預定的時間片中執(zhí)行,時間片用完時,務只允許在預定的時間片中執(zhí)行,時間片用完時,RTX51就就切換至另一個就緒的任務,繼續(xù)執(zhí)行一段時間。時間片的具切換至另一個就緒的任務,繼續(xù)執(zhí)行一段時間。時間片的具體長度可以用配置函數體長度可以用配置函數TIMESHARING 來定義。來定義。如果遇到因為一個任務處于等待并且占用了時間片而暫如果遇到因為一個任務處于等待并且占用了時間片而暫時無法往下執(zhí)行,可以調用系統函數時無法往下執(zhí)行,可以調用系統函數o

28、s_wait來通知來通知RTX51,以便將當前的任務掛起而提前執(zhí)行另一任務。以便將當前的任務掛起而提前執(zhí)行另一任務。 RTX51中處理任務分配的模塊稱為調度程中處理任務分配的模塊稱為調度程序(序(Scheduler)。調度程序驅動哪個任務運行)。調度程序驅動哪個任務運行是按照以下的規(guī)則進行的:是按照以下的規(guī)則進行的:(1)如果發(fā)生以下情況時,當前運行的任務將)如果發(fā)生以下情況時,當前運行的任務將被中斷:調用被中斷:調用os_wait函數,而所等待的事件未函數,而所等待的事件未來到;任務的執(zhí)行時間已經超過所定義的來到;任務的執(zhí)行時間已經超過所定義的Round-Robin循環(huán)時間間隔循環(huán)時間間隔(

29、2)如果發(fā)生以下情況時,另一個任務將被啟)如果發(fā)生以下情況時,另一個任務將被啟動:已沒有正在執(zhí)行的任務;動:已沒有正在執(zhí)行的任務;將要執(zhí)行的任務處將要執(zhí)行的任務處在就緒狀態(tài)或超時狀態(tài)。在就緒狀態(tài)或超時狀態(tài)。 12.512.6 RTX51的系統配置的系統配置 編寫編寫RTX51程序需要包含程序需要包含RTX51TNY.H 文件。在程序中,文件。在程序中,需要用一個關鍵字需要用一個關鍵字“_task_” 來聲明一個函數的任務屬性。來聲明一個函數的任務屬性。RTX51程序不需要程序不需要main 函數。在進行連接處理時,會將啟動任函數。在進行連接處理時,會將啟動任務務0 的執(zhí)行所需要的代碼連接進來,

30、作為開始執(zhí)行的代碼。的執(zhí)行所需要的代碼連接進來,作為開始執(zhí)行的代碼。用戶可以更改配置文件用戶可以更改配置文件CONF_TNY.A51中的以下幾個參數:中的以下幾個參數: 系統定時器中斷所用的寄存器組系統定時器中斷所用的寄存器組 系統定時器的時間間隔系統定時器的時間間隔 Round-Robin的超時(的超時(time-out)值)值 內部數據存儲器的大小內部數據存儲器的大小 RTX5l 啟動后的自由堆棧大小啟動后的自由堆棧大小 以下是配置文件的部分內容:以下是配置文件的部分內容:;RTX51 的硬件定時器的硬件定時器;用下面的用下面的EQU可預置可預置RTX51的定時器時間常數的定時器時間常數;

31、用用8051 定時器定時器0 作為控制軟件的定時器作為控制軟件的定時器;定義定時器中斷用的寄存器組定義定時器中斷用的寄存器組INT_REGBANKEQU1 ;默認為寄存器默認為寄存器1組組;定義定義8051定時器定時器0溢出所需的機器周期數溢出所需的機器周期數INT_CLOCK EQU10000 ;默認周期數為默認周期數為10000 ;定義定義Round-Robin 的的Timeout 所需的定時器溢出數所需的定時器溢出數TIMESHARINGEQU5;默認為默認為5次次;注意:注意:Round-Robin任務切換可用任務切換可用TIMESHARING為為0來屏蔽來屏蔽 ;RTX51 堆??臻g

32、堆??臻g;以下的以下的EQU語句定義了堆棧區(qū)的片內語句定義了堆棧區(qū)的片內RAM 體積和最小自由堆??臻g體積和最小自由堆??臻g:定義了堆??臻g耗盡后所執(zhí)行的宏代碼:定義了堆??臻g耗盡后所執(zhí)行的宏代碼;定義最大的堆棧;定義最大的堆棧RAM 地址地址RAMTOP EQU 0FFH ;默認地址是;默認地址是255 ;定義最小的堆棧自由空間定義最小的堆棧自由空間FREE_STACKEQU20 ;默認為;默認為20 字節(jié)堆棧自由空間字節(jié)堆棧自由空間; ;發(fā)生堆棧用盡時的執(zhí)行代碼;發(fā)生堆棧用盡時的執(zhí)行代碼STACK_ERROR MACRO CLR EA ;關閉所有中斷關閉所有中斷SJMP $ ;如堆??臻g耗

33、盡,進入死循環(huán)如堆??臻g耗盡,進入死循環(huán)ENDM 在這個配置文件中,定義了許多可以修改的參數,以適應用戶特定的在這個配置文件中,定義了許多可以修改的參數,以適應用戶特定的應用程序環(huán)境。這些參數的說明詳見表應用程序環(huán)境。這些參數的說明詳見表12-6所示。所示。 表表12-6 配置文件參數說明配置文件參數說明 12.612.612.612.7 RTX51的應用舉例的應用舉例 本節(jié)給出了一個采用本節(jié)給出了一個采用RTX51實現的簡單的交通燈控制模實現的簡單的交通燈控制模擬程序。其目的在于展示擬程序。其目的在于展示RTX51編程的思路與優(yōu)勢,同時為編程的思路與優(yōu)勢,同時為便于學習,又力求程序簡單。因此

34、這里通過串口輸出模擬了便于學習,又力求程序簡單。因此這里通過串口輸出模擬了一個人行道上的紅綠燈控制過程:車通行,綠燈亮;綠燈保一個人行道上的紅綠燈控制過程:車通行,綠燈亮;綠燈保持一段時間后,閃爍幾秒轉亮黃燈幾秒;黃燈沒后,紅燈亮持一段時間后,閃爍幾秒轉亮黃燈幾秒;黃燈沒后,紅燈亮起,人通行。然后又亮綠燈,周而復始。為方便學習調試,起,人通行。然后又亮綠燈,周而復始。為方便學習調試,這里采用串口輸出不同的文本串來指示綠燈亮、綠燈閃爍這里采用串口輸出不同的文本串來指示綠燈亮、綠燈閃爍(文本串閃爍)、黃燈亮、紅燈亮(文本串閃爍)、黃燈亮、紅燈亮4種狀態(tài)。為便于觀察結種狀態(tài)。為便于觀察結果,示例程序運行所獲的狀態(tài)持續(xù)時間為:綠亮果,示例程序運行所獲的狀態(tài)持續(xù)時間為:綠亮10s,綠閃,綠閃3s,黃亮,黃亮3s,紅亮,紅亮10s。 void lights(vo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論