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