Day02

开关控制单灯亮灭

 ORG 0000H
 LJMP START;指定下一个的起始地址
 START:
       CLR P1.0
       LCALL DELAY
       SETB P1.0
       LCALL DELAY
       AJMP START
 DELAY:   MOV R7,#250
 D1:      MOV R6,#250
 D2:      DJNZ R6,D2
          DJNZ R7,D1
          RET
          END
       
 ORG 0000H
 CLR P1.0
 AJMP START
 START:
       SETB P0.0
       JB P0.0,LIG;为0跳转
       SETB P1.0
       SJMP START
       
 LIG:
     CLR P1.0
     SJMP START
     END
       

image-20220512180637801

开关控制多灯亮灭

 ORG 0000H
 CLR P1.0
 CLR P1.1
 CLR P1.2
 AJMP START
 START:SETB P0.0
       SETB P0.1
       SETB P0.2
       JB P0.0,LIG0
       SETB P1.0
       SJMP NEXT1
 LIG0:CLR P1.0
 NEXT1:JB P0.1,LIG1
       SETB P1.1
       SJMP NEXT2
 LIG1:CLR P1.1
 NEXT2:JB P0.2,LIG2
       SETB P1.2
       SJMP NEXT3
 LIG2:CLR P1.2
 NEXT3:JB P0.3,LIG3
       SETB P1.3
       SJMP NEXT4
 LIG3:CLR P1.3
 NEXT4:JB P0.4,LIG4
       SETB P1.4
       AJMP START
 LIG4:CLR P1.4
       SJMP START
       END
 ​

image-20220512182725512

延时程序

 MOV Rn,#Data   ;1个周期
 DJNZ Rn,Rel    ;2
 RET            ;2
 NOP            ;1
 ACALL Addr11   ;2
 LCALL Addr16   ;2
 ADD A,Ri       ;1
 INC DPTR       ;2
 ​
 DEL2:MOV R0,#X     ;1周期
 DEL1:DJNZ R0,DEL1  ;2周期,不为0转移
      RET           ;2周期
      ;(2X+3)T
 ;双重循环
 DEL3:MOV R1,#Y;1
 DEL2:MOV R0,#X;1
 DEL1:DJNZ R0,DEL1;2
      DJNZ R1,DEL2;2
      RET;2
 ;设计一个延时100微秒的程序,12MHZ
 MOV R0,#049           ;1
 Loop:DJNZ R0,loop     ;2
 RET                   ;2
 ;--------------------------
 MOV R0,#048  
 NOP
 LOOP:DJNZ R0,LOOP
 RET

多开关控制多灯

 ORG 0000H
 AJMP START
 START:
       MOV P0,#0FFH
       MOV A,P0
       SWAP A;将低四位和高四位互换
       ANL A,#0F0H;保留高四位输出
       MOV P0,A
       LCALL DELAY
       SJMP START
 DELAY:
       MOV R6,#20
 DL2:      MOV R7,#7DH
 DL1:NOP
     NOP
     DJNZ R7,DL1
     DJNZ R6,DL2
     RET
     END

image-20220513164912605

流水灯,查表

 ORG 0000H
 AJMP MAIN
 ORG 0030H
 MAIN:MOV R0,#0FFH;R0为-1
     MOV R2,#16
     MOV DPTR,#TAB
 LOOP:
     INC R0
     MOV A,R0
     MOVC A,@A+DPTR
     
 SHOW:
      MOV P0,A
      LCALL DELAY
      LCALL DELAY
      LCALL DELAY
      DJNZ R2,LOOP;自减不为0跳转
      AJMP MAIN
 DELAY:
       MOV R6,#20
 DL2:  MOV R7,#500
 DL1:NOP
     NOP
     DJNZ R7,DL1
     DJNZ R6,DL2
     RET
 TAB:
 DB 11111110B
 DB 11111100B
 DB 11111000B
 DB 11110000B
 DB 11100000B
 DB 11000000B
 DB 10000000B
 DB 00000000B
 DB 00000001B
 DB 00000011B
 DB 00000111B
 DB 00001111B
 DB 00011111B
 DB 00111111B
 DB 01111111B
 DB 11111111B
     END

image-20220513172652683

流水灯2,按键控制

 ORG 0000H
 AJMP START
 ORG 0030H
 START:
      SETB P2.0
 MAIN:
      MOV R0,#0FFH
      MOV R2,#16
      MOV DPTR,#TAB
 LOOP:
      INC R0
      MOV A,R0
      MOVC A,@A+DPTR
 SHOW:
      JNB P2.0,INCR;为0跳转,JB为1跳转
      JMP SHOW
 INCR:
      JNB P2.0,INCR
      MOV P0,A
      LCALL DELAY
      LCALL DELAY
      LCALL DELAY
      DJNZ R2,LOOP
      AJMP MAIN
 DELAY:
       MOV R6,#255
 D2:   MOV R7,#255
       DJNZ R7,$
       DJNZ R6,D2
       RET
 TAB:
 DB 11111110B
 DB 11111100B
 DB 11111000B
 DB 11110000B
 DB 11100000B
 DB 11000000B
 DB 10000000B
 DB 00000000B
 DB 00000001B
 DB 00000011B
 DB 00000111B
 DB 00001111B
 DB 00011111B
 DB 00111111B
 DB 01111111B
 DB 11111111B
     END

image-20220513181246072

霓虹灯

posted @ 2022-05-14 15:58  Unclesundada  阅读(35)  评论(0)    收藏  举报