📄 lcd.lis
字号:
0048 12D0 xcall _display_lcd
004A .dbline 169
004A ;
004A ; locat_lcd(0,0);
004A 2227 clr R18
004C 0027 clr R16
004E 1CD0 xcall _locat_lcd
0050 .dbline 170
0050 ; for (i=0; i<504; i++)
0050 4427 clr R20
0052 5527 clr R21
0054 05C0 xjmp L6
0056 L3:
0056 .dbline 171
0056 21E0 ldi R18,1
0058 0027 clr R16
005A 09D0 xcall _display_lcd
005C L4:
005C .dbline 170
005C 4F5F subi R20,255 ; offset = 1
005E 5F4F sbci R21,255
0060 L6:
0060 .dbline 170
0060 483F cpi R20,248
0062 E1E0 ldi R30,1
0064 5E07 cpc R21,R30
0066 B8F3 brlo L3
0068 .dbline -2
0068 L2:
0068 0E940000 xcall pop_gset1
006C .dbline 0 ; func end
006C 0895 ret
006E .dbsym r i 20 i
006E .dbend
006E .dbfunc e display_lcd _display_lcd fV
006E ; mode -> R18
006E ; data -> R16
.even
006E _display_lcd::
006E .dbline -1
006E .dbline 176
006E ; display_lcd(0, 1);
006E ; }
006E ; //
006E ; //
006E ; void display_lcd(unsigned char data,unsigned char mode)
006E ; {
006E .dbline 177
006E ; PORTD&=~CE;
006E 9198 cbi 0x12,1
0070 .dbline 178
0070 ; if(mode==0)PORTD&=~DC;
0070 2223 tst R18
0072 11F4 brne L8
0074 .dbline 178
0074 9298 cbi 0x12,2
0076 01C0 xjmp L9
0078 L8:
0078 .dbline 179
0078 ; else PORTD|=DC;
0078 929A sbi 0x12,2
007A L9:
007A .dbline 181
007A ;
007A ; SPDR=data;
007A 0FB9 out 0xf,R16
007C L10:
007C .dbline 182
007C L11:
007C .dbline 182
007C ; while((SPSR&0x80)!=0x80);
007C 8EB1 in R24,0xe
007E 8078 andi R24,128
0080 8038 cpi R24,128
0082 E1F7 brne L10
0084 .dbline 184
0084 ;
0084 ; PORTD|=CE;
0084 919A sbi 0x12,1
0086 .dbline -2
0086 L7:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbsym r mode 18 c
0088 .dbsym r data 16 c
0088 .dbend
0088 .dbfunc e locat_lcd _locat_lcd fV
0088 ; y -> R20
0088 ; x -> R22
.even
0088 _locat_lcd::
0088 0E940000 xcall push_gset2
008C 422F mov R20,R18
008E 602F mov R22,R16
0090 .dbline -1
0090 .dbline 189
0090 ; }
0090 ; //
0090 ; //
0090 ; void locat_lcd(unsigned char x,unsigned char y)
0090 ; {
0090 .dbline 190
0090 ; display_lcd(0x80|x,0); // set initial column
0090 2227 clr R18
0092 062F mov R16,R22
0094 0068 ori R16,128
0096 EBDF xcall _display_lcd
0098 .dbline 191
0098 ; display_lcd(0x40|y,0); // set initial row
0098 2227 clr R18
009A 042F mov R16,R20
009C 0064 ori R16,64
009E E7DF xcall _display_lcd
00A0 .dbline -2
00A0 L13:
00A0 0E940000 xcall pop_gset2
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbsym r y 20 c
00A6 .dbsym r x 22 c
00A6 .dbend
00A6 .dbfunc e PutChar _PutChar fV
00A6 ; i -> R20
00A6 ; ch -> R22
.even
00A6 _PutChar::
00A6 0E940000 xcall push_gset2
00AA 602F mov R22,R16
00AC .dbline -1
00AC .dbline 196
00AC ; }
00AC ; //
00AC ; //
00AC ; void PutChar (unsigned char ch)
00AC ; { unsigned char i;
00AC .dbline 197
00AC ; ch-=32;
00AC 6052 subi R22,32
00AE .dbline 198
00AE ; for(i=0;i<5;i++)
00AE 4427 clr R20
00B0 0FC0 xjmp L18
00B2 L15:
00B2 .dbline 199
00B2 21E0 ldi R18,1
00B4 85E0 ldi R24,5
00B6 869F mul R24,R22
00B8 1001 movw R2,R0
00BA 80E0 ldi R24,<_CharList
00BC 90E0 ldi R25,>_CharList
00BE 280E add R2,R24
00C0 391E adc R3,R25
00C2 E42F mov R30,R20
00C4 FF27 clr R31
00C6 E20D add R30,R2
00C8 F31D adc R31,R3
00CA 0491 lpm R16,Z
00CC D0DF xcall _display_lcd
00CE L16:
00CE .dbline 198
00CE 4395 inc R20
00D0 L18:
00D0 .dbline 198
00D0 4530 cpi R20,5
00D2 78F3 brlo L15
00D4 .dbline -2
00D4 L14:
00D4 0E940000 xcall pop_gset2
00D8 .dbline 0 ; func end
00D8 0895 ret
00DA .dbsym r i 20 c
00DA .dbsym r ch 22 c
00DA .dbend
00DA .dbfunc e LCD _LCD fV
00DA ; data -> R20
.even
00DA _LCD::
00DA 0E940000 xcall push_gset1
00DE 402F mov R20,R16
00E0 .dbline -1
00E0 .dbline 205
00E0 ; display_lcd(CharList[ch][i],1);
00E0 ; }
00E0 ; //
00E0 ; //
00E0 ;
00E0 ; void LCD(unsigned char data)
00E0 ; {
00E0 .dbline 207
00E0 ;
00E0 ; if((X+=10)>=80){Y++;X=1;}
00E0 80910000 lds R24,_X
00E4 865F subi R24,246 ; addi 10
00E6 282E mov R2,R24
00E8 20920000 sts _X,R2
00EC 8035 cpi R24,80
00EE 40F0 brlo L20
00F0 .dbline 207
00F0 .dbline 207
00F0 80910100 lds R24,_Y
00F4 8F5F subi R24,255 ; addi 1
00F6 80930100 sts _Y,R24
00FA .dbline 207
00FA 81E0 ldi R24,1
00FC 80930000 sts _X,R24
0100 .dbline 207
0100 L20:
0100 .dbline 208
0100 ; if(Y>5){Y=0;}
0100 85E0 ldi R24,5
0102 20900100 lds R2,_Y
0106 8215 cp R24,R2
0108 18F4 brsh L22
010A .dbline 208
010A .dbline 208
010A 2224 clr R2
010C 20920100 sts _Y,R2
0110 .dbline 208
0110 L22:
0110 .dbline 209
0110 ; locat_lcd(X,Y);
0110 20910100 lds R18,_Y
0114 00910000 lds R16,_X
0118 B7DF xcall _locat_lcd
011A .dbline 213
011A ;
011A ;
011A ;
011A ; data+=48;
011A 405D subi R20,208 ; addi 48
011C .dbline 214
011C ; if(data>57)data+=7;
011C 89E3 ldi R24,57
011E 8417 cp R24,R20
0120 08F4 brsh L24
0122 .dbline 214
0122 495F subi R20,249 ; addi 7
0124 L24:
0124 .dbline 215
0124 ; PutChar(data);
0124 042F mov R16,R20
0126 BFDF xcall _PutChar
0128 .dbline 216
0128 ; DISLCD();
0128 919A sbi 0x12,1
012A .dbline 217
012A ; EN905();
012A C498 cbi 0x18,4
012C .dbline -2
012C L19:
012C 0E940000 xcall pop_gset1
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbsym r data 20 c
0132 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905\lcd.c
0000 _key:
0000 .blkb 1
0001 .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905/config.h
0001 .dbsym s key _key c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -