Day05

来回流水灯2

 ORG 0000H
 AJMP MAIN
 ORG 0030H
 MAIN:
      MOV A,#00H
      SETB C
      MOV R2,#08H
      MOV P0,A
      CALL DELAY
 LOOP:
      RLC A
      MOV P0,A
      CALL DELAY
      DJNZ R2,LOOP
      MOV R2,#07H
 LOOP1:
       MOV P0,A
       RRC A
       CALL DELAY
       DJNZ R2,LOOP1
       AJMP MAIN
 DELAY:MOV R5,#248
 D1: MOV R6,#248
     DJNZ R6,$
     DJNZ R5,D1
     RET
     END

累加器循环加1

 ORG 0000H
 AJMP START
 ORG 0030H
 START:
       CPL A;取反
       MOV P0,A
       CPL A
       INC A
       CALL DELAY
       JMP START
 DELAY:MOV R4,#255
 D2:   MOV R5,#255
       DJNZ R5,$
       DJNZ R4,D2
       RET
       END

拓展

 ORG 0000H
 AJMP MAIN
 ORG 0030H
 MAIN:MOV A,#0FFH
      MOV P0,A
      SETB P2.0
 LOOP:
      INC A
 SHOW:
      JNB P2.0,INCR
      JMP SHOW
 INCR:
      JNB P2.0,INCR
      MOV P0,A
      CALL DELAY
      JMP LOOP
 DELAY:
       MOV R4,#255
 D2:   MOV R5,#255
       DJNZ R5,$
       DJNZ R4,D2
       RET
       END

当累加器A为#00H时,减一为0FFH

当累加器A为#0FFH时,加一为#00H

累加器循环加减

 ORG 0000H
 AJMP MAIN;跳过中断向量地址的入口地址
 ORG 0030H;设置程序初始地址
 MAIN:MOV A,#0FFH
      SETB P2.0
      SETB P2.1
 LOOP:
      MOV P0,A
      JNB P2.0,INCR
      JNB P2.1,DECR
      JMP LOOP
 INCR:
      JNB P2.0,INCR
      INC A
      MOV P0,A
      CALL DELAY
      JMP LOOP
 DECR:
      JNB P2.1,DECR
      DEC A
      MOV P0,A
      CALL DELAY
      JMP LOOP
 DELAY:
       MOV R5,#255
 D2:   MOV R4,#255
       DJNZ R4,$
       DJNZ R5,D2
       RET
       END
posted @ 2022-05-16 20:56  Unclesundada  阅读(40)  评论(0)    收藏  举报