按键冲突了如何解决?

2019-07-15 19:51发布

#include<reg52.h>#define uchar unsigned char#define uint unsigned int
sbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;sbit led5=P1^4;sbit led6=P1^5;sbit led7=P1^6;sbit led8=P1^7;
sbit s1=P3^2;//外部中断IO口sbit s2=P3^3;//LED触发sbit s3=P3^4;//模式选择,S3=1 模式1,S3=0 模式2//延时函数void delay_ms(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar num,num1;num=0;        num1=0;led1=1;        led2=1;        led3=1;        led4=1;led5=1;        led6=1;        led7=1;        led8=1;P1=0xff; P0=0xff;while(1)//大循环{num1=0;if(s3==0)//模式选择 模式2{delay_ms(5);P1=0xff; P0=0xff;if(s3==0)//模式选择 模式2{/*********************LED触发***************************************/if(s2==0)//LED触发{delay_ms(5);if(s2==0)//LED触发{num++;//模式2变量if(num==9){led8=1;num=0;}           while(!s2);//等待按键释放}}/*********************LED触发***************************************/switch(num){case 1:        led1=0;        led8=1;break;case 2:        led2=0;        led1=1;break;case 3:        led3=0;        led2=1;break;case 4:        led4=0;        led3=1;break;case 5:        led5=0;        led4=1;break;case 6:        led6=0;        led5=1;break;case 7:        led7=0;        led6=1;break;case 8:        led8=0;        led7=1;break;}while(!s3);//等待按键释放}          }else //模式选择 模式1 {num=0;P0=0xff;        P1=0xff;while(s3){/*********************LED触发***************************************/if(s2==0)//LED触发{delay_ms(5);if(s2==0)//LED触发{num1++;//模式2变量if(num1==5){led7=1;        led8=1;num1=0;}           while(!s2);//等待按键释放}}/*********************LED触发***************************************/switch(num1){case 1:        led7=1;        led8=1;led1=0;        led2=0;break;case 2:        led1=1;        led2=1;led3=0;        led4=0;break;case 3:        led3=1;        led4=1;led5=0;        led6=0;break;case 4:        led5=1;        led6=1;led7=0;        led8=0;break;}  }}}这个项目要求是这样的,S3为模式选择开关(带自锁),S2为触发按键,当S3接通时为工作模式2,每触发一次S2,一个LED灯向右移动一次,依次循环;当S3断开时为工作模式1,每触发一次S2,两个LED向右移动一次,依次循环。可就是出现了一个小问题!就是S3按下自锁时,也就意味着一直给IO口3.4给低电平,这个时候每次按下S2的时候都要等手松开才LED灯才会亮!
QQ图片20140507142732.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。