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

📄 lcd12864.s

📁 hao da jia lai fen xiang
💻 S
📖 第 1 页 / 共 2 页
字号:
; /******************************************************************************/
; void lcd_clear_range(uchar range)
; {
	.dbline 191
	ldi R20,8
	xjmp L46
L43:
	.dbline 191
	.dbline 192
	mov R16,R22
	subi R16,72    ; addi 184
	xcall _wcodeL
	mov R16,R20
	subi R16,192    ; addi 64
	xcall _wcodeL
	.dbline 193
	clr R16
	xcall _wdataL
	.dbline 194
L44:
	.dbline 191
	inc R20
L46:
	.dbline 191
; 	uchar x;
; 	for(x=8;x<64;x++){
	cpi R20,64
	brlo L43
	.dbline -2
L42:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbsym r range 22 c
	.dbend
	.dbfunc e lcd_clear_left _lcd_clear_left fV
;              x -> R20
;              y -> R22
	.even
_lcd_clear_left::
	xcall push_gset2
	.dbline -1
	.dbline 198
; 		addressL(range,x);
; 		wdataL(0);
; 	}
; }
; /******************************************************************************/
; void lcd_clear_left(void)
; {
	.dbline 200
	clr R20
	xjmp L51
L48:
	.dbline 200
; 	uchar x,y;
; 	for(x=0;x<8;x++){
	.dbline 201
	clr R22
	xjmp L55
L52:
	.dbline 201
	.dbline 202
	mov R16,R20
	subi R16,72    ; addi 184
	xcall _wcodeL
	mov R16,R22
	subi R16,192    ; addi 64
	xcall _wcodeL
	.dbline 203
	clr R16
	xcall _wdataL
	.dbline 204
L53:
	.dbline 201
	inc R22
L55:
	.dbline 201
	cpi R22,64
	brlo L52
	.dbline 205
L49:
	.dbline 200
	inc R20
L51:
	.dbline 200
	cpi R20,8
	brlo L48
	.dbline -2
L47:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbsym r y 22 c
	.dbend
	.dbfunc e lcd_print _lcd_print fV
;       lcd_data -> y+4
;              y -> R20
;              x -> R22
	.even
_lcd_print::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 209
; 		for(y=0;y<64;y++){
; 			addressL(x,y);
; 			wdataL(0);
; 		}
; 	}
; }
; /******************************************************************************/
; void lcd_print(uchar x,uchar y,uchar lcd_data)
; {
	.dbline 210
; 	if(x > 7){
	ldi R24,7
	cp R24,R22
	brsh L57
	.dbline 210
	.dbline 211
; 		x -= 7;
	subi R22,7
	.dbline 212
; 	}
L57:
	.dbline 213
; 	if(y > 63){
	ldi R24,63
	cp R24,R20
	brsh L59
	.dbline 213
	.dbline 214
; 		y -= 64;
	subi R20,64
	.dbline 215
; 		addressL(x,y);
	mov R16,R22
	subi R16,72    ; addi 184
	xcall _wcodeL
	mov R16,R20
	subi R16,192    ; addi 64
	xcall _wcodeL
	.dbline 216
; 		wdataL(lcd_data);
	ldd R16,y+4
	xcall _wdataL
	.dbline 217
	xjmp L60
L59:
	.dbline 217
	.dbline 218
	mov R16,R22
	subi R16,72    ; addi 184
	xcall _wcodeR
	mov R16,R20
	subi R16,192    ; addi 64
	xcall _wcodeR
	.dbline 219
	ldd R16,y+4
	xcall _wdataR
	.dbline 220
L60:
	.dbline -2
L56:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l lcd_data 4 c
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e lcd_print88 _lcd_print88 fV
;              i -> R20
;       lcd_char -> R22,R23
;              y -> R10
;              x -> R12
	.even
_lcd_print88::
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	sbiw R28,1
	ldd R22,y+9
	ldd R23,y+10
	.dbline -1
	.dbline 224
; 	}else {
; 		addressR(x,y);
; 		wdataR(lcd_data);
; 	}
; }
; /******************************************************************************/
; void lcd_print88(uchar x,uchar y,const uchar *lcd_char)//显示8*8字符
; {
	.dbline 226
	clr R20
	xjmp L65
L62:
	.dbline 226
	.dbline 227
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	lpm R30,Z
	std y+0,R30
	mov R2,R10
	mov R24,R2
	subi R24,255    ; addi 1
	mov R10,R24
	mov R18,R2
	mov R16,R12
	xcall _lcd_print
	.dbline 228
L63:
	.dbline 226
	inc R20
L65:
	.dbline 226
; 	uchar i;
; 	for(i=0;i<8;i++){
	cpi R20,8
	brlo L62
	.dbline -2
L61:
	adiw R28,1
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r lcd_char 22 pkc
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e lcd_print1616 _lcd_print1616 fV
;              i -> R20
;              j -> R14
;       lcd_char -> R10,R11
;              y -> R12
;              x -> R22
	.even
_lcd_print1616::
	xcall push_gset5
	mov R12,R18
	mov R22,R16
	sbiw R28,1
	ldd R10,y+11
	ldd R11,y+12
	.dbline -1
	.dbline 232
; 		lcd_print(x,y++,*lcd_char++);
; 	}
; }
; /******************************************************************************/
; void lcd_print1616(uchar x,uchar y,const uchar *lcd_char)//显示16*16的汉字
; {
	.dbline 234
	clr R20
	xjmp L70
L67:
	.dbline 234
; 	uchar i,j;
; 	for(i=0;i<2;i++){
	.dbline 235
	clr R14
	xjmp L74
L71:
	.dbline 235
	.dbline 236
	movw R2,R10
	movw R24,R2
	adiw R24,1
	movw R10,R24
	movw R30,R2
	lpm R30,Z
	std y+0,R30
	mov R18,R12
	add R18,R14
	mov R16,R22
	xcall _lcd_print
	.dbline 237
L72:
	.dbline 235
	inc R14
L74:
	.dbline 235
	mov R24,R14
	cpi R24,16
	brlo L71
	.dbline 238
	inc R22
	.dbline 239
L68:
	.dbline 234
	inc R20
L70:
	.dbline 234
	cpi R20,2
	brlo L67
	.dbline -2
L66:
	adiw R28,1
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 14 c
	.dbsym r lcd_char 10 pkc
	.dbsym r y 12 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e lcd_print816 _lcd_print816 fV
;              i -> R20
;              j -> R14
;       lcd_char -> R10,R11
;              y -> R12
;              x -> R22
	.even
_lcd_print816::
	xcall push_gset5
	mov R12,R18
	mov R22,R16
	sbiw R28,1
	ldd R10,y+11
	ldd R11,y+12
	.dbline -1
	.dbline 243
; 		for(j=0;j<16;j++){
; 			lcd_print(x,y+j,*lcd_char++);
; 		}
; 		x++;
; 	}
; }
; /******************************************************************************/
; void lcd_print816(uchar x,uchar y,const uchar *lcd_char)
; {
	.dbline 245
	clr R20
	xjmp L79
L76:
	.dbline 245
; 	uchar i,j;
; 	for(i=0;i<2;i++){
	.dbline 246
	clr R14
	xjmp L83
L80:
	.dbline 246
	.dbline 247
	movw R2,R10
	movw R24,R2
	adiw R24,1
	movw R10,R24
	movw R30,R2
	lpm R30,Z
	std y+0,R30
	mov R18,R12
	add R18,R14
	mov R16,R22
	xcall _lcd_print
	.dbline 248
L81:
	.dbline 246
	inc R14
L83:
	.dbline 246
	mov R24,R14
	cpi R24,8
	brlo L80
	.dbline 249
	inc R22
	.dbline 250
L77:
	.dbline 245
	inc R20
L79:
	.dbline 245
	cpi R20,2
	brlo L76
	.dbline -2
L75:
	adiw R28,1
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 14 c
	.dbsym r lcd_char 10 pkc
	.dbsym r y 12 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e lcd_reverse816 _lcd_reverse816 fV
;              i -> R20
;              j -> R14
;       lcd_char -> R10,R11
;              y -> R12
;              x -> R22
	.even
_lcd_reverse816::
	xcall push_gset5
	mov R12,R18
	mov R22,R16
	sbiw R28,1
	ldd R10,y+11
	ldd R11,y+12
	.dbline -1
	.dbline 254
; 		for(j=0;j<8;j++){
; 			lcd_print(x,y+j,*lcd_char++);
; 		}
; 		x++;
; 	}
; }
; /******************************************************************************/
; void lcd_reverse816(uchar x,uchar y,const uchar *lcd_char)//显示8*16字符
; {
	.dbline 256
	clr R20
	xjmp L88
L85:
	.dbline 256
; 	uchar i,j;
; 	for(i=0;i<2;i++){
	.dbline 257
	clr R14
	xjmp L92
L89:
	.dbline 257
	.dbline 258
	movw R2,R10
	movw R24,R2
	adiw R24,1
	movw R10,R24
	movw R30,R2
	lpm R30,Z
	com R30
	std y+0,R30
	mov R18,R12
	add R18,R14
	mov R16,R22
	xcall _lcd_print
	.dbline 259
L90:
	.dbline 257
	inc R14
L92:
	.dbline 257
	mov R24,R14
	cpi R24,8
	brlo L89
	.dbline 260
	inc R22
	.dbline 261
L86:
	.dbline 256
	inc R20
L88:
	.dbline 256
	cpi R20,2
	brlo L85
	.dbline -2
L84:
	adiw R28,1
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 14 c
	.dbsym r lcd_char 10 pkc
	.dbsym r y 12 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e lcd_delay _lcd_delay fV
;              i -> R16
	.even
_lcd_delay::
	.dbline -1
	.dbline 265
; 		for(j=0;j<8;j++){
; 			lcd_print(x,y+j,~*lcd_char++);
; 		}
; 		x++;
; 	}
; }
; /******************************************************************************/
; void lcd_delay(void)
; {
	.dbline 266
;   uchar i = DELAY_COUNT;
	ldi R16,50
L94:
	.dbline 267
L95:
	.dbline 267
;   while(i--);
	mov R2,R16
	clr R3
	subi R16,1
	tst R2
	brne L94
	.dbline -2
L93:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend

⌨️ 快捷键说明

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