?? car_main.lis
字號:
.module car_main.c
.area text(rom, con, rel)
0000 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
.area data(ram, con, rel)
0000 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0000 _modle_now::
0000 .blkb 1
.area idata
0000 04 .byte 4
.area data(ram, con, rel)
0001 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0001 .dbsym e modle_now _modle_now c
0001 _modle_last::
0001 .blkb 1
.area idata
0001 04 .byte 4
.area data(ram, con, rel)
0002 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0002 .dbsym e modle_last _modle_last c
0002 _circle::
0002 .blkb 4
.area idata
0002 00000000 .word 0,0
.area data(ram, con, rel)
0006 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0006 .dbsym e circle _circle l
0006 _circle_n_new::
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0007 .dbsym e circle_n_new _circle_n_new c
0007 _circle_n_old::
0007 .blkb 1
.area idata
0007 00 .byte 0
.area data(ram, con, rel)
0008 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0008 .dbsym e circle_n_old _circle_n_old c
0008 _getlinestart::
0008 .blkb 1
.area idata
0008 00 .byte 0
.area data(ram, con, rel)
0009 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0009 .dbsym e getlinestart _getlinestart c
0009 _nextint_time::
0009 .blkb 4
.area idata
0009 00000000 .word 0,0
.area data(ram, con, rel)
000D .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
000D .dbsym e nextint_time _nextint_time L
000D _Light_time::
000D .blkb 4
.area idata
000D 00000000 .word 0,0
.area data(ram, con, rel)
0011 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0011 .dbsym e Light_time _Light_time l
0011 _light_set_flag::
0011 .blkb 1
.area idata
0011 00 .byte 0
.area data(ram, con, rel)
0012 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0012 .dbsym e light_set_flag _light_set_flag c
.area text(rom, con, rel)
0000 .dbfile d:\我的文檔\桌面\小車\car1\car_main.c
0000 .dbfunc e closeJTAG _closeJTAG fV
.even
0000 _closeJTAG::
0000 .dbline -1
0000 .dbline 45
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "delay.h"
0000 ; #include "lcd.h"
0000 ;
0000 ; //調試使用
0000 ; uint lcd_i;
0000 ; uint lcd_j;
0000 ; uint lcd_k;
0000 ;
0000 ; //尋線使用
0000 ; uchar modle_now = 4;
0000 ; uchar modle_last = 4;
0000 ;
0000 ; //計圈數
0000 ; #define LENGHT_PER_CIRCLE 18 //單位cm , 每個輪子的圈數
0000 ;
0000 ; unsigned long int circle = 0; //路程
0000 ; uchar circle_n_new = 0; //圈數
0000 ; uchar circle_n_old = 0;
0000 ; uchar getlinestart = 0; //碰到起跑線
0000 ; long int nextint_time = 0; //下次起跑線取值的時間
0000 ;
0000 ; unsigned long int Light_time = 0; //遇到一圈時,響一下,由此計時
0000 ; uchar light_set_flag = 0;
0000 ;
0000 ;
0000 ; #define ON 1
0000 ; #define OFF 0
0000 ;
0000 ; #define PWMA_HIG_VAL 110 //A電機高速時占空比, hight speed 注意,使用的是8位快速模式
0000 ; #define PWMB_HIG_VAL 110
0000 ; #define PWMA_LOW_VAL 1 //A電機低速時占空比 low speed
0000 ; #define PWMB_LOW_VAL 1
0000 ;
0000 ; #define PWMA_MID_VAL 165//A電機中速時點空比 midlle speed
0000 ; #define PWMB_MID_VAL 165
0000 ;
0000 ; #define PWMB_MAX_VAL 1023 //最大占空比 max speed
0000 ; #define PWMB_MAX_VAL 1023
0000 ; #define PWMA_MIN_VAL 0 //最小占空比 min speed
0000 ; #define PWMB_MIN_VAL 0
0000 ;
0000 ; void closeJTAG(void)// 1JTAG
0000 ; {MCUCSR|=0X80; MCUCSR|=0X80;}
0000 .dbline 45
0000 84B7 in R24,0x34
0002 8068 ori R24,128
0004 84BF out 0x34,R24
0006 .dbline 45
0006 84B7 in R24,0x34
0008 8068 ori R24,128
000A 84BF out 0x34,R24
000C .dbline -2
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
000E .dbfunc e PwmInit _PwmInit fV
.even
000E _PwmInit::
000E .dbline -1
000E .dbline 49
000E ;
000E ; /*-------------------------------PWM----------------------------------*/
000E ; void PwmInit (void)
000E ; {
000E .dbline 51
000E ; //T1 for PWM
000E ; DDRD |= ( 1 << PD4 ) | ( 1 << PD5 );
000E 81B3 in R24,0x11
0010 8063 ori R24,48
0012 81BB out 0x11,R24
0014 .dbline 52
0014 ; TCCR1A = ( 1 << WGM11 ) | ( 1 << WGM10 ) | ( 1 << COM1A1 ) | ( 1 << COM1B1 ); //匹配清0,兩路10位相位修正PWM
0014 83EA ldi R24,163
0016 8FBD out 0x2f,R24
0018 .dbline 53
0018 ; TCCR1B = ( 0 << CS12 ) | ( 1 << CS11 ) | ( 1 << CS10 ); //預分頻64
0018 83E0 ldi R24,3
001A 8EBD out 0x2e,R24
001C .dbline -2
001C L2:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
001E .dbfunc e PwmASet _PwmASet fV
001E ; P -> R16,R17
.even
001E _PwmASet::
001E .dbline -1
001E .dbline 58
001E ; }
001E ;
001E ; //設置pwm_A的占空比
001E ; void PwmASet(uint P)
001E ; {
001E .dbline 59
001E ; OCR1A = P;
001E 1BBD out 0x2b,R17
0020 0ABD out 0x2a,R16
0022 .dbline -2
0022 L3:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbsym r P 16 i
0024 .dbend
0024 .dbfunc e PwmBSet _PwmBSet fV
0024 ; P -> R16,R17
.even
0024 _PwmBSet::
0024 .dbline -1
0024 .dbline 64
0024 ; }
0024 ;
0024 ; //設置pwm_B的占空比
0024 ; void PwmBSet(uint P)
0024 ; {
0024 .dbline 65
0024 ; OCR1B = P;
0024 19BD out 0x29,R17
0026 08BD out 0x28,R16
0028 .dbline -2
0028 L4:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r P 16 i
002A .dbend
002A .dbfunc e CarGoAheadFullSpeed _CarGoAheadFullSpeed fV
.even
002A _CarGoAheadFullSpeed::
002A .dbline -1
002A .dbline 73
002A ; }
002A ;
002A ; /*------------------------------------PWM END----------------------------------------*/
002A ;
002A ; /*------------------------------------car active----------------------------------------*/
002A ; //全速向前
002A ; void CarGoAheadFullSpeed (void)
002A ; {
002A .dbline 74
002A ; PwmASet(PWMA_HIG_VAL);
002A 0EE6 ldi R16,110
002C 10E0 ldi R17,0
002E F7DF xcall _PwmASet
0030 .dbline 75
0030 ; PwmBSet(PWMB_HIG_VAL);
0030 0EE6 ldi R16,110
0032 10E0 ldi R17,0
0034 F7DF xcall _PwmBSet
0036 .dbline -2
0036 L5:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 .dbfunc e CarGoAheadMidSpeed _CarGoAheadMidSpeed fV
.even
0038 _CarGoAheadMidSpeed::
0038 .dbline -1
0038 .dbline 80
0038 ; }
0038 ;
0038 ; //中速向前
0038 ; void CarGoAheadMidSpeed(void)
0038 ; {
0038 .dbline 81
0038 ; PwmASet(PWMA_MID_VAL);
0038 05EA ldi R16,165
003A 10E0 ldi R17,0
003C F0DF xcall _PwmASet
003E .dbline 82
003E ; PwmBSet(PWMB_MID_VAL);
003E 05EA ldi R16,165
0040 10E0 ldi R17,0
0042 F0DF xcall _PwmBSet
0044 .dbline -2
0044 L6:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
0046 .dbfunc e CarTurnLeft _CarTurnLeft fV
.even
0046 _CarTurnLeft::
0046 .dbline -1
0046 .dbline 87
0046 ; }
0046 ;
0046 ; //向左
0046 ; void CarTurnLeft (void)
0046 ; {
0046 .dbline 89
0046 ; //TCNT1 = 0x3fe;
0046 ; PwmASet(PWMA_LOW_VAL);
0046 01E0 ldi R16,1
0048 10E0 ldi R17,0
004A E9DF xcall _PwmASet
004C .dbline 90
004C ; PwmBSet(PWMB_HIG_VAL);
004C 0EE6 ldi R16,110
004E 10E0 ldi R17,0
0050 E9DF xcall _PwmBSet
0052 .dbline -2
0052 L7:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
0054 .dbfunc e CarTurnRight _CarTurnRight fV
.even
0054 _CarTurnRight::
0054 .dbline -1
0054 .dbline 95
0054 ; }
0054 ;
0054 ; //向右
0054 ; void CarTurnRight (void)
0054 ; {
0054 .dbline 97
0054 ; //TCNT1 = 0x3fe;
0054 ; PwmASet(PWMA_HIG_VAL);
0054 0EE6 ldi R16,110
0056 10E0 ldi R17,0
0058 E2DF xcall _PwmASet
005A .dbline 98
005A ; PwmBSet(PWMB_LOW_VAL);
005A 01E0 ldi R16,1
005C 10E0 ldi R17,0
005E E2DF xcall _PwmBSet
0060 .dbline -2
0060 L8:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
0062 .dbfunc e CarStop _CarStop fV
.even
0062 _CarStop::
0062 .dbline -1
0062 .dbline 103
0062 ; }
0062 ;
0062 ; //停止
0062 ; void CarStop (void)
0062 ; {
0062 .dbline 105
0062 ; //TCNT1 = 0x3fe;
0062 ; PwmASet(PWMA_MIN_VAL);
0062 0027 clr R16
0064 1127 clr R17
0066 DBDF xcall _PwmASet
0068 .dbline 106
0068 ; PwmBSet(PWMB_MIN_VAL);
0068 0027 clr R16
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -