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

📄 sci.asm

📁 SCI通讯!!提供开发者串口开发的资料111111
💻 ASM
字号:
st0_temp	.usect		".b20",1			;
st1_temp	.usect		".b20",1			;
context	 	.usect		".b20",7			;62-68 
SCI_FLAG	.usect  	".data0",1		;SCI标志寄存器
TXD_PTR		.usect  	".data0",8		;发送的数据存放区
RXD_PTR		.usect	    ".data0",8		;接收到的数据存放区
			.include  	"F2407REGS.H" 	;引用头部文件
            .def      	_c_int0
;(1)建立中断向量表
			.sect	    ".vectors"		;定义主向量段
RSVECT	    B    _c_int0		;PM 0	复位向量			1
INT1	  	B    GISR1			;PM 2	中断优先级1		4
INT2	  	B    PHANTOM		;PM 4	中断优先级2		5
INT3	  	B    PHANTOM		;PM 6	中断优先级3		6
INT4	  	B    PHANTOM		;PM 8	中断优先级4		7
INT5	  	B    PHANTOM		;PM A	中断优先级5		8
INT6	  	B    PHANTOM		;PM C	中断优先级6		9
RESERVED    B    PHANTOM		;PM E	 (保留位)		10
SW_INT8     B    PHANTOM		;PM 10  	用户定义软件中断   	-
SW_INT9   	B    PHANTOM		;PM 12  	User S/W int	-
SW_INT10   	B    PHANTOM		;PM 14  	User S/W int	-
SW_INT11   	B    PHANTOM		;PM 16  	User S/W int    -
SW_INT12   	B    PHANTOM		;PM 18  	User S/W int	-
SW_INT13   	B    PHANTOM		;PM 1A  	User S/W int	-
SW_INT14   	B    PHANTOM		;PM 1C  	User S/W int	-
SW_INT15   	B    PHANTOM		;PM 1E  	User S/W int	-
SW_INT16   	B    PHANTOM		;PM 20  	User S/W int	-
TRAP    	B    PHANTOM		;PM 22  	Trap vector	    -
NMI      	B    PHANTOM		;PM 24  	Non maskable Int3
EMU_TRAP   	B    PHANTOM		;PM 26  	Emulator Trap2	-
SW_INT20   	B    PHANTOM		;PM 28  	User S/W int	-
SW_INT21   	B    PHANTOM		;PM 2A  	User S/W int	-
SW_INT22   	B    PHANTOM		;PM 2C  	User S/W int	-
SW_INT23   	B    PHANTOM		;PM 2E  	User S/W int	-
SW_INT24   	B    PHANTOM		;PM 30  	User S/W int	-
SW_INT25   	B    PHANTOM		;PM 32  	User S/W int	-
SW_INT26   	B    PHANTOM		;PM 34  	User S/W int	-
SW_INT27   	B    PHANTOM		;PM 36  	User S/W int	-
SW_INT28   	B    PHANTOM		;PM 38  	User S/W int	-
SW_INT29   	B    PHANTOM		;PM 3A  	User S/W int	-
SW_INT30   	B    PHANTOM		;PM 3C  	User S/W int	-
SW_INT31  	B    PHANTOM		;PM 3E  	User S/W int	-  					·
;中断子向量入口定义pvecs
			.sect	".pvecs"	;定义子向量段
PVECTORS	B	PHANTOM		;保留向量地址偏移量-00H 
			B	PHANTOM		;保留向量地址偏移量-01H
  			B	PHANTOM		;保留向量地址偏移量-02H
  			B	PHANTOM		;保留向量地址偏移量-03H
  			B	PHANTOM		;保留向量地址偏移量-04H
  			B	PHANTOM		;保留向量地址偏移量-05H
			B	SCI_RX_ISR	;保留向量地址偏移量-06H  SCI接收中断
		    B	PHANTOM		;保留向量地址偏移量-07H
  			B	PHANTOM		;Reserved pvector addr offset-08H
  			B	PHANTOM		;Reserved pvector addr offset-09H
  			B	PHANTOM		;Reserved pvector addr offset-0AH
  			B	PHANTOM		;Reserved pvector addr offset-0BH
  			B	PHANTOM		;Reserved pvector addr offset-0CH
  			B	PHANTOM		;Reserved pvector addr offset-0DH
  			B	PHANTOM		;Reserved pvector addr offset-0EH
  			B	PHANTOM		;Reserved pvector addr offset-0FH
  			B	PHANTOM		;Reserved pvector addr offset-10H
  			B	PHANTOM		;Reserved pvector addr offset-11H
  			B	PHANTOM		;Reserved pvector addr offset-12H
  			B	PHANTOM		;Reserved pvector addr offset-13H
  			B	PHANTOM		;Reserved pvector addr offset-14H
  			B	PHANTOM		;Reserved pvector addr offset-15H
  			B	PHANTOM		;Reserved pvector addr offset-16H		
			B	PHANTOM		;Reserved pvector addr offset-17H
			B	PHANTOM		;Reserved pvector addr offset-18H
  			B	PHANTOM		;Reserved pvector addr offset-19H
  			B	PHANTOM		;Reserved pvector addr offset-1AH
  			B	PHANTOM		;Reserved pvector addr offset-1BH
  			B	PHANTOM		;Reserved pvector addr offset-1CH
  			B	PHANTOM		;Reserved pvector addr offset-1DH
  			B	PHANTOM		;Reserved pvector addr offset-1EH
  			B	PHANTOM		;Reserved pvector addr offset-1FH
  			B	PHANTOM		;Reserved pvector addr offset-20H
  			B	PHANTOM		;Reserved pvector addr offset-21H
  			B	PHANTOM		;Reserved pvector addr offset-22H
  			B	PHANTOM		;Reserved pvector addr offset-23H
  			B	PHANTOM		;Reserved pvector addr offset-24H
  			B	PHANTOM		;Reserved pvector addr offset-25H
  			B	PHANTOM		;Reserved pvector addr offset-26H
  			B	PHANTOM 	;Reserved pvector addr offset-27H 
			B	PHANTOM		;Reserved pvector addr offset-28H
  			B	PHANTOM		;Reserved pvector addr offset-29H
  			B	PHANTOM		;Reserved pvector addr offset-2AH
  			B	PHANTOM		;Reserved pvector addr offset-2BH
  			B	PHANTOM		;Reserved pvector addr offset-2CH
  			B	PHANTOM		;Reserved pvector addr offset-2DH
  			B	PHANTOM		;Reserved pvector addr offset-2EH
  			B	PHANTOM		;Reserved pvector addr offset-2FH
  			B	PHANTOM		;Reserved pvector addr offset-30H
  			B	PHANTOM		;Reserved pvector addr offset-31H
  			B	PHANTOM		;Reserved pvector addr offset-32H
  			B	PHANTOM		;Reserved pvector addr offset-33H
  			B	PHANTOM		;Reserved pvector addr offset-34H
  			B	PHANTOM		;Reserved pvector addr offset-35H
  			B	PHANTOM		;Reserved pvector addr offset-36H
  			B	PHANTOM		;Reserved pvector addr offset-37H
  			B	PHANTOM		;Reserved pvector addr offset-38H
  			B	PHANTOM		;Reserved pvector addr offset-39H
  			B	PHANTOM		;Reserved pvector addr offset-3AH
  			B	PHANTOM		;Reserved pvector addr offset-3BH
  			B	PHANTOM		;Reserved pvector addr offset-3CH
  			B	PHANTOM		;Reserved pvector addr offset-3DH
  			B	PHANTOM		;Reserved pvector addr offset-3EH
  			B	PHANTOM		;Reserved pvector addr offset-3FH
  			B	PHANTOM		;Reserved pvector addr offset-40H		
		    B	PHANTOM		;保留向量地址偏移量-41H	
;(2)主程序:
        .text
_c_int0    
        SETC 	INTM
    	CLRC 	SXM
    	CLRC 	OVM
        CLRC 	CNF	
        LDP 	#0E0H
        SPLK	#81FEH,SCSR1	;CLKIN=6M,CLKOUT=24M 
        SPLK	#0E8h,WDCR		;关看门狗
		CALL	SCI_INIT		;调串口初始化程序
		LDP		#5H
		SPLK	#00H,SCI_FLAG	;清发送软件标志位
TXD_LOOP:	
		LDP		#5H
		BIT		SCI_FLAG,BIT0
		BCND  	TXD_DATA,TC	;SCI_FLAG.0=1则发送数据
		B		WAIT
TXD_DATA:						;发送N个数据程序
		MAR		*,AR0
		LAR		AR0,#TXD_PTR
		ADRK	#6+1				;发送N个数据
		MAR		*,AR4
		LACC	*+				;读数据
		CMPR	00
		BCND	TXD_DATA_END,TC;判数据发送完?
		MAR		*,AR2
		SACL	*,AR4			;数据送SCITXBUF寄存器
XMIT_RDY:	
		LDP		#DP_PF1
		BIT		SCICTL2,BIT7
		BCND	XMIT_RDY,NTC	;判发送器是否空?
		B		TXD_DATA
TXD_DATA_END:
		MAR		*, AR4
		LAR		AR4,#TXD_PTR	;恢复发送的数据指针
		LDP	  	#5H
		SPLK	#00H,SCI_FLAG	;清发送软件标志位
WAIT:	NOP
		B		TXD_LOOP
;(3)串行通信初始化程序:
SCI_INIT:
		LDP 		#0E1H
		LACL	MCRA
		OR		#03H
		SACL	MCRA			;配置串行口引脚为特殊功能:TXD、RXD
		LDP 		#DP_PF1	
		SPLK 	#000FH,SCICCR   ;地址位唤醒模式,8位数据,1位停止位,无奇偶校验
        SPLK 	#0007H,SCICTL1 	;接收、发送、内部时钟使能 ,SLEEP=1
    	SPLK 	#0002H,SCICTL2 	;接收中断使能
    	SPLK 	#0001H,SCIHBAUD
    	SPLK 	#0038H,SCILBAUD ;波特率为9600
    	SPLK 	#0027H,SCICTL1 	;串口初始化完成
    	LAR		AR1,#SCIRXBUF	;接收缓冲寄存器地址
    	LAR		AR2,#SCITXBUF	;发送缓冲寄存器地址
    	LAR		AR3,#RXD_PTR	;接收的数据指针
        LAR		AR4,#TXD_PTR	;发送的数据指针
        LDP		#0
		SPLK	#0001h,IMR		;允许INT1中断
		SPLK	#0FFFFh,IFR		;清所有中断标志
		CLRC	INTM			;开总中断
		RET
;(4)中断程序
GISR1:							;优先级INT1中断人口
		;保护现场
		LDP     #0              ;保存机器上下文
		SST		#0,st0_temp	    ;使用自动寻址,DP-0 
		SST		#1,st1_temp	    ;保存状态寄存器到B2 DARAM.
		LDP		#0			  
        SACL	context			;保存ACC的低16位
		SACH	context+1		;保存ACC的高16位
		SAR		AR1,context+2
		SAR		AR2,context+3
		SAR		AR3,context+4
		SAR		AR4,context+5		
		SAR		AR5,context+6
		LDP		#0E0H
		LACC	PIVR,1			;读取外设中断向量寄存器(PIVR),并左移一位
		ADD		#PVECTORS		;加上外设中断人口地址
		BACC					;跳到相应的中断服务子程序
SCI_RX_ISR:						;接收中断服务程序
		LDP		#DP_PF1
		MAR		*,AR1	
		BIT		SCICTL1,BIT2	
		BCND	RXD_DATA,NTC	;SLEEP=0,接收数据
		LACC	*				;读入地址
		SUB		#0AAH
		BCND	TXD_FLAG,EQ	;接收到的地址为AAH,则发送数据
		SUB		#0001H
		BCND	SCI_RX_END,NEQ	;地址错误,退出中断
		SPLK		#0033H,SCICTL1	;地址为ABH,则清SLEEP=0表示准备接收数据
		B		SCI_RX_END
TXD_FLAG:						;置发送标志
		LDP		#5H
        SPLK	#01H,SCI_FLAG
		B		SCI_RX_END
RXD_DATA:						;接收N个数据
		LACC	*,AR3			;读入数据
		SACL	*+,AR0			;保存数据
		LAR		AR0,#RXD_PTR
		ADRK	#6
		MAR		*,AR3
		CMPR	00
		BCND	SCI_RX_END,NTC	;判是否接收完
		LAR		AR3,#RXD_PTR		;恢复接收的数据指针
		SPLK	#0037H,SCICTL1	;置SLEEP=1表示准备接收地址
SCI_RX_END:						;中断返回
		;恢复现场 
		LDP		#DP_EVA
		SPLK	#0FFFFH,EVAIFRA
		LDP		#0
		LAR		AR5,context+6	
		LAR		AR4,context+5	
		LAR		AR3,context+4		
		LAR		AR2,context+3		
		LAR		AR1,context+2
		LACC	context+1,16
		ADDS	context
		LST		#1, st1_temp
		LST		#0, st0_temp		
        CLRC	INTM			;开总中断,因为一进中断就自动关闭总中断
		RET
;(5)假中断程序
PHANTOM 	
        KICK_DOG				;复位看门狗
		RET
		END

⌨️ 快捷键说明

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