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

📄 12864.s

📁 数字频率计数字频率计数字频率计数字频率计
💻 S
📖 第 1 页 / 共 2 页
字号:
	.even
_LCD12864_gotoXY::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 127
; }
; /*******************************************
; 函数名称: LCD12864_gotoXY
; 功    能: 移动到指定位置
; 参    数: Row--指定的行
; 	  	  Col--指定的列
; 返回值  : 无
; /********************************************/
; void LCD12864_gotoXY(uchar Row, uchar Col)
; {	
	.dbline 128
; 	switch (Row)		  //选择行
	clr R23
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L34
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L35
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	breq L36
	xjmp L31
X0:
	.dbline 129
; 	{
L34:
	.dbline 131
; 		case 2:
; 			LCD12864_sendbyte(iCmd, LCDb_L2 + Col); break;	//写入第2行的指定列
	mov R18,R20
	subi R18,112    ; addi 144
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 131
	xjmp L32
L35:
	.dbline 133
; 		case 3:
; 			LCD12864_sendbyte(iCmd, LCDb_L3 + Col); break;	//写入第3行的指定列
	mov R18,R20
	subi R18,120    ; addi 136
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 133
	xjmp L32
L36:
	.dbline 135
; 		case 4:
; 			LCD12864_sendbyte(iCmd, LCDb_L4 + Col); break;	//写入第4行的指定列	
	mov R18,R20
	subi R18,104    ; addi 152
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 135
	xjmp L32
L31:
	.dbline 137
	mov R18,R20
	subi R18,128    ; addi 128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 137
L32:
	.dbline -2
L30:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Col 20 c
	.dbsym r Row 22 c
	.dbend
	.dbfunc e LCD12864_initial _LCD12864_initial fV
	.even
_LCD12864_initial::
	.dbline -1
	.dbline 147
; 		default:
; 			LCD12864_sendbyte(iCmd, LCDb_L1 + Col); break;	//写入第1行的指定列	
; 	}
; }
; /*******************************************
; 函数名称: LCD12864_initial
; 功    能: 12864液晶初始化
; 参    数: 无
; 返回值  : 无
; /********************************************/
; void LCD12864_initial(void)
; {
	.dbline 148
; 	Delayms(100);				// 等待内部复位
	ldi R16,100
	ldi R17,0
	xcall _Delayms
	.dbline 149
; 	LCD12864_portini();			//端口初始化
	xcall _LCD12864_portini
	.dbline 151
; 	
; 	LCD12864_sendbyte(iCmd, LCDb_FUNCTION);	//功能、模式设定
	ldi R18,56
	clr R16
	xcall _LCD12864_sendbyte
L38:
	.dbline 152
L39:
	.dbline 152
; 	while(LCD12864_readBF());
	xcall _LCD12864_readBF
	tst R16
	brne L38
	.dbline 153
; 	LCD12864_sendbyte(iCmd, LCDb_ON);		//打开显示
	ldi R18,12
	clr R16
	xcall _LCD12864_sendbyte
L41:
	.dbline 154
L42:
	.dbline 154
; 	while(LCD12864_readBF());
	xcall _LCD12864_readBF
	tst R16
	brne L41
	.dbline 155
; 	LCD12864_clear();						//清屏
	xcall _LCD12864_clear
L44:
	.dbline 156
L45:
	.dbline 156
; 	while(LCD12864_readBF());
	xcall _LCD12864_readBF
	tst R16
	brne L44
	.dbline 157
; 	LCD12864_sendbyte(iCmd, LCDb_ENTRY);	// 输入模式设定		
	ldi R18,6
	clr R16
	xcall _LCD12864_sendbyte
	.dbline -2
L37:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD12864_opGDRAM _LCD12864_opGDRAM fV
;              i -> R20
;              x -> R22,R23
;              j -> R10
;        ptGDRAM -> R12,R13
	.even
_LCD12864_opGDRAM::
	xcall push_gset4
	movw R12,R16
	.dbline -1
	.dbline 166
; }
; /*******************************************
; 函数名称: LCD12864_opGDRAM
; 功    能: 向GDRAM写入数据,并显示(完成绘图功能)
; 参    数: ptGDRAM--GDRAM数据指针
; 返回值  : 无
; /********************************************/
; void LCD12864_opGDRAM(const uchar *ptGDRAM)
; {
	.dbline 168
; 	uchar i,j;
; 	uint x=0;
	clr R22
	clr R23
L48:
	.dbline 169
L49:
	.dbline 169
; 	while(LCD12864_readBF());	  //读忙标志
	xcall _LCD12864_readBF
	tst R16
	brne L48
	.dbline 170
; 	LCD12864_sendbyte(iCmd,LCDb_EXTCMD1);		//扩充指令集,并关闭绘图显示	
	ldi R18,52
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 172
; 	//写入并显示上半屏幕
; 	for(i=0;i<32;i++)            				//行地址计数
	clr R20
	xjmp L54
L51:
	.dbline 173
;      {	  	   	   
	.dbline 174
;            for(j=0;j<8;j++)      				//列地址计数
	clr R10
	xjmp L58
L55:
	.dbline 175
	.dbline 176
	mov R18,R20
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 177
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 178
	mov R18,R10
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 179
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 180
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 181
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 182
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 183
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 184
L56:
	.dbline 174
	inc R10
L58:
	.dbline 174
	mov R24,R10
	cpi R24,8
	brlo L55
	.dbline 185
L52:
	.dbline 172
	inc R20
L54:
	.dbline 172
	cpi R20,32
	brsh X1
	xjmp L51
X1:
	.dbline 187
;            {            		   		 
; 		   		 LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
; 				 Delayus(10);
; 		   		 LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
; 				 Delayus(10);
;                  LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入高位字节数据 
; 				 Delayus(10);                
; 				 LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入低位字节数据
; 				 Delayus(10); 
;            }
;      }
; 	 //写入并显示下半屏幕
; 	 for(i=0;i<32;i++)            
	clr R20
	xjmp L62
L59:
	.dbline 188
;      {	  	   	   
	.dbline 189
;            for(j=8;j<16;j++)      
	ldi R24,8
	mov R10,R24
	xjmp L66
L63:
	.dbline 190
	.dbline 191
	mov R18,R20
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 192
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 193
	mov R18,R10
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 194
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 195
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 196
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 197
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 198
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 199
L64:
	.dbline 189
	inc R10
L66:
	.dbline 189
	mov R24,R10
	cpi R24,16
	brlo L63
	.dbline 200
L60:
	.dbline 187
	inc R20
L62:
	.dbline 187
	cpi R20,32
	brsh X2
	xjmp L59
X2:
	.dbline 201
;            {            
; 		   		 LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
; 				 Delayus(10);
; 		   		 LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
; 				 Delayus(10);
;                  LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入高位字节数据      
; 				 Delayus(10);
; 				 LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入低位字节数据
; 				 Delayus(10); 
;            }
;      }
; 	 Delayus(10);
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 202
; 	 LCD12864_sendbyte(iCmd,LCDb_EXTCMD2);			   //打开绘图显示
	ldi R18,54
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 203
; 	 LCD12864_sendbyte(iCmd,LCDb_BASCMD);			   //还原回基本指令集模式
	ldi R18,48
	clr R16
	xcall _LCD12864_sendbyte
	.dbline -2
L47:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r x 22 i
	.dbsym r j 10 c
	.dbsym r ptGDRAM 12 pkc
	.dbend

⌨️ 快捷键说明

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