本帖最后由 李牧林 于 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 (47.31 KB, 下載次數: 78)
下載附件
2019-9-14 10:45 上傳
最后注意,本環境是在#define MAIN_Fosc 11059200L 的情況下測試的。
|