|
UCOSII 在51系列單片機(jī)C8051f340的移植實(shí)例
0.png (61.01 KB, 下載次數(shù): 97)
下載附件
2017-1-8 22:48 上傳
全部源碼下載:
UCOS-II操作系統(tǒng)(創(chuàng)建任務(wù)學(xué)習(xí)).rar
(258.45 KB, 下載次數(shù): 76)
2017-1-6 13:44 上傳
點(diǎn)擊文件名下載附件
UCOSII C51 下載積分: 黑幣 -5
apps的主程序:
- /********************************************************************
- * 文件名 : usertask.c
- * 描述 : UCOS-II的main函數(shù)文件,該例子是創(chuàng)建任務(wù)實(shí)驗(yàn)學(xué)習(xí),任務(wù)之間可以完全獨(dú)立,
- * 通過在任務(wù)中調(diào)用OSTimeDly(),來完成任務(wù)的掛起,讓別的任務(wù)運(yùn)行。
- * 這里創(chuàng)建了3個(gè)任務(wù),任務(wù)1開關(guān)LED12、任務(wù)2開關(guān)LED13、任務(wù)3開關(guān)LED14。
- * 創(chuàng)建人 :云杰
- * QQ :494713348
- * 電話 :15123350190
- * Email :founder_elec@foxmail.com
- * 網(wǎng)址 :http://shop66398134.taobao.com
- * 時(shí)間 :2010年4月10日
- * 版本號(hào) :V0.1.0
- * 修改記錄:
- *
- *********************************************************************/
- #include"includes.h"
- #include"absacc.h"
- sbit LED12 = P2^3; //LED12管腳定義
- sbit LED13 = P0^3; //LED13管腳定義
- sbit LED14 = P2^2; //LED14管腳定義
- OS_STK xdata StartTaskStk[USER_STACK_SIZE],Task1Stk[USER_STACK_SIZE],Task2Stk[USER_STACK_SIZE];
- //定義3個(gè)信號(hào)量
- INT8U err;
- void StartTask(void) KCREENTRANT;
- void Task1(void) KCREENTRANT;
- void Task2(void) KCREENTRANT;
- void InitTimer0(void)KCREENTRANT;
- void main(void)
- {
- EA=0;
- PCA0MD &= ~0x40; //禁止看門狗
- OSCICN |= 0x83; //不分頻,使用內(nèi)部12M晶振,系統(tǒng)時(shí)鐘頻率為12MHz
- OSInit();
- OSTaskCreate(StartTask,(void *)0,&StartTaskStk[0],0);//創(chuàng)建第一個(gè)任務(wù)
- OSStart();
- }
- void StartTask(void) KCREENTRANT
- {
- P0MDOUT = 0x08; // 設(shè)置P0.3 輸出為推挽方式
- P2MDOUT = 0x0c; // 設(shè)置P2.2,P2.3輸出為推挽方式
- XBR1 = 0x40;
- LED12 = 1;
- LED13 = 1;
- LED14 = 1;
- InitTimer0();
- OSStatInit(); //開啟CPU使用率統(tǒng)計(jì)
- //程序中的任務(wù)建議在這里創(chuàng)建,當(dāng)然也可以在其它任務(wù)中創(chuàng)建任務(wù)
- OSTaskCreate(Task1, (void *)0, &Task1Stk[0], 2);
- OSTaskCreate(Task2, (void *)0, &Task2Stk[0], 3);
- for(;;)
- {
- LED12 = ~LED12;
- OSTimeDly(20);
- }
- }
- void Task1(void) KCREENTRANT
- {
- for(;;)
- {
- LED13 = ~LED13;
- OSTimeDly(40);
- }
- }
- void Task2(void) KCREENTRANT
- {
- for(;;)
- {
- LED14 = ~LED14;
- OSTimeDly(60);
- }
- }
復(fù)制代碼
|
|