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

📄 qcqx.lst

📁 单片机智能产品c语言设计实例详解?テ悄懿穋语言设计实例详解单片机智能产品c语言设计实例详解
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   QCQX                                                                  11/18/2005 20:12:52 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE QCQX
OBJECT MODULE PLACED IN qcqx.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE qcqx.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <AT89X51.H>//11.0592MHz,看门狗工作
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          #define ON 0;
   5          #define OFF 1;
   6          #define reset() {WDT=0x1e;WDT=0xe1;}//看门狗复位宏定义
   7          uchar code DATA_7SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,
   8                              0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的数码管段码*/
   9          uint deda;      //1ms计时单元
  10          uchar sec;              //计时秒
  11          char set_min;   //设定分
  12          uchar min_5m; //5分钟计数器
  13          uchar val; //中间变量
  14          uchar pwm_val; //调宽脉冲变量值
  15          char push_val; //压力变化值
  16          sfr WDT=0xa6;//定义看门狗定时器
  17          sbit pushdec_key=P1^4; //压力-键
  18          sbit pushinc_key=P1^3; //压力+键
  19          sbit timedec_key=P1^2; //时间-键
  20          sbit timeinc_key=P1^1; //时间+键
  21          sbit buzz=P3^5; //驱动蜂鸣器端
  22          sbit out=P3^6;//调宽脉冲输出端
  23          sbit relay=P3^7; //驱动继电器端
  24          uchar dis_sel; //显示内容散转标志
  25          bit over_5m; //5分钟溢出标志
  26          bit flag_5m; //5分钟标志
  27          bit flag_5s; //5秒钟标志
  28          bit start; //启动标志
  29          bit dis_flag; //显示标志
  30          bit key_flag; //按下键标志
  31          bit buzz_sound; //蜂鸣器声响标志
  32          bit y; //中间变量
  33          bit out_flag;//pwm输出标志
  34          /*****************函数声明列表*****************/
  35          void time_conv(void);// 时间计算子函数
  36          void pwm_out(void);// 调宽脉冲输出子函数
  37          void push_dis(void); //显示压力子函数
  38          void oil_dis(void); //显示缺油子函数
  39          void normal_dis(void) ;//显示正常工作子函数
  40          void other_dis(void); //显示(缺油、超温)子函数
  41          void temp_dis(void); //显示超温子函数
  42          void oil_low(void); //缺油处理子函数
  43          void temp_over(void); //超温处理子函数
  44          void other(void); //(缺油、超温)处理子函数
  45          void buzz_control(void); //控制蜂鸣器子函数
  46          void delay(uint k); //延时子函数
  47          void init(void); //初始化子函数
  48          void init_timer0();//定时器0初始化子函数
  49          void init_timer1();//定时器1初始化子函数
  50          void key(void)  ; //按键/感应开关处理子函数
  51          void close(void); //关机子函数
  52          void time_inc(void); //时间+子函数
  53          void time_dec(void); //时间-子函数
  54          void push_inc(void); //压力+子函数
  55          void push_dec(void); //压力-子函数
C51 COMPILER V7.06   QCQX                                                                  11/18/2005 20:12:52 PAGE 2   

  56          void normal_work(void); //正常工作子函数
  57          /**********************************/
  58          /*******************初始化**********************/
  59          void init()
  60          {
  61   1      IT0=1;
  62   1      IE=0x8b;
  63   1      reset()
  64   1      }       
  65          /*********************定时器T0初始化************************/
  66          void init_timer0()
  67          {
  68   1      TMOD=0x11;
  69   1      TH0=-(1150/256);
  70   1      TL0=-(1150%256);
  71   1      TR0=0;ET0=1;EA=1;
  72   1      }
  73          /*************定时器T1初始化************/
  74          /*定时器T1初始化*/
  75          void init_timer1()
  76          {
  77   1      TH1=-(5000/256);
  78   1      TL1=-(5000%256);
  79   1      TR1=1;ET1=1;EA=1;
  80   1      }
  81          /*************延时子函数***************/
  82          /*延时子函数*/
  83          void delay(uint k)
  84          {
  85   1      uint i,j;
  86   1      for(i=0;i<k;i++){
  87   2      for(j=0;j<60;j++)
  88   2      {;}     reset()}
  89   1      }
  90          
  91          
  92          /********************外中断0服务子函数*********************/
  93          void int0_serve(void) interrupt 0 using 1
  94          {
  95   1      delay(20);
  96   1      if(P3_2==0)
  97   1      start=!start;
  98   1              while(P3_2==0)
  99   1              {delay(20);
 100   2              if(P3_2==1)break;}
 101   1      }
 102          /****************************************/
 103          /*1mS定时中断服务子函数*/
 104          void timer0(void) interrupt 1  using 2
 105          {
 106   1      TH0=-(1150/256);
 107   1      TL0=-(1150%256);
 108   1      deda++;
 109   1      pwm_val++;
 110   1      pwm_out();
 111   1      time_conv();
 112   1      }
 113          /*************调宽脉冲输出子函数***************/
 114          void pwm_out(void)
 115          {
 116   1              if(out_flag)
 117   1              {
C51 COMPILER V7.06   QCQX                                                                  11/18/2005 20:12:52 PAGE 3   

 118   2                      if(pwm_val<=(push_val+30)) {out=ON;}
 119   2                      else {out=OFF;}
 120   2                      if(pwm_val>=50) pwm_val=0;
 121   2              }
 122   1              else out=OFF;
 123   1      }
 124          /****************时间计算子函数***************/
 125          void time_conv(void)
 126          {
 127   1      if(deda>=1000){sec++;deda=0;}
 128   1      if(deda==500){buzz_sound=!buzz_sound;}
 129   1      if(sec>=60)
 130   1      {set_min--;sec=0;
 131   2              if(flag_5m)min_5m++;
 132   2      }
 133   1      if(min_5m>=5){over_5m=1;min_5m=0;}
 134   1      if(set_min<=0)set_min=0;
 135   1      /***************/
 136   1      }
 137          
 138          /**************** T1 5ms定时中断服务子函数(显示用)******************/
 139          void timer1(void) interrupt 3  using 3
 140          {
 141   1      TH1=-(5000/256);
 142   1      TL1=-(5000%256);
 143   1              if(start)
 144   1              {       
 145   2                      switch (dis_sel)
 146   2                      {case 0:normal_dis();break;
 147   3                      case 1:oil_dis();break; 
 148   3                      case 2:temp_dis();break;                
 149   3                      case 3:other_dis();break;
 150   3                      case 4:push_dis();break;        
 151   3                      default:break;
 152   3                      }
 153   2              }
 154   1                      else 
 155   1                      { P2=0x00;P3=0xff;}
 156   1              reset()
 157   1      }
 158          /*******************压力调整显示子函数*********************/
 159          void push_dis(void)
 160          {
 161   1              if(dis_flag)

⌨️ 快捷键说明

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