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

📄 car.lis

📁 飞思卡尔系列单片机智能汽车程序源代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -