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

📄 lcd.s

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline -2
L27:
	ais #9
	.dbline 0 ; func end
	rts
	.dbsym l RC 0 I
	.dbsym l LC 2 I
	.dbsym l TBC 4 I
	.dbsym l i 6 c
	.dbsym l y 7 c
	.dbsym l Px 8 c
	.dbsym l GrE 12 c
	.dbsym l ln 11 c
	.dbend
	.dbfunc e LcdShGrClr _LcdShGrClr fV
;              y -> 0,X
;             Px -> 1,X
_LcdShGrClr::
	.dbline -1
	ais #-2
	tsx
	.dbline 149
; }
; 
; /*LcdShGrClr:在Lcd上清图形显示屏-------------------------------------------*
; *功  能:在Lcd上清图形显示屏(清GDRAM)                                       *
; *参  数:无                                                                 *
; *返  回:无                                                                 *
; *-------------------------------------------------------------------------*/
; void LcdShGrClr(void)
; {  
	.dbline 151
;   INT8U Px,y;               //行页号,列坐标的循环变量
;   Wtite_Command(0b00110110);//扩展指令,绘图开  
	lda #54
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 153
;   //[清图形显示屏(清GDRAM)]
;   for(y=0;y<=31;y++)
	clr ,X
	bra L47
L44:
	.dbline 154
;      for(Px=0;Px<=15;Px++)
	clr 1,X
	bra L51
L48:
	.dbline 155
	ldhx #0
	pshx
	pshh
	tsx
	aix #2
	lda 1,X
	psha
	lda ,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
L49:
	.dbline 154
	inc 1,X
L51:
	.dbline 154
	lda 1,X
	cmp #15
	bls L48
L45:
	.dbline 153
	inc ,X
L47:
	.dbline 153
	lda ,X
	cmp #31
	bls L44
	.dbline 156
;         LcdShGr16P(y,Px,0);  //写入0为清屏
;   Wtite_Command(0b00110000);//基本指令
	lda #48
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline -2
L43:
	ais #2
	.dbline 0 ; func end
	rts
	.dbsym l y 0 c
	.dbsym l Px 1 c
	.dbend
	.dbfunc e LcdShGr1P _LcdShGr1P fV
;          value -> 0,X
;              x -> 5,X
;              y -> 4,X
_LcdShGr1P::
	.dbline -1
	ais #-2
	tsx
	.dbline 165
; }
; 
; /*LcdShGr1P:在Lcd的指定位置上画一个点--------------------------------------*
; *功  能:在Lcd的指定位置上画一个点                                          *
; *参  数:y为纵坐标(0-63),x为横坐标(0-127)                                  *
; *返  回:无                                                                 *
; *-------------------------------------------------------------------------*/
; void LcdShGr1P(INT8U y,INT8U x)
; {
	.dbline 166
;   INT16U value=32768;      //初始值为0b1000000000000000
	lda #-128
	sta ,X
	lda #0
	sta 1,X
	.dbline 167
;   if(y>=32)                //第三四行必须调整x和y坐标
	lda 4,X
	cmp #32
	blo L53
	.dbline 168
;      {y=y-32;x=x+16*8;}
	.dbline 168
	sub #32
	sta 4,X
	.dbline 168
	lda 5,X
	add #-128
	sta 5,X
	.dbline 168
L53:
	.dbline 169
;   value>>=(x-x/16*16);     //写入的16位数据
	clr *__r0
	lda 5,X
	sta *__rlo
	mov *__r0,*__rhi
	lda #16
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	lda #4
X5:
	lsl *__r1
	rol *__r0
	dbnza X5
	clr *__r2
	lda 5,X
	sub *__r1
	sta *__r1
	lda *__r2
	sbc *__r0
	lda *__r1
	and #15
	beq X7
X6:
	lsr ,X
	ror 1,X
	dbnza X6
X7:
	.dbline 170
;   LcdShGr16P(y,x/16,value);//显示相应的点
	lda 1,X
	psha
	lda ,X
	psha
	lda 5,X
	ldx #16
	clrh
	div
	tsx
	aix #2
	psha
	lda 4,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	.dbline -2
L52:
	ais #2
	.dbline 0 ; func end
	rts
	.dbsym l value 0 i
	.dbsym l x 5 c
	.dbsym l y 4 c
	.dbend
	.dbfunc e LcdShGr16P _LcdShGr16P fV
;          value -> 4,X
;             Px -> 3,X
;              y -> 2,X
_LcdShGr16P::
	.dbline -1
	tsx
	.dbline 179
;  }
; 
; /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示---------------------------*
; *功  能:在Lcd指定位置上设置线型16个点的显示                                *
; *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据                   *
; *返  回:无                                                                 *
; *-------------------------------------------------------------------------*/
; void LcdShGr16P(INT8U y,INT8U Px,INT16S value)
; {
	.dbline 181
;  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
;   Wtite_Command(y|0b10000000);//设置6位绘图列地址
	lda 2,X
	ora #-128
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 182
;   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
	lda 3,X
	ora #-128
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 183
;   Wtite_Data((INT8U)(value>>8));//写入高8个字节
	lda 4,X
	sta *__r1
	clr *__r0
	tst *__r1
	bpl X8
	com *__r0
X8:
	lda *__r1
	psha
	jsr _Wtite_Data
	ais #1
	tsx
	.dbline 184
;   Wtite_Data((INT8U)value);     //写入低8个字节
	lda 5,X
	psha
	jsr _Wtite_Data
	ais #1
	tsx
	.dbline -2
L55:
	.dbline 0 ; func end
	rts
	.dbsym l value 4 I
	.dbsym l Px 3 c
	.dbsym l y 2 c
	.dbend
	.dbfunc e Wtite_Command _Wtite_Command fV
;        command -> 2,X
_Wtite_Command::
	.dbline -1
	tsx
	.dbline 195
;  //Wtite_Command(0b00110000); //8位数据,基本指令
; }
; 
; /*===============[Lcd基本操作:包括写指令,写数据和延时]===================*/
; /*Wtite_Command:执行参数中的给定命令---------------------------------------*
; *功  能:执行参数中的给定命令                                               *
; *参  数:command为待执行的命令码                                            *
; *返  回:无                                                                 *
; *-------------------------------------------------------------------------*/
; void Wtite_Command(INT8U command)
; {
	.dbline 196
; 	LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
	bclr #1,0x2
	.dbline 197
; 	LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
	bclr #2,0x2
	.dbline 198
; 	LCD_DataPort=command;        //数据上线
	lda 2,X
	sta 0x1
	.dbline 199
; 	LCD_CtrlPort|=(1<<LCD_E);    //E=1
	bset #3,0x2
	.dbline 200
;     asm("nop");                  //使数据稳定
	nop
	.dbline 201
;     asm("nop");
	nop
	.dbline 202
; 	LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
	bclr #3,0x2
	.dbline 203
; 	delay72us;                   //延时>72us
	ldhx #30
	pshx
	pshh
	jsr _DelayTimes
	ais #2
	tsx
	.dbline -2
L56:
	.dbline 0 ; func end
	rts
	.dbsym l command 2 c
	.dbend
	.dbfunc e Wtite_Data _Wtite_Data fV
;           data -> 2,X
_Wtite_Data::
	.dbline -1
	tsx
	.dbline 212
; }
; 
; /*Wtite_Data:将参数中给定的数据写入液晶控制器------------------------------*
; *功  能:将参数中给定的数据写入液晶控制器                                   *
; *参  数:data为待写入的数据                                                 *
; *返  回:无                                                                 *
; *-------------------------------------------------------------------------*/
; void Wtite_Data(INT8U data)
; {
	.dbline 213
; 	LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
	bset #1,0x2
	.dbline 214
; 	LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
	bclr #2,0x2
	.dbline 215
; 	LCD_DataPort=data;            //数据上线
	lda 2,X
	sta 0x1
	.dbline 216
; 	LCD_CtrlPort|=(1<<LCD_E);     //E=1
	bset #3,0x2
	.dbline 217
;     asm("nop");                   //使数据稳定
	nop
	.dbline 218
;     asm("nop");
	nop
	.dbline 219
; 	LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
	bclr #3,0x2
	.dbline 220
; 	delay72us;                    //延时>72us
	ldhx #30
	pshx
	pshh
	jsr _DelayTimes
	ais #2
	tsx
	.dbline -2
L57:
	.dbline 0 ; func end
	rts
	.dbsym l data 2 c
	.dbend
	.dbfunc e DelayTimes _DelayTimes fV
;              i -> 0,X
;             tn -> 4,X
_DelayTimes::
	.dbline -1
	ais #-2
	tsx
	.dbline 229
; }
; 
; /*DelayTimes:延时指定时间--------------------------------------------------*
; *功  能:延时指定的时间                                                     *
; *入  口:tn为延时时间数(0到65535)                                           *
; *出  口:无                                                                 *
; *-------------------------------------------------------------------------*/
; void DelayTimes(INT16U tn)
; {
	.dbline 231
	clr 1,X
	clr ,X
	bra L62
L59:
	.dbline 231
L60:
	.dbline 231
	lda 1,X
	add #1
	sta 1,X
	lda ,X
	adc #0
	sta ,X
L62:
	.dbline 231
;   INT16U i;    //循环变量
;   for(i=0;i<tn;i++);
	lda 5,X
	sta *__r1
	lda 4,X
	sta *__r0
	lda 1,X
	sta *__r3
	lda ,X
	sta *__r2
	ldhx *__r2
	cphx *__r0
	tsx
	blo L59
	.dbline -2
L58:
	ais #2
	.dbline 0 ; func end
	rts
	.dbsym l i 0 i
	.dbsym l tn 4 i
	.dbend
	.dbfunc e LcdShBigNum _LcdShBigNum fV
;           GBit -> 0,X
;           SBit -> 1,X
;           BBit -> 2,X
;             Yi -> 3,X
;            Num -> 10,X
; BigNumCodeAdrr -> 8,X
;              X -> 7,X
;              Y -> 6,X
_LcdShBigNum::
	.dbline -1
	ais #-4
	tsx
	.dbline 244
; }
; 
; //其他特殊功能函数
; //LcdShBigNum:在Lcd上显示自定义32*16点阵的数字(0--999)---------------------*
; //功  能:在Lcd上显示自定义32*16点阵的数字(0--999)                          *
; //参  数:X表示Lcd上显示字符的横坐标(0--5),Y为显示字符的纵坐标(0--1)        *
; //       BigNumCodeAdrr为32*16点阵数字编码首地址,Num为当前的数据值(0--999) *
; //返  回:无                                                                *
; //内部调用:LcdShGr16P:在Lcd指定位置上设置线型16个点的显示                  *
; //         Wtite_Command:执行参数中的给定命令                              *
; //-------------------------------------------------------------------------*
; void LcdShBigNum(INT8U Y,INT8U X,INT16U * BigNumCodeAdrr,INT16U Num)
; {
	.dbline 247
	lda 6,X
	cmp #1
	bhi L67
	lda 7,X
	cmp #5
	bhi L67
	lda 11,X
	sta *__r1
	lda 10,X
	sta *__r0
	ldhx *__r0
	cphx #999
	tsx
	bls L64
L67:
	.dbline 247
;   INT8U GBit,SBit,BBit;               //存放个位,十位,百位数据 
;   INT8U Yi;                           //Y坐标方向的循环控制变量  
;   if(Y>1||X>5||Num>999) goto LcdShBigNum_End; //参数值范围检测 
	jmp L68
L64:
	.dbline 248
;   GBit=Num%10; BBit=Num/100; SBit=(Num%100)/10;
	lda 11,X
	sta *__rlo
	lda 10,X
	sta *__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16u
	pula
	pula
	sta ,X
	.dbline 248
	lda 11,X
	sta *__rlo
	lda 10,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16u
	ais #2
	mov *__rlo,*__r1
	lda *__r1
	sta 2,X
	.dbline 248
	lda 11,X
	sta *__rlo
	lda 10,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16u
	pula
	sta *__r0
	pula
	sta *__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16u
	ais #2
	mov *__rlo,*__r1
	lda *__r1
	sta 1,X
	.dbline 249
;   Wtite_Command(0b00110110);          //扩展指令,绘图开
	lda #54
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 250
;   if(Y==1) X+=8;                      //参数调整 
	lda 6,X
	cmp #1
	bne L69
	.dbline 250
	lda 7,X
	add #8
	sta 7,X
L69:
	.dbline 251
;   for(Yi=0;Yi<32;Yi++)
	clr 3,X
	jmp L74
L71:
	.dbline 252
;   { 
	.dbline 253
;      if(BBit!=0) LcdShGr16P(Yi,X,*(BigNumCodeAdrr+BBit*32+Yi));
	lda 2,X
	beq L75
	.dbline 253
	clr *__r0
	sta *__r1
	lda #5
X9:
	lsl *__r1
	rol *__r0
	dbnza X9
	lsl *__r1
	rol *__r0
	lda *__r1
	add 9,X
	sta *__r1
	lda *__r0
	adc 8,X
	sta *__r0
	clr *__r2
	lda 3,X
	sta *__r3
	lsl *__r3
	rol *__r2
	lda *__r3
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda 7,X
	psha
	lda 3,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	bra L76
L75:
	.dbline 254
;      else LcdShGr16P(Yi,X,0x0000);
	ldhx #0
	pshx
	pshh
	tsx
	aix #2
	lda 7,X
	psha
	lda 3,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
L76:
	.dbline 256
	lda 1,X
	bne L79
	lda 2,X
	beq L77
L79:
	.dbline 256
;        
;      if((SBit!=0) ||(BBit!=0)) LcdShGr16P(Yi,X+1,*(BigNumCodeAdrr+SBit*32+Yi));
	clr *__r0
	lda 1,X
	sta *__r1
	lda #5
X10:
	lsl *__r1
	rol *__r0
	dbnza X10
	lsl *__r1
	rol *__r0
	lda *__r1
	add 9,X
	sta *__r1
	lda *__r0
	adc 8,X
	sta *__r0
	clr *__r2
	lda 3,X
	sta *__r3
	lsl *__r3
	rol *__r2
	lda *__r3
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda 7,X
	add #1
	psha
	lda 3,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	bra L78
L77:
	.dbline 257
;      else LcdShGr16P(Yi,X,0x0000);
	ldhx #0
	pshx
	pshh
	tsx
	aix #2
	lda 7,X
	psha
	lda 3,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
L78:
	.dbline 258
	clr *__r0
	lda ,X
	sta *__r1
	lda #5
X11:
	lsl *__r1
	rol *__r0
	dbnza X11
	lsl *__r1
	rol *__r0
	lda *__r1
	add 9,X
	sta *__r1
	lda *__r0
	adc 8,X
	sta *__r0
	clr *__r2
	lda 3,X
	sta *__r3
	lsl *__r3
	rol *__r2
	lda *__r3
	add *__r1
	sta *__r1
	lda *__r2
	adc *__r0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda 7,X
	add #2
	psha
	lda 3,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	.dbline 259
L72:
	.dbline 251
	inc 3,X
L74:
	.dbline 251
	lda 3,X
	cmp #32
	bhs X12
	jmp L71
X12:
	.dbline 260
;      LcdShGr16P(Yi,X+2,*(BigNumCodeAdrr+GBit*32+Yi));
;   }
;   Wtite_Command(0b00110000);          //基本指令
	lda #48
	psha
	jsr _Wtite_Command
	ais #1
	tsx
L68:
	.dbline 261
;   LcdShBigNum_End:;
	.dbline -2
L63:
	ais #4
	.dbline 0 ; func end
	rts
	.dbsym l GBit 0 c
	.dbsym l SBit 1 c
	.dbsym l BBit 2 c
	.dbsym l Yi 3 c
	.dbsym l Num 10 i
	.dbsym l BigNumCodeAdrr 8 pi
	.dbsym l X 7 c
	.dbsym l Y 6 c
	.dbend

⌨️ 快捷键说明

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