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

📄 geshihua.lst

📁 2010年新增TX-1C程序
💻 LST
字号:
C51 COMPILER V8.02   GESHIHUA                                                              07/09/2010 09:44:34 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE GESHIHUA
OBJECT MODULE PLACED IN geshihua.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE geshihua.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***************************************************************
   2                                                  “天祥电子”            倾情奉献
   3                                                                  www.txmcu.com
   4                                                                  www.txmcu.cn
   5          *****************************************************************
   6          程序功能:  将存储器24C02格式化!
   7          ***************************************************************/
   8          
   9          #include<reg51.h>
  10          #include <intrins.h>
  11          #define uint unsigned int
  12          #define uchar unsigned char
  13          sbit sda=P2^0;                     //IO口定义
  14          sbit scl=P2^1;
  15          
  16          void nop()
  17          {
  18   1              _nop_();
  19   1              _nop_();
  20   1      }
  21          
  22          /////////24C02读写驱动程序////////////////////
  23          void delay1(unsigned int m)
  24          {       unsigned int n;
  25   1              for(n=0;n<m;n++);
  26   1      }
  27          
  28          void init()  //24c02初始化子程序
  29          {
  30   1              scl=1;
  31   1              nop();
  32   1              sda=1;
  33   1              nop();
  34   1      }
  35          
  36          void start()        //启动I2C总线
  37          {
  38   1              sda=1;
  39   1              nop();
  40   1              scl=1;
  41   1              nop();
  42   1              sda=0;
  43   1              nop();
  44   1              scl=0;
  45   1              nop();
  46   1      }
  47          
  48          void stop()         //停止I2C总线
  49          {
  50   1              sda=0;
  51   1              nop();
  52   1              scl=1;
  53   1              nop();
  54   1              sda=1;
  55   1              nop();
C51 COMPILER V8.02   GESHIHUA                                                              07/09/2010 09:44:34 PAGE 2   

  56   1      }
  57          
  58          void writebyte(unsigned char j)  //写一个字节
  59          {
  60   1              unsigned char i,temp;
  61   1              temp=j;
  62   1              for (i=0;i<8;i++)
  63   1         {
  64   2                 temp=temp<<1;
  65   2                 scl=0;
  66   2                 nop();
  67   2                 sda=CY;              //temp左移时,移出的值放入了CY中
  68   2                 nop();
  69   2                 scl=1;               //待sda线上的数据稳定后,将scl拉高
  70   2                 nop();
  71   2         }
  72   1         scl=0;
  73   1         nop();
  74   1         sda=1;
  75   1         nop();
  76   1      }
  77          /*
  78          unsigned char readbyte()   //读一个字节
  79          {
  80             unsigned char i,j,k=0;
  81             scl=0; nop(); sda=1;
  82             for (i=0;i<8;i++)
  83             {  
  84                          nop(); scl=1; nop();
  85                  if(sda==1) 
  86                          j=1;
  87                  else
  88                          j=0;
  89                  k=(k<<1)|j;
  90                          scl=0;
  91                  }
  92                  nop();
  93                  return(k);
  94          }
  95           */
  96          void clock()         //I2C总线时钟
  97          {
  98   1         unsigned char i=0;
  99   1         scl=1;
 100   1         nop();
 101   1         while((sda==1)&&(i<255))
 102   1                i++;
 103   1         scl=0;
 104   1         nop();
 105   1      }
 106          
 107          /*
 108          ////////从24c02的地址address中读取一个字节数据/////
 109          unsigned char read24c02(unsigned char address)
 110          {
 111             unsigned char i;
 112             start();
 113             writebyte(0xa0);
 114             clock();
 115             writebyte(address);
 116             clock();
 117             start();
C51 COMPILER V8.02   GESHIHUA                                                              07/09/2010 09:44:34 PAGE 3   

 118             writebyte(0xa1);
 119             clock();
 120             i=readbyte();
 121             stop();
 122             delay1(100);
 123             return(i);
 124          } */
 125          
 126          
 127          //////向24c02的address地址中写入一字节数据info/////
 128          void write24c02(unsigned char address,unsigned char info)
 129          {
 130   1         start();
 131   1         writebyte(0xa0);
 132   1         clock();
 133   1         writebyte(address);
 134   1         clock();
 135   1         writebyte(info);
 136   1         clock();
 137   1         stop();
 138   1         delay1(5000); //这个延时一定要足够长,否则会出错。因为24c02在从sda上取得数据后,还需要一定时间的烧录过

⌨️ 快捷键说明

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