2022年SYSTEMC编写的内核嵌入式微型操作系统 .pdf
《2022年SYSTEMC编写的内核嵌入式微型操作系统 .pdf》由会员分享,可在线阅读,更多相关《2022年SYSTEMC编写的内核嵌入式微型操作系统 .pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、OPE Shanghai Software Specification V 0.1Progress File 1 系统结构1.系统架构本系统是采用分时处理的方式处理多个任务。各个组成模块能够在一定时间间隔内被循环调用,此结构的详细说明,请查阅文件MAIN.DOC.2.软件定时系统工作时用到许多定时,这些定时具有如下特征:从定时的时间长度来看:定时时间从数十毫秒到数十秒不等,但基本可以分为两种数量级:小于一秒和大于一秒。一般来说这些用于控制系统工作的定时器不需要严格精确(允许10%的误差)。从执行的顺序来看可分为同时执行和顺序执行两种,其中顺序执行的定时器的可共用。考虑到系统中运行的需要,特设定
2、3 个定时器可同时使用。21 系统所使用的虚拟定时器1 Timer8ms 以 8ms 为定时时基,即每8ms 递减一次(Timer8ms0),用于 1 秒以下的定时。主要应用:1)Key Hold 状态下,510step/sec定时操作。2)在进行Source 切换后,到进入Playing 状态前的几种状态转换的定时。2 Timer64ms 以 64ms 为定时时基,即每64ms 递减一次(Timer64ms0),用于 1 秒以上的定时。主要应用:改变系统设置的键值处理,如Volume 的显示延时及延时存储的定时。3 Timer128ms 以 128ms 为定时时基,即每128ms 递减一次(
3、Timer128ms0),用于 1 秒以上的定时,用在可能会与 Timer64ms 有冲突的定时。主要应用:各模式下的状态处理及键值处理。如Radio 模式下,在自动搜索电台时设置30 秒的定时。3系统工作模式3.1定义系统软件的工作始终在各种模式之间切换。系统使用一个16 位的字变量(WorkMode)控制各种工作模式。为方便计算及简化处理,特将该变量的类型设计为union,其具体定义如下:typedef union Word W;Byte B2;WordChar;WordChar OS;/can never be changed,MEMO#define WorkMode OS.W#defi
4、ne Source OS.B0#define Mode OS.B1 为了使软件逻辑上的处理更加方便,对 WorkMode 的取值范围根据不同的工作模式设计了一些规则,在以后的软件维护和升级时,可以在符合这些规则的前提下,增加新的工作模式定义。这些规则的基本思路是:1、使用某些特定的位定义基本工作模式2、在特定的基本工作模式下,定义可多达256(1 个字节)种子工作模式。3、在特定的基本工作模式下,子工作模式是唯一的。不同的基本工作模式下,子工作模式的取值可以相同。4、通过简单的逻辑与、或就可以进行如上的处理。为此,定义如下名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 18 页
5、-OPE Shanghai Software Specification V 0.1Progress File 2#define SYS_RADIO 0 x1000#define SYS_TAPE 0 x2000#define SYS_AUX 0 x4000#define SYS_CD 0 x8000#define SYS 0 x01ff/system common process 3.2逻辑操作根据上面的定义,当有按键操作并使基本工作模式改变时,通过调用函数InitWorkMode(),改变当前WorkMode的设置,根据键码重新定义成规定的值,比如从CD Mode 改变为Radio Mod
6、e,使用语句WorkMode=SYS_RADIO;并进行相应的初始化设置,即完成模式切换。模式切换以后即进入基本模式初始化的处理流程。各基本模式(如:RADIO,CD,TAPE 等等)的详细介绍,请查阅相关文件。函数InitWorkMode()的源程序如下:/*Name:InitWorkMode()*Input:Slide switch status or Keyboard value*Output:WorkMode*Function:When system reset or power on,initial the WorkMode according to*Slide switch sta
7、tus or Keyboard value.*BeCalled:Sys_Mode()-Power on*/static void InitWorkMode(unsigned char SourceKey)Power_On();LS188_RESET=0;CD_DOOR=0;Mute.byte1=0;Mute_Mode=1;FSource=0;/When success switching this flag is set to 1 VFD_All(CAll);DisplayEQ();FPower=1;/power on flag Timer8ms=T8ms_SOURCE_POWER_EN;/W
8、AIT 150MS Mode=IDLE;Tuner_Off();switch(SourceKey)case IDLE:Source&=Source_SYS;break;case K_TAPE:Source=Source_TAPE;Source_LED=LED_Tape;break;case K_CD:if(FDoorOpen)FDoorOpen=0;Door_Operation();名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 18 页 -OPE Shanghai Software Specification V 0.1Progress File 3 Door_Mode=5;F
9、DispDoor=0;case K_OPEN:Source=Source_CD;Source_LED=LED_CD;break;default:Source=Source_RADIO;Source_LED=LED_Tuner;break;CD_Off();3.3软件模式切换示意图实际的系统中开机过程、关电待机模式、测试模式以及基本模式切换的工作都在函数Sys_Mode()中处理.其源程序如下:/*Name:Sys_Mode()*/unsigned int code DISPEQ_LAB=Str_POP,Str_CLASSIC,Str_ROCK,Str_JAZZ,Str_FLAT;static
10、void Sys_Mode(void)unsigned char KeyTemp;#define DataTemp KeyTemp#define Position KeyTemp InsertPowerStandbyTunerCDTapeInitializtionPanel KeyRemoteCalKeyEventReturnkeyvalue&stateTimerClockSleepRECECHODemoSYS_Key&SYS_ModeVolumeMIC VolTest ModeOpen/Close keyCD keyPower Key(if previous mode is CD)Power
11、 Key CD Key Tunre Key Tunre Key Power Key(default)Tunre Key Tape Key Power KeyPower Key Tape Key Power Key(if the previous mode is Tape)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 18 页 -OPE Shanghai Software Specification V 0.1Progress File 4 if(!(Source&Source_SYS)|FV olume)return;switch(Mode)case SYS_TEST_MODE
12、1:VFD_All(DAll);Mode=(uchar)SYS_TEST_MODE2;/into SYS_TEST_MODE2 DisplayMode=0;break;case SYS_TEST_MODE3:if(VFD_Shift(Str_EPROM,Str_CLEARED)Mode=(uchar)SYS_POWER_OFF_PRE;break;case SYS_TEST_MODE4:if(!Timer128ms)Mode=(uchar)SYS_POWER_OFF_PRE;break;if(FTimer512ms)VFD_String(DIG4,Str_EPROM);else VFD_Str
13、ing(DIG4,Str_ERROR);break;case SYS_POWER_OFF_PRE:if(_testbit_(FDoorOpen)Door_Operation();FDispDoor=0;Door_Mode=5;if(FDispPower)if(Timer128ms)if(FTimer512ms)VFD_String(DIG4,Str_SLEEP);else VFD_All(CAllDigter);Counter256ms=0;break;if(VFD_Shift(Str_BYE,Str_BYE)FDispPower=0;Mode=(uchar)SYS_POWER_OFF;els
14、e if(Counter256ms=2)CD_Off();/delay 256ms after reset ls188 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 18 页 -OPE Shanghai Software Specification V 0.1Progress File 5 break;if(Timer8ms)break;if(_testbit_(FPower)/power off LS188_RESET=0;FDispPower=1;VFD_All(CAll);Counter256ms=0;else Mode=(uchar)SYS_POWER_OFF;brea
15、k;case SYS_POWER_OFF:DisplayMode=2;if(FDo_Init&!Timer8ms)FDo_Init=0;SYS_Init();if(Area3)Area=ReadByte(EEP_SYS_AREA);if(Area3)Area=0;WriteByte(Area,EEP_SYS_AREA);else WriteByte(Area,EEP_SYS_AREA);if(!FDoorMoveOK|tape_init_req)if(Timer128ms3)ClockHour=HourTemp;ClockMin=MinTemp;FClockSet=1;ClockSec=Tim
16、er128ms=ClockSec=0;FSecOver=0;if(Timer128ms)DisplayClock();else CLOCK_EXIT:ClockMode=0;if(!FClockSet|(Mode=(uchar)SYS_CLOCK_DISP)if(!FPower)Mode=(uchar)SYS_POWER_OFF;else Mode_Return();break;Mode=(uchar)SYS_CLOCK_DISP;Timer128ms=T128ms_5SEC;break;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 18 页 -OPE Shanghai Sof
17、tware Specification V 0.1Progress File 7 case SYS_TIMER_SET:DisplayTimer();if(!Timer128ms)VFD_All(CAll);if(!FPower)Mode=(uchar)SYS_POWER_OFF;else DisplayEQ();Mode_Return();break;case SYS_SLEEP_SET:if(!Timer128ms)Mode_Return();break;VFD_Segment(Seg_SLEEP,FSleep&FTimer512ms);DataTemp=SleepCounter;VFD_
18、All(CAllDigter);if(!SleepCounter)VFD_String(DIG2,Str_SLEEP);if(FTimer512ms)VFD_String(DIG7,Str_OFF);break;if(SleepCounter=100)VFD_Char(DIG3,1);DataTemp-=100;if(SleepCounter10)DataTemp+=100;VFD_Data(DIG4,DataTemp);VFD_String(DIG7,Str_MIN);/display MIN break;case SYS_EQ_SET:if(Timer128ms)if(FDispEQ)Po
19、sition=DIG5;if(EQ=EQ_CLASSIC)Position=DIG3;if(EQ=EQ_POP)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 18 页 -OPE Shanghai Software Specification V 0.1Progress File 8 Position=DIG6;VFD_String(Position,DISPEQ_LABEQ);else VFD_String(DIG3,Str_BASS);if(FBbs)VFD_String(DIG7,Str_ON);else VFD_String(DIG7,Str_OFF);else Save
20、EQ();Mode_Return();break;case SYS_DIM_SET:if(Timer128ms)if(DisplayMode!=2)VFD_String(DIG2,Str_DIM);if(!DisplayMode)VFD_String(DIG6,Str_HIGH);else VFD_String(DIG6,Str_LOW);else VFD_String(DIG3,Str_LED);VFD_String(DIG7,Str_OFF);else Mode_Return();break;case SYS_REC_READY:if(Timer128ms)VFD_All(CAllDigt
21、er);if(FError)if(HALF_SW)/no tape if(FTimer512ms)VFD_String(DIG3,Str_NO);VFD_String(DIG6,Str_TAPE);break;else 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 18 页 -OPE Shanghai Software Specification V 0.1Progress File 9 VFD_String(DIG4,Str_ERROR);break;if(Timer128msT128ms_3SEC)if(VFD_Shift(Str_TAPE,Str_PROTECTED)FE
22、rror=0;Timer128ms=0;else Timer128ms=2;break;if(FTimer512ms)Counter256ms=0;VFD_String(DIG4,Str_ERROR);break;if(HALF_SW)FError=1;Timer128ms=T128ms_5SEC;break;VFD_String(DIG3,Str_REC);VFD_Char(DIG7,Char_L_Play);VFD_Char(DIG9,Char_R_Play);if(FRecord)Mode=(uchar)SYS_REC_PLAY;FTimer256ms=0;FTimer2s=!FTape
23、_Direction;if(!FTimer256ms)VFD_Char(DIG7+(uchar)FTimer2s+(uchar)FTimer2s,Char_CLR);VFD_Segment(Seg_REC,FTimer512ms);else FError=0;Mode_Return();break;case SYS_REC_PLAY:if(!FRecord)Counter256ms=0;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 18 页 -OPE Shanghai Software Specification V 0.1Progress File 10 Mode=(ucha
24、r)SYS_REC_STOP;break;if(FDispREC)if(!Timer128ms)FDispREC=0;Counter256ms=0;Timer128ms=T128ms_5SEC;else if(VFD_Shift(Str_RECORDING,int_NULL)Timer128ms=0;Mode_Return();else Timer128ms=2;break;case SYS_REC_ON:VFD_All(CAllDigter);if(Timer128ms)VFD_String(DIG4,Str_REC);VFD_String(DIG8,Str_ON);else if(FPau
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年SYSTEM。C编写的内核嵌入式微型操作系统。 2022 SYSTEM 编写 内核 嵌入式 微型 操作系统
限制150内