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

实验目的
1. 掌握仿真软件的使用方法
2. 掌握 MCS-51 单片机的 P0、P1、P2 口的使用方法
3. 掌握实现发光二极管的移动、闪烁程序的编写方法
实验内容及要求
一、掌握单片机仿真器的程序输入、调试和运行等方法。
二、P2 口作为输入口,接 8 个按键。所有按键的一端接通过上拉电阻接至+5V电源,另一端和电源地 GND 相连接。在没有按键被按下是 P2 的输入全为高电平,当有按键被按下时对应的 P2 的相应引脚被拉低,该引脚输入变成低电平。 P0、P1作输出,接 16 个发光二极管,以P2口的值为点亮发光二极管的个数进行循环点亮。
三、实验程序要求用汇编语言编写。
四、提高部分:可加入键盘。按键1:以一个发光二极管依次点亮并循环,按键2:以两个发光二极管依次点亮并循环,依此类推。

第1个回答  推荐于2016-08-04
程序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本回答被提问者和网友采纳
第2个回答  2012-11-25
楼主先自己编一编,有错,大家帮你找。