⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lis

📁 AVR单片机 C语言程序设计经典实用
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -