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

📄 1.lis

📁 在车头有4个光敏电阻做的寻找光源的小车程序 具有笔战功能 ICC-AVR ATmega16L 做的控制器 找到光源后停车
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0158 880F              lsl R24
 015A 880F              lsl R24
 015C 880F              lsl R24
 015E 880F              lsl R24
 0160 880F              lsl R24
 0162 382A              or R3,R24
 0164 432D              mov R20,R3
 0166                   .dbline 75
 0166           ;   delay_nus(16); 
 0166 00E1              ldi R16,16
 0168 10E0              ldi R17,0
 016A 4DD0              xcall _delay_nus
 016C                   .dbline 76
 016C           ;   temp=data<<2;
 016C 642F              mov R22,R20
 016E 660F              lsl R22
 0170 660F              lsl R22
 0172                   .dbline 77
 0172           ;   LCD_RS_PORT|=LCD_RS;       //RS=1 
 0172 C79A              sbi 0x18,7
 0174                   .dbline 78
 0174           ;   LCD_DATA_PORT&=0b11000011;       //清高四位 
 0174 88B3              in R24,0x18
 0176 837C              andi R24,195
 0178 88BB              out 0x18,R24
 017A                   .dbline 79
 017A           ;   LCD_DATA_PORT|=temp&0b00111100;  //写高四位 
 017A 862F              mov R24,R22
 017C 8C73              andi R24,60
 017E 28B2              in R2,0x18
 0180 282A              or R2,R24
 0182 28BA              out 0x18,R2
 0184                   .dbline 80
 0184           ;   LCD_en_write(); 
 0184 52DF              xcall _LCD_en_write
 0186                   .dbline 81
 0186           ;   data=data>>2;               //低四位移到高四位 
 0186 4695              lsr R20
 0188 4695              lsr R20
 018A                   .dbline 82
 018A           ;   LCD_DATA_PORT&=0b11000011;        //清高四位 
 018A 88B3              in R24,0x18
 018C 837C              andi R24,195
 018E 88BB              out 0x18,R24
 0190                   .dbline 83
 0190           ;   LCD_DATA_PORT|=data&0b00111100;   //写低四位 
 0190 842F              mov R24,R20
 0192 8C73              andi R24,60
 0194 28B2              in R2,0x18
 0196 282A              or R2,R24
 0198 28BA              out 0x18,R2
 019A                   .dbline 84
 019A           ;   LCD_en_write(); 
 019A 47DF              xcall _LCD_en_write
 019C                   .dbline -2
 019C           L4:
 019C                   .dbline 0 ; func end
 019C 6991              ld R22,y+
 019E 4991              ld R20,y+
 01A0 0895              ret
 01A2                   .dbsym r temp 22 c
 01A2                   .dbsym r data 20 c
 01A2                   .dbend
 01A2                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 01A2           ;        address -> R20
 01A2           ;              y -> R10
 01A2           ;              x -> R22
                        .even
 01A2           _LCD_set_xy::
 01A2 0E940000          xcall push_xgsetF00C
 01A6 A22E              mov R10,R18
 01A8 602F              mov R22,R16
 01AA                   .dbline -1
 01AA                   .dbline 89
 01AA           ; }
 01AA           ; 
 01AA           ; 
 01AA           ; void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数
 01AA           ; {
 01AA                   .dbline 91
 01AA           ;     unsigned char address;
 01AA           ;     if (y == 0) address = 0x80 + x;
 01AA AA20              tst R10
 01AC 19F4              brne L6
 01AE           X0:
 01AE                   .dbline 91
 01AE 462F              mov R20,R22
 01B0 4058              subi R20,128    ; addi 128
 01B2 02C0              xjmp L7
 01B4           L6:
 01B4                   .dbline 92
 01B4           ;     else   address = 0xc0 + x;
 01B4 462F              mov R20,R22
 01B6 4054              subi R20,64    ; addi 192
 01B8           L7:
 01B8                   .dbline 93
 01B8           ;     LCD_write_command( address);
 01B8 042F              mov R16,R20
 01BA 3DDF              xcall _LCD_write_command
 01BC                   .dbline -2
 01BC           L5:
 01BC                   .dbline 0 ; func end
 01BC 0C940000          xjmp pop_xgsetF00C
 01C0                   .dbsym r address 20 c
 01C0                   .dbsym r y 10 c
 01C0                   .dbsym r x 22 c
 01C0                   .dbend
 01C0                   .dbfunc e LCD_write_string _LCD_write_string fV
 01C0           ;              s -> R20,R21
 01C0           ;              Y -> R12
 01C0           ;              X -> R10
                        .even
 01C0           _LCD_write_string::
 01C0 0E940000          xcall push_xgset303C
 01C4 C22E              mov R12,R18
 01C6 A02E              mov R10,R16
 01C8 4E81              ldd R20,y+6
 01CA 5F81              ldd R21,y+7
 01CC                   .dbline -1
 01CC                   .dbline 97
 01CC           ; }
 01CC           ;   
 01CC           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
 01CC           ; {
 01CC                   .dbline 98
 01CC           ;     LCD_set_xy( X, Y ); //写地址    
 01CC 2C2D              mov R18,R12
 01CE 0A2D              mov R16,R10
 01D0 E8DF              xcall _LCD_set_xy
 01D2 05C0              xjmp L10
 01D4           L9:
 01D4                   .dbline 100
 01D4           ;     while (*s)  // 写显示字符
 01D4           ;     {
 01D4                   .dbline 101
 01D4           ;       LCD_write_data( *s );
 01D4 FA01              movw R30,R20
 01D6 0081              ldd R16,z+0
 01D8 89DF              xcall _LCD_write_data
 01DA                   .dbline 102
 01DA           ;       s ++;
 01DA 4F5F              subi R20,255  ; offset = 1
 01DC 5F4F              sbci R21,255
 01DE                   .dbline 103
 01DE           ;     }
 01DE           L10:
 01DE                   .dbline 99
 01DE FA01              movw R30,R20
 01E0 2080              ldd R2,z+0
 01E2 2220              tst R2
 01E4 B9F7              brne L9
 01E6           X1:
 01E6                   .dbline -2
 01E6           L8:
 01E6                   .dbline 0 ; func end
 01E6 0C940000          xjmp pop_xgset303C
 01EA                   .dbsym r s 20 pc
 01EA                   .dbsym r Y 12 c
 01EA                   .dbsym r X 10 c
 01EA                   .dbend
 01EA                   .dbfunc e LCD_write_char _LCD_write_char fV
 01EA           ;           data -> y+2
 01EA           ;              Y -> R12
 01EA           ;              X -> R10
                        .even
 01EA           _LCD_write_char::
 01EA AA92              st -y,R10
 01EC CA92              st -y,R12
 01EE C22E              mov R12,R18
 01F0 A02E              mov R10,R16
 01F2                   .dbline -1
 01F2                   .dbline 108
 01F2           ;       
 01F2           ; }
 01F2           ; 
 01F2           ; void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
 01F2           ; {
 01F2                   .dbline 109
 01F2           ;   LCD_set_xy( X, Y ); //写地址
 01F2 2C2D              mov R18,R12
 01F4 0A2D              mov R16,R10
 01F6 D5DF              xcall _LCD_set_xy
 01F8                   .dbline 110
 01F8           ;   LCD_write_data( data);
 01F8 0A81              ldd R16,y+2
 01FA 78DF              xcall _LCD_write_data
 01FC                   .dbline -2
 01FC           L12:
 01FC                   .dbline 0 ; func end
 01FC C990              ld R12,y+
 01FE A990              ld R10,y+
 0200 0895              ret
 0202                   .dbsym l data 2 c
 0202                   .dbsym r Y 12 c
 0202                   .dbsym r X 10 c
 0202                   .dbend
 0202                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0202           _delay_1us::
 0202                   .dbline -1
 0202                   .dbline 116
 0202           ; }
 0202           ; 
 0202           ; 
 0202           ; 
 0202           ; void delay_1us(void)                 //1us延时函数
 0202           ;   {
 0202                   .dbline 117
 0202           ;    asm("nop");
 0202 0000              nop
 0204                   .dbline -2
 0204           L13:
 0204                   .dbline 0 ; func end
 0204 0895              ret
 0206                   .dbend
 0206                   .dbfunc e delay_nus _delay_nus fV
 0206           ;              i -> R20,R21
 0206           ;              n -> R10,R11
                        .even
 0206           _delay_nus::
 0206 0E940000          xcall push_xgset300C
 020A 5801              movw R10,R16
 020C                   .dbline -1
 020C                   .dbline 121
 020C           ;   }
 020C           ; 
 020C           ; void delay_nus(unsigned int n)       //N us延时函数
 020C           ;   {
 020C                   .dbline 122
 020C           ;    unsigned int i=0;
 020C 4427              clr R20
 020E 5527              clr R21
 0210                   .dbline 123
 0210           ;    for (i=0;i<n;i++)
 0210 03C0              xjmp L18
 0212           L15:
 0212                   .dbline 124
 0212           ;    delay_1us();
 0212 F7DF              xcall _delay_1us
 0214           L16:
 0214                   .dbline 123
 0214 4F5F              subi R20,255  ; offset = 1
 0216 5F4F              sbci R21,255
 0218           L18:
 0218                   .dbline 123
 0218 4A15              cp R20,R10
 021A 5B05              cpc R21,R11
 021C D0F3              brlo L15
 021E           X2:
 021E                   .dbline -2
 021E           L14:
 021E                   .dbline 0 ; func end
 021E 0C940000          xjmp pop_xgset300C
 0222                   .dbsym r i 20 i
 0222                   .dbsym r n 10 i
 0222                   .dbend
 0222                   .dbfunc e delay_1ms _delay_1ms fV
 0222           ;              i -> R16,R17
                        .even
 0222           _delay_1ms::
 0222                   .dbline -1
 0222                   .dbline 128
 0222           ;   }
 0222           ;   
 0222           ; void delay_1ms(void)                 //1ms延时函数
 0222           ;   {
 0222                   .dbline 130
 0222           ;    unsigned int i;
 0222           ;    for (i=0;i<1140;i++);
 0222 0027              clr R16
 0224 1127              clr R17
 0226 02C0              xjmp L23
 0228           L20:
 0228                   .dbline 130
 0228           L21:
 0228                   .dbline 130
 0228 0F5F              subi R16,255  ; offset = 1
 022A 1F4F              sbci R17,255
 022C           L23:
 022C                   .dbline 130
 022C 0437              cpi R16,116
 022E E4E0              ldi R30,4
 0230 1E07              cpc R17,R30
 0232 D0F3              brlo L20
 0234           X3:
 0234                   .dbline -2
 0234           L19:
 0234                   .dbline 0 ; func end
 0234 0895              ret
 0236                   .dbsym r i 16 i
 0236                   .dbend
 0236                   .dbfunc e delay_nms _delay_nms fV
 0236           ;              i -> R20,R21
 0236           ;              n -> R10,R11
                        .even
 0236           _delay_nms::
 0236 0E940000          xcall push_xgset300C
 023A 5801              movw R10,R16
 023C                   .dbline -1
 023C                   .dbline 134
 023C           ;   }
 023C           ;   
 023C           ; void delay_nms(unsigned int n)       //N ms延时函数
 023C           ;   {
 023C                   .dbline 135
 023C           ;    unsigned int i=0;
 023C 4427              clr R20
 023E 5527              clr R21
 0240                   .dbline 136
 0240           ;    for (i=0;i<n;i++)
 0240 03C0              xjmp L28
 0242           L25:
 0242                   .dbline 137
 0242           ;    delay_1ms();
 0242 EFDF              xcall _delay_1ms
 0244           L26:
 0244                   .dbline 136
 0244 4F5F              subi R20,255  ; offset = 1
 0246 5F4F              sbci R21,255
 0248           L28:
 0248                   .dbline 136
 0248 4A15              cp R20,R10
 024A 5B05              cpc R21,R11
 024C D0F3              brlo L25
 024E           X4:
 024E                   .dbline -2
 024E           L24:
 024E                   .dbline 0 ; func end
 024E 0C940000          xjmp pop_xgset300C
 0252                   .dbsym r i 20 i
 0252                   .dbsym r n 10 i
 0252                   .dbend
 0252                   .dbfunc e Format _Format fpc
 0252           ;            str -> R20,R21
 0252           ;           data -> R10
                        .even
 0252           _Format::
 0252 0E940000          xcall push_xgset300C
 0256 A901              movw R20,R18
 0258 A02E              mov R10,R16
 025A                   .dbline -1
 025A                   .dbline 141
 025A           ;   }
 025A           ; 

⌨️ 快捷键说明

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