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

📄 av-p06a.asm

📁 型号: AV-P06A 5.1CH功率放大器 89C52+12M+PT2314+PT2315+2*M62429+PT6311+CS16210+6221+VFDGDT1313A,包含VFD真值表手册资料
💻 ASM
📖 第 1 页 / 共 5 页
字号:
RM12:    MOV  A,BASS_DATA
         DEC  A
         CJNE A,#255,VL_2A
         RET
VL_2A:   MOV  BASS_DATA,A

VL3:     CJNE R5,#2,VL4               ;高音量调节,下限为0
RM13:    MOV  A,TREB_DATA
         DEC  A
         CJNE A,#255,VL_3A
         RET
VL_3A:   MOV  TREB_DATA,A

VL4:     CJNE R5,#3,VL5               ;卡拉OK量调节,下限为0
RM14:    MOV  A,MVOL_DATA
         DEC  A
         CJNE A,#255,VL_4A
         RET
VL_4A:   MOV  MVOL_DATA,A

VL5:     CJNE R5,#4,VL7               ;ECHO量调节,下限为0
RM15:    MOV  A,ECHO_DATA
         DEC  A
         CJNE A,#255,VL_5A
         RET
VL_5A:   MOV  ECHO_DATA,A


 
VL7:     CJNE R5,#6,VL8               ;SURL调节,下限为0
RM16:    MOV  A,SURL_DATA
         DEC  A
         CJNE A,#255,VL_7A
         RET
VL_7A:   MOV  SURL_DATA,A

VL8:     CJNE R5,#7,VL9               ;SURR调节,下限为0
RM17:    MOV  A,SURR_DATA
         DEC  A
         CJNE A,#255,VL_8A
         RET
VL_8A:   MOV  SURR_DATA,A

VL9:     CJNE R5,#8,VL10              ;CEN调节,下限为0
RM18:    MOV  A,CEN_DATA
         DEC  A
         CJNE A,#255,VL_9A
         RET
VL_9A:   MOV  CEN_DATA,A  

VL10:    CJNE R5,#9,VL11              ;SW调节,下限为0
RM19:    MOV  A,BW_DATA
         DEC  A
         CJNE A,#255,VL_10A
         RET
VL_10A:  MOV  BW_DATA,A

VL11:    RET

;;-------------------------操作优先排位子程序--------------------------------

FRIST:   MOV   A,SYS_SIGN
         CJNE  A,#17,FRI_2       ;处在INPUT显示模式下,按下加减键会把VOL操作排在第一位
         MOV   SYS_SIGN,#0        
FRI_2:   CJNE  A,#13,FRI_3       ;处在5.1显示模式下,按下加减键会把VOL操作排在第一位
         MOV   SYS_SIGN,#0
FRI_3:   CJNE  A,#12,FRI_4       ;处在2.0显示模式下,按下加减键会把VOL操作排在第一位    
         MOV   SYS_SIGN,#0
FRI_4:   CJNE  A,#14,FRI_5       ;处在LOUND显示模式下,按下加减键会把VOL操作排在第一位
         MOV   SYS_SIGN,#0
FRI_5:   CJNE  A,#15,FRI_6       ;处在MUTE显示模式下,按下加减键会把VOL操作排在第一位
         MOV   SYS_SIGN,#0
         CLR   MUTE_FLAG         ;顺便把静音也关闭了
FRI_6:   RET              
        
;;--------------------------无按键按下自动复位子程序----------------------------
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

KEY_REST: MOV    A,KEY_NUM
          JNZ    BCK_1               ; 
  
BCK_0:    INC    R4                  ;
          CJNE   R4,#150,BCK_2       ;
BCK_3 :   MOV    R4,#00H
          INC    R5
          CJNE   R5,#16,BCK_2
          MOV    R5,#00H      
          
          MOV    SYS_SIGN,#17        ;把SYS_SIGN预置为"INPUT状态"
          MOV    KEY_DELAY,#129
          JMP    BCK_2   
         
BCK_1:    MOV    R4,#00
          MOV    R5,#00
          MOV    GIF_SIGN,#2        ;有按键按把GIF_SIGN置2
          MOV    GIF_LONG,#0                              
BCK_2:    JMP    RUN2_1
;/////////////////////////////////////////////////////////////////////////////////////////                       

TIME   : PUSH   ACC
         PUSH   PSW 
         
         SETB  RS0
         MOV    A, REM_SIGN
         CJNE   A,#03H,EXIT1      ;不是连发的定时溢出标记清0
         INC    R1                ;执行一次遥控按键处理后,T0延事超过60ms,R1+1
         INC    R2                ;T0中断次数存储单元,当T0中断3次(每次60ms),本次遥控结束          
         MOV    A,R2
         SUBB   A,#3              ;判断在250ms内有无连发码出现
         JNC    EXIT0             ;无则清0
         MOV    TH0,#15H          ;定时值60MS
         MOV    TL0,#0A0H
         SETB   TR0
         JMP    EXIT2 
EXIT0:   CLR    TR0           
         MOV    R2,#00H
EXIT1:   MOV    REM_SIGN,#00H
EXIT2:   POP    PSW
         POP    ACC
         RETI
         NOP
         NOP

INT_REM  :   MOV   MTD2,A
         MOV   MTD3,PSW
         MOV   MTD4,DPH
         MOV   MTD5,DPL

         SETB  RS0                 ;使用另一组寄存器
         MOV   R2,#00H
         CLR   TR0
         CLR   EX0
         MOV   R5,REM_SIGN
         CJNE  R5,#00H,INT_2       ;初始化原始数据
         MOV   R0,#REM_FIX         ;遥控数据接收的首址
         MOV   R1,#0               ;
         MOV   R2,#0               ;R2是连发溢出标记,当T0延时60ms*3后仍未检测到有遥控中断,本次遥控结束
         MOV   R3,#8               ;每个字节的位数
         MOV   R6,#0               ;数据对比单元
         MOV   R7,#4               ;要接收的字节数

         MOV   REM_SIGN,#01H       ;建立标记01                            
         JMP   INT_OFF
INT_2:   CJNE  R5,#01H,INT_3       ;起始码和结果码的判断
         MOV   A,#30H              ;
         MOV   R6,TH0
         SUBB  A,R6  
         JNC   ERR_OUT             ;启动码+结果码<12.55ms退出(忽略TL0的值)
         MOV   A,#039H
         SUBB  A,R6  
         JC    ERR_OUT             ;启动码+结果码〉14.6ms推出(忽略TL0的值)
         MOV   REM_SIGN,#02H       ;建立标记02                                  
         JMP   INT_OFF
INT_3:   CJNE  R5,#02H,INT_4       ;(old key_out)
         MOV   A,#03H
         MOV   R6,TH0             
         SUBB  A,R6                ;R6内存TH0的值
         JNC   ERR_OUT             ;周期<1ms退出
         MOV   A,#0BH
         SUBB  A,R6
         JC    ERR_OUT             ;周期>2.69ms退出    
         MOV   A,#6H               ;输入检测周期1.6ms用来判断1或0
         SUBB  A,R6                ;      
         MOV   A,@R0               ;
         RRC   A                   ;存入一位数值
         MOV   @R0,A
         DJNZ  R3,INT_OFF                       
INT_3_1 :INC   R0
         MOV   R3,#08H
         DJNZ  R7,INT_OFF         
         MOV   A,REM_KEY1               
         CPL   A
         CJNE  A,REM_KEY,ERR_OUT   ;正反码比较,错则退         
         MOV   REM_TIME,#8         ;
;----------------------------------------------------------                    
INT_4: ;  
;----------------------------------------------------------
 KY_OUT: MOV   A,REM_SIGN
         CJNE  A,#3,ODD            ;判断遥控是出于第一次按键触发还是处于连发阶段,连发阶段的标记是REM_SIG=3
         MOV   A,R1                ;连发最小时间判断,过滤掉<60ms的脉冲,因<60ms的脉冲不会令T0溢出 
         JZ    NORUN
 ODD  :  INC   REM_TIME            ;每连发一次连发记忆单元+1
 NORUN:  MOV   A,REM_TIME          ;因为跳过上一步IREM_TIME+1,所以不会执行BIJIAO(不够减) 
         SUBB  A,#5                ;连发5次调用一次按键处理程序
         JNC   GO_0
         JMP   GO_1
GO_0:    MOV   REM_TIME,#00H       ;每调用一次按键处理子程序连发记忆单元清0
         JMP   BIJIAO2
BI_RET:  MOV   R1,#00
         MOV   REM_SIGN,#03H       ;执行一次按键处理后建立遥控标记#03
GO_1:    SETB  TR0
         JMP   INT_OFF1                  
ERR_OUT: MOV   REM_SIGN,#00H       ;报错标记清0  
         LJMP  INT_OFF1            ;报错返回不启动定时器  
INT_OFF: SETB  TR0
         
INT_OFF1:MOV   TH0,#00H
         MOV   TL0,#00H          
         SETB  EX0  
         MOV   DPL,MTD5
         MOV   DPH,MTD4
         MOV   PSW,MTD3
         MOV   A,MTD2
         MOV   R4,#0
         MOV   R5,#0               ;确定遥控结束后的参数复位时间
         RETI
         NOP
         NOP

BIJIAO2: MOV   GIF_SIGN,#2         ;动画进程置2,让他显示功能内容
         MOV   GIF_LONG,#0
         MOV   R4,REM_KEY          
         CJNE  R4,#2,BI1 
         CALL  RM1                 ;总音量调节+
         MOV   SYS_SIGN,#0
         
BI1:     CJNE  R4,#1,BI2
         CALL  RM2                 ;总音量调节- 
         MOV   SYS_SIGN,#0
         
BI2:     CJNE   R4,#56H,BI3 
         MOV  DSP_DATA,#0 
         CALL   RM3                ;BASS+
         MOV    SYS_SIGN,#1        ;调整显示参数
         
BI3:     CJNE   R4,#11H,BI4
         MOV  DSP_DATA,#0
         CALL   RM4                ;TR+
         MOV    SYS_SIGN,#2
         
BI4:     CJNE   R4,#1DH,BI5
         CALL   RM5                ;MVOL+
         MOV    SYS_SIGN,#3
         
BI5:     CJNE   R4,#1CH,BI6
         CALL   RM6                ;ECHO+
         MOV    SYS_SIGN,#4
         
BI6:     CJNE   R4,#50H,BI7         ;SL+
         CALL   RM7
         MOV    SYS_SIGN,#6
         
BI7:     CJNE   R4,#46H,BI8         ;SR+
         CALL   RM8
         MOV    SYS_SIGN,#7
         
BI8:     CJNE   R4,#44H,BI9        ;CEN+
         CALL   RM9
         MOV    SYS_SIGN,#8
         
BI9:     CJNE   R4,#5EH,BI10       ;BW+
         CALL   RM10
         MOV    SYS_SIGN,#9
         
BI10:    CJNE   R4,#57H,BI11       ;BASS-
         MOV    DSP_DATA,#0
         CALL   RM12
         MOV    SYS_SIGN,#1
         
BI11:    CJNE   R4,#0DH,BI12
         MOV  DSP_DATA,#0
         CALL   RM13               ;TR-         
         MOV    SYS_SIGN,#2
         
BI12:    CJNE   R4,#16H,BI13
         MOV    DSP_DATA,#0
         CALL   RM14               ;MVOL-
         MOV    SYS_SIGN,#3  
                     
BI13:    CJNE   R4,#17H,BI14
         CALL   RM15               ;ECHO-
         MOV    SYS_SIGN,#4
         
BI14:    CJNE   R4,#53H,BI15
         CALL   RM16               ;SL-
         MOV    SYS_SIGN,#6
             
BI15:    CJNE   R4,#03H,BI16
         CALL   RM17               ;SR-
         MOV    SYS_SIGN,#7
          
BI16:    CJNE   R4,#13H,BI17
         CALL   RM18               ;CEN-
         MOV    SYS_SIGN,#8
         
BI17:    CJNE   R4,#1FH,BI18
         CALL   RM19               ;BW-
         MOV    SYS_SIGN,#9
         
BI18:    CJNE   R4,#42H,BI19
         MOV    INPUT_DATA,#1      ;AUX
         MOV    SYS_SIGN,#17
         
BI19:    CJNE   R4,#43H,BI20
         MOV    INPUT_DATA,#2      ;VCD
         MOV    SYS_SIGN,#17
         
BI20:    CJNE   R4,#0FH,BI25       ;AC3
         MOV    INPUT_DATA,#3
         MOV    CH_DATA,#0         ;AC3状态下启动5.1ch
         MOV    SYS_SIGN,#17
         
         
BI25:    CJNE   R4,#0CH,BI26      ;平衡L
         MOV    SYS_SIGN,#10
         MOV    A,BALN_DATA
         INC    A
         CJNE   A,#9,BI25_0
         JMP    RET6
BI25_0:  MOV    BALN_DATA,A
         JMP    RET6

BI26:    CJNE   R4,#05H,BI27      ;平衡R
         MOV    SYS_SIGN,#10
         MOV    A,BALN_DATA
         DEC    A
         CJNE   A,#255,BI26_0
         JMP    RET6
BI26_0:  MOV    BALN_DATA,A
         JMP    RET6

BI27:    CJNE   R4,#45H,BI28
         MOV    DSP_DATA,#1        ;DSP1
         JMP    RET7

BI28:    CJNE   R4,#8H,BI29
         MOV    DSP_DATA,#2        ;DSP2
         JMP    RET7

BI29:    CJNE   R4,#7H,BI30
         MOV    DSP_DATA,#3        ;DSP3
         JMP    RET7

BI30:    CJNE   R4,#9H,BI31
         MOV    DSP_DATA,#4        ;DSP4
         JMP    RET7

BI31:    CJNE   R4,#47H,BI32
         MOV    DSP_DATA,#5        ;DSP5
         JMP    RET7

BI32:    CJNE   R4,#4CH,BI33
         MOV    DSP_DATA,#6        ;DSP6
         JMP    RET7

BI33:    CJNE   R4,#4AH,BI34
         MOV    DSP_DATA,#7        ;DSP7
         JMP    RET7

BI34:    CJNE   R4,#1BH,BI35
         MOV    DSP_DATA,#0        ;DSP8         
         JMP    RET7

BI35:    CJNE   R4,#4DH,BI36       ;MUTE 
         MOV    SYS_SIGN,#15  
         MOV    A,REM_SIGN         ;MUTE连发调用无效(REM_SIGN=#3是连发阶段)
         CJNE   A,#3,BI35A   
         JMP    RET6 
BI35A:   JNB    MUTE_FLAG,MUTE1
         CLR    MUTE_FLAG
         JMP    RET6
MUTE1:   SETB   MUTE_FLAG
       
BI36:    CJNE   R4,#49H,BI37       ;2.0CH
     ;   MOV    CH_DATA,#3H
         MOV    A,INPUT_DATA
         CJNE   A,#3,BI36_1        ;在DVD状态下声道模式不能切换
         MOV    SYS_SIGN,#20 
         JMP    BI37
BI36_1:  MOV    SYS_SIGN,#12           
         MOV    CH_DATA,#3H

BI37:    CJNE   R4,#48H,BI38       ;5.1CH
         MOV    CH_DATA,#0
         MOV    SYS_SIGN,#13

BI38:    CJNE   R4,#5FH,BI39       ;LOUND
         MOV    SYS_SIGN,#14
         MOV    A,REM_SIGN         ;LOUND连发调用无效(REM_SIGN=#3是连发阶段)
         CJNE   A,#3,BI38A   
         JMP    RET6
         
BI38A:   JNB    LOUND_FLAG,LOU1
         CLR    LOUND_FLAG
         JMP    RET6
LOU1:    SETB   LOUND_FLAG        

BI39:    CJNE   R4,#4FH,BI40
         MOV    A,REM_SIGN         ;DISP_MODE连发调用无效(REM_SIGN=#3是连发阶段)
         CJNE   A,#3,BI39A   
         JMP    RET6

BI39A:   MOV    A,DP_MODE          ;各种显示模式的切换
         CJNE   A,#0,BI39B
         MOV    DP_MODE,#1

BI39B:   CJNE   A,#1,BI39C
         MOV    DP_MODE,#2

BI39C:   CJNE   A,#2,BI39D
         MOV    DP_MODE,#3

⌨️ 快捷键说明

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