📄 huangqipu.asm
字号:
JMP RDBYT3_1
MOV A,#4
B0MOV TEM22,A
B0MOV H,#0
B0MOV L,#RDBUF
; B0MOV L,A
RDBYT3_3:
CALL RDBYT3
B0MOV @HL,A
CALL LACK3
INCMS L
NOP
DECMS TEM22
JMP RDBYT3_3
CALL RDBYT3
B0MOV @HL,A
CALL NACK3
RD3STOPEXT:
CALL STOP3
B0MOV H,#0
B0MOV L,#RDBUF
; B0MOV R4,A
B0MOV A,@HL
B0MOV XCVB,A
INCMS L
B0MOV A,@HL
B0MOV BASS,A
SUB A,#15
BTS1 FC
JMP RDBASS_1
MOV A,#7
B0MOV BASS,A
RDBASS_1:
INCMS L
B0MOV A,@HL
B0MOV TREBLE,A
SUB A,#15
BTS1 FC
JMP RDTRE_1
MOV A,#7
B0MOV TREBLE,A
RDTRE_1:
INCMS L
B0MOV A,@HL
B0MOV BALANCE,A
SUB A,#13
BTS1 FC
JMP RDBAL_1
MOV A,#6
B0MOV BALANCE,A
RDBAL_1:
BTS1 RDBUF+4.2
JMP RDBUR_1
BSET SWITCH.2
BSET SWITCH1.2
JMP RDBUR_2
RDBUR_1:
BCLR SWITCH.2
BCLR SWITCH1.2
RDBUR_2:
RET
;/////////////////////
STA3:
BCLR P5M.SCL3
call iicnop
BCLR P1M.SDA3
call iicnop
BSET P1M.SDA3
call iicnop
BSET P5M.SCL3
call iicnop
RET
;//////////////////////////
STOP3:
BSET P1M.SDA3
call iicnop
BSET P5M.SCL3
call iicnop
BCLR P5M.SCL3
call iicnop
BCLR P1M.SDA3
call iicnop
RET
;///////////////////////////
CACK3:
CALL IICNOP
BCLR P1M.SDA3
CALL IICNOP
;CALL IICNOP
BCLR P5M.SCL3
call iicnop
BCLR XO1.4
BTS0 P1.SDA3
BSET XO1.4
BSET P5M.SCL3
call iicnop
RET
;//////////////////////////
NACK3:
BCLR P1M.SDA3
call iicnop
BCLR P5M.SCL3
call iicnop
BSET P5M.SCL3
call iicnop
RET
;//////////////////////////
LACK3:
BSET P1M.SDA3
call iicnop
BCLR P5M.SCL3
call iicnop
BSET P5M.SCL3
call iicnop
RET
WRBYT3:
MOV A,#09
B0MOV BT_CNT,A
WRBYT_LOOP3:
DECMS BT_CNT
JMP WRBYT_NEXT31
RET
WRBYT_NEXT31:
BCLR P1M.SDA3
BTS0 TEM21.7
JMP WR30
BSET P1M.SDA3
WR30:
call iicnop
BCLR P5M.SCL3
call iicnop
BSET P5M.SCL3
; call iicnop
RLCM TEM21
JMP WRBYT_LOOP3
;/////////////////////////////////////
;//////////////////////////
RDBYT3:
BCLR P1M.SDA3
MOV A,#09
B0MOV BT_CNT,A
RDBYT_LOOP3:
DECMS BT_CNT
JMP RDBYT_NEXT31
B0MOV A,TEM21
RET
RDBYT_NEXT31:
call iicnop
call iicnop
BCLR P5M.SCL3
call iicnop
BSET FC
BTS1 P1.SDA3
BCLR FC
BSET P5M.SCL3
RLCM TEM21
JMP RDBYT_LOOP3
//----------------------------------
//WR BASS TO AT24C02
//----------------------
WRBASS:
MOV A,#11H
MOV MDT,A
MOV A,BASS
MOV MDT1,A
CALL WRNBYT3
RET
//----------------------------------
//WR TREBLE TO AT24C02
//----------------------
WRTREBLE:
MOV A,#12H
MOV MDT,A
MOV A,TREBLE
MOV MDT1,A
CALL WRNBYT3
RET
//----------------------------------
//WR BALANCE TO AT24C02
//----------------------
WRBALANCE:
MOV A,#13H
MOV MDT,A
MOV A,BALANCE
MOV MDT1,A
CALL WRNBYT3
RET
//----------------------------------
//WR LOUD TO AT24C02
//----------------------
WRLOUD:
MOV A,#14H
MOV MDT,A
MOV A,SWITCH
MOV MDT1,A
CALL WRNBYT3
RET
//----------------------------------
//INIT PT2314
//----------------------
INITvolue:
BSET TEM1.0
BTS1 SWITCH.2
BCLR TEM1.0
; 133023
; 321330
BTS1 XCVB.1
JMP VOLSW_2
MOV a,#0X41
B0MOV SWITCH,A
MOV a,#0X43
B0MOV SWITCH1,A
JMP VOLSW_E
VOLSW_2:
BTS1 XCVB.2
JMP VOLSW_3
MOV a,#0X43
B0MOV SWITCH,A
MOV a,#0X42
B0MOV SWITCH1,A
JMP VOLSW_E
VOLSW_3:
BTS1 XCVB.3
JMP VOLSW_4
MOV a,#0X43
B0MOV SWITCH,A
MOV a,#0X41
B0MOV SWITCH1,A
JMP VOLSW_E
VOLSW_4:
BTS1 XCVB.4
JMP VOLSW_5
MOV a,#0X40
B0MOV SWITCH,A
MOV a,#0X43
B0MOV SWITCH1,A
JMP VOLSW_E
VOLSW_5:
BTS1 XCVB.5
JMP VOLSW_6
MOV a,#0X42
B0MOV SWITCH,A
MOV a,#0X43
B0MOV SWITCH1,A
JMP VOLSW_E
VOLSW_6:
BTS1 XCVB.6
JMP VOLSW_7
MOV a,#0X43
B0MOV SWITCH,A
MOV a,#0X40
B0MOV SWITCH1,A
JMP VOLSW_E
VOLSW_7:
MOV a,#0X41
B0MOV SWITCH,A
MOV a,#0X43
B0MOV SWITCH1,A
CLR XCVB
BSET XCVB.1
VOLSW_E:
BCLR SWITCH.2
BCLR SWITCH1.2
BTS1 TEM1.0
JMP VOLUE_1
BSET SWITCH.2
BSET SWITCH1.2
VOLUE_1:
MOV a,#0x18
OR SWITCH,A
OR SWITCH1,A
B0MOV A,SWITCH
B0MOV MDT,A
MOV a,#0X21
B0MOV MDT1,A
CALL WRNBYT
;;;;;;;;;;;;;;;;
B0MOV A,SWITCH1
B0MOV MDT,A
MOV a,#0X21
B0MOV MDT1,A
CALL WRNBYT2
;;;;;;;;;;;;;
B0MOV A,BALANCE
B0MOV Y,#V_BALANCE$M
B0MOV Z,#V_BALANCE$L
ADD Z,A
MOVC
OR A,#0Xe0
B0MOV MDT,A
B0MOV LeftSD,A
MOV A,#12
SUB A,BALANCE
B0MOV Y,#V_BALANCE$M
B0MOV Z,#V_BALANCE$L
ADD Z,A
MOVC
OR A,#0Xc0
B0MOV MDT1,A
B0MOV RightSD,A
CALL WRNBYT
CALL WRNBYT2
B0MOV A,BASS
SUB A,#7
BTS1 FC
JMP VOLUEB_1
MOV A,#14
SUB A,BASS
OR A,#0X08
JMP VOLUEB_2
VOLUEB_1:
B0MOV A,BASS
VOLUEB_2:
OR A,#0X60
B0MOV MDT,A
;;;;;;;;;;
B0MOV A,TREBLE
SUB A,#7
BTS1 FC
JMP VOLUET_1
MOV A,#14
SUB A,TREBLE
OR A,#0X08
JMP VOLUET_2
VOLUET_1:
B0MOV A,TREBLE
VOLUET_2:
OR A,#0X70
B0MOV MDT1,A
CALL WRNBYT
CALL WRNBYT2
RET
; /////////////////////////
ORG 0XC00
yao_kong:
BTS0 P0.0
JMP REMOT_E
CLR TC1C
BCLR FTC1ENB
REMOT2:
BTS1 P0.0
JMP REMOT2
BSET FTC1ENB
REMOT2A:
B0MOV A,TC1C
SUB A,#250
BTS0 FC
JMP REMOT_E
BTS0 P0.0
JMP REMOT2A
B0MOV A,TC1C
B0MOV TEM1,A
SUB A,#98
BTS0 FC
JMP REMOT3
B0MOV A,TEM1
SUB A,#30
BTS0 FC
JMP REMOT2B
JMP REMOT_4
REMOT2B:
MOV A,LXJCNT
SUB A,#4
BTS0 FC
JMP REMOT2C
INCMS LXJCNT
NOP
JMP REMOT_4
REMOT2C:
BSET XO.1
REMOT_4:
BTS1 P0.0
JMP REMOT_4
JMP REMOT_EXT
REMOT3:
MOV a,#0X20 ;32
B0MOV RFCNT,A
BYTE1:
BTS1 P0.0
JMP BYTE1
CLR TC1C
BSET FTC1ENB
BYTE1A:
B0MOV A,TC1C
SUB A,#100
BTS0 FC
JMP REMOT_4
BTS0 P0.0
JMP BYTE1A
B0MOV A,TC1C
BCLR FTC1ENB
SUB A,#31 ;17
RRCM RF3
RRCM RF2
RRCM RF1
RRCM RF0
DECMS RFCNT
JMP BYTE1
JMP YIMA
BYTE3:
B0MOV A,RF1
XOR A,#0X20
BTS1 FZ
JMP REMOT_E
B0MOV A,RF0
XOR A,#0XDF
BTS1 FZ
JMP REMOT_E
MOV A,RF2
XOR A,#0FFH
XOR A,RF3
BTS1 FZ
JMP REMOT_E
YIMA:
; B0MOV A,RF2
; B0MOV LAST_REV,A
BSET XO.1
CLR LXJCNT
REMOT_EXT:
/* MOV a,#0XFF
B0MOV R1,A
BCLR RF.0
BTS0 XO.0
JMP REMOT_E
MOV a,#0X10
XOR A,RF3
BTS0 FZ
JMP REMOT_E
BCLR XO.1*/
REMOT_E:
RET
/* VOLtoPt2314:
BSET P6.3
BTS0 P6.3
JMP LOWINPUT
BTS1 xo.0
jmp VOLtoPtEND
BTS0 xo.5
jmp VOLtoPtEND
BSET
B0MOV a,leftsd
B0MOV mdt,a
B0MOV a,rightsd
B0MOV mdt1,a
BSET XOMUTE.1
BTS1 XOMUTE.0
JMP VOLtoPtEND
BCLR XOMUTE.0
;;;;;;;;;;;;;;;;;;;;
MOV a,#0x20
or MCD4094,A
B0MOV a,mcd4094
CALL CD4094
;;;;;;;;;;;;;;
JMP VOLTOPT_2
LOWINPUT:
BSET XOMUTE.0
MOV a,#0XdF
B0MOV mdt,a
MOV a,#0xff
B0MOV mdt1,a
BTS1 XOMUTE.1
JMP VOLtoPtEND
BCLR XOMUTE.1
BCLR
MOV a,#0Xdf
and MCD4094,A
B0MOV a,mcd4094
CALL CD4094
VOLTOPT_2:
CALL WRNBYT
CALL WRNBYT2
VOLtoPtEND:
BCLR
RET */
;;;;;;;;;;;;;;;;;;;;;;;;;
;-------------------------------------------------------------------------------
; Isr (Interrupt Service Routine)
; Arguments :
; Returns :
; Reg Change:
;-------------------------------------------------------------------------------
Isr:
;-----------------------------------
; Save ACC
;-----------------------------------
push ;Save A and Pflag
;b0xch A,AccBuf ;B0xch instruction do not change C,Z flag
;b0mov A,PFLAG
;b0mov PflagBuf,A
;-----------------------------------
; Interrupt service routine
;-----------------------------------
INTP00CHK: ; Check INT0 interrupt request
B0BTS1 FP00IEN ; Check P00IEN
JMP INTTC1CHK ; Jump check to next interrupt
B0BTS0 FP00IRQ ; Check P00IRQ
JMP INTP00 ; Jump to INT0 interrupt service routine
INTTC1CHK: ; Check TC1 interrupt request
B0BTS1 FTC1IEN ; Check TC1IEN
JMP INT_EXIT ; Jump to exit of IRQ
B0BTS0 FTC1IRQ ; Check TC1IRQ
JMP INTTC1 ; Jump to TC1 interrupt service routine
;-----------------------------------
; Exit interrupt service routine
;-----------------------------------
INT_EXIT:
pop ;Restore A and Pflag
;b0mov A, PflagBuf
;b0mov PFLAG, A ;Restore the PFlag
;b0xch A,AccBuf ;Restore the Reg. A
;B0xch instruction do not change C,Z flag
reti ;Exit the interrupt routine
;-------------------------------------------------------------------------------
; INT0 interrupt service routine
;-------------------------------------------------------------------------------
INTP00:
b0bclr FP00IRQ
;Process P0.0 external interrupt here
jmp INT_EXIT
;-------------------------------------------------------------------------------
; TC1 interrupt service routine
;-------------------------------------------------------------------------------
INTTC1:
b0bclr FTC1IRQ
;Process TC1 timer interrupt here
jmp INT_EXIT
;-------------------------------------------------------------------------------
; SysInit
; System initial to define Register, RAM, I/O, Timer......
;-------------------------------------------------------------------------------
SysInit:
BCLR FTC1IEN
BCLR FTC1IRQ
MOV A,#30H
MOV TC1M,A
CLR P0M
CLR P1M
CLR P2M
CLR P5M
CLR P0UR
CLR P1UR
CLR P2UR
CLR P5UR
// CLR P10C
MOV A,#0FFH
MOV P2M,A
BCLR P2.RW
CLR XO2
BCLR XO.0
MOV a,#0XFF
B0MOV CURBMQ,A
B0MOV LASTBMQ,A
MOV a,#33
B0MOV VOLMAST,A
MOV a,#0X58
B0MOV SWITCH,A
B0MOV SWITCH1,A
MOV a,#3
B0MOV T1,A
B0MOV T2,A
CLR XO
BCLR P2.7 //POWER OFF
MOV a,#10
CALL DELAY1MS
CALL LCDINIT
MOV a,#5
CLR XCVB
CLR XCVB1
BSET XCVB.0
CALL GETXS
CALL LCDSTR
CALL DELAY1S
CALL RDNBYT3
; CLR XCVB1
BCLR XCVB.0
CALL INITvolue
INITvolueRET:
B0MOV A,XCVB
BTS0 FZ
BSET XCVB.1
CALL GETXS
CALL VOLUPDN
CALL LCDSTR
BSET XO.0 //POWER ON
BCLR XO.1 //HAVE KEY
BCLR XO.5 //MUTE
BSET P2.7
ret
;-------------------------------------------------------------------------------
; ClrRAM
; Use index @YZ to clear RAM (00h~2Fh)
;-------------------------------------------------------------------------------
ClrRAM:
clr Y
mov A, #0x2F
b0mov Z, A ;Set @YZ address from 2fh
ClrRAM10:
clr @YZ ;Clear @YZ content
decms Z ;z = z - 1 , skip next if z=0
jmp ClrRAM10
clr @YZ ;Clear address $00
ret
;-------------------------------------------------------------------------------
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -