欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5764|回復: 10
收起左側

STC8單片機跑RTX51 OS 1T模式

  [復制鏈接]
ID:68814 發表于 2019-9-12 22:07 | 顯示全部樓層 |閱讀模式
本帖最后由 李牧林 于 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。看下圖。
51hei圖片20190914104508.png


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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:328014 發表于 2019-9-13 16:48 | 顯示全部樓層
很好,值得學習的好東東
回復

使用道具 舉報

ID:611442 發表于 2019-9-14 16:32 | 顯示全部樓層
很好,值得學習
回復

使用道具 舉報

ID:56665 發表于 2019-9-15 08:38 | 顯示全部樓層
誰分享一下RTX51
回復

使用道具 舉報

ID:281879 發表于 2019-9-15 11:57 | 顯示全部樓層
新手 來學習一下
回復

使用道具 舉報

ID:68814 發表于 2019-9-15 16:01 | 顯示全部樓層

百度資料非常多吧
回復

使用道具 舉報

ID:371527 發表于 2019-9-26 11:34 | 顯示全部樓層
謝謝!我調試一下看看效果
回復

使用道具 舉報

ID:126541 發表于 2020-3-1 22:15 | 顯示全部樓層
沒有關系,,tick周期是你定的,,和MCU快慢沒關系,無論12T還是1T,,你都定的10ms,,,沒區別
回復

使用道具 舉報

ID:745758 發表于 2020-5-17 00:16 來自觸屏版 | 顯示全部樓層
55400怎么來的?
回復

使用道具 舉報

ID:82570 發表于 2020-7-20 14:03 | 顯示全部樓層

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

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

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表