文档详情

DNA保守序列识别算法的并行化和MPI集群环境构建.doc

发布:2018-05-13约2.63千字共6页下载文档
文本预览下载声明
CPU键盘扫描实验 电路图如下: 要求按下s1键时,p3口的8位LED正向流水点亮;按下s2键时,p3口的8位LED反向流水点亮;按下s3键时,p3口的8位LED熄灭;按下s4键时,p3口的8位LED闪烁。 程序代码: #includereg51.h unsigned char tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //段码表 sbit S1=P1^4; //将S1位定义为P1.4引脚 sbit S2=P1^5; //将S2位定义为P1.5引脚 sbit S3=P1^6; //将S3位定义为P1.6引脚 sbit S4=P1^7; //将S4位定义为P1.7引脚 /*流水灯延时*/ void delay0() { unsigned char i,j; for(i=0;i250;i++) for(j=0;j250;j++) ; } /*软件消抖延时*/ void delay1() { unsigned char i,j; for(i=0;i100;i++) for(j=0;j100;j++) ; } /*正转*/ void zheng() { int i; for(i=0;i8;i++) {P3=tab[i]; delay0();} } /*反转*/ void fan() { int i; for(i=7;i=0;i--) {P3=tab[i]; delay0();} } /*关闭*/ void close() { P3=0xff; } /*闪烁*/ void shan() { P3=0xff; delay0(); P3=0x00; delay0(); } void main() { int key=0; while(1) { P1=0xf0; if((P10xf0)!=0xf0) { delay1(); if((P10xf0)!=0xf0) { if(S1==0) key=1; if(S2==0) key=2; if(S3==0) key=3; if(S4==0) key=4; } } switch(key) { case 1: zheng(); break; case 2: fan(); break; case 3: close(); break; case 4: shan(); break; } } } 说明:在s1键按下后,LED正向流水亮;要想反向亮,按s2键时按下时间长一点。下面介绍一个用951中定时器扫描中断的方法。 实验电路图同上,用定时器T1每1ms扫描一次键盘,这样便可以很好地实现键盘控制功能。代码如下: #includereg51.h unsigned char tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //段码表 sbit S1=P1^4; //将S1位定义为P1.4引脚 sbit S2=P1^5; //将S2位定义为P1.5引脚 sbit S3=P1^6; //将S3位定义为P1.6引脚 sbit S4=P1^7; //将S4位定义为P1.7引脚 unsigned char key=0; /*流水灯延时*/ void delay0() { unsigned char i,j; for(i=0;i250;i++) for(j=0;j250;j++) ; } /*软件消抖延时*/ void delay1() { unsigned char i,j; for(i=0;i100;i++) for(j=0;j100;j++) ; } /*正转*/ void zheng() { int i; for(i=0;i8;i++) {P3=tab[i]; delay0();} } /*反转*/ void fan() { int i; for(i=7;i=0;i--) {P3=tab[i]; delay0();} } /*关闭*/ void close() { P3=0xff; } /*闪烁*/ void shan() { P3=0xff; delay0(); P3=0x00; delay0(); } void main() { TMOD=0x10;
显示全部
相似文档