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

📄 amp100.asm

📁 EMC mcu 控制功放 带2314+LCD
💻 ASM
📖 第 1 页 / 共 2 页
字号:
     ;/////////特殊功能寄器//////////////
    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 + -