?? exer4.asm
字號(hào):
;----------------------------------------------------------------
; This program use McBSP1 sent SINE table.The table is in VC5402'
; ROM.So, the program move the talbe to xbuffer first, then send
; them from McBSP1.The rbuffer use to save recived data !
;----------------------------------------------------------------
.title "for test BSP program (Transmit) "
.mmregs
.global _c_int00,int_send,int_rev
;----------define serial control registers' address--------
DRR10 .set 0x0021 ; McBSP0 data receive register 1
DRR11 .set 0x0041 ; McBSP1 data receive register 1
DRR12 .set 0x0031 ; McBSP2 data receive register 1
DXR10 .set 0x0023 ; McBSP0 data transmit register 1
DXR11 .set 0x0043 ; McBSP1 data transmit register 1
DXR12 .set 0x0033 ; McBSP2 data transmit register 1
MCBSP0_SPSA .set 0x0038
MCBSP0_SPSD .set 0x0039
MCBSP1_SPSA .set 0x0048 ; serial 1
MCBSP1_SPSD .set 0x0049 ; serial 1
MCBSP2_SPSA .set 0x0034
MCBSP2_SPSD .set 0x0035
MCBSP_SPCR1_SUB_ADDR .set 0x0000
MCBSP_SPCR2_SUB_ADDR .set 0x0001
MCBSP_RCR1_SUB_ADDR .set 0x0002
MCBSP_RCR2_SUB_ADDR .set 0x0003
MCBSP_XCR1_SUB_ADDR .set 0x0004
MCBSP_XCR2_SUB_ADDR .set 0x0005
MCBSP_SRGR1_SUB_ADDR .set 0x0006
MCBSP_SRGR2_SUB_ADDR .set 0x0007
MCBSP_MCR1_SUB_ADDR .set 0x0008
MCBSP_MCR2_SUB_ADDR .set 0x0009
MCBSP_RCERA_SUB_ADDR .set 0x000a
MCBSP_RCERB_SUB_ADDR .set 0x000b
MCBSP_XCERA1_SUB_ADDR .set 0x000c
MCBSP_XCERA2_SUB_ADDR .set 0x000d
MCBSP_PCR_SUB_ADDR .set 0x000e
stack_size .set 100h
temp .usect ".var",1 ; temp is in 60h-7fh, dp=0;
send_ptr .usect ".var",1 ; save sent buf ptr
rev_ptr .usect ".var",1 ; save rev buf ptr
isnew .usect ".var",1 ;
xbuffer .usect ".xbuf",128
rbuffer .usect ".rbuf",128
.bss addr_stack,stack_size
.text
_c_int00:
ssbx intm ; disable all interrupt !
stm #2028h,PMST ; vector in 1800h
stm #addr_stack+stack_size,sp ; init SP
stm #0c00h,IMR ; enable serial_1 send !
stm #xbuffer,ar0
rpt #127
mvpd #0fe00h,*ar0+ ; move sine tabel to xbuffer !
stm #rbuffer,ar0
rpt #127
st #0,*ar0+ ; clear rev_buffer to 0
stm #xbuffer,send_ptr
stm #rbuffer,rev_ptr
stm #128,bk ; circular buffer size=256
;******************************************************************
; The following codes are used to initalize McBSP1 !
; When Transmit, this DES5402PP makes CLK,FS ! the other
; DES5402PP receives the CLK,FS !
;******************************************************************
stm #0,MCBSP1_SPSA ; choose SPCR11
stm #2000h,MCBSP1_SPSD ; receive sign_extend in DRR
stm #1,MCBSP1_SPSA ; choose SPCR20
stm #100h,MCBSP1_SPSD ;
stm #2,MCBSP1_SPSA ; choose RCR10
stm #40h,MCBSP1_SPSD ; 16 bits each word
stm #3,MCBSP1_SPSA ; choose RCR20
stm #40h,MCBSP1_SPSD
stm #4,MCBSP1_SPSA ; choose XCR10
stm #40h,MCBSP1_SPSD ; 16 bits each word
stm #5,MCBSP1_SPSA ; choose XCR20
stm #0,MCBSP1_SPSD
stm #6,MCBSP1_SPSA ; choose SRGR1
stm #1C8h,MCBSP1_SPSD ; CLKG=100M /200=500K
stm #7,MCBSP1_SPSA ; choose SRGR2
stm #2000h,MCBSP1_SPSD ; Sample rate generator clock derived from CPU clock
; 0x8,0x9,0xa,0xb,0xc,0xd all = 0x0
stm #0eh,MCBSP1_SPSA ; choose PCR0
stm #0a0eh,MCBSP1_SPSD
rpt #0ffh
nop
stm #0h,MCBSP1_SPSA
stm #2001h,MCBSP1_SPSD ; enable recive !
stm #1,MCBSP1_SPSA
stm #1c1h,MCBSP1_SPSD ; enable transmit !
stm #0,DXR11
;------ init serial port 1 end -----------------------------
rsbx intm ; enable all int,
again:
nop
nop
b again
nop
;-------------------------------------------------------------
; interrupt for INT_BXINT !
;-------------------------------------------------------------
int_send:
pshm st0
pshm st1
pshm ar2
ld #0,dp
mvdk send_ptr,ar2 ; restore send ptr !
mvdk *ar2+%, DXR11 ; send data to serial port
nop
nop
mvmd ar2,#send_ptr ; save send ptr !
popm ar2
popm st1
popm st0
rete
;-------------------------------------------------------------
; interrupt for INT_BRINT !
;-------------------------------------------------------------
int_rev:
pshm st0
pshm st1
pshm ar2
ld #0,dp
mvdk rev_ptr,ar2 ; restore rev ptr !
ld DRR11,a
stl a,*ar2+% ; save data to rev_buf
; nop
; nop
mvmd ar2,#rev_ptr ; save rev ptr !
cmpm ar2,#0400h
bc con,ntc
nop ; set breakpoint here !
nop ; show wave in 0x200 and 0x400
con:
popm ar2
popm st1
popm st0
rete
.end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -