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

📄 3310lcd_function.lis

📁 Nakia LCD3310 Driver
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00BE                   .dbline 99
 00BE                   .dbline 100
 00BE FA01              movw R30,R20
 00C0 0081              ldd R16,z+0
 00C2 DCDF              rcall _LCD_write_char
 00C4                   .dbline 101
 00C4 4F5F              subi R20,255  ; offset = 1
 00C6 5F4F              sbci R21,255
 00C8                   .dbline 102
 00C8           L15:
 00C8                   .dbline 98
 00C8           ;     while (*s) 
 00C8 FA01              movw R30,R20
 00CA 2080              ldd R2,z+0
 00CC 2220              tst R2
 00CE B9F7              brne L14
 00D0                   .dbline -2
 00D0           L13:
 00D0 00D0              rcall pop_gset3
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r s 20 pc
 00D4                   .dbsym r Y 10 c
 00D4                   .dbsym r X 22 c
 00D4                   .dbend
 00D4                   .dbfunc e LCD_write_chinese_string _LCD_write_chinese_string fV
 00D4           ;              i -> R20
 00D4           ;              n -> R14
 00D4           ;            row -> R10
 00D4           ;           line -> R12
 00D4           ;            num -> R22
 00D4           ;        ch_with -> y+14
 00D4           ;              Y -> y+12
 00D4           ;              X -> y+10
                        .even
 00D4           _LCD_write_chinese_string::
 00D4 00D0              rcall push_arg4
 00D6 00D0              rcall push_gset5
 00D8 6889              ldd R22,y+16
 00DA CA88              ldd R12,y+18
 00DC AC88              ldd R10,y+20
 00DE                   .dbline -1
 00DE                   .dbline 122
 00DE           ;       {
 00DE           ;        LCD_write_char(*s);
 00DE           ;        s++;
 00DE           ;       }
 00DE           ;   }
 00DE           ; /*-----------------------------------------------------------------------
 00DE           ; LCD_write_chinese_string: 在LCD上显示汉字
 00DE           ; 
 00DE           ; 输入参数:X、Y    :显示汉字的起始X、Y坐标;
 00DE           ;           ch_with :汉字点阵的宽度
 00DE           ;           num     :显示汉字的个数;  
 00DE           ;           line    :汉字点阵数组中的起始行数
 00DE           ;           row     :汉字显示的行间距
 00DE           ; 编写日期          :2004-8-11 
 00DE           ; 最后修改日期      :2004-8-12 
 00DE           ; 测试:
 00DE           ;       LCD_write_chi(0,0,12,7,0,0);
 00DE           ;       LCD_write_chi(0,2,12,7,0,0);
 00DE           ;       LCD_write_chi(0,4,12,7,0,0);    
 00DE           ; -----------------------------------------------------------------------*/                        
 00DE           ; void LCD_write_chinese_string(unsigned char X, unsigned char Y, 
 00DE           ;                    unsigned char ch_with,unsigned char num,
 00DE           ;                    unsigned char line,unsigned char row)
 00DE           ;   {
 00DE                   .dbline 125
 00DE           ;     unsigned char i,n;
 00DE           ;     
 00DE           ;     LCD_set_XY(X,Y);                             //设置初始位置
 00DE 2C85              ldd R18,y+12
 00E0 0A85              ldd R16,y+10
 00E2 BFDF              rcall _LCD_set_XY
 00E4                   .dbline 127
 00E4           ;     
 00E4           ;     for (i=0;i<num;)
 00E4 4427              clr R20
 00E6 32C0              rjmp L21
 00E8           L18:
 00E8                   .dbline 128
 00E8           ;       {
 00E8                   .dbline 129
 00E8           ;               for (n=0; n<ch_with*2; n++)              //写一个汉字
 00E8 EE24              clr R14
 00EA 23C0              rjmp L25
 00EC           L22:
 00EC                   .dbline 130
 00EC           ;                 { 
 00EC                   .dbline 131
 00EC           ;                   if (n==ch_with)                      //写汉字的下半部分
 00EC 0E84              ldd R0,y+14
 00EE E014              cp R14,R0
 00F0 79F4              brne L26
 00F2                   .dbline 132
 00F2           ;                     {
 00F2                   .dbline 133
 00F2           ;                       if (i==0) LCD_set_XY(X,Y+1);
 00F2 4423              tst R20
 00F4 29F4              brne L28
 00F6                   .dbline 133
 00F6 2C85              ldd R18,y+12
 00F8 2F5F              subi R18,255    ; addi 1
 00FA 0A85              ldd R16,y+10
 00FC B2DF              rcall _LCD_set_XY
 00FE 08C0              rjmp L29
 0100           L28:
 0100                   .dbline 135
 0100           ;                       else
 0100           ;                          LCD_set_XY((X+(ch_with+row)*i),Y+1);
 0100 2C85              ldd R18,y+12
 0102 2F5F              subi R18,255    ; addi 1
 0104 2E84              ldd R2,y+14
 0106 2A0C              add R2,R10
 0108 249E              mul R2,R20
 010A 0A85              ldd R16,y+10
 010C 000D              add R16,R0
 010E A9DF              rcall _LCD_set_XY
 0110           L29:
 0110                   .dbline 136
 0110           ;               }
 0110           L26:
 0110                   .dbline 137
 0110 21E0              ldi R18,1
 0112 2C2C              mov R2,R12
 0114 240E              add R2,R20
 0116 88E1              ldi R24,24
 0118 829D              mul R24,R2
 011A 1001              movw R2,R0
 011C 80E0              ldi R24,<_write_chinese_string
 011E 90E0              ldi R25,>_write_chinese_string
 0120 280E              add R2,R24
 0122 391E              adc R3,R25
 0124 EE2D              mov R30,R14
 0126 FF27              clr R31
 0128 E20D              add R30,R2
 012A F31D              adc R31,R3
 012C 0491              lpm R16,Z
 012E 00D1              rcall _LCD_write_byte
 0130                   .dbline 138
 0130           L23:
 0130                   .dbline 129
 0130 E394              inc R14
 0132           L25:
 0132                   .dbline 129
 0132 82E0              ldi R24,2
 0134 0E84              ldd R0,y+14
 0136 809D              mul R24,R0
 0138 E014              cp R14,R0
 013A C0F2              brlo L22
 013C                   .dbline 139
 013C 4395              inc R20
 013E                   .dbline 140
 013E 2C85              ldd R18,y+12
 0140 2E84              ldd R2,y+14
 0142 2A0C              add R2,R10
 0144 249E              mul R2,R20
 0146 0A85              ldd R16,y+10
 0148 000D              add R16,R0
 014A 8BDF              rcall _LCD_set_XY
 014C                   .dbline 141
 014C           L19:
 014C                   .dbline 127
 014C           L21:
 014C                   .dbline 127
 014C 4617              cp R20,R22
 014E 08F4              brsh X0
 0150 CBCF              rjmp L18
 0152           X0:
 0152                   .dbline -2
 0152           L17:
 0152 00D0              rcall pop_gset5
 0154 2496              adiw R28,4
 0156                   .dbline 0 ; func end
 0156 0895              ret
 0158                   .dbsym r i 20 c
 0158                   .dbsym r n 14 c
 0158                   .dbsym r row 10 c
 0158                   .dbsym r line 12 c
 0158                   .dbsym r num 22 c
 0158                   .dbsym l ch_with 14 c
 0158                   .dbsym l Y 12 c
 0158                   .dbsym l X 10 c
 0158                   .dbend
                        .area lit(rom, con, rel)
 0330           L31:
 0330 00                .byte 0
 0331 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 036D 00000000000000000000      .word 0,0,0,0,0
 0377 00000000000000000000      .word 0,0,0,0,0
 0381 000000            .byte 0,0,0
 0384           L32:
 0384 00                .byte 0
 0385 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 03C1 00000000000000000000      .word 0,0,0,0,0
 03CB 00000000000000000000      .word 0,0,0,0,0
 03D5 000000            .byte 0,0,0
                        .area text(rom, con, rel)
 0158                   .dbfile D:\AVR\527dz\0----test\实验三\3310\3310LCD_function.c
 0158                   .dbfunc e LCD_move_chinese_string _LCD_move_chinese_string fV
 0158           ;              i -> R20
 0158           ;              j -> R22
 0158           ;       buffer_l -> y+84
 0158           ;       buffer_h -> y+0
 0158           ;              n -> R10
 0158           ;              T -> R12
 0158           ;              Y -> R14
 0158           ;              X -> y+178
                        .even
 0158           _LCD_move_chinese_string::
 0158 00D0              rcall push_arg4
 015A 00D0              rcall push_gset5
 015C E22E              mov R14,R18
 015E EF97              sbiw R28,63
 0160 EF97              sbiw R28,63
 0162 AA97              sbiw R28,42  ; offset = 168
 0164 FE01              movw R30,R28
 0166 EA54              subi R30,74  ; addi 182
 0168 FF4F              sbci R31,255
 016A C080              ldd R12,z+0
 016C                   .dbline -1
 016C                   .dbline 154
 016C           ;                   LCD_write_byte(write_chinese_string[line+i][n],1);
 016C           ;                 }
 016C           ;               i++;
 016C           ;               LCD_set_XY((X+(ch_with+row)*i),Y);
 016C           ;       }
 016C           ;   }
 016C           ;   
 016C           ; /*-----------------------------------------------------------------------
 016C           ; LCD_move_chinese_string: 汉字移动
 016C           ; 
 016C           ; 输入参数:X、Y    :显示汉字的起始X、Y坐标;
 016C           ;           T       :移动速度;
 016C           ; 
 016C           ; 编写日期          :2004-8-13 
 016C           ; 最后修改日期      :2004-8-13 
 016C           ; -----------------------------------------------------------------------*/                        
 016C           ; void LCD_move_chinese_string (unsigned char X, unsigned char Y, unsigned char T)
 016C           ;   {
 016C                   .dbline 155
 016C           ;     unsigned char i,n,j=0;
 016C 6627              clr R22
 016E                   .dbline 156
 016E           ;     unsigned char buffer_h[84]={0};
 016E 80E0              ldi R24,<L31
 0170 90E0              ldi R25,>L31
 0172 FE01              movw R30,R28
 0174 04E5              ldi R16,84
 0176 10E0              ldi R17,0
 0178 FA93              st -y,R31
 017A EA93              st -y,R30
 017C 9A93              st -y,R25
 017E 8A93              st -y,R24
 0180 00D0              rcall asgncblk
 0182                   .dbline 157
 0182           ;     unsigned char buffer_l[84]={0};
 0182 80E0              ldi R24,<L32
 0184 90E0              ldi R25,>L32
 0186 FE01              movw R30,R28
 0188 EC5A              subi R30,172  ; offset = 84
 018A FF4F              sbci R31,255
 018C 04E5              ldi R16,84
 018E 10E0              ldi R17,0
 0190 FA93              st -y,R31
 0192 EA93              st -y,R30
 0194 9A93              st -y,R25
 0196 8A93              st -y,R24
 0198 00D0              rcall asgncblk
 019A                   .dbline 159
 019A           ;       
 019A           ;     for (i=0; i<156; i++)
 019A 4427              clr R20
 019C 7DC0              rjmp L36
 019E           L33:
 019E                   .dbline 160
 019E           ;       {
 019E                   .dbline 161
 019E           ;         buffer_h[83] = move_chinese_string[i/12][j];
 019E 1CE0              ldi R17,12
 01A0 042F              mov R16,R20
 01A2 00D0              rcall div8u
 01A4 88E1              ldi R24,24
 01A6 809F              mul R24,R16
 01A8 1001              movw R2,R0
 01AA 80E0              ldi R24,<_move_chinese_string
 01AC 90E0              ldi R25,>_move_chinese_string
 01AE 280E              add R2,R24
 01B0 391E              adc R3,R25
 01B2 E62F              mov R30,R22
 01B4 FF27              clr R31
 01B6 E20D              add R30,R2
 01B8 F31D              adc R31,R3
 01BA E491              lpm R30,Z
 01BC DE01              movw R26,R28
 01BE AD5A              subi R26,173  ; addi 83
 01C0 BF4F              sbci R27,255
 01C2 EC93              st x,R30
 01C4                   .dbline 162
 01C4           ;         buffer_l[83] = move_chinese_string[i/12][j+12];
 01C4 1CE0              ldi R17,12
 01C6 042F              mov R16,R20
 01C8 00D0              rcall div8u
 01CA 88E1              ldi R24,24
 01CC 809F              mul R24,R16
 01CE 1001              movw R2,R0
 01D0 80E0              ldi R24,<_move_chinese_string
 01D2 90E0              ldi R25,>_move_chinese_string
 01D4 280E              add R2,R24
 01D6 391E              adc R3,R25
 01D8 E62F              mov R30,R22
 01DA FF27              clr R31
 01DC 3C96              adiw R30,12
 01DE E20D              add R30,R2
 01E0 F31D              adc R31,R3
 01E2 E491              lpm R30,Z
 01E4 DE01              movw R26,R28
 01E6 A955              subi R26,89  ; addi 167
 01E8 BF4F              sbci R27,255
 01EA EC93              st x,R30
 01EC                   .dbline 163
 01EC           ;         j++;
 01EC 6395              inc R22
 01EE                   .dbline 164
 01EE           ;         if (j==12) j=0;
 01EE 6C30              cpi R22,12
 01F0 09F4              brne L39
 01F2                   .dbline 164
 01F2 6627              clr R22
 01F4           L39:
 01F4                   .dbline 166
 01F4           ;         
 01F4           ;         for (n=0; n<83; n++)
 01F4 AA24              clr R10
 01F6 1EC0              rjmp L44
 01F8           L41:
 01F8                   .dbline 167
 01F8                   .dbline 168
 01F8 CE01              movw R24,R28
 01FA 0196              adiw R24,1
 01FC EA2D              mov R30,R10
 01FE FF27              clr R31
 0200 E80F              add R30,R24
 0202 F91F              adc R31,R25
 0204 2080              ldd R2,z+0
 0206 CE01              movw R24,R28
 0208 EA2D              mov R30,R10
 020A FF27              clr R31
 020C E80F              add R30,R24
 020E F91F              adc R31,R25
 0210 2082              std z+0,R2
 0212                   .dbline 169

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -