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

📄 jidong.lis

📁 基于m16的寻迹寻光小车程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0402                   .dbline 176
 0402           ;                 }break;
 0402                   .dbline 176
 0402 60C0              xjmp L52
 0404           L56:
 0404                   .dbline 179
 0404           ;               
 0404           ;                 case 2:
 0404           ;                 {
 0404                   .dbline 180
 0404           ;                         ad2_tmp = ADC_convert();
 0404 79DF              xcall _ADC_convert
 0406 10931200          sts _ad2_tmp+1,R17
 040A 00931100          sts _ad2_tmp,R16
 040E 30931400          sts _ad2_tmp+2+1,R19
 0412 20931300          sts _ad2_tmp+2,R18
 0416                   .dbline 181
 0416           ;                         ad_m = 3;         //转换通道                                          
 0416 83E0              ldi R24,3
 0418 80930800          sts _ad_m,R24
 041C                   .dbline 182
 041C           ;                 }break;
 041C                   .dbline 182
 041C 53C0              xjmp L52
 041E           L57:
 041E                   .dbline 185
 041E           ;                 
 041E           ;                 case 3:
 041E           ;             {
 041E                   .dbline 186
 041E           ;                          ad3_tmp = ADC_convert();
 041E 6CDF              xcall _ADC_convert
 0420 10931600          sts _ad3_tmp+1,R17
 0424 00931500          sts _ad3_tmp,R16
 0428 30931800          sts _ad3_tmp+2+1,R19
 042C 20931700          sts _ad3_tmp+2,R18
 0430                   .dbline 187
 0430           ;                          ad_m = 4;            //转换通道      
 0430 84E0              ldi R24,4
 0432 80930800          sts _ad_m,R24
 0436                   .dbline 188
 0436           ;                 }break;
 0436                   .dbline 188
 0436 46C0              xjmp L52
 0438           L58:
 0438                   .dbline 191
 0438           ; 
 0438           ;                 case 4:
 0438           ;                 {
 0438                   .dbline 192
 0438           ;                         ad4_tmp = ADC_convert();
 0438 5FDF              xcall _ADC_convert
 043A 10931A00          sts _ad4_tmp+1,R17
 043E 00931900          sts _ad4_tmp,R16
 0442 30931C00          sts _ad4_tmp+2+1,R19
 0446 20931B00          sts _ad4_tmp+2,R18
 044A                   .dbline 193
 044A           ;                         ad_m = 0;         //转换通道
 044A 2224              clr R2
 044C 20920800          sts _ad_m,R2
 0450                   .dbline 200
 0450           ;                         
 0450           ;                                               
 0450           ;                 //显示三个AD光度采样的值              
 0450           ;                         //LCD_write_datafloat( 2, 1, ad0_tmp, 100, 2);
 0450           ;                         //LCD_write_datafloat( 2, 6, ad1_tmp, 100, 2);
 0450           ;                         //LCD_write_datafloat( 2, 11, ad2_tmp, 100, 2);
 0450           ;                        small_flag = get_5small( ad0_tmp, ad1_tmp, ad2_tmp, ad3_tmp, ad4_tmp );   //获取三点中最亮的一点
 0450 1801              movw R2,R16
 0452 2901              movw R4,R18
 0454 2C86              std y+12,R2
 0456 3D86              std y+13,R3
 0458 4E86              std y+14,R4
 045A 5F86              std y+15,R5
 045C 40901700          lds R4,_ad3_tmp+2
 0460 50901800          lds R5,_ad3_tmp+2+1
 0464 20901500          lds R2,_ad3_tmp
 0468 30901600          lds R3,_ad3_tmp+1
 046C 2886              std y+8,R2
 046E 3986              std y+9,R3
 0470 4A86              std y+10,R4
 0472 5B86              std y+11,R5
 0474 40901300          lds R4,_ad2_tmp+2
 0478 50901400          lds R5,_ad2_tmp+2+1
 047C 20901100          lds R2,_ad2_tmp
 0480 30901200          lds R3,_ad2_tmp+1
 0484 2C82              std y+4,R2
 0486 3D82              std y+5,R3
 0488 4E82              std y+6,R4
 048A 5F82              std y+7,R5
 048C 40900F00          lds R4,_ad1_tmp+2
 0490 50901000          lds R5,_ad1_tmp+2+1
 0494 20900D00          lds R2,_ad1_tmp
 0498 30900E00          lds R3,_ad1_tmp+1
 049C 2882              std y+0,R2
 049E 3982              std y+1,R3
 04A0 4A82              std y+2,R4
 04A2 5B82              std y+3,R5
 04A4 20910B00          lds R18,_ad0_tmp+2
 04A8 30910C00          lds R19,_ad0_tmp+2+1
 04AC 00910900          lds R16,_ad0_tmp
 04B0 10910A00          lds R17,_ad0_tmp+1
 04B4 C9DD              xcall _get_5small
 04B6 202E              mov R2,R16
 04B8 3324              clr R3
 04BA 30920100          sts _small_flag+1,R3
 04BE 20920000          sts _small_flag,R2
 04C2                   .dbline 201
 04C2           ;                car_xunguang( small_flag );
 04C2 D1DE              xcall _car_xunguang
 04C4                   .dbline 203
 04C4           ;                               
 04C4           ;                 }break;
 04C4                   .dbline 203
 04C4           L51:
 04C4           L52:
 04C4                   .dbline 207
 04C4           ;               
 04C4           ;      }
 04C4           ; 
 04C4           ;        AD_mux( ad_m );                          //重新启动ADC, 重新选择基准电压和输入通道.此算法适用于多通道.
 04C4                   .dbline 207
 04C4 80910800          lds R24,_ad_m
 04C8 806C              ori R24,192
 04CA 87B9              out 0x7,R24
 04CC                   .dbline 207
 04CC                   .dbline 207
 04CC                   .dbline 208
 04CC           ;        ADCSRA |= ( 1 << ADSC ) | ( 1 << ADIE ); //开中断, 重新启动
 04CC 86B1              in R24,0x6
 04CE 8864              ori R24,72
 04D0 86B9              out 0x6,R24
 04D2                   .dbline 209
 04D2           ;        delay_nms( 1 );                          //一定要这个延时, 否则转换通道会出错
 04D2 01E0              ldi R16,1
 04D4 10E0              ldi R17,0
 04D6 0E940000          xcall _delay_nms
 04DA                   .dbline 211
 04DA           ;        
 04DA           ;        if( ad_m == 0 ) ADC_stop();
 04DA 20900800          lds R2,_ad_m
 04DE 2220              tst R2
 04E0 09F4              brne L59
 04E2           X21:
 04E2                   .dbline 211
 04E2 E9DE              xcall _ADC_stop
 04E4           L59:
 04E4                   .dbline 212
 04E4           ;        delay_nms( 2 );
 04E4 02E0              ldi R16,2
 04E6 10E0              ldi R17,0
 04E8 0E940000          xcall _delay_nms
 04EC                   .dbline -2
 04EC           L50:
 04EC                   .dbline 0 ; func end
 04EC 6096              adiw R28,16
 04EE 0E940000          xcall pop_xgset300C
 04F2 0990              ld R0,y+
 04F4 0FBE              out 0x3f,R0
 04F6 F991              ld R31,y+
 04F8 E991              ld R30,y+
 04FA B991              ld R27,y+
 04FC A991              ld R26,y+
 04FE 9991              ld R25,y+
 0500 8991              ld R24,y+
 0502 3991              ld R19,y+
 0504 2991              ld R18,y+
 0506 1991              ld R17,y+
 0508 0991              ld R16,y+
 050A 9990              ld R9,y+
 050C 8990              ld R8,y+
 050E 7990              ld R7,y+
 0510 6990              ld R6,y+
 0512 5990              ld R5,y+
 0514 4990              ld R4,y+
 0516 3990              ld R3,y+
 0518 2990              ld R2,y+
 051A 1990              ld R1,y+
 051C 0990              ld R0,y+
 051E 1895              reti
 0520                   .dbend
                        .area data(ram, con, rel)
 001D                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 001D           _model::
 001D                   .blkb 1
                        .area idata
 001D 00                .byte 0
                        .area data(ram, con, rel)
 001E                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 001E                   .dbsym e model _model c
 001E           _model_a::
 001E                   .blkb 1
                        .area idata
 001E 00                .byte 0
                        .area data(ram, con, rel)
 001F                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 001F                   .dbsym e model_a _model_a c
 001F           _count_1::
 001F                   .blkb 4
                        .area idata
 001F 00000000          .word 0,0
                        .area data(ram, con, rel)
 0023                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 0023                   .dbsym e count_1 _count_1 L
 0023           _count_2::
 0023                   .blkb 4
                        .area idata
 0023 00000000          .word 0,0
                        .area data(ram, con, rel)
 0027                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 0027                   .dbsym e count_2 _count_2 L
 0027           _count_3::
 0027                   .blkb 4
                        .area idata
 0027 00000000          .word 0,0
                        .area data(ram, con, rel)
 002B                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 002B                   .dbsym e count_3 _count_3 L
                        .area text(rom, con, rel)
 0520                   .dbfile C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
 0520                   .dbfunc e time_off _time_off fV
                        .even
 0520           _time_off::
 0520                   .dbline -1
 0520                   .dbline 228
 0520           ; }
 0520           ; //////////////////////////////寻光部分结束///////////////////////////////
 0520           ; 
 0520           ; 
 0520           ; ///////////////////////////////避障部分///////////////////////////////
 0520           ; //定义全局变量
 0520           ; uchar model = 0;
 0520           ; uchar model_a = 0;
 0520           ; uchar flag_zhangai;
 0520           ; long int count_1 = 0;
 0520           ; long int count_2 = 0;
 0520           ; long int count_3 = 0;
 0520           ; 
 0520           ; //time0 allow
 0520           ; void time_off( void )
 0520           ; {
 0520                   .dbline 229
 0520           ;        TCCR0 &=~ ( 1 << OCIE0 );
 0520 83B7              in R24,0x33
 0522 8D7F              andi R24,253
 0524 83BF              out 0x33,R24
 0526                   .dbline -2
 0526           L61:
 0526                   .dbline 0 ; func end
 0526 0895              ret
 0528                   .dbend
 0528                   .dbfunc e time_on _time_on fV
                        .even
 0528           _time_on::
 0528                   .dbline -1
 0528                   .dbline 234
 0528           ; }
 0528           ; 
 0528           ; //time0 ON
 0528           ; void time_on( void )
 0528           ; {
 0528                   .dbline 235
 0528           ;        TCCR0 |= ( 1 << OCIE0 );
 0528 83B7              in R24,0x33
 052A 8260              ori R24,2
 052C 83BF              out 0x33,R24
 052E                   .dbline -2
 052E           L62:
 052E                   .dbline 0 ; func end
 052E 0895              ret
 0530                   .dbend
 0530                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0530           _timer0_init::
 0530                   .dbline -1
 0530                   .dbline 243
 0530           ; }
 0530           ; 
 0530           ; //TIMER0 initialize - prescale:256
 0530           ; // WGM: CTC
 0530           ; // desired value: 4mSec
 0530           ; // actual value:  4.032mSec (-0.8%)
 0530           ; void timer0_init(void)
 0530           ; {
 0530                   .dbline 244
 0530           ;  TCCR0 = 0x00; //stop
 0530 2224              clr R2
 0532 23BE              out 0x33,R2
 0534                   .dbline 245
 0534           ;  TCNT0 = 0x83; //set count
 0534 83E8              ldi R24,131
 0536 82BF              out 0x32,R24
 0538                   .dbline 246
 0538           ;  OCR0  = 0x7D;  //set compare
 0538 8DE7              ldi R24,125
 053A 8CBF              out 0x3c,R24
 053C                   .dbline 247
 053C           ;  TCCR0 = 0x0C; //start timer
 053C 8CE0              ldi R24,12
 053E 83BF              out 0x33,R24
 0540                   .dbline -2
 0540           L63:
 0540                   .dbline 0 ; func end
 0540 0895              ret
 0542                   .dbend
 0542                   .dbfunc e hw_port_init _hw_port_init fV
                        .even
 0542           _hw_port_init::
 0542                   .dbline -1
 0542                   .dbline 252
 0542           ; }
 0542           ; 
 0542           ; //扫描端口初始化
 0542           ; void hw_port_init( void )
 0542           ; {
 0542                   .dbline 253
 0542           ;     DDRC &=~ ( 1 << PC0 ) | ( 1 << PC1 );     //定义PC0, PC1口为上拉
 0542 A098              cbi 0x14,0
 0544                   .dbline 254
 0544           ;     PORTC |= ( 1 << PC0 ) | ( 1 << PC1 );
 0544 85B3              in R24,0x15
 0546 8360              ori R24,3
 0548 85BB              out 0x15,R24
 054A                   .dbline -2
 054A           L64:
 054A                   .dbline 0 ; func end
 054A 0895              ret
 054C                   .dbend
 054C                   .dbfunc e int_scan _int_scan fc
                        .even
 054C           _int_scan::
 054C                   .dbline -1
 054C                   .dbline 259

⌨️ 快捷键说明

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