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

📄 sci.asm

📁 实现240XDSP中的PWM波,SCI,SPI,usb,DA等一系列的模块化源程序
💻 ASM
字号:
;===========================================================================
* File Name: SCI.asm
* Description: PROGRAM TO PERFORM A LOOPBACK IN THE SCI MODULE
* This program is capable of doing either an internal loopback or an external 
* loopback, depending on the value written in SCICCR. SCITXD-SCIRXD pins 
* should be connected together, if external loopback is desired. This is not
* required for an internal loopback. The SCI receives the bit-stream and stores
* the received data in memory (60h and above) for verification.
* An 8 bit value is transmitted through the SCITXD pin at a baud rate of
* 9600 bits/sec. A counter is used to determine how many times data is
* transmitted and received.
* This code is useful to determine the health of the SCI hardware quickly
* without the aid of any other equipment.
;===========================================================================
		.global     START 
		.global		PHANTOM
		
		.include f2407.h
		

KICK_DOG	.macro				;Watchdog reset macro
		LDP      #00E0h
		SPLK     #05555h, WDKEY
		SPLK     #0AAAAh, WDKEY
		LDP      #0h
		.endm
;===========================================================================
; M A I N   C O D E  - starts here
;===========================================================================
		.text
START:		
		LDP     #0
		SETC    INTM			; Disable interrupts
		LDP     #00E0h
		SPLK    #0040h,SCSR1		; Enable clock for SCI module
		SPLK    #006Fh,WDCR		; Disable WD
		KICK_DOG				
		SPLK    #0h,60h			; Set wait state generator for:
		OUT     60h,WSGR		; Program Space, 0-7 wait states		
                         
;===========================================================================
;SCI TRANSMISSION TEST - starts here
;===========================================================================
		
SCI:		LDP     #0E1h			
		SPLK    #0003h,MCRA
		LAR     AR0, #SCITXBUF		; Load AR0 with SCI_TX_BUF address
		LAR     AR1, #SCIRXBUF		; Load AR1 with SCI_RX_BUF address
		LAR     AR2, #1Fh		; AR2 is the counter
		LAR     AR3, #60h		; AR3 is the pointer
		
		LDP     #SCICCR>>7
		SPLK    #17h, SCICCR		; 17 for internal loopback
						; 07-External
						; 1 stop bit,odd parity,8 char bits,
						; async mode, idle-line protocol
		SPLK    #0003h, SCICTL1		; Enable TX, RX, internal SCICLK,
						; Disable RX ERR, SLEEP, TXWAKE
		SPLK    #0000h, SCICTL2		; Disable RX & TX INTs
		SPLK    #0002h, SCIHBAUD
		SPLK    #0008h, SCILBAUD	; Baud Rate=9600 b/s (40 MHz SYSCLK)
		SPLK    #0023h, SCICTL1		; Relinquish SCI from Reset.

XMIT_CHAR:	LACL    #055h			; Load ACC with xmit character
		MAR	*,AR0
		SACL    *,AR1			; Write xmit char to TX buffer

		
XMIT_RDY:	BIT     SCICTL2,BIT7		; Test TXRDY bit
		BCND    XMIT_RDY,NTC		; If TXRDY=0,then repeat loop

RCV_RDY:	BIT     SCIRXST,BIT6		; Test TXRDY bit
		BCND    RCV_RDY,NTC		; If RXRDY=0,then repeat loop

READ_CHR:	LACL    *,AR3			; The received (echoed) character is
						; stored in 60h
		SACL    *+,AR2			; This loop is executed 20h times
		BANZ    XMIT_CHAR		; Repeat the loop again
 
LOOP		B	LOOP			; Program idles here after executing
						; transmit loops
						
PHANTOM:
		KICK_DOG
		B	PHANTOM
						
		.end

⌨️ 快捷键说明

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