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

📄 av.asm

📁 一套全遥控6声道AV机的汇编程序,该程序已经商业化的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
         DJNZ   R1,GIF_V3  

V3_0:    MOV   A,DP_MODE              ; 频谱模式的转换
         CJNE  A,#0,V3_1
         MOV   DPTR,#TAB26
         
V3_1:    CJNE  A,#1,V3_2
         MOV   DPTR,#TAB27

V3_2:    CJNE  A,#2,V3_3
         MOV   DPTR,#TAB28

V3_3:    CJNE  A,#3,V3_4
         MOV   DPTR,#TAB29

V3_4:    CJNE  A,#4,V3_5
         MOV   DPTR,#TAB30

V3_5:    CJNE  A,#5,V3_8
         MOV   DPTR,#TAB31
         
V3_8:    JB    AUTO_SIGN, V3_12         ;是信号频谱则转相关处理
      
         MOV   R0,#29H                  ;是自动频谱转相关处理
         MOV   R1,#4
V3_11:   MOV   A,DP_NUM          
         RL    A   
         MOVC  A,@A+DPTR
         MOV   @R0,A
         DEC   R0
     
         MOV   A,DP_NUM
         RL    A   
         INC   A
         MOVC  A,@A+DPTR
         MOV   @R0,A
         DEC   R0
         DJNZ  R1,V3_11
         JMP   GIF_1D

        
V3_12:   MOV    R0,#29H   ;-------------;G1-G4数据输入(显示频谱)
         MOV    R1,#AD_SIM1
         MOV    R2,#4     ;-----------一个循环输入2个字节,4次刚好把8个缓冲区数据处理完毕
GIF_V4:  MOV    A,@R1
         RL     A
         MOVC   A, @A+DPTR
         MOV    @R0,A
         DEC    R0
        
         MOV    A,@R1  
         RL     A
         INC    A
         MOVC   A,@A+DPTR 
         MOV    @R0,A
         DEC    R0
         INC    R1
         DJNZ   R2,GIF_V4
         
GIF_1D:  MOV   A,  23H            ;加上装饰条
         ADD   A,  #40H
         MOV   23H,A
         MOV   A,  29H            ;加上装饰条
         ADD   A,  #40H
         MOV   29H,A                
         JMP   GIF_1C
;-------------------------------------------------------------

GIF_V9:  MOV   22H,#0             ;开机音量自跑过程中不显示频谱,把G1-G4数据清空(!!!!!!!!!)
         MOV   23H,#60H           ;留下装惜条和显示最低位频谱(20H+40H)
         MOV   24H,#0
         MOV   25H,#20H           ;显示最低位频谱
         MOV   26H,#0
         MOV   27H,#20H           ;显示最低位频谱
         MOV   28H,#0
         MOV   29H,#60H           ;留下装惜条和显示最低位频谱(20H+40H)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 跑过场字幕;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

GIF_1C:  MOV    A,GIF_SIGN         
         CJNE   A,#1,GIF_2
         INC    GIF_TIME1
         MOV    A,GIF_TIME1
         CJNE   A,#70,GIF_A1      ;跑字速度
         MOV    GIF_TIME1,#0
         MOV    DPTR,#TAB2
         CALL   GIF_LEFT           ;调用左移一位子程序
                           
         INC    GIF_LONG           ;动画字幕长度 
         MOV    A,GIF_LONG
         CJNE   A,#23,C5_1         ;跑23步后结束
         MOV    GIF_LONG,#0        
         MOV    GIF_SIGN,#2        ;开机序幕结束,SIGN=2
         
GIF_A1:  JMP    RET1        
;;-----------------------------------------------------------------------------------------------
;;-----------------------------------------------------------------------------------------------  
GIF_2:   MOV   A,GIF_SIGN   ;;;;;;;;;--------------------------显示带功能的数值,如VOL,BASS,ECHO等
         CJNE  A,#2,GIF_X1

         MOV    R0,#2CH          ;G6-G12字母区数据前先把该处理区的数据清空免得重叠        
         MOV    R1,#14
GIF_2X:  MOV    @R0,#0
         INC    R0
         DJNZ   R1,GIF_2X
        
GIF_2A:  INC    GIF_TIME1         ;GIF_SIGN=2的持续时间        
         MOV    A,GIF_TIME1
         CJNE   A,#150, GIF_0B
         MOV    GIF_TIME1,#0
         INC    GIF_LONG
         MOV    A,GIF_LONG
         CJNE   A,#30,GIF_0B
         MOV    GIF_LONG,#0
         MOV    GIF_SIGN,#3
         JMP    RET1 
        
GIF_0B:  MOV   R7,SYS_SIGN        ;处理G9-G13的显示缓冲区数据
         CJNE  R7,#0,GIF_C
         
         MOV   DPTR,#TAB4         ;----------主音量显示                                (NO1)
         CALL  GIF_DIG4           ;----------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, MAIN_DATA       ;----------主音量分解
         CALL  GIF_DG3A           ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1
GIF_X1:  LJMP   GIF_3                 
GIF_C:   ;-----------------------------输入INPUT显示                                    (NO2) 
         CJNE R7,#17,GIF_D       
         MOV  R6,INPUT_DATA
         CJNE R6,#1,GIF_C2
         MOV  DPTR,#TAB18       ;显示CD/VCD
         CLR  AC3               ;4053的控制信号
         JMP  GIF_C5        
GIF_C2:  CJNE R6,#2,GIF_C3        
         MOV  DPTR,#TAB19       ;显示TUNER
         CLR  AC3
         JMP  GIF_C5
         
GIF_C3:  MOV  DPTR,#TAB20       ;显示AC-3
         SETB  AC3

GIF_C5:  CALL GIF_DIG7           ;-----------调用7位显示数据(G6-G12)
  C5_1:  JMP  RET1

GIF_D:   CJNE R7,#1,GIF_E;-----------输入BASS显示                                       (NO3)
         MOV  DPTR,#TAB5
         CALL GIF_DIG4 
         MOV  DPTR,#TAB21
         MOV  A,BASS_DATA
         CALL GIF_DG3B        
         JMP   RET1          

GIF_E:   CJNE R7,#2,GIF_F;-----------输入TREBLE显示                                      (NO4)
         MOV  DPTR,#TAB6
         CALL GIF_DIG4 
         MOV  DPTR,#TAB21
         MOV  A,TR_DATA
         CALL GIF_DG3B         
         JMP   RET1 
         
GIF_F:   CJNE R7,#3,GIF_G
         MOV   DPTR,#TAB13        ;----------MVOL显示                                     (NO5)
         CALL  GIF_DIG4           ;----------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, MVOL_DATA       ;----------MVOL音量分解
         CALL  GIF_DG3A           ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1 
       
GIF_G:   CJNE R7,#4,GIF_H
         MOV   DPTR,#TAB12        ;----------MECHO显示                                     (NO6)
         CALL  GIF_DIG4           ;----------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, ECHO_DATA       ;----------ECHO分解
         CALL  GIF_DG3A           ;----------调用低3位显示数据(G8-G6的显示)   
         JMP   RET1     

GIF_H:   CJNE R7,#5,GIF_I
         MOV   DPTR,#TAB14        ;----------DELAY显示                                      (NO7)
         CALL  GIF_DIG4           ;----------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, DELAY_DATA      ;----------DELAY分解
         CALL  GIF_DG3A           ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1 
        
GIF_I:   CJNE R7,#6,GIF_J
         MOV   DPTR,#TAB8        ;----------SL显示                                           (NO8)
         CALL  GIF_DIG4           ;---------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, SURL_DATA      ;----------SL音量分解
         CALL  GIF_DG3A          ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1    

GIF_J:   CJNE  R7,#7,GIF_K
         MOV   DPTR,#TAB9        ;----------SR显示                                           (NO9)
         CALL  GIF_DIG4          ;---------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, SURR_DATA      ;----------SUR音量分解
         CALL  GIF_DG3A          ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1 
     
GIF_K:   CJNE R7,#8,GIF_L
         MOV   DPTR,#TAB11        ;---------CEN显示                                          (NO10)
         CALL  GIF_DIG4           ;---------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, CEN_DATA       ;----------CEN音量分解
         CALL  GIF_DG3A          ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1 
    
GIF_L:   CJNE  R7,#9,GIF_M
         MOV   DPTR,#TAB10        ;----------BW显示                                          (NO11)
         CALL  GIF_DIG4           ;---------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, BW_DATA        ;----------BW音量分解
         CALL  GIF_DG3A          ;----------调用低3位显示数据(G8-G6的显示)
         JMP   RET1 
      
GIF_M:   CJNE  R7,#11,GIF_N
         MOV   DPTR,#TAB15        ;----------DISP显示                                         (NO12)
         CALL  GIF_DIG4           ;---------调用高4位显示(G12-G9的显示)
         MOV   DPTR,#TAB3
         MOV   A, DSP_DATA        ;----------DSP分解
         CALL  GIF_DG3A           ;----------调用低3位显示数据(G8-G6的显示)   
         JMP   RET1   

GIF_N:   CJNE  R7,#15,GIF_O       ;                                                            (NO13)
         MOV   DPTR,#TAB22
         JNB   MUTE_DATA,GIF_N1   ;不是静音状态不显示静音, 显示主音量值
         CALL  GIF_DIG7
         JMP   RET1
GIF_N1:  MOV   SYS_SIGN,#0        
         JMP   RET1

GIF_O:   CJNE  R7,#13,GIF_P       ;显示5.1ch                                                  (NO12)
         MOV   DPTR,#TAB16
         CALL  GIF_DIG7
         JMP   RET1    

GIF_P:   CJNE  R7,#12,GIF_Q       ;显示2.1CH                                                  (NO13)
         MOV   DPTR,#TAB17
         CALL  GIF_DIG7
         JMP   RET1 

GIF_Q:   CJNE  R7,#14,GIF_R ;                                                                  (NO14)
         JB    LOUND_DATA,GIF_Q1  
         MOV   DPTR,#TAB24
         JMP   GIF_Q2
GIF_Q1:  MOV   DPTR,#TAB23
GIF_Q2:  CALL  GIF_DIG7
         JMP   RET1  

GIF_R:   CJNE  R7,#20,GIF_S
         MOV   DPTR,#TAB40
         CALL  GIF_DIG7

GIF_S:   NOP

RET5:    JMP   RET1

;;--------------------------------------------------------------------------
;;--------------------------------------------------------------------------

GIF_3:   CALL  CLR_ALL
         MOV    GIF_SIGN,#1
         JMP    RET1
RET1:    JMP    DISP_B

;++++++++++++++++++++++++显示缓冲区清空子程序++++++++++++++++++++++++++++

CLR_ALL: MOV   R2,#26              ;把显示缓冲区共28个单元数值清0
         MOV   R1,#22H
DES2:    MOV   @R1,#0
         INC   R1
         DJNZ  R2,DES2
         RET

;+++++++++++++++++++++++++G12-G67位字母左移子程序;++++++++++++++++++++++

GIF_LEFT:MOV    39H,37H;-------------------;G11转G12       ;左移一位子程序
         MOV    38H,36H;        
         MOV    37H,35H;-------------------;G10转G11
         MOV    36H,34H
         MOV    35H,33H;-------------------;G9转G10
         MOV    34H,32H  
         MOV    33H,31H;-------------------;G8转G9
         MOV    32H,30H
         MOV    31H,2FH;-------------------;G7转G8
         MOV    30H,2EH 
         MOV    2FH,2DH;-------------------;G6转G7
         MOV    2EH,2CH
         
         MOV    A,GIF_LONG   ;;更新最低位数值
         RL     A
         MOVC   A,@A+DPTR
         MOV    2CH,A

         MOV    A,GIF_LONG
         RL     A
         INC    A
         MOVC   A,@A+DPTR
         MOV    2DH,A
         RET

;+++++++++++++++++++++++++G12-G9高4位字母存入子程序;++++++++++++++++++++++
GIF_DIG4:MOV   R1,#8
         MOV   R2,#0
         MOV   R0,#39H

DIG4_1:  MOV   A,R2
         MOVC  A,@A+DPTR
         MOV   @R0,A
         DEC   R0
         INC   R2
         DJNZ  R1,DIG4_1
         RET
;++++++++++++++++++++++++G6-G8低3位数值输入程序A;++++++++++++++++++++++++++++++++
GIF_DG3A:MOV   DIV_16,A
         CALL  DIV10
         MOV   A,DISP_H           ;输入个位显示数值到显示缓冲区(G8)
         RL    A
         MOVC  A,@A+DPTR
         MOV   2FH,A 
         MOV   A,DISP_H
         RL    A
         INC   A
         MOVC  A,@A+DPTR
         MOV   2EH,A

         MOV   A,DISP_L           ;输入个位显示数值到显示缓冲区(G8)
         RL    A
         MOVC  A,@A+DPTR
         MOV   2DH,A 
         MOV   A,DISP_L
         RL    A
         INC   A
         MOVC  A,@A+DPTR
         MOV   2CH,A
         RET

;++++++++++++++++++++++++G6-G8低3位数值输入程序A;++++++++++++++++++++++++++++++++
GIF_DG3B:
         MOV  B,#6
         MUL  AB
         MOV  R1,A
         MOV  R0,#31H
         MOV  R2,#6
                    
 DG3B_1: MOV  A,R1
         MOVC A,@A+DPTR
         MOV  @R0,A
         DEC  R0
         INC  DPTR             
         DJNZ R2,DG3B_1
         RET
 
;+++++++++++++++++++++++++G12-G9 7位字母存入子程序;++++++++++++++++++++++
GIF_DIG7:MOV   R1,#14        ;处理14个显示缓冲区,即G6-G12的显示区间
         MOV   R2,#0         ;DPTR指针
         MOV   R0,#39H

DIG7_1:  MOV   A,R2
         MOVC  A,@A+DPTR
         MOV   @R0,A
         DEC   R0
         INC   R2
         DJNZ  R1,DIG7_1
         RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AD模拟值运算;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AD_GO  :  INC   TIME1
          PUSH  ACC
          PUSH  PSW
 AD:      MOV   R3,AD_SIGN
          CJNE  R3,#0,AD_1          

          SETB  AD_OUT

⌨️ 快捷键说明

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