本代码为编码开关代码,编码开关也就是数字音响中的 360度旋转的数字音量以及显示器上用的(单键飞梭开 关)等类似鼠标滚轮的手动计数输入设备。 我使用的编码开关为5个引脚的,其中2个引脚为按下 转轮开关(也就相当于鼠标中键)。另外3个引脚用来 检测旋转方向以及旋转步数的检测端。引脚分别为a,b,c b接地a,c分别接到P2.0和P2.1口并分别接两个10K上拉 电阻,并且a,c需要分别对地接一个104的电容,否则 因为编码开关的触点抖动会引起轻微误动作。本程序不 使用定时器,不占用中断,不使用延时代码,并对每个 细分步数进行判断,避免一切误动作,性能超级稳定。 我使用的编码器是APLS的EC11B可以参照附件的时序图 编码器控制流水灯最能说明问题,下面是以一段流水 灯来演示。
上传时间: 2017-07-03
上传用户:gaojiao1999
【问题描述】 在一个N*N的点阵中,如N=4,你现在站在(1,1),出口在(4,4)。你可以通过上、下、左、右四种移动方法,在迷宫内行走,但是同一个位置不可以访问两次,亦不可以越界。表格最上面的一行加黑数字A[1..4]分别表示迷宫第I列中需要访问并仅可以访问的格子数。右边一行加下划线数字B[1..4]则表示迷宫第I行需要访问并仅可以访问的格子数。如图中带括号红色数字就是一条符合条件的路线。 给定N,A[1..N] B[1..N]。输出一条符合条件的路线,若无解,输出NO ANSWER。(使用U,D,L,R分别表示上、下、左、右。) 2 2 1 2 (4,4) 1 (2,3) (3,3) (4,3) 3 (1,2) (2,2) 2 (1,1) 1 【输入格式】 第一行是数m (n < 6 )。第二行有n个数,表示a[1]..a[n]。第三行有n个数,表示b[1]..b[n]。 【输出格式】 仅有一行。若有解则输出一条可行路线,否则输出“NO ANSWER”。
标签: 点阵
上传时间: 2014-06-21
上传用户:llandlu
一.传送控制方式有哪几种?试比较它们各自的优缺点? (1)程序控制方式; 由用户进程来直接控制内存或CPU和外围设备之间的信息传送。它的优点是控制简单,也不需要多少硬件支持。缺点是:CPU和外围设备只能串行工作;设备之间的不能并行工作;无法发现和处理由于设备或其他硬件所产生的错误。 (2) 中断控制方式; 中断控制方式是利用向CPU发送中断的方式控制外围设备和CPU之间的数据传送。它的优点是大大提高了CPU的利用率且能支持多道程序和设备的并行操作。缺点是:由于数据缓冲寄存器比较小,数如果发生中断次数较多,将耗去大量的CPU处理时间;在外围设备较多时,由于中断次数的急剧增加,可能造成CPU无法响应中断而出现中断丢失的现象;如果外围设备速度比较快,可能会出现CPU来不及从数据缓冲寄存器中取走数据而丢失数据的情况。 (3) DMA方式; 在外围设备和内存之间开辟直接的数据交换通路进行数据传送。它的优点:除了在数据块传送开始时需要CPU的启动指令,在整个数据块传送结束时需要发中断通知CPU进行中断处理之外,不需要CPU的频繁干涉。它的缺点:在外围设备越来越多的情况下,多个DMA控制器的同时使用,会引起内存地址的冲突并使得控制过程进一步复杂化。 (4) 通道方式。 使用通道来控制内存或CPU和外围设备之间的数据传送。通道是一个独立于CPU的专管输入/输出控制的机构,它控制设备与内存直接进行数据交换。它有自己的通道指令,这些指令受CPU启动,并在操作结束时向CPU发中断信号。该方式的优点是进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。缺点是增加了额外的硬件,造价昂贵。 二.文件系统的定义及功能 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 功能:1.文件管理 2.目录管理 3.文件存储空间的管理 4.文件的共享和保护 5.提供方便的接口 三.网络安装linux操作系统的方法和步骤 1.拟机中安装windows server 2003, 并在windows server 2003操作系统中建立一个ftp服务,通过服务器中的iso文件安装linux操作系统。 2.访问ftp站点,将linux安装镜像拷入ftp文件目录中。 3.一个虚拟机,选择安装linux系统,在dvd中导入安装引导文件(iso文件),并对虚拟机进行相关配置。 4.虚拟机,在启动命令中输入linux askmethod,进入linux安装的引导画面。 5.安装介质时,在实验中选择ftp安装方式。 6.链接ftp服务器后,进入正式安装步骤,选择相应的选项直至安装完成。 四.中断是指计算机在执行期间,系统内部或外部设备发生了某一急需处理的事件,使得CPU暂时停止当前正在执行的程序而转去执行相应的事件处理程序待处理完毕后又返回原来被中断处,继续执行被中断的过程。(1)保存现场(2)转中断处理程序进行中断处理(3)中断返回 五.引入设备独立性,可使应用程序独立于具体的物理设备,显著改善资源的利用率及可适应性;还可以使用户独立于设备的类型。 实现独立性:在应用程序中应使用逻辑设备名称来请求使用某类设备。当应用程序用逻辑设备名请求分配I/O 设备时,系统必须为它分配相应的物理设备,并在逻辑设备表LUT中建立一个表目。 六.在一个请求分页系统中,采用FIFO页面置换算法时,假如一个作业的页面走向为4、3、 2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理块数M分别为3和4时,试计算在访问过程中所发生的缺页次数和缺页率,并比较所得结果。 答: 操作系统考试复习资料--完整版 M=3 M=4 操作系统考试复习资料--完整版 操作系统考试复习资料--完整版 M=3时,采用FIFO页面置换算法的缺页次数为9次,缺页率为75%; M=4时,采用FIFO页面置换算法的缺页次数为10次,缺页率为83%。 由此可见,增加分配给作业的内存块数,反而增加了缺页次数,提高了缺页率,导致系统页面替换非常频繁,大部分机器时间都用在来回进行调整调度上,只有一小部分时间用于进程的实际运算,这种现象被称为是抖动现象。 七. 在页式存储管理的系统中,作业J的逻辑地址空间为4页(每页2048B),且已知该作 要求画出地址变换图,求出逻辑地址4865所对应的物理地址。 解:由题意可知,页大小为2048 字节,则逻辑地址4865页号及页内位移为: 页号P为:4685/2048=2 页内位移W为:4685-2048*2=769 其地址变换过程如图
标签: 操作系统
上传时间: 2015-11-30
上传用户:wanglin_81
实验源代码 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("请输入矩阵第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可传递闭包关系矩阵是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元关系的可传递闭包\n"); void warshall(int,int); int k , n; printf("请输入矩阵的行数 i: "); scanf("%d",&k); 四川大学实验报告 printf("请输入矩阵的列数 j: "); scanf("%d",&n); warshall(k,n); }
上传时间: 2016-06-27
上传用户:梁雪文以
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789
数据结构中的B-TREE的实现
上传时间: 2014-01-07
上传用户:小儒尼尼奥
b/s下jsp+javabean实现从数据库中读取数据生成目录树
上传时间: 2015-02-08
上传用户:风之骄子
国内首款采用B/S完美模式开发的考试系统国内首款采用开放式、动态数据架构的考试系统
上传时间: 2013-12-25
上传用户:liglechongchong
清华大学数据结构课上实现的B+树,设计一个4阶B+树,包括: (1) 叶子的每个记录应该包括4字节(long)关键码值和60字节的数据字段(存储文件名等,可以自定),设每个叶子可以存储5条记录,而内部节点应该是关键码值/指针对。此外,每个节点还应该有指向同层下一个节点的指针、本节点存储的关键码数等; (2) 此4阶B+树应该支持插入、删除以及根据给定关键码值进行精确检索与关键码范围检索; (3) 显示(打印)此4阶B+树的生长(含删除节点)过程实例;
上传时间: 2014-08-05
上传用户:ywqaxiwang
是当初的数据结构的做业,用的是b+树这一块,非常值得初学者的参考
上传时间: 2013-12-12
上传用户:sqq