?? lcd.lis
字號:
0114 A0DF xcall _LCD_Write_Command
0116 .dbline 202
0116 ; LCD_Write_Command(0x38,1);
0116 21E0 ldi R18,1
0118 08E3 ldi R16,56
011A 9DDF xcall _LCD_Write_Command
011C .dbline 203
011C ; LCD_Write_Command(0x08,1);
011C 21E0 ldi R18,1
011E 08E0 ldi R16,8
0120 9ADF xcall _LCD_Write_Command
0122 .dbline 204
0122 ; LCD_Write_Command(0x01,1);
0122 21E0 ldi R18,1
0124 01E0 ldi R16,1
0126 97DF xcall _LCD_Write_Command
0128 .dbline 205
0128 ; LCD_Write_Command(0x06,1);
0128 21E0 ldi R18,1
012A 06E0 ldi R16,6
012C 94DF xcall _LCD_Write_Command
012E .dbline 206
012E ; LCD_Write_Command(0x0C,1);
012E 21E0 ldi R18,1
0130 0CE0 ldi R16,12
0132 .dbline -2
0132 .dbline 207
0132 ; }
0132 L30:
0132 .dbline 0 ; func end
0132 91CF xjmp _LCD_Write_Command
0134 .dbend
0134 .dbfunc e LCD_Show_Char _LCD_Show_Char fV
0134 ; address -> R20
0134 ; code -> y+4
0134 ; y -> R20
0134 ; x -> R22
.even
0134 _LCD_Show_Char::
0134 0E940000 xcall push_gset2
0138 422F mov R20,R18
013A 602F mov R22,R16
013C .dbline -1
013C .dbline 218
013C .dbline 220
013C 6230 cpi R22,2
013E 70F4 brsh L32
0140 4031 cpi R20,16
0142 60F4 brsh L32
0144 .dbline 221
0144 .dbline 222
0144 80E4 ldi R24,64
0146 869F mul R24,R22
0148 202C mov R2,R0
014A 240E add R2,R20
014C 422D mov R20,R2
014E .dbline 223
014E 21E0 ldi R18,1
0150 022D mov R16,R2
0152 0068 ori R16,128
0154 80DF xcall _LCD_Write_Command
0156 .dbline 224
0156 21E0 ldi R18,1
0158 0C81 ldd R16,y+4
015A 97DF xcall _LCD_Write_Data
015C .dbline 225
015C L32:
015C .dbline -2
015C .dbline 226
015C ;
015C ; //******************************************************************************
015C ; // Function : LCD_Show_Char
015C ; // Input : x - Row of LCD(0 to 1);
015C ; // y - Column of LCD(0 to 15);
015C ; // code - Code of Char
015C ; // Output : none
015C ; // Description : Display a Char at Setting Row and Column
015C ; //******************************************************************************
015C ; void LCD_Show_Char(INT8U x,INT8U y,INT8U code)
015C ; {
015C ; INT8U address;
015C ; if((x < 2) && (y < 16))
015C ; {
015C ; address = 0x40 * x + y;
015C ; LCD_Write_Command(0x80 | address,1);
015C ; LCD_Write_Data(code,1);
015C ; }
015C ; }
015C L31:
015C 0E940000 xcall pop_gset2
0160 .dbline 0 ; func end
0160 0895 ret
0162 .dbsym r address 20 c
0162 .dbsym l code 4 c
0162 .dbsym r y 20 c
0162 .dbsym r x 22 c
0162 .dbend
0162 .dbfunc e LCD_Show_String _LCD_Show_String fV
0162 ; x_address -> R20
0162 ; y_address -> R22
0162 ; pdata -> R10,R11
0162 ; y -> R12
0162 ; x -> R22
.even
0162 _LCD_Show_String::
0162 0E940000 xcall push_gset4
0166 C22E mov R12,R18
0168 602F mov R22,R16
016A 2197 sbiw R28,1
016C A984 ldd R10,y+9
016E BA84 ldd R11,y+10
0170 .dbline -1
0170 .dbline 237
0170 ;
0170 ; //******************************************************************************
0170 ; // Function : LCD_Show_String
0170 ; // Input : x - Row of LCD(0 to 1);
0170 ; // y - Column of LCD(0 to 15);
0170 ; // pdata - Pointer to a String
0170 ; // Output : none
0170 ; // Description : Display a String from at Setting Row and Column
0170 ; //******************************************************************************
0170 ; void LCD_Show_String(INT8U x,INT8U y,INT8U *pdata)
0170 ; {
0170 .dbline 238
0170 ; INT8U x_address = x;
0170 462F mov R20,R22
0172 .dbline 239
0172 ; INT8U y_address = y;
0172 6C2D mov R22,R12
0174 14C0 xjmp L36
0176 L35:
0176 .dbline 241
0176 ; while(*pdata != '\0')
0176 ; {
0176 .dbline 242
0176 ; LCD_Show_Char(x_address,y_address,*pdata++);
0176 F501 movw R30,R10
0178 2190 ld R2,Z+
017A 5F01 movw R10,R30
017C 2882 std y+0,R2
017E 262F mov R18,R22
0180 042F mov R16,R20
0182 D8DF xcall _LCD_Show_Char
0184 .dbline 243
0184 ; y_address++;
0184 6395 inc R22
0186 .dbline 244
0186 ; if((x_address == 0) && (y_address >= 16))
0186 4423 tst R20
0188 29F4 brne L38
018A 6031 cpi R22,16
018C 18F0 brlo L38
018E .dbline 245
018E ; {
018E .dbline 246
018E ; x_address = 1;
018E 41E0 ldi R20,1
0190 .dbline 247
0190 ; y_address = 0;
0190 6627 clr R22
0192 .dbline 248
0192 ; }
0192 05C0 xjmp L39
0194 L38:
0194 .dbline 249
0194 ; else if((x_address == 1) && (y_address >= 16))
0194 4130 cpi R20,1
0196 19F4 brne L40
0198 6031 cpi R22,16
019A 08F0 brlo L40
019C .dbline 250
019C ; {
019C .dbline 251
019C ; return;
019C 04C0 xjmp L34
019E L40:
019E L39:
019E .dbline 253
019E L36:
019E .dbline 240
019E F501 movw R30,R10
01A0 2080 ldd R2,z+0
01A2 2220 tst R2
01A4 41F7 brne L35
01A6 .dbline -2
01A6 .dbline 254
01A6 ; }
01A6 ; }
01A6 ; }
01A6 L34:
01A6 2196 adiw R28,1
01A8 0E940000 xcall pop_gset4
01AC .dbline 0 ; func end
01AC 0895 ret
01AE .dbsym r x_address 20 c
01AE .dbsym r y_address 22 c
01AE .dbsym r pdata 10 pc
01AE .dbsym r y 12 c
01AE .dbsym r x 22 c
01AE .dbend
01AE .dbfunc e Delay_ms _Delay_ms fV
01AE ; cnt -> R20,R21
01AE ; time -> R16
.even
01AE _Delay_ms::
01AE 0E940000 xcall push_gset1
01B2 .dbline -1
01B2 .dbline 263
01B2 ;
01B2 ; //******************************************************************************
01B2 ; // Function : Delay_ms
01B2 ; // Input : time - Delay Time
01B2 ; // Output : none
01B2 ; // Description : Inaccurate ms Level Delay for Software Reset of LCD
01B2 ; //******************************************************************************
01B2 ; void Delay_ms(INT8U time)
01B2 ; {
01B2 .dbline 264
01B2 ; INT16U cnt = 0;
01B2 4427 clr R20
01B4 5527 clr R21
01B6 0AC0 xjmp L44
01B8 L43:
01B8 .dbline 266
01B8 ; while(time--)
01B8 ; {
01B8 .dbline 267
01B8 ; for(cnt = 0;cnt < 5000;cnt++)
01B8 4427 clr R20
01BA 5527 clr R21
01BC 03C0 xjmp L49
01BE L46:
01BE .dbline 268
01BE .dbline 269
01BE 0000 nop
01C0 .dbline 270
01C0 L47:
01C0 .dbline 267
01C0 4F5F subi R20,255 ; offset = 1
01C2 5F4F sbci R21,255
01C4 L49:
01C4 .dbline 267
01C4 4838 cpi R20,136
01C6 E3E1 ldi R30,19
01C8 5E07 cpc R21,R30
01CA C8F3 brlo L46
01CC .dbline 271
01CC L44:
01CC .dbline 265
01CC 202E mov R2,R16
01CE 3324 clr R3
01D0 0150 subi R16,1
01D2 2220 tst R2
01D4 89F7 brne L43
01D6 .dbline -2
01D6 .dbline 272
01D6 ; {
01D6 ; NOP();
01D6 ; }
01D6 ; }
01D6 ; }
01D6 L42:
01D6 0E940000 xcall pop_gset1
01DA .dbline 0 ; func end
01DA 0895 ret
01DC .dbsym r cnt 20 i
01DC .dbsym r time 16 c
01DC .dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -