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

📄 lcd.s

📁 ICC LCD波形显示子程序,采用MEGA128单片机
💻 S
📖 第 1 页 / 共 5 页
字号:
	ldd R17,y+12
	cp R0,R16
	cpc R1,R17
	brsh L53
	.dbline 171
; 		{x=x1;x1=x2;x2=x;}
	.dbline 171
	movw R12,R16
	.dbline 171
	std y+12,R1
	std y+11,R0
	.dbline 171
	std y+16,R13
	std y+15,R12
	.dbline 171
L53:
	.dbline 172
	ldd R12,y+11
	ldd R13,y+12
	xjmp L58
L55:
	.dbline 172
	ldi R24,1
	std y+0,R24
	mov R18,R14
	mov R16,R12
	push R6
	push R7
	xcall _draw_point
	pop R7
	pop R6
L56:
	.dbline 172
	movw R24,R12
	adiw R24,1
	movw R12,R24
L58:
	.dbline 172
;         for ( x=x1;x<=x2;x++ )  draw_point(x,y,1);
	ldd R0,y+15
	ldd R1,y+16
	cp R0,R12
	cpc R1,R13
	brsh L55
	.dbline 173
;         }
	xjmp L52
L51:
	.dbline 175
;     else
;         {
	.dbline 176
;     if(x2>=x1){temp=1;d_x=x2-x1;}
	ldd R0,y+15
	ldd R1,y+16
	ldd R16,y+11
	ldd R17,y+12
	cp R0,R16
	cpc R1,R17
	brlo L59
	.dbline 176
	.dbline 176
	ldi R20,1
	.dbline 176
	movw R22,R0
	movw R0,R16
	sub R22,R16
	sbc R23,R17
	.dbline 176
	xjmp L60
L59:
	.dbline 177
; 	else d_x=x1-x2;
	ldd R22,y+11
	ldd R23,y+12
	ldd R0,y+15
	ldd R1,y+16
	sub R22,R0
	sbc R23,R1
L60:
	.dbline 178
;     x=x1;y=y1; draw_point(x,y,1);
	ldd R12,y+11
	ldd R13,y+12
	.dbline 178
	ldd R14,y+13
	ldd R15,y+14
	.dbline 178
	ldi R24,1
	std y+0,R24
	mov R18,R14
	mov R16,R12
	push R6
	push R7
	xcall _draw_point
	pop R7
	pop R6
	.dbline 179
;     if(temp&&(d_y<=d_x))
	tst R20
	brne X2
	xjmp L61
X2:
	cp R22,R10
	cpc R23,R11
	brsh X3
	xjmp L61
X3:
	xjmp L64
L63:
	.dbline 181
;         while(x!=x2)
;             {if(err<0){x=x+1;err=err+(y2-y);}
	.dbline 181
	movw R24,R6
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L66
	.dbline 181
	.dbline 181
	movw R24,R12
	adiw R24,1
	movw R12,R24
	.dbline 181
	ldd R2,y+17
	ldd R3,y+18
	sub R2,R14
	sbc R3,R15
	add R6,R2
	adc R7,R3
	.dbline 181
	xjmp L67
L66:
	.dbline 182
;             else {x=x+1;y=y+1;err=err+(y2-y)-(x2-x);
	.dbline 182
	movw R24,R12
	adiw R24,1
	movw R12,R24
	.dbline 182
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 182
	ldd R2,y+17
	ldd R3,y+18
	sub R2,R24
	sbc R3,R25
	movw R4,R6
	add R4,R2
	adc R5,R3
	ldd R2,y+15
	ldd R3,y+16
	sub R2,R12
	sbc R3,R13
	sub R4,R2
	sbc R5,R3
	movw R6,R4
	.dbline 183
; 			  }
L67:
	.dbline 184
	ldi R24,1
	std y+0,R24
	mov R18,R14
	mov R16,R12
	push R6
	push R7
	xcall _draw_point
	pop R7
	pop R6
	.dbline 185
L64:
	.dbline 180
	ldd R0,y+15
	ldd R1,y+16
	cp R12,R0
	cpc R13,R1
	brne L63
	xjmp L62
L61:
	.dbline 186
;              draw_point(x,y,1);
;             }
;     else if(temp&&(d_y>d_x))
	tst R20
	brne X4
	xjmp L68
X4:
	cp R22,R10
	cpc R23,R11
	brsh L68
	xjmp L71
L70:
	.dbline 188
;         while(y!=y2)
;             {d_x=x2-x;d_y=y2-y; 
	.dbline 188
	ldd R22,y+15
	ldd R23,y+16
	sub R22,R12
	sbc R23,R13
	.dbline 188
	ldd R10,y+17
	ldd R11,y+18
	sub R10,R14
	sbc R11,R15
	.dbline 189
;             if(err<0){x=x+1;y=y+1;err=err+d_y-d_x;}
	movw R24,R6
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L73
	.dbline 189
	.dbline 189
	movw R24,R12
	adiw R24,1
	movw R12,R24
	.dbline 189
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 189
	movw R2,R6
	add R2,R10
	adc R3,R11
	sub R2,R22
	sbc R3,R23
	movw R6,R2
	.dbline 189
	xjmp L74
L73:
	.dbline 190
;             else {y=y+1;err=err-d_x;}
	.dbline 190
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 190
	sub R6,R22
	sbc R7,R23
	.dbline 190
L74:
	.dbline 191
	ldi R24,1
	std y+0,R24
	mov R18,R14
	mov R16,R12
	push R6
	push R7
	xcall _draw_point
	pop R7
	pop R6
	.dbline 192
L71:
	.dbline 187
	ldd R0,y+17
	ldd R1,y+18
	cp R14,R0
	cpc R15,R1
	brne L70
	xjmp L69
L68:
	.dbline 193
;              draw_point(x,y,1);
;             }
;     else if(!temp&&(d_y<=d_x))
	tst R20
	breq X5
	xjmp L75
X5:
	cp R22,R10
	cpc R23,R11
	brsh X6
	xjmp L75
X6:
	xjmp L78
L77:
	.dbline 195
;         while(x!=x2)
;             {d_x=x-x2;d_y=y2-y; 
	.dbline 195
	movw R22,R12
	ldd R0,y+15
	ldd R1,y+16
	sub R22,R0
	sbc R23,R1
	.dbline 195
	ldd R10,y+17
	ldd R11,y+18
	sub R10,R14
	sbc R11,R15
	.dbline 196
;             if(err<0){x=x-1;err=err+d_y;}
	movw R24,R6
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L80
	.dbline 196
	.dbline 196
	movw R24,R12
	sbiw R24,1
	movw R12,R24
	.dbline 196
	add R6,R10
	adc R7,R11
	.dbline 196
	xjmp L81
L80:
	.dbline 197
;             else {x=x-1;y=y+1;err=err+d_y-d_x;}
	.dbline 197
	movw R24,R12
	sbiw R24,1
	movw R12,R24
	.dbline 197
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 197
	movw R2,R6
	add R2,R10
	adc R3,R11
	sub R2,R22
	sbc R3,R23
	movw R6,R2
	.dbline 197
L81:
	.dbline 198
	ldi R24,1
	std y+0,R24
	mov R18,R14
	mov R16,R12
	push R6
	push R7
	xcall _draw_point
	pop R7
	pop R6
	.dbline 199
L78:
	.dbline 194
	ldd R0,y+15
	ldd R1,y+16
	cp R12,R0
	cpc R13,R1
	brne L77
	xjmp L76
L75:
	.dbline 200
;             draw_point(x,y,1);
;             }
;     else if(!temp &&(d_y>d_x))
	tst R20
	breq X7
	xjmp L82
X7:
	cp R22,R10
	cpc R23,R11
	brsh L82
	xjmp L85
L84:
	.dbline 202
;         while(y!=y2)
;             {d_x=x-x2;d_y=y2-y; 
	.dbline 202
	movw R22,R12
	ldd R0,y+15
	ldd R1,y+16
	sub R22,R0
	sbc R23,R1
	.dbline 202
	ldd R10,y+17
	ldd R11,y+18
	sub R10,R14
	sbc R11,R15
	.dbline 203
;             if(err<0){x=x-1;y=y+1;err=err+d_y-d_x;}
	movw R24,R6
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge L87
	.dbline 203
	.dbline 203
	movw R24,R12
	sbiw R24,1
	movw R12,R24
	.dbline 203
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 203
	movw R2,R6
	add R2,R10
	adc R3,R11
	sub R2,R22
	sbc R3,R23
	movw R6,R2
	.dbline 203
	xjmp L88
L87:
	.dbline 204
;             else {y=y+1;err=err-d_x;}
	.dbline 204
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 204
	sub R6,R22
	sbc R7,R23
	.dbline 204
L88:
	.dbline 205
	ldi R24,1
	std y+0,R24
	mov R18,R14
	mov R16,R12
	push R6
	push R7
	xcall _draw_point
	pop R7
	pop R6
	.dbline 206
L85:
	.dbline 201
	ldd R0,y+17
	ldd R1,y+18
	cp R14,R0
	cpc R15,R1
	brne L84
L82:
L76:
L69:
L62:
	.dbline 207
L52:
	.dbline -2
L48:
	adiw R28,1
	xcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r d_x 22 i
	.dbsym r d_y 10 i
	.dbsym r err 6 I
	.dbsym r y 14 i
	.dbsym r x 12 i
	.dbsym l y2 17 i
	.dbsym l x2 15 i
	.dbsym l y1 13 i
	.dbsym l x1 11 i
	.dbend
	.dbfunc e lcm_init _lcm_init fV
	.even
_lcm_init::
	.dbline -1
	.dbline 217
;             draw_point(x,y,1);
;             }
;         }    
;  }
;                           
; /***********************************************/
; /*液晶初始化程序
; 输入数据:无
; 输出:无
; 修改时间:2007-5-26
; /**********************************************/	  	    	   
; void lcm_init(void)
;      {
	.dbline 218
; 	  wr_com(0x30);
	ldi R16,48
	xcall _wr_com
	.dbline 219
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 220
; 	  wr_com(0x30);
	ldi R16,48
	xcall _wr_com
	.dbline 221
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 222
; 	  wr_com(0x0c);
	ldi R16,12
	xcall _wr_com
	.dbline 223
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 224
; 	  wr_com(0x01);
	ldi R16,1
	xcall _wr_com
	.dbline 225
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 226
; 	  wr_com(0x60);
	ldi R16,96
	xcall _wr_com
	.dbline 227
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 228
; 	  clear_all();
	xcall _clear_all
	.dbline -2
L89:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e clear_all _clear_all fV
	.even
_clear_all::
	.dbline -1
	.dbline 231
; 	  }
; void clear_all(void)
;      {
	.dbline 232
; 	  wr_com(0x01);//清屏
	ldi R16,1
	xcall _wr_com
	.dbline 233
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 234
; 	  wr_com(0x34);//清屏
	ldi R16,52
	xcall _wr_com
	.dbline 235
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline 236
; 	  wr_com(0x30);//清屏
	ldi R16,48
	xcall _wr_com
	.dbline 237
; 	  delay(80);
	ldi R16,80
	ldi R17,0
	xcall _delay
	.dbline -2
L90:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e display _display fV
	.even
_display::
	.dbline -1
	.dbline 241
; 	  }
; //*******************整行显示******************/
; void display(void)
;      {
	.dbline 242
; 	  wr_com(0x80);
	ldi R16,128
	xcall _wr_com
	xjmp L93
L92:
	.dbline 244
	.dbline 245
	lds R30,_line1
	lds R31,_line1+1
	ldd R16,z+0
	xcall _wr_date
	.dbline 246
	lds R24,_line1
	lds R25,_line1+1
	adiw R24,1
	sts _line1+1,R25
	sts _line1,R24
	.dbline 247
L93:
	.dbline 243
; 	  while(*line1!=0x00)
	lds R30,_line1
	lds R31,_line1+1
	ldd R2,z+0
	tst R2
	brne L92
	.dbline 248
; 	       {
; 		    wr_date(*line1);
; 			line1++;
; 		    }
; 	 wr_com(0x90);
	ldi R16,144
	xcall _wr_com
	xjmp L96
L95:
	.dbline 250
	.dbline 251
	lds R30,_line2
	lds R31,_line2+1
	ldd R16,z+0
	xcall _wr_date
	.dbline 252
	lds R24,_line2
	lds R25,_line2+1
	adiw R24,1
	sts _line2+1,R25
	sts _line2,R24
	.dbline 253
L96:
	.dbline 249
; 	 while(*line2!=0x00)
	lds R30,_line2
	lds R31,_line2+1
	ldd R2,z+0
	tst R2
	brne L95
	.dbline 254
; 	       {
; 		    wr_date(*line2);
; 			line2++;
; 		    }
; 	 wr_com(0x88);
	ldi R16,136
	xcall _wr_com
	xjmp L99
L98:
	.dbline 256
	.dbline 257
	lds R30,_line3
	lds R31,_line3+1
	ldd R16,z+0
	xcall _wr_date
	.dbline 258
	lds R24,_line3
	lds R25,_line3+1
	adiw R24,1
	sts _line3+1,R25
	sts _line3,R24
	.dbline 259
L99:
	.dbline 255
; 	 while(*line3!=0x00)
	lds R30,_line3
	lds R31,_line3+1
	ldd R2,z+0
	tst R2
	brne L98
	.dbline 260
; 	       {
; 		    wr_date(*line3);
; 			line3++;
; 		    }  	
; 	 wr_com(0x9d);
	ldi R16,157
	xcall _wr_com
	xjmp L102
L101:
	.dbline 262
	.dbline 263
	lds R30,_line4
	lds R31,_line4+1
	ldd R16,z+0
	xcall _wr_date
	.dbline 264
	lds R24,_line4
	lds R25,_line4+1
	adiw R24,1
	sts _line4+1,R25
	sts _line4,R24
	.dbline 265
L102:
	.dbline 261
	lds R30,_line4
	lds R31,_line4+1
	ldd R2,z+0
	clr R3
	mov R24,R2
	cpi R24,0
	brlo L104
	ldi R24,60
	cp R24,R2
	brsh L101
L104:
	.dbline -2
L91:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e system_init _system_init fV
	.even
_system_init::
	.dbline -1
	.dbline 270
; 	 while(*line4>=0&&*line4<=60)
; 	       {
; 		    wr_date(*line4);
; 			line4++;
; 		    }  									
; 	 }
; 
; /************************系统初始化start*****************/	
; void system_init(void)
;      {
	.dbline 271
; 	  line1="";
	ldi R24,<L106
	ldi R25,>L106
	sts _line1+1,R25
	sts _line1,R24
	.dbline 272
; 	  line2="";
	sts _line2+1,R25
	sts _line2,R24
	.dbline 273
; 	  line3="";
	sts _line3+1,R25
	sts _line3,R24
	.dbline 274
; 	  line4="";
	ldi R24,<L106
	ldi R25,>L106
	sts _line4+1,R25
	sts _line4,R24
	.dbline 275
; 	  lcm_init();
	xcall _lcm_init
	.dbline -2
L105:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\icc_work\LCD波形显示\Lcd.c
_line4::
	.blkb 2
	.dbsym e line4 _line4 pc
_line3::
	.blkb 2
	.dbsym e line3 _line3 pc
_line2::
	.blkb 2
	.dbsym e line2 _line2 pc
_line1::
	.blkb 2
	.dbsym e line1 _line1 pc
	.area data(ram, con, rel)
	.dbfile D:\icc_work\LCD波形显示\Lcd.c
L106:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\icc_work\LCD波形显示\Lcd.c

⌨️ 快捷键说明

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