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

📄 show.s

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Show.c
	.area text
	.dbfile Show.c
	.dbfunc e InBuff _InBuff fV
;              i -> 0,X
;              p -> 1,X
;           Buff -> 13,X
;          time2 -> 11,X
;          time1 -> 9,X
;           tmp2 -> 7,X
;           tmp1 -> 5,X
_InBuff::
	.dbline -1
	ais #-3
	tsx
	.dbline 20
; #include "Show.h"
; 
; //内部函数声明
; void NumFormatChange(INT8U * ReP,INT8U * Data);
; void Show1Data(INT16U showdata,INT8U showline,INT8U fbflag,INT8U *Buff);
; 
; //InBuff:LCD显示数据合并子函数---------------------------------------------*
; //功  能:将需要显示的4行数据按LCD显示位置放入一个64字节的缓冲区           *
; //参  数:                                                                 *
; //       tmp1:第2行左对齐显示的数据                                        *
; //       tmp2:第2行右对齐显示的数据                                        *
; //       time1:第3行左对齐显示的数据                                       *
; //       time2:第3行右对齐显示的数据                                       *
; //       Buff:存放显示64字节数据的缓冲区                                   *
; //返  回:内存Buff开始连续的64个地址内即为转换后要显示的数据               *
; //调  用:Show1Data                                                        *
; //说  明:第4行显示“青星科技有限公司”                                    *
; //-------------------------------------------------------------------------*
; void InBuff(INT16U tmp1,INT16U tmp2,INT16U time1,INT16U time2,INT8U *Buff)
; {
	.dbline 29
;     INT8U *p;
;     INT8U i;
;     
;     //1 显示当前温度和设定温度
;     //1.1空1格,因为汉字要从奇数位开始显示,否则为乱码
; //    Buff[16]=' ';
;     //1.2在第2行左对齐显示当前温度及其单位,共占用7字节
; //    Show1Data(tmp1,2,0,Buff+1);
;     p="℃";      //当1个汉字(2字节)显示
	lda #>L2
	sta 1,X
	lda #<L2
	sta 2,X
	.dbline 30
;     Buff[22]=*p;
	lda 1,X
	ldx 2,X
	psha
	pulh
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #22
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 31
;     Buff[23]=*(p+1);
	lda 2,X
	add #1
	sta *__r1
	lda 1,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #23
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 33
;     //1.3中间用1个空格分开左右的显示
;     Buff[24]=' ';
	lda 14,X
	add #24
	sta *__r1
	lda 13,X
	adc #0
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
	.dbline 35
;     //1.4在第2行右对齐显示设定温度及其单位,也占用7字节
;     Show1Data(tmp2,2,1,Buff);
	lda 14,X
	psha
	lda 13,X
	psha
	lda #1
	psha
	lda #2
	psha
	lda 8,X
	psha
	lda 7,X
	psha
	jsr _Show1Data
	ais #6
	tsx
	.dbline 36
;     Buff[30]=*p;
	lda 1,X
	ldx 2,X
	psha
	pulh
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #30
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 37
;     Buff[31]=*(p+1);
	lda 2,X
	add #1
	sta *__r1
	lda 1,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #31
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 40
;     
;     //2 同样显示当前温度和设定温度
;     Buff[32]=' ';
	lda 14,X
	add #32
	sta *__r1
	lda 13,X
	adc #0
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
	.dbline 41
;     Show1Data(time1,3,0,Buff+1);
	lda 14,X
	add #1
	sta *__r1
	lda 13,X
	adc #0
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	clra
	psha
	lda #3
	psha
	lda 10,X
	psha
	lda 9,X
	psha
	jsr _Show1Data
	ais #6
	tsx
	.dbline 42
;     p="分";
	lda #>L3
	sta 1,X
	lda #<L3
	sta 2,X
	.dbline 43
;     Buff[38]=*p;
	lda 1,X
	ldx 2,X
	psha
	pulh
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #38
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 44
;     Buff[39]=*(p+1);
	lda 2,X
	add #1
	sta *__r1
	lda 1,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #39
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 45
;     Buff[40]=' ';
	lda 14,X
	add #40
	sta *__r1
	lda 13,X
	adc #0
	sta *__r0
	lda #32
	ldhx *__r0
	sta ,x
	tsx
	.dbline 46
;     Show1Data(time2,3,1,Buff);
	lda 14,X
	psha
	lda 13,X
	psha
	lda #1
	psha
	lda #3
	psha
	lda 12,X
	psha
	lda 11,X
	psha
	jsr _Show1Data
	ais #6
	tsx
	.dbline 47
;     Buff[46]=*p;
	lda 1,X
	ldx 2,X
	psha
	pulh
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #46
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 48
;     Buff[47]=*(p+1);
	lda 2,X
	add #1
	sta *__r1
	lda 1,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	lda 14,X
	add #47
	sta *__r3
	lda 13,X
	adc #0
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline -2
L1:
	ais #3
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbsym l p 1 pc
	.dbsym l Buff 13 pc
	.dbsym l time2 11 i
	.dbsym l time1 9 i
	.dbsym l tmp2 7 i
	.dbsym l tmp1 5 i
	.dbend
	.dbfunc e Show1Data _Show1Data fV
;              j -> 0,X
;              p -> 1,X
;           data -> 3,X
;           line -> 6,X
;         redata -> 7,X
;              i -> 12,X
;           Buff -> 19,X
;         lrflag -> 18,X
;       showline -> 17,X
;       showdata -> 15,X
_Show1Data::
	.dbline -1
	ais #-13
	tsx
	.dbline 74
; /*    
;     //3 在第4行显示“青星科技有限公司”
;     p="青星科技有限公司";
;     for(i=48;i<65;i++)
;     {
;        Buff[i]=*p;
;        p++;
;     }*/
; }
; 
; 
; 
; //Show1Data:LCD单个数据显示子函数------------------------------------------*
; //功  能:将需要显示的showdata按LCD显示位置放入一个64字节的缓冲区          *
; //        在LCD第showline行左对齐或右对齐显示1个整型数据showdata           *
; //参  数:                                                                 *
; //       showdata:需要显示的1个整型数据                                    *
; //       showline:数据显示在LCD上的行数                                    *
; //       lrflag:左对齐或右对齐的标志                                       *
; //       Buff:存放显示64字节数据的缓冲区                                   *
; //返  回:将数据放入内存Buff[(showline-1)*16]开始连续的5个地址内           *
; //       或将数据放入内存Buff[(showline-1)*16+9]开始连续的5个地址内        *
; //调  用:NumFormatChange                                                  *
; //-------------------------------------------------------------------------*
; void Show1Data(INT16U showdata,INT8U showline,INT8U lrflag,INT8U *Buff)
; {
	.dbline 82
;    INT8U *p;
;    INT8U data[3];
;    INT8U redata[5];
;    INT8U line;
;    INT8U i,j;
;    
;    //数据的格式转换
;    p=(INT8U *)&showdata;
	aix #15
	sthx *__r0
	tsx
	lda *__r0
	sta 1,X
	lda *__r1
	sta 2,X
	.dbline 83
;    data[0]=*p;
	lda 1,X
	ldx 2,X
	psha
	pulh
	lda ,x
	tsx
	sta 3,X
	.dbline 84
;    data[1]=*(p+1);
	lda 2,X
	add #1
	sta *__r1
	lda 1,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta 4,X
	.dbline 85
;    data[2]=0;
	clr 5,X
	.dbline 86
;    NumFormatChange(redata,data);
	aix #3
	pshx
	pshh
	tsx
	aix #9
	pshx
	pshh
	jsr _NumFormatChange
	ais #4
	tsx
	.dbline 88
;    //根据showline和lrflag把转换后的数据放入缓冲区的相应位置
;    if(lrflag==0)
	lda 18,X
	bne L7
	.dbline 89
;      line=(showline-1)*16;
	lda 17,X
	sub #1
	nsa
	and #-16
	sta 6,X
	bra L8
L7:
	.dbline 91
;    else
;      line=(showline-1)*16+9;
	lda 17,X
	sub #1
	nsa
	and #-16
	add #9
	sta 6,X
L8:
	.dbline 92
;    for(i=0;i<5;i++)
	clr 12,X
	bra L12
L9:
	.dbline 93
	aix #7
	sthx *__r0
	tsx
	clr *__r2
	lda 12,X
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r2
	lda 6,X
	sta *__r3
	clr *__r4
	lda 12,X
	add *__r3
	sta *__r3
	lda *__r4
	adc *__r2
	sta *__r2
	lda *__r3
	add 20,X
	sta *__r3
	lda *__r2
	adc 19,X
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
L10:
	.dbline 92
	inc 12,X
L12:
	.dbline 92
	lda 12,X
	cmp #5
	blo L9
	.dbline -2
L4:
	ais #13
	.dbline 0 ; func end
	rts
	.dbsym l j 0 c
	.dbsym l p 1 pc
	.dbsym l data 3 A[3:3]c
	.dbsym l line 6 c
	.dbsym l redata 7 A[5:5]c
	.dbsym l i 12 c
	.dbsym l Buff 19 pc
	.dbsym l lrflag 18 c
	.dbsym l showline 17 c
	.dbsym l showdata 15 i
	.dbend
	.dbfunc e NumFormatChange _NumFormatChange fV
;       IntDataP -> 0,X
;              k -> 2,X
;              j -> 3,X
;              i -> 4,X
;           Data -> 9,X
;            ReP -> 7,X
_NumFormatChange::
	.dbline -1
	ais #-5
	tsx
	.dbline 107
;       Buff[i+line]=redata[i];
; }
; //NumFormatChange:数据格式转换子程序---------------------------------------*
; //功能:将3个字节的压缩BCD码数据转换为5个字节可显示的ASCII码数据            *
; //参数:Data[0--2]三个字节的数据:前两个字节压缩BCD码(00 00 - 99 99)        *
; //                               第三字节为小数点位数(0-2)                 *
; //     ReP[0--4]存放5个字节的转换结果(注意:实际是ASCII码)                  *
; //举例:Data[0--2]:99 88 1  ->ReP[0--4]:9 9 8 . 8                         *
; //     Data[0--2]:00 87 0  ->ReP[0--4]:      8 7                         *
; //     Data[0--2]:02 36 2  ->ReP[0--4]:  2 . 3 6                         *
; //返回:无                                                                  *
; //说明:步骤4表示若有2个及以上空格就将数据居中存放 (ZY 07.04.27)            *
; //-------------------------------------------------------------------------*
; void NumFormatChange(INT8U *ReP,INT8U *Data)
; { 
	.dbline 117
;      INT8U i,j,k;           //循环控制变量
;      INT16U * IntDataP;
; /*     
;      //0.处理汉字显示
;      if(Data[2]>=200)
;        {ReP[0]=' ';ReP[1]=Data[1];ReP[2]=' ';
;         ReP[3]=' ';ReP[4]=' ';goto NumFormatChange_End;}
; */     
;      //1:得到可以显示的数据
;      IntDataP=(INT16U *)Data;
	lda 9,X
	sta ,X
	lda 10,X
	sta 1,X
	.dbline 118
;      ReP[3]=(*IntDataP)%10+'0';
	lda ,X
	ldx 1,X
	psha
	pulh

⌨️ 快捷键说明

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