📄 jidong.lis
字号:
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 + -