本帖最后由 李牧林 于 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 的情况下测试的。
|