?? h08sci.asm
字號:
*------------------------------------------------------*
*文件描述:本文件包含了串行通信子程序,分別為: *
*(1)SCISend1:串行發送A中的1個字節 *
*(2)SCISendN:串行發送N個字節 *
*(3)SCIRe1:串行接收一個字節->A *
*(4)SCIReN:串行接收N個字節 *
*------------------------------------------------------*
*[寄存器及相關位定義]
ReSendStatusR EQU SCS1 ;SCI狀態寄存器1
ReTestBit EQU 5 ;接收緩沖區滿標志位
SendTestBit EQU 7 ;發送緩沖區空標志位
ReSendDataR EQU SCDR ;SCI數據寄存器
*SCISend1:串行發送A中的1個字節-------------------------*
*功能描述:串行口發送A中的1個字節數據 *
*入 口:A=待發送的數據 *
*出 口:無 *
*堆棧深度:2 *
*------------------------------------------------------*
SCISend1:
BRCLR SendTestBit,ReSendStatusR,SCISend1
STA ReSendDataR
RTS
*SCISendN:串行發送N個字節------------------------------*
*功能描述:串行發送以HX為首地址的N個字節數據 *
*入 口:A=字節個數 HX=首地址 *
*出 口:無 *
*堆棧深度:2+2+1=5 *
*------------------------------------------------------*
SCISendN:
;在堆棧區開辟1個字節作臨時變量N
AIS #-!1
;若發送字節數為0,退出
STA !1,SP
CMP #!0
BEQ SCISendN_EXIT
SCISendN_1:
LDA ,X ;從存儲器中取出待發送的數據
JSR SCISend1
AIX #!1
DBNZ !1,SP,SCISendN_1 ;(N-1)不等于0轉
SCISendN_EXIT:
;釋放1個字節臨時變量
AIS #!1
RTS
*SCIRe1:串行接收一個字節->A----------------------------*
*功能描述:(1) 串行接收1個字節的數據放在A中 *
* (2) 約655350時鐘周期內收不到數返回 *
* 若時鐘周期=0.4us 大約等待2.6S *
*入 口:無 *
*出 口:A=接收的數據 C=是否收到數據標志 0收到 1未收到*
*堆棧深度:2+2=4 *
*------------------------------------------------------*
SCIRe1:
PSHH
PSHX
;等待接收一個字節數據
LDHX #$FFFF ;循環次數
SCIRe1_1:
BRCLR ReTestBit,ReSendStatusR,SCIRe1_2 ;無數據,轉
LDA ReSendDataR ;收到的數據放入A中
CLC ;C=0
BRA SCIRe1_3 ;收到數據,退出
SCIRe1_2:
NOP
AIX #-$1
CPHX #$0000
BNE SCIRe1_1
;等待時間到,未收到數據,令c=1,A=FF,返回
LDA #$FF
SEC ;C=1
SCIRe1_3:
PULX
PULH
RTS
*SCIReN:串行接收N個字節--------------------------------*
*功能描述:串行接收N個字節放在以HX為首地址的內存中 *
*入 口:A=待接收數據的字節數N,HX=接收數據存放的首地址*
*出 口:C=是否收到數據標志 0收到 1未收到 *
*堆棧深度:2+4+1=7 *
*內部調用:SCIRe1 *
*------------------------------------------------------*
SCIReN:
;在堆棧區開辟1個字節作臨時變量
AIS #-!1
;若接受字節數為0,退出
STA !1,SP
CMP #!0
BEQ SCIReN_EXIT
SCIReN_1:
JSR SCIRe1 ;調用接收1個字節的子程序
BCS SCIReN_EXIT ;C=1未收到數據,退出
STA ,X ;收到數據,放入內存
AIX #!1 ;HX+1->HX
DBNZ !1,SP,SCIReN_1
SCIReN_EXIT:
;釋放1個字節臨時變量
AIS #!1
RTS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -