文档库 最新最全的文档下载
当前位置:文档库 › 嵌入式实验报告 IO口驱动实验

嵌入式实验报告 IO口驱动实验

嵌入式实验报告 IO口驱动实验
嵌入式实验报告 IO口驱动实验

实验七I/O口驱动实验

一、实验目的:

1、了解PXA270 微处理器GPIO 的功能

2 、熟悉PXA270 微处理器GPIO 驱动程序的编写方法

3、掌握驱动程序的加载过程和方法

二、实验环境(软件与硬件):

软件环境:VMware Workstation

硬件环境: pc机、arm机

三、实验过程和结果(包括编写的程序与结果,结果要截图)

第1步:利用vi编辑器,编写一个xsb_seg.c 驱动代码;

(1)增加驱动所需的头文件和变量

#include

#include

#include

#include

#include

MODULE_LICENSE("GPL");

char LED_MODULE=0;

#define DEVICE_NAME "xsb_seg"

#define SEG_CS1 0x10300000

#define SEG_CS2 0x10400000

static char LED[10]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7F, 0x6F};

unsigned long *CS1_Address, *CS2_Address;

struct seg

{

char LED1_Val;

char LED2_Val;

char LED3_Val;

char LED4_Val;

char negative;

};

(2)同时更新所有七段数码光驱动管显示函数

static void Updateled(struct seg *seg_7)

{

unsigned short buff=0x00;

buff=seg_7->LED1_Val;

buff=buff|( seg_7->LED2_Val <<8);

writew(buff,CS1_Address);

buff=0x00;

buff=seg_7->LED3_Val;

buff=buff|( seg_7->LED4_Val<<8);

writew(buff,CS2_Address);

return;

}

(3)写具体某位七段数码光驱动管显示函数

void value_seting(struct seg *seg_7, char position, char value) {

if (seg_7->negative==0)

value=~value & ~(0x1<<7);

else

value=(0x1<<7)|value;

if (position==1)

seg_7->LED1_Val=value;

else if(position==2)

seg_7->LED2_Val=value;

else if(position==3)

seg_7->LED3_Val=value;

else if(position==4)

seg_7->LED4_Val=value;

}

(4)实现七段数码光驱动写操作函数

static ssize_t XSB_Seg_write(struct file *file, const char *buffer, size_t count, loff_t * ppos)

{

int i;

struct seg *seg_7=file->private_data;

char led_forall[4];

printk(KERN_EMERG "The Module is written,XSB_Seg_write\n");

if(count!=4)

{

printk(KERN_EMERG "the count of input is not 4!!");

return 0;

}

if(copy_from_user(led_forall, buffer, 4))

{

for(i=1;i<=4;i++)

{

value_seting(seg_7, i, LED[led_forall[i-1]]);

}

Updateled( seg_7 );

}

return 0;

}

(5)实现七段数码管驱动IOCTL操作函数

static int XSB_Seg_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, unsigned long arg)

{

char val=0x00;

struct seg *seg_7=fp->private_data;

if (!arg)

return -EINVAL;

if (copy_from_user(&val, (int *)arg, sizeof(char)))

return -EFAULT;

switch(cmd){

case 1:

value_seting(seg_7, 1, val);

break;

case 2:

value_seting(seg_7, 2, val);

break;

case 3:

value_seting(seg_7, 3, val);

break;

case 4:

value_seting(seg_7, 4, val);

break;

case 0:

seg_7->negative = LED_MODULE;

break;

default:

printk(KERN_EMERG"ioctl parameter error,please input number 0-4");

break;

}

Updateled( seg_7 );

return 0;

}

(6)实现七段数码管驱动打开操作函数

static int XSB_Seg_open(struct inode *inode, struct file *filp)

{

struct seg *seg_7;

printk(KERN_EMERG "The Module is open,XSB_Seg_open\n");

seg_7=kmalloc(sizeof(struct seg), GFP_KERNEL);

filp->private_data=seg_7;

return 0;

}

(7)实现七段数码管驱动释放函数

static int XSB_Seg_release(struct inode *inode, struct file *filp) {

printk(KERN_EMERG "The Module is release,XSB_Seg_release\n");

kfree(filp->private_data);

return 0;

}

(8)七段数码管驱动文件结构体定义

static struct file_operations Emdoor_fops = {

open: XSB_Seg_open,

write: XSB_Seg_write,

release:XSB_Seg_release,

ioctl: XSB_Seg_ioctl,

owner: THIS_MODULE,

};

(9)实现七段数码管驱动初始化函数

static int __init XSB_Seg_init(void)

{

int ret;

printk(KERN_EMERG "The Module is Init,XSB_Seg_init\n");

CS1_Address=ioremap(SEG_CS1, 4);

CS2_Address=ioremap(SEG_CS2, 4);

ret = register_chrdev(61, DEVICE_NAME, &Emdoor_fops);

if (ret < 0) {

printk(DEVICE_NAME " can't get major number\n");

return ret;

}

return 0;

}

(9)实现七段数码管驱动模块退出函数与模块描述

static void __exit XSB_Seg_exit(void)

{

printk(KERN_EMERG "The Module is Exit,XSB_Seg_exit\n");

iounmap(CS1_Address);

iounmap(CS2_Address);

unregister_chrdev(61, DEVICE_NAME);

}

module_init(XSB_Seg_init);

module_exit(XSB_Seg_exit);

MODULE_AUTHOR("Ben.li, ben.li@https://www.wendangku.net/doc/1514803759.html,");

MODULE_DESCRIPTION("This is a 8 Segment Led driver demo");

第2步:利用vi编辑器,编写一个用于编译xsb_seg.c驱动架构Makefile文件;# Makefile for the 8Segment_Led Driver. #

CFLAGS +=$(DEBFLAGS) -Wall

ifneq ($(KERNELRELEASE),)

obj-m :=xsb_seg.o

else

KERNELDIR ?=/root/work/linux-2.6.22.10

PWD :=$(shell pwd)

ALL:

$(MAKE) $(CFLAGS) -C $(KERNELDIR) M=$(PWD) modules

endif

clean:

rm –fr *.o *.ko *~ core .depend .*.cmd *.mod.c .tmp_versions

第3步:运行make编译命令,用ls命令查看编译后的结果,在该目录中应生成xsb_seg.ko模块文件,利用file命令查看xsb_seg.ko文件的格式,应为ARM 格式的ELF文件。

第4步:利用vi编辑器在test目录下编译测试驱动的seg_test.c源文件。/************************************************

*************************************************/

#include

#include

#include

#include

typedef unsigned char u8;

#define SEG_DEV "/dev/xsb_seg"

char number[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7F, 0x6F};

void clear_led(int fd)

{

int i;

char val=0;

for(i=1;i<=4;i++)

ioctl(fd, i, &val);

sleep(1);

}

void display_led(int fd)

{

int i;

char val=0x7f;

for(i=1;i<=4;i++)

ioctl(fd, i, &val);

sleep(1);

}

void appear_same(int fd)

{

char i,j,base=0;

for (j=0, base=0 ;j<=9; j++, base++) { for(i=1; i<=4; i++)

ioctl(fd, i, number+base);

sleep(1);

}

}

void appear_roll(int fd)

{

char i, j, base=0;

for (j=0, base=0; j<=9; j++, base++) {

for(i=1; i<=4; i++)

ioctl(fd, i, number+(base+i-1)%10);

sleep(1);

}

}

void display_menu()

{

printf(" *****Choice Menu*********\n");

printf(" [0] Open Device\n");

printf(" [1] Display Same\n");

printf(" [2] Roll Display\n");

printf(" [3] All Display\n");

printf(" [4] Clear Display\n");

printf(" [5] Write Display\n");

printf(" [C] Close Device\n");

printf(" [x] Exit Test\n");

printf(" ***********************\n");

printf(" Please input your choise: ");

}

int main(int argc, char **argv)

{

int fd=-1;

char ch=0x00;

unsigned char led[4]={2,0,0,8};

display_menu();

while(1) {

ch=getchar();

switch(ch)

{

case'0':

if(fd>0)

printf("##SEG Device has been open##%d \n",fd);

else {

fd = open(SEG_DEV, O_RDWR);

if(fd < 0)

printf("####SEG Device open Fail####\n");

else

printf("####SEG Device open Success####%d \n",fd);

}

display_menu();

break;

case'1':

if(fd>0) {

appear_same(fd);

clear_led(fd);

}

else

printf("##SEG Device is NOT open## \n");

display_menu();

break;

case'2':

if(fd>0) {

appear_roll(fd);

clear_led(fd);

}

else

printf("##SEG Device is NOT open## \n");

display_menu();

break;

case'3':

if(fd>0)

display_led(fd);

else

printf("##SEG Device is NOT open## \n");

display_menu();

break;

case'4':

if(fd>0)

clear_led(fd);

else

printf("##SEG Device is NOT open## \n");

display_menu();

break;

case'5':

if(fd>0)

write(fd,led,4);

else

printf("##SEG Device is NOT open## \n");

display_menu();

break;

case'c':

case'C':

if(fd>0){

clear_led(fd);

sleep(1);

close(fd);

printf("##SEG Device is closed success## \n");

fd=-1;

}

display_menu();

break;

case'x':

case'X':

if(fd>0) {

clear_led(fd);

sleep(1);

close(fd);

}

exit(0);

break;

}

}

return(0);

}

第5步:利用vi编辑器,编写一个用于编译seg_test.c的Makefile文件;其中CC = /opt/arm-linux/bin/arm-linux-gcc为交叉编译工具所在的路径位置,INCLUDEDIR = / opt /arm-linux/arm-linux/include为头文件所在的路径

CC = /opt/arm-linux/bin/arm-linux-gcc

INCLUDEDIR = /opt/arm-linux/arm-linux/include

CFLAGS = -I.. -I$(INCLUDEDIR)

TARGET_TEST=seg_test

OBJ_TEST = $(TARGET_TEST)

SOURCE_TEST = $(TARGET_TEST).c

ALL:

$(CC) $(CFLAGS) -o $(OBJ_TEST) $(SOURCE_TEST)

clean:

rm -rf $(OBJ_TEST)

第6步:运行make命令对seg_test.c源代码进行编译,用ls命令查看编译后的结果,利用file命令查看seg_test文件的格式,应为ARM格式的ELF文件。

第7步:在Linux操作系统下输入minicom,配置串口参数,然后打开EELiod 目标平台电源,平台启动后,按CTRL+A,然后按Z,启动串口命令界面,按S 键,选择zmodem传输方式;按回车

第8步:选择PC平台中驱动模块文件xsb_seg.ko和驱动测试文件seg_test,并按回车键。下载选中的文件,文件下载完毕后按ESC键,退出串口传输,返回目标平台界面。

第9步:在目标平台终端利用mknod命令建立设备文件节点;并利用insmod命令动态加载驱动模块,同时利用lsmod命令查看驱动模块的加载情况,

第10步:在目标平台终端运行八段数码驱动测试程序seg_test,在平台终端将显示驱动测试程序菜单。

第11步:在平台终端显示驱动测试程序菜单输入提示输入数字“0”。驱动测试程序将通过open函数打开设备文件,同时内核调用驱动程序的xxx_open函数,在平台终端可以查看驱动和测试程序调试输出信息。

第12步:在平台终端显示驱动测试程序菜单输入提示分别输入数字“1”、“2”、“3”、“4”,查看平台4个7段数码管的显示情况,并分析测试程序通过调用什么函数与驱动进行通信?

第13步:在平台终端显示驱动测试程序菜单输入提示分别输入数字“5”、查看

平台4个7段数码管的显示情况,并分析测试程序通过调用什么函数与驱动进行通信?

第14步:在平台终端显示驱动测试程序菜单输入提示分别英文字符“C”或“c”,然后再输入“1~5”任何数字,查看测试程序的输出情况,并分析测试程序通过调用什么函数与驱动进行通信?

第15步:在平台终端显示驱动测试程序菜单输入提示分别英文字符“X”或“x”,退出测试程序。

第16步:在平台终端输入dmesg命令,查看驱动程序在加载和测试过程中输出消息,并分析驱动代码,查看输出信息。

四、实验总结

在做本次实验过程中,遇到很多问题,例如是pc机跟XSBase270实验开发箱的连接问题,把bootloader烧写到实验箱等等问题,在同学或网上找资料的帮助下,一步一步的把问题慢慢的解决,从而成功的把本次实验做好。

软件测试实验报告96812

实验一:软件测试方法 一:实验题目 采用白盒测试技术和黑盒测试技术对给出的案例进行测试 二:试验目的 本次实验的目的是采用软件测试中的白盒测试技术和黑盒测试技术对给出的案例进行测试用例设计。从而巩固所学的软件测试知识,对软件测试有更深层的理解。 三:实验设备 个人PC机(装有数据库和集成开发环境软件) 四:实验内容 1):为以下流程图所示的程序段设计一组测,分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。并在各题下面写出测试用例、覆盖路径及结果等。 2):画出下列代码相应的程序流程图,并采用基本路径测试方法为以下程序段设计测试用例(需列出具体实验步骤)。 void Do (int X,int A,int B) { 1 if ( (A>1)&&(B==0) ) 2 X = X/A; 3 if ( (A==2)||(X>1) ) 4 X = X+1;

5 } 采用基本路经测试方法测试用例,并写出具体步骤 3):在某网站申请免费信箱时,要求用户必须输入用户名、密码及确认密码,对每一项输入条件的要求如下: 用户名:要求为4位以上,16位以下,使用英文字母、数字、“-”、“_”,并且首字符必须为字母或数字; 密码:要求为6~16位之间,只能使用英文字母、数字以及“-”、“_”,并且区分大小写。测试以上用例。 用所学的语言进行编码,然后进行等价类测试,当用户名和密码正确输入时提示注册成功;当错误输入时,显示不同的错误提示 通过分析测试用例以及最后得到的测试用例表分析所测程序的正确性,最后总结自己在这次试验中的收获并写出自己在这次试验中的心得体会。 五:实验步骤 1) (1)用语句覆盖方法进行测试 语句覆盖的基本思想是设计若干测试用例,运行被测程序,使程序中每个可执行语句至少被执行一次。由流程图可知该程序有四条不同的路径: P1:A-B-D P2:A-B-E P3:A-C-F P4:A-C-G 由于p1p2p4包含了所有可执行的语句,按照语句覆盖的测试用力设计原则,设计测试用例 无法检测出逻辑错误 (2)用判定覆盖方法进行测试 判定覆盖的基本思想是设计若干测试用例,运行被测程序,使得程序每个判断的取真和取假分支至少各执行一次,即判断条件真假均被满足。 条件覆盖测试用例 (3)用条件覆盖进行测试 条件覆盖的基本思想是设计若干测试用例,执行被测程序后要使每个判断中每个条件的可能取值至少满足一次。对于第一个判定条件A,可以分割如下: ?条件x>8:取真时为T1,取假时为F1;

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

测量反应时的实验报告

实验报告——反应时的测量 一、摘要:本次试验的目的就是学习视觉简单反应时、选择反应时与辨别反应时的测定方法以及仪器的使用、材料的整理计算,并比较三种反应时的时间差异以及探讨影响反应时的因素。通过计算比较发现,选择反应时最长,简单反应时最短。 二、关键词:简单反应时 三、引言 1、解释术语 简单反应时:一个反应仅对应于一个刺激,当一个刺激呈现时,就立即对其作 出反应,这种反应时间也成为A反应时间; 2、实验目的:通过反应时实验学习使用减法反应时法。 四、方法 1、被试:吉林化工学院,资源与环境工程学院,安全工程专业11360128,秦世瑞。 2、仪器:反应时测试仪器 3、实验过程 (1)准备工作:接通仪器电源,主试打开开关,选择简单反应时实验按钮,等到仪器左边第一个灯亮起的同时,告知被试实验开始,然后开始正式实验过程。 (2)练习操作:被试坐在仪器的正前方,用一根手指放在按压器上,当听到主试“开始”的信号时,被试集中注意,约两三秒钟后,刺激开始间隔出现。当被试瞧到主试要求给出反应的刺激颜色时,立即按压。当听到简单反应时完成的提示音时,按“打印”键打印数据。练习实验作2-3次。 (3) 正式实验: A、简单反应时 ①主试选择一种颜色,并且告诉被试,选择颜色---红色。然后被试按照练习操作步骤中的做法,只要一瞧到显示灯亮了就按按钮,如此反复做20次,然后打印出实验数据。

②当被试提前做出反应或者做出错误反应或者反应时间超过4秒时,仪器自动进行系统复位,重新进行实验。 ③一直做完20次后,仪器自动提示实验完毕。 B、选择反应时 ①这次实验主试不用选择颜色。被试按照练习操作步骤中的做法,只要一瞧到显示灯亮了就按与显示灯相对应颜色的按钮,如此反复做20次,然后打印出实验数据。 ②当被试提前做出反应或者做出错误反应或者反应时间超过4秒时,仪器自动进行系统复位,重新进行实验。 ③一直做完20次后,仪器自动提示实验完毕。 C、辨别反应时 ①主试选择一种颜色,并且告诉被试,选择颜色---红色。然后被试按照练习操作步骤中的做法,只要一瞧到显示灯就是红色就按按钮,其她颜色则不做操作。如此反复做20次,然后打印出实验数据。 ②当被试提前做出反应或者做出错误反应或者反应时间超过4秒时,仪器自动进行系统复位,重新进行实验。 ③一直做完20次后,仪器自动提示实验完毕。 五、实验结果 1、实验数据结果处理 被试简单反应时 (s)选择反应时 (s) 辨别反应时 (s) 1 0、4257 0、6527 0、5159 2 0、3594 0、6664 0、4129 3 0、4453 0、6467 0、4811 平均数/ / / 标准差/ / / 2、比较结果,分析实验 (1)不同实验之间反应时的差异

软件测试实验报告材料58877

标准实用 本科实验报告 课程名称:软件测试技术 实验项目:软件测试技术试验实验地点:实验楼211 专业班级:软件工程学号: 学生:戴超 指导教师:兰方鹏 2015年10月7 日

理工大学学生实验报告 学院名称计算机与软件学院专业班级软件工程实验成绩学生戴超学号实验日期2015.10. 课程名称软件测试实验题目实验一白盒测试方法 一、实验目的和要求 (1)熟练掌握白盒测试方法中的逻辑覆盖和路径覆盖方法。 (2)通过实验掌握逻辑覆盖测试的测试用例设计,掌握程序流图的绘制。 (3)运用所学理论,完成实验研究的基本训练过程。 二、实验容和原理 测试以下程序段 void dowork(int x,int y,int z) { (1)int k=0,j=0; (2)if((x>0)&&(z<10)) (3){ (4)k=x*y-1; (5)j=sqrt(k); (6)} (7)if((x==4)||(y>5)) (8)j=x*y+10; (9)j=j%3; (10)} 三、主要仪器设备 四、操作方法与实验步骤 说明:程序段中每行开头的数字(1-10)是对每条语句的编号。

A 画出程序的控制流图(用题中给出的语句编号表示)。 B 分别用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。 C 编写完整的C 程序(含输入和输出),使用你所设计的测试用例运行上述程序段。完整填写相应的测试用例表(语句覆盖测试用例表、判定覆盖测试用例表、条件覆盖测试用例表、判定/条件覆盖测试用例表、条件组合覆盖测试用例表、路径覆盖测试用例表、基本路径测试用例表) 流程图为: 开始 开始 k=0,j=0 (x>0)&&(z<1) k=x*y-1 j=sqrt(k) (x==4)||(y>5) j=x*y+10 j=j%3 结束 1 2 5 7 8 9

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 :安磊 班级:计科0901 学号: 0909090310 指导老师:宋虹

目录 课程设计容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------ 6 文件系统的层次结构和功能模块 --------------------- 6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录 -------------------------------------------------- 12

课程设计容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统核,它仅仅包含了任务调度,任务管理,时间管理,存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时核,并在这个核之上提供最基本的系统服务,如信号量,,消息队列,存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

反应时实验报告

减法反应时实验 鄢婷婷院芬新鋆国祥 【摘要】本实验通过荷兰心理学家F.C.唐德斯的研究结果,了解基本反应时的概念和测定方法,测量最基本的三种反应时,即简单、选择、辨别反应时。设计阶段反应时实验,运用唐德斯减法反应时原理进行计算。结果发现:每个被试的简单反应实验的总耗时比选择和辨别反应实验是总耗时都短;个体间存在差异。【关键词】简单反应时,选择反应时,辨别反应时,个体差异 1引言 反应时的研究是心理学研究中的一个传统课题。自19世纪中叶以来,反应时作为一个心理指标在个体差异的研究中有着重要的作用,它在智力测验、人格测验中常被定为必测项目。反应时的测量为推测不能直接观察到的心理过程打开了一个窗口。 反应时是指从刺激呈现到做出反应之间所经历的时间。一个完整的反应过程由五部分组成:(1)感受器将物理或化学刺激转化为神经冲动的时间;(2)神经冲动由感受器到大脑皮质的时间;(3)大脑皮质对信息进行加工的时间;(4)神经冲动由大脑皮质传至效应器的时间;(5)效应器做出反应的时间。 实验者可根据测试的目的,选择不同的测量项目。例如:要了解被试的选择反应所用的时间,就要测b反应时和c反应时。b反应时和c反应时的差就是被试的选择反应所花费的时间。如想知道被试辨别刺激的时间,就要测量他的a反应时和c反应时。本实验分为三个部分进行,第一部分测选择反应时,第二部分测辨别反应时,第三部分测简单反应时。 反应时,又称反应潜伏期(response latencies),是指个体从接受刺激作

用开始到开始做出外部反应之间的这段时间。它与我们通常听说的动作完成所需要的时间是有差别的。反应时间包括刺激引起感官的活动,神经的传递,大脑的加工活动及效应器官接受冲动做出反应等所耗费的时间,其中以大脑活动占时最多。反应时的研究并非始于心理学,其最早开始于天文学。1976年,英国格林尼治天文台长马斯基林在使用“眼耳”法观察星体经过望远镜中的铜线时发现其助手比他观察时间慢约半分钟。1823年德国天文学家贝塞尔和天文学家阿格兰德对此现象加以认真研究,确定了人差方程式。1850年赫尔姆霍茨成功地测定了蛙的运动神经传导速度约为26米/秒。而将反应时正式引入心理学领域的是唐德斯。他意识到可以利用反应时来测量各种心理活动所需的时间,并发展了三种反应时任务,后人将它们成为唐德斯反应时ABC。 减法反应时的原理是:安排两种大致相同的反应时作业,其中一种作业比另一种增加了一个认知要求,其余的则相同。那么,增加了的哪个信息加工阶段所需的时间即为这两种作业的反应时之差。唐得斯的减数法把反应分为三类,即A、B、C三种反应:第一类反应称A反应,又称简单反应。A反应一般只有一个刺激和一个反应,如被试对一个灯亮,作一个按键的反应。A反应是最简单的反应,也是复杂反应的成分或基本因素。唐得斯把简单反应时称为基线时间。第二类反应称为B反应,又称选择反应。它是复杂反应中的一种。在这类反应中,有二个或者二个以上的刺激和相当于刺激的反应数。每一个刺激都有它相应的反应。在这样的选择反应中,不仅要区别刺激信号,而且还要选择反应。因而在这样的反应中除了基线操作外,还包括了刺激辨认和反应选择的心理操作。根据减数法的逻辑,B反应时就等于基线时间加上刺激辨别时间和反应选择时间。第三类反应称为C反应,又称为辨别反应。它是另一种形式的复杂反应。C反应也有二个

软件测试实验报告

《软件测试技术》 ——实验报告 题目 _____实验一_ __ 指导教师薛曼玲 _ 实验日期 _11.4 专业 学生姓名 _ __ ____ 班级/学号 ____ 成绩 ________ ___ ____ _

一、实验目的 1.能熟练应用黑盒测试技术进行测试用例设计; 2.能对测试用例进行优化设计; 二、实验内容 题目一:电话号码问题 1.某城市电话号码由三部分组成。它们的名称和内容分别是: (1)地区码:空白或3位数字; (2)前缀:非'0'或'1'的3位数字; (3)后缀:4 位数字。 假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。 1.根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。 “一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个

程序要打印出信息, 说明这个三角形是三边不等的、是等腰的、还是等边的。” 题目三:日期问题 1.用决策表测试法测试以下程序:该程序有三个输入变量month、day、year (month 、day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004 年11月29日,则该程序的输出为2004年12月1日。 (1) 分析各种输入情况,列出为输入变量month 、day 、year 划分的有效等价类。 (2) 分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即列出所有的动作桩)。 (3) 根据(1) 和(2) ,画出简化后的决策表。 2.划分有效等价类 1)month变量有效等价类 M1:{month=4,6,9,11}M2:{month=1,3,5,7,8,10} M3:{month=12}M4:{month=2} 2)day变量的有效等价类 D1:{1<= day <= 26}D2:{day=27} D3:{day=28} D4:{day=29} D5:{day=30} D6:{day=31} 3)year变量有效等价类 Y1:{year是闰年} Y2:{year不是闰年} 3.列出所有动作桩

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

实验三单片机IO口控制实验

实验三单片机I/O口控制实验 一、实验目的 利用单片机的P1口作I/O口,学会利用P1口作为输入和输出口。 二、实验设备及器件 PC机一台 https://www.wendangku.net/doc/1514803759.html,单片机仿真器、编程器、实验仪三合一综合开发平台一台 三、实验内容 1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。 2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED亮,不按时LED灭)。 四、实验要求 学会使用单片机的P1口作为I/O口,如果有时间用户也可以利用P3口作I/O口来做该试验。 五、实验步骤 1.用导线把A2区的J61接口与D1区的J52接口相连。原理如图所示。 2.先编写一个延时程序。 3.将LED轮流亮的程序编写完整并使用TKStudy ICE仿真器调试运行。 4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连。原理如上图所示。 5.编写P1.7控制LED的程序,并调试运行。(按下K1看是否全亮) 6.A2区J61接口的P1.7与D1区的J54的SW1相连。然后再使用TKStudy ICE仿真器运行程序,查看结果。 六、实验预习要求 仔细阅读实验箱介绍中的各个接口内容,理解该实验的硬件结构。还可以先把程序编好,然后在Keil C51环境下进行软件仿真。

七、实验参考程序 程序1: ORG 0000H LJMP Main ORG 0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A SJMP MainLoop Delay: MOV R7, #0 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET END 程序2: ORG 0000H LJMP Main ORG 0100H Main: JB P1.7,SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

简单反应时实验报告

简单反应时实验报告 雷飞心理班20131340001 1.引言 从刺激呈现到做出反应之间所经历的时间称为反应时。反应时的研究是心理学研究中的一个传统课题。自19世纪中叶以来,反应时作为一个心理指标在个体差异的研究中有着重要的作用,它在智力测验、人格测验中常被定为必测项目。反应时的测量为推测不能直接观察到的心理过程打开了一个窗口。一个完整的反应过程由五部分组成:(1)感受器将物理或化学刺激转化为神经冲动的时间;(2)神经冲动由感受器到大脑皮质的时间;(3)大脑皮质对信息进行加工的时间;(4)神经冲动由大脑皮质传至效应器的时间;(5)效应器作出反应的时间。 本实验采用的是荷兰心理学家F.C.唐德斯的研究结果。测量最基本的三种反应时,即简单、选择、辨别反应时。唐德斯将它们分别命名为:a、b、c反应时。 三种反应时有如下关系: 简单反应时a简单 选择反应时b简单辨别刺激选择反应 辨别反应时c简单辨别刺激 实验者可根据测试的目的,选择不同的测量项目。例如:要了解被试的选择反应所用的时间,就要测他的b反应时和c反应时。b反应时和c反应时的差就是他选择反应所花费的时间。如想知道被试辨别刺激的时间,就要测量他的a反应时和c反应时。 2.方法 2.1被试 新乡医学院心理学系2013级心理班全体学生公21人,男8名,女13名,年龄19——22岁。 2.2仪器 计算机及PsyTech心理实验系统。 2.3程序 简单反应时(a反应时) 在测试中呈现的刺激和要求被试做出的反应都只有一个,且固定不变。本实验程序可测量视觉、听觉两种简单反应时。视觉的刺激为一绿圆,听觉的刺激为773Hz纯音。测量方式一样,被试均使用一号接口反应盒的绿键做反应。测30次,每次预备后间隔2秒呈现刺激。如果测试中被试在准备阶段有抢先现象,则该次结果无效,并由计算机剔除并警告抢码被试。另外以每5次呈现为一组,随机加入空白的探测刺激2秒,如有被试在此时抢码,则警告抢码被试,且本组实验将重新进行。最后以有效的结果均值为其简单反应时。 3.结果

单片机io口控制实验报告

单片机实验报告 实验名称:I/O口控制 姓名:张昊 学号:110404247 班级:通信2班 时间:2013.11.19 南京理工大学紫金学院电光系

一、实验目的 1、学习I/O口的使用。 2、学习延时子程序的编写和使用。 3、掌握单片机编程器的使用和芯片烧写方法。 二、实验原理 1、广告流水灯实验 (1)做单一灯的左移右移,八个发光二极管L1~L8分别接在单片机的P1.0~P1.7接口上,输出“0”的时候,发光二极管亮,开始时 P1.0->P1.1->P1.2->P1.3->...->P1.7->P1.6->...P1.0亮,重复循 环。 (2)系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。要求:P1.0对应着L1,P1.1对应 L2,……,P1.7对应着L8。 P1口广告流水灯实验原理图如下

程序设计流程:流程图如下 2、模拟开关实验 (1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开, L1熄火。 (2)系统板上硬件连线:把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上;把“单片机系统”A2区的P3.0端口用 导线连接到D1区的KEY1端口上; 实验原理图如下图

程序设计流程 二、实验内容 1、流水灯 #include sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7; unsigned char count=0; bit flag; void main() {

软件测试技术实验报告

《软件测试技术》 实验报告 河北工业大学计算机科学与软件学院 2017年9月

软件说明 电话号码问题 某城市电话号码由三部分组成。它们的名称和内容分别是:地区码:空白或三位数字; 前缀:非'0'或'1'的三位数字; 后缀:4位数字。 流程图 源代码 import java.awt.*; import java.awt.event.*; public class PhoneNumber extends Frame implements ActionListener{ /** * */ private static final long serialVersionUID = 1L;

private final String[] st = {"Name","Local","Prefix","Suffix"}; static int c_person=0; TextField t_name,t_local,t_prefix,t_suffix; RecordDialog d_record; MessageDialog d_message; person a[]=new person[100]; public PhoneNumber() { super("电话号码"); this.setSize(250,250); this.setLocation(300,240); Panel panel1 = new Panel(new GridLayout(4, 1)); for (int i = 0; i < st.length; i++) panel1.add(new Label(st[i],0)); Panel panel2 = new Panel(new GridLayout(4, 1)); t_name =new TextField("",20); t_local =new TextField(""); t_prefix=new TextField(""); t_suffix=new TextField(""); panel2.add(t_name); panel2.add(t_local); panel2.add(t_prefix); panel2.add(t_suffix); Panel panel3 = new Panel(new FlowLayout()); Button b_save = new Button("Save"); Button b_record= new Button("Record"); panel3.add(b_save); panel3.add(b_record); this.setLayout(new BorderLayout()); this.add("West", panel1); this.add("East", panel2); this.add("South", panel3); addWindowListener(new WindowCloser()); b_save.addActionListener(this); b_record.addActionListener(this); d_record=new RecordDialog(this); d_message=new MessageDialog(this); this.setVisible(true);

嵌入式系统实验实验报告

嵌入式系统实验实验报告 一、实验目的 1.基本实验

. Word 资料搭建PXA270嵌入式LINUX开发软硬件环境;安装LINUX操 作系统;安装与配置建立宿主机端交叉编译调试开发环境;配置宿主机 PC 机端的minicom(或超级终端)、TFTP服务、NFS服务,使宿主PC机与PXA270开发板可以通过串口通讯,并开通TFTP 和NFS服务。 2.人机接口 键盘驱动;LCD控制;触摸屏数据采集与控制实验; 3.应用实验 完成VGA显示;Web服务器实验;网络文件传输实验;多线程应用实验。 4.扩展应用实验 完成USB摄像头驱动与视频采集;GPS实验;GSM/GPRS通讯;视频播放移植;USB蓝牙设备无线通讯;NFS文件服务器;蓝牙视频文件服务器。 5.QT实验 完成基本嵌入式图形开发环境搭建;“Hello world!”QT初探;创建一个窗口并添加按钮;对象通信:Signal和Slot;菜单和快捷键;工具条和状态栏;鼠标和键盘事件;对话框;QT的绘图;俄罗斯方块;基于QT的GSM手机在嵌入式LINUX下的设计与实现。 二、实验内容 1.人机接口实验 实验十九键盘驱动实验 ?实验目的:矩阵键盘驱动的编写

?实验内容:矩阵键盘驱动的编写 ?作业要求:完成键盘加减乘除运算 ?实验作业源码及注释: #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #DEFINE DEVICE_NAME “/DEV/KEYBOARD” INT MAIN(VOID){ INT FD; INT RET; UNSIGNED CHAR BUF[1]; INT I,F,J; DOUBLE X; INT A[2]={0}; CHAR PRE_SCANCODE=0XFF; FD=OPEN(DEVICE_NAME,O_RDWR); IF(FD==-1)PRINTF(“OPEN DEVICE %S ERROR\N”,DEVICE_NAME); ELSE{ BUF[0]=0XFF; I=0;F=0; WHILE(1){ READ(FD,BUF,1);

反应时的测定实验报告

. 人因工程课程设计 —反应时的测量实验报告 专业工业工程 学号 1240408110 姓名志伟 指导老师吴俊 成绩 2015年06月30日

实验报告——反应时的测量 【摘要】本次试验的目的是学习视觉简单反应时、选择反应时和辨别反应时的测定方法以及仪器的使用、材料的整理计算,并比较三种反应时的时间差异以及探讨影响反应时的因素。经过分析实验结果数据得出的结论为:被试作出反应所需时间是由刺激的复杂程度决定的。即简单反应时所需反应时间小于选择反应时所需时间。选择反应时和辨别反应时不存在显著的性别差异。 【关键词】简单反应时选择反应时辨别反应时多项职业能力测量仪1.引言 反应时是人因工程学在研究和应用中经常使用的一种重要的心理特征指标。人的信息处理过程,大部分活动是在体潜伏进行的,难以对信息接受、加工和传递各个阶段精确地进行实验测定。因此,在实践中往往利用反应时指标来近似说明人对信息处理过程的效率及影响因素。利用反应时可以分析人的感知觉、注意、识别、学习、唤醒水平、动作反应、定向运动、信号刺激量等,在此基础上,实现提高作业效率、监视水平和集中注意力等目的,合理制定作业标准,改进人机界面,改善作业条件和环境等。 反应时指刺激作用于有机体后到明显的反应开始时所需要的时间。刺激作用于感官引起感官的兴奋,兴奋传到大脑,并对其加工,再通过传出通路传到运动器官,运动反应器接受神经冲动,产生一定反应,这个过程可用时间作为标志来测量,这就是反应时。 本实验采用的是荷兰心理学家 F.C.唐德斯的研究结果。测量最基本的三种反应时,即简单、选择、辨别反应时。唐德斯将它们分别命名为:a、b、c反应时。(1)简单反应时(RTA) 在测试中呈现的刺激和要求被试做出的反应都只有一个,且固定不变。本实验程序可测量视觉、听觉两种简单反应时。视觉的刺激为一绿圆,听觉的刺激为773Hz纯音。测量方式一样,被试均按绿键反应。测30次,每次预备后间隔2秒呈现刺激。如果测试中被试在准备阶段有抢先现象,则该次结果无效,并由计算机剔除并警告抢码被试。另外以每5次呈现为一组,随机加入空白的探测刺激2秒,如有被试在此时抢码,则警告抢码被试,且本组实验将重新进行。最后以 2

实验2+++并行IO口的使用

实验二并行I/O端口的使用 一、实验目的 1.进一步熟悉Keil C、proteus软件的使用方法。 2.掌握分支结构语句、运算符和数组的运用。 3.掌握LED数码管的结构和静态显示工作原理。 二、实验内容 1.程序一:按键K0~K3,用分支语句实现P0口的多值输出。 2.程序二:用循环语句实现P0口的多值输出。 3.程序三:用数组方式控制跑马灯。 4程序四:在P2口连接的LED数码管上循环显示“0”,“1”,“2”,“3”,“4”。 三、实验仿真硬件图 在Proteus软件中建立如下图所示仿真模型并保存。 图2-1 并行I/O端口应用原理图 四、编程提示 程序一:分别用if语句、if-else-if语句、switch语句来实现当按下按键K0~K3时,对应D1~D4点亮。 程序二:运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。 程序三:用数组方式控制跑马灯。将跑马灯的全部状态用数组表达,然后用循环语句依次读取数组各元素,送P0口显示。 程序四:在P2口连接的LED数码管上循环显示“0”,“1”,“2”,“3”,“4”。思路同程序一,只不过数组元素是由共阴极数码管所对应的字形码所组成。 五、调试运行 1.四个程序在proteus仿真通过。

分别用if语句、if-else-if语句、switch语句来实现当按下按键K0~K3时,对应D1~D4点亮。 if语句的一般形式: if ( 表达式1 ) { 语句组1; } if ( 表达式 2) { 语句组2; } ... if-else-if语句的一般形式: if ( 表达式 1) { 语句组1; } else if( 表达式 2) { 语句组2; } ... else if( 表达式 n) { 语句组n; } else { 语句组n+1; } switch语句的一般形式为: switch(表达式) { case常量表达式1: 语句序列1;break; case常量表达式2: 语句序列2;break; ... case常量表达式n: 语句序列n;break; default : 语句序列n+1 } 2.运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。 for语句的一般形式:

黑盒测试软件测试实验报告2

软件测试与质量课程实验报告实验2:黑盒测试法实验

缺席:扣10分实验报告雷同:扣10分实验结果填写不完整:扣1 – 10分其他情况:扣分<=5分总扣分不能大于10分 参考代码如下: (1)程序参考答案: #include double main() { int hours; double payment,wage; wage=20; cout<<"please input hours:"; cin>>hours; if(hours>=0&&hours<=168){ if (hours<40) payment=hours*wage ; else if ((hours>=40) && (hours<=50)) payment=40*wage+(hours-40)*1.5*wage; else if (hours>50) payment=40*wage+10*1.5*wage+(hours-50)*3*wage; cout<<"The final payment are:"< void main() { int year; int month,maxmonth=12; int day,maxday; printf("请输入年份:(1000~3000)"); scanf("%d",&year); if(year<1000 || year>3000) { printf("输入错误!请从新输入!\n");

相关文档
相关文档 最新文档