?? lcd.lis
字號:
011C .dbline 269
011C ; LCD_Command_SetStartLine(0);
011C 0027 clr R16
011E .dbline -2
011E .dbline 270
011E ; }
011E L26:
011E .dbline 0 ; func end
011E A9CF xjmp _LCD_Command_SetStartLine
0120 .dbend
0120 .dbfunc e LCD_Clear_Line _LCD_Clear_Line fV
0120 ; i -> R20
0120 ; j -> R10
0120 ; endline -> R22
0120 ; startline -> R10
.even
0120 _LCD_Clear_Line::
0120 0E940000 xcall push_gset3
0124 622F mov R22,R18
0126 A02E mov R10,R16
0128 .dbline -1
0128 .dbline 279
0128 ;
0128 ; //******************************************************************************
0128 ; // Function : LCD_Clear_Line
0128 ; // Input : startline,endline - Line Range to be Cleare
0128 ; // Output : none
0128 ; // Description : Command Level Function,Clear Screen Display
0128 ; //******************************************************************************
0128 ; void LCD_Clear_Line(INT8U startline,INT8U endline)
0128 ; {
0128 .dbline 281
0128 ; INT8U i,j;
0128 ; for(i = startline;i <= endline;i++)
0128 4A2D mov R20,R10
012A 11C0 xjmp L31
012C L28:
012C .dbline 282
012C ; {
012C .dbline 283
012C ; Set_CS1(1);
012C 01E0 ldi R16,1
012E 80DF xcall _Set_CS1
0130 .dbline 284
0130 ; Set_CS2(1);
0130 01E0 ldi R16,1
0132 78DF xcall _Set_CS2
0134 .dbline 285
0134 ; LCD_Command_Set_X(i);
0134 042F mov R16,R20
0136 B0DF xcall _LCD_Command_Set_X
0138 .dbline 286
0138 ; LCD_Command_Set_Y(0);
0138 0027 clr R16
013A C1DF xcall _LCD_Command_Set_Y
013C .dbline 287
013C ; for(j = 0;j < 64;j++)
013C AA24 clr R10
013E 03C0 xjmp L35
0140 L32:
0140 .dbline 288
0140 .dbline 289
0140 0027 clr R16
0142 D0DF xcall _LCD_Command_WriteByte
0144 .dbline 290
0144 L33:
0144 .dbline 287
0144 A394 inc R10
0146 L35:
0146 .dbline 287
0146 8A2D mov R24,R10
0148 8034 cpi R24,64
014A D0F3 brlo L32
014C .dbline 291
014C L29:
014C .dbline 281
014C 4395 inc R20
014E L31:
014E .dbline 281
014E 6417 cp R22,R20
0150 68F7 brsh L28
0152 .dbline -2
0152 .dbline 292
0152 ; {
0152 ; LCD_Command_WriteByte(0x00);
0152 ; }
0152 ; }
0152 ; }
0152 L27:
0152 0E940000 xcall pop_gset3
0156 .dbline 0 ; func end
0156 0895 ret
0158 .dbsym r i 20 c
0158 .dbsym r j 10 c
0158 .dbsym r endline 22 c
0158 .dbsym r startline 10 c
0158 .dbend
0158 .dbfunc e LCD_Write_Data _LCD_Write_Data fV
0158 ; data -> y+4
0158 ; y -> R20
0158 ; x -> R22
.even
0158 _LCD_Write_Data::
0158 0E940000 xcall push_gset2
015C 422F mov R20,R18
015E 602F mov R22,R16
0160 .dbline -1
0160 .dbline 301
0160 ;
0160 ; //******************************************************************************
0160 ; // Function : LCD_Write_Data
0160 ; // Input : x in [0,7] and y in [0,127]
0160 ; // Output : none
0160 ; // Description : Command Level Function,在指定行列寫一個數據
0160 ; //******************************************************************************
0160 ; void LCD_Write_Data(INT8U x,INT8U y,INT8U data)
0160 ; {
0160 .dbline 302
0160 ; if(y < 64)
0160 4034 cpi R20,64
0162 48F4 brsh L37
0164 .dbline 303
0164 ; {
0164 .dbline 304
0164 ; Set_CS1(1);
0164 01E0 ldi R16,1
0166 64DF xcall _Set_CS1
0168 .dbline 305
0168 ; Set_CS2(0);
0168 0027 clr R16
016A 5CDF xcall _Set_CS2
016C .dbline 306
016C ; LCD_Command_Set_X(x);
016C 062F mov R16,R22
016E 94DF xcall _LCD_Command_Set_X
0170 .dbline 307
0170 ; LCD_Command_Set_Y(y);
0170 042F mov R16,R20
0172 A5DF xcall _LCD_Command_Set_Y
0174 .dbline 308
0174 ; }
0174 09C0 xjmp L38
0176 L37:
0176 .dbline 310
0176 ; else
0176 ; {
0176 .dbline 311
0176 ; Set_CS1(0);
0176 0027 clr R16
0178 5BDF xcall _Set_CS1
017A .dbline 312
017A ; Set_CS2(1);
017A 01E0 ldi R16,1
017C 53DF xcall _Set_CS2
017E .dbline 313
017E ; LCD_Command_Set_X(x);
017E 062F mov R16,R22
0180 8BDF xcall _LCD_Command_Set_X
0182 .dbline 314
0182 ; LCD_Command_Set_Y(y - 64);
0182 042F mov R16,R20
0184 0054 subi R16,64
0186 9BDF xcall _LCD_Command_Set_Y
0188 .dbline 315
0188 ; }
0188 L38:
0188 .dbline 316
0188 ; LCD_Command_WriteByte(data);
0188 0C81 ldd R16,y+4
018A ACDF xcall _LCD_Command_WriteByte
018C .dbline -2
018C .dbline 317
018C ; }
018C L36:
018C 0E940000 xcall pop_gset2
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym l data 4 c
0192 .dbsym r y 20 c
0192 .dbsym r x 22 c
0192 .dbend
0192 .dbfunc e LCD_Write_Dot _LCD_Write_Dot fV
0192 ; y_address -> R22
0192 ; x_address -> R20
0192 ; data -> R10
0192 ; y -> R14
0192 ; x -> R12
.even
0192 _LCD_Write_Dot::
0192 0E940000 xcall push_gset5
0196 E22E mov R14,R18
0198 C02E mov R12,R16
019A 2197 sbiw R28,1
019C .dbline -1
019C .dbline 327
019C .dbline 329
019C AA24 clr R10
019E .dbline 330
019E 8C2D mov R24,R12
01A0 8034 cpi R24,64
01A2 B0F4 brsh L40
01A4 8E2D mov R24,R14
01A6 8038 cpi R24,128
01A8 98F4 brsh L40
01AA .dbline 331
01AA .dbline 332
01AA 4C2D mov R20,R12
01AC 4695 lsr R20
01AE 4695 lsr R20
01B0 4695 lsr R20
01B2 .dbline 333
01B2 682F mov R22,R24
01B4 .dbline 334
01B4 18E0 ldi R17,8
01B6 0C2D mov R16,R12
01B8 0E940000 xcall mod8u
01BC 102F mov R17,R16
01BE 01E0 ldi R16,1
01C0 0E940000 xcall lsl8
01C4 2A2C mov R2,R10
01C6 202A or R2,R16
01C8 2882 std y+0,R2
01CA 262F mov R18,R22
01CC 042F mov R16,R20
01CE C4DF xcall _LCD_Write_Data
01D0 .dbline 335
01D0 L40:
01D0 .dbline -2
01D0 .dbline 336
01D0 ;
01D0 ; //******************************************************************************
01D0 ; // Function : LCD_Write_Dot
01D0 ; // Input : x in [0,63] and y in [0,127]
01D0 ; // Output : none
01D0 ; // Description : Application Level Function,在LCD的指定象素位置描點,注意此函數
01D0 ; // 是覆蓋式描點,原位置的一個字節數據將被此點取代
01D0 ; //******************************************************************************
01D0 ; void LCD_Write_Dot(INT8U x,INT8U y)
01D0 ; {
01D0 ; INT8U x_address,y_address;
01D0 ; INT8U data = 0;
01D0 ; if((x < 64) && (y < 128))
01D0 ; {
01D0 ; x_address = x >> 3;
01D0 ; y_address = y;
01D0 ; LCD_Write_Data(x_address,y_address,data | (1 << (x % 8)));
01D0 ; }
01D0 ; }
01D0 L39:
01D0 2196 adiw R28,1
01D2 0E940000 xcall pop_gset5
01D6 .dbline 0 ; func end
01D6 0895 ret
01D8 .dbsym r y_address 22 c
01D8 .dbsym r x_address 20 c
01D8 .dbsym r data 10 c
01D8 .dbsym r y 14 c
01D8 .dbsym r x 12 c
01D8 .dbend
01D8 .dbfunc e LCD_Write_Char _LCD_Write_Char fV
01D8 ; y_address -> R20
01D8 ; x_address -> R22
01D8 ; i -> R10
01D8 ; disp -> R12,R13
01D8 ; y -> R14
01D8 ; x -> y+11
.even
01D8 _LCD_Write_Char::
01D8 0E940000 xcall push_arg4
01DC 0E940000 xcall push_gset5
01E0 E22E mov R14,R18
01E2 2197 sbiw R28,1
01E4 CF84 ldd R12,y+15
01E6 D888 ldd R13,y+16
01E8 .dbline -1
01E8 .dbline 347
01E8 ;
01E8 ; //******************************************************************************
01E8 ; // Function : LCD_Write_Char
01E8 ; // Input : x in [0,3] and y in [0,15],disp - start address of display buffer
01E8 ; // Output : none
01E8 ; // Description : Application Level Function,在LCD的指定顯示單元顯示一個字符。
01E8 ; // 每個顯示單元默認為8*16點陣字體,對128*64點陣LCD,x最多顯示4行
01E8 ; // 字符,y最多顯示16個字符
01E8 ; //******************************************************************************
01E8 ; void LCD_Write_Char(INT8U x,INT8U y,const INT8U *disp)
01E8 ; {
01E8 .dbline 351
01E8 ; INT8U i;
01E8 ; INT8U x_address;
01E8 ; INT8U y_address;
01E8 ; if((x < 4) && (y < 16))
01E8 8B85 ldd R24,y+11
01EA 8430 cpi R24,4
01EC 08F0 brlo X0
01EE 33C0 xjmp L43
01F0 X0:
01F0 8E2D mov R24,R14
01F2 8031 cpi R24,16
01F4 08F0 brlo X1
01F6 2FC0 xjmp L43
01F8 X1:
01F8 .dbline 352
01F8 ; {
01F8 .dbline 353
01F8 ; for(i = 0;i < 8;i++)
01F8 AA24 clr R10
01FA 12C0 xjmp L48
01FC L45:
01FC .dbline 354
01FC .dbline 355
01FC 6B85 ldd R22,y+11
01FE 660F lsl R22
0200 .dbline 356
0200 4E2D mov R20,R14
0202 440F lsl R20
0204 440F lsl R20
0206 440F lsl R20
0208 4A0D add R20,R10
020A .dbline 357
020A 1601 movw R2,R12
020C C101 movw R24,R2
020E 0196 adiw R24,1
0210 6C01 movw R12,R24
0212 F101 movw R30,R2
0214 E491 lpm R30,Z
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -