?? motor.lis
字號:
.module motor.c
.area text(rom, con, rel)
0000 .dbfile D:\桌面\avr程序設計\循跡小車\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 9
0000 ; /****************************************************************
0000 ; ** 文件名:motor.c 電機驅動函數
0000 ; ****************************************************************/
0000 ; #include "config.h"
0000 ;
0000 ; /************************左電機動作*****************************/
0000 ; //左電機前進
0000 ; void motor_left_forward(uint8 speed)
0000 ; {
0000 .dbline 10
0000 ; motol_uen1;
0000 C498 cbi 0x18,4
0002 .dbline 11
0002 ; motol_en2;
0002 C59A sbi 0x18,5
0004 .dbline 12
0004 ; if(speed!=0) //加入調速指令
0004 0023 tst R16
0006 09F0 breq L2
0008 .dbline 13
0008 ; {
0008 .dbline 14
0008 ; OCR0=speed;
0008 0CBF out 0x3c,R16
000A .dbline 15
000A ; }
000A L2:
000A .dbline 16
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 20
0012 ; }
0012 ; //左電機后退
0012 ; void motor_left_backward(uint8 speed)
0012 ; {
0012 .dbline 21
0012 ; motol_en1;
0012 C49A sbi 0x18,4
0014 .dbline 22
0014 ; motol_uen2;
0014 C598 cbi 0x18,5
0016 .dbline 23
0016 ; if(speed!=0) //加入調速指令
0016 0023 tst R16
0018 09F0 breq L5
001A .dbline 24
001A ; {
001A .dbline 25
001A ; OCR0=speed;
001A 0CBF out 0x3c,R16
001C .dbline 26
001C ; }
001C L5:
001C .dbline 27
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 31
0024 .dbline 32
0024 0023 tst R16
0026 09F0 breq L8
0028 .dbline 33
0028 .dbline 34
0028 0CBF out 0x3c,R16
002A .dbline 35
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 39
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 40
002C ; motol_uen1;
002C C498 cbi 0x18,4
002E .dbline 41
002E ; motol_uen2;
002E C598 cbi 0x18,5
0030 .dbline 42
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 46
0038 ; }
0038 ; //左電機急停
0038 ; void motor_left_quick_stop(void)
0038 ; {
0038 .dbline 47
0038 ; motol_en1;
0038 C49A sbi 0x18,4
003A .dbline 48
003A ; motol_en2;
003A C59A sbi 0x18,5
003C .dbline 49
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 55
0044 ; }
0044 ;
0044 ; /*************************右電機動作*****************************/
0044 ; //右電機前進
0044 ; void motor_right_forward(uint8 speed)
0044 ; {
0044 .dbline 56
0044 ; motor_en1;
0044 C19A sbi 0x18,1
0046 .dbline 57
0046 ; motor_uen2;
0046 C298 cbi 0x18,2
0048 .dbline 58
0048 ; if(speed!=0) //加入調速指令
0048 0023 tst R16
004A 21F0 breq L13
004C .dbline 59
004C ; {
004C .dbline 60
004C ; OCR2=speed;
004C 03BD out 0x23,R16
004E L15:
004E .dbline 61
004E L16:
004E .dbline 61
004E ; while(ASSR&(1<<TCR2UB)==1) ; //異步操作需要等待 OCR2寫入完畢
004E 22B4 in R2,0x22
0050 20FC sbrc R2,0
0052 FDCF rjmp L15
0054 .dbline 62
0054 ; }
0054 L13:
0054 .dbline 63
0054 ; T2_EN;
0054 89B7 in R24,0x39
0056 806C ori R24,192
0058 89BF out 0x39,R24
005A .dbline -2
005A L12:
005A .dbline 0 ; func end
005A 0895 ret
005C .dbsym r speed 16 c
005C .dbend
005C .dbfunc e motor_right_backward _motor_right_backward fV
005C ; speed -> R16
.even
005C _motor_right_backward::
005C .dbline -1
005C .dbline 67
005C ; }
005C ; //右電機后退
005C ; void motor_right_backward(uint8 speed)
005C ; {
005C .dbline 68
005C ; motor_uen1;
005C C198 cbi 0x18,1
005E .dbline 69
005E ; motor_en2;
005E C29A sbi 0x18,2
0060 .dbline 70
0060 ; if(speed!=0) //加入調速指令
0060 0023 tst R16
0062 21F0 breq L19
0064 .dbline 71
0064 ; {
0064 .dbline 72
0064 ; OCR2=speed;
0064 03BD out 0x23,R16
0066 L21:
0066 .dbline 73
0066 L22:
0066 .dbline 73
0066 ; while(ASSR&(1<<TCR2UB)==1) ; //異步操作需要等待 OCR2寫入完畢
0066 22B4 in R2,0x22
0068 20FC sbrc R2,0
006A FDCF rjmp L21
006C .dbline 74
006C ; }
006C L19:
006C .dbline 75
006C ; T2_EN;
006C 89B7 in R24,0x39
006E 806C ori R24,192
0070 89BF out 0x39,R24
0072 .dbline -2
0072 L18:
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbsym r speed 16 c
0074 .dbend
0074 .dbfunc e motor_right_speed_set _motor_right_speed_set fV
0074 ; speed -> R16
.even
0074 _motor_right_speed_set::
0074 .dbline -1
0074 .dbline 79
0074 ; }
0074 ; //右電機速度設定
0074 ; void motor_right_speed_set(uint8 speed)
0074 ; {
0074 .dbline 80
0074 ; if(speed!=0)
0074 0023 tst R16
0076 21F0 breq L25
0078 .dbline 81
0078 ; {
0078 .dbline 82
0078 ; OCR0=speed;
0078 0CBF out 0x3c,R16
007A L27:
007A .dbline 83
007A L28:
007A .dbline 83
007A 22B4 in R2,0x22
007C 20FC sbrc R2,0
007E FDCF rjmp L27
0080 .dbline 84
0080 L25:
0080 .dbline -2
0080 L24:
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbsym r speed 16 c
0082 .dbend
0082 .dbfunc e motor_right_stop _motor_right_stop fV
.even
0082 _motor_right_stop::
0082 .dbline -1
0082 .dbline 88
0082 ; while(ASSR&(1<<TCR2UB)==1) ; //異步操作需要等待 OCR2寫入完畢
0082 ; }
0082 ; }
0082 ; //右電機滑行
0082 ; void motor_right_stop(void)
0082 ; {
0082 .dbline 89
0082 ; motor_uen1;
0082 C198 cbi 0x18,1
0084 .dbline 90
0084 ; motor_uen2;
0084 C298 cbi 0x18,2
0086 .dbline 91
0086 ; T2_UEN;
0086 89B7 in R24,0x39
0088 8F77 andi R24,127
008A 89BF out 0x39,R24
008C .dbline -2
008C L30:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -