找回密碼
         注冊(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.m.9936d.com)
        詳細(xì)文章請(qǐng)參考:http://www.m.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.

        返回頂部
        精品亚洲综合久久中文字幕| 国产精品理论片在线观看| 久久国产精品一区| 色婷婷噜噜久久国产精品12p| 亚洲精品天堂成人片?V在线播放| 日韩免费不卡视频| 2020国产精品永久在线| 国产精品激情综合久久| 就去吻亚洲精品国产欧美| 99久久久国产精品免费无卡顿| 91麻豆精品国产91久久久久久| 久久久久亚洲精品男人的天堂 | 久久久99精品成人片中文字幕| 欧美久久久久久午夜精品| 亚洲精品国产精品乱码不卡√| 国产精品久久久久9999| 久久久久久一区国产精品| 久久99国产综合精品女同| 国产精品无码不卡一区二区三区| 黄页网站三级视频在线播放| 华人在线精品免费观看| 亚洲а∨天堂久久精品9966| 国产精品污WWW在线观看| 国语自产精品视频| 无码人妻精品一区二区| 国产成人久久久精品二区三区| 高清一级淫片a级中文字幕| 久久久久国产精品| 色老头在线官方网站| 国产一区二区精品| 亚洲午夜精品久久久久久app| 国产成人精品日本亚洲网站 | 久久香综合精品久久伊人| 3级黄性日本午夜精品| 中文字幕在线视频不卡| 久久久国产精品网站| 中文精品久久久久人妻不卡| 国产成人精品综合在线观看| 久热这里只有精品12| 久久成人精品| 国产成人精品免费视频大|