人人范文网 范文大全

实时操作系统报告

发布时间:2020-03-01 23:29:27 来源:范文大全 收藏本文 下载本文 手机版

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

专业:通信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实时操作系统习题总结

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

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

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

嵌入式实时操作系统(dynaLinux),及其开发平台(精)

操作系统调研报告

操作系统课程设计报告

操作系统课程设计报告

操作系统课程设计报告

操作系统实习报告样本

实时操作系统报告
《实时操作系统报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档