找回密碼
         注冊(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.

        返回頂部
        久久香蕉超碰97国产精品| 欧美一卡2卡3卡四卡海外精品| 亚洲国产精品久久久久婷婷软件| 精品四虎免费观看国产高清午夜| 成人国内精品久久久久影院VR| 久久久久久极精品久久久| 日本电影a级二区| 成人国产精品免费视频| 国产精品久久久天天影视香蕉| 色婷婷影院你懂的| 国产精品视频一区二区三区经| 久久精品成人欧美大片| 色一乱一伦一图一区二区精品| 亚洲国产精品久久久久网站| 亚洲精品无码久久不卡| 国产日韩精品中文字无码| 国产区精品福利在线观看精品| 亚洲综合av永久无码精品一区二区 | 91精品国产自产在线观看| 亚洲国产精品不卡毛片a在线 | 国产精品 综合 第五页| 美女视频黄的全免费网站| 老司机69精品成免费视频| 在线亚洲精品福利网址导航| 国产夫妇精品自在线| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久久久久亚洲精品成人| 国产小呦泬泬99精品| 午夜DY888国产精品影院| 国产成人精品大尺度在线观看| 黄页网站在线免费观看| 99精品福利国产在线| 阿v视频在线观看| 中文字幕精品一区二区日本| 大桥未久磁力迅雷链接中文字幕| 思思99热在线观看精品| 亚洲精品无码久久一线| 国内精品久久久久影院网站| 精品亚洲A∨无码一区二区三区| 久久精品综合一区二区三区| 97精品国产一区二区三区 |