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

📄 com.src

📁 050117 CD 修正分 iTRON hosroot
💻 SRC
字号:
;H8/Tiny(3664)梡捠怣儌僕儏乕儖
	.CPU 300HN		;Tiny H8偼僲乕儅儖儌乕僪偺傒摦嶌偡傞
	
;-----僔儞儃儖偺愝掕-----
RDR		.EQU	H'FFAD		;儗僔乕僽僨乕僞儗僕僗僞
TDR		.EQU	H'FFAB		;僩儔儞僗儈僢僩僨乕僞儗僕僗僞
SMR		.EQU	H'FFA8		;僔儕傾儖儌乕僪儗僕僗僞
SCR3	.EQU	H'FFAA		;僔儕傾儖僐儞僩儘乕儖儗僕僗僞
RIE		.BEQU	6,SCR3
TIE		.BEQU	7,SCR3
PMR1	.EQU	H'FFE0		;億乕僩儌乕僪儗僕僗僞侾
TXD		.BEQU	1,PMR1
SSR		.EQU	H'FFAC		;僔儕傾儖僗僥乕僞僗儗僕僗僞
TDRE	.BEQU	7,SSR
RDRF	.BEQU	6,SSR
TEND	.BEQU	2,SSR
OER		.BEQU	5,SSR
FER		.BEQU	4,SSR
PER		.BEQU	3,SSR
BRR		.EQU	H'FFA9		;價僢僩儗乕僩儗僕僗僞

		.SECTION  BASM,CODE,ALIGN=2
RBUF_SZ	.EQU	32			;庴怣儕儞僌僶僢僼傽僒僀僘
SBUF_SZ	.EQU	64			;憲怣儕儞僌僶僢僼傽僒僀僘
RBUF:	.RES.B	RBUF_SZ		;庴怣儕儞僌僶僢僼傽
SBUF:	.RES.B	SBUF_SZ		;憲怣儕儞僌僶僢僼傽
SWptr:	.RES.W	1			;憲怣彂崬傒億僀儞僞
SRptr:	.RES.W	1			;憲怣撉崬傒億僀儞僞
RWptr:	.RES.W	1			;庴怣彂崬傒億僀儞僞
RRptr:	.RES.W	1			;庴怣撉崬傒億僀儞僞

		.SECTION  PASM,CODE,ALIGN=2

;-----SCI弶婜壔張棟-----
;CALL宍幃: void SCI_Init( unsigned char BRRValue );
;堷悢偼BRR儗僕僗僞偵戙擖偡傞抣
	.EXPORT	_SCI_Init
_SCI_Init:
	MOV.B	R0L,@BRR		;BRR偺愝掕
;億僀儞僞偺弶婜壔
	MOV.L	#SBUF,ER0
	MOV.W	R0,@SWptr
	MOV.W	R0,@SRptr
	MOV.L	#RBUF,ER0
	MOV.W	R0,@RWptr
	MOV.W	R0,@RRptr
;
	XOR.B	R0L,R0L
	MOV.B	R0L,@SCR3		;TE=0, RE=0, CKE1=0, CKE0=0
	MOV.B	R0L,@SMR		;SMR= 0000 0000 (n=0)

;	MOV.B	#25,R0L			;BRR偺愝掕
;	MOV.B	R0L,@BRR		;BRR偺愝掕

;
	MOV.W	#280,R0			;僟儈乕偺儖乕僾
SCI_INIT_WAIT:
	DEC.W	#1,R0
	BNE	SCI_INIT_WAIT
	MOV.B	#H'30,R0L
	MOV.B	R0L,@SCR3		;SCR3=0011 0000 (RIE=1,TE=1,RE=1)
	BSET	TXD
	MOV.B	@SSR,R0L		;Dummy Read
	MOV.B	#H'80,R0L
	MOV.B	R0L,@SSR		;Clear Error Flag (TDRE=1)
	BSET	RIE				;庴怣妱崬傒偺嫋壜
	RTS

;-----妱傝崬傒張棟-----
	.EXPORT	_SCI_Int
_SCI_Int:
	BTST.B	RDRF			;庴怣妱崬傒偺妋擣
	BEQ		SCI_Int_1
	BSR		RX_Int
SCI_Int_1:
	BTST.B	TDRE			;憲怣妱崬傒偺妋擣
	BEQ		SCI_Int_2
	BSR		TX_Int
SCI_Int_2:
	BTST.B	OER				;僄儔乕偺応崌偺張棟
	BEQ		SCI_Int_END
	MOV.B	@RDR,R0H		;暥帤偺庢崬傒
	MOV.B	@SSR,R0L
	AND.B	#H'CF,R0L
	MOV.B	R0L,@SSR		;Clear Error Flag (TDRE=1)
SCI_Int_END:
	RTS						;妱傝崬傒偐傜偺暅婣

;-----庴怣妱崬傒張棟-----
RX_Int:
	BCLR	RIE				;妱傝崬傒掆巭
	BCLR	RDRF			;RDRFbit偺僋儕傾
	MOV.B	@RDR,R0H		;暥帤偺庢崬傒
;庴怣僶僢僼傽偵嬻偒偑桳傞帠傪妋擣偟傕偟嬻偒偑柍偗傟偽廔椆偡傞丅
	MOV.W	@RWptr,R1		;彂崬傒億僀儞僞偲
	MOV.W	R1,E0			;尰嵼偺彂崬傒億僀儞僞傪曐懚
	MOV.W	@RRptr,E1		;撉崬傒億僀儞僞傪庢摼偟
	INC.W	#1,R1			;彂崬傒億僀儞僞傪僀儞僋儕儊儞僩偟偰
	CMP.W	#(RBUF + RBUF_SZ),R1	;儕儞僌僶僢僼傽偺嵟屻偵払偟偰偄傞偐傪敾抐
	BNE		RX_Int_1		;払偟偰偄側偄帪偼RX_1偵僕儍儞僾
	MOV.W	#RBUF,R1		;払偟偰偄偨帪偼僶僢僼傽偺愭摢傾僪儗僗偵愝掕
RX_Int_1:
	CMP.W	R1,E1			;偙偺擇偮傪斾妑
	BEQ		RX_Int_END		;撉崬傒億僀儞僞偵捛偄偮偄偨帪偼壗傕偣偢偵廔椆
	MOV.W	R1,@RWptr		;彂崬傒億僀儞僞傪曐懚
	MOV.W	E0,R1			;曐懚偟偰偍偄偨彂崬傒億僀儞僞偵僨乕僞傪曐懚
	MOV.B	R0H,@ER1		;彂崬傒億僀儞僞偺帵偡傾僪儗僗偵庴怣僨乕僞傪奿擺
RX_Int_END:
	BSET	RIE				;妱傝崬傒嵞奐
	RTS						;廔椆

;-----憲怣妱崬傒張棟-----
TX_Int:
	BCLR	TIE				;妱傝崬傒掆巭
	MOV.W	@SWptr,E1		;彂崬傒億僀儞僞偲
	MOV.W	@SRptr,R1		;撉崬傒億僀儞僞傪庢摼偟
	CMP.W	E1,R1			;僨乕僞偑懚嵼偟偰偄傞偐傪妋擣偡傞
	BEQ		TX_Int_END		;摨偠傾僪儗僗摨巑偺帪偼懚嵼偟偰偄側偄
	MOV.B	@ER1,R0L		;憲怣僶僢僼傽偐傜1byte庢摼
	INC.W	#1,R1			;撉崬傒億僀儞僞傪僀儞僋儕儊儞僩偡傞
	CMP.W	#(SBUF + SBUF_SZ),R1	;儕儞僌僶僢僼傽偺嵟屻傪妋擣
	BNE		TX_Int_2		;嵟屻偵払偟偰偄側偗傟偽TX_Int_2偵僕儍儞僾
	MOV.W	#SBUF,R1		;儕儞僌僶僢僼傽偺嵟弶偵栠偡
TX_Int_2:
	MOV.W	R1,@SRptr		;撉崬傒億僀儞僞偺峏怴
	MOV.B	R0L,@TDR		;憲怣
TX_Int_3:
	BTST.B	TEND			;憲怣姰椆傑偱懸偮
	BEQ		TX_Int_3
	BCLR	TEND			;TENDbit偺僋儕傾
	BSET	TIE				;憲怣妱崬傒傪嫋壜
TX_Int_END:
	RTS

;-----堦暥帤憲怣張棟-----
;CALL宍幃: int SCI_Putc( char c );
;堷悢偼憲怣暥帤
;傕偟憲怣僶僢僼傽偵嬻偒偑桳傟偽憲怣僶僢僼傽偵曐懚偟丄憲怣妱崬傒傪嫋壜偡傞
;扐偟僶僢僼傽僼儖偺帪偼栠傝抣偵-1傪曉偟丄惓忢偵彂偒崬傔偨傜0傪曉偡丅
	.EXPORT	_SCI_Putc
_SCI_Putc:
	PUSH.L	ER1
	BCLR	TIE				;憲怣妱崬傒傪嬛巭
	MOV.W	@SWptr,R1		;彂崬傒億僀儞僞偲
	MOV.W	R1,E0			;尰嵼偺彂崬傒億僀儞僞傪曐懚
	MOV.W	@SRptr,E1		;撉崬傒億僀儞僞傪庢摼偟
	INC.W	#1,R1			;彂崬傒億僀儞僞傪僀儞僋儕儊儞僩偟偰
	CMP.W	#(SBUF + SBUF_SZ),R1	;儕儞僌僶僢僼傽偺嵟屻偵払偟偰偄傞偐傪敾抐
	BNE		SCI_Putc_1		;払偟偰偄側偄帪偼SCI_Putc_1偵僕儍儞僾
	MOV.W	#SBUF,R1		;払偟偰偄偨帪偼僶僢僼傽偺愭摢傾僪儗僗偵愝掕
SCI_Putc_1:
	CMP.W	R1,E1			;偙偺擇偮傪斾妑
	BEQ		SCI_Putc_2		;撉崬傒億僀儞僞偵捛偄偮偄偨帪偼僶僢僼傽僼儖
	MOV.W	R1,@SWptr		;彂崬傒億僀儞僞傪曐懚
	MOV.W	E0,R1			;曐懚偟偰偍偄偨彂崬傒億僀儞僞偵僨乕僞傪曐懚
	MOV.B	R0L,@ER1		;彂崬傒億僀儞僞偺帵偡傾僪儗僗偵庴怣僨乕僞傪奿擺
	XOR.W	R0,R0			;惓忢廔椆
SCI_Putc_END:
	BSET	TIE				;憲怣妱崬傒傪嫋壜
	POP.L	ER1
	RTS
SCI_Putc_2:
	MOV.W	#H'FFFF,R0		;僶僢僼傽僼儖
	BRA		SCI_Putc_END

;-----堦暥帤庴怣張棟-----
;CALL宍幃: int SCI_Getc( void );
;栠傝抣偼16bit偺撪壓埵偵庴怣僨乕僞丄忋埵偼僶僢僼傽偵僨乕僞偑懚嵼偟偨帪0丄僨乕僞偑柍偄帪偼-1
	.EXPORT	_SCI_Getc
_SCI_Getc:
	MOV.W	@RWptr,E1		;彂崬傒億僀儞僞偲
	MOV.W	@RRptr,R1		;撉崬傒億僀儞僞傪庢摼偟
	CMP.W	E1,R1			;僨乕僞偑懚嵼偟偰偄傞偐傪妋擣偡傞
	BEQ		SCI_Getc_2		;摨偠傾僪儗僗摨巑偺帪偼懚嵼偟偰偄側偄
	MOV.B	@ER1,R0L		;庴怣僶僢僼傽偐傜1byte庢摼偟丄栠傝抣偵戙擖
	XOR.B	R0H,R0H			;栠傝抣偺忋埵傪僋儕傾
	INC.W	#1,R1			;撉崬傒億僀儞僞傪僀儞僋儕儊儞僩偡傞
	CMP.W	#(RBUF + RBUF_SZ),R1	;儕儞僌僶僢僼傽偺嵟屻傪妋擣
	BNE		SCI_Getc_3		;嵟屻偵払偟偰偄側偗傟偽SCI_Getc_3偵僕儍儞僾
	MOV.W	#RBUF,R1		;儕儞僌僶僢僼傽偺嵟弶偵栠偡
SCI_Getc_3:
	MOV.W	R1,@RRptr		;撉崬傒億僀儞僞偺峏怴
SCI_Getc_END:
	RTS
SCI_Getc_2:
	MOV.W	#H'FFFF,R0		;栠傝抣偵-1傪戙擖
	BRA		SCI_Getc_END

;-----暥帤楍憲怣張棟-----
;CALL宍幃: void SCI_Puts( char * );
;堷悢偱梌偊傜傟傞暥帤楍偺億僀儞僞偐傜NULL傑偱傪憲怣偡傞丅
;拲堄両憲怣僶僢僼傽偑堦攖側帪偼僶僢僼傽偵彂崬傔傞傑偱懸偭偰偟傑偆丅
	.EXPORT	_SCI_Puts
_SCI_Puts:
	PUSH.L	ER1
	PUSH.L	ER2
	MOV.L	ER0,ER2			;億僀儞僞傪堏摦
SCI_Puts_1:
	MOV.B	@ER2+,R1L		;ER2偱梌偊傜傟傞暥帤楍偺億僀儞僞偐傜堦暥帤傪庢摼
	OR.B	R1L,R1L			;NULL偱側偄帠傪妋擣偡傞
	BEQ		SCI_Puts_END	;傕偟NULL側傜偽廔椆
SCI_Puts_2:
	MOV.B	R1L,R0L			;
	BSR		_SCI_Putc		;堦暥帤憲怣張棟傪屇傃弌偡
	OR.W	R0,R0			;曉傝抣傪挷傋傞
	BNE		SCI_Puts_2		;傕偟曉傝抣偑0偱側偄帪偼憲怣僶僢僼傽偑堦攖側偺偱儕僩儔僀
	BRA		SCI_Puts_1		;嵟弶偵栠偭偰堦暥帤憲怣傪孞傝曉偡
SCI_Puts_END:
	POP.L	ER2
	POP.L	ER1
	RTS

;-----庴怣暥帤悢庢摼張棟-----
;CALL宍幃: unsigned int RecByteSize( void );
;栠傝抣偵尰嵼偺庴怣僶僢僼傽撪偵巆偭偰偄傞暥帤悢傪曉偡
	.EXPORT	_RecByteSize
_RecByteSize:
	MOV.W	@RWptr,R0		;彂崬傒億僀儞僞偲
	MOV.W	@RRptr,E0		;撉崬傒億僀儞僞傪庢摼偟
	CMP.W	E0,R0			;擇偮偺億僀儞僞傪斾妑
	BGE		RcvSize_1		;彂崬傒億僀儞僞偺曽偑戝偒偄帪偼RcvSize_1偵僕儍儞僾
	SUB.W	#RBUF_SZ,E0		;彂崬傒億僀儞僞偑彫偝偄応崌儕儞僌僶僢僼傽偺億僀儞僞偑夞偭偰偄傞偺偱
							;僶僢僼傽僒僀僘暘僆僼僙僢僩偡傞
RcvSize_1:
	SUB.W	E0,R0
	RTS
;-----僜乕僗僾儘僌儔儉偺廔椆-----
	.END

⌨️ 快捷键说明

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