📄 sci.s
字号:
.module SCI.c
.area text
.dbfile SCI.c
.dbfunc e SCISend1 _SCISend1 fV
; o -> 2,X
_SCISend1::
.dbline -1
tsx
.dbline 11
; /*-----------------------------------------------------*
; *文件描述:本文件包含了串行通信的4子程序,分别为: *
; *(1)SCISend1:串行发送1字节 *
; *(2)SCISendN:串行发送n字节 *
; *(3)SCIRe1:串行接收1字节 *
; *(4)SCIReN:串行接收n字节 *
; *-------------《嵌入式应用技术基础教程》--------------*/
; #include "SCI.h"
;
; void SCISend1(unsigned char o)
; {//判断ReStatusR的第SendTestBit位是否为1,是1可以发送
bra L3
L2:
.dbline 13
; while(1)
; {
.dbline 14
; if ((ReSendStatusR & (1 << SendTestBit)) != 0)
brclr #7,0x16,L5
.dbline 15
; {
.dbline 16
; ReSendDataR = o;
lda 2,X
sta 0x18
.dbline 17
; break;
bra L4
L5:
.dbline 19
L3:
.dbline 12
bra L2
L4:
.dbline -2
L1:
.dbline 0 ; func end
rts
.dbsym l o 2 c
.dbend
.dbfunc e SCISendN _SCISendN fV
; i -> 0,X
; ch -> 5,X
; n -> 4,X
_SCISendN::
.dbline -1
ais #-2
tsx
.dbline 23
; }
; }
; }
;
; void SCISendN(unsigned char n,unsigned char ch[])
; {
.dbline 25
; int i;
; for(i = 0; i < n; i++)
clr 1,X
clr ,X
bra L11
L8:
.dbline 26
lda 1,X
add 6,X
sta *__r1
lda ,X
adc 5,X
sta *__r0
ldhx *__r0
lda ,x
psha
jsr _SCISend1
ais #1
tsx
L9:
.dbline 25
lda 1,X
add #1
sta 1,X
lda ,X
adc #0
sta ,X
L11:
.dbline 25
clr *__r0
lda 4,X
sta *__r1
lda 1,X
sta *__r3
lda ,X
sta *__r2
ldhx *__r2
cphx *__r0
tsx
blt L8
.dbline -2
L7:
ais #2
.dbline 0 ; func end
rts
.dbsym l i 0 I
.dbsym l ch 5 pc
.dbsym l n 4 c
.dbend
.dbfunc e SCIRe1 _SCIRe1 fc
; i -> 0,X
; k -> 1,X
; p -> 5,X
_SCIRe1::
.dbline -1
ais #-3
tsx
.dbline 30
; SCISend1(ch[i]);
; }
;
; unsigned char SCIRe1(unsigned char *p)
; {
.dbline 34
; unsigned int k;
; unsigned char i;
; //ReStatusR第ReTestBit位为1表示可接收数据
; for(k = 0; k< 0xfbbb; k++)
clr 2,X
clr 1,X
bra L16
L13:
.dbline 35
; {
.dbline 36
; if ((ReSendStatusR & (1 << ReTestBit)) != 0)
brclr #5,0x16,L17
.dbline 37
; {
.dbline 38
; i = ReSendDataR;
lda 0x18
sta ,X
.dbline 39
; *p = 0x00;
lda 6,X
sta *__r1
lda 5,X
sta *__r0
clra
ldhx *__r0
sta ,x
tsx
.dbline 40
; break;
bra L15
L17:
.dbline 42
L14:
.dbline 34
lda 2,X
add #1
sta 2,X
lda 1,X
adc #0
sta 1,X
L16:
.dbline 34
lda 2,X
sta *__r1
lda 1,X
sta *__r0
ldhx *__r0
cphx #-1093
tsx
blo L13
L15:
.dbline 43
; }
; }
; if(k >= 0xfbbb)
lda 2,X
sta *__r1
lda 1,X
sta *__r0
ldhx *__r0
cphx #-1093
tsx
blo L19
.dbline 44
; {
.dbline 45
; i = 0xff;
lda #-1
sta ,X
.dbline 46
; *p = 0x01;
lda 6,X
sta *__r1
lda 5,X
sta *__r0
lda #1
ldhx *__r0
sta ,x
tsx
.dbline 47
; }
L19:
.dbline 48
; return i; //返回接收到的数据
lda ,X
.dbline -2
L12:
ais #3
.dbline 0 ; func end
rts
.dbsym l i 0 c
.dbsym l k 1 i
.dbsym l p 5 pc
.dbend
.dbfunc e SCIReN _SCIReN fc
; fp -> 0,X
; m -> 1,X
; ch -> 6,X
; n -> 5,X
_SCIReN::
.dbline -1
ais #-3
tsx
.dbline 52
; }
;
; unsigned char SCIReN(unsigned char n, unsigned char ch[])
; {
.dbline 55
; int m;
; unsigned char fp;
; m = 0;
clr 2,X
clr 1,X
bra L23
L22:
.dbline 57
; while (m < n)
; {
.dbline 58
; ch[m]=SCIRe1(&fp);
pshx
pshh
jsr _SCIRe1
ais #2
tsx
sta *__r1
lda 2,X
add 7,X
sta *__r3
lda 1,X
adc 6,X
sta *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
.dbline 59
; if (fp == 1) return 1;
lda ,X
cmp #1
bne L25
.dbline 59
lda #1
bra L21
L25:
.dbline 60
lda 2,X
add #1
sta 2,X
lda 1,X
adc #0
sta 1,X
.dbline 61
L23:
.dbline 56
clr *__r0
lda 5,X
sta *__r1
lda 2,X
sta *__r3
lda 1,X
sta *__r2
ldhx *__r2
cphx *__r0
tsx
blt L22
.dbline 62
; m ++;
; }
; return 0;
clra
.dbline -2
L21:
ais #3
.dbline 0 ; func end
rts
.dbsym l fp 0 c
.dbsym l m 1 I
.dbsym l ch 6 pc
.dbsym l n 5 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -