?? lcd_back.lis
字號:
0150 .dbline 274
0150 ; }
0150 ;
0150 ;
0150 ;
0150 ; //LCD復位
0150 ; void LCD_Reset(void)
0150 ; {
0150 .dbline 275
0150 ; Set_RST(0);
0150 0027 clr R16
0152 84DF xcall _Set_RST
0154 .dbline 276
0154 ; Set_RST(1);
0154 01E0 ldi R16,1
0156 .dbline -2
0156 .dbline 277
0156 ; }
0156 L31:
0156 .dbline 0 ; func end
0156 82CF xjmp _Set_RST
0158 .dbend
0158 .dbfunc e LCD_Clear_Line _LCD_Clear_Line fV
0158 ; i -> R20
0158 ; j -> R10
0158 ; wEndLine -> R22
0158 ; wStartLine -> R10
.even
0158 _LCD_Clear_Line::
0158 0E940000 xcall push_gset3
015C 622F mov R22,R18
015E A02E mov R10,R16
0160 .dbline -1
0160 .dbline 281
0160 ;
0160 ; //LCD清除顯示行
0160 ; void LCD_Clear_Line(INT8U wStartLine,INT8U wEndLine)
0160 ; {
0160 .dbline 283
0160 ; INT8U i,j;
0160 ; for(i = wStartLine;i <= wEndLine;i++)
0160 4A2D mov R20,R10
0162 11C0 xjmp L36
0164 L33:
0164 .dbline 284
0164 ; {
0164 .dbline 285
0164 ; Set_CS1(1);
0164 01E0 ldi R16,1
0166 74DF xcall _Set_CS1
0168 .dbline 286
0168 ; Set_CS2(1);
0168 01E0 ldi R16,1
016A 6CDF xcall _Set_CS2
016C .dbline 287
016C ; LCD_Command_Set_X(i);
016C 042F mov R16,R20
016E A4DF xcall _LCD_Command_Set_X
0170 .dbline 288
0170 ; LCD_Command_Set_Y(0);
0170 0027 clr R16
0172 B5DF xcall _LCD_Command_Set_Y
0174 .dbline 289
0174 ; for(j = 0;j < 64;j++)
0174 AA24 clr R10
0176 03C0 xjmp L40
0178 L37:
0178 .dbline 290
0178 .dbline 291
0178 0027 clr R16
017A C4DF xcall _LCD_Command_WriteByte
017C .dbline 292
017C L38:
017C .dbline 289
017C A394 inc R10
017E L40:
017E .dbline 289
017E 8A2D mov R24,R10
0180 8034 cpi R24,64
0182 D0F3 brlo L37
0184 .dbline 293
0184 L34:
0184 .dbline 283
0184 4395 inc R20
0186 L36:
0186 .dbline 283
0186 6417 cp R22,R20
0188 68F7 brsh L33
018A .dbline -2
018A .dbline 294
018A ; {
018A ; LCD_Command_WriteByte(0x00);
018A ; }
018A ; }
018A ; }
018A L32:
018A 0E940000 xcall pop_gset3
018E .dbline 0 ; func end
018E 0895 ret
0190 .dbsym r i 20 c
0190 .dbsym r j 10 c
0190 .dbsym r wEndLine 22 c
0190 .dbsym r wStartLine 10 c
0190 .dbend
0190 .dbfunc e LCD_Init _LCD_Init fV
.even
0190 _LCD_Init::
0190 .dbline -1
0190 .dbline 298
0190 ;
0190 ; //LCD初始化
0190 ; void LCD_Init(void)
0190 ; {
0190 .dbline 299
0190 ; LCD_Reset();
0190 DFDF xcall _LCD_Reset
0192 .dbline 300
0192 ; LCD_Clear_Line(0,7);
0192 27E0 ldi R18,7
0194 0027 clr R16
0196 E0DF xcall _LCD_Clear_Line
0198 .dbline 301
0198 ; DisplayOnOff(1);
0198 01E0 ldi R16,1
019A 68DF xcall _DisplayOnOff
019C .dbline 302
019C ; SetStartLine(0);
019C 0027 clr R16
019E .dbline -2
019E .dbline 303
019E ; }
019E L41:
019E .dbline 0 ; func end
019E 79CF xjmp _SetStartLine
01A0 .dbend
01A0 .dbfunc e LCD_Write_Char _LCD_Write_Char fV
01A0 ; y_address -> R20
01A0 ; x_address -> R22
01A0 ; i -> R10
01A0 ; disp -> R12,R13
01A0 ; y -> R14
01A0 ; x -> y+11
.even
01A0 _LCD_Write_Char::
01A0 0E940000 xcall push_arg4
01A4 0E940000 xcall push_gset5
01A8 E22E mov R14,R18
01AA 2197 sbiw R28,1
01AC CF84 ldd R12,y+15
01AE D888 ldd R13,y+16
01B0 .dbline -1
01B0 .dbline 309
01B0 ;
01B0 ; //對128*64點陣LCD
01B0 ; //X : 行數 0~3
01B0 ; //Y : 列數 0~15
01B0 ; void LCD_Write_Char(INT8U x,INT8U y,const INT8U *disp)
01B0 ; {
01B0 .dbline 313
01B0 ; INT8U i;
01B0 ; INT8U x_address;
01B0 ; INT8U y_address;
01B0 ; if((x < 4) && (y < 16))
01B0 8B85 ldd R24,y+11
01B2 8430 cpi R24,4
01B4 08F0 brlo X1
01B6 33C0 xjmp L43
01B8 X1:
01B8 8E2D mov R24,R14
01BA 8031 cpi R24,16
01BC 08F0 brlo X2
01BE 2FC0 xjmp L43
01C0 X2:
01C0 .dbline 314
01C0 ; {
01C0 .dbline 315
01C0 ; for(i = 0;i < 8;i++)
01C0 AA24 clr R10
01C2 12C0 xjmp L48
01C4 L45:
01C4 .dbline 316
01C4 .dbline 317
01C4 6B85 ldd R22,y+11
01C6 660F lsl R22
01C8 .dbline 318
01C8 4E2D mov R20,R14
01CA 440F lsl R20
01CC 440F lsl R20
01CE 440F lsl R20
01D0 4A0D add R20,R10
01D2 .dbline 319
01D2 1601 movw R2,R12
01D4 C101 movw R24,R2
01D6 0196 adiw R24,1
01D8 6C01 movw R12,R24
01DA F101 movw R30,R2
01DC E491 lpm R30,Z
01DE E883 std y+0,R30
01E0 242F mov R18,R20
01E2 062F mov R16,R22
01E4 CED0 xcall _LCD_Write_Data
01E6 .dbline 320
01E6 L46:
01E6 .dbline 315
01E6 A394 inc R10
01E8 L48:
01E8 .dbline 315
01E8 8A2D mov R24,R10
01EA 8830 cpi R24,8
01EC 58F3 brlo L45
01EE .dbline 321
01EE ; {
01EE ; x_address = x << 1;
01EE ; y_address = (y << 3) + i;
01EE ; LCD_Write_Data(x_address,y_address,*disp++);
01EE ; }
01EE ; for(i = 0;i < 8;i++)
01EE AA24 clr R10
01F0 13C0 xjmp L52
01F2 L49:
01F2 .dbline 322
01F2 .dbline 323
01F2 6B85 ldd R22,y+11
01F4 660F lsl R22
01F6 6F5F subi R22,255 ; addi 1
01F8 .dbline 324
01F8 4E2D mov R20,R14
01FA 440F lsl R20
01FC 440F lsl R20
01FE 440F lsl R20
0200 4A0D add R20,R10
0202 .dbline 325
0202 1601 movw R2,R12
0204 C101 movw R24,R2
0206 0196 adiw R24,1
0208 6C01 movw R12,R24
020A F101 movw R30,R2
020C E491 lpm R30,Z
020E E883 std y+0,R30
0210 242F mov R18,R20
0212 062F mov R16,R22
0214 B6D0 xcall _LCD_Write_Data
0216 .dbline 326
0216 L50:
0216 .dbline 321
0216 A394 inc R10
0218 L52:
0218 .dbline 321
0218 8A2D mov R24,R10
021A 8830 cpi R24,8
021C 50F3 brlo L49
021E .dbline 327
021E L43:
021E .dbline -2
021E .dbline 328
021E ; {
021E ; x_address = (x << 1) + 1;
021E ; y_address = (y << 3) + i;
021E ; LCD_Write_Data(x_address,y_address,*disp++);
021E ; }
021E ; }
021E ; }
021E L42:
021E 2196 adiw R28,1
0220 0E940000 xcall pop_gset5
0224 2496 adiw R28,4
0226 .dbline 0 ; func end
0226 0895 ret
0228 .dbsym r y_address 20 c
0228 .dbsym r x_address 22 c
0228 .dbsym r i 10 c
0228 .dbsym r disp 12 pkc
0228 .dbsym r y 14 c
0228 .dbsym l x 11 c
0228 .dbend
0228 .dbfunc e LCD_Write_Word _LCD_Write_Word fV
0228 ; y_address -> R20
0228 ; x_address -> R22
0228 ; i -> R10
0228 ; disp -> R12,R13
0228 ; y -> R14
0228 ; x -> y+11
.even
0228 _LCD_Write_Word::
0228 0E940000 xcall push_arg4
022C 0E940000 xcall push_gset5
0230 E22E mov R14,R18
0232 2197 sbiw R28,1
0234 CF84 ldd R12,y+15
0236 D888 ldd R13,y+16
0238 .dbline -1
0238 .dbline 334
0238 ;
0238 ; //對128*64點陣LCD
0238 ; //X : 行數 0~3
0238 ; //Y : 列數 0~15
0238 ; void LCD_Write_Word(INT8U x,INT8U y,const INT8U *disp)
0238 ; {
0238 .dbline 338
0238 ; INT8U i;
0238 ; INT8U x_address;
0238 ; INT8U y_address;
0238 ; if((x < 4) && (y < 16))
0238 8B85 ldd R24,y+11
023A 8430 cpi R24,4
023C 08F0 brlo X3
023E 33C0 xjmp L54
0240 X3:
0240 8E2D mov R24,R14
0242 8031 cpi R24,16
0244 08F0 brlo X4
0246 2FC0 xjmp L54
0248 X4:
0248 .dbline 339
0248 ; {
0248 .dbline 340
0248 ; for(i = 0;i < 16;i++)
0248 AA24 clr R10
024A 12C0 xjmp L59
024C L56:
024C .dbline 341
024C .dbline 342
024C 6B85 ldd R22,y+11
024E 660F lsl R22
0250 .dbline 343
0250 4E2D mov R20,R14
0252 440F lsl R20
0254 440F lsl R20
0256 440F lsl R20
0258 4A0D add R20,R10
025A .dbline 344
025A 1601 movw R2,R12
025C C101 movw R24,R2
025E 0196 adiw R24,1
0260 6C01 movw R12,R24
0262 F101 movw R30,R2
0264 E491 lpm R30,Z
0266 E883 std y+0,R30
0268 242F mov R18,R20
026A 062F mov R16,R22
026C 8AD0 xcall _LCD_Write_Data
026E .dbline 345
026E L57:
026E .dbline 340
026E A394 inc R10
0270 L59:
0270 .dbline 340
0270 8A2D mov R24,R10
0272 8031 cpi R24,16
0274 58F3 brlo L56
0276 .dbline 346
0276 ; {
0276 ; x_address = x << 1;
0276 ; y_address = (y << 3) + i;
0276 ; LCD_Write_Data(x_address,y_address,*disp++);
0276 ; }
0276 ; for(i = 0;i < 16;i++)
0276 AA24 clr R10
0278 13C0 xjmp L63
027A L60:
027A .dbline 347
027A .dbline 348
027A 6B85 ldd R22,y+11
027C 660F lsl R22
027E 6F5F subi R22,255 ; addi 1
0280 .dbline 349
0280 4E2D mov R20,R14
0282 440F lsl R20
0284 440F lsl R20
0286 440F lsl R20
0288 4A0D add R20,R10
028A .dbline 350
028A 1601 movw R2,R12
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -