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

📄 robbot.lis

📁 寻迹机器人设计开发环境为ICC,可以编译成汇编,直接下栽到嵌入式avr单片机进行控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module Robbot.c
                        .area data(ram, con, rel)
 0000           _sflag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile H:\第八章源程序\Robbot.c
 0001                   .dbsym e sflag _sflag c
 0001           _crossflag::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile H:\第八章源程序\Robbot.c
 0002                   .dbsym e crossflag _crossflag c
 0002           _forflag::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile H:\第八章源程序\Robbot.c
 0003                   .dbsym e forflag _forflag c
 0003           _EkA_1::
 0003                   .blkb 4
                        .area idata
 0003 00000000          .word 0x0,0x0
                        .area data(ram, con, rel)
 0007                   .dbfile H:\第八章源程序\Robbot.c
 0007                   .dbsym e EkA_1 _EkA_1 D
 0007           _EkA_2::
 0007                   .blkb 4
                        .area idata
 0007 00000000          .word 0x0,0x0
                        .area data(ram, con, rel)
 000B                   .dbfile H:\第八章源程序\Robbot.c
 000B                   .dbsym e EkA_2 _EkA_2 D
 000B           _EkB_1::
 000B                   .blkb 4
                        .area idata
 000B 00000000          .word 0x0,0x0
                        .area data(ram, con, rel)
 000F                   .dbfile H:\第八章源程序\Robbot.c
 000F                   .dbsym e EkB_1 _EkB_1 D
 000F           _EkB_2::
 000F                   .blkb 4
                        .area idata
 000F 00000000          .word 0x0,0x0
                        .area data(ram, con, rel)
 0013                   .dbfile H:\第八章源程序\Robbot.c
 0013                   .dbsym e EkB_2 _EkB_2 D
 0013           _flage::
 0013                   .blkb 1
                        .area idata
 0013 00                .byte 0
                        .area data(ram, con, rel)
 0014                   .dbfile H:\第八章源程序\Robbot.c
 0014                   .dbsym e flage _flage c
 0014           _a::
 0014                   .blkb 1
                        .area idata
 0014 00                .byte 0
                        .area data(ram, con, rel)
 0015                   .dbfile H:\第八章源程序\Robbot.c
 0015                   .dbsym e a _a c
 0015           _c::
 0015                   .blkb 1
                        .area idata
 0015 00                .byte 0
                        .area data(ram, con, rel)
 0016                   .dbfile H:\第八章源程序\Robbot.c
 0016                   .dbsym e c _c c
 0016           _desireV::
 0016                   .blkb 2
                        .area idata
 0016 0A00              .word 10
                        .area data(ram, con, rel)
 0018                   .dbfile H:\第八章源程序\Robbot.c
 0018                   .dbsym e desireV _desireV I
 0018           _b::
 0018                   .blkb 1
                        .area idata
 0018 00                .byte 0
                        .area data(ram, con, rel)
 0019                   .dbfile H:\第八章源程序\Robbot.c
 0019                   .dbsym e b _b c
 0019           _time::
 0019                   .blkb 1
                        .area idata
 0019 00                .byte 0
                        .area data(ram, con, rel)
 001A                   .dbfile H:\第八章源程序\Robbot.c
 001A                   .dbsym e time _time c
 001A           _fob::
 001A                   .blkb 1
                        .area idata
 001A 00                .byte 0
                        .area data(ram, con, rel)
 001B                   .dbfile H:\第八章源程序\Robbot.c
 001B                   .dbsym e fob _fob c
 001B           _Task::
 001B                   .blkb 2
                        .area idata
 001B 3727              .byte 55,39
                        .area data(ram, con, rel)
 001D                   .dbfile H:\第八章源程序\Robbot.c
 001D                   .blkb 2
                        .area idata
 001D 1B29              .byte 27,41
                        .area data(ram, con, rel)
 001F                   .dbfile H:\第八章源程序\Robbot.c
 001F                   .blkb 2
                        .area idata
 001F 231B              .byte 35,27
                        .area data(ram, con, rel)
 0021                   .dbfile H:\第八章源程序\Robbot.c
 0021                   .dbsym e Task _Task A[6:6]c
                        .area text(rom, con, rel)
 0000                   .dbfile H:\第八章源程序\Robbot.c
 0000                   .dbfunc e Timer1Init _Timer1Init fV
 0000           ;           sreg -> R20
 0000           ;      temptccrB -> y+2
 0000           ;      temptccrA -> R18,R19
 0000           ;      temptimsk -> R16,R17
                        .even
 0000           _Timer1Init::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 42
 0002           ; //***************************FileName:Robbot.c***********************//
 0002           ; //***************************ICCAVR6.30编译**************************//
 0002           ; 
 0002           ; #include <io8535v.h>
 0002           ; #include <macros.h>
 0002           ; 
 0002           ; //****************************宏定义********************************//
 0002           ; #define Aa 0.5               //PID参数
 0002           ; #define Ba -0.5              //PID参数
 0002           ; #define Ca 0                 //PID参数
 0002           ; #define Ab 0.09              //PID参数
 0002           ; #define Bb -0.1              //PID参数
 0002           ; #define Cb 0                 //PID参数
 0002           ; #define U1 12                //PID参数
 0002           ; #define MaxSpeed 0x40        //最大速度
 0002           ; #define MidSpeed 0x18        //中速,用于转弯
 0002           ; #define Size 6               //任务数组大小
 0002           ; 
 0002           ; //*****************************全局变量定义**************************//
 0002           ; char  sflag=0x00;            //记录上一次校偏状态
 0002           ; char  crossflag = 0;         //过线标志,用于判断是否过线
 0002           ; char forflag=0;              //记录上一次机器人行进状态
 0002           ; char forlight;               //记录上一次A口光电传感器的状态
 0002           ; float EkA;                   //本次左边电机速度误差
 0002           ; float EkA_1=0;               //上次左边电机速度误差
 0002           ; float EkA_2=0;               //上上次左边电机速度误差
 0002           ; float EkB;                   //本次左边电机速度误差
 0002           ; float EkB_1=0;               //上次左边电机速度误差
 0002           ; float EkB_2=0;               //上上次左边电机速度误差
 0002           ; char  flage=0;
 0002           ; char  a=0;                   //溢出次数,控制PID窗口时间
 0002           ; char  c=0;                   //控制寻线频率
 0002           ; int   desireV=10;
 0002           ; char  b=0;
 0002           ; char time=0;                 //机器人行走步数
 0002           ; char  fob=0;                 //=1后退,=0前进
 0002           ; char Task[Size]={0x37,0x27,0x1B,0x29,0x23,0x1B};//任务数据数组
 0002           ; 
 0002           ; 
 0002           ; //******************************定时器1初始化*************************//
 0002           ; void Timer1Init(int temptimsk,int temptccrA,int temptccrB)
 0002           ; {unsigned char sreg;
 0002                   .dbline 43
 0002           ;  TIMSK = temptimsk;  
 0002 09BF              out 0x39,R16
 0004                   .dbline 44
 0004           ;   sreg = SREG;                             //保存全局中断标志
 0004 4FB7              in R20,0x3f
 0006                   .dbline 45
 0006           ;   _CLI();                                      //屏蔽所有中断
 0006 F894              cli
 0008                   .dbline 46
 0008           ;   TCCR1A = temptccrA;
 0008 2FBD              out 0x2f,R18
 000A                   .dbline 47
 000A           ;   TCCR1B = temptccrB;
 000A 2A80              ldd R2,y+2
 000C 3B80              ldd R3,y+3
 000E 2EBC              out 0x2e,R2
 0010                   .dbline 48
 0010           ;   SREG = sreg;                             //恢复全局中断标志
 0010 4FBF              out 0x3f,R20
 0012                   .dbline -2
 0012                   .dbline 49
 0012           ; }
 0012           L1:
 0012 00D0              rcall pop_gset1
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbsym r sreg 20 c
 0016                   .dbsym l temptccrB 2 I
 0016                   .dbsym r temptccrA 18 I
 0016                   .dbsym r temptimsk 16 I
 0016                   .dbend
 0016                   .dbfunc e SetOutputComReg1A _SetOutputComReg1A fV
 0016           ;           sreg -> R20
 0016           ;        tempocr -> R16,R17
                        .even
 0016           _SetOutputComReg1A::
 0016 00D0              rcall push_gset1
 0018                   .dbline -1
 0018                   .dbline 53
 0018           ; 
 0018           ; //******************************写OCR1A寄存器**************************//
 0018           ; void SetOutputComReg1A(int tempocr)
 0018           ; {unsigned char sreg;
 0018                   .dbline 54
 0018           ;  sreg = SREG;
 0018 4FB7              in R20,0x3f
 001A                   .dbline 55
 001A           ;   _CLI();
 001A F894              cli
 001C                   .dbline 56
 001C           ;   OCR1A = tempocr;
 001C 1BBD              out 0x2b,R17
 001E 0ABD              out 0x2a,R16
 0020                   .dbline 57
 0020           ;   SREG = sreg;
 0020 4FBF              out 0x3f,R20
 0022                   .dbline -2
 0022                   .dbline 58
 0022           ; }
 0022           L2:
 0022 00D0              rcall pop_gset1
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbsym r sreg 20 c
 0026                   .dbsym r tempocr 16 I
 0026                   .dbend
 0026                   .dbfunc e SetOutputComReg1B _SetOutputComReg1B fV
 0026           ;           sreg -> R20
 0026           ;        tempocr -> R16,R17
                        .even
 0026           _SetOutputComReg1B::
 0026 00D0              rcall push_gset1
 0028                   .dbline -1
 0028                   .dbline 63
 0028           ; 
 0028           ; 
 0028           ; //******************************写OCR1B寄存器**************************//
 0028           ; void SetOutputComReg1B(int tempocr)
 0028           ; {unsigned char sreg;
 0028                   .dbline 64
 0028           ;  sreg = SREG;
 0028 4FB7              in R20,0x3f
 002A                   .dbline 65
 002A           ;  _CLI();
 002A F894              cli
 002C                   .dbline 66
 002C           ;  OCR1B = tempocr;
 002C 19BD              out 0x29,R17
 002E 08BD              out 0x28,R16
 0030                   .dbline 67
 0030           ;  SREG = sreg;
 0030 4FBF              out 0x3f,R20
 0032                   .dbline -2
 0032                   .dbline 68
 0032           ; }
 0032           L3:
 0032 00D0              rcall pop_gset1
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r sreg 20 c
 0036                   .dbsym r tempocr 16 I
 0036                   .dbend
 0036                   .dbfunc e GetOutputComReg1A _GetOutputComReg1A fI
 0036           ;           temp -> R16,R17
                        .even
 0036           _GetOutputComReg1A::
 0036                   .dbline -1
 0036                   .dbline 73
 0036           ; 
 0036           ; 
 0036           ; //******************************读OCR1A寄存器**************************//
 0036           ; int GetOutputComReg1A()
 0036           ; {int temp;
 0036                   .dbline 74
 0036           ;  temp = OCR1A;
 0036 0AB5              in R16,0x2a
 0038 1BB5              in R17,0x2b
 003A                   .dbline 75
 003A           ;  return(temp);
 003A                   .dbline -2
 003A           L4:
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbsym r temp 16 I
 003C                   .dbend
 003C                   .dbfunc e GetOutputComReg1B _GetOutputComReg1B fI
 003C           ;           temp -> R16,R17
                        .even
 003C           _GetOutputComReg1B::
 003C                   .dbline -1
 003C                   .dbline 80
 003C           ; }
 003C           ; 
 003C           ; //******************************读OCR1B寄存器**************************//
 003C           ; int GetOutputComReg1B()
 003C           ; {int temp;
 003C                   .dbline 81
 003C           ;  temp = OCR1B;
 003C 08B5              in R16,0x28
 003E 19B5              in R17,0x29
 0040                   .dbline 82
 0040           ;  return(temp);
 0040                   .dbline -2
 0040           L5:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r temp 16 I
 0042                   .dbend
 0042                   .dbfunc e DELAY _DELAY fV
 0042           ;              i -> R20,R21
 0042           ;              j -> R22,R23
 0042           ;      delaytime -> R16,R17
                        .even
 0042           _DELAY::
 0042 00D0              rcall push_gset2
 0044                   .dbline -1
 0044                   .dbline 87
 0044           ; }
 0044           ; 
 0044           ; //******************************长延时函数***************************//
 0044           ; void DELAY(int delaytime)
 0044           ; {int i,j;
 0044                   .dbline 88
 0044           ;  for(i=0;i<=delaytime;i++)
 0044 4427              clr R20
 0046 5527              clr R21

⌨️ 快捷键说明

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