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

📄 lcd.s

📁 这是用C编的nrf905的通讯程序
💻 S
📖 第 1 页 / 共 2 页
字号:
;     { 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
;     { 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
;     { 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
;     { 0x0C, 0x52, 0x52, 0x52, 0x3E },   // g
;     { 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
;     { 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
;     { 0x20, 0x40, 0x44, 0x3D, 0x00 },   // j
;     { 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
;     { 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
;     { 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
;     { 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
;     { 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
;     { 0x7C, 0x14, 0x14, 0x14, 0x08 },   // p
;     { 0x08, 0x14, 0x14, 0x18, 0x7C },   // q
;     { 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
;     { 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
;     { 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
;     { 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
;     { 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
;     { 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
;     { 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
;     { 0x0C, 0x50, 0x50, 0x50, 0x3C },   // y
;     { 0x44, 0x64, 0x54, 0x4C, 0x44 }    // z
; };
; /*--------------------------------------------------------------------------------------------------
; 		                                  函数原型声明
; --------------------------------------------------------------------------------------------------*/
; void init_lcd       ( void );
; void clear_lcd      ( void );
; void display_lcd    ( unsigned char, unsigned char);
; void locat_lcd      ( unsigned char, unsigned char);
; 
; 
; ////////////////////////////////////////////////////////////////////////////////////////////////////
; ////////////////////////////////////////////////////////////////////////////////////////////////////
; ////////////////////////////////////////////////////////////////////////////////////////////////////
; ////////////////////////////////////////////////////////////////////////////////////////////////////
; 
; void init_lcd(void)
; {
	.dbline 136
;     PORTD|=RST; //RESET LCD
	sbi 0x12,0
	.dbline 137
; 	DIS905();
	sbi 0x18,4
	.dbline 138
; 	ENLCD();
	cbi 0x12,1
	.dbline 139
; 	PORTB&=~RST; //RESETED
	cbi 0x18,0
	.dbline 147
; 
; 
; 
; //SPI SETTINGS
; 
; 
; //DISABLE LCD
;   PORTD|=CE;
	sbi 0x12,1
	.dbline 148
;   display_lcd( 0x21, 0 ); // LCD Extended Commands.
	clr R18
	ldi R16,33
	xcall _display_lcd
	.dbline 149
;   display_lcd( 0xC8, 0 ); // Set LCD Vop (Contrast).
	clr R18
	ldi R16,200
	xcall _display_lcd
	.dbline 150
;   display_lcd( 0x06, 0 ); // Set Temp coefficent.
	clr R18
	ldi R16,6
	xcall _display_lcd
	.dbline 151
;   display_lcd( 0x13, 0 ); // LCD bias mode 1:48.
	clr R18
	ldi R16,19
	xcall _display_lcd
	.dbline 152
;   display_lcd( 0x20, 0 ); // LCD Standard Commands, Horizontal addressing mode.
	clr R18
	ldi R16,32
	xcall _display_lcd
	.dbline 153
;   display_lcd( 0x0C, 0 ); // LCD in normal mode.
	clr R18
	ldi R16,12
	xcall _display_lcd
	.dbline 156
;   
;   
;   clear_lcd();
	xcall _clear_lcd
	.dbline 157
;   locat_lcd(X_Init,Y_Init);
	ldi R18,2
	ldi R16,10
	xcall _locat_lcd
	.dbline 158
;   DISLCD();  
	sbi 0x12,1
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e clear_lcd _clear_lcd fV
;              i -> R20,R21
	.even
_clear_lcd::
	xcall push_gset1
	.dbline -1
	.dbline 163
; }
; //
; //
; void clear_lcd(void)
; {
	.dbline 166
; unsigned int i;
; 
; display_lcd(0x0c, 0); 
	clr R18
	ldi R16,12
	xcall _display_lcd
	.dbline 167
; display_lcd(0x80, 0); 
	clr R18
	ldi R16,128
	xcall _display_lcd
	.dbline 169
; 
; locat_lcd(0,0);
	clr R18
	clr R16
	xcall _locat_lcd
	.dbline 170
; for (i=0; i<504; i++)
	clr R20
	clr R21
	xjmp L6
L3:
	.dbline 171
	ldi R18,1
	clr R16
	xcall _display_lcd
L4:
	.dbline 170
	subi R20,255  ; offset = 1
	sbci R21,255
L6:
	.dbline 170
	cpi R20,248
	ldi R30,1
	cpc R21,R30
	brlo L3
	.dbline -2
L2:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbend
	.dbfunc e display_lcd _display_lcd fV
;           mode -> R18
;           data -> R16
	.even
_display_lcd::
	.dbline -1
	.dbline 176
; display_lcd(0, 1); 
; }
; //
; //
; void display_lcd(unsigned char data,unsigned char mode)
; {
	.dbline 177
; PORTD&=~CE;
	cbi 0x12,1
	.dbline 178
; if(mode==0)PORTD&=~DC;
	tst R18
	brne L8
	.dbline 178
	cbi 0x12,2
	xjmp L9
L8:
	.dbline 179
; else PORTD|=DC;
	sbi 0x12,2
L9:
	.dbline 181
; 
; SPDR=data;
	out 0xf,R16
L10:
	.dbline 182
L11:
	.dbline 182
; while((SPSR&0x80)!=0x80);
	in R24,0xe
	andi R24,128
	cpi R24,128
	brne L10
	.dbline 184
; 
; PORTD|=CE;
	sbi 0x12,1
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r mode 18 c
	.dbsym r data 16 c
	.dbend
	.dbfunc e locat_lcd _locat_lcd fV
;              y -> R20
;              x -> R22
	.even
_locat_lcd::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 189
; }
; //
; //
; void locat_lcd(unsigned char x,unsigned char y)
; {
	.dbline 190
; display_lcd(0x80|x,0); // set initial column
	clr R18
	mov R16,R22
	ori R16,128
	xcall _display_lcd
	.dbline 191
; display_lcd(0x40|y,0); // set initial row
	clr R18
	mov R16,R20
	ori R16,64
	xcall _display_lcd
	.dbline -2
L13:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e PutChar _PutChar fV
;              i -> R20
;             ch -> R22
	.even
_PutChar::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 196
; }
; //
; //
; void PutChar (unsigned char ch)
; {	unsigned char i;
	.dbline 197
; 	ch-=32;
	subi R22,32
	.dbline 198
; 	for(i=0;i<5;i++)
	clr R20
	xjmp L18
L15:
	.dbline 199
	ldi R18,1
	ldi R24,5
	mul R24,R22
	movw R2,R0
	ldi R24,<_CharList
	ldi R25,>_CharList
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	add R30,R2
	adc R31,R3
	lpm R16,Z
	xcall _display_lcd
L16:
	.dbline 198
	inc R20
L18:
	.dbline 198
	cpi R20,5
	brlo L15
	.dbline -2
L14:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r ch 22 c
	.dbend
	.dbfunc e LCD _LCD fV
;           data -> R20
	.even
_LCD::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 205
;     display_lcd(CharList[ch][i],1);
; }
; //
; //
; 
; void LCD(unsigned char data)
; {
	.dbline 207
;     
;     if((X+=10)>=80){Y++;X=1;}
	lds R24,_X
	subi R24,246    ; addi 10
	mov R2,R24
	sts _X,R2
	cpi R24,80
	brlo L20
	.dbline 207
	.dbline 207
	lds R24,_Y
	subi R24,255    ; addi 1
	sts _Y,R24
	.dbline 207
	ldi R24,1
	sts _X,R24
	.dbline 207
L20:
	.dbline 208
; 	if(Y>5){Y=0;}
	ldi R24,5
	lds R2,_Y
	cp R24,R2
	brsh L22
	.dbline 208
	.dbline 208
	clr R2
	sts _Y,R2
	.dbline 208
L22:
	.dbline 209
; 	locat_lcd(X,Y);
	lds R18,_Y
	lds R16,_X
	xcall _locat_lcd
	.dbline 213
; 	
; 	
;     
;     data+=48;
	subi R20,208    ; addi 48
	.dbline 214
; 	if(data>57)data+=7;
	ldi R24,57
	cp R24,R20
	brsh L24
	.dbline 214
	subi R20,249    ; addi 7
L24:
	.dbline 215
;     PutChar(data);
	mov R16,R20
	xcall _PutChar
	.dbline 216
;     DISLCD(); 
	sbi 0x12,1
	.dbline 217
;     EN905(); 
	cbi 0x18,4
	.dbline -2
L19:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905\lcd.c
_key:
	.blkb 1
	.dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905/config.h
	.dbsym s key _key c

⌨️ 快捷键说明

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