c语言和汇编的程序八个LED依次左移逐个点亮,点亮后在依次右移逐个点亮不断循环

如题所述

C语言

#include<reg51.h>

void delay(unsigned int a)

{

unsigned i,j;

for(i=0;i<a;i++)

for(j=0;j<1000;j++);

}

main()

{

unsigned LED,i;

LED = 0xfe;

EA = 0;

while(1)

{

for(i=0;i<7;i++){delay(100);LED = (LED<<1)|0x01;P3 = LED;}

for(i=0;i<7;i++){delay(100);LED = (LED>>1)|0x80;P3 = LED;}

}

}

汇编语言

LED EQU 30H

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

CLR EA

MOV SP,#5FH

MOV LED,#0FEH

MOV R0,#7

LOOP:

MOV R7,#50

LCALL DELAY

MOV A,LED

RL A

MOV LED,A

MOV P3,A

DJNZ R0,LOOP

MOV R0,#7

LOOP1:

MOV R7,#50

LCALL DELAY

MOV A,LED

RR A

MOV LED,A

MOV P3,A

DJNZ R0,LOOP1

MOV R0,#7

SJMP LOOP

;----------------------------

DELAY:

MOV R2,#8

DLY1:

MOV R3,#250

DJNZ R3,$

DJNZ R2,DLY1

DJNZ R7,DELAY

RET

;-----------------------------

END

温馨提示:内容为网友见解,仅供参考
第1个回答  2022-09-29

单片机led左移然后右移循环亮灭的汇编语言

电路与程序如下:

本程序,经过硬件检验,完全符合题目要求。

c语言和汇编的程序八个LED依次左移逐个点亮,点亮后在依次右移逐个点亮不...
void delay(unsigned int a){ unsigned i,j;for(i=0;i<a;i++)for(j=0;j<1000;j++);} main(){ unsigned LED,i;LED = 0xfe;EA = 0;while(1){ for(i=0;i<7;i++){delay(100);LED = (LED<<1)|0x01;P3 = LED;} for(i=0;i<7;i++){delay(100);LED = (LED>>1)...

单片机编程控制8个LED,先逐个点亮,再逐个熄灭,再逐个点亮,如此循环,变化...
假如:P0口接8个LED,程序可以这样:include<reg52.h> define uchar unsigned char define uint unsigned int sbit led1= P2^0;uchar num;\/ 延时t毫秒 11.0592MHz时钟,延时约1ms \/ void delay(uint s){ uchar k;while(--s){ for(k=0; k<125; k++) ;} } void main(){ uchar i,...

...右逐个点亮至全亮又从右到左逐个逐个熄灭来回循环plc?
Y0-Y7是分别控制1-8号指示灯 程序如图

单片机C语言如何实现8个LED流水灯来回流动?
1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

...汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间...
MAIN: MOV P1, #11111110B ; P1 口 点亮一个发光二极管 ACALL DELAY ; 调用延时子程序 MOV P1, #11111101B ; 从左向右移动 一位 ACALL DELAY MOV P1, #11111011B ACALL DELAY MOV P1, #11110111B ACALL DELAY MOV P1, #11101111B ACALL DELAY MOV P1, #11011111B ACALL DELAY MOV P1, #1011...

编程:使用单片机P1口控制8个LED。显示方式:自上而下逐个点亮,再自下而...
给你个简单点的 ORG0000H AJMPMAIN ORG0030H MAIN:MOV P1,#01111111B ;P1口低电平 对应灯亮 点亮P1.7对应的LED LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#10111111B LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#11011111B LCALL ...

8路流水灯汇编语言程序的写法
汇编语言程序如下:;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个点亮 MOV R2, #8 LOOP1: CLR C RLC A MOV P1, A CALL...

...汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间...
if(i==8)P1=~0x01;\/\/P1_0所接二极管亮,下面依次是P1_1到P1_7(电路连接时二极管一端连P1_0,一端连电阻再连5v,低电平的时候亮,因此加取反“~”)if(i==7)P1=~0x02;if(i==6)P1=~0x04;if(i==5)P1=~0x08;if(i==4)P1=~0x10;if(i==3)P1=~0x20;if(i==2)P1=~0x...

...发光二极管从左向右依次逐个点亮后再丛右向左逐个灭灯(延时1s...
JMP LEFT 如果按下按钮开关,送入低电平,就跳到LEFT让二极管向左侧依次点亮 WAIT_B:JB P2.1,WAIT_A 当然这就是等待p2.1了 JMP RIGHT LEFT: ;左端流水 RLC A MOV P1,A CALL DELAY DJNZ R1,LEFT JMP START RIGHT: ;右端流水 RRC A MOV P1,A CALL DELAY DJNZ R1,RIGHT ...

单片机控制8个灯依次亮,全亮了,再依次灭的c语言流程图,顺便加上解释...
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

相似回答