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

📄 222.lst

📁 循迹小车
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   222                                                                   04/18/2008 21:53:47 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 222
OBJECT MODULE PLACED IN C:\222\222.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\222\222.C DB SB OE

line level    source

   1          #include<intrins.h>
   2          #include<reg51.h>
   3          #include<1602.h>
   4          unsigned char code xiaoche[] = {"xiaoche"};
   5          unsigned char code mm[] = {"mm"};
   6          unsigned char code distance[]={"distance"};
   7          unsigned char code time[]={"time"};
   8          unsigned char zkbz=0 ;    /*占空比*/
   9          unsigned char zkby=0 ;
  10          unsigned char t=0;        /* 定时器中断计数器 */
  11          unsigned int juli=0;      /*距离*/
  12          unsigned char a=0;
  13          unsigned char sl=0;        /*时间秒*/
  14          unsigned char sh=0;        /*时间秒*/
  15          unsigned char fl=0;        /*时间分*/
  16          unsigned char fh=0;        /*时间分*/
  17          unsigned int dis=0;       /*实际距离*/
  18          bit flag=0;               /*标志位*/
  19          sbit gm=P2^3;             /*光敏*/
  20          
  21          /********************************************************
  22                      控制口定义
  23          *********************************************************/
  24          sbit en1  =P1^1; /* L298的Enable A */
  25          sbit s1   =P1^0; /* L298的Input 1 */
  26          sbit s2   =P1^2; /* L298的Input 2 */
  27          sbit en2  =P1^4; /* L298的Enable A */
  28          sbit s3   =P1^3; /* L298的Input 1 */
  29          sbit s4   =P1^5; /* L298的Input 2 */
  30          sbit Guandian0=P2^0;
  31          sbit Guandian1=P2^1;
  32          sbit Guandian2=P2^2;
  33          
  34          
  35          /*******************************************************
  36                             外部中断 计算路程
  37          ********************************************************/
  38          void service_int0() interrupt 0 
  39          {
  40   1        EX0=0;
  41   1        if(flag==0)juli++;
  42   1        else juli--;
  43   1        dis=juli*5;
  44   1        DispOneChar(9,1,dis/10000);
  45   1        DispOneChar(11,1,dis/1000%10);
  46   1        DispOneChar(12,1,dis/100%10);
  47   1        EX0=1;
  48   1       }
  49          
  50          /*************************************************************
  51                              定时器0服务程序
  52          *************************************************************/
  53          
  54          void timer0() interrupt 1 /* T0中断服务程序 */
  55          {
C51 COMPILER V8.08   222                                                                   04/18/2008 21:53:47 PAGE 2   

  56   1       if(t<zkbz) en1=1; else en1=0; /* 产生电机1的PWM信号 */
  57   1       if(t<zkby) en2=1; else en2=0;/* 产生电机1的PWM信号 */
  58   1       t++;
  59   1       if(t>=100) t=0; /* 1个PWM信号由100次中断产生 */
  60   1      }
  61          
  62          /*************************************************************
  63                              定时器1服务程序
  64          *************************************************************/
  65          void timer1() interrupt 3       
  66          {
  67   1       unsigned char cnt;
  68   1       TH1=(65536-50000)/256;              
  69   1       TL1=(65536-50000)%256;
  70   1       cnt++;
  71   1       if(cnt>=20)
  72   1         {
  73   2          cnt=0;
  74   2          ++sl;
  75   2          if(sl==10)
  76   2            {
  77   3             sl=0;
  78   3             ++sh;
  79   3             if(sh==6)
  80   3               {
  81   4                sh=0;
  82   4                ++fl;
  83   4                if(fl==10)
  84   4                  {
  85   5                   fl=0;
  86   5                   ++fh;
  87   5                    }
  88   4                 }
  89   3             }
  90   2         }
  91   1        }
  92          
  93          /*************************************************************
  94                            循迹程序
  95          *************************************************************/
  96          void xunji(void)
  97          {
  98   1       switch(a)
  99   1             {
 100   2              case 0x02:flag=0;s1=0;s2=1;s3=0;s4=1;zkbz=40;zkby=40;break;
 101   2              case 0x01:flag=0;s1=0;s2=1;s3=1;s4=0;zkbz=70;zkby=15;break;
 102   2              case 0x04:flag=0;s1=1;s2=0;s3=0;s4=1;zkbz=15;zkby=70;break;
 103   2              case 0x03:flag=0;s1=0;s2=1;s3=0;s4=1;zkbz=65;zkby=15;break;
 104   2              case 0x06:flag=0;s1=0;s2=1;s3=0;s4=1;zkbz=15;zkby=75;break;
 105   2              case 0x00:flag=1;s1=1;s2=0;s3=1;s4=0;zkbz=30;zkby=30;break;
 106   2              default:break;
 107   2                      }
 108   1       Delay5Ms();
 109   1       }
 110          
 111          
 112          /**************************************************************
 113                             内部资源初始化
 114          *******************************************************************/
 115          void Init(void)
 116          {
 117   1       TMOD=0x12;                   /* 设定T0的工作模式为2,设定T0的工作模式为1 */
C51 COMPILER V8.08   222                                                                   04/18/2008 21:53:47 PAGE 3   

 118   1       TH0=0xB6;                    /* 装入定时器的初值 */
 119   1       TL0=0xB6;
 120   1       TH1=(65536-50000)/256;              
 121   1       TL1=(65536-50000)%256;
 122   1       IT0=1;
 123   1       IP=0x03;
 124   1       EA=1;                        /* 开总中断 */
 125   1       ET0=1;                       /* 定时器0允许中断 */
 126   1       ET1=1;                       /* 定时器1允许中断 */
 127   1       TR1=1;                       /* 启动定时器1 */
 128   1       TR0=1;                       /* 启动定时器0 */
 129   1       EX0=1;                       /*开中断0*/
 130   1       }
 131          
 132          
 133          void main(void)
 134          {
 135   1       Init();                           /*系统初始化*/
 136   1       LcdReset();                       /*液晶初始化*/
 137   1       DisplayListChar(0,0,"time",4) ;   
 138   1       DispOneChar(7,0,':');
 139   1       DisplayListChar(0,1,"distance",8) ;
 140   1       DispOneChar(10,1,':');
 141   1      
 142   1       zkbz=40;
 143   1       zkby=40;
 144   1       s1=0;s2=1;s3=0;s4=1;

⌨️ 快捷键说明

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