欢迎来到天天文库
浏览记录
ID:12903596
大小:251.00 KB
页数:18页
时间:2018-07-19
《system。c_编写的51内核嵌入式微型操作系统。》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OPEShanghaiSoftwareSpecificationV0.1ProgressFile系统结构1.系统架构本系统是采用分时处理的方式处理多个任务。各个组成模块能够在一定时间间隔内被循环调用,此结构的详细说明,请查阅文件MAIN.DOC.2.软件定时系统工作时用到许多定时,这些定时具有如下特征:¨从定时的时间长度来看:定时时间从数十毫秒到数十秒不等,但基本可以分为两种数量级:小于一秒和大于一秒。¨一般来说这些用于控制系统工作的定时器不需要严格精确(允许10%的误差)。¨从执行的顺序来看可分为同时执行和顺序执行两种,其中
2、顺序执行的定时器的可共用。考虑到系统中运行的需要,特设定3个定时器可同时使用。2.1系统所使用的虚拟定时器1.Timer8ms以8ms为定时时基,即每8ms递减一次(Timer8ms>0),用于1秒以下的定时。主要应用:1)KeyHold状态下,5~10step/sec定时操作。2)在进行Source切换后,到进入Playing状态前的几种状态转换的定时。2.Timer64ms以64ms为定时时基,即每64ms递减一次(Timer64ms>0),用于1秒以上的定时。主要应用:改变系统设置的键值处理,如Volume的显示延时及延
3、时存储的定时。3.Timer128ms以128ms为定时时基,即每128ms递减一次(Timer128ms>0),用于1秒以上的定时,用在可能会与Timer64ms有冲突的定时。主要应用:各模式下的状态处理及键值处理。如Radio模式下,在自动搜索电台时设置30秒的定时。3系统工作模式3.1定义系统软件的工作始终在各种模式之间切换。系统使用一个16位的字变量(WorkMode)控制各种工作模式。为方便计算及简化处理,特将该变量的类型设计为union,其具体定义如下:typedefunion{WordW;ByteB[2];}Wo
4、rdChar;WordCharOS;//canneverbechanged,MEMO#defineWorkModeOS.W#defineSourceOS.B[0]#defineModeOS.B[1]为了使软件逻辑上的处理更加方便,对WorkMode的取值范围根据不同的工作模式设计了一些规则,在以后的软件维护和升级时,可以在符合这些规则的前提下,增加新的工作模式定义。这些规则的基本思路是:1、使用某些特定的位定义基本工作模式2、在特定的基本工作模式下,定义可多达256(1个字节)种子工作模式。3、在特定的基本工作模式下,子工作模
5、式是唯一的。不同的基本工作模式下,子工作模式的取值可以相同。4、通过简单的逻辑与、或就可以进行如上的处理。为此,定义如下18OPEShanghaiSoftwareSpecificationV0.1ProgressFile#defineSYS_RADIO0x1000#defineSYS_TAPE0x2000#defineSYS_AUX0x4000#defineSYS_CD0x8000#defineSYS0x01ff//systemcommonprocess1.1逻辑操作根据上面的定义,当有按键操作并使基本工作模式改变时,通过调用
6、函数InitWorkMode(),改变当前WorkMode的设置,根据键码重新定义成规定的值,比如从CD Mode改变为RadioMode,使用语句WorkMode=SYS_RADIO;并进行相应的初始化设置,即完成模式切换。模式切换以后即进入基本模式初始化的处理流程。各基本模式(如:RADIO,CD,TAPE等等)的详细介绍,,请查阅相关文件。函数InitWorkMode()的源程序如下:/******************************************Name:InitWorkMode()*Input:
7、SlideswitchstatusorKeyboardvalue*Output:WorkMode*Function:Whensystemresetorpoweron,initialtheWorkModeaccordingto*SlideswitchstatusorKeyboardvalue.*BeCalled:Sys_Mode()-Poweron*/staticvoidInitWorkMode(unsignedcharSourceKey){Power_On();LS188_RESET=0;CD_DOOR=0;Mute.byte
8、1=0;Mute_Mode=1;FSource=0;//Whensuccessswitchingthisflagissetto1VFD_All(CAll);DisplayEQ();FPower=1;//poweronflagTimer8ms=T8ms_SOURCE_POWER
此文档下载收益归作者所有