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

📄 memu.s

📁 为苏州一家公司所做的的恒温恒湿车间控制 系统
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -