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

📄 chengxu.lst

📁 PC控制八路继电器控制板
💻 LST
字号:
C51 COMPILER V8.05a   CHENGXU                                                              10/12/2010 23:05:16 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          当IN4口与GND口接通后,对应的继电器K4吸合(即:COM3与CK接通CB断开);
  23          当IN5口与GND口接通后,对应的继电器K3吸合(即:COM2与CK接通CB断开);
  24          当IN6口与GND口接通后,对应的继电器K2吸合(即:COM1与CK接通CB断开);
  25          当IN7口与GND口接通后,对应的继电器K1吸合(即:COM0与CK接通CB断开);
  26          
  27          当电源断电后,或者按下复位按键后,控制板再次供电,控制板恢复断电前或者复位前状态。
  28          *********************************************************************/
  29          #include<reg52.h>              //库文件
  30          #define uchar unsigned char//宏定义无符号字符型
  31          #define uint unsigned int  //宏定义无符号整型
  32          uchar dat; //存储数据值
  33          bit write=0; //写24C08 的标志;
  34          /********************************************************************
  35                                      初始定义
  36          *********************************************************************/
  37          
  38          /*定义八位输入为单片机P1口*/
  39          sbit IN0=P1^0;
  40          sbit IN1=P1^1;
  41          sbit IN2=P1^2;
  42          sbit IN3=P1^3;
  43          sbit IN4=P1^4;
  44          sbit IN5=P1^5;
  45          sbit IN6=P1^6;
  46          sbit IN7=P1^7;
  47          
  48          /*定义八位输出为单片机P2口*/
  49          sbit K1=P2^0;
  50          sbit K2=P2^1;
  51          sbit K3=P2^2;
  52          sbit K4=P2^3;
  53          sbit K5=P2^4;
  54          sbit K6=P2^5;
  55          sbit K7=P2^6;
C51 COMPILER V8.05a   CHENGXU                                                              10/12/2010 23:05:16 PAGE 2   

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

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

             -继电器断开;
 173   2      if(write==1) //判断计时器是否计时一秒
 174   2      {
 175   3      write=0; //清零
 176   3      dat=P2; //将P2口的值赋予dat
 177   3      x24c08_write(2,dat); //在24c08 的地址2 中写入数据dat
 178   3      } 
 179   2      }
 180   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    410    ----
   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 + -