《一个音响系统基于经典51嵌入式软件系统结构和实现方法.docVIP

《一个音响系统基于经典51嵌入式软件系统结构和实现方法.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《一个音响系统基于经典51嵌入式软件系统结构和实现方法

模块开发文件夹 工程项目名称 MC-55 模块名称 main 版本号 1.0 程序员姓名 完成日期 修改日期 源程序行数 目标代码长度(字节) 模块类型 GENERAL BIOS SYSTEM 最大执行时间(指令周期) 模块简要描述 主要功能:1、对系统及各模块的驱动程序进行初始化。 2、分时循环检测各种事件。 开发起止时间表 预计起止时间 实际起止时间 设计 编码 单元测试 集成测试 模块详细设计结果描述 基本原理 该系统是由TUNER、LOGIC DECT、CD、VFD、PANEL KEY、REMOTE HANDSET等多任务组成,按照“合理、易写、易读、易用”的原则,采用了分时处理的解决方案。 建立以2ms为时基的计时程序(TimerBios.asm)。该程序是系统正常运行的基石,它不仅提供各时间段的产生标志,同时也为计时系统提供计时 (CLOCK) 时基,因此计数的准确与否决定了系统事件执行的准确性以及计时系统的准确度。 。事件发生器。 程序中的字节变量TCounter每2ms累加一次,根据记数结果,可产生从4ms、8ms、16ms、32ms、64ms、128ms、256ms、512ms等八个时间段,如16ms时间段可通过变量Tcounter的Bit2判断,Bit2由0变为1是每16ms出现一次,此时改变字节变量OS_FETCH_EVENT的值,作为系统程序Main()中判断各时间段的依据。在附录中附有任意500ms中的事件表。 。提供秒计数及分钟计数标记,设定字节变量ClockSec为时钟的秒计数,为便于计算,特引入变量SECCOUNTER,在8ms事件中,变量SECCOUNTER累加一次。根据系统结构可知,当变量Tcounter为0时,将不产生任何事件,此段时间即用作时钟的底层处理。即每512ms检测变量SECCOUNTER是否大于125(125*8ms=1s),如符合条件,将变量 ClockSec累加一次,计数范围为 0 ~ 59。当ClockSec59时,设定分钟计数标志位FsecOver,指示分钟计数需累加一次,同时ClockSec清零。 当系统加电启动或系统通过软、硬件复位后,在Main()模块中,首先进行系统初始化,对某些程序进行初始化,之后进入分时处理的循环中,在不同时间段对不同模块进行相应处理。 通常情况下,由于系统软件的架构限制,对于每个时间段的事件,其执行时间不能超过2ms,且在对每一时间段的事件处理结束之后,均需要清除变量OS_FETCH_EVENT的值,以保证在此时间段,事件只处理一次。但在实际情况中,因为特殊原因,某一时间段的处理时间有可能超过2ms,并且有可能出现始终在该事件处理程序中循环,无法进行其它处理的现象,程序Event_Cancel()可极大地改善上述情况,一方面可将事件的处理时间由2ms提高到小于4ms,另一方面可保证某一事件处理之后,不论是否超过时间限制,均可退出该事件处理,从而可进行其他事件的处理。 源程序清单 TimerBios Timerbios.inc ;;;FOR TIMER1, 2ms, 12.072MHz PUBLIC OS_FETCH_EVENT,CLOCKSEC,TCounter,FSECOVER EXTRN BIT(FKEYVALID,FKEYERROR,FDOORENABLE) ;EXTRN DATA(DISPFLAG); KEY_RESPOND EQU P3.3 KEY_ERROR EQU P3.1 DOOR_DET EQU P3.0 ?PR?TIMER?MAIN SEGMENT CODE ?DT?TIMER?MAIN SEGMENT DATA ?BI?TIMER?MAIN SEGMENT BIT RSEG ?DT?TIMER?MAIN OS_FETCH_EVENT: DS 1 TCounter: DS 1 SECCOUNTER: DS 1 CLOCKSEC: DS 1 RSEG ?BI?TIMER?MAIN FSECOVER: DBIT 1 TIMERNO0 EQU 0BH TIMERNO1 EQU 1BH ET_ADDR EQU TIMERNO1; IF ET_ADDR=0BH ET_ENABLE EQU 0A9H ;0ABH IS FOR TIMER1 INTERRUPTER TI_CTRL EQU 8CH ; 8EH IS FOR TIME

文档评论(0)

lunwen1978 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档