打印
[51单片机]

关于RTX51操作系统使用问题!

[复制链接]
5002|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 mofanid 于 2015-1-2 22:51 编辑

小弟学习51单片机!尝试搞了一下RTX51操作系统,但是RTX51操作系统不能在单片机运行。
程序如下:
#include <REG51.h>
#include <rtx51tny.h>

void init(void) _task_ 0
{

os_create_task(1);
os_create_task(2);
        
os_delete_task(0);
}

void led1(void) _task_ 1
{
         while(1)
         {
         os_wait(K_SIG,1,0);
         P1=0x00;
         os_send_signal(2);
         }

}

void led2(void) _task_ 2
{
  while(1)
        {
        os_wait(K_SIG,2,0);
        P1=0xff;
        os_send_signal(1);
        }
}

要实现的功能是:让P1口上的8个LED灯,一亮一灭。LED灯是共阳极连接方式。用的是单片机是AT89S51,rtx51tny 这个选项,已经选择包含了!

现在的问题是:程序下载到单片机后,程序不运行。用软件调试功能:出现的情况是:
请高手指点!!






E:\88.png

相关帖子

沙发
ningling_21| | 2015-1-3 08:52 | 只看该作者
闪灯还用的着RTX51吗

使用特权

评论回复
板凳
as564335sa| | 2015-1-3 09:09 | 只看该作者
你这是完整程序?系统初始化呢?开总中断呢?不了解RTX51的机制就搞吗

使用特权

评论回复
地板
zhangcumt| | 2015-1-3 11:24 | 只看该作者
工程设置里面也要选择RTX-51 Tiny

使用特权

评论回复
5
mofanid|  楼主 | 2015-1-3 12:50 | 只看该作者
ningling_21 发表于 2015-1-3 08:52
闪灯还用的着RTX51吗

我是用来学习RTX51操作系统!

使用特权

评论回复
6
mofanid|  楼主 | 2015-1-3 12:51 | 只看该作者
zhangcumt 发表于 2015-1-3 11:24
工程设置里面也要选择RTX-51 Tiny

这个我选择了!谢谢你!

使用特权

评论回复
7
mofanid|  楼主 | 2015-1-3 12:54 | 只看该作者
as564335sa 发表于 2015-1-3 09:09
你这是完整程序?系统初始化呢?开总中断呢?不了解RTX51的机制就搞吗

这个是完整的程序。这个 void init(void) _task_ 0  就是初始化呀!你说的系统初始化指什么? 开总中断这个是怎么配置了呀?先谢谢了!!!

使用特权

评论回复
8
as564335sa| | 2015-1-3 13:18 | 只看该作者
mofanid 发表于 2015-1-3 12:54
这个是完整的程序。这个 void init(void) _task_ 0  就是初始化呀!你说的系统初始化指什么? 开总中断这 ...

先了解了解RTX51的怎么个运行机制再写吧,没啥难的,这东西自己研究研究,别做伸手党

使用特权

评论回复
9
as564335sa| | 2015-1-3 13:21 | 只看该作者
mofanid 发表于 2015-1-3 12:54
这个是完整的程序。这个 void init(void) _task_ 0  就是初始化呀!你说的系统初始化指什么? 开总中断这 ...

提示一下,RTX51使用定时器0作为时钟节拍

使用特权

评论回复
10
mcu5i51| | 2015-1-3 14:18 | 只看该作者
RTXTNY使用还是比较简单的,建议打开例程看看;
需要注意的是大多需要修改配置文件才能正常运行,时钟是按照标准51设置的,使用其他的芯片需要修改定时器补偿量才能很准,对切换时间不是很准的要求话可以忽略;配置文件是汇编的,至少需要一些基础才能看明白他在做什么,修改哪里;默认是按照256字节RAM设计的,芯片128的改下定义;
现在IDE中仿真一下,成功的话在写芯片,方便确认故障的地方

使用特权

评论回复
11
叶伤| | 2015-1-3 16:01 | 只看该作者
任务1和任务2同时等待信号,不知道你要从哪里传送数据到这两个任务。。。

任务流程:

任务1等待任务2发送信号然后发送信号给任务2;
任务2等待任务1发送信号然后发送信号给任务1。
这是个死结。

存折放在保险箱里,保险箱密码记在存折上。你解吧。

了解信号触发可以在task1里用
延时T_MOD然后发送信号到task2,task2接受到后改变灯状态。

使用特权

评论回复
12
叶伤| | 2015-1-3 16:04 | 只看该作者
/*
//------------ RTX ʾ�����:

//�жϵ�ʹ��:

void fast_int(void) interrupt 1
{
        isr_send_signed(5);//�������������5
}

void int_handle(void) _task_ 5
{
        os_wait(K_SIG,0,0);//�жϷ������
}

//�ź�����:RTX51��֧������\�ź�,ֻ�߱���Ϣ���ݻ���:

U8 par1;
void task1(void) _task_ 1
{
        par1 = 0xAB;//�����źŲ���,����
        os_send_signal(2);//�����źŸ�����2
        //---�����û�����
}

void task2(void) _task_ 2
{
        os_wait(K_SIG,0,0);//�ȴ��ź�
        switch(par1)//�������źŽ��д���
        {
                //�û�����
        }
}


//wait������������:
char os_wait (
  unsigned char event_sel,       //events to wait for
  unsigned char ticks,           //timer ticks to wait
  unsigned int dummy);           //unused argument
        ////K_IVL Wait for the interval specified by ticks.
        ////K_SIG Wait for a signal.
        ////K_TMO Wait for a time-out specified by ticks.

void os_switch_task(void);//ֱ���л�������

*/

使用特权

评论回复
13
叶伤| | 2015-1-3 16:05 | 只看该作者
这是我做的笔记,中文因为编码不符被和 谐了,希望对你有帮助。

使用特权

评论回复
14
ningling_21| | 2015-1-3 17:13 | 只看该作者
mofanid 发表于 2015-1-3 12:50
我是用来学习RTX51操作系统!

有一个汇编的文件有没加入工程?

使用特权

评论回复
15
ayb_ice| | 2015-1-4 08:45 | 只看该作者
修正成以下,
如果还有问题就是配置不对

void init(void) _task_ 0
{
        os_create_task(1);
        os_create_task(2);

        os_send_signal(1);

        os_delete_task(0);
}

void led1(void) _task_ 1
{
        while(1)
        {
                os_wait(K_SIG,0,0);
                P1=0x00;
                os_wait(K_TMO,50,0);
                os_send_signal(2);
        }

}

void led2(void) _task_ 2
{
        while(1)
        {
                os_wait(K_SIG,0,0);
                P1=0xff;
                os_wait(K_TMO,50,0);
                os_send_signal(1);
        }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝