📄 memu.s
字号:
lda *__r2
adc *__r0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
clr *__r2
lda 9,X
add 13,X
sta *__r3
lda *__r2
adc 12,X
sta *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
L35:
.dbline 93
inc 9,X
L37:
.dbline 93
; for(i=1;i<=5;i++) LcdShowBuff[i]=buf[i];
lda 9,X
cmp #5
bls L34
.dbline 95
; //2:温度设定值
; data[0]=BasicT>>8;data[1]=BasicT; data[2]=SignBT;
lda *_BasicT
sta ,X
.dbline 95
lda *_BasicT+1
sta 1,X
.dbline 95
lda *_SignBT
sta 2,X
.dbline 96
; NumFormatChange(buf,data,0);
clra
psha
pshx
pshh
aix #3
pshx
pshh
jsr _NumFormatChange
ais #5
tsx
.dbline 97
lda #1
sta 9,X
bra L43
L40:
.dbline 97
aix #3
sthx *__r0
tsx
clr *__r2
lda 9,X
add *__r1
sta *__r1
lda *__r2
adc *__r0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
clr *__r2
lda 9,X
add 13,X
sta *__r3
lda *__r2
adc 12,X
sta *__r2
ldhx *__r2
aix #8
sthx *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
L41:
.dbline 97
inc 9,X
L43:
.dbline 97
; for(i=1;i<=3;i++) LcdShowBuff[i+8]=buf[i];
lda 9,X
cmp #3
bls L40
.dbline 98
; data[2]='+';
lda #43
sta 2,X
.dbline 100
; //3:当前湿度
; data[0]=CurrentH>>8;data[1]=CurrentH;
lda *_CurrentH
sta ,X
.dbline 100
lda *_CurrentH+1
sta 1,X
.dbline 101
; NumFormatChange(buf,data,1);
lda #1
psha
pshx
pshh
aix #3
pshx
pshh
jsr _NumFormatChange
ais #5
tsx
.dbline 102
lda #1
sta 9,X
bra L49
L46:
.dbline 102
aix #3
sthx *__r0
tsx
clr *__r2
lda 9,X
add *__r1
sta *__r1
lda *__r2
adc *__r0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
clr *__r2
lda 9,X
add 13,X
sta *__r3
lda *__r2
adc 12,X
sta *__r2
ldhx *__r2
aix #16
sthx *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
L47:
.dbline 102
inc 9,X
L49:
.dbline 102
; for(i=1;i<=5;i++) LcdShowBuff[i+16]=buf[i];
lda 9,X
cmp #5
bls L46
.dbline 104
; //4:湿度设定值
; data[0]=BasicH>>8;data[1]=BasicH;
lda *_BasicH
sta ,X
.dbline 104
lda *_BasicH+1
sta 1,X
.dbline 105
; NumFormatChange(buf,data,0);
clra
psha
pshx
pshh
aix #3
pshx
pshh
jsr _NumFormatChange
ais #5
tsx
.dbline 106
lda #1
sta 9,X
bra L54
L51:
.dbline 106
aix #3
sthx *__r0
tsx
clr *__r2
lda 9,X
add *__r1
sta *__r1
lda *__r2
adc *__r0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
clr *__r2
lda 9,X
add 13,X
sta *__r3
lda *__r2
adc 12,X
sta *__r2
ldhx *__r2
aix #24
sthx *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
L52:
.dbline 106
inc 9,X
L54:
.dbline 106
; for(i=1;i<=3;i++) LcdShowBuff[i+8+16]=buf[i];
lda 9,X
cmp #3
bls L51
.dbline 108
clr 9,X
bra L58
L55:
.dbline 108
clr *__r0
lda *_ColdHotFlag
sta *__r1
lsl *__r1
rol *__r0
lsl *__r1
rol *__r0
clr *__r2
lda 9,X
add *__r1
sta *__r1
lda *__r2
adc *__r0
sta *__r0
lda *__r1
add #<_ColdHot
sta *__r1
lda *__r0
adc #>_ColdHot
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
clr *__r2
lda 9,X
add 13,X
sta *__r3
lda *__r2
adc 12,X
sta *__r2
ldhx *__r2
aix #34
sthx *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
L56:
.dbline 108
inc 9,X
L58:
.dbline 108
; //5:风机状态显示
; for(i=0;i<=3;i++) LcdShowBuff[i+2+32]=ColdHot[i+ColdHotFlag*4];
lda 9,X
cmp #3
bls L55
.dbline -2
L31:
ais #10
.dbline 0 ; func end
rts
.dbsym l data 0 A[3:3]c
.dbsym l buf 3 A[6:6]c
.dbsym l i 9 c
.dbsym l LcdShowBuff 12 pc
.dbend
.dbfunc e CheckReFrame _CheckReFrame fc
; ErrCode -> 0,X
; ReFrameLength -> 5,X
; ReFrameBuP -> 3,X
_CheckReFrame::
.dbline -1
ais #-1
tsx
.dbline 118
; }
; /*CheckReFrame:验证接收到的帧----------------------------------------------*
; *功能描述:验证接收到的帧 *
; *参数:ReFrameBuP指向接收帧缓冲区的指针 *
; * ReFrameLength当前接收到的帧的长度 *
; *返回:0表示校验正确,1表示收到数据帧格式不正确,2表示异或校验和出错 *
; *内部调用:GetCheckChar求数据流的异或校验码子程序 *
; *-------------------------------------------------------------------------*/
; INT8U CheckReFrame(INT8U * ReFrameBuP,INT8U ReFrameLength)
; {
.dbline 120
; //定义出错标志字节,无错为0
; INT8U ErrCode=0;
clr ,X
.dbline 122
; //收到的数据帧格式不正确,出错标志1
; if((ReFrameBuP[0]!='S')||(ReFrameBuP[ReFrameLength-1]!='E'))
lda 3,X
ldx 4,X
psha
pulh
lda ,x
tsx
cmp #83
bne L62
clr *__r0
lda 5,X
sub #1
sta *__r1
lda *__r0
sbc #0
sta *__r0
lda *__r1
add 4,X
sta *__r1
lda *__r0
adc 3,X
sta *__r0
ldhx *__r0
lda ,x
tsx
cmp #69
beq L60
L62:
.dbline 123
; {ErrCode=1; goto CheckReFrame_End;}
.dbline 123
lda #1
sta ,X
.dbline 123
bra L63
L60:
.dbline 125
; //收到的数据帧校验和出错,出错标志2
; if(GetCheckChar(ReFrameLength-1,ReFrameBuP))
lda 4,X
psha
lda 3,X
psha
lda 5,X
sub #1
psha
jsr _GetCheckChar
ais #3
tsx
sta *__r1
beq L64
.dbline 126
; {ErrCode=2; goto CheckReFrame_End;}
.dbline 126
lda #2
sta ,X
.dbline 126
L64:
L63:
.dbline 128
; CheckReFrame_End: //返回
; return ErrCode;
lda ,X
.dbline -2
L59:
ais #1
.dbline 0 ; func end
rts
.dbsym l ErrCode 0 c
.dbsym l ReFrameLength 5 c
.dbsym l ReFrameBuP 3 pc
.dbend
.dbfunc e GetCheckChar _GetCheckChar fc
; CheckChar -> 0,X
; i -> 1,X
; DataP -> 5,X
; DataNum -> 4,X
_GetCheckChar::
.dbline -1
ais #-2
tsx
.dbline 139
; }
;
; /*GetCheckChar:求数据流的异或校验码子程序----------------------------------*
; *功能描述:得到数据流的一个字节异或校验码 *
; *参数:DataP指向数据流的指针 *
; * DataNum为数据流的字节长度 *
; *返回:CheckChar:一个字节的异或校验码 *
; *内部调用:无 *
; *-------------------------------------------------------------------------*/
; INT8U GetCheckChar(INT8U DataNum,INT8U * DataP)
; {
.dbline 141
; INT8U i; //用于循环的计数位
; INT8U CheckChar=0; //存放一个字节的异或校验码
clr ,X
.dbline 143
; /*循环求异或校验码*/
; for(i=0;i<DataNum;i++)
clr 1,X
bra L70
L67:
.dbline 144
clr *__r0
lda 1,X
add 6,X
sta *__r1
lda *__r0
adc 5,X
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *__r1
lda ,X
eor *__r1
sta ,X
L68:
.dbline 143
inc 1,X
L70:
.dbline 143
lda 1,X
cmp 4,X
blo L67
.dbline 145
; CheckChar^=DataP[i];
; return(CheckChar);
lda ,X
.dbline -2
L66:
ais #2
.dbline 0 ; func end
rts
.dbsym l CheckChar 0 c
.dbsym l i 1 c
.dbsym l DataP 5 pc
.dbsym l DataNum 4 c
.dbend
.dbfunc e DePackReBuf _DePackReBuf fc
; ErrorNo -> 0,X
; tmp -> 1,X
; i -> 3,X
; buf -> 6,X
_DePackReBuf::
.dbline -1
ais #-4
tsx
.dbline 156
; }
;
; /*DePackReBuf:解包接受到的接受缓冲区的内容---------------------------------*
; *功能:将接受缓冲区ReBuf的内容解包 *
; *参数:接受缓冲区ReBuf *
; *返回:当前温度CurrentT、设定温度BasicT、当前温度符号SignCT *
; 设定温度符号SignBT、当前湿度CurrentH、设定湿度BasicH,系统时间Hour *
; 错误编号ErrorNo
; *-------------------------------------------------------------------------*/
; INT8U DePackReBuf(INT8U *buf)
; {
.dbline 157
; INT8U ErrorNo=0;
clr ,X
.dbline 160
; INT8U tmp[2],i;
; //1:验证接收到的帧
; ErrorNo=CheckReFrame(buf,15);
lda #15
psha
lda 7,X
psha
lda 6,X
psha
jsr _CheckReFrame
ais #3
tsx
sta *__r1
sta ,X
.dbline 161
; if(ErrorNo!=0) goto Exit; //接收到的帧错误,退出操作
beq L72
.dbline 161
jmp L74
L72:
.dbline 162
; if(buf[1]!=MACHINE_NO) return 3;
lda 7,X
add #1
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
cmp *_MACHINE_NO
beq L75
.dbline 162
lda #3
jmp L71
L75:
.dbline 163
; tmp[0]=buf[2];tmp[1]=buf[3];
lda 7,X
add #2
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta 1,X
.dbline 163
lda 7,X
add #3
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta 2,X
.dbline 164
; BasicT=*(INT16U *)tmp;SignBT=buf[4];//温度设定值
lda 1,X
sta *_BasicT
lda 2,X
sta *_BasicT+1
.dbline 164
lda 7,X
add #4
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta *_SignBT
.dbline 165
; tmp[0]=buf[5];tmp[1]=buf[6];
lda 7,X
add #5
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta 1,X
.dbline 165
lda 7,X
add #6
sta *__r1
lda 6,X
adc #0
sta *__r0
ldhx *__r0
lda ,x
tsx
sta 2,X
.dbline 166
; BasicH=*(INT16U *)tmp; //湿度设定值
lda 1,X
sta *_BasicH
lda 2,X
sta *_BasicH+1
.dbline 167
clr 3,X
bra L82
L79:
.dbline 167
clr *__r0
lda 3,X
add 7,X
sta *__r1
lda *__r0
adc 6,X
sta *__r0
ldhx *__r0
aix #7
lda ,x
tsx
sta *__r1
clr *__r2
lda 3,X
add #<_Hour
sta *__r3
lda *__r2
adc #>_Hour
sta *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
L80:
.dbline 167
inc 3,X
L82:
.dbline 167
; for(i=0;i<6;i++) Hour[i]=buf[i+7]; //系统时间
lda 3,X
cmp #6
blo L79
L74:
.dbline 169
; Exit:
; return ErrorNo;
lda ,X
.dbline -2
L71:
ais #4
.dbline 0 ; func end
rts
.dbsym l ErrorNo 0 c
.dbsym l tmp 1 A[2:2]c
.dbsym l i 3 c
.dbsym l buf 6 pc
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -