wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

經(jīng)典單片機(jī)C51多任務(wù)代碼(改進(jìn)版)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年11月22日   【字體:

以前曾經(jīng)發(fā)布過一篇http://www.izizhuan.cn/mcu/1616.html  這個(gè)是改進(jìn)版,修正了幾個(gè)小問題.
//說明本源碼來自網(wǎng)絡(luò)(DIY超輕量級(jí)多任務(wù)操作系統(tǒng)一文)
//============================================================================
//51實(shí)用多任務(wù)源碼,歡迎引用改進(jìn),有新改進(jìn)功能請(qǐng)回發(fā)一份給我謝謝!(請(qǐng)發(fā)郵箱)
//改進(jìn)為定時(shí)中斷內(nèi)切換任務(wù)
//任務(wù)內(nèi)可以設(shè)定時(shí)間片長(zhǎng)短,通過改定時(shí)器0初置的方法實(shí)現(xiàn)
//置定時(shí)器0 TL0=0xFF;的方法可以讓出CPU使用權(quán)
//七彩驚云改進(jìn),QQ540953860 13880880726  胥先生
//采用本源碼請(qǐng)保留各改進(jìn)人的聯(lián)系信息,以便共享和完善,請(qǐng)將各改進(jìn)前版本備注在代碼后面以便了解發(fā)展
//步驟和各種不同檔次單片機(jī)下的靈活引用。
//請(qǐng)對(duì)每一句代碼進(jìn)行備注謝謝!
//============================================================================
//============================================================================
//你的改進(jìn)說明寫這兒
//============================================================================
#include <reg51.h>

#define MAX_TASKS 2       //任務(wù)槽個(gè)數(shù).必須和實(shí)際任務(wù)數(shù)一至
#define MAX_TASK_DEP 12   //最大棧深.最低不得少于2個(gè),保守值為12.
//根據(jù)程序嵌套層數(shù)調(diào)整該值大小,同時(shí)要算一下會(huì)不會(huì)溢出,這里的設(shè)置很重要。
//還有就是重入問題,局部變量在任務(wù)切換時(shí)有可能被另外的任務(wù)改寫。
//#define MAX_TASK_DEP 24   //最大棧深.最低不得少于2個(gè),24.
unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];//任務(wù)堆棧數(shù)組.
unsigned char task_id;    //當(dāng)前活動(dòng)任務(wù)號(hào)
unsigned char idata task_sp[MAX_TASKS];//棧指標(biāo)存放數(shù)組
bit RWCH_BZ=0;//任務(wù)切換標(biāo)志變量

/*
//任務(wù)切換函數(shù)(任務(wù)調(diào)度器)
void task_switch(){ //本子程序可以用來讓出CPU使用權(quán)
        task_sp[task_id] = SP; //存當(dāng)前任務(wù)SP的值

        if(++task_id == MAX_TASKS) //任務(wù)號(hào)++并比較,到最大置0以便重復(fù)切換任務(wù)
                task_id = 0;

        SP = task_sp[task_id]; //讀取下一任務(wù)SP值,
} */

//任務(wù)裝入函數(shù).將指定的函數(shù)(參數(shù)1)裝入指定(參數(shù)2)的任務(wù)槽中.如果該槽中原來就有任務(wù),則原任務(wù)丟失,但系統(tǒng)本身不會(huì)發(fā)生錯(cuò)誤.
void task_load(unsigned int fn, unsigned char tid){
        task_sp[tid] = task_stack[tid] + 1; //裝入任務(wù)SP數(shù)據(jù)
        task_stack[tid][0] = (unsigned int)fn & 0xff; //裝入任務(wù)首地址低位
        task_stack[tid][1] = (unsigned int)fn >> 8; //裝入首地址高位
}

//從指定的任務(wù)開始運(yùn)行任務(wù)調(diào)度.調(diào)用該宏后,將永不返回.
#define os_start(tid) {task_id = tid,SP = task_sp[tid];return;}
//這里其實(shí)就是以改寫SP指針的方法,返回時(shí)不再返回調(diào)用本子程序的地方,而返回被新設(shè)定的SP指針指向的任務(wù)1首地址處運(yùn)行。

 

/*============================以下為測(cè)試代碼============================*/

void task1(){ //任務(wù)1
        static unsigned char i;
        while(1){
                i++;
        }
}

void task2(){//任務(wù)2
        static unsigned char j;
        while(1){
                j+=2;
           TL0=0xFF;//用置TL0的辦法來進(jìn)行讓定時(shí)中斷動(dòng)作從而進(jìn)行任務(wù)切換,讓出CPU使用權(quán)給下一任務(wù)的方法更好
   
        }
}

void main(){
        //這里裝載了兩個(gè)任務(wù),因此在定義MAX_TASKS時(shí)也必須定義為2

//=============================================================
//單片機(jī)初始化
//    mov tmod,#20h  ;串口通訊設(shè)置 串口方式3 波特9600 晶振11.59適用
//TMOD=0x20;//定時(shí)器1方式2
TMOD=0x22;//定時(shí)器0方式2,定時(shí)器1方式2
//    mov Tl1,#0fdh ;
TL1=0xfa;
//    mov th1,#0fdh  ; TEL:028-89951522 轉(zhuǎn)載請(qǐng)勿刪除,謝謝!
TH1=0xfa;
//    mov pcon,#128d  ;QQ:540953860
//PCON=128;
PCON=0x80;
//    mov sp,#60h
//SP=0x60;
IP=16;//串口中斷設(shè)為高優(yōu)先級(jí)
//    mov scon,#0e0h
SCON=0xf0;//為e0時(shí)禁止接收數(shù)據(jù)
//setb tr1
TR1=1;//開啟定時(shí)器1
TR0=1;//開啟定時(shí)器0
ET0=1;//開定時(shí)器0中斷
 TL0=0x50;//定時(shí)器0初值設(shè)定
 TH0=0x50;//在中斷中設(shè)置它可實(shí)現(xiàn)時(shí)間片調(diào)整
//    setb ea

//=============================================================
task_load(task1, 0);//將task1函數(shù)裝入0號(hào)槽
task_load(task2, 1);//將task2函數(shù)裝入1號(hào)槽
EA=1;//開中斷
os_start(0); //進(jìn)入任務(wù)1
}
ckzd() interrupt 4 using 1//串行中斷入口
{

}

timer0zd() interrupt 1 using 2//定時(shí)器0中斷入口
  {

  // clr tr1  ;關(guān)閉定時(shí)器
   TR0=0;
// clr et1  ;關(guān)閉定時(shí)中斷
   ET0=0;
//  task_switch();//切換任務(wù)
//===========================================
//切換任務(wù)
      task_sp[task_id] = SP;

        if(++task_id == MAX_TASKS)
          {
                task_id = 0;
                RWCH_BZ=1;//當(dāng)task_id==0時(shí)說明所有任都切換了一次,置標(biāo)志不再對(duì)棧進(jìn)行調(diào)整。
    }
        SP = task_sp[task_id];
  
if(RWCH_BZ==0)
  {//棧調(diào)整代碼
  SP+=2;//第一次切換程序時(shí)原棧沒有(POP PSW 和POP ACC 數(shù)據(jù)調(diào)整一下,為什么請(qǐng)查匯編代碼)
//為什么要加上面代碼的分析
 //中斷中其實(shí)隱含了以下代碼
//PUSH ACC
//PUSH PSW
//----------------

//中斷內(nèi)的實(shí)際代碼

//----------------
//下面兩句的數(shù)據(jù)在每個(gè)任務(wù)第一次切換時(shí)任務(wù)棧內(nèi)其實(shí)并沒有它的數(shù)據(jù),如果不調(diào)整,這兩句將會(huì)把返回地址數(shù)據(jù)給POP掉
//所以進(jìn)行SP+2處理才會(huì)正常返回切換后的任務(wù),從而騙過CPU
//POP PSW
//POP ACC
//RET
  }
//============================================
// setb et1
  ET0=1;//開中斷
// setb tr1
  TR0=1;//開定時(shí)器

 }
 //===================================

//=======================================================================
/*
//網(wǎng)絡(luò)原碼
#include <reg51.h>

#define MAX_TASKS 2       //任務(wù)槽個(gè)數(shù).必須和實(shí)際任務(wù)數(shù)一至
#define MAX_TASK_DEP 12   //最大棧深.最低不得少于2個(gè),保守值為12.
unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];//任務(wù)堆棧.
unsigned char task_id;    //當(dāng)前活動(dòng)任務(wù)號(hào)
unsigned char idata task_sp[MAX_TASKS];


//任務(wù)切換函數(shù)(任務(wù)調(diào)度器)
void task_switch(){
        task_sp[task_id] = SP;

        if(++task_id == MAX_TASKS)
                task_id = 0;

        SP = task_sp[task_id];
}

//任務(wù)裝入函數(shù).將指定的函數(shù)(參數(shù)1)裝入指定(參數(shù)2)的任務(wù)槽中.如果該槽中原來就有任務(wù),則原任務(wù)丟失,但系統(tǒng)本身不會(huì)發(fā)生錯(cuò)誤.
void task_load(unsigned int fn, unsigned char tid){
        task_sp[tid] = task_stack[tid] + 1;
        task_stack[tid][0] = (unsigned int)fn & 0xff;
        task_stack[tid][1] = (unsigned int)fn >> 8;
}

//從指定的任務(wù)開始運(yùn)行任務(wù)調(diào)度.調(diào)用該宏后,將永不返回.
#define os_start(tid) {task_id = tid,SP = task_sp[tid];return;}

void task1(){
        static unsigned char i;
        while(1){
                i++;
                task_switch();//編譯后在這里打上斷點(diǎn)
        }
}

void task2(){
        static unsigned char j;
        while(1){
                j+=2;
                task_switch();//編譯后在這里打上斷點(diǎn)
        }
}

void main(){
        //這里裝載了兩個(gè)任務(wù),因此在定義MAX_TASKS時(shí)也必須定義為2
        task_load(task1, 0);//將task1函數(shù)裝入0號(hào)槽
        task_load(task2, 1);//將task2函數(shù)裝入1號(hào)槽
        os_start(0);
}
*/
//=======================================================================
 

關(guān)閉窗口

相關(guān)文章

久久久久九九精品影院| 国内精品伊人久久久久av一坑| 欧美在线观看视频网站| 欧美激情一区二区三区高清视频| 一区二区三区四区激情| 影音先锋亚洲精品| 国产一二三在线| 天天色综合6| 国产福利资源在线| 亚洲午夜精品久久| 99久久伊人精品| 你懂的在线观看一区二区| 国产叼嘿网站免费观看不用充会员| 国产suv精品一区二区68| 久久精品99国产| 中文字幕日韩欧美精品在线观看| 国产精品久久久久久久久免费相片 | 国模无码国产精品视频| 亚洲美女爱爱视频| 手机成人av在线| 99久久久久国产精品免费| 天天av天天翘天天综合网 | 国产精品一线二线三线| 极品白浆推特女神在线观看| 欧美性xxxx交| 中文字幕免费播放| 日本人亚洲人jjzzjjz| 国产乱国产乱300精品| 国产丝袜视频在线播放| 中文字幕一区二区三区域| 麻豆精品密在线观看| 一区二区美女视频| 欧美日韩中文视频| 黄色三级生活片| 99久久99精品| 91黄色小网站| 欧美另类videos| 久久久久久久免费| 国产成人97精品免费看片| www.久久撸.com| 日韩乱码在线视频| 日韩天堂在线观看| 欧美色倩网站大全免费| 五月天视频一区| 亚洲欧美另类久久久精品 | 精品国产免费一区二区三区香蕉| 亚洲国产精品成人久久综合一区 | 国产亚洲精品成人| 精品少妇一区二区三区免费观| 免费中文日韩| 久久躁日日躁aaaaxxxx| 日韩精品免费在线| 日韩视频中午一区| 91精品福利在线一区二区三区| 亚洲亚洲人成综合网络| 亚洲精品写真福利| 亚洲日韩欧美一区二区在线| 久热re国产手机在线观看| 一级黄色av片| 亚洲黄色三级视频| 欧美精品久久久久性色| 欧美一级免费播放| 国产精品免费看久久久香蕉| 久久久久免费精品国产| 不卡中文字幕av| 久热精品视频在线| 美女扒开尿口让男人操亚洲视频网站 | 视频一区日韩| 日韩不卡视频在线| 九九九九精品| 伊人av综合网| 亚洲欧美制服中文字幕| 亚洲精品中文字幕av| 亚洲成人网在线观看| 亚洲精品黄网在线观看| 亚洲欧美日韩天堂| 亚洲影视资源| 97成人超碰| 中文字幕在线免费观看| 四虎最新网站| 婷婷丁香六月天| 色佬视频在线观看| 你懂的国产在线| 国产婷婷在线观看| 搡老熟女老女人一区二区| 波多野结衣福利| 亚洲一级理论片| 精品少妇一二三区| 亚洲区免费影片| 欧美v亚洲v综合ⅴ国产v| 日韩亚洲欧美成人一区| 亚洲精品久久久久久久久久久| 亚洲免费影视第一页| 色偷偷9999www| 午夜精品久久久久久久99黑人| 2024亚洲男人天堂| 亚洲一区中文字幕| 久久99久久精品国产| 一区二区三区电影| 91国视频在线| 久久人妻少妇嫩草av蜜桃| 777米奇影视第四色| 污色网站在线观看| 巨胸大乳www视频免费观看| 在线观看国产精品淫| 在线视频国产日韩| 久久久久久久久久国产精品| 国产精品www色诱视频| 亚洲综合av影视| 日韩中文一区| 999精品视频在线| 人妻大战黑人白浆狂泄| 久久久久99精品成人片毛片| 国产视频一区二区三区四区五区| 欧美日韩亚洲色图| 国产黄色网页| 色猫咪免费人成网站在线观看| 午夜精品久久久久99蜜桃最新版 | 久久久综合亚洲91久久98| 亚州欧美一区三区三区在线| 国产亚洲二区| 国产一级黄色录像片| 亚洲老女人av| jizz18女人高潮| 中文字幕精品无| 亚洲欧美天堂网| 97福利电影| 免费在线观看av电影| 日韩欧美中文字幕一区二区三区| 国产精品久久久久久久久久10秀 | 中文在线不卡视频| 国产欧美精品日韩| 亚洲一区尤物| 伊人成人免费视频| 久久久美女视频| 2018中文字幕在线观看| 国产午夜电影| 特黄特色大片免费视频大全| 污的网站在线观看| 澳门精品久久国产| 亚洲专区免费| 国产精品乱码一区二区三区软件 | 女人天堂亚洲aⅴ在线观看| 国产精品18久久久久久久久| 亚洲精品水蜜桃| 亚洲激情视频在线观看| 国产精品久久久久av免费| 欧美少妇一级片| 曰本三级日本三级日本三级| 成人a v视频| 日本午夜精华| 国产第一页在线视频| 国产欧美日韩在线一区二区| 国产一区二区三区四区在线观看| 亚洲成人福利片| 最近2019中文字幕大全第二页| 亚洲a成v人在线观看| 亚洲第一导航| 亚洲欧美在线不卡| 国产精品毛片一区二区在线看舒淇| 桃花视频大全不卡免费观看网站 | 成人av午夜电影| 在线精品视频免费观看| 久久久久国产精品免费| 日韩欧美亚洲v片| 白嫩情侣偷拍呻吟刺激| 国产哺乳奶水91在线播放| 国产经典av| 国产毛片精品久久| 偷拍亚洲色图| 国产伦精品一区二区三区免费 | 无遮挡h肉3d动漫在线观看| 高潮毛片在线观看| 91综合视频| 国产精品久久久久四虎| 中文字幕国产亚洲2019| 日本不卡一区二区三区视频| 扒开jk护士狂揉免费| 欧美日韩在线视频免费播放| 老少交欧美另类| а√天堂8资源在线| 欧美成人精品| 亚洲成人一二三| 欧美亚洲第一页| 男人插女人下面免费视频| 日韩欧美国产另类| av超碰在线| 欧美日韩爱爱| 亚洲欧洲99久久| 欧美另类精品xxxx孕妇| 一本久道高清无码视频| 色av性av丰满av| 亚洲午夜精品久久久久久人妖| 亚洲视频资源| 亚洲最新在线| 免费国产在线精品一区二区三区| 亚洲精品无码一区二区| 国产suv一区二区| 二区在线视频| 中文字幕乱码亚洲无线精品一区| 亚洲视频中文字幕| 久久久免费在线观看| 免费无遮挡无码永久视频| www欧美在线| 一色桃子在线| 小说区亚洲自拍另类图片专区| 亚洲制服丝袜一区| 国产精品久久久久免费a∨| 97超碰人人看| 色小说视频一区| 99电影在线观看| 久久中文字幕人妻| 浮力国产第一页| 韩日精品一区| 91麻豆免费看| 欧美大成色www永久网站婷| 18禁免费无码无遮挡不卡网站 | 同心难改在线观看| 看黄在线观看| 久久激情五月婷婷| 亚洲1区2区3区4区| 国产欧美日韩中文字幕在线| 亚洲の无码国产の无码步美| 国产麻豆精品一区二区三区v视界| 99久久亚洲国产日韩美女| 成人晚上爱看视频| 久久精品久久久久久| 少妇性饥渴无码a区免费| 亚洲国产精品久久人人爱潘金莲| 另类小说第一页| 日韩欧美亚洲视频| 香蕉视频色版| 欧美黄污视频| 日韩一区二区精品在线观看| 亚洲第一页在线视频| 亚洲中文无码av在线| 欧美日韩xx| 精品一区二区三区在线播放| 日韩视频免费观看| 中文字幕亚洲影院| 本道综合精品| 日本欧美韩国国产| 欧美日韩国产精品专区 | 欧美精品久久久久a| 97中文字幕在线观看| 农村一级毛片| 色婷婷热久久| 精品国产网站在线观看| 欧美 丝袜 自拍 制服 另类| 在线成人综合色一区| 秋霞一区二区三区| 五月天亚洲精品| 亚洲第一导航| 欧美一级性视频| 日本成人一区二区三区| 在线视频你懂| 久久美女性网| 久久亚洲精品一区| 91丨porny丨对白| 日本aⅴ中文| 国产一区二区电影在线观看| 欧美综合色免费| 特级西西444| 综合激情亚洲| 网红女主播少妇精品视频| 欧美久久久久久久久| 黄色av网址在线播放| 国产野外战在线播放| 日韩欧美午夜| 久久视频精品| 久久综合中文| 久久精品国产欧美激情| 亚洲高清av一区二区三区| 成网站在线观看人免费| 国产韩国精品一区二区三区| 亚洲国产天堂久久综合| 亚洲涩涩在线观看| 成人网址大全| 奶水喷射视频一区| 欧美成人激情在线| youjizz亚洲女人| 日本www在线观看视频| bt欧美亚洲午夜电影天堂| 成人免费看片视频| 精品国产xxx| 日韩精品第一| 欧美性猛交xxxx富婆弯腰| 男女啪啪免费观看| 国产大奶在线| 欧美涩涩网站| 亚洲一级片网站| 国产精品美女毛片真酒店| 麻豆网站在线| 国产精品素人一区二区| 久久99精品久久久久久青青日本| 性猛交富婆╳xxx乱大交天津| 日本免费一区二区三区视频| 欧美群妇大交群的观看方式| the porn av| 亚洲男男gay视频| 国v精品久久久网| 国产精品乱码视频| 天天操天天爱天天干| 欧美xxx黑人xxx水蜜桃| 中文字幕一区二区三区蜜月| 色99中文字幕| 操人视频91| 日韩国产一区二| 国产精品视频网址| 国产精品女人久久久| 成人精品亚洲人成在线| 夜夜嗨一区二区| 欧美成人在线免费视频| 天天爽天天爽天天爽| 国产啊啊啊视频在线观看| 亚洲丰满少妇videoshd| 777777av| 日本视频二区| 久久免费的精品国产v∧| 欧美一级视频免费在线观看| 国产精品国产三级国产专区52| 91精品麻豆| 日韩国产欧美区| 欧美日韩午夜视频| 日本在线中文字幕一区二区三区| 欧美一区二区三区影视| 中文在线一区二区三区| www.8ⅹ8ⅹ羞羞漫画在线看| 欧美日产在线观看| 亚洲国产视频一区二区三区| 在线观看不卡的av| 亚洲视频一起| 亚洲欧美制服综合另类| 国产一区二区精彩视频| 六九午夜精品视频| 亚洲精品国产综合区久久久久久久| 亚洲国产av一区| 亚洲一级少妇| 欧美精品一区二区三区蜜桃| 一级特黄曰皮片视频| 成人精品三级| 亚洲欧美精品一区| 国产无遮挡裸体免费视频| caoporn成人| 欧美成人性色生活仑片| 一二三四区在线| 欧美精品黄色| 91九色露脸| 免费网站观看电影入口| 粉嫩欧美一区二区三区高清影视| 欧美伦理视频网站| 久久久久国产精品区片区无码| freexxx性亚洲精品| 日韩免费福利电影在线观看| 日韩在线视频网址| www.丝袜精品| 欧美激情中文网| 欧美一区二区三区黄片| 亚欧成人精品| 日韩精品极品视频在线观看免费| 男人的天堂www| 亚洲精品久久久久久国产精华液| 一区二区三区国产好的精华液| 久久香蕉一区| 日韩久久午夜影院| 中文字幕二区三区| 1024日韩| 午夜精品亚洲一区二区三区嫩草| 色久视频在线观看| 狠狠爱在线视频一区| 美女被到爽高潮视频| 精品一区二区三区四区五区 | 中国特级黄色片| 精品人人视频| 亚洲人成网站在线播| 一区精品在线观看| 久久精品日产第一区二区 | 亚洲精品国产偷自在线观看| 97人人香蕉| av网站免费在线| 欧美视频第一页| 一级免费黄色录像| 中文字幕伦av一区二区邻居| 国产精品私拍pans大尺度在线 | 亚洲精品一区二区久| 日本大片免费看| porn亚洲| 精品粉嫩aⅴ一区二区三区四区 | 久久国产精品视频在线观看| 黄色免费网站在线观看| 亚洲国产又黄又爽女人高潮的| 最近中文字幕在线免费观看| 老鸭窝毛片一区二区三区| www.18av.com| 啦啦啦中文在线观看日本| 色偷偷91综合久久噜噜| 影音日韩av| 亚洲特级片在线| 日本不卡一二区| 欧美先锋影音|