电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 单片机 > 详细信息
单片机:基于RTX51的单片机软件设计
来源:   时间: 2008-2-19 6:53:09    
基于嵌入式WEB的AllLightSYS系统的设计 性能优异的芯片AT89C2051-24PI 纤维光学连接器名词术语 基于SNMP数据采集模块的设计和实现
 

  摘要:随着单片机应用的日益广泛,对它的软件开发效率要求越来越高,从汇编到C语言,然后过渡到了操作系统。MCS51作为单片机世界的长生不衰的主力军,应用于其上的RTX51得到了很大的发展,它硬件要求低,使用方便、灵活、因此越来越广泛地应用到单片机的软件开发之中。
   
  关键词:单片机C51RTX51
   
  1概述
   
  很多单片机的应用中都需要同时执行很多任务,对于这样的应用,我们可以利用实时操作系统来灵活地安排系统资源。RTX51是美国Keil公司开发的一种小型的应用于MCS51系列单片机的实时多任务操作系统,它可以工作所有8051单片机以及派生家族中,简化了复杂的软件设计,缩短了项目周期。我们实践中用RTX51来开发单片机软件。设计单片机控制的GPS接收板软件,取得了很好的效果。
   
  2RTX51介绍
   
  RTX51有2个模式:RTX51完全模式和最小模式。RTX51最小模式版是RTX51完全版的一个子集,可以很容易地运行在8051系统上,而不需要外部RAM(DXATA)。RTX51完全模式有4个任务优先级,可以和中断函数并行处理,各个任务之间通过使用“邮箱”系统来进行信号和消息的传递,可以从内存池中申请和释放内存;同时,可以强制一个任务停止执行,等待一个中断,或者是其它中断传来的信号量或者消息。RTX51对系统硬件的要求如表1所列。
   
  2.1RTX51任务
   
  RTX51区分2类任务:快速任务和标准任务。快速任务有很快的响应速度,每个快速任务使用8051一个单独的寄存器组,并且有自己的堆栈区域。RTX51支持最大同时有3个快速任务。标准任务需要多一点的时间来进行任务切换,因此使用的内部RAM相对快速任务要少,所有的标准任务共用1个寄存器组和堆栈。当任务切换的时候,当前任务的寄存器状态和堆栈内容转移到外部存储器中。RTX51支持最大16个标准任务。
   
  RTX51任务状态:
   
  ①运行(RUNNIGN)——当前正在运行的任务处于RUNNING状态,同一时间只有1个任务可以运行。
   
  ②就绪(READY)——等待运行的任务处于READY状态,在当前运行的任务退出运行状态后,就绪队列中优先级最高的任务进入到运行状态。
   
  ③阻塞(BLOCKED)——等待一个事件的任务处于BLOCKED状态,如果事件发生且优先级比正在运行的任务高,此任务进入运行状态;如果优先级比正在运行的任务低,此任务进入READY状态。
   
  ④删除(DELETED)——没有开始的任务处于删除状态。
   
  ⑤任务切换——RTX51包含一个事件驱动的任务切换机制,它能够按照任务的优先级进行切换,也就是抢占式多任务系统;另外还有一个可选的时间片轮转切换任务模式,在时间片轮转模式下,同级别的任务是按照时间片分别占用CPU的。RTX51任务有4个优先级:0、1、2可以分配给标准任务,优先级3是为快速任务保留的。每个任务都可以等待事件的发生,而并不增加系统的负担;任务可以等待消息、信号、中断、超时事件或者它们的组合。任务切换是按照一定规则进行的,包括:进入到“就绪”状态的优先级高的任务先执行;如果“就绪”状态的几个任务是同一个优先级,那么最先进入“就绪”状态的先执行。
   
  RTX51任务切换图。
   
  2.2RTX51事件
   
  ◇超时(timeout):挂起运行的任务指定数量的时间周期。
   
  ◇间隔(interval):类似于超时,但是软件定时器没有复位,典型应用是产生时钟。
   
  ◇信号(signal):用于任务内部同步协调。
   
  ◇消息(message):适用于RTX51Full,用于信息的交换。我们可以把一个消息交送到一个特定的邮箱。消息由2字节组成,可以是用户按照自己的需求定主的数据,也可以是指向数据的指针。如果邮箱的消息列表满,而且是中断发送消息,这个消息将会丢失;如果是任务发送消息,那么任务将会进入到等待状态,直到邮箱重新有了位置可以接收这一条消息。邮箱是按照FIFO的原则来管理消息的,如果几个任务都在等待接收消息,那么最先进入等待接收队列的将接收消息。一个邮箱最多可以存储8条消息。当邮箱满的时候,最多只能有16个等待任务。
   
  ◇中断(interrup):适用于RTX51Full,信号量用于管理共享的系统资源。通过使用“令牌”,允许在同一时刻只有一个任务使用某些资源。如果几个任务申请访问同一个资源,那么首先提出申请的将允许访问,其它的任务进入等待队列,直到第1个任务操作完毕,下一个任务才能继续。
   
  Os_wait()函数挂起一个任务来等待一个事件的发生。这样可以同步2个或几个任务。它的工作过程如下:当任务等待的事件没有发生的时候,系统挂起这个任务;当事件发生时,系统根据任务切换规则切换任务。
     
  2.3RTX51中断处理
   
  RTX51完全模式提供2种方法来处理中断:一种是C51的中断函数,另一种是RTX51的断。它又可以分为快速任务中断和标准任务中断。对于中断函数这种方法,它同时也可以在不使用RTX51的情况下使用,当中断发生的时候,程序就跳到了相应的中断函数,它和正在运行的任务是互相独立的,中断的处理是在RTX51系统之外,和任务切换规则没有关联。对于任务中断的方法,不管使用快速是标准任务来处理中断,如果中断发生,等待中断的任务就从“等待”状态进入到就绪状态,并按照任务切换规则进行切换。这种中断处理是完全集成在RTX51的内部,硬件中断事件的处理和信号、信息的处理是完全相同的。在系统响应中断使能寄存器,这样才能遵守任务的切换规则并保证中断程序的无误进行。必须注意中断使能寄存器是由RTX51完全控制的,禁止用户手动的修改。
   
  3应用实例
 
  以下给出RTX51在单片机控制的GPS接收板上的应用。
   
  (1)系统硬件组成
   
  单片机W77E58,快速8051内核、32KBROM、1KB的XDATARAM,符合使用RTX51的硬件要求;键盘、GPS定位模块、液晶显示模块。
   
  (2)系统软件构成
   
  软件运行环境KEILuVision26.20集成开发环境加上RTX51完成版。任务KEY-BOARD,监测键盘的情况,如果有按键按下,把按键的编码发更新到邮箱1,外部中断1等待接收GPS数据,并把数据存储起来,向DISPLAY任务发出信号。任务DISPLAY根据接收到的不同的信号和消息,进行处理。任务SEND-OUT,把接收到的数据进行处理,并发送出去。任务VOICE进行语音输出。

  系统硬件、软件结构。

  下面给出简写的源程序:

  #include<RTX51.h>//包含RTX51头文件
  #defineDISPLAY0
  #defineSEND_OUT1
  #defineKEY_BOARD2
  #defineVOICE3
  voidmain(void)
  {initsystem();//系统初始化
  osstartsystem(DISPLAY);//启动
  RTX51
  }
  voidtask0(void)_task_DISPLAY
  {os_set_slice(1000);//
  设置时间片大小
  os_enable_isr(0);//允许外部中断0
  os_creat_task(SEND_OUT);//启动SEND_OUT任务
  os_creat_task(VOICE);//启动VOICE任务
  for(;;){
  switch(os_wait(K_SIG+K_MBX+1,255,&keyboard))//
  等待接收信号和键盘消息,分类处理
  {display1();break;
  caseEVENT_MBOX;//当从邮箱接收到数据的时候switch(keyboard)
  {case'1';
  …
  os_send_signal(SEND_OUT);//向任务SEND_OUT发送信号
  …
  os_send_signal(VOICE);}//向任务VOICE发送信号
  …;}
  …;}
  }
  voidtask1(void)_task_SEND_OUT//
  处理发送数据任务
  {while(1)
  {os_wait(K_SIG,255,0)//
  等待信号
  operation_send();
  }
  voidtask3(void)_task_VOICE
  {while(1){
  os_wait_signal(K_SIG,255,0);//
  等待语音处理信号
  voice();}
  }
  voidinterrupt(void)interrupt2using1
  {read_gps_data(p_gps_data);//
  接收数据
  isr_send_signal(DISPLAY);//向DISPLAY任务发信号
  }
  #pragmaREGISTERBANK(2)//
  使用寄存器组2
  voidtask2(void)_task_KEYBOARSD_priority_3//
  设置为快速任务
  {os_attach_interrupt(0);//绑定任务和外部中断
  0
  while(1){
  os_wait(K_INT,255,0);//
  等待中断的发生
  KEY=iic_read_keyboard();
  os_send_message(1,KEY,0);}//
  将键盘编码发送到邮箱1
  }
   
  4结论
   
  通过实践我们可以发现,使用RTX51开发单片机程序更加方便了。尤其是较大的程序,避免了自己写消息循环等繁琐工作,效率明显增加了。在硬件资源足够的情况下,效果更加明显。

相关信息
发表评论
打印本页 关闭本页
基于8051单片机的频率测量技术
  引言   随着无线电技术的发展与普及,"频率"已经成为广大群众所熟悉的物理量。而单片机的出现,更是对包括测频在内的各种测量技术带来了许多重大的飞跃,然而,小体积、价廉、功能强等优势也在电子领域占有非常重要的地位。为此.本文给出了一种以单片机为核心的频率测量系统的设计方法。 1 测频系统的硬件结构   测量频率的方法一般分为无源测频法、有源测频法及电子计数法三种...
>>详细内容
关于C8051F021的定位和报警移动终端设计
    C8051F021是美国Cygnal公司生产的单片机。具有双串口、低功耗、高速度等优点。本文以GSM的数据业务,设计一种具有报警和定位的移动终端,并介绍该终端的结构框图、工作原理以及I/O配置和初始化程序。   引言   GSM网是目前移动通信体制中最成熟、最完善、应用最广的一种系统。数据业务作为GSM网络的一种基本业务,已得到越来越多的系统运营商和开发商的重视,基于这种业务的各...
>>详细内容
基于SHARC DSP与SJA1000的CAN总线接口设计
  引言   当前,有一些微处理器将CAN控制器嵌入到系统之中,但是仍有大量人们比较熟悉的微处理器并不带有CAN控制器。采用微处理器和CAN控制器组合的设计成为必要,而且,CAN控制器具有完成CAN总线通信协议所要求的全部必要功能,因此,CAN控制器与其它微处理器的接口设计成为设计CAN总线系统的首要工作。本文重点介绍以SHARC DSP为核心的、基于SJA1000的CAN总线接口设计。   SJA1000...
>>详细内容
基于W77E58单片机的通用GSM无线传真终端实现
  摘要 无线传真作为GSM的一项基本电信业务,对于经常移动办公的人,是一种非常有用的业务。本文详细阐述了如何利用W77E58单片机和GSM无线模块Q2403A构成GSM无线传真终端设备的硬件实现方案,研究并设计出适用于GSM无线信道的传真通信规程,从而进一步给出了如何应用该规程在终端设备上实现单页传真发送的软件设计方案。 关键词 无线传真 单片机 W77E58 GSM模块 Q2403A 传真通信规程 1 引...
>>详细内容
Silicon Laboratories推出C8051F336系列高整合8位微控制器
    Silicon Laboratories在美国波士顿举行的嵌入式系统研讨会 (Embedded Systems Conference) 发表C8051F336系列高整合8位微控制器,进一步扩大其领先业界的小型微控制器产品阵容。F336系列的接脚与Silicon Laboratories C8051F330系列完全兼容,但程序存储空间增至16kB。F336系列拥有更多闪存、高效能外围和在各种条件下均可发挥最佳效能的操作能力,设计人员很容易通过软件将产品升级...
>>详细内容
在嵌入FPGA的IP核8051上实现TCP/IP的设计
     0 引言   随着芯片规模的越来越大、资源的越来越丰富, 芯片的设计复杂度也大大增加。事实上, 在芯片设计完成后, 有时还需要根据情况改变一些控制, 这在使用过程中会经常遇到。这时候如果再对芯片设计进行改变将是很不可取的, 因为需要设计人员参与这种改变, 这无论是对设计者还是用户都是不能接受的。于是就有必要让这种可以改变的简单控制在芯片设计时就存在, 而且同时还应该...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com