📄 amp100.asm
字号:
;/////////特殊功能寄器//////////////
R0 EQU 0X00
R1 EQU 0X01
R2 EQU 0X02
R3 EQU 0X03
R4 EQU 0X04
P5 EQU 0X05
P6 EQU 0X06
P7 EQU 0X07
RF EQU 0X0F
IOC5 EQU 0X05
IOC6 EQU 0X06
IOC7 EQU 0X07
IOCA EQU 0X0A
IOCB EQU 0X0B
IOCC EQU 0X0C
IOCD EQU 0X0D
IOCE EQU 0X0E
IOCF EQU 0X0F
ISR EQU 0X3F
;;;;;;;;;;;;;;;;;;;;;;;;;
TEM1 EQU 0X11
TEM2 EQU 0X12
TEM3 EQU 0X13
LCD_DAT EQU 0X14
MTEM0 EQU 0X15
XCVB EQU 0X16
XCVB1 EQU 0X17
VOLMAST EQU 0X18
VOLLEFT EQU 0X19
LCDBUF EQU 0X20
RF0 EQU 0X30
RF1 EQU 0X31
RF2 EQU 0X32
RF3 EQU 0X33
RFCNT EQU 0X34
XO1 EQU 0X35
SWITCH EQU 0X36
SWITCH1 EQU 0X37
;;;BANK 2;;;;;;;;;;;;;;;;;;
TEM21 EQU 0X21
TEM22 EQU 0X22
TEM23 EQU 0X23
MDT EQU 0X24
MDT1 EQU 0X25
XO EQU 0X26
BT_CNT EQU 0X27
RW EQU 6
RS EQU 5
E EQU 4
CLK94 EQU 3
DAT94 EQU 2
PS1==6
PS0==5
SCL1==1
SCL2==4
SDA ==2
; P7 3,2,1,0 接LCD DB4,5,6,7
; P6
STOR94 EQU 7
org @0XFFF
jmp reset
org 0h
reset:
jmp start
delay:
mov a,@40
mov tem1,a
d_1:
djz tem1
jmp d_1
ret
;;;;;;;;;;;;;;;
delay1MS:
mov tem1,a
de_1:
mov a,@250
mov tem2,a
de_2:
nop
djz tem2
jmp de_2
djz tem1
jmp de_1
ret
LcdCmd:
BC P7,RS
CALL WDAT
call delay
RET
LcdDat:
BS P7,RS
CALL WDAT
call delay
RET
WDAT:
BC P7,RW
CLR TEM1
MOV LCD_DAT,A
JBc lcd_dat,7
bs TEM1,4
JBc lcd_dat,6
bs TEM1,5
JBc lcd_dat,5
bs TEM1,6
JBc lcd_dat,4
bs TEM1,7
JBc lcd_dat,3
bs TEM1,0
JBc lcd_dat,2
bs TEM1,1
JBc lcd_dat,1
bs TEM1,2
JBc lcd_dat,0
bs TEM1,3
MOV A,TEM1
MOV LCD_DAT,A
SWAPA lcd_dat
AND A,@0X0F
MOV TEM1,A
MOV A, P7
AND A,@0XF0
OR A,TEM1
MOV P7,A
BS P7,E
BC P7,E
MOV A,lcd_dat
AND A,@0X0F
MOV TEM1,A
MOV A, P7
AND A,@0XF0
OR A,TEM1
MOV P7,A
BS P7,E
BC P7,E
RET
LcdInit:
BC P7,RS
BC P7,E
mov a,@10
CALL DELAY1MS
MOV A,@33
CALL LcdCmd
MOV A,@32
CALL LcdCmd
mov a,@10
MOV A,@1
CALL LcdCmd
mov a,@5
CALL DELAY1MS
MOV A,@28H
CALL LcdCmd
MOV A,@0CH
CALL LcdCmd
CALL DELAY
MOV A,@06H
CALL LcdCmd
CALL DELAY
ret
LCDSTR:
MOV A,@0X80
CALL LCDCMD
MOV A,@8
MOV TEM3,A
MOV A,@LCDBUF
MOV R4,A
LCDSTR_1:
MOV A,R0
CALL LCDDAT
INC R4
DJZ TEM3
JMP LCDSTR_1
MOV A,@0XC0
CALL LCDCMD
MOV A,@8
MOV TEM3,A
LCDSTR_2:
MOV A,R0
CALL LCDDAT
INC R4
DJZ TEM3
JMP LCDSTR_2
/*
MOV A,@0X80
CALL LCDCMD
MOV A,@30H
CALL LCDDAT
MOV A,@31H
CALL LCDDAT
MOV A,@32H
CALL LCDDAT
MOV A,@33H
CALL LCDDAT
MOV A,@0x0c
CALL LCDDAT
MOV A,@0x0b
CALL LCDDAT
MOV A,@0X2d
CALL LCDDAT
MOV A,@0Xc0
CALL LCDCMD
MOV A,@34H
CALL LCDDAT
MOV A,@35H
CALL LCDDAT
MOV A,@36H
CALL LCDDAT
MOV A,@37H
CALL LCDDAT
MOV A,@41H
CALL LCDDAT
MOV A,@42H
CALL LCDDAT
MOV A,@37H
CALL LCDDAT
*/
RET
/*
PORTD = (PORTD & 0xF0) | (c >> 4);
LCD_STROBE;
PORTD = (PORTD & 0xF0) | (c & 0x0F);
LCD_STROBE;
DelayUs(40);*/
CD4094:
MOV TEM1,A
MOV A,@8
MOV TEM2,A
BC P7,CLK94
CD4094_1:
BC P7,DAT94
JBC TEM1,7
BS P7,DAT94
BS P7,CLK94
BC P7,CLK94
RLC TEM1
DJZ TEM2
JMP CD4094_1
BC P6,STOR94
BS P6,STOR94
BC P6,STOR94
RET
GETXS:
MOV A,@LCDBUF+15
MOV R4,A
MOV A,@16
MOV MTEM0,A
C_V_B:
MOV A,MTEM0
JBS XCVB,0
JMP GETXS_1
BS R3,PS0
CALL V_AMP
BC R3,PS0
JMP GETXS_15
GETXS_1:
JBS XCVB,1
JMP GETXS_2
BS R3,PS0
CALL V_AUX1
BC R3,PS0
JMP GETXS_15
GETXS_2:
JBS XCVB,2
JMP GETXS_3
BS R3,PS0
CALL V_PHONO
BC R3,PS0
JMP GETXS_15
GETXS_3:
JBS XCVB,3
JMP GETXS_4
BS R3,PS0
CALL V_DVD
BC R3,PS0
JMP GETXS_15
GETXS_4:
JBS XCVB,4
JMP GETXS_5
BS R3,PS0
CALL V_CD
BC R3,PS0
JMP GETXS_15
GETXS_5:
JBS XCVB,5
JMP GETXS_6
BS R3,PS0
CALL V_AUX1
BC R3,PS0
JMP GETXS_15
GETXS_6:
JBS XCVB,6
JMP GETXS_7
BS R3,PS0
CALL V_TUNER
BC R3,PS0
JMP GETXS_15
GETXS_7:
JBS XCVB,7
JMP GETXS_8
BS R3,PS0
CALL V_BAL
BC R3,PS0
JMP GETXS_15
GETXS_8:
JBS XCVB1,0
JMP GETXS_9
BS R3,PS0
CALL V_LOUDNESS
BC R3,PS0
JMP GETXS_15
GETXS_9:
JBS XCVB1,1
JMP GETXS_10
BS R3,PS0
CALL V_BASS
BC R3,PS0
JMP GETXS_15
GETXS_10:
JBS XCVB1,2
RET
BS R3,PS0
CALL V_TREBLE
BC R3,PS0
; JMP GETXS_15
GETXS_15:
MOV R0,A
DEC R4
DJZ MTEM0
JMP C_V_B
RET
start:
MOV A,@0X30
MOV VOLMAST,A
MOV A,@0X48
MOV SWITCH,A
MOV SWITCH1,A
DISI
MOV A,@80H
IOW IOC7
MOV A,@7FH
IOW IOC6
MOV A,@0
IOW IOCE
MOV A,@0X0EF
CALL CD4094
MOV A,@10
CALL DELAY1MS
CALL LCDINIT
MOV A,@5
CONTW
DISI
CLR XCVB
CLR XCVB1
BS XCVB,0
CALL GETXS
CALL LCDSTR
BS R3,PS1
CALL DELAY1S
BC R3,PS1
CLR XCVB
CLR XCVB1
BS XCVB,1
CALL GETXS
CALL LCDSTR
BS R3,PS1
CALL VOLUE
BC R3,PS1
MOV A,@0X08
IOW IOCF
BS R3,PS1
CALL VOLUE
BC R3,PS1
MAIN:
; CALL LCDINIT
BS R3,PS1
CALL YAO_KONG
BC R3,PS1
JBS XO,1
JMP MAIN
MOV A,@0X0EF
CALL CD4094
BC XO,1
MOV A,RF3
XOR A,@0X4E
JBC R3,2
JMP VOLDN
MOV A,RF3
XOR A,@0X07 ;0X90;
JBC R3,2
JMP VOLUP
;///////////////////////
MOV A,RF3
XOR A,@0X1E
JBC R3,2
JMP S_CD
MOV A,RF3
XOR A,@0X1D
JBC R3,2
JMP S_TUNER
;///////////////////
MOV A,RF3
XOR A,@0X1C
JBC R3,2
JMP S_DVD
MOV A,RF3
XOR A,@0X45
JBC R3,2
JMP S_PHONO
;/////////////////////
MOV A,RF3
XOR A,@0X4C
JBC R3,2
JMP S_AUX2
MOV A,RF3
XOR A,@0X18
JBC R3,2
JMP S_AUX1
;////////////////////
MOV A,RF3
XOR A,@0X4F
JBC R3,2
; JMP S_FUNCTION
MOV A,RF3
XOR A,@0X5F
JBC R3,2
JMP MAIN
; JMP S_MUTE
;//////////////////////////
MOV A,RF3
XOR A,@0X1B
JBC R3,2
; JMP S_POWER
;////////////////
JMP MAIN
JMP MAIN
/*
S_POWER:
JBS XO,0
JMP POWER_00
BC XO,0
BC DISPLED,LEDMUTE
JMP MUTE
POWER_00:
BS XO,0
BS DISPLED,LEDMUTE
JMP MUTE
MUTE0:
BS XO,6
CLR SDTIME
MUTE:
MOV A,@0X0FF
MOV RF3,A
MOV A,@0XF8
JBC DISPLED,LEDMUTE
JMP POWER_0
BS DISPLED,LEDMUTE
OR A,@1
JMP POWER_1
POWER_0:
BC DISPLED,LEDMUTE
POWER_1:
MOV MDT,A
MOV MDT+1,A
CALL WRNBYT
*/
VOLDN:
MOV A,VOLMAST
ADD A,@1
DAA
MOV VOLMAST,A
SUB A,@0X63
JBC R3,0
JMP VOLDN_1
MOV A,@0X63
MOV VOLMAST,A
VOLDN_1:
CALL VOLUPDN
CALL LCDSTR
JMP MAIN
VOLUPDN:
MOV A,VOLMAST
BS R4,7
MOV MDT,A
AND A,@0X0F
MOV MDT1,A
SWAPA MDT
AND A,@0X0F
JBC R3,2
JMP VOLUPDN_1
MOV MDT,A
MOV A,@0
VOLUPDN_2:
ADD A,@0X0A
DJZ MDT
JMP VOLUPDN_2
JMP VOLUPDN_3
VOLUPDN_1:
MOV A,@0
VOLUPDN_3:
ADD A,MDT1
MOV MDT,A
MOV MDT1,A
BC R4,7
BS R3,PS1
CALL WRNBYT
CALL WRNBYT2
BC R3,PS1
MOV A,VOLMAST
add a,@0x36
DAA
SUB A,@0X99
CALL VOLTOLCD
RET
VOLUP:
MOV A,VOLMAST
JBC R3,2
JMP MAIN
MOV A,VOLMAST
ADD A,@0X99
DAA
MOV VOLMAST,A
CALL VOLUPDN
CALL LCDSTR
JMP MAIN
S_CD:
/* MOV A,VOLMAST
MOV TEM3,A
MOV A,@0X63
MOV VOLMAST,A
CALL VOLUPDN
MOV A,TEM3
MOV VOLMAST,A*/
MOV A,@0XFC
AND SWITCH,A
MOV A,SWITCH
BS R4,7
MOV MDT,A
MOV MDT1,A
BC R4,7
BS R3,PS1
CALL WRNBYT
BC R3,PS1
CLR XCVB
CLR XCVB1
BS XCVB,4
CALL GETXS
CALL VOLUPDN
CALL LCDSTR
JMP MAIN
S_AUX1:
/*
MOV A,VOLMAST
MOV TEM3,A
CLR VOLMAST
CALL VOLUPDN
MOV A,TEM3
MOV VOLMAST,A
*/
MOV A,@0XFC
AND A,SWITCH
OR A,@1
MOV SWITCH,A
BS R4,7
MOV MDT,A
MOV MDT1,A
BC R4,7
BS R3,PS1
CALL WRNBYT
BC R3,PS1
CLR XCVB
CLR XCVB1
BS XCVB,1
CALL GETXS
CALL VOLUPDN
CALL LCDSTR
JMP MAIN
S_AUX2:
MOV A,@0XFC
AND A,SWITCH
OR A,@2
MOV SWITCH,A
BS R4,7
MOV MDT,A
MOV MDT1,A
BC R4,7
BS R3,PS1
CALL WRNBYT
BC R3,PS1
CLR XCVB
CLR XCVB1
BS XCVB,1
CALL GETXS
MOV A,@0X32
MOV LCDBUF+3,A
CALL VOLUPDN
CALL LCDSTR
JMP MAIN
S_PHONO:
MOV A,@0X03
OR A,SWITCH
MOV SWITCH,A
BS R4,7
MOV MDT,A
MOV MDT1,A
BC R4,7
BS R3,PS1
CALL WRNBYT
BC R3,PS1
MOV A,@0XFC
AND A,SWITCH1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -