亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: STC8單片機跑RTX51 OS 1T模式 [打印本頁]

作者: 李牧林    時間: 2019-9-12 22:07
標題: STC8單片機跑RTX51 OS 1T模式
本帖最后由 李牧林 于 2019-9-14 10:47 編輯

網上能找到的資料,大部分是STC15單片機或者STC12或者STC89在12T的模式下跑RTX51,本人覺得太浪費這些增強型的51單片機芯片了,于是經過測試,成功在1T模式下跑RTX51。
具體涉及的操作如下:
1.在工程中添加RTX51
2.頭文件包含#include <rtx51tny.h>
3.修改Conf_tny.A51的INT_CLOCK   EQU  55400  這邊的55400原來默認為10000

測試的主函數如下所示:
#include <rtx51tny.h>
#define MAIN_Fosc                11059200L        //定義主時鐘
#include        "STC8.H"
#include        "uart.H"

sbit LED_B=P0^7;     //藍色LED用IO口P07

void job0(void) _task_ 0  
{
        AUXR |= 0x80;  //定時器時鐘1T模式
        P0M1 &= 0x7F;        P0M0 &= 0x7F;   //設置P0.7為準雙向口
        UartInit();
        os_create_task(1);         //創建任務1
        os_create_task(2);         //創建任務1
         os_delete_task(0);        //刪除自己(task0),使task0退出任務鏈表
}  

void job1(void) _task_ 1  
{  
                while(1)
                {              
                        LED_B = !LED_B;
                        os_wait(K_IVL, 10, 0);  //等待10個時鐘滴答(ticks),即100ms
    }  
}  

void job2(void) _task_ 2  
{  
                while(1)
                {              
                        UART_SendString("hello\r\n");
                        os_wait(K_IVL, 100, 0);  //等待100個時鐘滴答(ticks),即1s
    }  
}  


經過測試,os_wait(K_IVL, 1, 0)的時間基本能比較接近10ms。os_wait(K_IVL, 10, 0)的時間比較接近100ms。看下圖。



最后注意,本環境是在
#define MAIN_Fosc 11059200L 的情況下測試的。



作者: 51hei團團    時間: 2019-9-13 16:48
很好,值得學習的好東東
作者: Mac-Mac    時間: 2019-9-14 16:32
很好,值得學習
作者: m182892    時間: 2019-9-15 08:38
誰分享一下RTX51
作者: yuche2018    時間: 2019-9-15 11:57
新手 來學習一下
作者: 李牧林    時間: 2019-9-15 16:01
m182892 發表于 2019-9-15 08:38
誰分享一下RTX51

百度資料非常多吧
作者: 1113634577    時間: 2019-9-26 11:34
謝謝!我調試一下看看效果
作者: payforme    時間: 2020-3-1 22:15
沒有關系,,tick周期是你定的,,和MCU快慢沒關系,無論12T還是1T,,你都定的10ms,,,沒區別
作者: sandgod    時間: 2020-5-17 00:16
55400怎么來的?
作者: Thinker2014    時間: 2020-7-20 14:03
sandgod 發表于 2020-5-17 00:16
55400怎么來的?

不知道怎么計算的   我猜測的這個  INT_CLOCK 應該是和timer計時類似的計算方法

如果是1ms中斷一次的話, 則可以設  周期數為  CX, 然后有如下 公示:
CX = 1000*11.0592/1T = 11059
則初值設置為: 65535 - CX = 54476  約等于 54400   

但這個是1ms發生中斷的INT_CLOCK值。  樓主那個具體的值是如何得到的,尚不清楚。





歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1