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

📄 fm24c04.lst

📁 用于测试步进电机
💻 LST
字号:
C51 COMPILER V7.00  FM24C04                                                                09/14/2006 16:35:47 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE FM24C04
OBJECT MODULE PLACED IN FM24C04.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FM24C04.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND

stmt level    source

   1          //=============================
   2          #include"REG51STC.H"
   3          #include "CMD16887.H"
   4          #include<intrins.h>
   5          #include "externxy.h"
   6          
   7          #define uchar unsigned char
   8          #define uint unsigned int
   9          #define IIC_READ 0xa1    //定义读指令
  10          #define IIC_WRITE 0xa0   //定义写指令
  11          #define NOP _nop_()
  12          //========================================
  13          //功能:ROUTES TO PROVIDE A START SIGNAL
  14          //*****************************************
  15          void start(void)
  16          {
  17   1              SCL=0;SDA=1;SCL=1;SDA=0;SCL=0;
  18   1      }
  19          //=======================================
  20          //功能:ROUTES TO PROVIDE A STOP SIGNAL
  21          //***************************************
  22          void stop(void)
  23          {
  24   1              SCL=0;SDA=0;SCL=1;SDA=1;SCL=0;
  25   1      }
  26          //=====================================
  27          //功能:ROUTES TO PROVIDE ACK SINGAL
  28          //*************************************
  29          void ack(void)
  30          {
  31   1              SCL=0;SDA=0;SCL=1;SCL=0;
  32   1      }
  33          //======================================================
  34          //功能:ROUTES TO RELEASE THE SDA TO RECEIVE A ACK SIGNAL
  35          //              OR TO PROVIDE A NO_ACK SIGNAL
  36          //type=1等待应答信号
  37          //type=0 产生无应答信号
  38          //*******************************************************
  39          void nack(uchar type)
  40          {
  41   1              SCL=0;SDA=1;SCL=1;IFACK=SDA; SCL=0;
  42   1              if(type)
  43   1              {
  44   2                      if(IFACK)//如果无应答信号,则置标志位NO_ACK,程序中止
  45   2                      {
  46   3                              NO_ACK=1;//用户可以加入自己的异常处理程序
  47   3                              //while(1);
  48   3                      }
  49   2                      else NO_ACK=0;
  50   2              }
  51   1      }
  52          //=======================================================
  53          //功能:THE IIC DEVICE SHIFT OUT A BYTE  TO THE MASTER
  54          //*******************************************************
  55          uchar  inbyte(void)  //从IIC器件中读出数据
C51 COMPILER V7.00  FM24C04                                                                09/14/2006 16:35:47 PAGE 2   

  56          {  
  57   1              SDA=1;
  58   1              SCL=1;a7=SDA;SCL=0;
  59   1              SCL=1;a6=SDA;SCL=0;
  60   1              SCL=1;a5=SDA;SCL=0;
  61   1              SCL=1;a4=SDA;SCL=0;
  62   1              SCL=1;a3=SDA;SCL=0;
  63   1              SCL=1;a2=SDA;SCL=0;
  64   1              SCL=1;a1=SDA;SCL=0;
  65   1              SCL=1;a0=SDA;SCL=0;
  66   1              return(bbyte);
  67   1      }
  68          //=======================================================
  69          //功能:THE IIC DEVICE SHIFT IN A BYTE FROM THE MASTER
  70          //*******************************************************
  71          void outbyte(uchar outdata) //将数据写入IIC器件
  72          {       
  73   1              bbyte=outdata;
  74   1              SDA=a7;SCL=1;SCL=0;
  75   1              SDA=a6;SCL=1;SCL=0;
  76   1              SDA=a5;SCL=1;SCL=0;
  77   1              SDA=a4;SCL=1;SCL=0;
  78   1              SDA=a3;SCL=1;SCL=0;
  79   1              SDA=a2;SCL=1;SCL=0;
  80   1              SDA=a1;SCL=1;SCL=0;
  81   1              SDA=a0;SCL=1;SCL=0;
  82   1      }
  83          //******************************************************************
  84          //功能:写EEPROM     1BYTE  
  85          //******************************************************************
  86          void writebyte(uint add,uchar wbyte)  //add为写入地址,wbyte为写入数据
  87          {
  88   1              uchar temph,templ;
  89   1              temph=(uchar)(add/256*2+0xa0);
  90   1              templ=(uchar)(add%256);
  91   1              start();    //开始信号
  92   1              //outbyte(IIC_WRITE);   //写命令
  93   1              //nack(1);   //等待应答
  94   1              outbyte(temph);  //写地址
  95   1              nack(1);   //等待应答
  96   1              outbyte(templ);  //写地址
  97   1              nack(1);
  98   1              outbyte(wbyte);   //写数据
  99   1              nack(1);   //等待应答
 100   1              stop();    //停止信号
 101   1      }
 102          //=====================================================
 103          //   功能:读EEPROM  1BYTE
 104          //*****************************************************
 105          uchar readbyte (uint add)   //add为读地址
 106          {
 107   1              uchar temp,temph,templ;
 108   1              temph=(uchar)(add/256*2+0xa0);
 109   1              templ=(uchar)(add%256);
 110   1              start();   //开始信号
 111   1              //outbyte(IIC_WRITE);   //写命令
 112   1              //nack(1);   //等待应答
 113   1              outbyte(temph);  //写地址
 114   1              nack(1);   //等待应答
 115   1              outbyte(templ);  //写地址
 116   1              nack(1);
 117   1              start();   //开始信号
C51 COMPILER V7.00  FM24C04                                                                09/14/2006 16:35:47 PAGE 3   

 118   1              //outbyte(IIC_READ);   //读命令
 119   1              //nack(1);   //等待应答
 120   1         outbyte(temph+1);  //写地址
 121   1              nack(1);   //等待应答
 122   1      
 123   1              temp=inbyte();   //读数据
 124   1              nack(0);   //无应答
 125   1              stop();    //停止信号
 126   1              return(temp);
 127   1      }
 128          //=================================================
 129          //     功能:连写函数
 130          //add为读入EEPROM起始地址,ptr保存数据指针,writelen为写入数据长度
 131          void writebyteseq(uint add,uchar *ptr,uint writelen)
 132          {
 133   1              //uchar temp;
 134   1              uchar temph,templ;
 135   1              uint i;
 136   1              temph=(uchar)(add/256*2+0xa0);
 137   1              templ=(uchar)(add%256);
 138   1              start();
 139   1              //outbyte(IIC_WRITE);
 140   1              //nack(1);
 141   1              outbyte(temph);
 142   1              nack(1);
 143   1              outbyte(templ);
 144   1              nack(1);
 145   1              for(i=0;i<writelen;i++)
 146   1              {
 147   2              outbyte(*(ptr+i));
 148   2              nack(1);
 149   2              }
 150   1              stop();
 151   1      }
 152          /*******************************************************
 153          *       功能:连读函数--read
 154          *add为读EEPROM起始地址,ptr读出数据指针,readlen为读出数据长度
 155          ********************************************************/
 156          void readbyteseq(uint add,uchar *ptr,uint readlen)
 157          {
 158   1              uchar temph,templ;
 159   1              uint i;
 160   1              temph=(uchar)(add/256*2+0xa0);
 161   1              templ=(uchar)(add%256);
 162   1              start();
 163   1              //outbyte(IIC_WRITE);
 164   1              //nack(1);
 165   1              outbyte(temph);
 166   1              nack(1);
 167   1              outbyte(templ);
 168   1              nack(1);
 169   1              start();
 170   1              //outbyte(IIC_READ);
 171   1              //nack(1);
 172   1              outbyte(temph+1);
 173   1              nack(1);
 174   1      
 175   1              for(i=0;i<readlen-1;i++)
 176   1              {
 177   2              *(ptr+i)=inbyte();
 178   2              ack();
 179   2              
C51 COMPILER V7.00  FM24C04                                                                09/14/2006 16:35:47 PAGE 4   

 180   2              }
 181   1              *(ptr+readlen-1)=inbyte();
 182   1              nack(0);
 183   1              stop();
 184   1      
 185   1      }
 186          /********************************************************
 187          *  功能:EEPROM初始化程序
 188          *********************************************************/
 189          void eeprom_ipl(void)   
 190          {  uint i;
 191   1              void  *ptr;
 192   1              //-----------------------------------
 193   1              for(i=0;i<512;i++)
 194   1              {
 195   2                      writebyte(i,0x00);
 196   2              }
 197   1              clear_worka();
 198   1              clear_workb();
 199   1              //----------------------------
 200   1              price_a=price_b=888;//单价 
 201   1         residue_a=residue_b=30;   //提前量
 202   1              close_num_a=close_num_b=0;  //提前关机量
 203   1              increment_a=increment_b=300;  //增量
 204   1              printermode_a=printermode_b=1;  //打印机模式--手动
 205   1              pirnt_select_a=0;pirnt_select_b=1;  //选择打印机
 206   1              oil_types_a=oil_types_b=0;   //油品类别
 207   1              gunadd_a=1;gunadd_b=2;   //枪中控号
 208   1              decimal_a=2;decimal_b=2;   //小数点
 209   1              invoice_number=0;  //发票编号
 210   1              backup_sysdata();  //系统参数备份
 211   1              //----------------------------------
 212   1         ration_num_b=0x00;   //锁机密码a
 213   1              ptr=&ration_num_b;
 214   1              writebyteseq(PASSSTARTADD,ptr,4);
 215   1              ptr=&ration_num_b; //锁机密码b
 216   1              writebyteseq(PASSSTARTADD+4,ptr,4);
 217   1              //-----------------
 218   1              ptr=&invoice_number;    
 219   1          writebyteseq(506,ptr,4);
 220   1              
 221   1              updatea=1;
 222   1              updateb=1;
 223   1              //accumulative_total_list_a();  //累计转换至列表a
 224   1              //accumulative_total_list_b();  //累计转换至列表b
 225   1      }
 226          //=======================================================


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    572    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   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 + -