亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        單片機實時系統(tǒng)RTX51入門教學(xué)研究

        2016-09-22 17:06:02梁兆福
        成才之路 2016年23期
        關(guān)鍵詞:教學(xué)研究單片機

        梁兆福

        摘 要:當(dāng)學(xué)生學(xué)習(xí)單片機編程達(dá)到一定水平后,使用多任務(wù)實時系統(tǒng)編程是一種非常有益編程方法。文章以從初識RTX51到由流水燈實驗產(chǎn)生學(xué)習(xí)RTX51興趣,再到由簡單任務(wù)入門為順序開了RTX51教學(xué)研究。

        關(guān)鍵詞:單片機;RTX51;流水燈;教學(xué)研究

        中圖分類號:G712 文獻(xiàn)標(biāo)志碼:A 文章編號:1008-3561(2016)23-0082-02

        目前在8051系列單片機上使用多任務(wù)實時操作系統(tǒng)(RTOS),主要有德國Keil公司開發(fā)單片機IDE軟件μVision自帶的RTX51和陳明計編寫的Small RTOS。RTX51有2個版本:RTX51 Tiny和RTX51 Full。RTX51 Tiny自身占用單片機硬件資源非常少,可以運行在沒有外部擴(kuò)展存儲器的8051單片機系統(tǒng)上。很少在中職學(xué)生中開展RTX51教學(xué)的原因是:首先,RTX51教學(xué)中文資料和實例很少。其次,要求學(xué)習(xí)對象具備很好的編程能力。最后,沒有使用實時系統(tǒng)編程的習(xí)慣。目前編寫大型、分工的程序通常是在RTOS上編程的,其原因是單片機資源越來越豐富和價格越來越低。另外,在RTOS基礎(chǔ)上編程,優(yōu)點非常明顯。順應(yīng)單片機技術(shù)的快速發(fā)展態(tài)勢,中職學(xué)生有必要接觸ROTS,從而掌握一些基本知識和使用技巧。選擇一些編程能力比較強的中職學(xué)生為教學(xué)對象,進(jìn)行了單片機實時系統(tǒng)RTX51教學(xué)研究。

        一、 初識多任務(wù)實時系統(tǒng)

        為了幫助學(xué)生能對多任務(wù)實時系統(tǒng)形成一些初步認(rèn)識,可以通過編寫下面的程序,再通過調(diào)試程序觀察變量變化情況,來分析變化原因。

        01 #include

        02 #include "RTX51TNY.h"

        03 long int counter1=0;

        04 long int counter2=0;

        05 void job_a (void) _task_ 0

        06 {

        07 os_create_task(1);

        08 while(1)

        09 {

        10 counter1++;

        11 }

        12 }

        13 void job_b (void) _task_ 1

        14 {

        15 while(1)

        16 {

        17 counter2++;

        18 }

        19 }

        要運行上面程序,必須將Conf_tny.A51文件(在 Keil\C51\RtxTiny2\SourceCode文件夾里面)加進(jìn)工程中,接著要在設(shè)置工程選項中的Operating條目選擇RTX-51 Tiny。最后,在程序中將RT51TNY.h文件包含進(jìn)來(如圖1第2行程序)。

        程序講解:使用演示教學(xué)法進(jìn)行教學(xué)。演示1:程序全速執(zhí)行,提醒學(xué)生觀察變量counter1和counter2變化。現(xiàn)象是:兩個變量都在增加。演示2:單步執(zhí)行,提醒學(xué)生觀察變量counter1,counter2變化,同時觀察程序如何執(zhí)行。現(xiàn)象是:程序在第8至11行連續(xù)執(zhí)行一段時間,每執(zhí)行一次循環(huán)體counter1增加1。當(dāng)執(zhí)行一段時間后,程序跑到第15至18行程序運行,并且連續(xù)運行一段時間,每執(zhí)行一次循環(huán)體counter2增加1。當(dāng)運行一段時間后,程序在第8至11行連續(xù)執(zhí)行,如此重復(fù)。

        現(xiàn)象解析:此程序使用了RTX51,在此系統(tǒng)上編寫用戶程序,用戶程序有兩個任務(wù)job_a和job_b,用關(guān)鍵詞_task_定義。每個任務(wù)都是一個死循環(huán)體,或者執(zhí)行后使用系統(tǒng)函數(shù)os_delete_task刪除。在實時系統(tǒng)運行的每個用戶任務(wù)是輪循或搶占(RTX51是輪循)執(zhí)行一個時間片的(由數(shù)個時間“滴答”構(gòu)成),所以在單步調(diào)試運行過程中,會觀察程序在第8至11行連續(xù)執(zhí)行一段時間,然后程序跑到第15至18行程序運行,并且連續(xù)運行一段時間。如果用戶任務(wù)運行時間片比較小的時候,程序全速執(zhí)行,就會發(fā)現(xiàn)兩個用戶任務(wù)程序同時執(zhí)行,也就是看到counter1、counter2同時增加的現(xiàn)象。

        疑問解析:main函數(shù)去哪里了?任務(wù)時間片大小怎么確定?學(xué)生會提出上述兩個問題。main函數(shù)在RTX51系統(tǒng)使用了,在RTX51中執(zhí)行main函數(shù)后自動跳轉(zhuǎn)到由_task_ 0定義的用戶任務(wù)中。任務(wù)時間片大小由Conf_tny.A51文件中宏INT_CLOCK和TIMESHARING確定,其中INT_CLOC稱為系統(tǒng)時鐘“滴答”。

        通過上述程序演示和講解,有編程基礎(chǔ)的學(xué)生基本上能了解多任務(wù)實時系統(tǒng)概念和用戶程序運行過程。

        二、 由流水燈實驗產(chǎn)生學(xué)習(xí)RTX51興趣

        單片機經(jīng)典入門實驗就是流水燈了,猶如許多學(xué)習(xí)計算機編程語言的第一個程序“Hello world!”。在RTOS上編寫流水燈程序和非使用RTOS編寫的程序思路非常不同。為了使得學(xué)生對RTOS產(chǎn)生學(xué)習(xí)興趣,教師準(zhǔn)備了圖1流水燈電路(該電路省去單片機復(fù)位、時鐘電路)和下面程序。

        01 #include

        02 #include "rtx51tny.h"

        03 void job_a(void) _task_ 0

        04 {

        05 unsigned char i,dt;

        06 os_create_task(1);

        07 while(1){

        08 dt=0x1;

        09 for(i=0;i<8;i++){

        10 P0=~dt;

        11 dt=dt << 1;

        12 os_wait(K_TMO,100,0);

        13 }

        14 }

        15 }

        16 void job_b(void) _task_ 1

        17 {

        18 unsigned char i,dt;

        19 while(1){

        20 dt=0x80;

        21 for(i=0;i<8;i++){

        22 P3=~dt;

        23 dt=dt>>1;

        24 os_wait(K_TMO,50,0);

        25 }

        26 }

        27 }

        為體現(xiàn)在RTOS上所編寫流水燈程序與初學(xué)單片機編寫程序在思路上的不同,在電路上設(shè)計P0和P3端口分別控制8只LED。功能要求P0端口控制的LED每隔1秒鐘從右邊到左邊循環(huán)流動顯示,P3端口控制的LED每隔0.5秒鐘從左邊到右邊循環(huán)流動顯示。講解程序時,先向?qū)W生介紹使用RTOS編寫的用戶程序思路,然后講解具體實現(xiàn)的方式,最后讓學(xué)生體會使用RTOS和不使用RTOS編寫流水燈程序的難易程度和擴(kuò)展性能。

        程序思路:建立兩個用戶任務(wù)job_a和job_b,job_a任務(wù)控制P0端口的8只LED,job_b任務(wù)控制P3端口的8只LED。由于每個用戶任務(wù)只需要考慮自身該干的活而不需要考慮其他任務(wù),所以在每個任務(wù)中的程序編寫就變得非常簡單。

        程序講解:在RTX51初始化后切換到任務(wù)job_a中運行,內(nèi)核os_create_task(1)函數(shù)調(diào)用,準(zhǔn)備好任務(wù)job_b運行所需要的各種數(shù)據(jù)結(jié)構(gòu)(如堆棧頂部位置)。執(zhí)行第7~10行程序,在P0輸出0xfe數(shù)據(jù)使得只有D8亮。第11行程序為下次在P0端口輸出正確數(shù)據(jù)做好準(zhǔn)備。第12行程序調(diào)用RTX51系統(tǒng)函數(shù)os_wait,os_wait函數(shù)使用非常頻繁,其功能是主動放棄該任務(wù)占用CPU時間,然后等待特定時間,時間間隔或者信號到來后重新在os_wait函數(shù)的下一行程序繼續(xù)執(zhí)行程序。在初識別多任務(wù)實時系統(tǒng)時候已經(jīng)介紹過用戶任務(wù)運行“任務(wù)時間片”后被RTX51切換到其他任務(wù)中執(zhí)行,但是很多時候,用戶任務(wù)往往不需要執(zhí)行整個任務(wù)時間片,可以主動提前釋放占用CPU時間,這樣可以提高RTX51的實時性和效率。os_wait(K_TMO,100,0)函數(shù)中的參數(shù)K_TMO,表示任務(wù)job_a放棄CPU后,等待超時時間,這個超時時間是由第二個參數(shù)“100”確定,表示是等待100個系統(tǒng)“滴答”時間。當(dāng)執(zhí)行系統(tǒng)函數(shù)os_wait后RTX51切換到下一個任務(wù)job_b,過程幾乎和job_a一樣。

        用與不用RTX51編寫程序差異體會:學(xué)生在初學(xué)單片機時,一定是不使用RTOS編寫流水燈程序的。現(xiàn)在通過兩者的差異對比,學(xué)生會感受到使用RTX51編程的思路、難易和擴(kuò)展性有所不同。對于擴(kuò)展性,如在電路中增加按鍵識別,按鍵控制不同流水燈花樣,使用RTX51只需要增加一個按鍵識別和處理任務(wù)。通過流水燈實驗,觀察學(xué)生的學(xué)習(xí)態(tài)度和狀態(tài),可以確認(rèn)學(xué)生對RTX51非常感興趣,因為RTX51為他們打開編程的第二扇門,門里有許多值得他們驚喜的知識。

        三、 由簡單任務(wù)入門RTX51

        學(xué)生要學(xué)習(xí)RTX51,必須有一些經(jīng)典且簡單的任務(wù)練習(xí)才能入門。在教學(xué)中可以發(fā)現(xiàn),學(xué)生初學(xué)單片機時學(xué)習(xí)過并且做過的任務(wù),可以在RTX51基礎(chǔ)上重新編寫程序完成。這樣做好處比較多,首先學(xué)生已經(jīng)明白任務(wù)要求;其次通過RTX51編寫用戶程序?qū)崿F(xiàn)相同功能,能深刻體會使用RTX51的方便和簡單;再次用不同的編程思路實現(xiàn)相同功能,反而進(jìn)一步鞏固已經(jīng)學(xué)習(xí)的單片機編程知識;最后學(xué)生學(xué)會取舍是否用RTOS編程。以YL236單片機實驗設(shè)備作為實驗硬件平臺,在此平臺上實現(xiàn)時鐘、溫度計、數(shù)字電壓表(AD轉(zhuǎn)換)、機械手控制等簡單的RTX51入門任務(wù)。學(xué)生在完成任務(wù)過程中會遇到很多問題,如在做時鐘任務(wù)過程中,學(xué)生將時鐘任務(wù)分解為數(shù)碼管顯示、按鍵識別、按鍵處理、時間調(diào)整這四個用戶任務(wù),任務(wù)之間需要通信的,如何解決?這可以調(diào)用RTX51系統(tǒng)函數(shù)發(fā)信號,也可以自己定義消息,并實現(xiàn)消息發(fā)送和接收功能,還可以用全局變量協(xié)調(diào)。又如多個用戶任務(wù)中需要使用共同資源,怎樣實現(xiàn)資源保護(hù)?學(xué)生通過不同的嘗試,最終找到解決問題的方法;通過多個簡單任務(wù)練習(xí)后,最終掌握RTX51的使用。

        四、 結(jié)束語

        通過簡單的演示程序,學(xué)生初識RTX51并了解任務(wù)實時系統(tǒng)的相關(guān)概念和用戶程序運行過程;由在RTX51上實現(xiàn)經(jīng)典的流水燈實驗,學(xué)生對RTX51產(chǎn)生興趣;使用RTX51實現(xiàn)多個簡單的任務(wù),學(xué)生最終入門RTOS。通過RTX51教學(xué)研究,學(xué)生是有能力使用RTOS進(jìn)行程序編寫的。雖然以功能很弱的RTX51入門,但是學(xué)生熟練掌握RTX51使用方法后,很容易將知識遷移到其他功能比較強大的RTOS,如陳明計編寫的Small RTOS(該RTOS內(nèi)核主要用C語言編寫,搶占式切換任務(wù))。

        參考文獻(xiàn):

        [1]陳明計,周立功.嵌入式實時操作系統(tǒng)small RTOS51原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2004.

        [2]李建忠.單片機原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2002

        [3]艾云峰,姚鄭,覃力.“嵌入式實時操作系統(tǒng)”課程的教學(xué)研究[J].電氣電子教學(xué)學(xué)報,2013(01).

        [4]沈紅衛(wèi).基于單片機的智能系統(tǒng)設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005.

        猜你喜歡
        教學(xué)研究單片機
        基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        小議PLC與單片機之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        高中數(shù)學(xué)復(fù)習(xí)課教學(xué)研究
        高中數(shù)學(xué)教學(xué)研究
        基于單片機的平衡控制系統(tǒng)設(shè)計
        電子制作(2017年19期)2017-02-02 07:08:27
        交替?zhèn)髯g中聽記平衡教學(xué)研究
        Microchip推出兩個全新PIC單片機系列
        中職高考與教學(xué)研究
        日韩av激情在线观看| 亚洲精品国产综合久久一线| 久久精品中文字幕第23页| 久久久久中文字幕无码少妇| 亚洲区精选网址| 国产精品后入内射日本在线观看| 国产亚洲精品久久午夜玫瑰园| 亚洲亚洲人成综合网络| 中文字幕日本最新乱码视频| 97se亚洲国产综合自在线图片| 中文字幕亚洲精品第1页| 久久久亚洲精品免费视频| 97激情在线视频五月天视频| 女色av少妇一区二区三区| 牛牛在线视频| 日韩成人无码一区二区三区| 成黄色片视频日本秘书丝袜| 日韩av中文字幕少妇精品| 尤物国产一区二区三区在线观看 | 无码人妻丰满熟妇区免费| 成人免费直播| 天堂影院一区二区三区四区| 伊人色网站| 国产自产拍精品视频免费看| 亚洲五月天中文字幕第一页| 久久亚洲av成人无码电影| 精品国产aⅴ无码一区二区 | 免费观看日本一区二区三区| 午夜性色一区二区三区不卡视频| 青青草国产成人99久久| 亚洲一码二码在线观看| 免费看片的网站国产亚洲| 亚洲av无码一区二区三区网址| 亚洲精品无码高潮喷水在线| 婷婷综合缴情亚洲狠狠| 婷婷久久亚洲中文字幕| 欧美综合天天夜夜久久| 97色伦图片97综合影院久久| 爆乳午夜福利视频精品| 日本视频一区二区三区| 国产成人精品无码一区二区三区|