📄 dr0.asm
字号:
;*****************************************************************************
; Function: Seria0_DR0.asm
; Version : 1.00
; Description: Seria0_DR0
;
; Copyright Texas instruments Inc, 2000
;*****************************************************************************
.mmregs
.data
SPORT .word 808040h ;Serial-port 0 global control
SPRESET .word 00c2H ;Serial-port 0 global control 复位控制字
;FSXOUT = 1 configures the FSX pin as an output.
;HS = 0, the handshake mode is disabled.
;XCLK SRCE = 1, the internal transmit clock is used.
;RCLK SRCE = 1, the internal receive clock is used.
;XVAREN,RVAREN 忽略,Reset Value=00
;XFSM,RFSM 忽略,Reset Value=00
;CLKXP = 0, CLKX is active high.
;CLKRP = 0, CLKR is active (high).
;DXP = 0, DX is active (high).
;DRP = 0, DR is active (high).
;FSXP = 0, FSX is active (high).
;FSRP = 0, FSR is active (high).
;XLEN 忽略,Reset Value=00
;RLEN 忽略,Reset Value=00
;XTINT = 0, the transmit timer interrupt is disabled.
;XINT = 0, the transmit interrupt is disabled.
;RTINT = 0, the receive timer interrupt is disabled.
;RINT = 0, the receive interrupt is disabled.
;XRESET = 0, the transmit side of the serial port is reset.
;RRESET = 0, the receive side of the serial port is reset.
SXCTRL0 .word 0222H
;CLKX FUNC = 0, CLKX is configured as a general-purpose
;CLKX I/O = 1, CLKX is configured as a general-purpose output
;CLKX DATOUT=0 Data output on CLKX when configured as general-purpose output.
;DXFUNC = 0, DX is configured as a general-purpose digital I/O port.
;DX I/O = 1, DX is configured as a general-purpose output pin.
;DX DATOUT=0,Data output on DX when configured as general-purpose output.
;FSX FUNC = 0, FSX is configured as a general-purpose digital
;FSX I/O = 1, FSX is configured as a general-purpose output
;FSX DATOUT=0 Data output on FSX when configured as general-purpose output.
SXCTRL1 .word 0666H
;CLKX DATOUT=1 DX DATOUT=1 FSX DATOUT=1
SRCTRL0 .word 0222H
;CLKR FUNC = 0, CLKR is configured as a general-purpose
;CLKR I/O = 1, CLKR is configured as a general-purpose output
;CLKR DATOUT=0 Data output on CLKR when configured as general-purpose
;DR FUNC = 0, DR is configured as a general-purpose digital
;DR I/O = 1, DR is configured as a general-purpose output pin
;DR DATOUT=0 Data output on DR when configured as general-purpose output.
;FSR FUNC = 0, FSR is configured as a general-purpose digital
;FSR I/O = 0, FSR is configured as a general-purpose input
;FSR DATOUT=0 Data output on FSR when configured as general-purpose output.
SRCTRL1 .word 0666H
;CLKR DATOUT=1 DR DATOUT=1 FSR DATOUT=1
STCTRL .word 0000H
;XGO=0 has no effect on the transmit timer.
;XHLD = 0, the counter is disabled and held in its current state.
;XC/P Transmit clock/pulse mode control忽略,Reset Value=0
;RGO RHLD RC/P 同上
STimerCounter .word 0000H
STPERIOD .word 0000H
;*****************************************************************************
.def _DR0
.text
_DR0:
;PUSH FP ;保护旧FP
;LDI SP,FP ;设置新FP
;ADDI 2,SP ;分配局部帧
PUSH ST ;保护ST
PUSH R0 ;保护R0的低32位
PUSHF R0 ;保护R0的高32位
PUSH R1 ;保护R1的低32位
PUSHF R1 ;保护R1的高32位
PUSH R2 ;保护R2的低32位
PUSHF R2 ;保护R2的高32位
PUSH R3 ;保护R3的低32位
PUSHF R3 ;保护R3的高32位
PUSH R6 ;保护R6的低32位
PUSHF R6 ;保护R6的高32位
PUSH AR0 ;
PUSH AR1 ;
PUSH AR2 ;
PUSH AR3 ;
PUSH AR4 ;
;以上为保护寄存器
;********************************************************
LDI @SPORT,AR1
LDI @SPRESET,R0
STI R0,*AR1 ; Serial-port 0 global control 复位控制字
;LDI @SXCTRL0,R0 ;
;STI R0,*+AR1(2) ; CLKX DATOUT=0 DX DATOUT=0 FSX DATOUT=0
;LDI @SXCTRL1,R0 ;
;STI R0,*+AR1(2) ; CLKX DATOUT=1 DX DATOUT=1 FSX DATOUT=1
;START:
LDI @SRCTRL0,R0 ;
STI R0,*+AR1(3) ; CLKR DATOUT=0 DR DATOUT=0 FSR DATOUT=0
LDI @SRCTRL1,R0 ;
STI R0,*+AR1(3) ; CLKR DATOUT=1 DR DATOUT=1 FSR DATOUT=1
NOP
NOP
NOP
LDI @SRCTRL0,R0 ;
STI R0,*+AR1(3)
; BR START
;********************************************************
;结束,恢复堆栈
POP AR4 ;
POP AR3 ;
POP AR2 ;
POP AR1 ;
POP AR0 ;
POPF R6 ;
POP R6 ;
POPF R3 ;
POP R3 ;
POPF R2 ;
POP R2 ;
POPF R1 ;
POP R1 ;
POPF R0 ;
POP R0 ;
POP ST ;
;SUBI 2,SP ;
;POP FP ;
RETI ;函数返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -