单片机汇编程序:有八个小灯,要求依次点亮,时间间隔1s

用80C51单片机的汇编程序做,谢谢了

/* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。
* 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。
*/
/* 程序详细功能介绍:
*做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上,
*输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复循环。
*/
ORG 0000H
LJMP START
ORG 0030H
START:
MOV R2,#8 ;左移次数
MOV A,#0FEH ;A的初始值,即 P0.0的L0 点亮
SETB C
LOOP: MOV P0,A
LCALL DELAY
RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动
DJNZ R2,LOOP

MOV R2,#8 ;右移次数
LOOP1: RRC A ;右移流水灯
MOV P0,A
LCALL DELAY
DJNZ R2,LOOP1
LJMP START

DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-12-26
这个是简单的:
org 000
main:
mov p1,#11111111b
lcall t1S ;灭1秒
mov p1,#01111111b
lcall t1S
mov p1,#00111111b
lcall t1S
mov p1,#00011111b
lcall t1S
mov p1,#00001111b
lcall t1S
mov p1,#00000111b
lcall t1S
mov p1,#00000011b
lcall t1S
mov p1,#00000001b
lcall t1S
mov p1,#00000000b
lcall t1S
ljmp main
t1s:
mov r2,#10 ;1秒
mov r1,#195
loop1:
djnz r0,$
djnz r1,loop1
djnz r2,loop1
RET

end
第2个回答  2009-12-27
最好先明确一下: 8只都点亮后,就静止了吗?

单片机汇编程序:有八个小灯,要求依次点亮,时间间隔1s
LCALL DELAY RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动 DJNZ R2,LOOP MOV R2,#8 ;右移次数 LOOP1: RRC A ;右移流水灯 MOV P0,A LCALL DELAY DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动...

利用单片机编程:a.开机后从LED1到LED8依次点亮后全熄灭,状态变化时间...
define DY_PORT P1 \/\/设置LED连接的I\/O组 define DY_SPEED 100 \/\/设置每一个明亮级的停留时间(值域:0~65535)\/ bit [自定义名] ; \/\/定义一个位(位的值只能是0或1)例:bit LED define [代替名] [原名] \/\/用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1 sb...

...单片机的P1接8个LED,编写驱动程序使LED依次点亮,间隔为1秒
看你的电路是怎么画的,有两种方式,一种是LED灯的一端接地另一种是接5V电源,如果接地程序只需要给P1上一次5秒给个高电平,接+5V就是给个低电平。延时5秒就写个延时程序 程序网上,书上一大把一大把,自己搜一下,结合自己用的单片机(应该是51系列的)晶震 ...

8个彩灯依次点亮,求电路图和工作原理。
\/*该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*\/ include<reg52.h>\/\/包含reg.52文件 define uint unsigned int\/\/宏定义 define uchar unsigned char\/\/宏定义 void delay(uint z);\/\/声明延时函数 uint a;\/\/定义循环用变量 uchar code table[]={ 0xff,0xfe,...

单片机的跑马灯C程序如何编写八个LED灯依次点亮而且速度渐变的代码_百 ...
\/\/P1外接8个LED,低电平发光.\/\/下列程序在PROTEUS中仿真成功 include<reg52.h> \/\/--- void delay_ms(unsigned int s){ unsigned int x;for(s; s > 0; s--) { x = 98; while(x--);} } \/\/--- void main(){ char i, j;while(1) { for(j = 0; j < 8; j+...

求一个单片机程序,要八个led灯依次点亮,同时一个数码管依次显示1-8 延...
---BEGIN: MOV SP,#5FH MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SETB ET0 SETB EA MOV R2,#20 MOV P1,#0FEH MOV DPTR,#TABLE MOV A,#1 MOVC A,@A+DPTR MOV P0,A MOV R3,#1 SJMP $;---T0INT: CLR TR0 MOV TH0,#3CH MOV...

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
for(i=0;i<8;i++) \/\/8个流水灯依次全部点亮 { P1=temp;delay(100); \/\/调用延时函数 temp<<=1;} temp=0x7F;for(i=0;i<8;i++) \/\/8个流水灯依次反向全部点亮 { P1=temp;delay(100); \/\/调用延时函数 temp>>=1;} void delay(uint t) \/\/定义延时函数 { register uint bt;for...

单片机设计八个彩灯控制电路,遇到了一点问题,请高手指出错误之处_百度...
设置位1S,2S,10S取反一次.再检测此位的电平.从电路看,芯片片选脚可能没有接对.这样的顺序程序,不用TAB的定义,直接置数,延时,再循环就可了,你是初学者,建议你先写简单的方法使"1号→2号→3号→...→7号→8 号,时间间隔为1S。"运行,确认电路正常,再写复杂的方法,...

单片机中八灯点亮1S后1、3、5、7亮1S后2、4、6、8亮依次循环急急急
简单.搞个循环.循环体内:八灯点亮 延时1S 1、3、5、7亮 延时1S 2、4、6、8亮 延时1秒

求大神编程一个51单片机的8灯点亮程序。
点灯的方法是由硬件连接方式决定的,以P1囗的8条引脚连接8只LED为例,8只LED共阳极连至电源,则P1口某位为0时,对应LED点亮,为1时LED熄灭。例如熄灭全部LED操作为 P1=0xFF,点亮第一只LED操作为 P1=0xFE,同时点亮第一,二只LED操作为 P1=0xFC,其它可类推。

相似回答