HPI_DSP.asm
上传用户:xs588588
上传日期:2021-03-30
资源大小:242k
文件大小:14k
源码类别:

DSP编程

开发平台:

C/C++

  1. .mmregs
  2. .global  _c_int00
  3. .global _init_54
  4. .global _HPI_ISR
  5. .global _Flag
  6. result  .set 0062h 
  7. num1  .set 0060h 
  8. num2  .set 0061h
  9. .sect "vectors"
  10. start:  B  _c_int00 
  11. NOP
  12. NOP
  13. nmi:  B     start
  14. NOP
  15. NOP
  16. ; software interrupts
  17. sint17 .space 4*16
  18. sint18 .space 4*16
  19. sint19 .space 4*16
  20. sint20 .space 4*16
  21. sint21 .space 4*16
  22. sint22 .space 4*16
  23. sint23 .space 4*16
  24. sint24 .space 4*16
  25. sint25 .space 4*16
  26. sint26 .space 4*16
  27. sint27 .space 4*16
  28. sint28 .space 4*16
  29. sint29 .space 4*16
  30. sint30 .space 4*16
  31. int0:  B        start
  32. nop
  33. nop
  34. int1:  B        start
  35. nop
  36. nop
  37. int2:  B        start
  38. NOP
  39. NOP
  40. tint0: B        start
  41. NOP          
  42. NOP   
  43. brint0: B        start       
  44. nop
  45. nop
  46. bxint0: B        start
  47. NOP
  48. NOP
  49. NOP
  50. DMAC0:  B        start
  51.         NOP
  52.         NOP
  53. TINT1:  B        start
  54.         NOP
  55.         NOP
  56. INT3:   B        start
  57.         NOP
  58.         NOP
  59. hpint:  _HPI_ISR
  60. NOP
  61. NOP 
  62. NOP
  63. brint1: B        start 
  64. NOP  
  65. NOP
  66. NOP
  67. bxint1: B        start 
  68. NOP 
  69. NOP
  70. DMAC4:  B        start
  71.         NOP
  72. NOP
  73. DMAC5:  B        start
  74. NOP
  75. NOP
  76. .text
  77. ;>>>>  interrupt
  78. ;***************************************************************
  79. ;* FUNCTION DEF: _HPI_ISR                                      *
  80. ;***************************************************************
  81. _HPI_ISR:  
  82.         PSHM      AL
  83.         PSHM      AH
  84.         PSHM      AG
  85.         PSHM      BL
  86.         PSHM      BH
  87.         PSHM      BG
  88.         PSHM      AR1
  89. PSHM   AR2
  90. PSHM   AR3
  91. PSHM    T
  92. pshm   brc
  93. pshm   rsa
  94. pshm   rea
  95. STM #num1, AR3 
  96. STM #num2, AR4 
  97. STM #result, AR5
  98. ADD *AR3, *AR4, A 
  99. STH A, *AR5
  100. STM #08h, HPIC ; Interrupt
  101. STM #0FFFFh, IFR
  102.         ST  #1,*(_flag)
  103.         popm    rea
  104.         popm    rsa
  105.         popm    brc
  106.         POPM    T
  107.         POPM    AR3
  108.         POPM      AR2         
  109.         POPM      AR1
  110.         POPM      BG
  111.         POPM      BH
  112.         POPM      BL
  113.         POPM      AG
  114.         POPM      AH
  115.         POPM      AL
  116.         POPM      ST1
  117. POPM      ST0
  118.         RETE        
  119. ;***********************************************
  120. ;*    C5409 serial port registers              *
  121. ;*************** MCBSP0 ************************
  122. DRR10              .set    21H       ; Data Receive Register
  123. DXR10              .set    23H       ; Data Transmit Register
  124. SPSA0              .set    0038H     ; Serial Port 0 Sub-bank Address Register 
  125. SPSD0              .set    0039H     ; Serial Port 0 Sub-bank Data Register 
  126. drr11              .set    41H       ; Data Receive Register         
  127. dxr11              .set    43H       ; Data Transmit Register
  128. SPSA1              .set    0048H     ; Serial Port 1 Sub-bank Address Register
  129. SPSD1              .set    0049H     ; Serial Port 1 Sub-bank Data Register
  130. ;*----------- MCBSP CONTROL REGS --------------*
  131. SPCR1_SUBADDR      .set    0000H     ; Serial Port Control Register 1 (subaddress)
  132. SPCR2_SUBADDR      .set    0001H     ; Serial Port 1 Control Register 2 (subaddress)
  133. RCR1_SUBADDR       .set    0002H     ; Receive Control Register 1 (subaddress)
  134. RCR2_SUBADDR       .set    0003H     ; Receive Control Register 2 (subaddress)
  135. XCR1_SUBADDR       .set    0004H     ; Transmit Control Register 1 (subaddress)
  136. XCR2_SUBADDR       .set    0005H     ; Transmit Control Register 2 (subaddress)
  137. SRGR1_SUBADDR      .set    0006H     ; Sample Rate Genarator Register 1 (subaddress)
  138. SRGR2_SUBADDR      .set    0007H     ; Sample Rate Genarator Register 2 (subaddress)
  139. PCR_SUBADDR        .set    000EH     ; Pin Control Register (subaddress)
  140. ;*-----------SPCR1 register organization -------------*
  141. ;*-------------------------------------------------------------------------*
  142. ;*|  15 | 14  13| 12 11 | 10  8 |  7  |  6 |5   4|   3    |  2  |  1 |  0 |*
  143. ;*-------------------------------------------------------------------------*
  144. ;*| DLB | RJUST |CLKSTP |  RES  |DXENA|ABIS|RINTM|RSYNCERR|RFULL|RRDY|RRST|*
  145. ;*-------------------------------------------------------------------------*
  146. K_DLB              .set    0b<<15
  147. K_RJUST            .set    00b<<13      
  148. K_CLKSTP           .set    00b<<11    
  149. K_SPCR1_RES        .set    000b<<8  
  150. K_DXENA            .set    1b<<7  
  151. K_ABIS             .set    0b<<6  
  152. K_RINTM            .set    10b<<4
  153. K_RSYNCERR         .set    0b<<3    
  154. K_RFULL            .set    0b<<2       
  155. K_RRDY             .set    0b<<1      
  156. K_RRST             .set    1b  
  157. 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
  158.  
  159. ;*-----------SPCR2 register organization -------------*
  160. ;*--------------------------------------------------------------*
  161. ;*| 15 10 |  9 |  8 |  7 |  6 | 5 4 |    3   |   2  |  1 |  0  |*
  162. ;*--------------------------------------------------------------*
  163. ;*|  RES  |FREE|SOFT|FRST|GRST|XINTM|XSYNCERR|XEMPTY|XRDY|XRST |*
  164. ;*--------------------------------------------------------------*
  165. K_SPCR2_RES        .set    000000b<<10
  166. K_FREE             .set    0b<<9      
  167. K_SOFT             .set    0b<<8    
  168. K_FRST             .set    1b<<7
  169. K_GRST             .set    1b<<6  
  170. K_XINTM            .set    10b<<4  
  171. K_SYNCERR          .set    0b<<3    
  172. K_XEMPTY           .set    0b<<2       
  173. K_XRDY             .set    0b<<1      
  174. K_XRST             .set    1b 
  175. K_SPCR2            .set    K_SPCR2_RES|K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_SYNCERR|K_XEMPTY|K_XRDY|K_XRST
  176.  
  177. ;*-----------PCR   register organization -------------*
  178. ;*---------------------------------------------------------------------------------------------*
  179. ;*|15 14|  13 |  12 | 11 | 10 |  9  |  8  | 7 |    6    |   5   |   4   |  3 |  2 |  1  |  0  1*
  180. ;*---------------------------------------------------------------------------------------------*
  181. ;*| RES |XIOEN|RIOEN|FSXM|FRSM|CLKXM|CLKRM|RES|CLKS_STAT|DX_STAT|DR_STAT|FSXP|FSRP|CLKXP|CLXRP|*
  182. ;*---------------------------------------------------------------------------------------------*
  183. K_PCR_RES          .set    00b<<14
  184. K_XIOEN            .set    0b<<13      
  185. K_RIOEN            .set    0b<<12    
  186. K_FSXM             .set    1b<<11
  187. K_FRSM             .set    0b<<10  
  188. K_CLKXM            .set    1b<<9  
  189. K_CLKRM            .set    0b<<8    
  190. K_PCR_RES1         .set    0b<<8       
  191. K_CLKS_STAT        .set    0b<<6      
  192. K_DX_STAT          .set    0b<<5
  193. K_DR_STAT          .set    0b<<4       
  194. K_FSXP             .set    0b<<3      
  195. K_FSRP             .set    0b<<2 
  196. K_CLKXP            .set    0b<<1
  197. K_CLKRP            .set    0b
  198. 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
  199.  
  200. ;*-----------RCR1  register organization -------------*
  201. ;*----------------------------------*
  202. ;*|  15 | 14    8 | 7     5 | 4  0 |*
  203. ;*----------------------------------*
  204. ;*| RES | RFRLEN1 | RWDLEN1 | RES  |*
  205. ;*----------------------------------*
  206. K_RCR1_RES         .set    0b<<15
  207. K_RFRLEN1          .set    0000000b<<8      
  208. K_RWDLEN1          .set    000b<<5    
  209. K_RCR1_RES1        .set    00000b
  210. K_RCR1             .set    K_RCR1_RES|K_RCR1_RES1|K_RFRLEN1|K_RWDLEN1
  211.  
  212. ;*-----------RCR2  register organization -------------*
  213. ;*----------------------------------------------------*
  214. ;*|    15  | 14    8 | 7     5 | 4    3 |  2 | 1   0 |*
  215. ;*----------------------------------------------------*
  216. ;*| RPHASE | RFRLEN2 | RWDLEN2 |RCOMPAND|RFIG|RDATDLY|*
  217. ;*----------------------------------------------------*
  218. K_RPHASE           .set    0b<<15
  219. K_RFRLEN2          .set    0000000b<<8      
  220. K_RWDLEN2          .set    000b<<5  
  221. K_RCOMPAND         .set    10b<<3
  222. K_RFIG             .set    0b<<2
  223. K_RDATDLY          .set    01b
  224. K_RCR2             .set    K_RPHASE|K_RDATDLY|K_RFRLEN2|K_RWDLEN2|K_RCOMPAND|K_RFIG
  225.  
  226. ;*-----------XCR1  register organization -------------*
  227. ;*----------------------------------*
  228. ;*|  15 | 14    8 | 7     5 | 4  0 |*
  229. ;*----------------------------------*
  230. ;*| RES | XFRLEN1 | XWDLEN1 | RES  |*
  231. ;*----------------------------------*
  232. K_XCR1_RES         .set    0b<<15
  233. K_XFRLEN1          .set    0000000b<<8      
  234. K_XWDLEN1          .set    000b<<5    
  235. K_XCR1_RES1        .set    00000b
  236. K_XCR1             .set    K_XCR1_RES|K_XCR1_RES1|K_XFRLEN1|K_XWDLEN1
  237.  
  238. ;*-----------XCR2  register organization -------------*
  239. ;*----------------------------------------------------*
  240. ;*|    15  | 14    8 | 7     5 | 4    3 |  2 | 1   0 |*
  241. ;*----------------------------------------------------*
  242. ;*| XPHASE | XFRLEN2 | XWDLEN2 |XCOMPAND|XFIG|XDATDLY|*
  243. ;*----------------------------------------------------*
  244. K_XPHASE           .set    0b<<15
  245. K_XFRLEN2          .set    0000000b<<8      
  246. K_XWDLEN2          .set    000b<<5  
  247. K_XCOMPAND         .set    10b<<3
  248. K_XFIG             .set    0b<<2
  249. K_XDATDLY          .set    01b
  250. K_XCR2             .set    K_XPHASE|K_XDATDLY|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG
  251. ;*------------Sample Rate Generate Register 1-------------*
  252. ;*--------------------------------------------------------*
  253. ;*|15                     8|7                           0|*
  254. ;*--------------------------------------------------------*
  255. ;*|        FWID    |        CLKGTDV           |*
  256. ;*--------------------------------------------------------*
  257. K_FWID    .SET    00000000b << 8
  258. K_CLKGDV    .SET    00110001b << 0
  259. K_SRGR1    .SET    K_FWID|K_CLKGDV
  260. ;*------------Sample Rate Generate Register 2-------------*
  261. ;*--------------------------------------------------------*
  262. ;*|  15 |  14 |  13 | 12 | 11 0|*
  263. ;*--------------------------------------------------------*
  264. ;*|GSYNC|CLKSP|CLKSM|FSGM|           FPER                |*
  265. ;*--------------------------------------------------------*
  266. K_GSYNC    .SET    1b << 15
  267. K_CLKSP    .SET    1b << 14
  268. K_CLKSM    .SET    1b << 13
  269. K_FSGM    .SET    1b << 12
  270. K_FPER    .SET    000011111001b
  271. K_SRGR2    .SET    K_GSYNC|K_CLKSP|K_CLKSM|K_FSGM|K_FPER
  272. ;*------------PMST  register organization---------------------*
  273. ;*------------------------------------------------------------*
  274. ;*| 15    7 |     6  |  5   |  4   |  3   |  2     | 1    0  |*
  275. ;*------------------------------------------------------------*
  276. ;*|   IPTR  | MP/MC- | OVLY | AVIS | DROM | CLKOFF | RESEVED |*
  277. ;*------------------------------------------------------------*
  278. K_IPTR             .SET    011111110b << 07   ; 111111111b at reset
  279. K_MP_MC            .SET    1b << 6            ; 1 at reset
  280. K_OVLY             .SET    1b << 5            ; 0 at reset
  281. K_AVIS             .SET    0b << 4            ; 0 at reset
  282. K_DROM             .SET    0b << 3            ; 0 at reset
  283. K_CLKOFF           .SET    0b << 2            ; 0 at reset
  284. K_PMST_RESR        .SET    00b                ; 00b at reset
  285. K_PMST             .SET    K_IPTR|K_OVLY|K_DROM|K_CLKOFF|K_PMST_RESR 
  286. ;*----------------SWWSR register organization-------------------*
  287. ;*--------------------------------------------------------------*
  288. ;*|    15    | 14  12| 11    9| 8    6 |  5      3| 2         0|*
  289. ;*--------------------------------------------------------------*
  290. ;*| reserved |  I/O  |  DATA  |  DATA  |  PROGRAM |  PROGRAM   |*
  291. ;*--------------------------------------------------------------*
  292. K_SWWSR_RESV       .SET    0b << 15     ; reset  
  293. K_IO               .SET    000b << 12   ; reset
  294. K_DATA1            .SET    000b <<  9   ; reset
  295. K_DATA2            .SET    000b <<  6   ; reset
  296. K_PROGRAM1         .SET    000b <<  3   ; reset
  297. K_PROGRAM2         .SET    000b         ; reset
  298. K_SWWSR            .SET     K_SWWSR_RESV|K_IO|K_DATA1|K_DATA2|K_PROGRAM1|K_PROGRAM2
  299. ;*Bank Switch Control Register(BSCR) organization*
  300. ;*----------------------------------------*
  301. ;*| 15   12|   11  | 10     2 | 1  | 0   |*
  302. ;*----------------------------------------*
  303. ;*| BNKCMP | PS-DS | Reserved | BH | EXIO|*
  304. ;*----------------------------------------*
  305. K_BNKCMP           .SET    1111b << 12   ; bank size = 64k
  306. K_PSDS             .SET    0b    << 11   ; reset
  307. K_BSCR_RESV        .SET    000000000b << 2 
  308. K_BH               .SET    0b   << 1     ; reset
  309. K_EXIO             .SET    0b            ; reset 
  310. K_BSCR             .SET    K_BNKCMP|K_PSDS|K_BSCR_RESV|K_BH|K_EXIO
  311. ;*--------------CLKMD register organization---------------*
  312. ;*--------------------------------------------------------*
  313. ;*|  15 12 |   11   | 10    3|    2    |   1   |    0    |*
  314. ;*--------------------------------------------------------*
  315. ;*| PLLMUL | PLLDIV |PLLCOUNT|PLLON/OFF|PLLNDIV|PLLSTATUS|*
  316. ;*--------------------------------------------------------*
  317. K_PLLMUL           .SET     1001b<<12
  318. K_PLLDIV           .SET     0b<<11
  319. K_PLLCOUNT         .SET     00000000b<<3
  320. K_PLLON_OFF        .SET     1b<<2
  321. K_PLLNDIV          .SET     1b<<1
  322. K_PLLSTATUS        .SET     1b
  323. K_CLKMD            .SET     K_PLLMUL|K_PLLDIV|K_PLLCOUNT|K_PLLON_OFF|K_PLLNDIV|K_PLLSTATUS
  324. _init_54:
  325.        STM      #K_PMST  ,PMST
  326.        STM      #K_SWWSR,SWWSR
  327.        STM      #K_BSCR,BSCR
  328.        NOP
  329.        NOP
  330.        NOP 
  331.        STM      #0,CLKMD
  332.        NOP
  333.        NOP
  334.        STM      #K_CLKMD,CLKMD  
  335.        STM      #0, IMR
  336.        NOP
  337.        NOP
  338.        NOP
  339.        NOP
  340.        STM #0FFFFh, IFR ; 
  341.        STM #0200h, IMR
  342.        NOP
  343.        NOP
  344.        NOP
  345.        NOP
  346.        NOP
  347.        NOP
  348.        NOP
  349.        NOP
  350.        RET
  351. ; Interupt Mask Regiser(IMR) Register
  352. ;*------------------------------------------------------------------------------------------------------------
  353. ;*|15 14|  13 |  12 |      11    |      10    | 9   | 8  |     7     |  6  |  5   |   4  |  3 | 2  |  1 | 0  |
  354. ;*------------------------------------------------------------------------------------------------------------
  355. ;*|resvd|DMAC5|DMAC4|BXINT1/DMAC3|BRINT1/DMAC2|HPINT|INT3|TINT1/DMAC1|DMAC0|BXINT0|BRINT0|TINT|INT2|INT1|INT0|
  356. ;*------------------------------------------------------------------------------------------------------------       
  357. K_IMR_BXINT0       .SET     1b << 5        ; enable McBSP TRANSMIT
  358. K_IMR_BRINT0       .SET     1b << 4        ; enable McBSP receive
  359.        
  360.