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

📄 chengxu.lst

📁 四路仿PLC继电器控制板
💻 LST
字号:
C51 COMPILER V8.05a   CHENGXU                                                              11/11/2010 12:12:55 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.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          #include<reg52.h>              //库文件
  26          #define uchar unsigned char//宏定义无符号字符型
  27          #define uint unsigned int  //宏定义无符号整型
  28          uchar dat; //存储数据值
  29          bit write=0; //写24C08 的标志;
  30          /********************************************************************
  31                                      初始定义
  32          *********************************************************************/
  33          
  34          /*定义八位输入为单片机P1口*/
  35          sbit IN0=P1^0;
  36          sbit IN1=P1^1;
  37          sbit IN2=P1^2;
  38          sbit IN3=P1^3;
  39          
  40          /*定义八位输出为单片机P2口*/
  41          sbit K1=P2^0;
  42          sbit K2=P2^1;
  43          sbit K3=P2^2;
  44          sbit K4=P2^3;
  45          /********************************************************************
  46                              24C08 读写驱动程序
  47          *********************************************************************/
  48          sbit scl=P3^6; // 24c08 SCL
  49          sbit sda=P3^7; // 24c08 SDA
  50          
  51          void delay1(uchar x)
  52          { 
  53   1      uint i;
  54   1      for(i=0;i<x;i++);
  55   1      ;
C51 COMPILER V8.05a   CHENGXU                                                              11/11/2010 12:12:55 PAGE 2   

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

 118                          向24c08 的address地址中写入一字节数据
 119          *********************************************************************/
 120          void x24c08_write(unsigned char address,unsigned char info)
 121          {
 122   1      EA=0;
 123   1      start(); writex(0xa0);
 124   1      clock(); writex(address);
 125   1      clock(); writex(info);
 126   1      clock(); stop();
 127   1      EA=1;
 128   1      delay1(50);
 129   1      }
 130          /********************************************************************
 131                                      延时函数
 132          *********************************************************************/
 133          void delay(uchar t)
 134          {
 135   1        uchar i,j;
 136   1         for(i=0;i<t;i++)
 137   1         {
 138   2               for(j=13;j>0;j--);
 139   2               { ;
 140   3               }
 141   2         }
 142   1      }
 143          /********************************************************************
 144                                      主函数
 145          *********************************************************************/
 146          void main(void)
 147          {
 148   1      x24c08_init(); //初始化24C08
 149   1      dat=x24c08_read(2);//读出保存的数据赋于dat
 150   1      dat=10;//设定操作次数
 151   1      while(1)
 152   1      {
 153   2              if(dat>=1){
 154   3              if(IN0==0){delay(100);while(!IN0);P2=0XFE;dat--;write=1;} //当IN0与GND接通后,P2口输出11111110,继电器K8

⌨️ 快捷键说明

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