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

📄 hpi_dsp.asm

📁 基于M430单片机与DSP的HPI接口的设计与实现 基于的软件开发
💻 ASM
字号:
	.mmregs
	
	.global  _c_int00
	.global _init_54
	.global	_HPI_ISR
	.global _Flag

result 	.set 0062h 
num1 	.set 0060h 
num2 	.set 0061h

	.sect "vectors"

start:  B 	_c_int00 
	NOP
	NOP
nmi: 	B    	start
	NOP
	NOP

; software interrupts
sint17 .space 4*16
sint18 .space 4*16
sint19 .space 4*16
sint20 .space 4*16
sint21 .space 4*16
sint22 .space 4*16
sint23 .space 4*16
sint24 .space 4*16
sint25 .space 4*16
sint26 .space 4*16
sint27 .space 4*16
sint28 .space 4*16
sint29 .space 4*16
sint30 .space 4*16
int0: 	B        start
	nop
	nop
int1: 	B        start
	nop
	nop
int2: 	B        start
	NOP
	NOP
tint0:	B        start
	NOP 		        
	NOP   
brint0: B        start       
	nop
	nop
bxint0: B        start
	NOP			
	NOP
	NOP
DMAC0:  B        start
        NOP
        NOP
TINT1:  B        start
        NOP
        NOP
INT3:   B        start
        NOP
        NOP	
hpint: 	_HPI_ISR
	NOP
	NOP 
	NOP	
brint1:	B        start 			
	NOP	 		
	NOP
	NOP
bxint1:	B        start 			
	NOP 			
	NOP
DMAC4:  B        start
        NOP
	NOP
DMAC5:  B        start
	NOP
	NOP
	.text
;>>>> 	interrupt

;***************************************************************
;* FUNCTION DEF: _HPI_ISR                                      *
;***************************************************************
_HPI_ISR:	 
        PSHM      AL
        PSHM      AH
        PSHM      AG
        PSHM      BL
        PSHM      BH
        PSHM      BG
        PSHM      AR1
	PSHM	  AR2
	PSHM	  AR3
	PSHM 	  T
	pshm	  brc
	pshm	  rsa
	pshm	  rea
	
	STM #num1, AR3 
	STM #num2, AR4 
	STM #result, AR5
	ADD *AR3, *AR4, A 
	STH A, *AR5
	STM #08h, HPIC ; Interrupt
	STM #0FFFFh, IFR
	
        ST  #1,*(_flag)
        popm	   rea
        popm	   rsa
        popm	   brc
        POPM	   T
        POPM	   AR3
        POPM      AR2         
        POPM      AR1
        POPM      BG
        POPM      BH
        POPM      BL
        POPM      AG
        POPM      AH
        POPM      AL
        POPM      ST1
	POPM      ST0
        RETE        
;***********************************************
;*    C5409 serial port registers              *
;*************** MCBSP0 ************************
DRR10              .set    21H       ; Data Receive Register
DXR10              .set    23H       ; Data Transmit Register
SPSA0              .set    0038H     ; Serial Port 0 Sub-bank Address Register 
SPSD0              .set    0039H     ; Serial Port 0 Sub-bank Data Register 

drr11              .set    41H       ; Data Receive Register         
dxr11              .set    43H       ; Data Transmit Register
SPSA1              .set    0048H     ; Serial Port 1 Sub-bank Address Register
SPSD1              .set    0049H     ; Serial Port 1 Sub-bank Data Register
;*----------- MCBSP CONTROL REGS --------------*
SPCR1_SUBADDR      .set    0000H     ; Serial Port Control Register 1 (subaddress)
SPCR2_SUBADDR      .set    0001H     ; Serial Port 1 Control Register 2 (subaddress)
RCR1_SUBADDR       .set    0002H     ; Receive Control Register 1 (subaddress)
RCR2_SUBADDR       .set    0003H     ; Receive Control Register 2 (subaddress)
XCR1_SUBADDR       .set    0004H     ; Transmit Control Register 1 (subaddress)
XCR2_SUBADDR       .set    0005H     ; Transmit Control Register 2 (subaddress)
SRGR1_SUBADDR      .set    0006H     ; Sample Rate Genarator Register 1 (subaddress)
SRGR2_SUBADDR      .set    0007H     ; Sample Rate Genarator Register 2 (subaddress)
PCR_SUBADDR        .set    000EH     ; Pin Control Register (subaddress)
;*-----------SPCR1 register organization -------------*
;*-------------------------------------------------------------------------*
;*|  15 | 14  13| 12 11 | 10  8 |  7  |  6 |5   4|   3    |  2  |  1 |  0 |*
;*-------------------------------------------------------------------------*
;*| DLB | RJUST |CLKSTP |  RES  |DXENA|ABIS|RINTM|RSYNCERR|RFULL|RRDY|RRST|*
;*-------------------------------------------------------------------------*
K_DLB              .set    0b<<15
K_RJUST            .set    00b<<13      
K_CLKSTP           .set    00b<<11    
K_SPCR1_RES        .set    000b<<8  
K_DXENA            .set    1b<<7  
K_ABIS             .set    0b<<6  
K_RINTM            .set    10b<<4
K_RSYNCERR         .set    0b<<3    
K_RFULL            .set    0b<<2       
K_RRDY             .set    0b<<1      
K_RRST             .set    1b  

K_SPCR1            .set    K_DLB|K_RJUST|K_CLKSTP|K_SPCR1_RES|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST
 
;*-----------SPCR2 register organization -------------*
;*--------------------------------------------------------------*
;*| 15 10 |  9 |  8 |  7 |  6 | 5 4 |    3   |   2  |  1 |  0  |*
;*--------------------------------------------------------------*
;*|  RES  |FREE|SOFT|FRST|GRST|XINTM|XSYNCERR|XEMPTY|XRDY|XRST |*
;*--------------------------------------------------------------*
K_SPCR2_RES        .set    000000b<<10
K_FREE             .set    0b<<9      
K_SOFT             .set    0b<<8    
K_FRST             .set    1b<<7
K_GRST             .set    1b<<6  
K_XINTM            .set    10b<<4  
K_SYNCERR          .set    0b<<3    
K_XEMPTY           .set    0b<<2       
K_XRDY             .set    0b<<1      
K_XRST             .set    1b 

K_SPCR2            .set    K_SPCR2_RES|K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_SYNCERR|K_XEMPTY|K_XRDY|K_XRST
 
;*-----------PCR   register organization -------------*
;*---------------------------------------------------------------------------------------------*
;*|15 14|  13 |  12 | 11 | 10 |  9  |  8  | 7 |    6    |   5   |   4   |  3 |  2 |  1  |  0  1*
;*---------------------------------------------------------------------------------------------*
;*| RES |XIOEN|RIOEN|FSXM|FRSM|CLKXM|CLKRM|RES|CLKS_STAT|DX_STAT|DR_STAT|FSXP|FSRP|CLKXP|CLXRP|*
;*---------------------------------------------------------------------------------------------*
K_PCR_RES          .set    00b<<14
K_XIOEN            .set    0b<<13      
K_RIOEN            .set    0b<<12    
K_FSXM             .set    1b<<11
K_FRSM             .set    0b<<10  
K_CLKXM            .set    1b<<9  
K_CLKRM            .set    0b<<8    
K_PCR_RES1         .set    0b<<8       
K_CLKS_STAT        .set    0b<<6      
K_DX_STAT          .set    0b<<5
K_DR_STAT          .set    0b<<4       
K_FSXP             .set    0b<<3      
K_FSRP             .set    0b<<2 
K_CLKXP            .set    0b<<1
K_CLKRP            .set    0b

K_PCR              .set    K_PCR_RES1|K_XIOEN|K_RIOEN|K_FSXM|K_FRSM|K_CLKXM|K_CLKRM|K_PCR_RES|K_CLKS_STAT|K_DX_STAT|K_DR_STAT|K_FSXP|K_FSRP|K_CLKXP|K_CLKRP
 
;*-----------RCR1  register organization -------------*
;*----------------------------------*
;*|  15 | 14    8 | 7     5 | 4  0 |*
;*----------------------------------*
;*| RES | RFRLEN1 | RWDLEN1 | RES  |*
;*----------------------------------*
K_RCR1_RES         .set    0b<<15
K_RFRLEN1          .set    0000000b<<8      
K_RWDLEN1          .set    000b<<5    
K_RCR1_RES1        .set    00000b

K_RCR1             .set    K_RCR1_RES|K_RCR1_RES1|K_RFRLEN1|K_RWDLEN1
 
;*-----------RCR2  register organization -------------*
;*----------------------------------------------------*
;*|    15  | 14    8 | 7     5 | 4    3 |  2 | 1   0 |*
;*----------------------------------------------------*
;*| RPHASE | RFRLEN2 | RWDLEN2 |RCOMPAND|RFIG|RDATDLY|*
;*----------------------------------------------------*
K_RPHASE           .set    0b<<15
K_RFRLEN2          .set    0000000b<<8      
K_RWDLEN2          .set    000b<<5  
K_RCOMPAND         .set    10b<<3
K_RFIG             .set    0b<<2
K_RDATDLY          .set    01b

K_RCR2             .set    K_RPHASE|K_RDATDLY|K_RFRLEN2|K_RWDLEN2|K_RCOMPAND|K_RFIG
 
;*-----------XCR1  register organization -------------*
;*----------------------------------*
;*|  15 | 14    8 | 7     5 | 4  0 |*
;*----------------------------------*
;*| RES | XFRLEN1 | XWDLEN1 | RES  |*
;*----------------------------------*
K_XCR1_RES         .set    0b<<15
K_XFRLEN1          .set    0000000b<<8      
K_XWDLEN1          .set    000b<<5    
K_XCR1_RES1        .set    00000b

K_XCR1             .set    K_XCR1_RES|K_XCR1_RES1|K_XFRLEN1|K_XWDLEN1
 
;*-----------XCR2  register organization -------------*
;*----------------------------------------------------*
;*|    15  | 14    8 | 7     5 | 4    3 |  2 | 1   0 |*
;*----------------------------------------------------*
;*| XPHASE | XFRLEN2 | XWDLEN2 |XCOMPAND|XFIG|XDATDLY|*
;*----------------------------------------------------*
K_XPHASE           .set    0b<<15
K_XFRLEN2          .set    0000000b<<8      
K_XWDLEN2          .set    000b<<5  
K_XCOMPAND         .set    10b<<3
K_XFIG             .set    0b<<2
K_XDATDLY          .set    01b

K_XCR2             .set    K_XPHASE|K_XDATDLY|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG

;*------------Sample Rate Generate Register 1-------------*
;*--------------------------------------------------------*
;*|15                     8|7                           0|*
;*--------------------------------------------------------*
;*|        FWID		   |	       CLKGTDV           |*
;*--------------------------------------------------------*
K_FWID		   .SET    00000000b << 8
K_CLKGDV	   .SET    00110001b << 0
K_SRGR1		   .SET    K_FWID|K_CLKGDV
;*------------Sample Rate Generate Register 2-------------*
;*--------------------------------------------------------*
;*|  15 |  14 |  13 | 12 | 11				0|*
;*--------------------------------------------------------*
;*|GSYNC|CLKSP|CLKSM|FSGM|           FPER                |*
;*--------------------------------------------------------*
K_GSYNC		   .SET	   1b << 15
K_CLKSP		   .SET    1b << 14
K_CLKSM		   .SET    1b << 13
K_FSGM		   .SET    1b << 12
K_FPER		   .SET    000011111001b
K_SRGR2		   .SET    K_GSYNC|K_CLKSP|K_CLKSM|K_FSGM|K_FPER			


;*------------PMST  register organization---------------------*
;*------------------------------------------------------------*
;*| 15    7 |     6  |  5   |  4   |  3   |  2     | 1    0  |*
;*------------------------------------------------------------*
;*|   IPTR  | MP/MC- | OVLY | AVIS | DROM | CLKOFF | RESEVED |*
;*------------------------------------------------------------*
K_IPTR             .SET    011111110b << 07   ; 111111111b at reset
K_MP_MC            .SET    1b << 6            ; 1 at reset
K_OVLY             .SET    1b << 5            ; 0 at reset
K_AVIS             .SET    0b << 4            ; 0 at reset
K_DROM             .SET    0b << 3            ; 0 at reset
K_CLKOFF           .SET    0b << 2            ; 0 at reset
K_PMST_RESR        .SET    00b                ; 00b at reset

K_PMST             .SET    K_IPTR|K_OVLY|K_DROM|K_CLKOFF|K_PMST_RESR 

;*----------------SWWSR register organization-------------------*
;*--------------------------------------------------------------*
;*|    15    | 14  12| 11    9| 8    6 |  5      3| 2         0|*
;*--------------------------------------------------------------*
;*| reserved |  I/O  |  DATA  |  DATA  |  PROGRAM |  PROGRAM   |*
;*--------------------------------------------------------------*

K_SWWSR_RESV       .SET    0b << 15     ; reset  
K_IO               .SET    000b << 12   ; reset
K_DATA1            .SET    000b <<  9   ; reset
K_DATA2            .SET    000b <<  6   ; reset
K_PROGRAM1         .SET    000b <<  3   ; reset
K_PROGRAM2         .SET    000b         ; reset

K_SWWSR            .SET     K_SWWSR_RESV|K_IO|K_DATA1|K_DATA2|K_PROGRAM1|K_PROGRAM2

;*Bank Switch Control Register(BSCR) organization*
;*----------------------------------------*
;*| 15   12|   11  | 10     2 | 1  | 0   |*
;*----------------------------------------*
;*| BNKCMP | PS-DS | Reserved | BH | EXIO|*
;*----------------------------------------*

K_BNKCMP           .SET    1111b << 12   ; bank size = 64k
K_PSDS             .SET    0b    << 11   ; reset
K_BSCR_RESV        .SET    000000000b << 2 
K_BH               .SET    0b   << 1     ; reset
K_EXIO             .SET    0b            ; reset 
K_BSCR             .SET    K_BNKCMP|K_PSDS|K_BSCR_RESV|K_BH|K_EXIO

;*--------------CLKMD register organization---------------*
;*--------------------------------------------------------*
;*|  15 12 |   11   | 10    3|    2    |   1   |    0    |*
;*--------------------------------------------------------*
;*| PLLMUL | PLLDIV |PLLCOUNT|PLLON/OFF|PLLNDIV|PLLSTATUS|*
;*--------------------------------------------------------*

K_PLLMUL           .SET     1001b<<12
K_PLLDIV           .SET     0b<<11
K_PLLCOUNT         .SET     00000000b<<3
K_PLLON_OFF        .SET     1b<<2
K_PLLNDIV          .SET     1b<<1
K_PLLSTATUS        .SET     1b

K_CLKMD            .SET     K_PLLMUL|K_PLLDIV|K_PLLCOUNT|K_PLLON_OFF|K_PLLNDIV|K_PLLSTATUS

_init_54:
       STM      #K_PMST  ,PMST
       STM      #K_SWWSR,SWWSR
       STM      #K_BSCR,BSCR
       NOP
       NOP
       NOP 
       STM      #0,CLKMD
       NOP
       NOP
       STM      #K_CLKMD,CLKMD  
       STM      #0, IMR
       NOP
       NOP
       NOP
       NOP
       STM #0FFFFh, IFR ; 
       STM #0200h, IMR
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       RET

; Interupt Mask Regiser(IMR) Register
;*------------------------------------------------------------------------------------------------------------
;*|15 14|  13 |  12 |      11    |      10    | 9   | 8  |     7     |  6  |  5   |   4  |  3 | 2  |  1 | 0  |
;*------------------------------------------------------------------------------------------------------------
;*|resvd|DMAC5|DMAC4|BXINT1/DMAC3|BRINT1/DMAC2|HPINT|INT3|TINT1/DMAC1|DMAC0|BXINT0|BRINT0|TINT|INT2|INT1|INT0|
;*------------------------------------------------------------------------------------------------------------       
K_IMR_BXINT0       .SET     1b << 5        ; enable McBSP TRANSMIT
K_IMR_BRINT0       .SET     1b << 4        ; enable McBSP receive
       
 

⌨️ 快捷键说明

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