iic_app.lst

来自「菜鸟,详细NRF24E1运用,程序,电路」· LST 代码 · 共 235 行

LST
235
字号
C51 COMPILER V9.00   IIC_APP                                                               11/13/2010 14:52:47 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE IIC_APP
OBJECT MODULE PLACED IN IIC_app.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL C  V4\C51\BIN\C51.EXE IIC_app.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

*** WARNING C500 IN LINE 1 OF IIC_APP.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))

   1          #include "reg24le1.h"
   2          #include "IIC_app.h"
   3          #include "intrins.h"
   4          
   5          void delay(unsigned int dx)
   6          {
   7   1      unsigned int di;
   8   1        for(;dx>0;dx--)
   9   1          for(di=120;di>0;di--)
  10   1                  {
  11   2                      ;
  12   2                      }
  13   1       }
  14                                          
  15          void IIC_init()
  16          {
  17   1      FREQSEL(2);
  18   1      MODE(MASTER);
  19   1      W2CON1|=0x20;     //屏蔽所有的中断
  20   1      W2SADR=0x00;
  21   1      EN2WIRE();        //使能2-wire
  22   1      }
  23          
  24          void Io_config()
  25          {
  26   1      //LED p00
  27   1      P0DIR&=0XFE;      //LED 输出
  28   1      P00=0;
  29   1      P1DIR|=0X01;
  30   1      P10=0X01;
  31   1      }
  32          
  33          void uart_init()
  34          {
  35   1          CLKCTRL = 0x28;                         // 设置时钟源为16M  
  36   1              CLKLFCTRL = 0x01; 
  37   1      
  38   1              P0DIR &= 0xF7;                          // P03 (TxD) 
  39   1              P0DIR |= 0x10;                          // P04 (RxD)  
  40   1              P0|=0x18;        
  41   1                      
  42   1              S0CON = 0x50;  
  43   1              PCON |= 0x80;                           // 波特率倍增
  44   1              WDCON |= 0x80;                          // 选择内部波特率发生器
  45   1              
  46   1              S0RELL = 0xFB;  
  47   1              S0RELL = 0xF3;              // 波特率38400
  48   1              
  49   1      //      ES0=1;
  50   1      }
  51          
  52          void ex_int(void)
  53          {
  54   1      IEN0|=0X80;
C51 COMPILER V9.00   IIC_APP                                                               11/13/2010 14:52:47 PAGE 2   

  55   1      IEN0|=0X01;
  56   1      TCON|=0X01;       //下降沿触发
  57   1      INTEXP|=0x08;     //从P05输入中断
  58   1      P0DIR|=0X20;      //P05输入
  59   1      P0DIR|=0x40;      //P06输入
  60   1      P05=1;
  61   1      P06=1;
  62   1      }
  63          
  64          void send(unsigned char ch)
  65          {
  66   1      
  67   1      S0BUF=ch;
  68   1      while(!TI0);
  69   1      TI0=0;
  70   1      }
  71          
  72          unsigned char readbyte(unsigned int addr)
  73          {
  74   1      unsigned char byte;
  75   1      START();
  76   1      W2DAT=((slaveaddr+0xa0)<<1)+0;//write from slave
  77   1      while(ACK);
  78   1      W2DAT=addr;
  79   1      while(ACK);
  80   1      START();
  81   1      W2DAT=((slaveaddr+0xa0)<<1)+1;//read from slave
  82   1      while(ACK);
  83   1      while(!READY);
  84   1      byte=W2DAT;
  85   1      STOP();
  86   1      return byte;
  87   1      
  88   1      }
  89          //选择写
  90          void writebyte(unsigned int addr,unsigned char dat)
  91          {
  92   1      unsigned char byte=dat;
  93   1      START();
  94   1      W2DAT=((slaveaddr+0xa0)<<1)+0;//write
  95   1      if(!ACK) //IF ACK
  96   1      W2DAT=addr;
  97   1      if(!ACK)
  98   1      W2DAT=byte;
  99   1      STOP();
 100   1      }
 101          
 102          //立即读
 103          void multyread(char *buffer,int len)
 104          {
 105   1      char *cbuffer=buffer;
 106   1      W2DAT=((slaveaddr+0xa0)<<1)+1;//read from slave
 107   1      if(!ACK) //IF ACK
 108   1      {
 109   2      while(len--)
 110   2      {
 111   3      while(!READY);
 112   3      *cbuffer++=W2DAT;
 113   3      }
 114   2      
 115   2      STOP();
 116   2      }
C51 COMPILER V9.00   IIC_APP                                                               11/13/2010 14:52:47 PAGE 3   

 117   1      
 118   1      }
 119          
 120           //页写
 121          void multwrite(char *buffer,int addr)
 122          {
 123   1      char * cbuffer=buffer;
 124   1      char numlimit=0;
 125   1      START();
 126   1      W2DAT=((slaveaddr+0xa0)<<1)+0;//write from slave
 127   1      if(!ACK) //IF ACK
 128   1      W2DAT=addr;
 129   1      if(!ACK)
 130   1      {
 131   2      W2DAT=*cbuffer++ ;
 132   2      numlimit++;
 133   2      if(numlimit==16)
 134   2      return;
 135   2      }
 136   1      
 137   1      }
 138          
 139          //extern char wbuffer[];
 140          unsigned char wbuffer[0x10]={'a','b','c','d',
 141                                       'e','f','g','h',
 142                                                                   '0','1','2','3',
 143                                                                   '4','5','6','7',
 144                                                                    };
 145          void uart_service() interrupt  INTERRUPT_UART 
 146          {
 147   1      static int i=0;
 148   1      char buf;
 149   1      if(TI0)
 150   1      {TI0=0; }
 151   1      if(RI0)
 152   1       {
 153   2      RI0=0;
 154   2      buf=S0BUF;
 155   2      wbuffer[i++]=buf;
 156   2      if(i==0x10)
 157   2      i=0;
 158   2       }
 159   1       
 160   1      }
 161          
 162          unsigned char keycheck(void)
 163          {
 164   1      P1CON=0XD0;//P10
 165   1      if(!P10)
 166   1      {
 167   2      delay(10);
 168   2      if(!P10)
 169   2      { while(!P10);
 170   3        return true;  //如果按下就返回真
 171   3       }
 172   2      }
 173   1      return false; // 返回假
 174   1      
 175   1      }
 176          
 177          void puts(char *str)
 178          {
C51 COMPILER V9.00   IIC_APP                                                               11/13/2010 14:52:47 PAGE 4   

 179   1      while(*str!='\0')
 180   1        {send(*str++);
 181   2         }
 182   1      }
 183          
 184          char init_time=0;
 185          
 186          void ex_int_service() interrupt  0
 187          {
 188   1       
 189   1       static char flag=0;
 190   1       if(flag)
 191   1       flag=0;
 192   1       else
 193   1       flag=1;
 194   1       puts("...IIC test program!by syman...\n");
 195   1       LED=flag;
 196   1       init_time=1;
 197   1      }
 198          
 199          
 200          
 201          
 202          
 203          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    558    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =     20      10
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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