⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sound control.asm

📁 本程序使用STC单片机控制LED音频屏
💻 ASM
字号:
;--------------------------------------------------------------------------
;
;                             
;
;软件说明:
;此软件是V1.0版本2007-2-1
;作者:
;功能描述:                                     V1.0
;主机控制程序是用来控制显示同步花样和实现自定义花样
;可以做同步跳变、渐变,追逐,跑马等效果
;使用AT89C2051
;---------------------------------------------------------------------------
;------------------------引脚定义-------------------------------------------
DAT       BIT   P1.4
LAT       BIT   P1.5
OE        BIT   P1.6
CK        BIT   P1.7
;--------------------------------------------------------------------------
;变量定义表
;------------------------寄存器定义----------------------------------------
DISPNUM   DATA     24H
DISPBACK  DATA     25H
TEMP1     DATA     27H
TEMP2     DATA     28H
TEMP11    DATA     2DH
TEMP22    DATA     2CH
;---------------------------------------------------------------------------
;------------------------地址常量定义---------------------------------------
;地址常量定义
DUSU      EQU      8  ;控制段数
;---------------------------------------------------------------------------
;------------------------以下为程序清单-------------------------------------
     ORG 0000H
     JMP MAIN
     ORG 0030H
MAIN:CALL YS1
     CLR  OE
;******************************************************************
     CALL  PL1 ;跳变
     CALL  PL2 ;渐变
     CALL  PL3 ;头到尾
     CALL  PL4 ;尾到头
     CALL  PL5 ;中间到两头
     CALL  PL6 ;两头到中间
     CALL  PL7 ;7彩跑马
     JMP   MAIN
;******************************************************************
PL1:
    MOV   R0,#11H
    CALL  RUN1
    MOV   R0,#33H
    CALL  RUN1
    MOV   R0,#22H
    CALL  RUN1
    MOV   R0,#66H
    CALL  RUN1
    MOV   R0,#44H
    CALL  RUN1
    MOV   R0,#55H
    CALL  RUN1
    MOV   R0,#77H
    CALL  RUN1
    RET
;******************************************************************
PL2:   MOV R0,#7
       MOV DPTR,#TAB
KSJB:  MOV A,#00H
       MOVC A,@A+DPTR
       MOV DISPNUM,A
       INC DPTR
       MOV A,#00H
       MOVC A,@A+DPTR
       MOV DISPBACK,A
       MOV R4,#24
       MOV R5,#1
       MOV R2,#0FFH
       MOV R3,#00H
FOOL:  DEC R2
       INC R3
       MOV A,R2
       JNZ XIAN
       DJNZ R0,KSJB
       RET
XIAN:  CALL  RUN31
       ACALL DELAY0
       CALL  RUN32
       ACALL DELAY1
       DJNZ R5,XIAN   ;调整渐变时间间隔
       MOV R5,#1
       AJMP FOOL
   YS1:MOV R4,#1
 DELl6:MOV R6,#200    ;延时时间为196ms X R4
 DELl8:MOV R7,#200
       DELl7:DJNZ R7,DELl7
       DJNZ R6,DELl8
       DJNZ R4,DELl6
       RET
DELAY0:
   DEL:MOV TEMP1,R2
   DEL1:MOV TEMP2,R4
   DEL2:DJNZ TEMP2,DEL2
        DJNZ TEMP1,DEL1
DOUT0:  RET
DELAY1:
DEL3:  MOV TEMP1,R3
DEL4:  MOV TEMP2,R4
DEL5:  DJNZ TEMP2,DEL5
       DJNZ TEMP1,DEL4
DOUT1: RET
RUN31:MOV  R7,#DUSU/2
RUN33:MOV  A,DISPNUM
      CALL FS
      DJNZ R7,RUN33
      CALL XS
      RET
RUN32:MOV  R7,#DUSU/2
RUN34:MOV  A,DISPBACK
      CALL FS
      DJNZ R7,RUN34
      CALL XS
      RET
;******************************************************************
PL3:
MOV   DISPNUM,#33H
MOV   DISPBACK,#77H
CALL  RUN5
MOV   DISPNUM,#22H
MOV   DISPBACK,#33H
CALL  RUN5
MOV   DISPNUM,#66H
MOV   DISPBACK,#22H
CALL  RUN5
RET
;******************************************************************
PL4:
MOV   DISPNUM,#44H
MOV   DISPBACK,#66H
CALL  RUN2
MOV   DISPNUM,#55H
MOV   DISPBACK,#44H
CALL  RUN2
MOV   DISPNUM,#77H
MOV   DISPBACK,#55H
CALL  RUN2
RET
;******************************************************************
PL5:
MOV   DISPNUM,#11H
MOV   DISPBACK,#77H
CALL  RUN6
MOV   DISPNUM,#33H
MOV   DISPBACK,#11H
CALL  RUN6
MOV   DISPNUM,#22H
MOV   DISPBACK,#33H
CALL  RUN6
MOV   DISPNUM,#66H
MOV   DISPBACK,#22H
CALL  RUN6
MOV   DISPNUM,#44H
MOV   DISPBACK,#66H
RET
;******************************************************************
PL6:
CALL  RUN7
MOV   DISPNUM,#55H
MOV   DISPBACK,#44H
CALL  RUN7
MOV   DISPNUM,#77H
MOV   DISPBACK,#55H
CALL  RUN7
RET
;******************************************************************
PL7:
      MOV R3,#5
RUNC: MOV R0,#1
      CALL RUN9
      MOV R0,#2
      CALL RUN9
      MOV R0,#3
      CALL RUN9
      MOV R0,#4
      CALL RUN9
      MOV R0,#5
      CALL RUN9
      MOV R0,#6
      CALL RUN9
      MOV R0,#7
      CALL RUN9
      DJNZ R3,RUNC
      RET
;******************************************************************
RUN1:MOV  R2,#DUSU/2+1
     MOV  A,R0
RUN0:CALL FS
     DJNZ R2,RUN0
     CALL XS
     CALL YS
     RET
;******************************************************************
RUN9:MOV  R2,#DUSU
RUNB:MOV  A,R0
     CALL FS1
     INC  R0
     CJNE R0,#8,RUNA
     MOV  R0,#1
RUNA:DJNZ R2,RUNB
     CALL XS
     CALL YS1
     CALL YS1
     RET

;******************************************************************
RUN2: MOV  R0,#DUSU-1
      MOV  R1,#1
RUN22:MOV  A,R0
      MOV  R2,A
RUN23:MOV  A,DISPBACK
      CALL FS1
      DJNZ R2,RUN23
      MOV  A,R1
      MOV  R2,A
RUN24:MOV  A,DISPNUM
      CALL FS1
      DJNZ R2,RUN24
      CALL XS
      CALL YS1
      INC  R1
      DJNZ R0,RUN22
      RET
;******************************************************************
FS:    MOV  C,ACC.0
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.1
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.2
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.4
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.5
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.6
       MOV  DAT,C
       SETB CK
       CLR  CK
       RET
;******************************************************************
FS1:   MOV  C,ACC.0
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.1
       MOV  DAT,C
       SETB CK
       CLR  CK
       MOV  C,ACC.2
       MOV  DAT,C
       SETB CK
       CLR  CK
       RET
;******************************************************************
XS:    CLR  LAT
       NOP
       SETB LAT
       NOP
       NOP
       CLR  LAT
       RET
;******************************************************************
YS:    MOV R6,#10
DL8:   MOV R5,#255
DEL7:  MOV R4,#255
DEL6:  DJNZ R4,DEL6
       DJNZ R5,DEL7
       DJNZ R6,DL8
       RET
;******************************************************************
RUN6: MOV  R0,#DUSU/2-1
      MOV  R1,#DUSU/2-1
      MOV  R2,#1
RUN60:MOV  A,R0
      MOV  R3,A
RUN61:MOV  A,DISPBACK
      CALL FS1
      DJNZ R3,RUN61
      MOV  A,R2
      MOV  R3,A
RUN62:MOV  A,DISPNUM
      CALL FS
      DJNZ R3,RUN62
      MOV  A,R1
      MOV  R3,A
RUN63:MOV  A,DISPBACK
      CALL FS1
      DJNZ R3,RUN63
      CALL XS
      CALL YS1
      INC  R2
      DEC  R0
      DJNZ R1,RUN60
      RET
;******************************************************************
RUN7: MOV  R0,#1
      MOV  R1,#1
      MOV  R2,#DUSU/2-1
RUN70:MOV  A,R0
      MOV  R3,A
RUN71:MOV  A,DISPNUM
      CALL FS1
      DJNZ R3,RUN71
      MOV  A,R2
      MOV  R3,A
RUN72:MOV  A,DISPBACK
      CALL FS
      DJNZ R3,RUN72
      MOV  A,R1
      MOV  R3,A
RUN73:MOV  A,DISPNUM
      CALL FS1
      DJNZ R3,RUN73
      CALL XS
      CALL YS1
      INC  R0
      INC  R1
      DJNZ R2,RUN70
      RET
;******************************************************************
RUN5: MOV  R0,#DUSU-1
      MOV  R1,#1
RUN52:MOV  A,R1
      MOV  R2,A
RUN53:MOV  A,DISPNUM
      CALL FS1
      DJNZ R2,RUN53
      MOV  A,R0
      MOV  R2,A
RUN54:MOV  A,DISPBACK
      CALL FS1
      DJNZ R2,RUN54
      CALL XS
      CALL YS1
      INC  R1
      DJNZ R0,RUN52
      RET
;******************************************************************
TAB:  DB 77H,11H,33H,22H,66H,44H,55H,77H
;******************************************************************
      END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -