新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 分时操作系统思想在单片机中的实现

分时操作系统思想在单片机中的实现

作者: 时间:2010-12-28 来源:网络 收藏

 2.作业流程

  为了能实现8路分时工作,最主要的工作是将这一过程细分成一个个作业。笔者通过设计把它分成8个作业,各作业的流程如图2所示。 以上每一作业返回后,“路”指针自动加1,到8后回到0,以保证分时工作合理。

分时操作系统思想在单片机编程中的实现

  3.几点技巧

  8路电话信息采集卡的编程中,为了使程序更精练,笔者应用以下3个技巧:

   ① 因为这8路的工作是相同的,程序可以共用,只须再构造1“路”地址表,每一表项含有本路的输入锁存器地址、输出锁存器地址、DTMF码存放RAM地址、计 时单元地址。这样可以省掉“路”调度表,因为各路相同作业的入口地址是相同的。根据“路”指针的不同,带入该“路”的地址表项,即可用相同的程序对8路分 别控制操作。

  ② 定时器中断设置成4ms一次,这是因为电话振铃是25Hz,检测脚保持低电平的时间为10ms,它是最低的计时值。当振铃检测脚低电平保持时间少于8ms 时可认为是干扰。每一路都有自己的计时单元,每次定时器中断后,在定时服务自程序中各路计时单元自动加1。在上一次作业中将计时单元请0,下一次作业读出 计时单元的值,延时值即为该值乘以4ms。这样任何延时都不占用CPU机时。

  ③ 串行数据的发送和接收是8路共有的操作,采用共同的模块。数据的链接是通过开辟缓冲区实现的,有发送缓冲区和接收缓冲区,采用4800baud的波特率。 一般程序的串行数据发送时,都须要检测TI位的变化来判断1字节数据发送是否完成,由此决定可否发下一字节数据。应用到分时系统是行不通的,这要占用 CPU机时,因为采用4800baud的波特率,则每一字节的发送时间少于4ms。当发送缓冲区有数据时,可在定时器中断服务自程序中发送。每一次定时中 断中发送1字节数据,当下一次定时中断来时,上一字节数据必定已发送完毕,可发送下一字节数据。无须检测TI位,也不占用CPU机时。数据接收采用串行中 断,接收到的数据存放到接收缓冲区供各路查询。

  结论

  将分时操作系统的思想引入系统,提出了一个针对多路检测控制的系统软件编程。大大减低了系统的设计成本,提高了系统的性能价格比,并在实际应用中获得成功。


上一页 1 2 3 下一页

关键词: 单片机

评论


相关推荐

技术专区

关闭