📄 t1.asm
字号:
.include "vector.asm"
.include "regs.asm"
.include "sin.inc"
.mmregs
.def main ;Must have
.data
;wd .word 40001H
stack_len .set 100
sysstack_len .set 100
;ioaddress .set 400000H
stack .usect "stack",stack_len
sysstack .usect "stack",sysstack_len
*********************************************************
.bss ws9,1
ws1 .usect "udata",1
wc1 .usect "udata",1
ws2 .usect "udata",1
wc2 .usect "udata",1
wss1 .usect "udata",1
wcc1 .usect "udata",1
wss2 .usect "udata",1
wcc2 .usect "udata",1
y1 .usect "udata",1
y2 .usect "udata",1
u .usect "udata",1
sin1 .usect "udata",1
sin2 .usect "udata",1
cos1 .usect "udata",1
cos2 .usect "udata",1
temp .usect "udata",1
;v_sign .usect "dat_var",1
;v_a .usect "dat_var",2
;v_b .usect "dat_var",2
;v_amp1 .usect "dat_var",1
.text
main:
****************************************************************
* *
* INITIALIZING *
* *
****************************************************************
bset intm ;forbid the Maskable Interrupts for initialize
;关闭所有可屏蔽中断
; bset c54cm ;54 compatible mode
; .c54cm_on
bclr FRCT
;bset FRCT
;bclr SMUL
;bset SATD
bset M40
;bset RDM
bset SXMD ;extent the sign
;bset XF
; bset m40
** INITIALIZE STACK POINTER SP AND SSP **
amov #(stack+stack_len),xsp ;data stack point
mov #(sysstack+sysstack_len),ssp ;pragram stack point
** CLOCK **
mov #2002h,port(#CLKMD) ;200MHz0510h
** EBSR REG **
mov #0200h,port(#EBSR) ;Full EMIF Mode
*****************************************************************
* INITIALIZE EMIF REGISTERS *
*****************************************************************
** EMI_RST REG **
mov #0000h,port(#EMI_RST) ;reset EMIF and wait for 100 cycle
rpt #99
nop
** EGCR REG **
mov #000fh,port(#EGCR) ;forbid synchronous clock
;no bus hold application
** CE0_1 REG **
mov #131dh,port(#CE0_1) ;16-bit asynchronous 131dh
;rsetup=3,rstrobe =7,rhold=1
** CE0_2 REG **
mov #0319h,port(#CE0_2) ;no ext hold 0319h
;wsetup=3,wstrobe=6,whold=1
** CE0_3 REG **
mov #000h,port(#CE0_3) ;timeout=31 001fh time-out=暂停
mov #0a5h,mmap(IVPH) ;This is the bits23-8 of Vector Address
mov #0a5h,mmap(IVPD) ;
mov #0h,mmap(IFR0)
mov #080h,mmap(IER0);mov #0C0h,mmap(IER0)
bclr intm
mov #0100h,port(#SYSR) ;分频
** GPIO **
mov #01h,port(#IODIR)
mov #00h,port(#IODATA)
bclr xf
nop
nop
nop
bset xf
mov #03H,*(#ws9)
mov #sindata,ar0
mov #0,T0
**INIT MCBSP TO TRANSMIT 32BIT MODEL read*
mov #0000H,PORT(#SPCR2_1)
mov #0000H,PORT(#SPCR1_1)
mov #0f03H,PORT(#PCR1)
mov #0123H,PORT(#SRGR1_1)
mov #3011H,PORT(#SRGR2_1)
mov #0040H,PORT(#XCR1_1)
mov #0000H,PORT(#XCR2_1)
mov #0040H,PORT(#RCR1_1)
mov #0002H,PORT(#RCR2_1)
mov #0000H,PORT(#MCR1_1)
mov #0000H,PORT(#MCR2_1)
mov #0040H,PORT(#SPCR2_1)
mov #00C1H,PORT(#SPCR2_1)
mov #0001H,PORT(#SPCR1_1)
**TRANSMIT 32BIT DATA INCLUDE: 8BIT INSTRUTION;16BIT ADDRESS;8BIT DATA**
; mov #0301H,PORT(#DXR2_1)
mov #0ff00H,PORT(#DXR1_1)
RPT #900
NOP
; mov #0000H,PORT(#SPCR2_1)
; mov #0000H,PORT(#SPCR1_1)
loop:
nop
b loop
mov #0000H,PORT(#SPCR2_1)
mov #0000H,PORT(#SPCR1_1)
mov #0080h,port(#SPCR1_1) ;串口控制寄存器,控制工作模式收发状态及其复位选择多通道缓冲模式
mov #0a00h,port(#PCR1) ;0a00H0F03H 发送和接收时钟以及帧同步由内部采样速率发生器驱动
mov #0123h,port(#SRGR1_1) ;CLKG由时钟源4分频,帧同步宽度为2个CLKG1103h
mov #2011H,port(#SRGR2_1) ;帧同步周期为18*CLKG3003h
mov #0040h,port(#XCR1_1) ;发送1个阶段,每个阶段1个字,字长16比特
mov #0000h,port(#XCR2_1) ;不压扩 延迟1比特
mov #0000h,port(#MCR1_1) ;只选择使能的接收通道
mov #0000h,port(#MCR2_1)
jj:
mov #0040h,port(#SPCR2_1) ;GRST=1,启动采样速率发生器
mov #00c1h,port(#SPCR2_1) ;FSRT=1,启动帧同步启动发送器
.def XINT1_SER
XINT1_SER:
NOP
ADD #1,T0
mov *ar0+,ac0
; sftl ac0,#-2
AND #1FFEh,AC0
mov #ac0,PORT(#DXR1_1)
mov T0,AC1
SUB #100,AC1
BCC AAA,AC1!=0
mov #sindata,ar0
mov #0,T0
AAA: NOP
RETI
.def RINT1_SER
RINT1_SER:
NOP
mov PORT(#DRR1_1),T1
NOP
RETI
**INIT MCBSP to transmit 8 bit **
mov #0000H,PORT(#SPCR2_0)
mov #0000H,PORT(#SPCR1_0)
mov #0A02H,PORT(#PCR0)
mov #0113H,PORT(#SRGR1_0)
mov #3009H,PORT(#SRGR2_0)
mov #0000H,PORT(#XCR1_0)
mov #0002H,PORT(#XCR2_0)
mov #0040H,PORT(#RCR1_0)
mov #0001H,PORT(#RCR2_0)
mov #0000H,PORT(#MCR1_0)
mov #0000H,PORT(#MCR2_0)
mov #0040H,PORT(#SPCR2_0)
mov #00C1H,PORT(#SPCR2_0)
mov #0001H,PORT(#SPCR1_0)
*transmit 8 bit write enable instruction *
mov #06H,PORT(#DXR1_0)
RPT #360
NOP
;aa1: nop
; mov PORT(#SPCR2_0),T0
; AND #0002H,T0
; BCC aa1,T0==#0
mov #0000H,PORT(#SPCR2_0)
mov #0000H,PORT(#SPCR1_0)
RPT #32360
NOP
RPT #32360
NOP
RPT #32360
NOP
RPT #32360
NOP
RPT #32360
NOP
RPT #32360
NOP
RPT #32360
NOP
nop
;loop1: nop
; b loop1
**INIT MCBSP TO TRANSMIT 32BIT MODEL write*
mov #0000H,PORT(#SPCR2_0)
mov #0000H,PORT(#SPCR1_0)
mov #0F03H,PORT(#PCR0)
mov #0113H,PORT(#SRGR1_0)
mov #3021H,PORT(#SRGR2_0)
mov #00A0H,PORT(#XCR1_0)
mov #0002H,PORT(#XCR2_0)
mov #0040H,PORT(#RCR1_0)
mov #0001H,PORT(#RCR2_0)
mov #0000H,PORT(#MCR1_0)
mov #0000H,PORT(#MCR2_0)
mov #0040H,PORT(#SPCR2_0)
mov #00C1H,PORT(#SPCR2_0)
mov #0001H,PORT(#SPCR1_0)
**TRANSMIT 32BIT DATA INCLUDE: 8BIT INSTRUTION;16BIT ADDRESS;8BIT DATA**
mov #0200H,PORT(#DXR2_0)
mov #5055H,PORT(#DXR1_0)
RPT #900
NOP
mov #0000H,PORT(#SPCR2_0)
mov #0000H,PORT(#SPCR1_0)
;loop2: nop
; b loop2
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
RPT #23600
NOP
; RPT #23600
NOP
; RPT #23600
NOP
nop
**
**
XRDY_TRANSMIT1:
mov PORT(#SPCR2_0),T0
AND #0002H,T0
BCC RRDY_RECEIVE1,T0==#0
; mov #0AAAAH,PORT(#DXR2_0)
mov #0AAAAH,PORT(#DXR1_0)
RRDY_RECEIVE1:
mov PORT(#SPCR1_0),T0
AND #0002H,T0
BCC XRDY_TRANSMIT1,T0==#0
mov PORT(#DRR1_0),T1
B XRDY_TRANSMIT1
mov #0000H,PORT(#SPCR2_1)
mov #0000H,PORT(#SPCR1_1)
mov #0A00H,PORT(#PCR1)
mov #0113H,PORT(#SRGR1_1)
mov #3021H,PORT(#SRGR2_1)
mov #00A0H,PORT(#XCR1_1) ;mov #0040H,PORT(#XCR1_1) x16bit
mov #0002H,PORT(#XCR2_1)
mov #0040H,PORT(#RCR1_1)
mov #0001H,PORT(#RCR2_1)
mov #0000H,PORT(#MCR1_1)
mov #0000H,PORT(#MCR2_1)
mov #0040H,PORT(#SPCR2_1)
mov #00C1H,PORT(#SPCR2_1)
; mov #0041H,PORT(#SPCR2_1)
mov #0001H,PORT(#SPCR1_1)
XRDY_TRANSMIT:
mov PORT(#SPCR2_1),T0
AND #0002H,T0
BCC RRDY_RECEIVE,T0==#0
mov #5555H,PORT(#DXR2_1)
mov #0AAAAH,PORT(#DXR1_1)
RRDY_RECEIVE:
mov PORT(#SPCR1_1),T0
AND #0002H,T0
BCC XRDY_TRANSMIT,T0==#0
mov PORT(#DRR2_1),T1
mov PORT(#DRR1_1),T2
B XRDY_TRANSMIT
** wait **
wait:
bset XF
nop
nop
nop
nop
nop
nop
nop
nop
bclr XF
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
b wait
*****************TRY**************************
mov #0000H,PORT(#SPCR2_0)
mov #0000H,PORT(#SPCR1_0)
mov #0A00H,PORT(#PCR0)
mov #0113H,PORT(#SRGR1_0)
mov #3021H,PORT(#SRGR2_0)
mov #00A0H,PORT(#XCR1_0) ;mov #0040H,PORT(#XCR1_1) x16bit
mov #0002H,PORT(#XCR2_0)
mov #0040H,PORT(#RCR1_0)
mov #0001H,PORT(#RCR2_0)
mov #0000H,PORT(#MCR1_0)
mov #0000H,PORT(#MCR2_0)
mov #0040H,PORT(#SPCR2_0)
mov #00C1H,PORT(#SPCR2_0)
; mov #0041H,PORT(#SPCR2_1)
mov #0001H,PORT(#SPCR1_0)
XRDY_TRANSMIT4:
mov PORT(#SPCR2_0),T0
AND #0002H,T0
BCC RRDY_RECEIVE4,T0==#0
mov #5555H,PORT(#DXR2_0)
mov #0AAAAH,PORT(#DXR1_0)
RRDY_RECEIVE4:
mov PORT(#SPCR1_0),T0
AND #0002H,T0
BCC XRDY_TRANSMIT4,T0==#0
mov PORT(#DRR2_0),T1
mov PORT(#DRR1_0),T2
B XRDY_TRANSMIT4
**********************************************
************************************************************
* interrupt service routine *
************************************************************
int1_isr:
;mov port(#ws9),ar0
; mov *ar0,T0
; mov T0,ar1
; readport t0
mov #01h,port(#IODIR)
mov #01h,port(#IODATA)
************************************************
reti
no_isr: b no_isr
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -