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

📄 sci.asm

📁 DSP的汇编程序
💻 ASM
字号:
            .include    "F2407REGS.H"       ;引用头部文件
            .def        _c_int0
            
            .data
            
SCI_FLAG:   .word 		1         			;SCI标志寄存器
;TXD_PTR:    .word 		'1','2','3','4'
;			.word		'5','6','7','8'		;发送的数据存放区

TXD_PTR:    .word 		55h,55h,55h,55h
			.word		55h,55h,55h,55h		;发送的数据存放区
			
RXD_PTR     .word      	0,0,0,0,0,0,0,0		;接收到的数据存放区

            .sect       ".vectors"          ;定义主向量段

RSVECT      B    _c_int0            ;PM 0   Reset Vector        1
INT1        B    GISR1              ;PM 2   Int level 1         4
INT2        B    PHANTOM            ;PM 4   Int level 2         5
INT3        B    PHANTOM            ;PM 6   Int level 3         6
INT4        B    PHANTOM            ;PM 8   Int level 4         7
INT5        B    PHANTOM            ;PM A   中断优先级 5        8
INT6        B    PHANTOM            ;PM C   Int level 6         9
RESERVED    B    PHANTOM            ;PM E   (Analysis Int)      10
SW_INT8     B    PHANTOM            ;PM 10  User S/W int        -
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 Int    3
EMU_TRAP    B    PHANTOM            ;PM 26  Emulator Trap       2
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        -

        .sect       ".pvecs"        ;定义子向量段
PVECTORS
        B    PHANTOM            ;Reserved pvector addr offset-0000h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0005h
        B    SCI_RX_ISR         ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-000ah
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0010h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0015h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-001Ah
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0020h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0025h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0027h  T1PINT中断
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-002Ah
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;pvector addr offset 0x02f - T3PINT
        B    PHANTOM            ;Reserved pvector addr offset-0030h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-0035h
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-003Ah
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset
        B    PHANTOM            ;Reserved pvector addr offset-003Fh
        B    PHANTOM            ;保留向量地址偏移量0040h  CAN接收中断
        B    PHANTOM            ;Reserved pvector addr offset-0041h

        .text  
        
N		.set 	1				;每次发送的数据个数(可根据缓冲大小设置)    
        
_c_int0
        SETC    INTM
        CLRC    SXM
        CLRC    OVM
        CLRC    CNF
        LDP     #0E0H
        SPLK    #81FEH, SCSR1           ;CLKIN=10 M, CLKOUT=40 M
        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                  ;将当前辅助寄存器设置为AR0
        LAR     AR0, #TXD_PTR           ;AR0 = TXD_PTR(发送数据缓冲起始地址)
        ADRK    #N+1                    ;发送N个数据
        MAR     *, AR4                  ;AR4开始等于TXD_PTR
        LACC    *+                      ;读数据: ACC=*(AR4),AR4++
        CMPR    00                      ;当前辅助寄存器AR4=AR0
        BCND    TXD_DATA_END, TC        ;判数据发送完
        MAR     *, AR2
        SACL    *, AR4                  ;数据送SCITXBUF寄存器
        								;将ACC中数据写到当前辅助寄存器所指的存储单元
        								;并将当前辅助寄存器设置为AR4
        								;注:AR2固定为 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
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY

        B       TXD_LOOP

SCI_INIT: 
        LDP     #DP_PF2
        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    #0003H, SCIHBAUD
        SPLK    #000dH, 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

GISR1:                                  ;优先级INT1中断人口
                                        ;保护现场
        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     #031H
        BCND    TXD_FLAG, EQ            ;接收到的地址为'1', 则发送数据
        SUB     #0001H
        BCND    SCI_RX_END, NEQ         ;地址错误, 退出中断
        SPLK    #032H, SCICTL1          ;地址为'2', 则清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    #N
        MAR     *, AR3
        CMPR    00
        BCND    SCI_RX_END, NTC         ;判是否接收完
        LAR     AR3, #RXD_PTR           ;恢复接收的数据指针
        SPLK    #0037H, SCICTL1         ;置SLEEP=1表示准备接收地址
SCI_RX_END:                             ;中断返回
                                        ;恢复现场
        CLRC    INTM                    ;开总中断, 因为一进中断就
                                        ;自动关闭总中断
        RET
        
DELAY:	MAR 	*,   AR4
		LAR		AR4, #0FFFFH
		LAR		AR0, #00H
DELAY1: SBRK	#1 
		RPT		#0FFH
		NOP        
		RPT		#0FFH
		NOP        
		RPT		#0FFH
		NOP        
		CMPR	00
		BCND	DELAY1, NTC          

PHANTOM
        ;KICK_DOG                        ;复位看门狗
        RET          
        
        END

⌨️ 快捷键说明

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