📄 sci.asm
字号:
.title "SCI"
.include LF2407.inc
.include CPU.inc
;*******************************************************
TxdPtr: .usect "data", 8
RxdPtr: .usect "data", 8
.data
counterValue .byte 1
;*******************************************************
.def _c_int0
.ref Pvect
;*******************************************************
; 主程序开始
.text
_c_int0:
call fSysInit
ldp #00E1h
splk #0h, MCRA
splk #0h, MCRB
splk #0101h, PADATDIR
; splk #0808h, PBDATDIR
call fSciInit
Main:
lacl #0cch
mar *, ar0
sacl *, ar1
XmitRdy:
bit SCICTL2, BIT7
bcnd XmitRdy, ntc
RcvRdy:
; bit SCIRXST, BIT6
; bcnd RcvRdy, ntc
ReadChr:
; lacl *, ar3
; sacl *+, ar2
b Main
LoopMain:
b LoopMain
;*******************************************************
fSendChar:
; 发送一个字符
ldp #DP_PF1
lacl #'b'
mar ar0
sacl *, ar1 ; 发送数据到SCITXBUF寄存器
LoopSendChar:
bit SCICTL2, BIT7
bcnd LoopSendChar, NTC
ret
;*******************************************************
; 系统初始化程序
fSysInit:
setc INTM ; 初始化期间禁止中断
clrc SXM ; 清符号扩展模式
clrc OVM ; 溢出模式复位
clrc CNF ; 配置B0块到数据存储区
ldp #00e0h ; 设置DP=E0H,则数据存储器地址为7000H~707FH
splk #0041h, SCSR1 ; CLKOUT=CLKIN*4
splk #006fh, WDCR ; 不使能WDT
ldp #0
splk #0h, 60h
out 60h, WSGR
splk #0000h, IMR ; 不使能中断
splk #0ffffh, IFR ; 清除全部中断标志
ret
;*******************************************************
; SCI接口初始化程序
fSciInit:
ldp #0e1h
lacl MCRB
or #018h
sacl MCRB ; 配置串行口引脚为特殊功能:TXD、RXD
ldp #DP_PF1
splk #003h, SCICTL1 ; 接收、发送、内部时钟使能,SLEEP=1
splk #007h, SCICCR ; 地址位唤醒模式,N,8,1
splk #000h, SCICTL2 ; 不使能中断
splk #(BRR & 0ffh), SCILBAUD ; 设置波特率寄存器
splk #023h, SCICTL1 ; 串口初始化完成
splk #(BRR/256), SCIHBAUD
lar ar0, #SCITXBUF ; 发送缓冲寄存器地址
lar ar1, #SCIRXBUF ; 接收缓冲寄存器地址
lar ar2, #1fh
lar ar3, #60h
; ldp #0
; splk #0001h, IMR ; 允许INT1中断
; splk #0ffffh, IFR ; 清所有中断标志
; clrc INTM ; 开总中断
ret
;*******************************************************
.end
;*******************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -