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

📄 t1.asm

📁 多通道缓冲串口
💻 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 + -