当前位置: 代码迷 >> 汇编语言 >> 小一段汇编单片机程序,求分析!解决思路
  详细解决方案

小一段汇编单片机程序,求分析!解决思路

热度:5391   发布时间:2013-02-26 00:00:00.0
小一段汇编单片机程序,求分析!!!
ORG 000H
LJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H
LOP:MOV A,#7FH
LOOP:MOV P1,A
  MOV R7,#08H;重点求解
  LCALL DELAY
  RR A
  DJNZ R7,LOOP;重点求解
  MOV A,#0FEH
LOOP1:MOV P1,A
  MOV R7,#08H
  LCALL DELAY
  RL A
  DJNZ R7,LOOP1
SJMP LOP
DELAY:MOV R5,#10;重点求解对象,特别是延时程序时间的算法
DELAY1:MOV R6,#200
DELAY2:MOV R7,#123
DELAY3:DJNZ R7,DELAY3
  DJNZ R6,DELAY2
  DJNZ R5,DELAY1
  RET
END

------解决方案--------------------------------------------------------
延时部分:
DELAY3: DJNZ R7, DELAY3 ;循环123次,
DJNZ R6,DELAY2 ; 循环200次
DJNZ R5,DELAY1 ; 循环50次
故延时总计:123 x 200 x 10 x 2 个指令周期(DJNZ 双周期指令)

R7,R6,R5 都=0后,子程序返回。这时R7=0,《DJNZ R7,LOOP;重点求解》执行后,R7=#0FFH,
所以《DJNZ R7,LOOP;重点求解》以下的代码永远不会执行。把DELAY中的R7改成R4就可以解决这个问题。
------解决方案--------------------------------------------------------
MOV R7,#08H;重点求解:#08h 循环次数,要求循环体内的代码执行8次,使得P1口依次输出:

7F 3F 1F 0F 07 03 01 00
  相关解决方案