找回密碼
         注冊(cè)會(huì)員
        搜索附件  

        rtx51tiny.rar

         

        RTX 51 TINY的工程,附有proteus仿真,keil c51編寫(xiě)完成:
        一個(gè)應(yīng)用了RTX 51 TINY的工程,附有proteus仿真,keil c51編寫(xiě)完成,RTX51是運(yùn)行在51單片機(jī)上的微型實(shí)時(shí)操作系統(tǒng),比較簡(jiǎn)單,便于初學(xué)者學(xué)習(xí)。-
        以下是部分源代碼 完整程序見(jiàn)附件

        1. /*------------------------------------------------------------------------
        2. 本實(shí)例使用12MHZ晶振,采用at89x5x系列單片機(jī),故時(shí)間片為10ms
        3. 另附proteus仿真工程
        4. 制作者:周乾偉
        5. 2008年3月31日編寫(xiě)完成
        6. email:huntstart@163.com
        7. -------------------------------------------------------------------------*/
        8. #include <rtx51tny.h>
        9. #include <at89x51.h>
        10. #include <lcd.h>
        11. const seven_seg[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,
        12. 0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//共陽(yáng)0123456789,后十位帶點(diǎn)。
        13. unsigned char i=0,j=0,hour=0,minute=0,sec=0,t,a=0;
        14. unsigned int count=0;
        15. unsigned char key_v1[17]={'i','l','o','v','\0'};
        16. unsigned char key_v2[17]={'i','l','o','v','\0'};

        17. bit b=1,signal_p1=0;
        18. void job0 (void) _task_ 0
        19. {
        20. init_LCD();
        21. os_create_task(1);//鍵盤(pán)掃描任務(wù)
        22. os_create_task(2);//鍵值顯示任務(wù)
        23. os_create_task(3);//計(jì)時(shí)任務(wù)
        24. os_create_task(4);//時(shí)間顯示任務(wù)
        25. os_create_task(5);
        26. os_delete_task(0);//任務(wù)0相當(dāng)于一個(gè)父進(jìn)程,它的任務(wù)是創(chuàng)建子進(jìn)程,完成使命后就可以取消了,免得暫用cpu資源
        27. }
        28. void job1 (void) _task_ 1
        29. {
        30. while(1)
        31. {//每一個(gè)任務(wù)都必須是一個(gè)死循環(huán)
        32. if(b==1)
        33. os_send_signal (4);//當(dāng)無(wú)按鍵動(dòng)作時(shí),發(fā)送信號(hào)量給任務(wù)4,半秒刷時(shí),有動(dòng)作發(fā)生后,若連續(xù)10s無(wú)動(dòng)作,返回刷時(shí)狀態(tài)
        34. else if(a>100)
        35. {
        36. os_send_signal (4);
        37. a=0;
        38. b=1;
        39. }
        40. i=scan(key_v1);//啟動(dòng)按鍵掃描

        41. if(i==100) //如果返回i!=100說(shuō)明有按鍵,發(fā)送信號(hào)量給任務(wù)2
        42. {
        43. if(VS_key_V(key_v1,key_v2)==0)//如果于前次按鍵不一樣,怎顯示
        44. {
        45. StrToStr( key_v1, key_v2);

        46. os_send_signal (2);
        47. b=0;


        48. // os_wait(K_TMO,1,0);

        49. }
        50. else a++;
        51. }
        52. if((a==15)&&(i==100))
        53. {
        54. count++;
        55. a=0;
        56. }
        57. if(i!=100) a++;
        58. os_wait(K_TMO,10,0);//修改tick,可以改變掃描頻率
        59. }
        60. }
        61. void job2 (void) _task_ 2
        62. {

        63. while(1)
        64. {
        65. os_wait1(K_SIG);//等待信號(hào)量,若信號(hào)量沒(méi)到,則任務(wù)2處于掛起狀態(tài)
        66. clear_LCD();
        67. //clear_LCD();

        68. gotoxy(1,0);
        69. display_LCD_string(key_v1);
        70. //StrToStr( key_v1, key_v2);
        71. // gotoxy(1,0);
        72. //display_LCD_string(key_v2);

        73. a=0;
        74. count=0;
        75. os_clear_signal (2);//釋放信號(hào)量
        76. // os_wait(K_TMO,1000,0);
        77. }
        78. }
        79. void job3 (void) _task_ 3
        80. {
        81. while(1)
        82. {
        83. sec++;//計(jì)秒
        84. if(sec==60){minute++;sec=0;}
        85. if(minute==60){hour++;minute=0;}
        86. os_wait(K_IVL,100,0);//等待時(shí)間片中斷,沒(méi)100個(gè)時(shí)間片發(fā)生一次中斷,也就是1s鐘,任務(wù)3運(yùn)行一次
        87. }
        88. }
        89. void job4 (void) _task_ 4
        90. {

        91. while(1)
        92. {


        93. os_wait1(K_SIG);//等待信號(hào)量
        94. //os_wait(K_TMO+K_SIG,50,0);
        95. if(signal_p1!=0) os_wait(K_TMO,1,0);
        96. signal_p1=1;
        97. P2|=0x0f;
        98. clear_LCD();
        99. t=hour/10+48;
        100. gotoxy(1,4);
        101. write_LCD_data(t);
        102. t=hour%10+48;
        103. write_LCD_data(t);
        104. write_LCD_data(':');
        105. t=minute/10+48;
        106. write_LCD_data(t);
        107. t=minute%10+48;
        108. write_LCD_data(t);
        109. write_LCD_data(':');
        110. t=sec/10+48;
        111. write_LCD_data(t);
        112. t=sec%10+48;
        113. write_LCD_data(t);
        114. gotoxy(1,0);
        115. signal_p1=0;
        116. os_wait(K_TMO,50,0);
        117. os_clear_signal(4);//釋放信號(hào)量
        118. }

        119. }
        120. void job5 (void) _task_ 5
        121. {
        122. while(1)
        123. {
        124. //os_wait(K_TMO,5,0);

        125. if(signal_p1!=0) os_wait(K_TMO,1,0);
        126. signal_p1=1;
        127. P2|=0x0f;
        128. P1=seven_seg[count%10];
        129. P2&=0xfe;
        130. delay100us(24);
        131. P2|=0x0f;
        132. P1=seven_seg[(count/10)%10];
        133. P2&=0xfd;
        134. delay100us(24);
        135. P2|=0x0f;
        136. P1=seven_seg[(count/100)%10];
        137. P2&=0xfb;
        138. delay100us(24);
        139. P2|=0x0f;
        140. P1=seven_seg[(count/1000)%10];
        141. P2&=0xf7;
        142. delay100us(24);
        143. // up++;
        144. if(count>=10000) count=0;
        145. P2|=0x0f;
        146. signal_p1=0;
        147. os_wait(K_TMO,1,0);
        148. }
        149. }

        復(fù)制代碼


        回復(fù) 1# admin

        很好,比較簡(jiǎn)單的操作系統(tǒng)。
        回復(fù) 1# admin


           剛剛看一下,這個(gè)系統(tǒng)的移植是很方便的。
        很好的程序結(jié)構(gòu),學(xué)習(xí)啦~
        很好的程序結(jié)構(gòu),學(xué)習(xí)啦~
        中道找到了!!!!!!!!!!!!!!!
        謝謝樓主分享!但是程序中有很多錯(cuò)誤的地方。不知樓主……
        回復(fù) 7# zhiyix


            抽空我會(huì)測(cè)試一下
        ThanksThanksThanksThanksThanksThanksThanks
        頂DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
        非常好,我下了;非常好,我下了
        新會(huì)員報(bào)道,謝謝發(fā)帖。
        我下了,研究學(xué)習(xí);我下了,研究學(xué)習(xí)
        編譯不通過(guò)???不通過(guò)啊
        不錯(cuò),很實(shí)用,非常感謝
        謝謝樓主。向樓主學(xué)習(xí)。。
        謝謝樓主,好好學(xué)習(xí)

        本文內(nèi)容摘錄自:MCU資訊論壇(http://www.www.9936d.com)
        詳細(xì)文章請(qǐng)參考:http://www.www.9936d.com/thread-203-1-1.html
        頂DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
        admin 在么 為什么我用你的程序仿真LCD屏 沒(méi)有數(shù)字顯示呢  
        謝謝分享!樓主辛苦了!
        {:soso_e183:}{:soso_e183:}{:soso_e157:}

        QQ|手機(jī)版|MCU資訊論壇 ( 京ICP備18035221號(hào)-2 )|網(wǎng)站地圖

        GMT+8, 2025-3-18 12:45 , Processed in 0.040546 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2024 Discuz! Team.

        返回頂部
        久久久91人妻无码精品蜜桃HD| 98香蕉草草视频在线精品看| 久草热久草热线频97精品| 无码国产精品一区二区免费vr| 成人午夜精品久久久久久久小说| 久久九九精品99国产精品| 亚洲精品视频免费观看| 国产精品成人观看视频| 91探花福利精品国产自产在线| 亚洲精品无码久久久久久| 欧美精品丝袜久久久中文字幕| 免费精品一区二区三区第35| 亚洲第一永久AV网站久久精品男人的天堂AV | 99精品久久精品| 国产精品亚洲专区无码WEB| 538国产精品一区二区在线| 亚洲精品乱码久久久久66| 国产精品无码无卡在线播放| 少妇精品无码一区二区三区 | 国产精品自在线拍国产手机版| 日本一区二区不卡在线视频| 九九热这里只有国产精品| 亚洲精品国产自在久久| 国产精品日韩欧美一区二区三区| 国产精品成人99久久久久91gav| 欧美精品第1页www劲爆| 中文不卡在线免费观看| 亚洲精品乱码久久久久久蜜桃| 精品一区二区三区在线成人 | 国产成人久久精品二区三区| 最近免费中文在线电影成人| 99精品国产在热久久| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 精品国产一区二区三区无码| 最新精品露脸国产在线| 欧美成人免费全部观看天天性色| 亚洲精品老司机在线观看| 韩国精品欧美一区二区三区| 久久99国产精品久久久| 欧美成人精品网站播放 | 成人区精品一区二区不卡 |