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

📄 lcd4bit.s

📁 C语言开发使LCD显示汉字程序,采用自带汉字库的LCD模块.
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L42:
	.dbline 135
L43:
	.dbline 135
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 135
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L42
	.dbline 136
;     LCD4_WR4bits( 0x00);
	clr R16
	xcall _LCD4_WR4bits
	.dbline 137
;     LCD4_WR4bits( 0x02);
	ldi R16,2
	xcall _LCD4_WR4bits
	.dbline 138
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L46:
	.dbline 138
L47:
	.dbline 138
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 138
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L46
	.dbline 139
;     LCD_RS_SET;
	sbi 0x5,7
	.dbline 140
;     waitms(5);
	ldi R16,5
	ldi R17,0
	xcall _waitms
	.dbline -2
	.dbline 141
; }
L41:
	.dbline 0 ; func end
	ret
	.dbfunc s LCD4_Home2 _LCD4_Home2 fI
	.even
_LCD4_Home2::
	.dbline -1
	.dbline 144
; 
; void LCD4_Home2(void)
; {
	.dbline 145
;     LCD_RS_CLR;
	cbi 0x5,7
	.dbline 146
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L51:
	.dbline 146
L52:
	.dbline 146
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 146
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L51
	.dbline 147
;     LCD4_WR4bits( 0x0C);    // Clear Display
	ldi R16,12
	xcall _LCD4_WR4bits
	.dbline 148
;     LCD4_WR4bits( 0x00);
	clr R16
	xcall _LCD4_WR4bits
	.dbline 149
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L55:
	.dbline 149
L56:
	.dbline 149
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 149
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L55
	.dbline 150
;     LCD_RS_SET;
	sbi 0x5,7
	.dbline 151
;     waitms(5);
	ldi R16,5
	ldi R17,0
	xcall _waitms
	.dbline -2
	.dbline 152
; }
L50:
	.dbline 0 ; func end
	ret
	.dbfunc s LCD4_PutC _LCD4_PutC fI
;           data -> R10
	.even
_LCD4_PutC::
	xcall push_gset3x
	mov R10,R16
	.dbline -1
	.dbline 155
; 
; void LCD4_PutC(unsigned char data)
; {
	.dbline 156
;     LCD4_WR4bits( data >> 4);
	mov R16,R10
	lsr R16
	lsr R16
	lsr R16
	lsr R16
	xcall _LCD4_WR4bits
	.dbline 157
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L60:
	.dbline 157
L61:
	.dbline 157
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 157
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L60
	.dbline 158
;     LCD4_WR4bits( data);
	mov R16,R10
	xcall _LCD4_WR4bits
	.dbline 159
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L64:
	.dbline 159
L65:
	.dbline 159
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 159
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L64
	.dbline -2
	.dbline 160
; }
L59:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r data 10 c
	.dbfunc s LCD4_PutC_Const _LCD4_PutC_Const fI
;           data -> R10
	.even
_LCD4_PutC_Const::
	xcall push_gset3x
	mov R10,R16
	.dbline -1
	.dbline 163
; 
; void LCD4_PutC_Const(const unsigned char data)
; {
	.dbline 164
;     LCD4_WR4bits( data >> 4);
	mov R16,R10
	lsr R16
	lsr R16
	lsr R16
	lsr R16
	xcall _LCD4_WR4bits
	.dbline 165
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L69:
	.dbline 165
L70:
	.dbline 165
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 165
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L69
	.dbline 166
;     LCD4_WR4bits( data);
	mov R16,R10
	xcall _LCD4_WR4bits
	.dbline 167
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L73:
	.dbline 167
L74:
	.dbline 167
;     DELAY;
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 167
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L73
	.dbline -2
	.dbline 168
; }
L68:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r data 10 c
	.dbfunc s LCD4_PutS _LCD4_PutS fI
;              c -> R10
;           data -> R12,R13
	.even
_LCD4_PutS::
	xcall push_gset4x
	movw R12,R16
	.dbline -1
	.dbline 171
; 
; void LCD4_PutS(unsigned char *data)
; {
	.dbline 172
;     unsigned char c = 0;
	clr R10
	xjmp L79
L78:
	.dbline 174
; 
;     while (data[c] != 0) {
	.dbline 175
;         LCD4_WR4bits( data[c] >> 4);
	mov R30,R10
	clr R31
	add R30,R12
	adc R31,R13
	ldd R16,z+0
	lsr R16
	lsr R16
	lsr R16
	lsr R16
	xcall _LCD4_WR4bits
	.dbline 176
;         LCD4_WR4bits( data[c++]);
	mov R2,R10
	clr R3
	mov R24,R10
	subi R24,255	; addi 1
	mov R10,R24
	movw R30,R2
	add R30,R12
	adc R31,R13
	ldd R16,z+0
	xcall _LCD4_WR4bits
	.dbline 177
	ldi R16,<L17
	ldi R17,>L17
	xcall lpm32
	sts _del+1,R17
	sts _del,R16
	sts _del+2+1,R19
	sts _del+2,R18
L81:
	.dbline 177
L82:
	.dbline 177
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _del+1,R3
	sts _del,R2
	sts _del+2+1,R5
	sts _del+2,R4
	.dbline 177
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	lds R5,_del+2+1
	lds R4,_del+2
	lds R3,_del+1
	lds R2,_del
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlt L81
	.dbline 178
L79:
	.dbline 174
	mov R30,R10
	clr R31
	add R30,R12
	adc R31,R13
	ldd R2,z+0
	tst R2
	breq X0
	xjmp L78
X0:
	.dbline -2
	.dbline 179
; 		DELAY;
;     }
; }
L77:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r c 10 c
	.dbsym r data 12 pc
	.dbfunc s main _main fI
	.even
_main::
	.dbline -1
	.dbline 181
; void main(void)
; {
	.dbline 182
;  LCD4_Init();
	xcall _LCD4_Init
	.dbline 183
;  LCD4_Clear();
	xcall _LCD4_Clear
	.dbline 184
;  LCD4_Home();
	xcall _LCD4_Home
	.dbline 185
;  LCD4_Home2();
	xcall _LCD4_Home2
	.dbline -2
	.dbline 189
; // LCD4_PutC(unsigned char);
; // LCD4_PutC_Const(const unsigned char);
; // LCD4_PutS(unsigned char *);
; }
L85:
	.dbline 0 ; func end
	ret
	.area bss(ram, con, rel)
	.dbfile D:\我的文档\mingkang\LCDCN\LCD4BIT.C
_del::
	.blkb 4
	.dbsym s del _del L
	.area lit(rom, con, rel)
L19:
	.word 16,0
L18:
	.word 1,0
L17:
	.word 0,0

⌨️ 快捷键说明

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