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

📄 av-p06a.asm

📁 型号: AV-P06A 5.1CH功率放大器 89C52+12M+PT2314+PT2315+2*M62429+PT6311+CS16210+6221+VFDGDT1313A,包含VFD真值表手册资料
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;******************************************************************************************
;* 文件: AV-P06A.ASM                                                                      *
;* 型号: AV-P06A 5.1CH功率放大器                                                          *
;* 器件: 89C52+12M+PT2314+PT2315+2*M62429+PT6311+CS16210+6221+VFDGDT1313A                 *
;* 编写: 张绍斌                                                                           *
;* 日期: 2007-03-27                                                                       *
;* 版本: VER1.0                                                                           *
;******************************************************************************************
MAIN_MUTE      EQU   P0.0             ;功率输出继电器控制
AD_OUT         EQU   P0.3             ;A/D转换充放电控制
AD_IN          EQU   P0.4             ;A/D比较器输入端

PT2314_5_DATA  EQU   P1.1             ;PT2314/PT2315数据线
PT2314_5_CLK   EQU   P1.2             ;PT2314/PT2315时钟线
FAN_ON_OFF     EQU   P1.3             ;功放散热器风扇开关
M62429_CK1     EQU   P1.4             ;M62429(1)时钟线,SL为通道1,CEN为通道2
M62429_DAT     EQU   P1.5             ;M62429(1)(2)数据线
M62429_CK2     EQU   P1.6             ;M62429(2)时钟线,SR为通道1,SUBWOOF为通道2
AC_3           EQU   P1.7             ;CD4053控制2CH/5.1CH输入

PT6311_DATA    EQU   P2.0             ;PT6311数据线
PT6311_CLK     EQU   P2.1             ;PT6311时钟线
PT6311_STB     EQU   P2.2             ;PT6311片选线
MIC_CAK        EQU   P2.3             ;话筒插入检测
CS16210_CP     EQU   P2.4             ;输入时钟线
CS16210_DIN    EQU   P2.5             ;数据串行输入线
CS16210_EN     EQU   P2.6             ;数据输出控制

SCLK           EQU   P3.5             ;24C02时钟线
SDAT           EQU   P3.6             ;24C02数据线

KEY_CELL       EQU   1AH              ;(1AH-1FH为10个面板按键值缓存)


GIF_SIGN       EQU   40H              ;字幕进程标志
GIF_TIME       EQU   41H              ;字幕速度
GIF_LONG       EQU   42H              ;字幕长度

DISP_BUFFER    EQU   43H              ;PT6311显示缓冲区地址指针
DISP_INDEX     EQU   44H              ;PT6311内部地址指针

INPUT_DATA     EQU   45H              ;DVD/LD=1,VCD/CD=2,AUX=3,ML/MR=4
BASS_DATA      EQU   46H              
TREB_DATA      EQU   47H
BALN_DATA      EQU   48H
MAIN_DATA      EQU   49H

MVOL_DATA      EQU   4AH
ECHO_DATA      EQU   4BH

SURL_DATA      EQU   4CH
SURR_DATA      EQU   4EH
CEN_DATA       EQU   4FH
BW_DATA       EQU    50H

DELAY_DATA     EQU   51H
DSP_DATA       EQU   52H
CH_DATA        EQU   53H              ;5.1CH=#0,3.1CH=#1,2.1CH=#2,2CH=#3

KEY_NUM        EQU   54H              ;按键扫描值
KEYNUM_SAVE    EQU   55H
SYS_SIGN       EQU   56H              ;系统运行标记
KEY_DELAY      EQU   57H              ;键盘调用延时缓存
DIV_16          EQU  58H              ;16进制数缓存

DP_NUM         EQU   59H              ;自动屏谱当前进度的格数
DP_MODE        EQU   5AH              ;屏谱显示模式
DP_SAVE        EQU   5BH

REM_FIX        EQU   5CH              ;遥控用户码
REM_FIX1       EQU   5DH              ;遥控用户反码
REM_KEY        EQU   5EH              ;遥控按键码
REM_KEY1        EQU  5FH              ;遥控按键反码
REM_TIME       EQU   60H
REM_SIGN       EQU   61H              ;遥控进程标记

AD_SIGN        EQU   62H              ;A/D进程标记(#0电容放电,#1数据检测,#2完成检测存入数据AD_DATA)
AD_CLR         EQU   63H              ;A/D放电时间记忆单元
AD_CYC         EQU   64H              ;A/D周期判断
AD_TEM         EQU   65H              ;A/D数据暂存
AD_TIME1       EQU   66H              ;A/D模拟运算速度
AD_TIME2       EQU   67H              ;A/D自动屏谱上升速度

AD_SIM1        EQU   68H
AD_SIM2        EQU   69H
AD_SIM3        EQU   6AH
AD_SIM4        EQU   6BH
AD_SIM5        EQU   6CH
AD_SIM6        EQU   6DH

AD_DATA1       EQU   6EH
AD_DATA2       EQU   6FH
AD_DATA3       EQU   70H
AD_DATA4       EQU   71H
AD_DATA5       EQU   72H
AD_DATA6       EQU   73H

AUTO_NUM       EQU   74H              ;AD_DATA1连续为0的数量统计标记
AUTO_TIME      EQU   75H

TIME1          EQU   76H              ;主循环执行时间
TIME2          EQU   77H              ;显示缓冲区数据处理间隔时间
DISP_H         EQU   78H
DISP_L         EQU   79H

MTD5           EQU   7AH              ;做数据保护缓存 
MTD4           EQU   7BH
MTD3           EQU   7CH
MTD2           EQU   7DH
MTD1           EQU   7EH             
DATA_16210      EQU   7FH
  
BOOT_START     EQU   20H.0            ;开机置0,读完预置1
LOUND_FLAG     EQU   20H.1            ;#0为LOUND OFF,#1为LOUND ON
MUTE_FLAG      EQU   20H.2            ;#0为MUTE OFF,#1为MUTE ON
START_FLAG     EQU   20H.3            ;第一次运行标记,#0为未初始化,#1已初始化
AUTO_FLAG      EQU   20H.4            ;屏谱标记,#0为自动模式,#1信号模式
POWER_FLAG      EQU  20H.5
;/////////////////////////////////////////////////////////////////////////////////////////
ORG   0000H
JMP   MAIN
ORG   0003H
JMP   INT_REM
ORG   000BH
JMP   TIME
ORG   001BH
JMP   AD_GO
;-----------------------------------------------------------------------------------------
MAIN:           MOV   R0,#95
                MOV   R1,#20H
CLEAR_RAM:      MOV   @R1,#0             ;20H-7FH全部清0
                INC   R1
                DJNZ  R0,CLEAR_RAM
            
                MOV   P2,#0FFH
                CALL  DESTINE            ;调用开机预设
            
                MOV   TL1,#06H
                MOV   TH1,#06H
                MOV   SP,#10H            ;堆栈用10H-24H共20个单元
                MOV   IE,#138
                MOV   TMOD,#33
                MOV   IP,#195
                CALL  REST_16210
                CALL  START_VFD          ;PT6311段位设置
                CALL  BRIGHT             ;PT6311亮度设置
                SETB  IT0
                SETB  TR1
;/////////////////////////////////////////////////////////////////////////////////////////
RUN_STA:        MOV   A,TIME1
                CJNE  A,#1,RUN2
                JMP   GIF_1              ;跳转到显示
   GIF_END:     INC   TIME1
                JMP   RUN_END
;-----------------------------------------------------------------------------------------
RUN2:           MOV   A,TIME1
                CJNE  A,#3,RUN3
                JB    START_FLAG,RUN2_01  ;字幕左移和音量自动提升完成则跳转
                MOV   A,GIF_SIGN
                CJNE  A,#1,RUN2_3
                JMP   RUN2_4
    RUN2_3:     CALL  STA                ;调用开机音量自动提升
    RUN2_4:     JMP   RUN2_1
    
    RUN2_01:    JMP  KEY_GO              ;键盘处理
    RUN2_02:    JMP  KEY_REST            ;键盘复位
    
    RUN2_1:     INC  TIME1
                JMP   RUN_END
;-----------------------------------------------------------------------------------------
RUN3:           MOV    A,TIME1
                CJNE   A,#5,RUN4
                JMP    AUTO_RUN             ;调用无信号自动频谱设定子程序(改变AUTO_SIGN值)
RUN3_1:         JMP    AD_INTO          ;调用AD模拟值运算 
RUN3_2:         INC    TIME1
                JMP    RUN_END     

RUN4:           MOV    A,TIME1
                CJNE   A,#7,RUN16210
                CLR    TR1
                JMP    WR_VFD           ;写入PT6311数据          
RUN4_1:         SETB   TR1
                INC    TIME1
                JMP    RUN_END
                
RUN16210:        MOV A,TIME1
                CJNE A,#15,RUN5
                JMP   VFD_16210
RUN16210_1:     INC   TIME1
                JMP   RUN_END                
                
;-----------------------------------------------------------------------------------------
RUN5:           MOV    A,TIME1
                CJNE   A,#21,RUN_END
                JMP    RD_KEY           ;读如按键值并把他分析结果存放到KEY_NUM中
RUN5_1:         MOV    TIME1,#0  

RUN_END:        JMP    RUN_STA          ;主程循环

;/////////////////////////////////////////////////////////////////////////////////////////
START_VFD: 
            CLR    PT6311_STB
            MOV    A,#0CH
            CALL   OUTDATA
            SETB   PT6311_STB
            RET
BRIGHT:     CLR    PT6311_STB
            MOV    A,#0BeH
            CALL   OUTDATA
            SETB   PT6311_STB
            RET
REST_16210:  
            SETB   CS16210_EN
            MOV    A,#0
            CALL   SEND_16210
            SETB   CS16210_CP
            CLR    CS16210_EN
            CLR    CS16210_CP
            RET
;/////////////////////////////////////////////////////////////////////////////////////////
VFD_16210:
            SETB    CS16210_EN
            MOV  A,#0EFH
            CALL SEND_16210
            SETB  CS16210_CP
            CLR  CS16210_EN
            CLR   CS16210_CP
            JMP   RUN16210_1     
SEND_16210:
               mov  r0,#8
               setb  CS16210_din
               nop
         send_16210_1: clr  CS16210_cp
           rrc  a
           mov CS16210_din,c
           setb CS16210_cp
           djnz r0,send_16210_1
           ret


;/////////////////////////////////////////////////////////////////////////////////////////            
;开机音量提升
STA:        INC    DELAY_DATA
            MOV    A,DELAY_DATA
            CJNE   A,#45,STA_RET
            MOV    DELAY_DATA,#0
            CALL   RM1
            CALL   DATA_IN
            MOV    A,MAIN_DATA
            CJNE   A,#21,STA_RET
            MOV    SYS_SIGN,#17
            SETB   EX0
            
            SETB   START_FLAG
            SETB   AUTO_FLAG
STA_RET:    RET
;/////////////////////////////////////////////////////////////////////////////////////////
AUTO_RUN:   JNB    START_FLAG,AUTO_RET
           JMP    AUTO2
            
;            MOV    A,AD_DATA1
;            JZ     AUTO1
;            SETB   AUTO_FLAG
;            MOV    AUTO_NUM,#0
 ;           MOV    DP_MODE,DP_SAVE
 ;           MOV    AD_TIME2,#0
;            MOV    AUTO_NUM,#0
;            JMP    AUTO_RET
;-----------------------------------------------------------------------------------------
AUTO1:      JNB    AUTO_FLAG,AUTO2
            INC    AD_TIME2
            MOV    A,AD_TIME2
            CJNE   A,#20,AUTO_RET
            MOV    AD_TIME2,#0
            
            INC    AUTO_NUM
            MOV    A,AUTO_NUM
            CJNE   A,#100,AUTO_RET
            MOV    AUTO_NUM,#0
            
            CLR    AUTO_FLAG
            MOV    DP_MODE,#0
            MOV    DP_NUM,#0
            JMP    AUTO_RET
;-----------------------------------------------------------------------------------------
AUTO2:      INC    AD_TIME2
            MOV    A,AD_TIME2
            CJNE   A,#80,AUTO_RET
            
            MOV    AD_TIME2,#0
            INC    DP_NUM
            MOV    A,DP_NUM
            
            CJNE   A,#11,AUTO_RET
            MOV    DP_NUM,#0
            
       BB0: MOV    A,DP_MODE
            CJNE   A,#0,BB1
            MOV    DP_MODE,#1
            JMP    AUTO_RET
            
       BB1: CJNE   A,#1,BB2
            MOV    DP_MODE,#2
            JMP    AUTO_RET
            
       BB2: CJNE   A,#2,BB3
            MOV    DP_MODE,#3
            JMP    AUTO_RET
            
       BB3: MOV    DP_MODE,#0
       
AUTO_RET:   JMP    RUN3_1
;/////////////////////////////////////////////////////////////////////////////////////////
;A/D显示屏谱值运算

AD_INTO:    INC    AD_TIME1

IN01:       MOV    A,AD_TIME1
            CJNE   A,#10,IN02
            
            MOV    A,AD_SIM1
            CJNE   A,AD_DATA1,INTO_01
            JMP    IN02
INTO_01:    SUBB   A,AD_DATA1
            JNC    AD_SUB
            
AD_UP:      MOV    A,AD_SIM1
            INC    A
            MOV    AD_SIM1,A
            JMP    IN02
            
AD_SUB:     MOV    A,AD_SIM1
            DEC    A
            MOV    AD_SIM1,A
            JMP    INTO_RET
;-----------------------------------------------------------------------------------------            
IN02:       MOV    A,AD_TIME1
            CJNE   A,#20,IN03
            MOV    A,AD_SIM2
            CJNE   A,AD_DATA1,INTO_02
            JMP    IN03
INTO_02:    SUBB   A,AD_DATA1
            JNC    AD_SUB2
            
AD_UP2:     MOV    A,AD_SIM2
            INC    A
            MOV    AD_SIM2,A
            JMP    IN03
AD_SUB2:    MOV    A,AD_SIM2
            DEC    A
            MOV    AD_SIM2,A
            JMP    INTO_RET
;-----------------------------------------------------------------------------------------
IN03:       MOV    A,AD_TIME1
            CJNE   A,#30,IN04
            MOV    A,AD_SIM3
            CJNE   A,AD_DATA1,INTO_03
            JMP    IN04
INTO_03:    SUBB   A,AD_DATA1
            JNC    AD_SUB3
            
AD_UP3:     MOV    A,AD_SIM3
            INC    A
            MOV    AD_SIM3,A
            JMP    IN04
AD_SUB3:    MOV    A,AD_SIM3
            DEC    A
            MOV    AD_SIM3,A
            JMP    INTO_RET
;-----------------------------------------------------------------------------------------
IN04:       MOV    A,AD_TIME1
            CJNE   A,#40,IN05
            MOV    A,AD_SIM4
            CJNE   A,AD_DATA1,INTO_04
            JMP    IN05
INTO_04:    SUBB   A,AD_DATA1
            JNC    AD_SUB4
            
AD_UP4:     MOV    A,AD_SIM4
            INC    A
            MOV    AD_SIM4,A
            JMP    IN05
AD_SUB4:    MOV    A,AD_SIM4
            DEC    A
            MOV    AD_SIM4,A
            JMP    INTO_RET                   
;-----------------------------------------------------------------------------------------
IN05:       MOV    A,AD_TIME1
            CJNE   A,#50,IN06
            MOV    A,AD_SIM5
            CJNE   A,AD_DATA1,INTO_05
            JMP    IN06
INTO_05:    SUBB   A,AD_DATA1
            JNC    AD_SUB5
            
AD_UP5:     MOV    A,AD_SIM5
            INC    A
            MOV    AD_SIM5,A
            JMP    IN06
AD_SUB5:    MOV    A,AD_SIM5
            DEC    A
            MOV    AD_SIM5,A
            JMP    INTO_RET                                   
;-----------------------------------------------------------------------------------------

⌨️ 快捷键说明

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