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

📄 lcd.lis

📁 基于m16的寻迹寻光小车程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0102 2220              tst R2
 0104 B9F7              brne L11
 0106           X2:
 0106                   .dbline -2
 0106           L10:
 0106                   .dbline 0 ; func end
 0106 0C940000          xjmp pop_xgset303C
 010A                   .dbsym r s 20 pc
 010A                   .dbsym r c 12 c
 010A                   .dbsym r r 10 c
 010A                   .dbend
 010A                   .dbfunc e LCD_write_char _LCD_write_char fV
 010A           ;           DATA -> y+2
 010A           ;              c -> R12
 010A           ;              r -> R10
                        .even
 010A           _LCD_write_char::
 010A AA92              st -y,R10
 010C CA92              st -y,R12
 010E C22E              mov R12,R18
 0110 A02E              mov R10,R16
 0112                   .dbline -1
 0112                   .dbline 110
 0112           ; }
 0112           ; 
 0112           ; void LCD_write_char(uchar r, uchar c, uchar DATA)                                //写字符
 0112           ; {
 0112                   .dbline 111
 0112           ;        LCD_set_rc( r, c );
 0112 2C2D              mov R18,R12
 0114 0A2D              mov R16,R10
 0116 D1DF              xcall _LCD_set_rc
 0118                   .dbline 112
 0118           ;        LCD_write_data( DATA );
 0118 0A81              ldd R16,y+2
 011A 98DF              xcall _LCD_write_data
 011C                   .dbline -2
 011C           L14:
 011C                   .dbline 0 ; func end
 011C C990              ld R12,y+
 011E A990              ld R10,y+
 0120 0895              ret
 0122                   .dbsym l DATA 2 c
 0122                   .dbsym r c 12 c
 0122                   .dbsym r r 10 c
 0122                   .dbend
 0122                   .dbfunc e LCD_write_array _LCD_write_array fV
 0122           ;              i -> R10
 0122           ;          array -> R12,R13
 0122           ;              c -> R22
 0122           ;              r -> R20
                        .even
 0122           _LCD_write_array::
 0122 0E940000          xcall push_xgsetF03C
 0126 622F              mov R22,R18
 0128 402F              mov R20,R16
 012A 2197              sbiw R28,1
 012C C984              ldd R12,y+9
 012E DA84              ldd R13,y+10
 0130                   .dbline -1
 0130                   .dbline 122
 0130           ; }
 0130           ; 
 0130           ; //==========================================
 0130           ; //函数名称:写字符数组
 0130           ; //函数作用: 在指定位置写一串字符串
 0130           ; //入口参数: 行位置r, 列位置c, 字符数组chardata[], 字符个数
 0130           ; //返回类型:无
 0130           ; //==========================================
 0130           ; void LCD_write_array( uchar r, uchar c, uchar array[] )
 0130           ; {
 0130                   .dbline 123
 0130           ;       uchar i = 0;
 0130 AA24              clr R10
 0132 2AC0              xjmp L17
 0134           L16:
 0134                   .dbline 125
 0134           ;     while( array[i] != '\0' )
 0134           ;       {
 0134                   .dbline 126
 0134           ;                LCD_write_char( r, c, array[i] );
 0134 EA2D              mov R30,R10
 0136 FF27              clr R31
 0138 EC0D              add R30,R12
 013A FD1D              adc R31,R13
 013C 2080              ldd R2,z+0
 013E 2882              std y+0,R2
 0140 262F              mov R18,R22
 0142 042F              mov R16,R20
 0144 E2DF              xcall _LCD_write_char
 0146                   .dbline 127
 0146           ;            if( ++c == 16 )
 0146 862F              mov R24,R22
 0148 8F5F              subi R24,255    ; addi 1
 014A 682F              mov R22,R24
 014C 6031              cpi R22,16
 014E D9F4              brne L19
 0150           X3:
 0150                   .dbline 128
 0150           ;                {
 0150                   .dbline 129
 0150           ;                    if( r == 1 )
 0150 4130              cpi R20,1
 0152 61F4              brne L21
 0154           X4:
 0154                   .dbline 130
 0154           ;                        {   
 0154                   .dbline 131
 0154           ;                            c = 0;
 0154 6627              clr R22
 0156                   .dbline 132
 0156           ;                                r = 2;
 0156 42E0              ldi R20,2
 0158                   .dbline 133
 0158           ;                                LCD_write_char( r, c, array[i] );
 0158 EA2D              mov R30,R10
 015A FF27              clr R31
 015C EC0D              add R30,R12
 015E FD1D              adc R31,R13
 0160 2080              ldd R2,z+0
 0162 2882              std y+0,R2
 0164 262F              mov R18,R22
 0166 042F              mov R16,R20
 0168 D0DF              xcall _LCD_write_char
 016A                   .dbline 134
 016A           ;                        }
 016A 0DC0              xjmp L22
 016C           L21:
 016C                   .dbline 136
 016C           ;                        
 016C           ;                        else if( r == 2 )
 016C 4230              cpi R20,2
 016E 59F4              brne L23
 0170           X5:
 0170                   .dbline 137
 0170           ;                        {
 0170                   .dbline 138
 0170           ;                                c = 0;
 0170 6627              clr R22
 0172                   .dbline 139
 0172           ;                                r = 1;
 0172 41E0              ldi R20,1
 0174                   .dbline 140
 0174           ;                                LCD_write_char( r, c, array[i] );
 0174 EA2D              mov R30,R10
 0176 FF27              clr R31
 0178 EC0D              add R30,R12
 017A FD1D              adc R31,R13
 017C 2080              ldd R2,z+0
 017E 2882              std y+0,R2
 0180 262F              mov R18,R22
 0182 042F              mov R16,R20
 0184 C2DF              xcall _LCD_write_char
 0186                   .dbline 141
 0186           ;                    }
 0186           L23:
 0186           L22:
 0186                   .dbline 142
 0186           ;            }
 0186           L19:
 0186                   .dbline 143
 0186           ;                i++;
 0186 A394              inc R10
 0188                   .dbline 144
 0188           ;       }  
 0188           L17:
 0188                   .dbline 124
 0188 EA2D              mov R30,R10
 018A FF27              clr R31
 018C EC0D              add R30,R12
 018E FD1D              adc R31,R13
 0190 2080              ldd R2,z+0
 0192 2220              tst R2
 0194 09F0              breq X7
 0196 CECF              xjmp L16
 0198           X7:
 0198           X6:
 0198                   .dbline -2
 0198           L15:
 0198                   .dbline 0 ; func end
 0198 2196              adiw R28,1
 019A 0C940000          xjmp pop_xgsetF03C
 019E                   .dbsym r i 10 c
 019E                   .dbsym r array 12 pc
 019E                   .dbsym r c 22 c
 019E                   .dbsym r r 20 c
 019E                   .dbend
 019E                   .dbfunc e lengh_longint _lengh_longint fc
 019E           ;         data_n -> R20
 019E           ;        datatmp -> y+0
 019E           ;    datalongint -> y+5
                        .even
 019E           _lengh_longint::
 019E 0E940000          xcall push_arg4
 01A2 4A93              st -y,R20
 01A4 2497              sbiw R28,4
 01A6                   .dbline -1
 01A6                   .dbline 149
 01A6           ; }
 01A6           ; 
 01A6           ; //返回整形数据的长度
 01A6           ; char lengh_longint( long unsigned datalongint )
 01A6           ; {
 01A6                   .dbline 150
 01A6           ;     long signed datatmp = datalongint;
 01A6 2D80              ldd R2,y+5
 01A8 3E80              ldd R3,y+6
 01AA 4F80              ldd R4,y+7
 01AC 5884              ldd R5,y+8
 01AE 2882              std y+0,R2
 01B0 3982              std y+1,R3
 01B2 4A82              std y+2,R4
 01B4 5B82              std y+3,R5
 01B6                   .dbline 151
 01B6           ;     uchar data_n = 0;
 01B6 4427              clr R20
 01B8 13C0              xjmp L27
 01BA           L26:
 01BA                   .dbline 153
 01BA           ;     while( datatmp != 0 )
 01BA           ;     {
 01BA                   .dbline 154
 01BA           ;         datatmp /= 10;
 01BA 8AE0              ldi R24,10
 01BC 90E0              ldi R25,0
 01BE A0E0              ldi R26,0
 01C0 B0E0              ldi R27,0
 01C2 0881              ldd R16,y+0
 01C4 1981              ldd R17,y+1
 01C6 2A81              ldd R18,y+2
 01C8 3B81              ldd R19,y+3
 01CA BA93              st -y,R27
 01CC AA93              st -y,R26
 01CE 9A93              st -y,R25
 01D0 8A93              st -y,R24
 01D2 0E940000          xcall div32s
 01D6 0883              std y+0,R16
 01D8 1983              std y+1,R17
 01DA 2A83              std y+2,R18
 01DC 3B83              std y+3,R19
 01DE                   .dbline 155
 01DE           ;         data_n++;
 01DE 4395              inc R20
 01E0                   .dbline 156
 01E0           ;     }
 01E0           L27:
 01E0                   .dbline 152
 01E0 2880              ldd R2,y+0
 01E2 3980              ldd R3,y+1
 01E4 4A80              ldd R4,y+2
 01E6 5B80              ldd R5,y+3
 01E8 8894              clc
 01EA 2220              tst R2
 01EC 3204              cpc R3,R2
 01EE 4204              cpc R4,R2
 01F0 5204              cpc R5,R2
 01F2 19F7              brne L26
 01F4           X8:
 01F4                   .dbline 158
 01F4           ; 
 01F4           ;     if( datalongint == 0 )
 01F4 2D80              ldd R2,y+5
 01F6 3E80              ldd R3,y+6
 01F8 4F80              ldd R4,y+7
 01FA 5884              ldd R5,y+8
 01FC 8894              clc
 01FE 2220              tst R2
 0200 3204              cpc R3,R2
 0202 4204              cpc R4,R2
 0204 5204              cpc R5,R2
 0206 09F4              brne L29
 0208           X9:
 0208                   .dbline 159
 0208           ;     {
 0208                   .dbline 160
 0208           ;         data_n = 1;
 0208 41E0              ldi R20,1
 020A                   .dbline 161
 020A           ;     }
 020A           L29:
 020A                   .dbline 163
 020A           ; 
 020A           ;     return data_n;
 020A 042F              mov R16,R20
 020C                   .dbline -2
 020C           L25:
 020C                   .dbline 0 ; func end
 020C 2496              adiw R28,4
 020E 4991              ld R20,y+
 0210 2496              adiw R28,4
 0212 0895              ret
 0214                   .dbsym r data_n 20 c
 0214                   .dbsym l datatmp 0 L
 0214                   .dbsym l datalongint 5 l
 0214                   .dbend
 0214                   .dbfunc e LCD_write_datalongint _LCD_write_datalongint fV
 0214           ;      datachar2 -> y+13
 0214           ;             kk -> R14
 0214           ;              k -> R22
 0214           ;              n -> R10
 0214           ;      datachar1 -> y+5
 0214           ;     datainttmp -> y+1
 0214           ;              i -> R12
 0214           ;        dataint -> y+35
 0214           ;              c -> R20
 0214           ;              r -> y+31
                        .even
 0214           _LCD_write_datalongint::
 0214 0E940000          xcall push_arg4
 0218 0E940000          xcall push_xgsetF0FC
 021C 422F              mov R20,R18
 021E 6597              sbiw R28,21
 0220                   .dbline -1
 0220                   .dbline 174
 0220           ; }
 0220           ; 
 0220           ; 
 0220           ; //==========================================
 0220           ; //函数名称:显示一个整型数据
 0220           ; //函数作用: 在指定位置显示整数
 0220           ; //入口参数: 行位置r, 列位置c, 字符数组dataint[]
 0220           ; //返回类型:无
 0220           ; //==========================================
 0220           ; void LCD_write_datalongint( uchar r, uchar c, long int dataint )
 0220           ; {
 0220                   .dbline 177
 0220           ;     uchar datachar1[8];
 0220           ;     uchar datachar2[8];
 0220           ;     uchar n = 0;
 0220 AA24              clr R10
 0222                   .dbline 178
 0222           ;     uchar i =0;
 0222 CC24              clr R12
 0224                   .dbline 179
 0224           ;     uchar k =0;        //取字符个数
 0224 6627              clr R22
 0226                   .dbline 180
 0226           ;     uchar kk = 0;      //取字符个数
 0226 EE24              clr R14
 0228                   .dbline 181
 0228           ;       long int datainttmp = dataint;
 0228 2BA0              ldd R2,y+35
 022A 3CA0              ldd R3,y+36

⌨️ 快捷键说明

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