📄 memu.lis
字号:
0484 A153 cmp #83
0486 2622 bne L62
0488 3F00 clr *__r0
048A E605 lda 5,X
048C A001 sub #1
048E B700 sta *__r1
0490 B600 lda *__r0
0492 A200 sbc #0
0494 B700 sta *__r0
0496 B600 lda *__r1
0498 EB04 add 4,X
049A B700 sta *__r1
049C B600 lda *__r0
049E E903 adc 3,X
04A0 B700 sta *__r0
04A2 5500 ldhx *__r0
04A4 F6 lda ,x
04A5 95 tsx
04A6 A145 cmp #69
04A8 2705 beq L60
04AA L62:
04AA .dbline 123
04AA ; {ErrCode=1; goto CheckReFrame_End;}
04AA .dbline 123
04AA A601 lda #1
04AC F7 sta ,X
04AD .dbline 123
04AD 2018 bra L63
04AF L60:
04AF .dbline 125
04AF ; //收到的数据帧校验和出错,出错标志2
04AF ; if(GetCheckChar(ReFrameLength-1,ReFrameBuP))
04AF E604 lda 4,X
04B1 87 psha
04B2 E603 lda 3,X
04B4 87 psha
04B5 E605 lda 5,X
04B7 A001 sub #1
04B9 87 psha
04BA CD04CB jsr _GetCheckChar
04BD A703 ais #3
04BF 95 tsx
04C0 B700 sta *__r1
04C2 2703 beq L64
04C4 .dbline 126
04C4 ; {ErrCode=2; goto CheckReFrame_End;}
04C4 .dbline 126
04C4 A602 lda #2
04C6 F7 sta ,X
04C7 .dbline 126
04C7 L64:
04C7 L63:
04C7 .dbline 128
04C7 ; CheckReFrame_End: //返回
04C7 ; return ErrCode;
04C7 F6 lda ,X
04C8 .dbline -2
04C8 L59:
04C8 A701 ais #1
04CA .dbline 0 ; func end
04CA 81 rts
04CB .dbsym l ErrCode 0 c
04CB .dbsym l ReFrameLength 5 c
04CB .dbsym l ReFrameBuP 3 pc
04CB .dbend
04CB .dbfunc e GetCheckChar _GetCheckChar fc
04CB ; CheckChar -> 0,X
04CB ; i -> 1,X
04CB ; DataP -> 5,X
04CB ; DataNum -> 4,X
04CB _GetCheckChar::
04CB .dbline -1
04CB A7FE ais #-2
04CD 95 tsx
04CE .dbline 139
04CE ; }
04CE ;
04CE ; /*GetCheckChar:求数据流的异或校验码子程序----------------------------------*
04CE ; *功能描述:得到数据流的一个字节异或校验码 *
04CE ; *参数:DataP指向数据流的指针 *
04CE ; * DataNum为数据流的字节长度 *
04CE ; *返回:CheckChar:一个字节的异或校验码 *
04CE ; *内部调用:无 *
04CE ; *-------------------------------------------------------------------------*/
04CE ; INT8U GetCheckChar(INT8U DataNum,INT8U * DataP)
04CE ; {
04CE .dbline 141
04CE ; INT8U i; //用于循环的计数位
04CE ; INT8U CheckChar=0; //存放一个字节的异或校验码
04CE 7F clr ,X
04CF .dbline 143
04CF ; /*循环求异或校验码*/
04CF ; for(i=0;i<DataNum;i++)
04CF 6F01 clr 1,X
04D1 201A bra L70
04D3 L67:
04D3 .dbline 144
04D3 3F00 clr *__r0
04D5 E601 lda 1,X
04D7 EB06 add 6,X
04D9 B700 sta *__r1
04DB B600 lda *__r0
04DD E905 adc 5,X
04DF B700 sta *__r0
04E1 5500 ldhx *__r0
04E3 F6 lda ,x
04E4 95 tsx
04E5 B700 sta *__r1
04E7 F6 lda ,X
04E8 B800 eor *__r1
04EA F7 sta ,X
04EB L68:
04EB .dbline 143
04EB 6C01 inc 1,X
04ED L70:
04ED .dbline 143
04ED E601 lda 1,X
04EF E104 cmp 4,X
04F1 25E0 blo L67
04F3 .dbline 145
04F3 ; CheckChar^=DataP[i];
04F3 ; return(CheckChar);
04F3 F6 lda ,X
04F4 .dbline -2
04F4 L66:
04F4 A702 ais #2
04F6 .dbline 0 ; func end
04F6 81 rts
04F7 .dbsym l CheckChar 0 c
04F7 .dbsym l i 1 c
04F7 .dbsym l DataP 5 pc
04F7 .dbsym l DataNum 4 c
04F7 .dbend
04F7 .dbfunc e DePackReBuf _DePackReBuf fc
04F7 ; ErrorNo -> 0,X
04F7 ; tmp -> 1,X
04F7 ; i -> 3,X
04F7 ; buf -> 6,X
04F7 _DePackReBuf::
04F7 .dbline -1
04F7 A7FC ais #-4
04F9 95 tsx
04FA .dbline 156
04FA ; }
04FA ;
04FA ; /*DePackReBuf:解包接受到的接受缓冲区的内容---------------------------------*
04FA ; *功能:将接受缓冲区ReBuf的内容解包 *
04FA ; *参数:接受缓冲区ReBuf *
04FA ; *返回:当前温度CurrentT、设定温度BasicT、当前温度符号SignCT *
04FA ; 设定温度符号SignBT、当前湿度CurrentH、设定湿度BasicH,系统时间Hour *
04FA ; 错误编号ErrorNo
04FA ; *-------------------------------------------------------------------------*/
04FA ; INT8U DePackReBuf(INT8U *buf)
04FA ; {
04FA .dbline 157
04FA ; INT8U ErrorNo=0;
04FA 7F clr ,X
04FB .dbline 160
04FB ; INT8U tmp[2],i;
04FB ; //1:验证接收到的帧
04FB ; ErrorNo=CheckReFrame(buf,15);
04FB A60F lda #15
04FD 87 psha
04FE E607 lda 7,X
0500 87 psha
0501 E606 lda 6,X
0503 87 psha
0504 CD0478 jsr _CheckReFrame
0507 A703 ais #3
0509 95 tsx
050A B700 sta *__r1
050C F7 sta ,X
050D .dbline 161
050D ; if(ErrorNo!=0) goto Exit; //接收到的帧错误,退出操作
050D 2703 beq L72
050F .dbline 161
050F CC05CB jmp L74
0512 L72:
0512 .dbline 162
0512 ; if(buf[1]!=MACHINE_NO) return 3;
0512 E607 lda 7,X
0514 AB01 add #1
0516 B700 sta *__r1
0518 E606 lda 6,X
051A A900 adc #0
051C B700 sta *__r0
051E 5500 ldhx *__r0
0520 F6 lda ,x
0521 95 tsx
0522 B100 cmp *_MACHINE_NO
0524 2705 beq L75
0526 .dbline 162
0526 A603 lda #3
0528 CC05CC jmp L71
052B L75:
052B .dbline 163
052B ; tmp[0]=buf[2];tmp[1]=buf[3];
052B E607 lda 7,X
052D AB02 add #2
052F B700 sta *__r1
0531 E606 lda 6,X
0533 A900 adc #0
0535 B700 sta *__r0
0537 5500 ldhx *__r0
0539 F6 lda ,x
053A 95 tsx
053B E701 sta 1,X
053D .dbline 163
053D E607 lda 7,X
053F AB03 add #3
0541 B700 sta *__r1
0543 E606 lda 6,X
0545 A900 adc #0
0547 B700 sta *__r0
0549 5500 ldhx *__r0
054B F6 lda ,x
054C 95 tsx
054D E702 sta 2,X
054F .dbline 164
054F ; BasicT=*(INT16U *)tmp;SignBT=buf[4];//温度设定值
054F E601 lda 1,X
0551 B700 sta *_BasicT
0553 E602 lda 2,X
0555 B701 sta *_BasicT+1
0557 .dbline 164
0557 E607 lda 7,X
0559 AB04 add #4
055B B700 sta *__r1
055D E606 lda 6,X
055F A900 adc #0
0561 B700 sta *__r0
0563 5500 ldhx *__r0
0565 F6 lda ,x
0566 95 tsx
0567 B700 sta *_SignBT
0569 .dbline 165
0569 ; tmp[0]=buf[5];tmp[1]=buf[6];
0569 E607 lda 7,X
056B AB05 add #5
056D B700 sta *__r1
056F E606 lda 6,X
0571 A900 adc #0
0573 B700 sta *__r0
0575 5500 ldhx *__r0
0577 F6 lda ,x
0578 95 tsx
0579 E701 sta 1,X
057B .dbline 165
057B E607 lda 7,X
057D AB06 add #6
057F B700 sta *__r1
0581 E606 lda 6,X
0583 A900 adc #0
0585 B700 sta *__r0
0587 5500 ldhx *__r0
0589 F6 lda ,x
058A 95 tsx
058B E702 sta 2,X
058D .dbline 166
058D ; BasicH=*(INT16U *)tmp; //湿度设定值
058D E601 lda 1,X
058F B700 sta *_BasicH
0591 E602 lda 2,X
0593 B701 sta *_BasicH+1
0595 .dbline 167
0595 6F03 clr 3,X
0597 202C bra L82
0599 L79:
0599 .dbline 167
0599 3F00 clr *__r0
059B E603 lda 3,X
059D EB07 add 7,X
059F B700 sta *__r1
05A1 B600 lda *__r0
05A3 E906 adc 6,X
05A5 B700 sta *__r0
05A7 5500 ldhx *__r0
05A9 AF07 aix #7
05AB F6 lda ,x
05AC 95 tsx
05AD B700 sta *__r1
05AF 3F00 clr *__r2
05B1 E603 lda 3,X
05B3 AB00 add #<_Hour
05B5 B700 sta *__r3
05B7 B600 lda *__r2
05B9 A900 adc #>_Hour
05BB B700 sta *__r2
05BD B600 lda *__r1
05BF 5500 ldhx *__r2
05C1 F7 sta ,x
05C2 95 tsx
05C3 L80:
05C3 .dbline 167
05C3 6C03 inc 3,X
05C5 L82:
05C5 .dbline 167
05C5 ; for(i=0;i<6;i++) Hour[i]=buf[i+7]; //系统时间
05C5 E603 lda 3,X
05C7 A106 cmp #6
05C9 25CE blo L79
05CB L74:
05CB .dbline 169
05CB ; Exit:
05CB ; return ErrorNo;
05CB F6 lda ,X
05CC .dbline -2
05CC L71:
05CC A704 ais #4
05CE .dbline 0 ; func end
05CE 81 rts
05CF .dbsym l ErrorNo 0 c
05CF .dbsym l tmp 1 A[2:2]c
05CF .dbsym l i 3 c
05CF .dbsym l buf 6 pc
05CF .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -