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

📄 main.lst

📁 在跷跷板的一端放一个重物
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  MAIN                                                                   09/06/2007 16:30:02 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN E:\比赛\小车程序\MAIN.OBJ
COMPILER INVOKED BY: C:\COMP51\BIN\C51.EXE E:\比赛\小车程序\MAIN.C DB SB OE

stmt level    source

   1          /***************************************
   2          *电动车跷跷板
   3          *修改时间:2007-9-6 13:56
   4          *
   5          ***************************************/
   6          
   7          #include<stdio.h>
   8          #include<reg52.h>
   9          #include"tdp.h"
  10          #include"1602.h"
  11          #include "math.h"
  12          #include "ADC0832.H"
  13          #define  DELAY(t)  Alarm=t; while(Alarm!=0)
  14          
  15          /***************变量声明**************/
  16          char Speed=0;         //小车速度,-127<=Speed<=127
  17          bit  DispFlag=1;
  18          bit  TimerRun=0;
  19          uint Timer=0;
  20          uchar Alarm=0;
  21          uint ForwardTime=0;
  22          uint BackTime=0;
  23          //uchar  ADC_Value=0;
  24          char  Err=0;
  25          char  dErr=0;
  26          char BuzzerCnt=0;
  27          bit  CY_Flag=0;
  28          /*************************************************
  29          *定时0中断
  30          *功能:将Speed转为PWM输出,有自动寻黑带功能
  31          **************************************************/
  32          void t0_int(void) interrupt 1
  33          {
  34   1         static bit PWM=0;
  35   1         PWM=!PWM;
  36   1         TH0= PWM ? ~cabs(Speed) : cabs(Speed);
  37   1         TH0|=0x80;    //7-bit PWM
  38   1         if(Speed==0) PWM=0;
  39   1         if(Speed>0)
  40   1         {
  41   2            L293D_IN1=1;
  42   2            L293D_IN2=0;
  43   2            L293D_IN3=1;
  44   2            L293D_IN4=0;
  45   2            L293D_EN1=PWM & !LED_LF;
  46   2            L293D_EN2=PWM & !LED_RF;
  47   2         }
  48   1         else
  49   1         {
  50   2            L293D_IN1=0;
  51   2            L293D_IN2=1;
  52   2            L293D_IN3=0;
  53   2            L293D_IN4=1;
  54   2            L293D_EN1=PWM & !LED_LB;
  55   2            L293D_EN2=PWM & !LED_RB;
C51 COMPILER V6.12  MAIN                                                                   09/06/2007 16:30:02 PAGE 2   

  56   2         }
  57   1      }
  58          /*************************
  59          *定时1中断
  60          *功能:计时
  61          *************************/
  62          void t1_int(void) interrupt 3
  63          {
  64   1          static   char t=0,bt=0;
  65   1          TL1=(65536-50000)+6;
  66   1          TH1=(65536-50000)>>8;
  67   1          if(TimerRun)
  68   1          {
  69   2              if(++t==20)
  70   2              {
  71   3                 t=0;
  72   3                 Timer++;
  73   3                 DispFlag=1;
  74   3              }
  75   2          }
  76   1      
  77   1          if(Alarm!=0) Alarm--;
  78   1      
  79   1          if(BuzzerCnt==0){ bt=0;BuzzerPort=1;}
  80   1          else
  81   1          {
  82   2              if(++bt==20){bt=0;BuzzerCnt--;}
  83   2              BuzzerPort = bt<10;
  84   2          }
  85   1      
  86   1          CaiYang();
  87   1      }
  88          /***************************
  89          *初始化函数
  90          ***************************/
  91          void Initial(void)
  92          {
  93   1          TMOD=0x11;
  94   1          TH0=0;
  95   1          TR0=1;
  96   1          TR1=1;
  97   1          ET0=1;
  98   1          ET1=1;
  99   1          PT0=1;
 100   1          EA=1;
 101   1      }
 102          /****************************
 103          *主函数
 104          ****************************/
 105          main()
 106          {
 107   1          InitLCD();
 108   1          Initial();
 109   1          Puts("  Ready");
 110   1          if(!KeyBasic)
 111   1          {
 112   2              while(1)
 113   2              {char buf[16];
 114   3               sprintf(buf,"ADC=%-8d",(int)Err);
 115   3               Gotoxy(0,0);
 116   3               Puts(buf);
 117   3              }
C51 COMPILER V6.12  MAIN                                                                   09/06/2007 16:30:02 PAGE 3   

 118   2          }
 119   1          while(1)
 120   1          {
 121   2               if(!KeyBasic) BasicFunc();
 122   2               if(!KeyExtend) ExtendFunc();
 123   2          }
 124   1      }
 125          /***************************
 126          *基本功能执行函数
 127          ***************************/
 128          void BasicFunc(void)
 129          {
 130   1          char time[2]={0,0};
 131   1          CLRLCD;
 132   1          Timer=0;
 133   1          DELAY(20);    //delay 1s
 134   1          TimerRun=1;   //启动计时器
 135   1          Speed=127;    //启动小车
 136   1          while(1)
 137   1          {
 138   2             while(!LED_LF | !LED_RF)  //未到达B端
 139   2             {
 140   3                 if(!DispFlag) continue;
 141   3                 time[0]=Timer;
 142   3                 Disp(0,time);
 143   3             }
 144   2             Speed=0;
 145   2             Bell(5,1);
 146   2             Timer=0;
 147   2             Speed=-127;       //倒车
 148   2             while(!LED_LB | !LED_RB)  //未到达A端
 149   2             {
 150   3                 if(!DispFlag) continue;
 151   3                 time[1]=Timer;
 152   3                 Disp(0,time);
 153   3             }
 154   2             Speed=0;
 155   2             return ;
 156   2          }
 157   1      }
 158          /***************************
 159          *扩展功能执行函数
 160          ***************************/
 161          void ExtendFunc(void)
 162          {
 163   1          bit  pingheng=0;
 164   1          CLRLCD;
 165   1          Timer=0;
 166   1          Speed=0;
 167   1          DELAY(20);
 168   1          TimerRun=1;
 169   1          while(1)
 170   1          {
 171   2             if(CY_Flag)
 172   2             {
 173   3                 CY_Flag=0;
 174   3                 FuzzyCtrl();
 175   3             }
 176   2             if(DispFlag) Disp(1,(char*)&Timer);
 177   2             if( cabs(Err)>25 ) Alarm=60;
 178   2             if(!pingheng && Alarm==0)
 179   2             {
C51 COMPILER V6.12  MAIN                                                                   09/06/2007 16:30:02 PAGE 4   

 180   3                 Speed=0;
 181   3                 TimerRun=0;
 182   3                 pingheng=1;
 183   3                 Bell(5,1);
 184   3                 break;
 185   3             }
 186   2          }
 187   1          return ;
 188   1      }
 189          //
 190          void  Disp(char ID,char *p)
 191          {
 192   1          char  data  buf[16];
 193   1          DispFlag=0;
 194   1          if(ID==0)
 195   1          { //p[0]=前进时间,p[1]=后退时间
 196   2              sprintf(buf,"Forward:%-8ds",(int)p[0]);
 197   2              Gotoxy(0,0);
 198   2              Puts(buf);
 199   2              sprintf(buf,"Back:%-8ds",(int)p[1]);
 200   2              Gotoxy(0,1);
 201   2              Puts(buf);
 202   2          }
 203   1          //
 204   1          if(ID==1)
 205   1          {
 206   2              int time;
 207   2              time=*(int*)p;
 208   2              sprintf(buf,"Time:%ds    ",time);

⌨️ 快捷键说明

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