的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

if (Key == 0) // 检测按键是否按下 { t++; // 计时器加1 while (!Key && t <= 3000); // 当按键未松开或计时器未超过3秒时继续计时 if (t > 3000) // 如果计时器超过了3秒,LED亮起来 { Led =

KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进

单片机按键控制LED灯亮灭程序

2 while(1) { P1=temp; SoftDelay(2000); P1=_crol_(temp,1); //循环右移 } }void SoftDelay(unsigned int us){ while(us--);}

delay(100); //调用延时子程序 L4=1; //第四盏灯亮 delay(100); //调用延时子程序 while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉 } 纯手工书写,并仿真调

(仅供参考)由于你设置推挽输出,也就是说没有上下拉(8中模式里输入有上下拉),在《数据手册》里的解释推挽输出初始化时,输出0或1,其实是0,这样的话,你的开始红灯都全部亮下,就不难理解了。所以你若想在开始的

1、布尔型控件具有两种状态,首先打开Labview创建一个空的项目。2、首先在前面板选择布尔控件,选择按钮和一个指示灯,都在布尔控件中。3、接着将选择好的控件拖动到前面板,双击单个控件进入对应的程序面板。4、接着进入到程

delay(50000);LED4 = 1;delay(50000);LED4 = 0;delay(50000);LED3 = 0;delay(50000);LED2 = 0;delay(50000);LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的效果。其中,

i++;} 定时器, LED灯

更改程序实现四盏LED灯依次轮流亮起,即流水灯的效果?

你好,上述程序可以满足你说的要求,按键按下抬起的操作可以触发一次 GPIO Pin_1 的状态的读取,你的程序其实就是将此口的状态反转。读取之后用了一个if else 的判断,其实这四行可以直接用一句取反的函数代替,估计是叫

led=1;//点亮 delay(100);//延时100MS led=0;//熄灭 } else led=0;} void delay(unsigned int i){自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,

KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进

void keys() /// 按键 输入 { if (keyi==0) //有按键 { delay(80); //延时去抖 if (keyi==0) //确定有按键 if(key==3) //每按一键,key加一,当为3时,归0,此处可以设置控制几个led key=

1、首先打开编程软件Keil uVision4,新建一个工程文件,在菜单栏中Project—— New uVision Project..。2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,

按一下key1全亮,再按一下key1全灭往复循环 2.分别控制每盏亮灭 include sbit key1 = P1^0;sbit led1 = P0^0;sbit led2 = P0^1;sbit led3 = P0^2;sbit led4 = P0^3;unsigned

在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。include include 仿真图效果。

51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写

if(key1 == 0) //如果高电平按下按键就==1 { delay(200); //按键防抖 if(key1 == 0){ led1=1; //如果低电平亮就=0 led2=0;led3=0;led4=0;} } if(key2 == 0){ delay(200); //按键

ORG 00H AJMP MAIN ORG 13H AJMP EX1INT ORG 0030H MAIN:MOV P1,#0 SETB EA SETB EX1 SETB IT1 MAIN1:MOV P1,A AJMP MAIN1 EX1INT:INC A CJNE A,#0,RTI MOV A,#0 RTI:RETI END

假设P1口接8个LED灯,通过灌电流驱动(即0亮1灭)。编译器keil C代码如下:include include //包含循环左移函数 _cro_l头文件 unsigned char tmp; //中间变量 /// // 延时子程序 ///

程序如下: 绝对没有错 LED灯的一端接P1口的各各引脚,另一端接地。同时在P1口的每个管脚上加1K的上拉电阻,电阻另一端连接至+5V即可 ORG 0000H AJMP START ORG 0030H START:MOV SP,#07H MOV P1,#00H MOV A

在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。include include 仿真图效果。

d1=0; //设为低电平,LED灯亮 d3=0; //设为低电平,LED灯亮 d5=0; //设为低电平,LED灯亮 d7=0; //设为低电平,LED灯亮 } void main(){ PortState(); //主函数里面调用 while(1);//~~~其

LED4 = 0;delay(50000);LED3 = 0;delay(50000);LED2 = 0;delay(50000);LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的效果。其中,sbit 定义了四个位于 P2 口的 LED 灯

编写一段程序,要求用at89c51控制四个led灯,是他们逐个亮以后在逐个灭?

if(++Time_Count!=time) return; Time_Count=0; Operation_Type=4; break; case 4: //南北向黄灯开始闪烁,绿灯关闭 LEDsng=0x0; LEDsns=0x0; if(++Time_Count!=8) return; Time_Count=0; YELLOW_B

4只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#1011111

);break;case 3:P1_3=~P1_3;delay02s();break;} } } 这个是我很久以前做的,有一点不同就是这个灯不但会亮还会闪,可以把闪的程序删掉。我有KEIL文件和PROTEUS文件。这个图可以实现这个效果了,修改一下就行了。

led=0X07;delay(1000);led=0X0f;delay(1000);led=0X1f;delay(1000);led=0X3f;delay(1000);led=0X7f;delay(1000);led=0Xff;delay(1000);led=0X7f;delay(1000);led=0X3f;delay(1000);led=0X1f;delay(1000);

3.编写程序:使用单片机的编程软件(如Arduino IDE、Keil等),编写控制LED灯的程序。以下是一个简单的示例程序(以Arduino为例):// 定义LED灯连接的引脚 const int ledPin = 13;void setup() { // 将LED引脚设置为

LED3 = 1;delay(50000);LED4 = 1;delay(50000);LED4 = 0;delay(50000);LED3 = 0;delay(50000);LED2 = 0;delay(50000);LED1 = 0;delay(50000);} } 上述代码实现了四个 LED 灯逐个亮起来然后再逐个灭掉的

Keil四个LED灯点亮程序

51单片机是一款广泛应用于嵌入式系统的微控制器。在51单片机开发板上,我们可以通过P1口来控制8盏LED灯。在这里,我们需要编写一个能够使这些LED灯呈现右移流水灯效果的程序。首先,我们需要定义好每个LED灯的控制位,将它们分别映射到P1口的每个引脚。假设我们将第一个LED连接到P1.0引脚,第二个LED连接到P1.1引脚,依此类推,直到第八个LED连接到P1.7引脚。那么,我们可以通过下面的代码来初始化这些引脚,并将它们配置为输出模式:void init_leds(void){ P1 = 0x00; //将P1口所有引脚初始值设为0 P1M0 = 0x00; //将P1口所有引脚都设为标准输出模式 P1M1 = 0x00;}接下来,我们需要定义用于控制LED流水灯移动方向的变量和计数器。我们将使用一个名为‘direction’的变量来控制流水灯的移动方向。如果direction变量的值为1,则流水灯朝左移动。如果值为0,则流水灯朝右移动。我们还需要一个计数器‘i’来控制流水灯的移动速度。unsigned char direction = 0; //变量用来控制流水灯的移动方向unsigned char i = 0; //变量用来控制流水灯的移动速度【摘要】 在51单片机开发板上,P1口控制8盏LED灯,对应位为0时灯亮,编写8个led右移流水灯程序【提问】 51单片机是一款广泛应用于嵌入式系统的微控制器。在51单片机开发板上,我们可以通过P1口来控制8盏LED灯。在这里,我们需要编写一个能够使这些LED灯呈现右移流水灯效果的程序。首先,我们需要定义好每个LED灯的控制位,将它们分别映射到P1口的每个引脚。假设我们将第一个LED连接到P1.0引脚,第二个LED连接到P1.1引脚,依此类推,直到第八个LED连接到P1.7引脚。那么,我们可以通过下面的代码来初始化这些引脚,并将它们配置为输出模式:void init_leds(void){ P1 = 0x00; //将P1口所有引脚初始值设为0 P1M0 = 0x00; //将P1口所有引脚都设为标准输出模式 P1M1 = 0x00;}接下来,我们需要定义用于控制LED流水灯移动方向的变量和计数器。我们将使用一个名为‘direction’的变量来控制流水灯的移动方向。如果direction变量的值为1,则流水灯朝左移动。如果值为0,则流水灯朝右移动。我们还需要一个计数器‘i’来控制流水灯的移动速度。unsigned char direction = 0; //变量用来控制流水灯的移动方向unsigned char i = 0; //变量用来控制流水灯的移动速度【回答】 然后,我们可以编写LED流水灯移动的主要逻辑。鉴于我们想要让LED灯像水一样流动,因此我们需要使用一个循环,使LED灯逐个被打开或关闭。我们使用P1口来打开或关闭LED灯。代码如下:void led_flow(void){ while(1) { if(direction == 0) //如果direction变量值为0,也就是右移 { for(i = 0; i = 0; i--) { P1 = (1 << i); //将第i位设置为高电平 delay_ms(100); //延时100毫秒 P1 = 0x00; //将所有的LED灯都关闭 } } }}上面的代码使用for循环控制LED灯逐个打开或关闭,并使用delay_ms()函数来控制流水灯的移动速度。在右移模式下,每个LED灯都会从右向左逐个亮起并熄灭。在左移模式下,每个LED灯都会从左向右逐个亮起并熄灭。最后,我们需要在主函数中调用上面的初始化函数和LED流水灯函数。void main(){ init_leds(); //初始化LED灯 led_flow(); //启动LED流水灯程序}完成了上述步骤后,我们就成功地编写了一个能够实现8个LED右移流水灯效果的程序,它可以通过P1口控制8盏LED灯。【回答】 这个程序可以发一下吗?【提问】 发过去了,亲【回答】 只要程序,这个文字掺杂,有点看不是很懂【提问】 void init_leds(void){ P1 = 0x00; //将P1口所有引脚初始值设为0 P1M0 = 0x00; //将P1口所有引脚都设为标准输出模式 P1M1 = 0x00;}unsigned char direction = 0; //变量用来控制流水灯的移动方向unsigned char i = 0; //变量用来控制流水灯的移动速度void led_flow(void){ while(1) { if(direction == 0) //如果direction变量值为0,也就是右移 { for(i = 0; i = 0; i--) { P1 = (1 << i); //将第i位设置为高电平 delay_ms(100); //延时100毫秒 P1 = 0x00; //将所有的LED灯都关闭 } } }}void main(){ init_leds(); //初始化LED灯 led_flow(); //启动LED流水灯程序}【回答】 这个好像和我们不太一样呀,我们这个都是#include.reg51.h【提问】 然后再编写【提问】 是的呢【回答】 代码不是都有int,for这些吗?为啥你发的没有呢?【提问】 变量用啥来定义都行,里面有for啊【回答】
您好亲~使用AT89C51可以制作出一个流水灯,它可以控制4个或4个以上的LED灯,采用低电平激活信号。首先,给定电路:RS, RW, 和,EN口由晶体发射管与接受管(P0.0~P0.7)连接,R5, R4用来分别控制4个或4个以上LED灯。每当低电平到达R5或R4时,LED灯就会亮起,而当高电平到达时,LED灯就会熄灭。将电路中的晶体发射管和接收管连接R5,R4,RS,RW和EN口后,就可以成功控制4个以上的LED灯。并且,可以在AT89C51的离散IO卡上编写程序来控制LED灯的流水灯效果,这样就可以自动控制LED灯的流水灯效果。 此外,我们可以增加更多的晶体发射管和接受管来连接R5,R4,RS,RW和EN口,以便控制更多的LED灯。也可以使用不同颜色的LED灯来形成更多种更炫的效果实现更好的视觉效果哦![开心][开心][开心]【摘要】 第二次单片机作业+1.使用AT89C51制作一个流水灯,控制4个以上LED灯,采用低电【提问】 您好亲~使用AT89C51可以制作出一个流水灯,它可以控制4个或4个以上的LED灯,采用低电平激活信号。首先,给定电路:RS, RW, 和,EN口由晶体发射管与接受管(P0.0~P0.7)连接,R5, R4用来分别控制4个或4个以上LED灯。每当低电平到达R5或R4时,LED灯就会亮起,而当高电平到达时,LED灯就会熄灭。将电路中的晶体发射管和接收管连接R5,R4,RS,RW和EN口后,就可以成功控制4个以上的LED灯。并且,可以在AT89C51的离散IO卡上编写程序来控制LED灯的流水灯效果,这样就可以自动控制LED灯的流水灯效果。 此外,我们可以增加更多的晶体发射管和接受管来连接R5,R4,RS,RW和EN口,以便控制更多的LED灯。也可以使用不同颜色的LED灯来形成更多种更炫的效果实现更好的视觉效果哦![开心][开心][开心]【回答】 2.LED数码管的静态显示和动态显示有何区别?各有什么优缺点?【提问】 您好亲~LED数码管的静态显示指的是只有一个固定的数字显示;而动态显示指的是在指定时间段内经过数字变化,运行重复图案,并停留在指定状态的显示,也就是说LED数码管可以通过指定的程序来改变数字的显示状态。静态显示的优点:操作简单,只需给出显示数据及时序就可以实现;显示效率高,不需要耗费大量时间;占用资源较少,显示无需连续变换,所以只需要较小的控制板来支撑;功耗较低;便于产品成本的控制;动态显示的优点:具有更加生动的动画特效,可以更有趣的提高用户的兴趣;实现较高的操作深度,能够更好的传达信息;操作灵活性高,能够更精确地实现显示的特效;缺点:静态显示:显示效果单一,显示效果不能灵活导入其他多态显示内容;动态显示:控制要求较高,需要更复杂的控制硬件和程序;占用资源较多;功耗也比较大;实现复杂的动态显示成本更高哦![开心][开心][开心]【回答】
给个20悬赏就来一句“请编写程序”,大老板啊!看一下别人怎么问问题的去吧,青瓜蛋子!能在5分钟里给你写出程序的知友差你那20悬赏么!
今天做回好人,闲着给你写一个做参考。 按键按一次LED灯灭,在按一次按键LED灯亮。 程序如下: /************************************************************************************************************* #include "REG52.H" sbit LED1_01 = P1^1; //LED灯 sbit KEY0_01 = P1^2; //按键 void Delay_1ms(unsigned int Time) { unsigned int x, y; for(x = Time; x > 0; x--) for(y = 120; y > 0; y--); } int main(void) { LED1_01 = 1; //打开LED灯点亮 while(1) { if(KEY0_01 == 0) //检测按键是否按下 { Delay_1ms(10); //延时去抖动 if(KEY0_01 == 0) //确定按键按下 { LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ] } while(KEY0_01 == 0); //检测松手 } } } *****************************************************************************************************************/
;实验目的:本程序主要实现一个简单的流水灯程序 ;即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。) ;硬件要求:拨码开关S2全部置ON。 #include ;调用头文件 __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 ;**********************用户寄存器定义******************** count equ 20h ;移位次数寄存器 del_va1 equ 0ffh ;外层延时参数 del_va2 equ 0ffh ;内层延时参数 org 00h ;程序人口地址 ; addlw 0ffh ;**********************主程序开始*********************** main nop ;ICD所需要的一条空指令 clrf PORTC ;先清楚C口所有显示 banksel TRISC ;选择I/O口方向寄存器所在的体 clrf TRISC ;设置C口全为输出 clrf STATUS ;返回体0 movlw .8 movwf count ;装载循环次数8(C口共8位) bsf STATUS,C ;置进位标志位为1,因循环移位是带进位循环的 loop rlf PORTC,1 ;C口左移1位 call delay call delay CALL delay ;调用三次延时程序(保证亮度,以及流水灯闪烁速度) bcf STATUS,C ;清0进位标志位(永远只有一只LED亮) DECFSZ count,1 ;判断是否一轮循环结束 goto loop ;否,继续循环移位 GOTO main ;是,程序重头开始 ;***********************延时程序************************* delay movlw del_va1 ;延时程序外层参数 movwf 30h movlw del_va2 ;延时程序内层参数 movwf 31h decfsz 31h,1 goto $-1 decfsz 30h,1 goto $-4 return ;********************程序结束**************************** end
四个灯按规律轮流亮灭?
单片机按键按两次LED灯亮程序 您好亲, 第一步:数字I/O的使用 使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。 第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。 定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。 希望可以帮到您哦。【摘要】 单片机按键按两次LED灯亮程序【提问】 单片机按键按两次LED灯亮程序 您好亲, 第一步:数字I/O的使用 使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。 第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。 定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。 希望可以帮到您哦。【回答】 我需要的是单片机C语言程序,如何检测按键按了两次?【提问】 我需要的是单片机C语言程序,如何检测按键按了两次? 您好亲, 将按钮一端接GND,另一端通过K欧级电阻上接到Ⅴcc,此端再接入单片机引脚,这是比较通用的单片机检测按钮的硬件结构。在程序上,用指令读引脚,如果出现低电平0,就代表按钮已经按下。 这种方法的最大问题是如何防抖,一般在按下按钮时,它输出的低电平会产生跳动,程序就会检测到多次低电平。通常的做法是在程序检测到第一个低电平后加入一定的延时,再检测引脚电平以确定按键是否稳定。 希望可以帮到您哦。【回答】 这我懂,主要是程序如何写,让按键检测两次低电平后,然后执行LED灯亮。【提问】 这我懂,主要是程序如何写,让按键检测两次低电平后,然后执行LED灯亮。 您好亲, 按键低电平有效,led灯低电平时亮。按键按下亮,松开灭。程序较简单,为组合逻辑电路,没有按键防抖功能。 module led(led,key); input key; output led; reg led_out; always@(key) if(!key) led_out=1'b0; else led_out=1'b1; assign led=led_out; endmodule 希望可以帮到您哦。【回答】 只求程序,其它的不要跟我废话了【提问】 只求程序,其它的不要跟我废话了 您好亲, 目标程序为了使计算机能按照人们的意志工作,就要根据问题的要求,编写相应的程序。程序是一组计算机可以识别和执行的指令,每一条指令使计算机执行特定的操作 扩展 源程序 程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称为源程序。C语言源程序的扩展名为“.c”。源程序不能直接在计算机上执行,需要用“编译程序”将源程序编译为二进制形式的代码。[1]这是【回答】 if语句如何判断按键按了两次【提问】 if语句如何判断按键按了两次 您好亲, bit keychk() //单一按键检测 { if(P1.0==0) //如果键按下 { delay(); //延时去抖 if(P1.0==0)return(1); //返回键状态 } return(0); } unsigned char kbscan(void) //矩阵扫描按键检测 { unsigned char sccode,recode; P1=0x0f; //发0扫描,列线输入 if ((P2 & 0x0f) != 0x0f) //有键按下 { delay(20); //延时去抖动 if ((P1&0x0f)!= 0x0f) { sccode = 0xef; //逐行扫描初值 while((sccode&0x01)!=0) { P1=sccode; if((P1&0x0f)!=0x0f) { recode=(P1&0x0f)|0xf0; while((P1&0x0f)!=0x0f);//等待键抬起 return((~sccode)+(~recode)); } else sccode=(sccode<<1)|0x01; } } } return 0; //无键按下,返回0 }希望可以帮到您哦。【回答】
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始