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

📄 yj12864.s

📁 AVR单片机开发版资料测试程序里的源程序
💻 S
📖 第 1 页 / 共 3 页
字号:
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,96
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,96
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,96
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 47,255
	.byte 255,255
	.byte 193,248
	.byte 127,191
	.byte 193,227
	.byte 156,0
	.byte 'x,30
	.byte 63,196
	.byte 38,217
	.byte 182,'m
	.byte 128,96
	.byte 51,27
	.byte 'c,49
	.byte 140,0
	.byte 204,51
	.byte 27,'d
	.byte 38,217
	.byte 182,'m
	.byte 128,96
	.byte 30,27
	.byte 'f,49
	.byte 140,1
	.byte 140,'a
	.byte 155,'d
	.byte 39,249
	.byte 254,127
	.byte 128,96
	.byte 12,27
	.byte 'f,1
	.byte 140,1
	.byte 128,'a
	.byte 155,'d
	.byte 39,249
	.byte 254,127
	.byte 128,96
	.byte 30,27
	.byte 'f,1
	.byte 140,1
	.byte 128,'a
	.byte 155,'d
	.byte 35,48
	.byte 204,51
	.byte 28,'l
	.byte 51,27
	.byte 'c,49
	.byte 156,'p
	.byte 204,51
	.byte 27,'d
	.byte 35,48
	.byte 204,51
	.byte 28,'x
	.byte 127,191
	.byte 241,224
	.byte 252,'p
	.byte 'x,30
	.byte 63,244
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 32,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,4
	.byte 63,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,255
	.byte 255,252
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
	.dbsym e GDRAM _GDRAM A[1024:1024]c
	.area data(ram, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
	.area text(rom, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
	.dbfunc e LCD12864_portini _LCD12864_portini fV
	.even
_LCD12864_portini::
	.dbline -1
	.dbline 88
; 返回值  : 无
; /********************************************/
; void LCD12864_portini(void)
; {
	.dbline 89
; 	LCDb_CTRL_DDR |= BIT(LCDb_RS)|BIT(LCDb_RW)|BIT(LCDb_E)|BIT(LCDb_RST);//配置控制管脚为输出
	in R24,0x11
	ori R24,240
	out 0x11,R24
	.dbline 90
; 	LCDb_DATA_DDR |= 0xFF;  //配置数据管脚为输出
	in R24,0x17
	ori R24,255
	out 0x17,R24
	.dbline 91
; 	LCDb_SET_RST;		//不使能复位端
	sbi 0x12,7
	.dbline -2
	.dbline 92
; }
L16:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD12864_readbyte _LCD12864_readbyte fc
;          dByte -> R20
;         DatCmd -> R20
	.even
_LCD12864_readbyte::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 100
; /*******************************************
; 函数名称: LCD12864_readbyte
; 功    能: 从12864液晶读出一个字节数据或者指令
; 参    数: DatCmd--为iDat时是数据,为iCmd时是指令
; 返回值  : dByte--读回的数据或者指令
; /********************************************/
; uchar LCD12864_readbyte(uchar DatCmd)
; {
	.dbline 102
;  	uchar dByte;
; 	if (DatCmd == iCmd)		 //指令操作
	tst R20
	brne L18
	.dbline 103
; 		LCDb_CLR_RS;
	cbi 0x12,4
	xjmp L19
L18:
	.dbline 105
; 	else
; 		LCDb_SET_RS;
	sbi 0x12,4
L19:
	.dbline 107
; 		
; 	LCDb_SET_RW;	   	  	 //读操作
	sbi 0x12,5
	.dbline 108
; 	LCDb_SET_E;
	sbi 0x12,6
	.dbline 109
; 	LCDb_DATA_DDR=0x00;	 //数据总线定义为输入
	clr R2
	out 0x17,R2
	.dbline 110
; 	dByte=LCDb_DI;			 //读数据或者指令
	in R20,0x16
	.dbline 111
; 	Delayms(1);				 //时序调整
	ldi R16,1
	ldi R17,0
	xcall _Delayms
	.dbline 112
; 	LCDb_CLR_E;	
	cbi 0x12,6
	.dbline 113
; 	LCDb_DATA_DDR|=0xff;	 //数据总线还原为输出
	in R24,0x17
	ori R24,255
	out 0x17,R24
	.dbline 114
; 	return dByte;
	mov R16,R20
	.dbline -2
L17:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dByte 20 c
	.dbsym r DatCmd 20 c
	.dbend
	.dbfunc e LCD12864_sendbyte _LCD12864_sendbyte fV
;          dByte -> R20
;         DatCmd -> R22
	.even
_LCD12864_sendbyte::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 124
; }
; /*******************************************
; 函数名称: LCD12864_sendbyte
; 功    能: 向12864液晶写入一个字节数据或者指令
; 参    数: DatCmd--为iDat时是数据,为iCmd时是指令
; 	  	  dByte--为写入12864的数据或者指令
; 返回值  : 无
; /********************************************/
; void LCD12864_sendbyte(uchar DatCmd, uchar dByte)
; {
	.dbline 125
; 	if (DatCmd == iCmd)		//指令操作
	tst R22
	brne L21
	.dbline 126
; 		LCDb_CLR_RS;
	cbi 0x12,4
	xjmp L22
L21:
	.dbline 128
; 	else
; 		LCDb_SET_RS;
	sbi 0x12,4
L22:
	.dbline 130
; 		
; 	LCDb_CLR_RW;			//写操作
	cbi 0x12,5
	.dbline 131
; 	LCDb_SET_E;
	sbi 0x12,6
	.dbline 132
; 	LCDb_DO = dByte;		//写入数据
	out 0x18,R20
	.dbline 133
; 	Delayus(100);
	ldi R16,100
	ldi R17,0
	xcall _Delayus
	.dbline 134
; 	LCDb_CLR_E;	
	cbi 0x12,6
	.dbline -2
	.dbline 135
; }
L20:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r dByte 20 c
	.dbsym r DatCmd 22 c
	.dbend
	.dbfunc e LCD12864_sendstr _LCD12864_sendstr fV
;       ptString -> R20,R21
	.even
_LCD12864_sendstr::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 143
; /*******************************************
; 函数名称: LCD12864_sendstr
; 功    能: 向12864液晶写入一个字符串
; 参    数: ptString--字符串指针
; 返回值  : 无
; /********************************************/
; void LCD12864_sendstr(uchar *ptString)
; {
	xjmp L25
L24:
	.dbline 145
	.dbline 146
	movw R30,R20
	ld R18,Z+
	movw R20,R30
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 147
L25:
	.dbline 144
; 	while((*ptString)!='\0')		 //字符串未结束一直写
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L24
	.dbline -2
	.dbline 148
; 	{
; 		LCD12864_sendbyte(iDat, *ptString++);
; 	}
; }
L23:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ptString 20 pc
	.dbend
	.dbfunc e LCD12864_clear _LCD12864_clear fV
	.even
_LCD12864_clear::
	.dbline -1
	.dbline 156
; /*******************************************
; 函数名称: LCD12864_clear
; 功    能: 12864液晶清屏
; 参    数: 无
; 返回值  : 无
; /********************************************/
; void LCD12864_clear(void)
; {
	.dbline 157
; 	LCD12864_sendbyte(iCmd,LCDb_CLS);
	ldi R18,1
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 158
; 	Delayms(2);// 清屏指令写入后,2ms 的延时是很必要的!!!
	ldi R16,2
	ldi R17,0
	.dbline -2
	.dbline 159
; }
L27:
	.dbline 0 ; func end
	xjmp _Delayms
	.dbend
	.dbfunc e LCD12864_readBF _LCD12864_readBF fc
;           busy -> R20
	.even
_LCD12864_readBF::
	xcall push_gset1
	.dbline -1
	.dbline 167
; /*******************************************
; 函数名称: LCD12864_readBF
; 功    能: 12864液晶清屏
; 参    数: 无
; 返回值  : busy--为1时忙,为0时可以接收指令
; /********************************************/
; uchar LCD12864_readBF(void)
; {	  
	.dbline 169
; 	uchar busy;
; 	busy=LCD12864_readbyte(iCmd);		//读回BF标志和地址
	clr R16
	xcall _LCD12864_readbyte
	mov R20,R16
	.dbline 170
; 	if(busy&0x80)						//如果忙,返回忙状态
	sbrs R16,7
	rjmp L29
	.dbline 171
; 		busy=1;
	ldi R20,1
	xjmp L30
L29:
	.dbline 173
; 	else	   							//不忙,可以写入
; 		busy=0;
	clr R20
L30:
	.dbline 174
; 	return busy;
	mov R16,R20
	.dbline -2
L28:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r busy 20 c
	.dbend
	.dbfunc e LCD12864_gotoXY _LCD12864_gotoXY fV
;            Col -> R20
;            Row -> R22
	.even
_LCD12864_gotoXY::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 184
; }
; /*******************************************
; 函数名称: LCD12864_gotoXY

⌨️ 快捷键说明

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