51单片机一个外部按键控制两个外部引脚交替的输出并且不要保持状态

供稿:hz-xin.com     日期:2025-01-14
看到回复多谢!51单片机外部一个按键控制两个引脚轮流产生脉冲

( ˃̶̤́ ꒳ ˂̶̤̀ )

硬件就不说了,直接点来软件,
外部中断配置好,然后在中断函数里面判断是第几次按下(用一个变量,进入一次中断变量加一,奇数表示第一次,偶数就表示第二次了,就这样循环啦),然后根据奇偶性选择引脚控制,相信延迟(要精确就用定时器,控制TRx位就行),IO口拉高拉低你应该会的
兄弟,加油^0^~

51单片机一个外部按键控制两个外部引脚交替输出并且不要保持状态。但看这个要求,用51单片机是很容易实现的。如果想实现你的功能,建议你看看51单片机方面的书籍

sbit KEY=p0^0;
sbit A=p0^1; 
sbit B=p0^2;
int b=0; //b=0时A闭合,b=1时B闭合
int GetKey() { int k1,k2,k3,r; //利用3次读取按键状态防抖
  k1=KEY; k2=KEY; k3=KEY; if ( (k1==k2)&&(k2==k3) ) r=k1; else r=-1;
}
int main() { int k;
  A=B=0; //假定闭合时输出1,打开输出0,KEY=1时是按下,释放读到0
  while ( 1 ) {
    k=GetKey(); //按键按下返回1,按键抬起返回0,按键抖动期间返回-1
    if ( k==1 ) { //按下时根据b的状态接通A或B
      if ( b==0 ) A=1; else B=1;
    }
    else if ( k==0 ) { //确实抬起按键后,A和B都停止输出1,并且切换b状态
      A=0; B=0; b=1-b;
    }
  }
}


想抱你睡江西九江超级超级吃鸡鸡ncjcjcj-i难吃坚持坚持你从哪洁厕剂才能交叉口次的决定洁厕剂妇女节飞机飞机飞机就放假超级超级发奖金飞机飞机发奖金发哦覅

不行啊,,,

晕晕乎乎舅舅

单片机C51编程问题:怎样实现一个开关控制两个灯?按一次灯1亮;两次...
单片机C51编程问题:要实现一个开关控制两个灯,按要求两个灯有3种状态,就要声明一个变量,每按一下开关,变量加一,且变量取值为1,2,3,大于3再回1,又重复控制两个灯亮灭变化。变量加一后,就根据变量的三个值,去控制两个灯的三个状态了。用仿真实现,如下仿真图。

你好,我想用单片机一个按键控制三种模式,第一种是半小时定时开关,第二...
为了实现一个按键控制三种不同定时模式的功能,可以采用单片机的定时器中断技术。定时器每1毫秒产生一次中断,通过计数来实现不同的时间间隔。具体来说,半小时定时为1800000次中断,一小时为3600000次中断,两小时为7200000次中断。在开始编写程序之前,需要进行一些初始化设置。首先,需要初始化各引脚,包括...

51单片机汇编语言程序,一个按键控制两个发光二极管的同时闪烁,交替闪烁...
JB P2.0,$-2 ACALL DISP JNB P2.0,$-2 SETB TR0 INC R1 ;R1为按键按下次数 CJNE R1,#2,KEY0 AJMP KEY KEY0:MOV R1,#1 AJMP KEY DISP:CJNE R1,#1,DISP0 AJMP DISP1 DISP0:CJNE R1,#2,RT AJMP DISP2 DISP1: ;一起闪 JNB F0,DISP11 ;F0为0.5S到标志,每0.5S求反...

用一个按键控制2个LED
这个用软件实现比硬件实现,容易很多,也省事。硬件部分,没啥难度,就IO口接LED灯就行了,要不要再加驱动或者上拉电阻,取决于你用的芯片。下面说说软件如何实现 1.在电灯程序里,设置一个account,是1的时候,LED1亮。你再按一次,程序还要进来这里,这时候,account++;account = 2的时候,LED2亮...

单片机一个按键控制3个led灯,多种状态
led3=led2=1;led1=flag_500ms;break;case 1:led1=led3=1;led2=flag_500ms;break;case 2:led1=led2=1;led3=flag_500ms;break;default :break;} } } unsigned char key_time,time_500;void Timer0Interrupt(void) interrupt 1\/\/50ms { TH0 = 0x3C;TL0 = 0x0B0;\/\/add your ...

一个开关怎么控制2个LED
判断 if(key==1){led1=1;亮 led2=0;灭 } if(key==2){led1=0;灭 led2=1;亮 } if(key==3){ led1=led2=0;都灭 key=0;恢复初始状态 } 用同样的方法可以直接控制好几十个灯的亮灭 和闪烁 比方说让一个灯慢慢的亮 然后慢慢的灭 呵呵 建议你有可能的话 学学单片机吧...

AT89C51单片机如何实现一个按钮控制两个LED同步闪烁?
。。。简单到离谱了,一楼还有脸说代做。。。细节你没说明,以下是按下开关不放时,两个灯一起闪,1秒亮1秒暗。开关松开就停止闪烁。include <reg52.h> sbit d1=P0^0;sbit d2=P0^1;sbit k1=P3^0;void delay(int x){ char y;while(x--)for(y=0;y<120;y++);} void main(){ w...

请问stc单片机1个定时器怎么控制两个设备?
如果是循环工作就 好办,可以定时50ms,然后各个灯的开启或关闭时间都 是50ms的倍数 每次中断查询设定的时间点,然后同时输出两个灯的状态。如3S时(中断次数60), A灯亮,B灯灭,5S时,A灯亮,B灯也亮 10秒时AB灯都灭 过一个周期,如60s 回到0秒时的状态 如果灯亮灯灭的规律你自己都 找...

求一单片机C语言程序:两个按键控制两个LED KEY1按一下LED1亮 再按一...
sbit led2 = P1^3;void Delay(unsigned int x){ unsigned int i, j;for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);} \/\/KEY1按一下LED1亮 再按一下LED1灭 \/\/KEY2按下LED2亮 LED1灭 main(){ while(1) { if (!key2) { led1 = 1; led2 = 0;} else ...

两个外部中断程序 中断端口fn1 fn2接按键 下降沿触发 为什么无论按哪个...
不知道你说的和晶振有关是什么意思 51单片机的外部中断触发方式分为低电平和下降沿触发两种方式,由IT0,IT1两个位单元来实现外部中断0,外部中断1的触发方式选择,为0是低电平触发,为1是下降沿触发。