?? car.lis
字號:
.module car.c
.area text(rom, con, rel)
0000 .dbfile F:\car\car.c
.area data(ram, con, rel)
0000 .dbfile F:\car\car.c
0000 _T::
0000 .blkb 2
.area idata
0000 E803 .word 1000
.area data(ram, con, rel)
0002 .dbfile F:\car\car.c
0002 .dbsym e T _T i
.area text(rom, con, rel)
0000 .dbfile F:\car\car.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2008-4-29 16:08:41
0000 ; // Target : M32
0000 ; // Crystal: 12.000Mhz
0000 ;
0000 ; #include <iom32v.h>
0000 ; #include <macros.h>
0000 ; unsigned int T=1000;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTA = 0XFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 11
0004 ; DDRA = 0x00;//PA 為輸入口
0004 2224 clr R2
0006 2ABA out 0x1a,R2
0008 .dbline 12
0008 ; PORTB = 0xff;
0008 88BB out 0x18,R24
000A .dbline 13
000A ; DDRB = 0xff;//PB 為輸出口
000A 87BB out 0x17,R24
000C .dbline 14
000C ; PORTC = 0Xff;
000C 85BB out 0x15,R24
000E .dbline 15
000E ; DDRC = 0x00;//PC 為輸入口
000E 24BA out 0x14,R2
0010 .dbline 16
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 17
0012 ; DDRD = 0xff;//PD 為輸出口
0012 81BB out 0x11,R24
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e delay _delay fV
0016 ; i -> R20,R21
0016 ; hh -> R16,R17
.even
0016 _delay::
0016 4A93 st -y,R20
0018 5A93 st -y,R21
001A .dbline -1
001A .dbline 27
001A ; }
001A ; //============================================================================================
001A ; //函數: void delay(int hh)
001A ; //語法:void delay(int hh)
001A ; //描述:延時子程序
001A ; //參數:
001A ; //返回:無
001A ; //============================================================================================
001A ; void delay(unsigned int hh )
001A ; {
001A .dbline 29
001A ; int i;
001A ; for(i=0;i<hh;i++)
001A 4427 clr R20
001C 5527 clr R21
001E 02C0 xjmp L6
0020 L3:
0020 .dbline 30
0020 ; {
0020 .dbline 31
0020 ; ;
0020 .dbline 32
0020 ; }
0020 L4:
0020 .dbline 29
0020 4F5F subi R20,255 ; offset = 1
0022 5F4F sbci R21,255
0024 L6:
0024 .dbline 29
0024 4017 cp R20,R16
0026 5107 cpc R21,R17
0028 D8F3 brlo L3
002A X0:
002A .dbline -2
002A L2:
002A .dbline 0 ; func end
002A 5991 ld R21,y+
002C 4991 ld R20,y+
002E 0895 ret
0030 .dbsym r i 20 I
0030 .dbsym r hh 16 i
0030 .dbend
0030 .dbfunc e stop _stop fV
.even
0030 _stop::
0030 .dbline -1
0030 .dbline 96
0030 ; }
0030 ; //============================================================================================
0030 ; //函數: void pwma(int hh)
0030 ; //語法:void pwma(int hh)
0030 ; //描述: 用于控制右輪
0030 ; //參數:占空比
0030 ; //返回:無
0030 ; //============================================================================================
0030 ; /*void pwma( unsigned int hh)
0030 ; {
0030 ; unsigned int s=0;
0030 ; unsigned int T0=10000;
0030 ; unsigned int H;
0030 ; s=PORTA;
0030 ; switch(hh) //占空比
0030 ; {
0030 ; case 0: s=s&0xfc; delay(T0);break; //關占空比
0030 ; case 1: delay(1000);s=s&0xfc; delay(9000);break;
0030 ; case 2: delay(2000);s=s&0xfc; delay(8000);break;
0030 ; case 3: delay(3000);s=s&0xfc; delay(7000);break;
0030 ; case 4: delay(4000);s=s&0xfC; delay(6000);break;
0030 ; case 5: delay(5000);s=s&0xfc; delay(5000);break;
0030 ; case 6: delay(6000);s=s&0xfc; delay(4000);break;
0030 ; case 7: delay(7000);s=s&0xfc; delay(3000);break;
0030 ; case 8: delay(8000);s=s&0xfc; delay(2000);break;
0030 ; case 9: delay(9000);s=s&0xfc; delay(1000);break;
0030 ; case 10: delay(10000);s=s&0xfc;break;
0030 ; }
0030 ; }
0030 ; //============================================================================================
0030 ; //函數: void pwmb(int hh)
0030 ; //語法:void pwmb(int hh)
0030 ; //描述: 用于控制左輪
0030 ; //參數:占空比
0030 ; //返回:無
0030 ; //============================================================================================
0030 ; void pwmb( unsigned int hh) //設定TA_TIMEOUT/16=(time_cl)/0x1e00)/16=100Hz
0030 ; {
0030 ; unsigned int k=0;
0030 ; int T=10000;
0030 ; int H;
0030 ; k=PORTA;
0030 ; switch(hh) //占空比
0030 ; {
0030 ; case 0: k=k&0xf3; break; //關占空比
0030 ; case 1: delay(1000);k=k&0xf3; delay(9000);break;
0030 ; case 2: delay(2000);k=k&0xf3; delay(8000);break;
0030 ; case 3: delay(3000);k=k&0xf3; delay(7000);break;
0030 ; case 4: delay(4000);k=k&0xf3; delay(6000);break;
0030 ; case 5: delay(5000);k=k&0xf3; delay(5000);break;
0030 ; case 6: delay(6000);k=k&0xf3; delay(4000);break;
0030 ; case 7: delay(7000);k=k&0xf3; delay(3000);break;
0030 ; case 8: delay(8000);k=k&0xf3; delay(2000);break;
0030 ; case 9: delay(9000);k=k&0xf3; delay(1000);break;
0030 ; case 10: delay(10000);k=k&0xf3;break;
0030 ; }
0030 ; }*/
0030 ; //============================================================================================
0030 ; //描述:車子方向控制子程序
0030 ; //參數 無
0030 ; //返回:無
0030 ; //============================================================================================
0030 ; void stop() //停止
0030 ; {
0030 .dbline 97
0030 ; PORTB=0X00;
0030 2224 clr R2
0032 28BA out 0x18,R2
0034 .dbline 98
0034 ; delay(1000);
0034 08EE ldi R16,1000
0036 13E0 ldi R17,3
0038 EEDF xcall _delay
003A .dbline -2
003A L7:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbend
003C .dbfunc e GO _GO fV
003C ; aa -> R10,R11
.even
003C _GO::
003C AA92 st -y,R10
003E BA92 st -y,R11
0040 5801 movw R10,R16
0042 .dbline -1
0042 .dbline 103
0042 ; }
0042 ;
0042 ;
0042 ; void GO(unsigned int aa) //直線前進
0042 ; {
0042 .dbline 104
0042 ; PORTB=0X06;
0042 86E0 ldi R24,6
0044 88BB out 0x18,R24
0046 .dbline 105
0046 ; delay(aa);
0046 8501 movw R16,R10
0048 E6DF xcall _delay
004A .dbline 106
004A ; PORTB=0X00;
004A 2224 clr R2
004C 28BA out 0x18,R2
004E .dbline 107
004E ; delay(T-aa);
004E 00910000 lds R16,_T
0052 10910100 lds R17,_T+1
0056 0A19 sub R16,R10
0058 1B09 sbc R17,R11
005A DDDF xcall _delay
005C .dbline -2
005C L8:
005C .dbline 0 ; func end
005C B990 ld R11,y+
005E A990 ld R10,y+
0060 0895 ret
0062 .dbsym r aa 10 i
0062 .dbend
0062 .dbfunc e BACK _BACK fV
0062 ; bb -> R10,R11
.even
0062 _BACK::
0062 AA92 st -y,R10
0064 BA92 st -y,R11
0066 5801 movw R10,R16
0068 .dbline -1
0068 .dbline 112
0068 ;
0068 ; }
0068 ;
0068 ; void BACK(unsigned int bb) // 直線后退
0068 ; {
0068 .dbline 113
0068 ; PORTB=0X09;
0068 89E0 ldi R24,9
006A 88BB out 0x18,R24
006C .dbline 114
006C ; delay(bb);
006C 8501 movw R16,R10
006E D3DF xcall _delay
0070 .dbline 115
0070 ; PORTB=0X00;
0070 2224 clr R2
0072 28BA out 0x18,R2
0074 .dbline 116
0074 ; delay(T-bb);
0074 00910000 lds R16,_T
0078 10910100 lds R17,_T+1
007C 0A19 sub R16,R10
007E 1B09 sbc R17,R11
0080 CADF xcall _delay
0082 .dbline -2
0082 L9:
0082 .dbline 0 ; func end
0082 B990 ld R11,y+
0084 A990 ld R10,y+
0086 0895 ret
0088 .dbsym r bb 10 i
0088 .dbend
0088 .dbfunc e GTOL _GTOL fV
0088 ; cc -> R10,R11
.even
0088 _GTOL::
0088 AA92 st -y,R10
008A BA92 st -y,R11
008C 5801 movw R10,R16
008E .dbline -1
008E .dbline 120
008E ; }
008E ;
008E ; void GTOL(unsigned int cc) //前左轉
008E ; {
008E .dbline 122
008E ;
008E ; PORTB=0X02;
008E 82E0 ldi R24,2
0090 88BB out 0x18,R24
0092 .dbline 123
0092 ; delay(cc);
0092 8501 movw R16,R10
0094 C0DF xcall _delay
0096 .dbline 124
0096 ; PORTB=0X00;
0096 2224 clr R2
0098 28BA out 0x18,R2
009A .dbline 125
009A ; delay(T-cc);
009A 00910000 lds R16,_T
009E 10910100 lds R17,_T+1
00A2 0A19 sub R16,R10
00A4 1B09 sbc R17,R11
00A6 B7DF xcall _delay
00A8 .dbline -2
00A8 L10:
00A8 .dbline 0 ; func end
00A8 B990 ld R11,y+
00AA A990 ld R10,y+
00AC 0895 ret
00AE .dbsym r cc 10 i
00AE .dbend
00AE .dbfunc e GTOR _GTOR fV
00AE ; dd -> R10,R11
.even
00AE _GTOR::
00AE AA92 st -y,R10
00B0 BA92 st -y,R11
00B2 5801 movw R10,R16
00B4 .dbline -1
00B4 .dbline 129
00B4 ; }
00B4 ;
00B4 ; void GTOR(unsigned int dd) //前右轉
00B4 ; {
00B4 .dbline 131
00B4 ;
00B4 ; PORTB=0X04;
00B4 84E0 ldi R24,4
00B6 88BB out 0x18,R24
00B8 .dbline 132
00B8 ; delay(dd);
00B8 8501 movw R16,R10
00BA ADDF xcall _delay
00BC .dbline 133
00BC ; PORTB=0X00;
00BC 2224 clr R2
00BE 28BA out 0x18,R2
00C0 .dbline 134
00C0 ; delay(T-dd);
00C0 00910000 lds R16,_T
00C4 10910100 lds R17,_T+1
00C8 0A19 sub R16,R10
00CA 1B09 sbc R17,R11
00CC A4DF xcall _delay
00CE .dbline -2
00CE L11:
00CE .dbline 0 ; func end
00CE B990 ld R11,y+
00D0 A990 ld R10,y+
00D2 0895 ret
00D4 .dbsym r dd 10 i
00D4 .dbend
00D4 .dbfunc e BTOR _BTOR fV
00D4 ; cc -> R10,R11
.even
00D4 _BTOR::
00D4 AA92 st -y,R10
00D6 BA92 st -y,R11
00D8 5801 movw R10,R16
00DA .dbline -1
00DA .dbline 137
00DA ; }
00DA ; void BTOR(unsigned int cc) //后左轉
00DA ; {
00DA .dbline 139
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -