电工吧
◎ 电工吧 >> 设为首页 >> 加入收藏>> 联系方式 >> 投稿 >>留言 
网站首页 · 电工新闻 · 电工基础 · 电力技术 · 电子技术 · 电工图片 · 电工法规 · 电工图书 · 电工搜索 · 论坛交流
 
      最新电子论文
 · 开关电源设计知识介绍(中 
 · 印制电路板设计原则和抗干 
 · 电路设计常用软件介绍 
 · 各种滤波电路的比较 
 · 激光头维修的简便方法 
 · 回扫线现象全面剖析 
 · 线性NTC温度传感器使用指南 
 · 变压器的基本知识 
      推荐电子论文

 · 单片机初学者编程最简练的指导
 · 电力行业蓄电池容量测试方案
 · 定点dsp与浮点dsp的比较
 · 永不消逝的电波
 · 分时操作系统思想在单片机编程
 · PC机打印口与便携式数据采集系
 · 单线数字温度传感器的原理与应
 · 一个单片机串行数据采集,传输
 · PLD应用的方方面面
 · 一种纸币识别系统的设计

  ■ 所在位置:首页>>电子技术>>电子应用>>正文
 

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

  除了以上主程序的调度设计外,各个作业中共同的功能应放在中断中实现,主要是放在定时器中断。如计时功能应放在定时器定时中断中实现,定时参数的选择应考虑到系统各个作业中各种计时的要求,定时频率一般为最小计时频率的整数倍。任何软件延时都是不允许的。 实现分时控制的关键是在于合理地将系统的功能分解成各个作业模块。作业模块分得越细系统的实时性就越好。虽然单片机的时钟频率较低,在实际应用中当各个作业模块被细分成各个“动作”及简单的运算后,分时系统的实时性是能得到保证的。缺点就是各“路”的控制处理程序被分割得支离破碎,模块化得不到保证。

二、应用实例   

 1.系统硬件及工作原理

  宾馆用的视频点播系统VOD(Video On Demand)中,从各个机定盒送出的上行信号用DTMF码通过电话线传输到机房的主控制柜中的上行信号采集卡中。为了能同时接受多个用户的点播操作,上行信号采集卡必须有接受多路电话传输信息的功能,为此,笔者设计了8路电话采集卡,可同时接受8路用户的点播操作,系统硬件框图如图1所示。

按此在新窗口浏览图片
500){this.resized=true;this.style.width=500;}" vspace=10 border=0 resized="true">
  每路大致的主程序是:检测到振铃信号后(即为振铃检测脚变低并保持8ms以上),继电器吸合,同时马上给机定盒回一接通信号——#键(保持400ms)。然后等待机定盒发送点播信息:客房号、点播的节目号,共4位DTMF码;若1s内无DTMF码收到(收到表示为解码芯片的DV脚变高)表示操作有误,继电器断开,状态位复原,作业指针回0。收齐4位DTMF码后将其整理并带上该路的标志,转化成3字节送到串行发送缓冲区,在定时器中断服务程序中发送。等待视频服务器回送应答信息,根据应答信息不同向机定盒回送不同的信息;若超时无应答也向机定盒回送一码(发码时间都为100ms)。最后,继电器断开,状态标志复原,缓冲区清0,作业指针也回到0。一个过程完成。  

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

按此在新窗口浏览图片
500){this.resized=true;this.style.width=500;}" vspace=10 border=0 resized="true">
    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机时。数据接收采用串行中断,接收到的数据存放到接收缓冲区供各路查询。

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

本新闻共2页,当前在第2页  [1]  [2]  

 
         相关文章

 
 
  关于本站 | 友情站点 | 联系方式 | 版权声明 | 电工技术服务与支持中心
Copyright© 2005-2006 Dg8.Com.CN ,All Rights Reserved
电工网 电工吧 电子吧