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

📄 text1.lst

📁 四路仿PLC继电器控制板
💻 LST
字号:
C51 COMPILER V8.02   TEXT1                                                                 10/28/2010 20:54:25 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.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           单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
  17          *********************************************************************/
  18          
  19          
  20          #include<reg52.h>  
  21          #define uchar unsigned char//宏定义无符号字符型
  22          #define uint unsigned int  //宏定义无符号整型
  23          uchar num;
  24          uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
  25          /*定义八位出为单片机P2口*/
  26          sbit K1=P2^0;
  27          sbit K2=P2^1;
  28          sbit K3=P2^2;
  29          sbit K4=P2^3;
  30          /*定义八位入为单片机P1口*/
  31          sbit IN0=P1^0;
  32          sbit IN1=P1^1;
  33          sbit IN2=P1^2;
  34          sbit IN3=P1^3;
  35          
  36          
  37          /********************************************************************
  38                              24C08 读写驱动程序
  39          *********************************************************************/
  40          sbit scl=P3^6; // 24c08 SCL
  41          sbit sda=P3^7; // 24c08 SDA
  42          
  43          void delay1(uchar x)
  44          { 
  45   1      uint i;
  46   1      for(i=0;i<x;i++);
  47   1      ;
  48   1      }
  49          void flash(){ ; ; }
  50          void x24c08_init() //24c08 初始化子程序
  51          {
  52   1      scl=1; 
  53   1      flash(); 
  54   1      sda=1;                     
  55   1      flash();
C51 COMPILER V8.02   TEXT1                                                                 10/28/2010 20:54:25 PAGE 2   

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

 118   1      delay1(50);
 119   1      }
 120          /********************************************************************
 121                                      延时函数
 122          *********************************************************************/
 123          void delay()
 124          {
 125   1        uchar i,j;
 126   1         for(i=0;i<250;i++){
 127   2         for(j=0;j<250;j++);
 128   2               { ;}}
 129   1      }
 130          
 131          void  chuan()
 132          {
 133   1       TMOD=0x20;      //T1为定时器产生波特率//
 134   1       SCON=0x50;       /*串口定义方式2用定时器1产生波特率9600*/
 135   1       PCON=0x00;       /*不倍增波特率*/
 136   1       TL1=0xfd;
 137   1       TH1=0xfd;
 138   1       EA=1;ES=1;
 139   1       IP=0x00;
 140   1       TR1=1;           /*定时器工作*/
 141   1      }
 142          
 143          void anjian()
 144          {
 145   1      if(IN0==0){delay();while(!IN0);K1=!K1;F0=1;}
 146   1      if(IN1==0){delay();while(!IN1);K2=!K2;F0=1;}
 147   1      if(IN2==0){delay();while(!IN2);K3=!K3;F0=1;}
 148   1      if(IN3==0){delay();while(!IN3);K4=!K4;F0=1;}
 149   1      }
 150          void kou()
 151          {
 152   1        switch(dat)
 153   1       {
 154   2      case  'A' :{delay();K1=0;F0=1;}break;
 155   2      case  'B' :{delay();K2=0;F0=1;}break;
 156   2      case  'C' :{delay();K3=0;F0=1;}break;
 157   2      case  'D':{delay();K4=0;F0=1;}break;
 158   2      case  'K' :{delay();P2=0xf0;F0=1;}break;
 159   2      case  'a' :{delay();K1=1;F0=1;}break;
 160   2      case  'b' :{delay();K2=1;F0=1;}break;
 161   2      case  'c' :{delay();K3=1;F0=1;}break;
 162   2      case  'd' :{delay();K4=1;F0=1;}break;
 163   2      case  'k' :{delay();P2=0xff;F0=1;}break;
 164   2      default:break;  
 165   2      }
 166   1      }
 167          void main()
 168          { chuan();
 169   1        x24c08_init();
 170   1        num=x24c08_read(0x01);
 171   1        P2=num;
 172   1        while(1)
 173   1        {
 174   2         anjian();
 175   2         if(RI==1)
 176   2         {
 177   3              RI=0;
 178   3              dat=SBUF;
 179   3              kou();
C51 COMPILER V8.02   TEXT1                                                                 10/28/2010 20:54:25 PAGE 4   

 180   3              }
 181   2              if(F0==1)
 182   2              {F0=0;
 183   3              num=P2;
 184   3              x24c08_write(0x01,num);
 185   3               }
 186   2              }
 187   1         }
 188          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    487    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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