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

📄 huangqipu.asm

📁 LCD+2314+功放 SONIX MCU
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;*******************************************************************************
; FILENAME	: 2604_TEMPLATE.ASM for S8KE ICE
; AUTHOR	: SONiX
; PURPOSE	: Template Code for SN8P2604
; REVISION	: 06/05/2004 V1.0	First issue
;               : 07/07/2004 V1.1	Remove ICE_MODE definition and some macro
;                                       for SN8ICE 2K and Add push/pop in ISR
;
;*******************************************************************************
;*  (c) Copyright 2004, SONiX TECHNOLOGY CO., LTD.
;*******************************************************************************

CHIP		SN8P2604	; Select the CHIP
//{{SONIX_CODE_OPTION
	.Code_Option	Noise_Filter	Enable
	.Code_Option	Reset_Pin	Reset
	.Code_Option	Watch_Dog	Disable		; Disable Watchdog
	.Code_Option	High_Clk	4M_X'tal	; Crystal/Resonator: 2Mhz~10Mhz
	.Code_Option	Fcpu		#2     ; Fcpu = High_Clk/4
	.Code_Option	Security	Disable
//}}SONIX_CODE_OPTION

;-------------------------------------------------------------------------------
;			Include Files
;-------------------------------------------------------------------------------
.nolist							; do not list the macro file

	INCLUDESTD		MACRO1.H
	INCLUDESTD		MACRO2.H
	INCLUDESTD		MACRO3.H

.list							; Enable the listing function
	
;-------------------------------------------------------------------------------
;			Constants Definition
;-------------------------------------------------------------------------------
;	ONE		EQU	1

;-------------------------------------------------------------------------------
;			Variables Definition
;-------------------------------------------------------------------------------
.DATA
			org	0h			;Data section start from RAM address 0
	Wk00		DS	1			;Temporary buffer for main loop
	Iwk00		DS	1			;Temporary buffer for ISR
	AccBuf		DS	1			;Accumulater buffer
	PflagBuf	DS	1			;PFLAG buffer

    TEM1     DS	1
    TEM2     DS	1
    TEM3     DS	1
    LCD_DAT  DS	1
    MTEM0    DS	1
    XCVB     DS	1
    XCVB1    DS	1
    
    VOLMAST  DS	1
    
    T1       DS	1
    T2       DS	1
    
    FuncT    DS	1
    MCD4094  DS	1
    CURBMQ   DS	1
    LASTBMQ  DS	1
    T3       DS	1
    LCDBUF   DS	16    
    RF0      DS	1
    RF1      DS	1
    RF2      DS	1
    RF3      DS	1
    RFCNT    DS	1
    LXJCNT   DS 1
    XO       DS	1
    SWITCH   DS	1
    SWITCH1  DS	1
    BALANCE  DS	1
    BASS     DS	1
    TREBLE   DS	1
    XO2      DS	1
       ;;;BANK 1;;;;;;;;;;;;;;;;;; 
    
    AUCNT    DS	1
    A2CNT    DS	1
    FUCNT    DS	1
    PHCNT    DS	1
    
    DVCNT    DS	1
    CDCNT    DS	1
    TUCNT    DS	1
   
    WRBASSCNT DS   1
    WRCNT     DS   1
    WRBALCNT   DS	1
    WRTRECNT  DS	1
    
    ;;;BANK 2;;;;;;;;;;;;;;;;;;
    TEM20  DS	1
    TEM21  DS	1
    TEM22  DS	1
    TEM23  DS	1
    MDT    DS	1
    MDT1   DS	1
    XO1    DS	1
    XOMUTE DS	1
    
    BT_CNT DS	1
    LeftSD DS	1
    RightSD DS	1
    RDBUF  DS	5

.const 

    RW= 6
    RS= 5
    E=04
    PZ=0
    PC=2
    
    CLK94 = 3
    DAT94=  2
    PS1=6
    PS0=5
    
    SCL1=3
    SCL2=4
    
    SDA1 =1
    SDA2 =1 

    SDA3=2
    SCL3=1
    KAUX2=0X4C
    KCD=0X1E
    KAUX1=0X18
    KPHONO=0X45
    KFUNC=0X13
    KDVD=0X1C
    KTUNER=0X1D
    KDN=0X4E
    KUP=0X07
    KMUTE=0X5F
    KFUNCTION=0X13
    KPOWER=0X1B  
   ; P7 3.2.1.0 接LCD DB4.5.6.7  
   
  ; P6
    STOR94 = 7
	


;-------------------------------------------------------------------------------
;			Bit Variables Definition
;-------------------------------------------------------------------------------

	Wk00B0	    	EQU     Wk00.0 		     	;Bit 0 of Wk00
	Iwk00B1		EQU     Iwk00.1  	   	;Bit 1 of Iwk00
 
;-------------------------------------------------------------------------------
;			Code section
;-------------------------------------------------------------------------------
.CODE								

		ORG	0				;Code section start
	jmp		Reset				;Reset vector
							;Address 4 to 7 are reserved
		ORG	8				
	jmp		Isr				;Interrupt vector

  

		ORG	10h
;-------------------------------------------------------------------------------
; 			Program reset section
;-------------------------------------------------------------------------------
Reset:
	mov 	    	A,#07Fh				;Initial stack pointer and
   	b0mov 		STKP,A				;disable global interrupt	
	clr		PFLAG				;pflag = x,x,x,x,x,c,dc,z
	mov     	A,#00h				;Initial system mode
	b0mov   	OSCM,A
	
//	mov		A, #0x5A
//	b0mov		WDTR, A				;Clear watchdog timer	
	@RST_WDT
  //  	call    	ClrRAM				;Clear RAM
    	call    	SysInit				;System initial
    	b0bset  	FGIE				;Enable global interrupt

;-------------------------------------------------------------------------------
; 			Main routine
;-------------------------------------------------------------------------------
Main:
//	mov		A, #0x5A
//	b0mov		WDTR, A				;Clear watchdog timer	
        @RST_WDT
     	JMP		MnApp

	jmp		Main

;-------------------------------------------------------------------------------
; 			Main application
;-------------------------------------------------------------------------------


	;---------------------------------------------------------------
	; Put your main program here
	;---------------------------------------------------------------








;-----------------------------------
; Jump table routine
;-----------------------------------
		ORG	0x0100				;The jump table should start from the head 
							;of boundary.
	b0mov		A,Wk00              
	and		A,#3
	ADD         	PCL,A
	jmp         	JmpSub0
	jmp         	JmpSub1
	jmp         	JmpSub2
;----------------------------------- 

JmpSub0:
	; Subroutine 1
	jmp		JmpExit

JmpSub1:
	; Subroutine 2
	jmp		JmpExit

JmpSub2:
	; Subroutine 3
	jmp		JmpExit

JmpExit:
	ret						;Return Main

;----------------------
;sub function
;----------------------
 
 delay:
  mov A,#40
  b0mov tem1,a
  @@:
  DECMS tem1
  jmp @b
  ret
  
  ;;;;;;;;;;;;;;;
 delay1MS:
  mov tem1,a
 de_1:  
  mov A,#250
  b0mov tem2,a  
 @@: 
  nop
  DECMS tem2
  jmp @B
  DECMS tem1
  jmp de_1
  ret


 LcdCmd:  
    BCLR     P2.RS
    CALL   WDAT
    call   delay
    RET
 LcdDat:
    BSET    P2.RS
    CALL  WDAT
    call  delay
 RET
  
  
 WDAT:
  BCLR   P2.RW
  CLR  TEM1
  MOV  LCD_DAT,A
  BTS0  lcd_dat.7
  bsET   TEM1.4
  BTS0  lcd_dat.6
  bsET   TEM1.5
  BTS0  lcd_dat.5
  BSET   TEM1.6
  BTS0  lcd_dat.4
  BSET   TEM1.7
  BTS0  lcd_dat.3
  BSET   TEM1.0
  BTS0  lcd_dat.2
  BSET   TEM1.1
  BTS0  lcd_dat.1
  BSET   TEM1.2
  BTS0  lcd_dat.0
  BSET   TEM1.3
  MOV   A,TEM1
  MOV   LCD_DAT,A
  SWAP  lcd_dat    
  AND   A,#0FH
  MOV   TEM1,A
  MOV  A, P2
  AND  A,#0XF0
  OR   A,TEM1
  MOV   P2,A
  BSET    P2.E
  BCLR    P2.E
  MOV A,lcd_dat    
  AND  A,#0FH
  MOV  TEM1,A
  MOV  A, P2
  AND  A,#0XF0
  OR   A,TEM1
  MOV  P2,A
  BSET    P2.E
  BCLR    P2.E
  RET
;-----------------------------------
 LcdInit:
  BSET   P5M.0
  BCLR   P5.0
  BCLR   P2.RS  
  BCLR   P2.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
  MOV a,#58H
  CALL LcdCmd
  MOV a,#0X00
  CALL LcdDAT
  MOV a,#0XFF
  CALL LcdDAT
  MOV a,#0XFF
  CALL LcdDAT
    MOV a,#0XFF
  CALL LcdDAT
  MOV a,#0XFF
  CALL LcdDAT
  MOV a,#0XFF
  CALL LcdDAT
  MOV a,#0XFF
  CALL LcdDAT  
  MOV a,#0X00
  CALL LcdDAT
  MOV a,#60H
  CALL LcdCmd
  MOV a,#0X00
  CALL LcdDAT
  MOV a,#0XFF
  CALL LcdDAT
  MOV a,#0X11
  CALL LcdDAT 
  MOV a,#0X11
  CALL LcdDAT  
  MOV a,#0X11
  CALL LcdDAT 
  MOV a,#0X11
  CALL LcdDAT  
  MOV a,#0XFF
  CALL LcdDAT 
  MOV a,#0X00
  CALL LcdDAT 
  ret
  
 LCDSTR:
  MOV    A,#0FFH
  B0MOV  P2M,A
  BCLR   P2.RW            
  MOV    A,#0X80 
  CALL   LCDCMD
  MOV    A,#8
  B0MOV  TEM3,A
  B0MOV  Y,#0
  B0MOV  Z,#LCDBUF
 LCDSTR_1:
  B0MOV  A,@YZ
  CALL LCDDAT
  INCMS  Z
  NOP
  DECMS  TEM3
  JMP  LCDSTR_1
   MOV A,#0XC0 
  CALL LCDCMD
   MOV A,#8
  B0MOV  TEM3,A
  LCDSTR_2:
  B0MOV  A,@YZ
  CALL LCDDAT
  INCMS  Z
  NOP
  DECMS  TEM3
  JMP  LCDSTR_2
 RET
  


  
  
MnApp: 
  
  CALL YAO_KONG   
  
  CALL INTT0     
   
 // call VOLtoPt2314
  BTS1  XO.2      
  JMP    MAIN_1
  BCLR   XO.2
  BCLR   XO.5
  CALL  GETXS
  CALL VOLUPDN        //XO.2为1时更新vol和lcd显示
  CALL LCDSTR
 MAIN_1:
       BTS1 XO.1  
       JMP   MAIN_END    
       BCLR  XO.1    
       BTS1  XO.0
       JMP   MAIN_A1
       B0MOV A,RF2
       XOR   A,#KMUTE
       BTS0  FZ
       JMP   S_MUTE        
       BTS1  XO.5        //MUTE
       JMP   MAIN_A1
       MOV   a,#0XFF
       B0MOV RF2,A 
       JMP   MAIN_END

    MAIN_A1:  
       
  
       B0MOV A,RF2
       XOR A,#KCD
       BTS0 FZ
       JMP S_CD
       
       B0MOV A,RF2
       XOR A,#KTUNER
       BTS0 FZ
       JMP S_TUNER  
       ;///////////////////
       B0MOV A,RF2
       XOR A,#KDVD
       BTS0 FZ
       JMP S_DVD
       ;;;;;;;;;;;;;;;;;;;;;
       B0MOV A,RF2
       XOR A,#KPHONO
       BTS0 FZ
       JMP S_PHONO 
       ;/////////////////////
       B0MOV A,RF2
       XOR A,#KAUX2
       BTS0 FZ
       JMP S_AUX2
       ;;;;;;;;;;;;;;;
       B0MOV A,RF2
       XOR A,#KAUX1
       BTS0 FZ
       JMP S_AUX1
       ;////////////////////
       
        
       BTS1 XO.0
       JMP MAIN_END
          
       B0MOV A,RF2
       XOR A,#KFUNCTION
       BTS0 FZ
       JMP S_FUNCTION
       
       BCLR  XO.1   
       B0MOV A,RF2
       XOR A,#KDN
       BTS0 FZ
       JMP VOLDN     
       B0MOV A,RF2
       XOR A,#KUP  ;0X90;
       BTS0 FZ
       JMP VOLUP
     ;//////////////////////////
       B0MOV A,RF2
       XOR A,#KPOWER
       BTS0 FZ
       JMP S_POWER
      ;////////////////
    MAIN_END:
       JMP MAIN
       RET
  
    S_POWER: 
    
       CLR    XCVB1
       BCLR   XO.0
       MOV    A,#0FFH
       B0MOV  P2M,A
       MOV    A,#1
       CALL   LCDCMD 
       BSET   P5.0       //OFF LCD LED
       BSET   P1.7       //ON  LED1   
       BCLR   P1.1       //OFF LED2           
       MOV    a,#0X3f   
       B0MOV  MDT,A
       B0MOV  MDT1,A       
       CALL   WRNBYT      
       CALL   WRNBYT2 
       BCLR   P2.7        //POWER  OFF   
       JMP    MAIN_END
S_MUTE:      
       MOV   a,#0XFF
       B0MOV RF2,A
       BTS1  XO.0
       JMP   MAIN_END        
       BTS1  XO.5
       JMP   S_MUTE_1
      ;;;;;;NO MUTE;;;;;;;;;;;;;;  
       call  GETXS       
       call  VOLUPDN         
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;         
       BCLR  XO.5 
       CALL  LCDSTR        
       BSET  P2.7           //POWER ON  
       JMP   S_MUTE_2
 S_MUTE_1:
        BCLR  P2.7          //POWER OFF
        MOV   A,#0FFH
        MOV   P2M,A 
        MOV   A,#0X80
        CALL  LcdCMD 
        MOV   a,#6
        B0MOV MTEM0,A
  MTEM0S0:
        MOV   a,#0X20
        CALL  LCDDAT
        DECMS MTEM0
        JMP   MTEM0S0         
        MOV   a,#0X4D  
        CALL  LCDDAT        
        MOV   a,#0X75  
        CALL  LCDDAT
        MOV   A,#0XC0
        CALL  LcdCMD          
        MOV   a,#0X74  
        CALL  LCDDAT
        MOV   a,#0X65  
        CALL  LCDDAT        
        MOV   a,#6
        B0MOV MTEM0,A
  MTEM0S1:
        MOV   a,#0X20
        CALL   LCDDAT
        DECMS  MTEM0
        JMP   MTEM0S1             
        BSET XO.5
   ;;;;;;;;;;;;;;;;;;;;;;;;;;     
      MOV   a,#0X3f
      B0MOV MDT,A
      B0MOV MDT1,A      
      CALL  WRNBYT      
      CALL  WRNBYT2        
 S_MUTE_2:   
      JMP  MAIN_END
  
 S_FUNCTION:
   MOV   a,#0XFF
   B0MOV RF2,A   
   BSET  XCVB1.7
   BTS1  XCVB1.6
   JMP   S_FUNC_1
   BTS0  XCVB1.0
   JMP   FUNCTION_2
   BTS1  XCVB1.1
   JMP   FUNCTION_1
   JMP   FUNCTION_0A
S_FUNC_1:
   B0MOV A,XCVB1
   AND   A,#0X0F
   BTS0  FZ
   JMP   FUNCTION_3  
    
   BTS0  XCVB1.2       
   JMP   FUNCTION_4
   BTS0  XCVB1.3
   JMP   FUNCTION_1
   BTS0  XCVB1.0
   JMP   FUNCTION_2
   BTS1  XCVB1.1
   JMP   FUNCTION_3  
   JMP   FUNCTION_0A
FUNCTION_0A:   
   CLR	 XCVB1   
   CALL	 GETXS
   CALL	 VOLUPDN
   CALL	 LCDSTR
   JMP   MAIN_END

FUNCTION_2: 
    
    BCLR  XCVB1.0
    BSET  XCVB1.1
    
    CALL  GETXS
    
    BTS0  SWITCH.2
    JMP  FUNCTION_21
    MOV a,#0X20
    B0MOV LCDBUF+11,A
    MOV a,#0X3C
    B0MOV LCDBUF+12,A
    MOV a,#0X4F
    B0MOV LCDBUF+13,A
    MOV a,#0X4E
    B0MOV LCDBUF+14,A             
    BCLR SWITCH1.2
    
    JMP FUNCTION_22
    
 FUNCTION_21: 
    BSET  SWITCH1.2
    
 FUNCTION_22: 
   B0MOV A,SWITCH
  
   B0MOV MDT,A
   B0MOV MDT1,A
   CALL  WRNBYT   
   B0MOV A,SWITCH1   
   B0MOV MDT,A
   B0MOV MDT1,A
   CALL  WRNBYT2
   CALL  LCDSTR
   CLR   FUNCT
   JMP   MAIN
 FUNCTION_1: 
   BCLR  XCVB1.2 
   BCLR  XCVB1.3
   BSET  XCVB1.0
   
   CALL  GETXS 
   B0MOV a,balance
   XOR   A,#6
   BTS0  FZ
   jmp   noheikang
   MOV   a,#LCDBUF+3
   ADD   A,BALANCE
   B0MOV Y,#0      
   B0MOV Z,A  
   MOV   a,#0X0B    
   B0MOV @YZ,A
noheikang:  ;;没有黑框
   CALL  LCDSTR  
   B0MOV A,BALANCE
   B0MOV Y,#V_BALANCE$M
   B0MOV Z,#V_BALANCE$L
   B0ADD 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
   B0ADD Z,A  
   MOVC   
   
   OR    A,#0XC0
   B0MOV MDT1,A
   B0MOV RightSD,A  
   
   CALL  WRNBYT   
   CALL  WRNBYT2        
   CLR   FUNCT  
   JMP   MAIN_END
FUNCTION_3:  
   BSET  XCVB1.2 
   B0MOV A,BASS  
   B0MOV TEM1,A
   CALL  GETXS
   CALL  C_BASSB
   CLR   FUNCT
   JMP   MAIN_END
FUNCTION_4:
   BCLR  XCVB1.2
   BSET  XCVB1.3
   B0MOV A,TREBLE 
   B0MOV TEM1,A 
   CALL  GETXS
   CALL  C_BASSB
   CLR   FUNCT    
   JMP   MAIN_END
 
 VOLDN:
     
      BTS0 XCVB1.0
      JMP  VOLDNBAL
      JMP  VOLDNBAL_1
 VOLDNBAL:     
      MOV   A,BALANCE 
      BTS1  FZ      
      DECMS BALANCE
      NOP
      CALL  WRBALANCE
      
      JMP   FUNCTION_1   
 VOLDNBAL_1:
      BTS0 XCVB1.1
      JMP  VOLDNLOUD
      JMP  VOLDNLOUD_1
 VOLDNLOUD: 
        
      BSET  SWITCH.2 
      CALL  WRLOUD      
      JMP   FUNCTION_2       
 
 VOLDNLOUD_1: 
 
      BTS0 XCVB1.2
      JMP  VOLDNBASS
      JMP  VOLDNBASS_1
 VOLDNBASS:     
      
      B0MOV A,BASS
      BTS1  FZ
      DECMS BASS
      NOP
      CALL  WRBASS
   //   MOV     A,#1 
  //    CALL    delay1MS
//      CALL  RDNBYT3
      JMP   FUNCTION_3 
 VOLDNBASS_1: 
      BTS0  XCVB1.3
      JMP   VOLDNTRE
      JMP   VOLDNTRE_1
 VOLDNTRE:
      B0MOV A,TREBLE
      BTS1  FZ
      DECMS TREBLE
      NOP       
      CALL  WRTREBLE
      JMP   FUNCTION_4  
 
 VOLDNTRE_1:     
      INCMS VOLMAST
      NOP           
      B0MOV A,VOLMAST      
      SUB   A,#3FH
      BTS1  FC
      JMP   @F
      MOV   A,#0X3F
      BCLR  P2.7       //POWER OFF
      B0MOV VOLMAST,A     

  @@:
       
      CALL  VOLUPDN
      CALL  LCDSTR  
      JMP   MAIN_END      

⌨️ 快捷键说明

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