51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分

供稿:hz-xin.com     日期:2025-01-13
用51单片机(汇编语言写)写一个跑马灯程序??知道的帮个忙写写。

答疑解难 跑马灯程序
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: JB P0.7,MAIN ;等待开始键按下
LCALL YS ;按键延时
JB P0.7,MAIN
MOV A,#7FH ;是开始键按下 则跑马灯开始运行
LL: MOV P1,A
LCALL YS ;显示延时
RR A ;循环右移一位
JB P0.6, LL ;没有按下停止键 则继续跑马
LCALL YS ;按键延时
JB P0.6,LL ;按下停止键 则停止跑马;否则继续跑马
MOV A,#0FFH
MOV P1,A
SJMP MAIN ;转到程序开始处,等待开始键的按下

YS: MOV R7,#150 ;延时子程序
YL: MOV R6,#200
YY: NOP
DJNZ R6,YY
DJNZ R7,YL
RET

END

硬件接口电路如下:


哈哈 还满意吗 就请给俺选择(满意选项)吧

给个你参考
*******
/* 实验目的:初步了解单片机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:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END

楼主先自己编一编,有错,大家帮你找。

用汇编语言怎么编写跑马灯程序?
跑马灯程序用汇编是很好实现的,只要用好循环移位指令就可以,以下是程序。\\x0d\\x0aORG 0000H\\x0d\\x0aLJMP MAIN\\x0d\\x0aORG 0030H\\x0d\\x0aMAIN:\\x0d\\x0a MOV A,#0FEH\\x0d\\x0a\\x0d\\x0aLOOP:\\x0d\\x0a MOV P1,A ;将控制字送端口\\x0d\\x0a\\x0d\\x0a ...

51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下...
MOV P1,A JNB P2.0,LOOP1 SJMP LOOP21 DELAY:MOV R2,#60 DELAY1:MOV R3,#250 DJNZ R3,DJNZ R2,DELAY1 RET END

用51单片机(汇编语言写)写一个跑马灯程序??知道的帮个忙写写。
MOV A,#7FH ;是开始键按下 则跑马灯开始运行 LL: MOV P1,A LCALL YS ;显示延时 RR A ;循环右移一位 JB P0.6, LL ;没有按下停止键 则继续跑马 LCALL YS ;按键延时 JB P0.6,LL ;按下停止键 则停止跑马;否则继续跑马 MOV A,...

怎么用单片机按键控制循环跑马灯???
void dd() \/\/ 实现要求(4)的子程序(key4按第一次按下,左流水,第二次按下,右流水,第三次按下,熄灭){ int i=0,j=0,k=0,h=0;loop:P0=0xff;if(key4==0)\/\/第一次判断是否有键按下 {for(i=0;i<30000;i++); \/\/延时防抖动 if(key4==1)\/\/判断按键是否弹起 while(...

求一单片机程序 要求 跑马灯 k1 加快速度 k2 减速 尤其是关于延时子程...
sbit da=P3^2;\/\/增大闪烁间隔按键 sbit xiao=P3^3;\/\/减小闪烁间隔按键 bit state1;\/\/标志位1 bit state2;\/\/标志位2 uchar temp;uchar a=10;void key_con1();void delay(uchar z)\/\/延时函数 { uchar x,y;for(x=z;x>0;x--)for(y=115;y>0;y--);} void main(){ state1=1...

请问如何用单片机编写跑马灯程序啊?
按下M1启动程序,再次按下M1程序结束 图中的“K88”表示 流程一共88个状态 所以需要在D200~D288中预先写入值 具体如下:将D200、D202、D204、D206、D208 写入“1”将D210~D212 D216~D218 D222~D224 写入“2”将D228~D232 D238~D242 D248~D252 D258~D262 D268~D272 D...

51单片机8个led灯闪烁左右跑马汇编写
在51单片机编程中,实现8个LED灯以左右跑马的方式闪烁是一项基础而有趣的任务。下面的程序示例展示了如何通过循环点亮和熄灭LED灯,以模拟跑马灯的效果。首先,我们需要定义一个延时函数,用于控制每个LED点亮和熄灭的时间间隔。这里提供了一个简单的延时函数:void delay(unsigned int z) { unsigned int x...

51单片机 跑马灯程序
call t10s mov p0,#11111101b ;此时第二个灯亮 call t10s mov p0,#11111011b call t10s mov p0,#11110111b call t10s mov p0,#11101111b call t10s mov p0,#11011111b call t10s jmp start ;此处跳到开始 即 循环 ;延时子程序10秒=250usX2X200X100 t10s:mov r5,#100 ...

怎么用MS-51单片机语言编写跑马灯程序
单片机语言??汇编的:;p1口八个灯作跑马灯。org 0000h ajmp start org 0030h start:mov a,#0ffh ;clr c ;mov r2,#08h ;循环八次。loop: rlc a ;带进位左移。mov p2,a ;输出到P1口。call delay ;延时一段时间 djnz r2,loop ;反复循环 mov r2,#07h ;再往回循环。loop1:rrc a ;带...

用51单片机设计8个灯的跑马灯程序
这是一个利用51单片机设计的8个LED灯的跑马灯程序,具体实现步骤如下:首先,程序中定义了两个宏,分别用于无符号整数和无符号字符的声明,便于后续的编程操作。接着,定义了一个端口led_port,用于控制LED灯的显示。然后,编写了一个1毫秒为单位的延时函数delay_1ms,通过嵌套循环实现。在主函数main中,...