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

📄 smartcar_9.lst

📁 此程序为飞思卡尔智能车校内选拔赛主控为STC51单片机的初始程序
💻 LST
字号:
C51 COMPILER V8.02   SMARTCAR_9                                                            05/09/2008 06:31:15 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SMARTCAR_9
OBJECT MODULE PLACED IN smartcar_9.OBJ
COMPILER INVOKED BY: D:\keil uVersion 3\C51\BIN\C51.EXE smartcar_9.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define temp  P0                           //光电管接入口
   3          #define middleline 0xe7            //光电检测中间线
   4          #define startline  0x24            //起跑线
   5          #define outline 0xff               //检测不到黑线
   6          unsigned char num0=0;              //计数初值
   7          unsigned char round=14;            //舵机参数初值,设置为中间位置
   8          unsigned char speedup=8;           //电机参数初值,设置为最大速度
   9          unsigned char num1=0;              //计数初值
  10          sbit servopwm=P2^0;                        //舵机PWM输出口
  11          sbit motorpwm1=P2^6;               //电机PWM1输出口
  12          sbit motorpwm2=P2^7;               //电机PWM2输出口
  13          void init()                                        //中断初始化
  14          {
  15   1              TMOD=0x11;                                 //定时器方式1
  16   1              EA=1;                                      //开总中断
  17   1              ET0=1;                                     //允许定时器0中断
  18   1              ET1=1;                                     //允许定时器1中断
  19   1              TH0=(65536-100)/256;       //装入初值,高八位取模,100在定时器中12M下表示100us 
  20   1              TL0=(65536-100)%256;       //装入初值,低八位取余
  21   1              TH1=(65536-50)/256;                
  22   1              TL1=(65536-50)%256;                
  23   1              TR0=1;                                     //启动中断
  24   1              TR1=1;                                     //启动中断
  25   1              servopwm=1;                                //舵机初始为高电平
  26   1          motorpwm1=0;                           //IN1初始为低电平
  27   1          motorpwm2=1;                           //IN2初始为高电平
  28   1      }
  29          void timer0() interrupt 1      //定时器0方式1             
  30          { 
  31   1              TH0=(65536-100)/256;       //读初值
  32   1              TL0=(65536-100)%256;
  33   1              num0++;
  34   1              if(num0==round)                    //高电平持续时间为round
  35   1              servopwm=0;
  36   1              if(num0==200)                      //舵机周期为10ms
  37   1              {
  38   2              servopwm=1;
  39   2              num0=0;
  40   2              }
  41   1      }
  42          void timer1() interrupt 3           //定时器1方式3
  43          {
  44   1              TH1=(65536-50)/256;
  45   1              TL1=(65536-50)%256;
  46   1              num1++;
  47   1              if(num1==speedup)
  48   1          {
  49   2              motorpwm1=1;
  50   2          motorpwm2=0;
  51   2              }
  52   1              if(num1==100)                      //电机周期为1ms
  53   1              {
  54   2          motorpwm1=0;
  55   2          motorpwm2=1;
C51 COMPILER V8.02   SMARTCAR_9                                                            05/09/2008 06:31:15 PAGE 2   

  56   2              num1=0;
  57   2              }
  58   1      }
  59          void main()                                             //主函数
  60          { 
  61   1              init();                                         //初始化
  62   1              while(1)
  63   1          {
  64   2                  if(temp==0xe7)                 //检测为中间线
  65   2                      {
  66   3                        round=14;
  67   3                        speedup=8;
  68   3                      }
  69   2      
  70   2                      else
  71   2                      {
  72   3                              switch(temp)                                    
  73   3                    {         
  74   4                              case 0xf7:{round=11;speedup=12;};break;  //P0:11110111
  75   4                              case 0xf3:{round=11;speedup=16;};break;  //P0:11110011
  76   4                              case 0xfb:{round=10;speedup=20;};break;  //P0:11111011
  77   4                              case 0xf9:{round=9;speedup=24;};break;  //P0:11111001
  78   4                              case 0xfd:{round=8;speedup=28;};break;  //P0:11111101
  79   4                              case 0xfc:{round=7;speedup=36;};break;  //P0:11111100
  80   4                              case 0xfe:{round=6;speedup=55;};break;  //P0:11111110
  81   4                              case 0x7f:{round=19;speedup=55;};break;  //P0:01111111
  82   4                              case 0x3f:{round=17;speedup=36;};break;  //P0:00111111
  83   4                              case 0xbf:{round=16;speedup=28;};break;  //P0:10111111
  84   4                              case 0x9f:{round=15;speedup=24;};break;  //P0:10011111
  85   4                              case 0xdf:{round=14;speedup=20;};break;  //P0:11011111
  86   4                              case 0xcf:{round=13;speedup=16;};break;  //P0:11001111
  87   4                              case 0xef:{round=13;speedup=12;};break;  //P0:11101111
  88   4                              default: break; 
  89   4                     }                                                 
  90   3                      }                                                       
  91   2              }       
  92   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    270    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -