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

📄 004.asm

📁 换色
💻 ASM
📖 第 1 页 / 共 5 页
字号:
           MOV   A, 13H          ;传送 寄存器A,13H
           MOV   B, R0          ;传送 B,通用寄存器0
           DIV   AB          ;无符号除法 AB
           MOV   09H, A          ;传送 09H,寄存器A
           MOV   A, 14H          ;传送 寄存器A,14H
           MOV   B, R0          ;传送 B,通用寄存器0
           DIV   AB          ;无符号除法 AB
           MOV   0AH, A          ;传送 0AH,寄存器A
           AJMP  SBA          ;绝对转移 SBA
      ST7: CLR   C          ;清0 进位标志/累加位
           MOV   08H, #00H          ;传送 08H,立即数00H
           MOV   09H, 08H          ;传送 09H,08H
           MOV   0AH, 08H          ;传送 0AH,08H
      SBA: MOV   A, 11H                  ;传送 寄存器A,11H        
           MOV   B, #15          ;传送 B,立即数15
           DIV   AB          ;无符号除法 AB
           MOV   27H, A          ;传送 27H,寄存器A
           MOV   A, 27H          ;传送 寄存器A,27H
           MOV   B, #5          ;传送 B,立即数5
           MUL   AB          ;两数相乘 AB
           MOV   28H, A            ;传送 28H,A  
           MOV   DPTR, #Flash          ;传送 DPTR,立即数Flash
           MOV   A, 27H          ;传送 寄存器A,27H
           MOVC   A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
           MOV   1DH, A              ;传送 1DH,A    
           AJMP  Recieve          ;绝对转移 Recieve
      ST8: CLR   C          ;清0 进位标志/累加位
           SETB  TR0          ;位-置1 TR0
           CLR   TR1          ;清0 TR1
           MOV   A, 0FH          ;传送 寄存器A,0FH
           MOV   B, #35          ;传送 B,立即数35
           DIV   AB          ;无符号除法 AB
           MOV   34H, A          ;传送 34H,寄存器A
           ACALL  Q22          ;绝对调用 Q22
           MOV   A, 10H          ;传送 寄存器A,10H
           CPL   A          ;取反 寄存器A
           MOV   B, #08H          ;传送 B,立即数08H
           DIV   AB          ;无符号除法 AB
           CJNE  A, #31, ST9          ;比较-不等转移 寄存器A,立即数31,
           MOV   37H, #30          ;传送 37H,立即数30
           JMP  ST10           ;间接转移到 ST10,
      ST9: MOV   37H, A          ;传送 37H,寄存器A
     ST10: ACALL   QQ4          ;绝对调用 QQ4
           MOV   A, 11H                  ;传送 寄存器A,11H        
           MOV   B, #06H          ;传送 B,立即数06H
           DIV   AB          ;无符号除法 AB
           CJNE  A, #41, SB2          ;比较-不等转移 寄存器A,立即数41,
           MOV   27H, #40          ;传送 27H,立即数40
           JMP   SBE          ;间接转移到 SBE
      SB2: CJNE  A, #42, SB3          ;比较-不等转移 寄存器A,立即数42,
           MOV   27H, #40          ;传送 27H,立即数40
           JMP   SBE          ;间接转移到 SBE
      SB3: MOV   27H, A          ;传送 27H,寄存器A
      SBE: MOV   A, 27H          ;传送 寄存器A,27H
           MOV   B, #5          ;传送 B,立即数5
           MUL   AB          ;两数相乘 AB
           MOV   28H, A            ;传送 28H,A  
           MOV   DPTR, #Flash          ;传送 DPTR,立即数Flash
           MOV   A, 27H          ;传送 寄存器A,27H
           MOVC   A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
           MOV   1DH, A           ;传送 1DH,A 
           AJMP  Recieve          ;绝对转移 Recieve
;=========================================================  
PROGDMX: MOV  DPL, 1FH          ;传送 DPL,1FH
         MOV  DPH, 2BH          ;传送 DPH,2BH
         MOV  A, 35H      ;DMX512定时器自走程序       传送 寄存器A,35H      
         CJNE  A, 2AH, QQ1          ;比较-不等转移 寄存器A,2AH,
         MOVC  A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
         MOV  22H, A          ;传送 22H,寄存器A
         MOV   35H, #00H          ;传送 35H,立即数00H
         RET          ;子程序返回 
    QQ1: MOVC  A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
         MOV  22H, A          ;传送 22H,寄存器A
         INC  35H          ;加1 35H
         RET          ;子程序返回 
  MM0: POP   0AH          ;出栈 0AH
       POP   09H          ;出栈 09H
       POP   08H          ;出栈 08H
       POP   24H          ;出栈 24H
       POP   17H          ;出栈 17H
       POP   2BH          ;出栈 2BH
       POP   1FH          ;出栈 1FH
       POP   1CH          ;出栈 1CH
       POP   1EH          ;出栈 1EH
       POP   2AH          ;出栈 2AH
       POP   37H          ;出栈 37H
       POP   34H          ;出栈 34H
       POP   1DH          ;出栈 1DH
       POP   28H          ;出栈 28H
       POP   27H          ;出栈 27H
   M0: MOV  36H,#00H     ;按钮处理程序 传送 36H,立即数00H     
       MOV  19H, #03H          ;传送 19H,立即数03H
       MOV  A, 38H          ;传送 寄存器A,38H
       JNZ  AD          ;寄存器不为0转移 AD
       JMP  ADDR          ;间接转移到 ADDR
   AD: JB  P3.4, N0          ;位-为1转移到 接口3第4位,N0
   M1: CALL  DELAY          ;调用 DELAY
       MOV  A, 38H          ;传送 寄存器A,38H
       CJNE  A, #01H, Y2          ;比较-不等转移 寄存器A,立即数01H,
  SS1: ACALL  ALUP          ;绝对调用 ALUP
       CALL  DELAY          ;调用 DELAY
       JB   P3.4, N0          ;位-为1转移到 接口3第4位,N0
       CALL  DELAY          ;调用 DELAY
       AJMP  SS1          ;绝对转移 SS1
   Y1: JB   P3.4, N0          ;位-为1转移到 接口3第4位,N0
       CALL   DELAY          ;调用 DELAY
       DJNZ  19H, Y1          ;减一不为0转移 19H,Y1
       MOV  19H, #03H          ;传送 19H,立即数03H
       AJMP  M1          ;绝对转移 M1
   Y2: CJNE  A, #02H, Y3          ;比较-不等转移 寄存器A,立即数02H,
       ACALL  FLUP          ;绝对调用 FLUP
       ACALL  FLDISP          ;绝对调用 FLDISP
       AJMP  Y1          ;绝对转移 Y1
   Y3: CJNE  A, #03H, Y4          ;比较-不等转移 寄存器A,立即数03H,
       ACALL  PRUP          ;绝对调用 PRUP
       AJMP  Y1          ;绝对转移 Y1
   Y4: CJNE  A, #04H, Y5          ;比较-不等转移 寄存器A,立即数04H,
       ACALL  SPUP          ;绝对调用 SPUP
       ACALL  SPDISP          ;绝对调用 SPDISP
       AJMP  Y1          ;绝对转移 Y1
   Y5: ACALL  RedUP          ;绝对调用 RedUP
       ACALL  RedDISP          ;绝对调用 RedDISP
       CALL  DELAY          ;调用 DELAY
       JB   P3.4, N0          ;位-为1转移到 接口3第4位,N0
       AJMP  Y5          ;绝对转移 Y5
   N0: MOV  36H,#00H          ;传送 36H,立即数00H
       MOV  19H, #03H          ;传送 19H,立即数03H
       MOV  A, 38H          ;传送 寄存器A,38H
       JNZ  AE          ;寄存器不为0转移 AE
       JMP  ADDR          ;间接转移到 ADDR
   AE: CJNE  A, #05H, SS3          ;比较-不等转移 寄存器A,立即数05H,
       JMP  SS4          ;间接转移到 SS4
  SS3: JB  P3.5, M0             ;位-为1转移到 接口3第5位,M0   
   N1: CALL  DELAY          ;调用 DELAY
       MOV  A, 38H          ;传送 寄存器A,38H
       CJNE  A, #01H, Y7          ;比较-不等转移 寄存器A,立即数01H,
 SS2:  ACALL  ALDOWN          ;绝对调用 ALDOWN
       CALL   DELAY          ;调用 DELAY
       JB   P3.5, M0          ;位-为1转移到 接口3第5位,M0
       CALL   DELAY          ;调用 DELAY
       AJMP  SS2          ;绝对转移 SS2
   Y6: JB   P3.5, M0          ;位-为1转移到 接口3第5位,M0
       CALL   DELAY          ;调用 DELAY
       DJNZ  19H, Y6          ;减一不为0转移 19H,Y6
       MOV  19H, #03H          ;传送 19H,立即数03H
       AJMP  N1           ;绝对转移 N1,
   Y7: CJNE  A, #02H, Y8          ;比较-不等转移 寄存器A,立即数02H,
       ACALL  FLDOWN          ;绝对调用 FLDOWN
       ACALL  FLDISP          ;绝对调用 FLDISP
       AJMP  Y6          ;绝对转移 Y6
   Y8: CJNE  A, #03H, Y9          ;比较-不等转移 寄存器A,立即数03H,
       ACALL  PRDOWN          ;绝对调用 PRDOWN
       AJMP   Y6          ;绝对转移 Y6
   Y9: CJNE A, #04H, Y10          ;比较-不等转移 寄存器A,立即数04H,
       ACALL  SPDOWN          ;绝对调用 SPDOWN
       ACALL  SPDISP          ;绝对调用 SPDISP
       AJMP   Y6          ;绝对转移 Y6
  Y10: ACALL  GreenUP          ;绝对调用 GreenUP
       ACALL  GreenDISP          ;绝对调用 GreenDISP
       CALL  DELAY          ;调用 DELAY
       JNB   P3.5, Y10          ;位为0转移到 接口3第5位,Y10
       AJMP  M0          ;绝对转移 M0
DELAY: MOV  R2, #180  ;延时程序 传送 通用寄存器2,立即数180  
   D1: MOV  R3, #248          ;传送 通用寄存器3,立即数248
       DJNZ  R3, $          ;减一不为0转移 通用寄存器3,到本行
       DJNZ  R2, D1          ;减一不为0转移 通用寄存器2,D1
       RET          ;子程序返回 
  SS4: JB  P3.3, SS3          ;位-为1转移到 接口3第3位,SS3
       ACALL  BlueUP          ;绝对调用 BlueUP
       ACALL  BlueDISP          ;绝对调用 BlueDISP
       CALL  DELAY          ;调用 DELAY
       AJMP  SS4          ;绝对转移 SS4
    ALUP: INC R7             ;亮度增1============================== 加1 通用寄存器7,
          MOV  A, #100          ;传送 寄存器A,立即数100
          SUBB  A, R7          ;带进位减法 寄存器A,通用寄存器7
          JC  L8          ;C位为1转移到 L8
          CALL  ALDISP          ;调用 ALDISP
          RET          ;子程序返回 
      L8: CLR  C          ;清0 进位标志/累加位
          MOV  R7, #00H          ;传送 通用寄存器7,立即数00H
          CALL  ALDISP          ;调用 ALDISP
          RET          ;子程序返回 
  ALDOWN: DEC  R7     ;亮度减1 减1 通用寄存器7,
          MOV  A, #100          ;传送 寄存器A,立即数100
          SUBB  A, R7          ;带进位减法 寄存器A,通用寄存器7
          JC  L10          ;C位为1转移到 L10
          CALL  ALDISP          ;调用 ALDISP
          RET          ;子程序返回 
     L10: CLR  C          ;清0 进位标志/累加位
          MOV  R7, #100          ;传送 通用寄存器7,立即数100
          CALL  ALDISP          ;调用 ALDISP
          RET          ;子程序返回 
    FLUP: INC  27H            ;频闪加1=================================== 加1 27H,
          MOV  A, 28H          ;传送 寄存器A,28H
          ADD  A, #5          ;两数相加 寄存器A,立即数5
          MOV  28H, A          ;传送 28H,寄存器A
          MOV  A, #40          ;传送 寄存器A,立即数40
          CLR   C          ;清0 进位标志/累加位
          SUBB  A, 27H          ;带进位减法 寄存器A,27H
          JC  L24          ;C位为1转移到 L24
          AJMP  L25            ;绝对转移 L25,
     L24: CLR  C          ;清0 进位标志/累加位
          MOV  27H, #00H          ;传送 27H,立即数00H
          MOV  28H, #00H          ;传送 28H,立即数00H
     L25: MOV  DPTR, #Flash          ;传送 DPTR,立即数Flash
          MOV  A, 27H          ;传送 寄存器A,27H
          MOVC  A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
          MOV  1DH, A          ;传送 1DH,寄存器A
          RET          ;子程序返回 

⌨️ 快捷键说明

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