📄 main.lis
字号:
004A 00E8 ldi R16,128
004C 1ED0 xcall _LcdSend
004E .dbline 180
004E ;
004E ; for (i=0; i<504; i++)
004E 4427 clr R20
0050 5527 clr R21
0052 05C0 xjmp L6
0054 L3:
0054 .dbline 181
0054 21E0 ldi R18,1
0056 0027 clr R16
0058 18D0 xcall _LcdSend
005A L4:
005A .dbline 180
005A 4F5F subi R20,255 ; offset = 1
005C 5F4F sbci R21,255
005E L6:
005E .dbline 180
005E 483F cpi R20,248
0060 E1E0 ldi R30,1
0062 5E07 cpc R21,R30
0064 B8F3 brlo L3
0066 .dbline -2
0066 L2:
0066 0E940000 xcall pop_gset1
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r i 20 i
006C .dbend
006C .dbfunc e LcdGotoXY _LcdGotoXY fV
006C ; Y -> R22
006C ; X -> R20
.even
006C _LcdGotoXY::
006C 0E940000 xcall push_gset2
0070 622F mov R22,R18
0072 402F mov R20,R16
0074 .dbline -1
0074 .dbline 191
0074 ; LcdSend(0, 1);
0074 ; }
0074 ;
0074 ; /*--------------------------------------------------------------------------------------------------
0074 ; Name : LcdGotoXY 设置块坐标
0074 ; Description : Sets cursor location to xy location corresponding to basic font size.
0074 ; Argument(s) : x, y -> Coordinate for new cursor position. Range: 1,1 .. 14,6
0074 ; Return value : None.
0074 ; --------------------------------------------------------------------------------------------------*/
0074 ; void LcdGotoXY(unsigned char X, unsigned char Y)
0074 ; {
0074 .dbline 192
0074 ; LcdSend(0x40 | Y, 0); // column
0074 2227 clr R18
0076 062F mov R16,R22
0078 0064 ori R16,64
007A 07D0 xcall _LcdSend
007C .dbline 193
007C ; LcdSend(0x80 | X, 0); // row
007C 2227 clr R18
007E 042F mov R16,R20
0080 0068 ori R16,128
0082 03D0 xcall _LcdSend
0084 .dbline -2
0084 L7:
0084 0E940000 xcall pop_gset2
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym r Y 22 c
008A .dbsym r X 20 c
008A .dbend
008A .dbfunc s LcdSend _LcdSend fV
008A ; command -> R18
008A ; data -> R16
.even
008A _LcdSend:
008A .dbline -1
008A .dbline 204
008A ; }
008A ;
008A ; /*--------------------------------------------------------------------------------------------------
008A ; Name : LcdSend
008A ; Description : Sends data to display controller.
008A ; Argument(s) : data -> Data to be sent
008A ; cd -> Command or data (see/use enum)
008A ; Return value : None.
008A ; --------------------------------------------------------------------------------------------------*/
008A ; static void LcdSend (unsigned char data, unsigned char command)
008A ; {
008A .dbline 205
008A ; PORTB &= ~LCD_CE_PIN ; // 使能LCD
008A C198 cbi 0x18,1
008C .dbline 206
008C ; if (command == 0)
008C 2223 tst R18
008E 11F4 brne L9
0090 .dbline 207
0090 ; PORTB &= ~LCD_DC_PIN ; // 传送命令
0090 C298 cbi 0x18,2
0092 01C0 xjmp L10
0094 L9:
0094 .dbline 209
0094 ; else
0094 ; PORTB |= LCD_DC_PIN ; // 传送数据
0094 C29A sbi 0x18,2
0096 L10:
0096 .dbline 211
0096 ;
0096 ; SPDR = data; // 传送数据到SPI寄存器
0096 0FB9 out 0xf,R16
0098 L11:
0098 .dbline 213
0098 L12:
0098 .dbline 213
0098 ;
0098 ; while ((SPSR & 0x80) == 0); // 等待数据传送完毕
0098 779B sbis 0xe,7
009A FECF rjmp L11
009C .dbline 215
009C ;
009C ; PORTB |= LCD_CE_PIN ; // 关闭LCD
009C C19A sbi 0x18,1
009E .dbline -2
009E L8:
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbsym r command 18 c
00A0 .dbsym r data 16 c
00A0 .dbend
00A0 .dbfunc s Delay _Delay fV
00A0 ; i -> R16,R17
.even
00A0 _Delay:
00A0 .dbline -1
00A0 .dbline 225
00A0 ; }
00A0 ;
00A0 ; /*--------------------------------------------------------------------------------------------------
00A0 ; Name : Delay
00A0 ; Description : Uncalibrated delay for LCD init routine.
00A0 ; Argument(s) : None.
00A0 ; Return value : None.
00A0 ; --------------------------------------------------------------------------------------------------*/
00A0 ; static void Delay ( void )
00A0 ; {
00A0 .dbline 227
00A0 00E2 ldi R16,-12000
00A2 11ED ldi R17,-47
00A4 L15:
00A4 .dbline 227
00A4 L16:
00A4 .dbline 227
00A4 ; int i;
00A4 ; for ( i = -12000; i < 12000; i++ );
00A4 0F5F subi R16,255 ; offset = 1
00A6 1F4F sbci R17,255
00A8 .dbline 227
00A8 003E cpi R16,224
00AA EEE2 ldi R30,46
00AC 1E07 cpc R17,R30
00AE D4F3 brlt L15
00B0 .dbline -2
00B0 L14:
00B0 .dbline 0 ; func end
00B0 0895 ret
00B2 .dbsym r i 16 I
00B2 .dbend
00B2 .dbfunc e main _main fV
00B2 ; i -> R20
00B2 ; X -> R22
.even
00B2 _main::
00B2 .dbline -1
00B2 .dbline 238
00B2 ; }
00B2 ;
00B2 ; /*--------------------------------------------------------------------------------------------------
00B2 ; Name : main
00B2 ; Description :
00B2 ; Argument(s) :
00B2 ; Return value : None.
00B2 ; --------------------------------------------------------------------------------------------------*/
00B2 ;
00B2 ; void main(void)
00B2 ; {
00B2 .dbline 239
00B2 ; unsigned char X=0,i=0; //v=0,按行显示,x对应某个bank(0~83)
00B2 6627 clr R22
00B4 .dbline 239
00B4 4427 clr R20
00B6 .dbline 240
00B6 ; LcdInit();
00B6 A4DF xcall _LcdInit
00B8 1BC0 xjmp L21
00BA L20:
00BA .dbline 243
00BA ;
00BA ; while(1)
00BA ; {
00BA .dbline 244
00BA ; LcdGotoXY(X_Init,Y_Init);
00BA 2227 clr R18
00BC 0027 clr R16
00BE D6DF xcall _LcdGotoXY
00C0 .dbline 246
00C0 ; // for(X=0;X<X_Length;X++)LcdSend(X_TAB[X],1);
00C0 ; for(i=0;i<100;i++)
00C0 4427 clr R20
00C2 14C0 xjmp L26
00C4 L23:
00C4 .dbline 247
00C4 ; {
00C4 .dbline 248
00C4 ; for(X=0;X<5;X++)
00C4 6627 clr R22
00C6 0FC0 xjmp L30
00C8 L27:
00C8 .dbline 249
00C8 .dbline 250
00C8 21E0 ldi R18,1
00CA 85E0 ldi R24,5
00CC 849F mul R24,R20
00CE 1001 movw R2,R0
00D0 80E0 ldi R24,<_FontLookup
00D2 90E0 ldi R25,>_FontLookup
00D4 280E add R2,R24
00D6 391E adc R3,R25
00D8 E62F mov R30,R22
00DA FF27 clr R31
00DC E20D add R30,R2
00DE F31D adc R31,R3
00E0 0491 lpm R16,Z
00E2 D3DF xcall _LcdSend
00E4 .dbline 251
00E4 L28:
00E4 .dbline 248
00E4 6395 inc R22
00E6 L30:
00E6 .dbline 248
00E6 6530 cpi R22,5
00E8 78F3 brlo L27
00EA .dbline 252
00EA L24:
00EA .dbline 246
00EA 4395 inc R20
00EC L26:
00EC .dbline 246
00EC 4436 cpi R20,100
00EE 50F3 brlo L23
00F0 .dbline 253
00F0 L21:
00F0 .dbline 242
00F0 E4CF xjmp L20
00F2 X0:
00F2 .dbline -2
00F2 L19:
00F2 .dbline 0 ; func end
00F2 0895 ret
00F4 .dbsym r i 20 c
00F4 .dbsym r X 22 c
00F4 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -