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

📄 main.lst

📁 电磁波产生控制原理
💻 LST
字号:
C51 COMPILER V8.01   MAIN                                                                  02/25/2009 22:23:30 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <stdio.h>
   3          #include "iic.h"
   4          #include "ds18b20.h"
   5          
   6          sbit logo=P1^0;                 //单片机读取标志位
   7          sbit onoff=P1^6;                //继电器控制开关位
   8          sbit test_flag=P1^1;    //数据读取正确标志
   9          sbit teat_flag=P1^2;    //温度写入正确标志
  10          sbit scr_coil_on =P2^3;
  11          sbit scr_coil_off=P2^2;
  12          sbit scr_res_on =P2^5;
  13          sbit scr_res_off=P2^4;
  14          sbit big_r=P2^6;                //大电阻继电器控制
  15          sbit min_r=P2^7;                //小电阻继电器控制
  16          
  17          int k=0,ff=0,tt=0;              
  18          int tmax,fmax;                  
  19          int max[6]={900,400,233,150,100,67};
  20                                                          //频率设定标准表
  21          unsigned char wd=0;             //温度值
  22          
  23          
  24          //-----------------------
  25          //********延时nms********
  26          void delay(unsigned int n)
  27          {
  28   1                unsigned  char i;
  29   1                while(n--)
  30   1                {
  31   2                  for( i=1000;i>0;i-- );
  32   2                } 
  33   1      }
  34          //-----------------------
  35          
  36          //-----------------------
  37          //********初始化*********
  38          void initial(void)
  39          {
  40   1            onoff=0;
  41   1                big_r=0;
  42   1                min_r=1;
  43   1                test_flag=0;
  44   1                teat_flag=0;
  45   1                scr_res_on=1;
  46   1                scr_res_off=0;
  47   1                scr_coil_on=1;
  48   1                scr_coil_off=0;
  49   1                IT0=1;
  50   1                EA=1;
  51   1                EX0=1;                        //中断源INT0开启
  52   1      }       
  53          //-----------------------
  54          //********初始化t0*********
  55          void initial_temptimer0(unsigned char time)
C51 COMPILER V8.01   MAIN                                                                  02/25/2009 22:23:30 PAGE 2   

  56          {
  57   1                int t;
  58   1      
  59   1                TR0=0;
  60   1                TMOD=0x11;            
  61   1                //定治疗时间
  62   1                t=(int)time;          //t/min
  63   1                tmax=t*1000;          //t*1min
  64   1      
  65   1                TH0=0x15;                     //60ms
  66   1                TL0=0x9F;
  67   1                ET0=1;
  68   1                TR0=1;                //定时器T0开启
  69   1      }
  70          //-----------------------
  71          //-----------------------
  72          //********初始化t1*********
  73          void initial_timer1(unsigned char fre)
  74          {
  75   1                int f;
  76   1      
  77   1                TR1=0;
  78   1                TMOD=0x11;            
  79   1                //定治疗频率
  80   1                f=(int)fre;           //f/hz
  81   1                fmax=max[f-1];        //f*1hz
  82   1      
  83   1                TH1=0xFC;                     //1ms
  84   1                TL1=0x17;
  85   1                ET1=1;
  86   1                TR1=1;                //定时器T1开启
  87   1      }
  88          //-----------------------
  89          
  90          //-----------------------
  91          //********开始缓冲********
  92          void charge(void) 
  93          {
  94   1                big_r=1;                      //控制大电阻继电器闭合
  95   1                delay(2000);          //电源通过大电阻充电
  96   1                min_r=0;                      //控制小电阻继电器闭合
  97   1                delay(50);            //大电阻,小电阻电路一起充电线圈关闭状态
  98   1                scr_coil_on=1; 
  99   1                scr_coil_off=0;
 100   1      }
 101          //-----------------------
 102          //********开始工作********
 103          void work(void)
 104          {
 105   1                scr_coil_on=0;        //控制输出交变电压
 106   1                scr_coil_off=1;
 107   1               // delay(100);                 //1hz
 108   1                delay(20);
 109   1                scr_coil_on=1;
 110   1                scr_coil_off=0;
 111   1                delay(80);
 112   1      }
 113          //-----------------------
 114          //********停止工作********
 115          discharge(void)
 116          {
 117   1                scr_coil_on=1;
C51 COMPILER V8.01   MAIN                                                                  02/25/2009 22:23:30 PAGE 3   

 118   1                scr_coil_off=0;
 119   1                min_r=1;                      //控制小电阻继电器开
 120   1            delay(600);
 121   1            big_r=0;                  //控制大电阻继电器开
 122   1            scr_res_on=0;
 123   1                scr_res_off=1;
 124   1                delay(2000);
 125   1            scr_res_on=1;
 126   1                scr_res_off=0;
 127   1            //stoptimerT0&&T1
 128   1                TR0=0;
 129   1                TR1=0;
 130   1                ET1=0;
 131   1      
 132   1      }
 133          //-----------------------         
 134          
 135          //-----------------------
 136          //********主程序*********
 137          void main()
 138          { 
 139   1                delay(200);
 140   1            initial();
 141   1                while(1);       
 142   1      
 143   1      }
 144          //-----------------------
 145          
 146          //-----------------------
 147          //********中断程序********
 148          void int0_int(void) interrupt 0 
 149          { 
 150   1                unsigned char start,stop,fre,time;
 151   1      
 152   1                EX0=0;
 153   1                onoff=1;                      //控制继电器位常闭状态
 154   1                logo=1;                       //单片机读取busy
 155   1                delay(5);                     //读开始信号
 156   1                start=IRcvStr(0xa0,0x00,0xa1);
 157   1                delay(5);                     //读停止信号
 158   1                stop=IRcvStr(0xa0,0x00,0xa2);
 159   1                delay(5);                     //读频率设定
 160   1                fre=IRcvStr(0xa0,0x00,0xa3);
 161   1                delay(5);                     //读时间设定
 162   1                time=IRcvStr(0xa0,0x00,0xa4);
 163   1                delay(5);
 164   1                logo=0;                       //单片机读取free
 165   1                onoff=0;                      //控制继电器位常开状态
 166   1      
 167   1                if(start==0x55)
 168   1                {
 169   2                      if((fre==0)||(time==0))
 170   2                              test_flag=1;
 171   2                      else
 172   2                      {
 173   3                              test_flag=0;
 174   3                              charge();       //开始充放电
 175   3                              initial_temptimer0(time);
 176   3                              initial_timer1(fre);
 177   3                      }
 178   2                 }
 179   1                if(stop==0x04)
C51 COMPILER V8.01   MAIN                                                                  02/25/2009 22:23:30 PAGE 4   

 180   1                {
 181   2                  TR0=0;
 182   2                  TR1=0;
 183   2                      discharge();
 184   2                }
 185   1                EX0=1; 
 186   1      } 
 187          //-----------------------
 188          //-----------------------
 189          //********Timer0中断程序********
 190          void timer0_int(void) interrupt 1      
 191          { 
 192   1                bit b0=0;
 193   1      
 194   1                TR0=0;
 195   1                TH0=0x15;
 196   1                TL0=0x9F;
 197   1                k++;tt++;
 198   1                TR0=1;
 199   1      
 200   1                if(tt==tmax)          //治疗时间到
 201   1                {
 202   2                  discharge();
 203   2                      tt=0;
 204   2                }
 205   1                 else
 206   1                 {
 207   2                if(k==500)            //30s时间到
 208   2                {
 209   3                      //EA=0;
 210   3                      wd=ds18b20();
 211   3                      //wd=30;
 212   3                      onoff=1;
 213   3                      logo=1;
 214   3                      delay(5);               //读写温度
 215   3                      b0=ISendStr(0xa0,0x00,0xa5,wd);
 216   3                      delay(5);
 217   3                      logo=0;
 218   3                      onoff=0;
 219   3                      //EA=1;
 220   3      
 221   3                      if(b0==1)
 222   3                      {
 223   4                        teat_flag=1;  
 224   4                      }
 225   3                      else
 226   3                        teat_flag=0;
 227   3      
 228   3                  k=0;
 229   3                }
 230   2                }
 231   1      } 
 232          //-----------------------
 233          //-----------------------
 234          //********Timer1中断程序********
 235          void timer1_int(void) interrupt 3      
 236          { 
 237   1                TR1=0;
 238   1                TH1=0xFC;
 239   1                TL1=0x17;
 240   1                ff++;
 241   1      
C51 COMPILER V8.01   MAIN                                                                  02/25/2009 22:23:30 PAGE 5   

 242   1                if(ff==fmax)          //工作频率到
 243   1                {
 244   2                  work();
 245   2                      ff=0;
 246   2                }
 247   1      
 248   1                TR1=1;
 249   1      } 
 250          //-----------------------


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1117    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       4
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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