1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

* 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。 */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时

} } //主程序 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);

P1=b;//P1口接8个LED灯 delay(200);b=_crol_ (b,1);} } void delay(unsigned int z){ unsigned int i;for(;z>0;z--) //延迟时间自己算吧 for(i=110;i>0;i--);} 用汇编写这个容易点 main: m

DB 000H ;全亮 END ;程序结束指令 C语言程序如下:/* 该实验是花样流水灯(8个发光二极管以各种方式循环点亮),功能是花样流水灯(8个发光二极管以1S间隔以各种方式循环点亮) */ include//包含reg.52文件 define uint

假设P1接8 个LED,高电平时LED点亮,主程序如下:void main(void){ uchar i;while(1){ for(i=0;i<7;i++){ P1=1<>i;delay_ms(500);} } }

P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六个灯亮 delay

用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)

* 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。 */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时

} } if(k2==0) { delay(10); if(k2==0) { while(k2==0); flag=2; } } if(k3==0) { delay(10); if(k3==0) { while(k3==0); flag=3;

AJMPMAIN ORG0030H MAIN:MOVR1,#7;MOVA,#0FCH LOOP1:MOVP1,A RLA CALLDELAY DJNZR1,LOOP1 MOVP1,00H CALLDELAY CALLDELAY MOVR1,#7;MOVA,#3FH LOOP2:MOVP1,A CALLDELAY RRA DJNZR1,LOOP2 MOVP1,#00H CALL

while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低

51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;

51单片机汇编控制8个流水灯

i%=8;delay(200);} } void prog2(void){ uchar i;while(flag){ P0=led2[i];i++;i%=4;delay(200);} } viud prog3{void){ uchar i=7;while(flag){ P0=led1[i];i--;if(i>7)i=7;delay(200)

include define uint unsigned int define uchar unsigned char sbit key=P2^1;//这里看你把按键设置在哪个引脚上 void delay(uint z)unit x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void key

define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1=~temp;delay(100);

include unsigned char PData; //整体结果unsigned char CurrData;//变化的最高位//延时,本函数是非精确延时,若需要精确延迟则需要根据本函数的汇编语句进行精确计算后调整循环体次数void delay(unsigned int

AJMPMAIN ORG0030H MAIN:MOVR1,#7;MOVA,#0FCH LOOP1:MOVP1,A RLA CALLDELAY DJNZR1,LOOP1 MOVP1,00H CALLDELAY CALLDELAY MOVR1,#7;MOVA,#3FH LOOP2:MOVP1,A CALLDELAY RRA DJNZR1,LOOP2 MOVP1,#00H CALL

51单片机 8盏花样流水灯

C语言程序如下:/* 该实验是花样流水灯(8个发光二极管以各种方式循环点亮),功能是花样流水灯(8个发光二极管以1S间隔以各种方式循环点亮) */ include//包含reg.52文件 define uint unsigned int//宏定义 define uchar

这个流水灯是很普通的一种花样,假设LED接P1口,程序如下:ORG 0000H LJMP MAIN 0RG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) ;50毫秒定时 MOV TL0,#LOW(65536-50000)SET

程序如下:;启动后,八路流水灯同时闪烁,每秒闪烁一次。;按下按键A,顺时针依次闪烁,间隔1秒。;按下按键B,顺时针间隔0.5秒依次闪烁。;按下按键C,逆时针间隔一秒依次闪烁。;按下按键D,逆时针间隔2秒依次闪烁 ;按下

while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低

程序:ORG 0000H MAIN:MOV P1,#81H ACALL DELAY MOV P1,#42H ACALL DELAY MOV P1,#24H ACALL DELAY MOV P1,#18H ACALL DELAY AJMP MAIN DELAY:MOV R3,#5 //延时 L4: MOV R0,#125 L3: MOV R1,#100

51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个

8路流水灯汇编语言程序的写法

1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include //51单片机头文件#include //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsi

以P1口的8位共阳极LED为例,初始化:sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;delay函数:void delay(

//发光顺序:0123,1234,2345,3456,4567,5670,6701,7012。循环。//--- include include unsigned char a;void main(){ unsigned char i, j, k;a = 0x0f;while(1) { P1 = a;

ORG0000H AJMPMAIN ORG0030H MAIN:MOVR1,#7;MOVA,#0FCH LOOP1:MOVP1,A RLA CALLDELAY DJNZR1,LOOP1 MOVP1,00H CALLDELAY CALLDELAY MOVR1,#7;MOVA,#3FH LOOP2:MOVP1,A CALLDELAY RRA DJNZR1,LOOP2 MOVP1,#

代码如下:include unsigned char PData; //整体结果unsigned char CurrData;//变化的最高位//延时,本函数是非精确延时,若需要精确延迟则需要根据本函数的汇编语句进行精确计算后调整循环体次数void delay(unsi

void delay(uint); //声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1=~temp;delay(100); //调用延时函数 temp<<=1;} temp=0x80;

51单片机八个灯的流水灯代码

51单片机八个灯的流水灯代码: 1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。 2、#include "reg51.h"首先写出单片机的头函数。 3、#include "intrins.h"输入位移函数。 4、unsigned int count=0,led;定义函数。 5、输入主函数,定义单片机的端口,写入延时函数。 编辑推荐 对于刚接触单片机的学习者,似乎都很迷茫,C语言、汇编语言、电路、开发板,不知道从哪儿开始学起。其实在学习单片机原理与应用系统开发时,只有在学习一些理论知识的基础上,多阅读单片机应用系统开发案例,注重单片机应用系统开发实践训练,才能透彻地理解和掌握单片机结构与原理,才能更快更好地掌握单片机应用知识和单片机应用系统开发技能。
#include // 根据您的硬件平台,您可能需要引入不同的头文件sbit LED0 = P1^0;sbit LED1 = P1^1;sbit LED2 = P1^2;sbit LED3 = P1^3;sbit LED4 = P1^4;sbit LED5 = P1^5;sbit LED6 = P1^6;sbit LED7 = P1^7;void main() { while(1) { LED0 = 1; LED1 = 0; LED2 = 0; LED3 = 0; LED4 = 0; LED5 = 0; LED6 = 0; LED7 = 0; delay(500); // 调用一个函数来延迟500ms,但您需要实现这个函数 LED0 = 0; LED1 = 1; LED2 = 0; LED3 = 0; LED4 = 0; LED5 = 0; LED6 = 0; LED7 = 0; delay(500); // 同上,您需要实现这个函数 LED0 = 0; LED1 = 0; LED2 = 1; LED3 = 0; // 此代码段被截断,可能还有更多LED控制逻辑 }注意:这段代码是基于8051微控制器的C语言编程。它使用了`sbit`关键字来定义单个位,并使用`P1`来引用端口1。此外,`delay(500)`是一个延迟函数,您需要实现它以产生500毫秒的延迟。【摘要】 51单片机8个led流水灯依次点亮【提问】 【提问】 #include​sbit LED0 = P1^0;​sbit LED1 = P1^1;​sbit LED2 = P1^2;​sbit LED3 = P1^3;​sbit LED4 = P1^4;​sbit LED5 = P1^5;​sbit LED6 = P1^6;​sbit LED7 = P1^7;​void main(){​while(1){​LED0 = 1;​LED1 = 0;​LED2 = 0;​LED3 = 0;​LED4 = 0;​LED5 = 0;​LED6 = 0;​LED7 = 0;​delay(500);​LED0 = 0;​LED1 = 1;​LED2 = 0;​LED3 = 0;​LED4 = 0;​LED5 = 0;​LED6 = 0;​LED7 = 0;​delay(500);​LED0 = 0;​LED1 = 0;​LED2 = 1;​LED3 = 0;​LED4 = 0;​LED5 = 0;​LED6 = 0;​LED7 = 0;​delay(500);LE​【回答】
花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,
#include#include#define uchar unsigned charsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}main(){uchar flag=0;uchar led=0xff;while(1) { if(k1==0) { delay(10); if(k1==0) { while(k1==0); flag=1; led=0xfe; } } if(k2==0) { delay(10); if(k2==0) { while(k2==0); flag=2; } } if(k3==0) { delay(10); if(k3==0) { while(k3==0); flag=3; } } if(k1==0) { delay(10); if(k4==0) { while(k4==0); flag=4; } } switch(flag) { case 1:P0=led;led=_crol_(led,1);delay(100);break; case 2:P0=0xff;led=0xff;break; case 3:P0=led;break; case 4:P0=led;led=_crol_(led,1);delay(100);break; default:break; } }}
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下: ORG 0000H ;复位启动AJMP START ;ORG 001BH ;T1中断AJMP T1INT ; ;定义变量========================YSJS EQU 30H;延时计数器LED EQU 31H;LED控制缓冲器 ;主程序==========================START: MOV LED,#0FEH ;初始化数据MOV YSJS,#0 ;MOV TMOD,#10H ;定时器1工作于方式1,16位定时器MOV TL1,#0B0H ;设置定时初值MOV TH1,#3CH ;定时时间=50mSSETB ET1 ;使能定时器1中断SETB TR1 ;启动定时器1SETB EA ;开总中断 MOV P1,LED ;初始化流水灯LOOP: JMP LOOP ;循环等待中断T1INT: PUSH PSW ;定时器1中断程序PUSH ACC ;保护现场MOV TH1,#3CH ;定时时间=50mSMOV TL1,#0B0H ;INC YSJS ; PUSH ACC ;保护ACCMOV A,YSJI ;CJNE A,#2,QT1 ;50mS*2=100mSMOV P1,LED ;MOV A,LED ;RL A ;累加器A的值循环左移1位MOV LED,A ;MOV YSJS,#0 ;QT1: POP ACC ;恢复现场POP PSW ;RETI ;返回主程序END ;汇编程序结束 扩展资料: 实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。 第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。 第三种,库函数实现流水灯。利用左移函数进行。
用RL A 他是左移补零的,你RLC A 是把最高位放在PSW的C中,再左移,C再放在最低位.而RL是不经过C的。左移后低位补零,你把RLC换成RL就可以了