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

📄 掉电存储..lst

📁 四路仿PLC继电器控制板
💻 LST
字号:
C51 COMPILER V8.02   礯电存储_                                                             10/14/2010 19:55:09 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 礯电存储_
OBJECT MODULE PLACED IN 掉电存储..OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 掉电存储..c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:掉电存储控制程序
   5          使用芯片:AT89S52
   6          晶振:11.0592MHZ
   7          波特率:9600
   8          编译环境:Keil
   9          作者:zhangxinchunleo
  10          网站:www.ourhc.cn
  11          淘宝店:汇诚科技 http://shop36330473.taobao.com
  12          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  13          
  14          *********************************************************************/
  15          /********************************************************************
  16          程序说明:
  17          
  18          当IN0口与GND口接通后,对应的继电器K8吸合(即:COM7与CK接通CB断开);
  19          当IN1口与GND口接通后,对应的继电器K7吸合(即:COM6与CK接通CB断开);
  20          当IN2口与GND口接通后,对应的继电器K6吸合(即:COM5与CK接通CB断开);
  21          当IN3口与GND口接通后,对应的继电器K5吸合(即:COM4与CK接通CB断开);
  22          
  23          
  24          当电源断电后,或者按下复位按键后,控制板再次供电,控制板恢复断电前或者复位前状态。
  25          *********************************************************************/
  26          #include<reg52.h>              //库文件
  27          #define uchar unsigned char//宏定义无符号字符型
  28          #define uint unsigned int  //宏定义无符号整型
  29          uchar dat; //存储数据值
  30          bit write=0; //写24C08 的标志;
  31          /********************************************************************
  32                                      初始定义
  33          *********************************************************************/
  34          
  35          /*定义八位输入为单片机P1口*/
  36          sbit IN0=P1^0;
  37          sbit IN1=P1^1;
  38          sbit IN2=P1^2;
  39          sbit IN3=P1^3;
  40          
  41          /*定义八位输出为单片机P2口*/
  42          sbit K1=P2^0;
  43          sbit K2=P2^1;
  44          sbit K3=P2^2;
  45          sbit K4=P2^3;
  46          
  47          
  48          sbit scl=P3^6;
  49          sbit sda=P3^7;
  50          
  51          
  52          /********************************************************************
  53                              24C08 读写驱动程序
  54          *********************************************************************/
  55          void delay1(uchar x)
C51 COMPILER V8.02   礯电存储_                                                             10/14/2010 19:55:09 PAGE 2   

  56          { 
  57   1      uint i;
  58   1      for(i=0;i<x;i++);
  59   1      ;
  60   1      }
  61          void flash(){ ; ; }
  62          void x24c08_init() //24c08 初始化子程序
  63          {
  64   1      scl=1; 
  65   1      flash(); 
  66   1      sda=1;                     
  67   1      flash();
  68   1      }
  69          void start() //启动(I方C)总线
  70          {
  71   1      sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();
  72   1      }
  73          void stop() //停止(I方C)总线
  74          {
  75   1      sda=0; flash(); scl=1; flash(); sda=1; flash();
  76   1      }
  77          void writex(uchar j) //写一个字节
  78          { 
  79   1      uchar i,temp;
  80   1      temp=j;
  81   1      for (i=0;i<8;i++)
  82   1      {
  83   2      temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();
  84   2      }
  85   1      scl=0; flash(); sda=1; flash();
  86   1      }
  87          uchar readx() //读一个字节
  88          {
  89   1      uchar i,j,k=0;
  90   1      scl=0; flash(); sda=1;
  91   1      for (i=0;i<8;i++)
  92   1      {
  93   2      flash(); scl=1; flash();
  94   2      if (sda==1) j=1;
  95   2      else j=0;
  96   2      k=(k<<1)|j;
  97   2      scl=0;}
  98   1      flash(); return(k);
  99   1      }
 100          void clock() //(I方C)线时钟
 101          {
 102   1      unsigned char i=0;
 103   1      scl=1; flash();
 104   1      while ((sda==1)&&(i<255))i++;
 105   1      scl=0; flash();
 106   1      }
 107          /********************************************************************
 108                          从24c08 的地址address 中读取一个字节数据
 109          *********************************************************************/
 110          unsigned char x24c08_read(unsigned char address)
 111          {
 112   1      unsigned char i;
 113   1      start(); writex(0xa0);
 114   1      clock(); writex(address);
 115   1      clock(); start();
 116   1      writex(0xa1); clock();
 117   1      i=readx(); stop();
C51 COMPILER V8.02   礯电存储_                                                             10/14/2010 19:55:09 PAGE 3   

 118   1      delay1(10);
 119   1      return(i);
 120   1      }
 121          /********************************************************************
 122                          向24c08 的address地址中写入一字节数据
 123          *********************************************************************/
 124          void x24c08_write(unsigned char address,unsigned char info)
 125          {
 126   1      EA=0;
 127   1      start(); writex(0xa0);
 128   1      clock(); writex(address);
 129   1      clock(); writex(info);
 130   1      clock(); stop();
 131   1      EA=1;
 132   1      delay1(50);
 133   1      }
 134          /********************************************************************
 135                                      延时函数
 136          *********************************************************************/
 137          void delay(uchar t)
 138          {
 139   1        uchar i,j;
 140   1         for(i=0;i<t;i++)
 141   1         {
 142   2               for(j=13;j>0;j--);
 143   2               { ;
 144   3               }
 145   2         }
 146   1      }
 147          
 148          /********************************************************************
 149                                      主函数
 150          *********************************************************************/
 151          void main(void)
 152          {
 153   1      x24c08_init(); //初始化24C08
 154   1      dat=x24c08_read(2);//读出保存的数据赋于dat
 155   1      P2=dat;//将存储的数据赋予P2口
 156   1      while(1)
 157   1      {
 158   2      if(IN0==0){delay(100);while(!IN0);P2=0XFE;write=1;} //当IN0与GND接通后,P2口输出11111110,继电器K8吸合其它
             -继电器断开;
 159   2      if(IN1==0){delay(100);while(!IN1);P2=0XFD;write=1;} //当IN1与GND接通后,P2口输出11111101,继电器K7吸合其它
             -继电器断开;
 160   2      if(IN2==0){delay(100);while(!IN2);P2=0XFB;write=1;} //当IN2与GND接通后,P2口输出11111011,继电器K6吸合其它
             -继电器断开;
 161   2      if(IN3==0){delay(100);while(!IN3);P2=0XF7;write=1;} //当IN3与GND接通后,P2口输出11110111,继电器K5吸合其它
             -继电器断开;
 162   2      
 163   2      if(write==1) //判断计时器是否计时一秒
 164   2      {
 165   3      write=0; //清零
 166   3      dat=P2; //将P2口的值赋予dat
 167   3      x24c08_write(2,dat); //在24c08 的地址2 中写入数据dat
 168   3      } 
 169   2      }
 170   1      }
 171          
 172          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   礯电存储_                                                             10/14/2010 19:55:09 PAGE 4   

   CODE SIZE        =    342    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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