实时操作系统报告_实时操作系统学习报告

其他范文 时间:2020-02-27 03:18:51 收藏本文下载本文
【www.daodoc.com - 其他范文】

实时操作系统报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实时操作系统学习报告”。

实时操作系统课程实验报告

专业:通信1001 学号:3100601025 姓名:陈治州

完成时间:2013年6月11日

实验 简易电饭煲的模拟

一.实验目的:

掌握在基于嵌入式实时操作系统µC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。

二.实验要求:

1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”;2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择;

3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间;

4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式;

5.按“X”退出系统,时间区域不显示。

6.煮饭时长为30,煮粥时长为50,煮面时长为40.三.实验设计:

1.设计思路:

以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。

本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。2.模块划分图:(1)界面显示:

Main()Taskstart()Taskstartdispinit()在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。(2)按键查询与响应:

Main()Taskstart()在TaskStart()函数中,用if(PC_GetKey(&key)== TRUE)判断是否有按键输入。然后根据key的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。(3)切换功能:

l计数“C”按键的次数M=l%3Switch(m)M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“ ”以“擦出”之前画下的“@”,注意l自增。

四.主要代码:

#include “stdio.h” #include “includes.h” #include “time.h” #include “dos.h” #include “sys/types.h” #include “stdlib.h” #define TASK_STK_SIZE

512

#define N_TASKS

OS_STK

TaskStk[N_TASKS][TASK_STK_SIZE];

OS_STK

TaskStartStk[TASK_STK_SIZE];

INT8U

TaskData[N_TASKS];

void Task0(void *pdata);

void TaskStart(void *pdata);

static void TaskStartDispInit(void);

void main(void){

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);

OSInit();

PC_DOSSaveReturn();

PC_VectSet(uCOS, OSCtxSw);

OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_STK_SIZE-1], 4);

OSStart();

} void TaskStart(void *pdata){ #if OS_CRITICAL_METHOD == 3

OS_CPU_SR cpu_sr;#endif

INT8U l,m;

INT16S key;

l=0;

pdata = pdata;

TaskStartDispInit();

OS_ENTER_CRITICAL();

PC_VectSet(0x08, OSTickISR);

PC_SetTickRate(OS_TICKS_PER_SEC);

OS_EXIT_CRITICAL();

OSStatInit();

for(;;){

if(PC_GetKey(&key)== TRUE)

{

switch(key)

{

case 0x1B:

PC_DOSReturn();

break;

case 0x43:

{ m=(l%3);

switch(m)

{ case 0: {

PC_DispStr(26,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;

case 1: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;case 2: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);}

break;}

l++;} break;

} } OSCtxSwCtr = 0;

OSTimeDlyHMSM(0, 0, 1, 0);

} } static void TaskStartDispInit(void){ PC_DispStr(0, 0, “

uC/OS-II, The Real-Time Kernel

”, DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);PC_DispStr(0, 1, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 2, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 3, “

dianfanbao shiyan

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 4, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 5, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 6, “

kai shi.zhu fan.zhu zhou.zhu mian.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 7, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 8, “

bao wen.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 9, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 10, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 11, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 12, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 13, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 14, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 15, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 16, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 17, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 18, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 19, “ 'S':kai ji.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 20, “ 'C':mo shi qie huan.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 21, “ 'B':kai shi zhi xin.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 22, “ 'Q':qu xiao dang qian gong zuo zhuang tai.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 23, “ 'X':tui chu xi tong.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);

PC_DispStr(0, 24, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);}

五.运行界面:

(1)主界面:

(2)显示北京时间:

(3)模式切换:

(4)倒计时:

(5)保温执行时间:

六.总结:

本次实验主要以老师所给的实验事例为基础,并结合老师课堂讲的内容,理解编写程序。做实验本实验前,先执行了一下事例程序,以此了解borlandc的一些基本操作;然后就是看懂每个实验的框架和主要部分;接着,将事例程序中的部分思想运用到本次实验中,其中以显示界面的思想运用的最多;除此以外,在模式切换上花了最大的精力,最终的解决方法是以变量l作为一个计数值,并运用switch语句在选择的模式上画上“@”,同时还得注意在未选择的模式上画上空格来“擦除”之前画上的@;在查询按键上,同样运用switch语句......这次实验收获不少,不仅对之前学的C语言有了更进一步的巩固,而且还强化了ucos里面的多任务的一些认识;同时,以前对DOS界面很陌生,但本次实验使用的正是DOS界面,通过几天的经历,对DOS中的编译、“help”等各个方面有了更深入的认识,不再害怕使用DOS了。

对本课程有很大的兴趣,在以后的课余时间里我会不断学习这些知识。

嵌入式Linux实时操作系统习题总结

第1章1.嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。嵌入式系统一般有3个主要的组成部分:硬件、实时操作系统以及应用软件。2.嵌入式系统的三要素是嵌入、专用......

嵌入式实时操作系统 项目开发总结报告

项目开发总结报告分 类:软件项目计划 使用者:E-fanciersVersion: 1.0项 目 承 担 队伍:烟台大学计算机学院 E-fanciers小组撰 写 人(签名): 许超 于歌 完 成 日 期: 2009-7-16 本文......

计算机实时操作系统的改善措施

《计算机实时操作系统的改善措施》摘要:实时系统在工业、商业和军事等领域都有非常广泛的用途,并且已经有很多实际的应用。一般来说,实时系统通常是比较复杂的,因为它必须处理很......

ucOS实时操作系统的应用和学习心得

uc/OS实时操作系统的应用和学习心得这是小弟我最近的研究成果,跟大家交流一下。 目前正在研究嵌入式实时软件系统设计方法,有兴趣的高手交流一下。这里给大家简单剖析一下uCOS......

提高实时操作系统的实时性能和可靠性策略

【导语】刀豆文库的会员“lgy98”为你整理了“提高实时操作系统的实时性能和可靠性策略”范文,希望对你的学习、工作有参考借鉴作用。对很多嵌入式系统来说,一个设计良好的实......

下载实时操作系统报告word格式文档
下载实时操作系统报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文