?? motor.lis
字號:
.module motor.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\小車尋跡\motor.c
0000 .dbfunc e motor_left_forward _motor_left_forward fV
0000 ; speed -> R16
.even
0000 _motor_left_forward::
0000 .dbline -1
0000 .dbline 21
0000 ; /****************************************************************
0000 ; ** 文件名:motor.c 電機驅動函數
0000 ; ****************************************************************/
0000 ; #include "config.h"
0000 ; /*#define T0_EN TIMSK |= (1<<OCIE0)|(1<<TOIE0)
0000 ; #define T0_UEN TIMSK &=~ (1<<OCIE0)|(1<<TOIE0)
0000 ; #define T0_start TCCR0 |= (1<<WGM00)|(1<<WGM01)|(1<<COM01)|0x04;
0000 ; //0x04 0100B 代表256預分頻
0000 ; #define T0_stop TCCR0 = 0x00
0000 ;
0000 ; #define T2_EN TIMSK |= (1<<OCIE2)|(1<<TOIE2)
0000 ; #define T2_UEN TIMSK &=~ (1<<OCIE2)|(1<<TOIE2)
0000 ; #define T2_start TCCR2 = (1<<WGM20)|(1<<WGM21)|(1<<COM21)|0x06
0000 ; #define T2_stop TCCR2 = 0x00
0000 ;
0000 ;
0000 ;
0000 ; /************************左電機動作*****************************/
0000 ; //左電機前進
0000 ; void motor_left_forward(uint8 speed)
0000 ; {
0000 .dbline 22
0000 ; motol_uen1;
0000 C198 cbi 0x18,1
0002 .dbline 23
0002 ; motol_en2;
0002 C29A sbi 0x18,2
0004 .dbline 24
0004 ; if(speed!=0) //加入調速指令
0004 0023 tst R16
0006 09F0 breq L2
0008 .dbline 25
0008 ; {
0008 .dbline 26
0008 ; OCR0=speed;
0008 0CBF out 0x3c,R16
000A .dbline 27
000A ; }
000A L2:
000A .dbline 28
000A ; T0_EN;
000A 89B7 in R24,0x39
000C 8360 ori R24,3
000E 89BF out 0x39,R24
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r speed 16 c
0012 .dbend
0012 .dbfunc e motor_left_backward _motor_left_backward fV
0012 ; speed -> R16
.even
0012 _motor_left_backward::
0012 .dbline -1
0012 .dbline 32
0012 ; }
0012 ; //左電機后退
0012 ; void motor_left_backward(uint8 speed)
0012 ; {
0012 .dbline 33
0012 ; motol_en1;
0012 C19A sbi 0x18,1
0014 .dbline 34
0014 ; motol_uen2;
0014 C298 cbi 0x18,2
0016 .dbline 35
0016 ; if(speed!=0) //加入調速指令
0016 0023 tst R16
0018 09F0 breq L5
001A .dbline 36
001A ; {
001A .dbline 37
001A ; OCR0=speed;
001A 0CBF out 0x3c,R16
001C .dbline 38
001C ; }
001C L5:
001C .dbline 39
001C ; T0_EN;
001C 89B7 in R24,0x39
001E 8360 ori R24,3
0020 89BF out 0x39,R24
0022 .dbline -2
0022 L4:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbsym r speed 16 c
0024 .dbend
0024 .dbfunc e motor_left_speed_set _motor_left_speed_set fV
0024 ; speed -> R16
.even
0024 _motor_left_speed_set::
0024 .dbline -1
0024 .dbline 43
0024 .dbline 44
0024 0023 tst R16
0026 09F0 breq L8
0028 .dbline 45
0028 .dbline 46
0028 0CBF out 0x3c,R16
002A .dbline 47
002A L8:
002A .dbline -2
002A L7:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r speed 16 c
002C .dbend
002C .dbfunc e motor_left_stop _motor_left_stop fV
.even
002C _motor_left_stop::
002C .dbline -1
002C .dbline 51
002C ; }
002C ; //左電機速度設定
002C ; void motor_left_speed_set(uint8 speed)
002C ; {
002C ; if(speed!=0)
002C ; {
002C ; OCR0=speed;
002C ; }
002C ; }
002C ; //左電機滑行
002C ; void motor_left_stop(void)
002C ; {
002C .dbline 52
002C ; motol_uen1;
002C C198 cbi 0x18,1
002E .dbline 53
002E ; motol_uen2;
002E C298 cbi 0x18,2
0030 .dbline 54
0030 ; T0_UEN;
0030 89B7 in R24,0x39
0032 8D7F andi R24,253
0034 89BF out 0x39,R24
0036 .dbline -2
0036 L10:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 .dbfunc e motor_left_quick_stop _motor_left_quick_stop fV
.even
0038 _motor_left_quick_stop::
0038 .dbline -1
0038 .dbline 58
0038 ; }
0038 ; //左電機急停
0038 ; void motor_left_quick_stop(void)
0038 ; {
0038 .dbline 59
0038 ; motol_en1;
0038 C19A sbi 0x18,1
003A .dbline 60
003A ; motol_en2;
003A C29A sbi 0x18,2
003C .dbline 61
003C ; T0_UEN;
003C 89B7 in R24,0x39
003E 8D7F andi R24,253
0040 89BF out 0x39,R24
0042 .dbline -2
0042 L11:
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbend
0044 .dbfunc e motor_right_forward _motor_right_forward fV
0044 ; speed -> R16
.even
0044 _motor_right_forward::
0044 .dbline -1
0044 .dbline 67
0044 ; }
0044 ;
0044 ; /*************************右電機動作*****************************/
0044 ; //右電機前進
0044 ; void motor_right_forward(uint8 speed)
0044 ; {
0044 .dbline 68
0044 ; motor_en1;
0044 C49A sbi 0x18,4
0046 .dbline 69
0046 ; motor_uen2;
0046 C598 cbi 0x18,5
0048 .dbline 70
0048 ; if(speed!=0) //加入調速指令
0048 0023 tst R16
004A 21F0 breq L13
004C .dbline 71
004C ; {
004C .dbline 72
004C ; OCR2=speed;
004C 03BD out 0x23,R16
004E L15:
004E .dbline 73
004E L16:
004E .dbline 73
004E 22B4 in R2,0x22
0050 20FC sbrc R2,0
0052 FDCF rjmp L15
0054 .dbline 74
0054 L13:
0054 .dbline -2
0054 L12:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbsym r speed 16 c
0056 .dbend
0056 .dbfunc e motor_right_backward _motor_right_backward fV
0056 ; speed -> R16
.even
0056 _motor_right_backward::
0056 .dbline -1
0056 .dbline 79
0056 ; while(ASSR&(1<<TCR2UB)==1) ; //異步操作需要等待 OCR2寫入完畢
0056 ; }
0056 ; //T2_EN;
0056 ; }
0056 ; //右電機后退
0056 ; void motor_right_backward(uint8 speed)
0056 ; {
0056 .dbline 80
0056 ; motor_uen1;
0056 C498 cbi 0x18,4
0058 .dbline 81
0058 ; motor_en2;
0058 C59A sbi 0x18,5
005A .dbline 82
005A ; if(speed!=0) //加入調速指令
005A 0023 tst R16
005C 21F0 breq L19
005E .dbline 83
005E ; {
005E .dbline 84
005E ; OCR2=speed;
005E 03BD out 0x23,R16
0060 L21:
0060 .dbline 85
0060 L22:
0060 .dbline 85
0060 22B4 in R2,0x22
0062 20FC sbrc R2,0
0064 FDCF rjmp L21
0066 .dbline 86
0066 L19:
0066 .dbline -2
0066 L18:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r speed 16 c
0068 .dbend
0068 .dbfunc e motor_right_speed_set _motor_right_speed_set fV
0068 ; speed -> R16
.even
0068 _motor_right_speed_set::
0068 .dbline -1
0068 .dbline 91
0068 ; while(ASSR&(1<<TCR2UB)==1) ; //異步操作需要等待 OCR2寫入完畢
0068 ; }
0068 ; //T2_EN;
0068 ; }
0068 ; //右電機速度設定
0068 ; void motor_right_speed_set(uint8 speed)
0068 ; {
0068 .dbline 92
0068 ; if(speed!=0)
0068 0023 tst R16
006A 21F0 breq L25
006C .dbline 93
006C ; {
006C .dbline 94
006C ; OCR0=speed;
006C 0CBF out 0x3c,R16
006E L27:
006E .dbline 95
006E L28:
006E .dbline 95
006E 22B4 in R2,0x22
0070 20FC sbrc R2,0
0072 FDCF rjmp L27
0074 .dbline 96
0074 L25:
0074 .dbline -2
0074 L24:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbsym r speed 16 c
0076 .dbend
0076 .dbfunc e motor_right_stop _motor_right_stop fV
.even
0076 _motor_right_stop::
0076 .dbline -1
0076 .dbline 100
0076 ; while(ASSR&(1<<TCR2UB)==1) ; //異步操作需要等待 OCR2寫入完畢
0076 ; }
0076 ; }
0076 ; //右電機滑行
0076 ; void motor_right_stop(void)
0076 ; {
0076 .dbline 101
0076 ; motor_uen1;
0076 C498 cbi 0x18,4
0078 .dbline 102
0078 ; motor_uen2;
0078 C598 cbi 0x18,5
007A .dbline 103
007A ; T2_UEN;
007A 89B7 in R24,0x39
007C 8F77 andi R24,127
007E 89BF out 0x39,R24
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -