您的位置:首页 > 编程语言

51汇编程序之点亮全部led

2012-07-01 13:53 330 查看
ORG 00H ;程序的开始地址

LJMP START ;跳到程序的起始位置

ORG 30H ;主要是为了跳过堆栈段



START: ;只是一个标号

MOV A,#00H ;数据的传送

mov 90H,#0B

mov 91H,#1B

mov 92H,#1B

mov 93H,#1B

mov 94H,#0B

mov 95H,#0

mov 96H,#0

mov 97H,#0

LOOP:

mov P0,A



LCALL DELAY;调用延时子程序

CPL A ;取反

JMP LOOP

;============================延时子程序

DELAY:

MOV R7,#5

LOOP3:

MOV R5,#0

LOOP2:

MOV R6,#0

LOOP1:

DJNZ R6,LOOP1

DJNZ R5,LOOP2

DJNZ R7,LOOP3

RET ;子程序返回指令

;===================================

END



本来想这段程序应该会是所有的led灯亮灭交替,但是实际上市点阵上最上面一排进行亮灭交替

当我把代码改为:

ORG 00H ;程序的开始地址

LJMP START ;跳到程序的起始位置

ORG 30H ;主要是为了跳过堆栈段



START: ;只是一个标号

mov P1=0X0EH

LOOP:

mov P0,A

//NOP;空操作

LCALL DELAY;调用延时子程序

CPL A ;取反

JMP LOOP

;============================延时子程序

DELAY:

MOV R7,#5

LOOP3:

MOV R5,#0

LOOP2:

MOV R6,#0

LOOP1:

DJNZ R6,LOOP1

DJNZ R5,LOOP2

DJNZ R7,LOOP3

RET ;子程序返回指令

;===================================

END



此时所有led亮灭交替,第二段程序中的P1=0X0EH和第一段程序红色文字应该是等价的,问什么情况不一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: