51单片机8个流水灯,一个按键从左到右,一个按键从右到左,用汇编语言
参考:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/efec7445f6c27852500ffe5e.html
#include
#include
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
uint s;
while(1)
{
P0=0xfe;
DelayMS(150);
for(s=8;s>1;s--)
{
P0=_crol_(P0,1); //P0 的值向左循环移动
DelayMS(150);
}
P0=0x00;
DelayMS(150);
P0=0xff;
DelayMS(150);
}
}
KEYR EQU P1.0//改下端口 忘记 p3口 是低还是高了
KEYL EQU P1.1
LED EQU P0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB ET0
SETB EA
MOV A,#0FEH
MOV LED,A
MOV R2,#0
CLR 00H
LOOP:
CLR TR0
LOOPL:
JB KEYL,LOOPR
SETB TR0
RL A
MOV LED,A
JNB 00H,$
CLR 00H
SJMP LOOPL
LOOPR:
JB KEYR,LOOP
SETB TR0
RR A
MOV LED,A
JNB 00H,$
CLR 00H
SJMP LOOPR
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC R2
CJNE R2,#20,T0E
MOV R2,#0
SETB 00H
T0E:
RETI
END
要求这么简单,程序,就不用很长。
如下即可:
51单片机制作一个由一个按钮控制的8盏流水灯程序,要求按下按钮后流水...
include<reg51.h> define uchar unsigned char sbit key=P1^0;uchar led;void delay(uchar x){ uchar i,j;for(i=0;i<x;i++)for(j=0;j<125;j++);} void disled(){ uchar i,j;led=0xfe;for(j=0;j<2;j++){ for(i=0;i<8;i++){ P0=led;delay(200);P0=0xff;delay(20...
51单片机8个流水灯,一个按键从左到右,一个按键从右到左,用汇编语言
A MOV R2,#0 CLR 00HLOOP: CLR TR0LOOPL: JB KEYL,LOOPR SETB TR0 RL A MOV LED,A JNB 00H,$ CLR 00H SJMP LOOPLLOOPR: JB KEYR,LOOP SETB TR0 RR A MOV LED,A JNB 00H,$ CLR 00H SJMP LOOPRT0ISR: CLR TR0 ...
51单片机 用1个按键控制8盏灯,进行花样显示
sbit key=P2^1;\/\/这里看你把按键设置在哪个引脚上 void delay(uint z)unit x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void key1(){ if(key==0){ P1=0x00; \/\/灯全亮 } void key2(){ if(key==0){ P1=0xfe;P1=P1<<1; \/\/左移或右移,这个自己试一下 del...
用汇编语言编写一个按钮控制8个流水灯的亮灭
R2减1,直到为0,跳出循环。返回到调用处。这个程序通过按键P3.2控制8个流水灯P1端口的亮灭,通过右移操作实现流水效果,并通过延时子程序实现一定的视觉效果。在实际应用中,可以根据需求调整延时子程序的延时时间,以适应不同的显示效果要求。在编写和调试此类程序时,需要注意按键的抖动问题,以及单片...
跪求单片机一按键控制8盏流水灯的程序最好有图用汇编语言编程。3Q_百度...
start:mov sp,#4fh ;堆栈段 MOV R0,#06H ;循环6次 mov A,#0f8H ;123灯亮 ATT: mov P1,A acall delay RL A ;左移1位 DEC R0 ;循环次数自减1 CJNE R0,#00H,ATT ;自减完后的数和00比较不相等跳到ATT相等往下执行 MOV P1,#0FFH MOV A,#0F8H MOV R0,#06H...
单片机8个流水灯初始从左到右,按下按键一就从右往左 C语言
245);} } void main (void){ bit stop = 1;char xx = 127;while (1) { if(!KEY) { DelayMs(10);if(!KEY) { while(!KEY);stop = !stop;} } if (stop) xx = _cror_(xx, 1);else xx = _crol_(xx, 1);P0 = xx; DelayMs(500);} } ...
单片机 亮灯:8个灯左右来回亮。既先按流水灯从左到右亮,再从右到左灭...
用移位操作,首先把P1口赋值,然后向右移位,判断是否移到最后移位,如果不是,一直移位,如果是,则反向移位,判断是否移位到第一位,如果是则循环到右移,具体代码就自己写了。代码不难,我只是记不清楚具体定义了。
单片机八个流水灯左右依次点亮
1、首先,打开proteus,可以看到界面上方有库,点开,在库里选择做实验需要的元件。2、如图所示,我们做流水灯实验所需要的元件,就是红色方框里面的元件,一定都要添加进来,要不然实验就做不成功。3、接着,我们按照电路原理图,排布好元件,连好线,最后的电路如图所示。4、我们把实验代码插入单片机,...
编写单片机的流水灯。8个流水灯。先从左向右亮再从左向右灭。求代码...
\/* 输入第一个数据:uiDataOne *\/ for (i = 0; i < 8; i++){ \/* 给出脉冲信号,首先将CLK置为0 *\/ HC595CLK = 0;if (0 != (uiDataOne & 0x80)){ HC595DATA = 1;} else { HC595DATA = 0;} \/* 给出脉冲信号,首先将CLK置为1 *\/ HC595CLK = 1;\/* 准备第二个...
急求!求一个使单片机控制P1端口的8个LED灯做作左移流水灯的C语言程序...
功能 : 实现灯的闪烁 输入 : 无 输出 : 无 说明 :也可以使用例1的的方法来关闭数码管 \/ void Main(void){ uchar i;while(1){ P1 = 0xfe;for(i=0; i<7; i++){ P1 = _crol_(P0, 1); \/\/用于循环左移 Delay(15);} } } 这是一个51单片机的P1口小灯循环左移的例子,不...