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

📄 car_main.lis

📁 基于m16的寻迹小车(包含小车题目
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .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 + -