单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 175|回复: 5
收起左侧

STC8单片机跑RTX51 OS 1T模式

[复制链接]
李牧林 发表于 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 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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 | 显示全部楼层

百度资料非常多吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表