51单片机 的左移右移,首先在开始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;for(m=20;m>0;m--)for(n=20;n>0;n--)for(k=250;k>0;k--);理解这三句

K1 EQU P1.0K2 EQU P1.1ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH CLR 00H CLR 01HLOOP: JB K1,LOOP1 SETB 00H CLR 01H SJMP LOOPLOOP1: JB K2,LOOP2 SETB 01H

P1口接8个流水灯,用两个开关K1和K2控制流水灯的方向,仿真图如下。

对控制LED口的寄存器进行位操作,按k1左移,按K2就是右移了。51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内

如何实现51单片机的按键k1按下,LED流水灯向右移动,按键k2被按下,LED流水灯向左移动?

1);break; case 1:P0=led;led=_cror_(led,1);brea; case 2:P0=led;led=~led;break; }}main(){TMOD=0x01;TH0=(65536-60000)/256;TL0=(65536-60000)%256;TR0=1;ET0=1;EA=1;led=0xfe;while

void main(){ unsigned char keyVal;while(1){ keyVal=P3^0xFF;if(keyVal){ if(keyVal==0x02) LED=ON;else if(keyVal == 0x20) LED=OFF;} } } 3.说明一下,此按钮不需要去抖动,原因在于每个按钮只负责灯的

用几个变量表示按键的按下/松开状态,然后用定时器中断设置PWM的频率,例如要50hz的频率,那么定时器中断周期(PWM周期的一半)可以设置为10ms,在中断服务程序内根据按键的状态确定是否需要对PWM输出管脚进行翻转。改方法可以输

LED1: CJNE R0,#1,LED2 AJMP LED10 LED2: CJNE R0,#2,LED3 AJMP LED20 LED3: CJNE R0,#3,LED4 AJMP LED30 LED4: CJNE R0,#4,LEDRT AJMP LED40 LEDRT: RET LED10: MOV A,#0FFH MOV P1,A ACALL

不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;

=0xff)//接地了,有按下 { delayxms(10);//等键盘稳定,以确认不是误按、抖动 temp=P2;//再次检测 temp=temp&0xff;//防抖 ,确认是按下 if (temp!=0xff)//确认不是误按、抖动 { switch (temp)

52单片机独立按键控制LED流水灯

程序如下:include sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3。让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术

i];delay(200);} else for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流动 P2=led[i];delay(200);} else P2=0xff; //若run=0,全部灯灭 } }

首先、你要的是3个功能 如果你要用3个按钮,那就每个实现1种 如果你用的是1个按钮,那就1个实现3种 - 单灯流水,P*口(灯的接口) 循环左移命令 _crol_比方:led1=0xff; _crol_(led1,1);P1=0xff; 这样

在这个单片机流水灯代码中,假设使用的是8051单片机。需要定义8个LED灯,分别连接到P1端口的不同引脚上。然后使用一个循环结构来控制这8个LED灯按照一定的顺序逐个亮起,形成流水灯的效果。具体来说,使用for循环来控制LED灯

1选用合适的单片机和LED灯,将它们连接在电路板上。2在单片机程序中编写代码,控制LED灯的亮灭状态。3在代码中指定LED灯的亮灭顺序,以及延时时间。通常采用循环结构进行控制。4在将代码烧录到单片机之后,启动实验,即可看到

如何用单片机控制led灯的流水效果

不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:void light_water(){ num=1;for(a=0;a<8;

//控制引脚定义 sbit LED1 = PX.X; //P0.0-P3.7任意引脚 sbit LED12 = PX.X;//宏定义灯亮灯灭 define LED1_ON( ) LED1 =0 //阳极接电源 define LED1_OFF( ) LED1

}}按键控制两个灯#includesbit led1=P1^0;sbit led2=P1^1;void ext0() interrupt 0{led1=~led1;}void ext1() interrupt 2{led2=~led2;}main(){EX0=1;EX1=1;IT0=1;IT1=1;EA=1;while(1)

include "reg51.h"unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED灯的花样数据 void delay(unsigned char time){ //延时函数 unsigned int j=15000;for(;time>0;time--)for(;j>0;j--);} void m

C51单片机编程,按键控制流水灯

while(1) { P1=aa; delayms(1000); aa=_crol_(aa,1); } 这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了 if(key1==0) { P1=0x7e;
参考: http://hi.baidu.com/do_sermon/item/ba6c010d009b7b324ac4a399
您好,很高兴为您解答,单片机汇编语言按键控制流水灯,开关k1,k2。实现按下k1,流水灯移动,按下k2,流水灯暂停移动?假设P0.0接k1,P0.1接k2,k1或k2闭合时,P0.0或P0.1为低电平0,断开时为高电平1;P2口的8位接8个发光二极管的阳极,发光二极管的阴极通过下拉电阻接地,要点亮相应的二极管,需要P2口对应引脚输出高电平1;按下k1时,P2口初值设为00000001B,这样点亮最右边一个LED,用一段延时程序使得点亮稳定后,使P2口数值依次左移1位,这样8个二极管可以依次点亮,即流水灯左移;按下k2时,P2口初值设为10000000B,这样点亮最左边一个LED,用一段延时程序使得点亮稳定后,使P2口数值依次右移1位,这样8个二极管可以依次点亮,即流水灯右移.【摘要】 单片机汇编语言按键控制流水灯,开关k1,k2。实现按下k1,流水灯移动,按下k2,流水灯暂停移动?【提问】 您好,很高兴为您解答,单片机汇编语言按键控制流水灯,开关k1,k2。实现按下k1,流水灯移动,按下k2,流水灯暂停移动?假设P0.0接k1,P0.1接k2,k1或k2闭合时,P0.0或P0.1为低电平0,断开时为高电平1;P2口的8位接8个发光二极管的阳极,发光二极管的阴极通过下拉电阻接地,要点亮相应的二极管,需要P2口对应引脚输出高电平1;按下k1时,P2口初值设为00000001B,这样点亮最右边一个LED,用一段延时程序使得点亮稳定后,使P2口数值依次左移1位,这样8个二极管可以依次点亮,即流水灯左移;按下k2时,P2口初值设为10000000B,这样点亮最左边一个LED,用一段延时程序使得点亮稳定后,使P2口数值依次右移1位,这样8个二极管可以依次点亮,即流水灯右移.【回答】 可以用汇编语言代码解释一下吗【提问】 您好,很高兴为您解答,void sain()くu8 1;us key;while(1)key-key_scan(e);switch (key)case 1:for(1-0;11);Delay_10us(10000e);3P2-0xff;break;case 3:for(i-0;i1);Delay_10us(100000);P2-exff;break;default:P2-exff;break;3【回答】