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

📄 lcd.s

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 114
;   else  y=16;
	lda #16
	sta 7,X
L29:
	.dbline 115
;   if(ln<=1)  Px=0;
	lda 11,X
	cmp #1
	bhi L31
	.dbline 115
	clr 8,X
	bra L32
L31:
	.dbline 116
;   else  Px=8;
	lda #8
	sta 8,X
L32:
	.dbline 118
;   //[确定有无边框(有GrE决定)]
;   if(GrE==1)   //有表框
	lda 12,X
	cmp #1
	bne L33
	.dbline 119
;   	 {TBC=65535;LC=32768;RC=1;}
	.dbline 119
	lda #-1
	sta 4,X
	lda #-1
	sta 5,X
	.dbline 119
	lda #-128
	sta 2,X
	lda #0
	sta 3,X
	.dbline 119
	clra
	sta ,X
	lda #1
	sta 1,X
	.dbline 119
	bra L34
L33:
	.dbline 121
;   else         //无边框
;      {TBC=0;LC=0;RC=0;}
	.dbline 121
	clr 5,X
	clr 4,X
	.dbline 121
	clr 3,X
	clr 2,X
	.dbline 121
	clr 1,X
	clr ,X
	.dbline 121
L34:
	.dbline 122
;   Wtite_Command(0b00110110);//扩展指令,绘图开
	lda #54
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 124
;   //[在Lcd上指定行上显示矩型边框]
;   for(i=0;i<=7;i++,Px++)
	clr 6,X
	bra L38
L35:
	.dbline 125
	.dbline 126
	lda 5,X
	psha
	lda 4,X
	psha
	lda 8,X
	psha
	lda 7,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	.dbline 127
	lda 5,X
	psha
	lda 4,X
	psha
	lda 8,X
	psha
	lda 7,X
	add #15
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	.dbline 128
L36:
	.dbline 124
	inc 6,X
	inc 8,X
L38:
	.dbline 124
	lda 6,X
	cmp #7
	bls L35
	.dbline 129
;      {   
;         LcdShGr16P(y,Px,TBC);    //显示上边框 
;         LcdShGr16P(y+15,Px,TBC); //显示下边框
;      }  
;   for(i=1,y++,Px--;i<=14;i++,y++)
	lda #1
	sta 6,X
	inc 7,X
	dec 8,X
	bra L42
L39:
	.dbline 130
	.dbline 131
	lda 1,X
	psha
	lda ,X
	psha
	lda 8,X
	psha
	lda 7,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	.dbline 132
	lda 3,X
	psha
	lda 2,X
	psha
	lda 8,X
	sub #7
	psha
	lda 7,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
	.dbline 133
L40:
	.dbline 129
	inc 6,X
	inc 7,X
L42:
	.dbline 129
	lda 6,X
	cmp #14
	bls L39
	.dbline 134
;      {
;         LcdShGr16P(y,Px,RC);    //显示右边框 
;         LcdShGr16P(y,Px-7,LC);  //显示左边框      
;      }
;   Wtite_Command(0b00110000);//基本指令
	lda #48
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.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 143
; }
; 
; /*LcdShGrClr:在Lcd上清图形显示屏--------------*
; *功  能:在Lcd上清图形显示屏(清GDRAM)          *
; *参  数:无                                    *
; *返  回:无                                    *
; *--------------------------------------------*/
; void LcdShGrClr(void)
; {  
	.dbline 145
;   unsigned char Px,y;//行页号,列坐标的循环变量
;   Wtite_Command(0b00110110);//扩展指令,绘图开
	lda #54
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 147
;   //[清图形显示屏(清GDRAM)]
;   for(y=0;y<=31;y++)
	clr ,X
	bra L47
L44:
	.dbline 148
;      for(Px=0;Px<=15;Px++)
	clr 1,X
	bra L51
L48:
	.dbline 149
	ldhx #0
	pshx
	pshh
	tsx
	aix #2
	lda 1,X
	psha
	lda ,X
	psha
	jsr _LcdShGr16P
	ais #4
	tsx
L49:
	.dbline 148
	inc 1,X
L51:
	.dbline 148
	lda 1,X
	cmp #15
	bls L48
L45:
	.dbline 147
	inc ,X
L47:
	.dbline 147
	lda ,X
	cmp #31
	bls L44
	.dbline 150
;         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 159
; }
; 
; /*LcdShGr1P:在Lcd的指定位置上画一个点------------------*
; *功  能:在Lcd的指定位置上画一个点                      *
; *参  数:y为纵坐标(0-63),x为横坐标(0-127)              *
; *返  回:无                                             *
; *-----------------------------------------------------*/
; void LcdShGr1P(unsigned char y,unsigned char x)
; {
	.dbline 160
;   unsigned int value=32768;//初始值为0b1000000000000000
	lda #-128
	sta ,X
	lda #0
	sta 1,X
	.dbline 161
;   if(y>=32)                //第三四行必须调整x和y坐标
	lda 4,X
	cmp #32
	blo L53
	.dbline 162
;      {y=y-32;x=x+16*8;}
	.dbline 162
	sub #32
	sta 4,X
	.dbline 162
	lda 5,X
	add #-128
	sta 5,X
	.dbline 162
L53:
	.dbline 163
;   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 164
;   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 173
;  }
; 
; /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示-----------*
; *功  能:在Lcd指定位置上设置线型16个点的显示                *
; *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据   *
; *返  回:无                                                 *
; *---------------------------------------------------------*/
; void LcdShGr16P(unsigned char y,unsigned char Px,int value)
; {
	.dbline 175
;  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
;   Wtite_Command(y|0b10000000);//设置6位绘图列地址
	lda 2,X
	ora #-128
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 176
;   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
	lda 3,X
	ora #-128
	psha
	jsr _Wtite_Command
	ais #1
	tsx
	.dbline 177
;   Wtite_Data((unsigned char)(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 178
;   Wtite_Data((unsigned char)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 189
;  //Wtite_Command(0b00110000); //8位数据,基本指令
; }
; 
; //===========[Lcd基本操作:包括写指令,写数据和延时]===========
; /*Wtite_Command:执行参数中的给定命令-------------------*
; *功  能:执行参数中的给定命令                           *
; *参  数:command为待执行的命令码                        *
; *返  回:无                                             *
; *-----------------------------------------------------*/
; void Wtite_Command(unsigned char command)
; {
	.dbline 190
; 	LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
	bclr #1,0x2
	.dbline 191
; 	LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
	bclr #2,0x2
	.dbline 192
; 	LCD_DataPort=command;        //数据上线
	lda 2,X
	sta 0x1
	.dbline 193
; 	LCD_CtrlPort|=(1<<LCD_E);    //E=1
	bset #3,0x2
	.dbline 194
;     asm("nop");                  //使数据稳定
	nop
	.dbline 195
;     asm("nop");
	nop
	.dbline 196
; 	LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
	bclr #3,0x2
	.dbline 197
; 	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 206
; }
; 
; /*Wtite_Data:将参数中给定的数据写入液晶控制器----------*
; *功  能:将参数中给定的数据写入液晶控制器               *
; *参  数:data为待写入的数据                             *
; *返  回:无                                             *
; *-----------------------------------------------------*/
; void Wtite_Data(unsigned char data)
; {
	.dbline 207
; 	LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
	bset #1,0x2
	.dbline 208
; 	LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
	bclr #2,0x2
	.dbline 209
; 	LCD_DataPort=data;            //数据上线
	lda 2,X
	sta 0x1
	.dbline 210
; 	LCD_CtrlPort|=(1<<LCD_E);     //E=1
	bset #3,0x2
	.dbline 211
;     asm("nop");                   //使数据稳定
	nop
	.dbline 212
;     asm("nop");
	nop
	.dbline 213
; 	LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
	bclr #3,0x2
	.dbline 214
; 	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 223
; }
; 
; /*DelayTimes:延时指定时间---------------*
; *功  能:延时指定的时间                  *
; *入  口:tn为延时时间数(0到65535)        *
; *出  口:无                              *
; *--------------------------------------*/
; void DelayTimes(unsigned int tn)
; {
	.dbline 225
	clr 1,X
	clr ,X
	bra L62
L59:
	.dbline 225
L60:
	.dbline 225
	lda 1,X
	add #1
	sta 1,X
	lda ,X
	adc #0
	sta ,X
L62:
	.dbline 225
;   unsigned int 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

⌨️ 快捷键说明

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