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

📄 twi.lst

📁 twi sample programme for at89c5153
💻 LST
字号:
C51 COMPILER V7.10   TWI                                                                   06/01/2004 14:42:31 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE TWI
OBJECT MODULE PLACED IN twi.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE twi.c BROWSE DEBUG OBJECTEXTEND TABS(3)

line level    source

   1          /**
   2           * @file $RCSfile: TWI.c,v $
   3           *
   4           * Copyright (c) 2004 Atmel.
   5           *
   6           * Please read file license.txt for copyright notice.
   7           *
   8           * @brief This file is an example to use TWI.
   9           *
  10           * This file can be parsed by Doxygen for automatic documentation
  11           * generation.
  12           * Put here the functional description of this file within the software
  13           * architecture of your program.
  14           *
  15           * @version $Revision: 1.0 $ $Name:  $
  16           */
  17          
  18          /* @section  I N C L U D E S */
  19          #include "reg_C51.h"
  20          char TWI_data;
  21          char rw=0;                       /* 0=write, 1=read */
  22          char slave_adr;
  23          bit b_TWI_busy=0;
  24          
  25          /**
  26           * FUNCTION_PURPOSE:this function setup TWI in master mode and sends data to slave.
  27           * FUNCTION_INPUTS:void
  28           * FUNCTION_OUTPUTS:void
  29           */
  30          void main(void)
  31          {
  32   1      
  33   1      SSCON |= 0x40;                   /* enable TWI */
  34   1      EA=1;                            /* interrupt enable */
  35   1      IEN1 |=0x02;                     /* enable TWI interrupt */
  36   1      
  37   1      while(1)                         /* end less */
  38   1      {
  39   2      if(!b_TWI_busy && ((SSCON&0x10)!=0x10)) /* if the TWI is free */
  40   2      {
  41   3      b_TWI_busy=1;                    /* flag busy =1 */
  42   3      TWI_data=0x55;                   /* data example to send */
  43   3      slave_adr=0x01;                  /* slave adresse example */
  44   3      rw=0;                            /* 0=write */
  45   3      SSDAT = 0x00;                    /* clear buffer before sending data */
  46   3      SSCON |= 0x20;                   /* TWI start sending */
  47   3      }
  48   2      
  49   2      TWI_data++;
  50   2      }
  51   1      }
  52          
  53          
  54          /**
  55           * FUNCTION_PURPOSE:TWI interrupt, task witch process the different status of TWI
C51 COMPILER V7.10   TWI                                                                   06/01/2004 14:42:31 PAGE 2   

  56           * FUNCTION_INPUTS:void
  57           * FUNCTION_OUTPUTS:void
  58           */
  59          void it_TWI(void) interrupt 8 using 1
  60          {
  61   1      switch(SSCS)                     /* TWI status tasking */
  62   1         {
  63   2            case(0x00):                /* A start condition has been sent */
  64   2            {                          /* SLR+R/W are transmitted, ACK bit received */
  65   3            b_TWI_busy=0;              /* TWI is free */
  66   3            break;
  67   3            }
  68   2            case(0x08):                /* A start condition has been sent */
  69   2            {                          /* SLR+R/W are transmitted, ACK bit received */
  70   3            SSCON &= ~0x20;            /* clear start condition */
  71   3            SSDAT = (slave_adr<<1)|rw; /* send slave adress and read/write bit */
  72   3            SSCON |= 0x04;             /* set AA */
  73   3            break;
  74   3            }
  75   2      
  76   2            case(0x10):                /* A repeated start condition has been sent */
  77   2            {                          /* SLR+R/W are transmitted, ACK bit received */
  78   3            SSCON &= ~0x20;            /* clear start condition */
  79   3            SSDAT = (slave_adr<<1)|rw; /* send slave adress and read/write bit */
  80   3            SSCON |= 0x04;             /* set AA */
  81   3            break;
  82   3            }
  83   2      
  84   2            case(0x18):                /* SLR+W was transmitted, ACK bit received */
  85   2            {
  86   3      
  87   3            SSDAT = TWI_data;          /* Transmit data byte, ACK bit received */
  88   3            SSCON |= 0x04;             /* set AA */
  89   3            break;
  90   3            }
  91   2      
  92   2            case(0x20):                /* SLR+W was transmitted, NOT ACK bit received */
  93   2            {
  94   3            SSCON |= 0x10;             /* Transmit STOP */
  95   3            b_TWI_busy=0;              /* TWI is free */
  96   3            break;
  97   3            }
  98   2      
  99   2            case(0x28):                /* DATA was transmitted, ACK bit received */
 100   2            {
 101   3            SSCON |= 0x10;             /* send STOP */
 102   3            b_TWI_busy=0;              /* TWI is free */
 103   3            break;
 104   3            }
 105   2      
 106   2            case(0x30):                /* DATA was transmitted, NOT ACK bit received */
 107   2            {
 108   3            SSCON |= 0x10;             /* Transmit STOP */
 109   3            b_TWI_busy=0;              /* TWI is free */
 110   3            break;
 111   3            }
 112   2      
 113   2            case(0x38):                /* Arbitration lost in SLA+W or DATA.  */
 114   2            {
 115   3            SSCON |= 0x10;             /* Transmit STOP */
 116   3            b_TWI_busy=0;              /* TWI is free */
 117   3            break;
C51 COMPILER V7.10   TWI                                                                   06/01/2004 14:42:31 PAGE 3   

 118   3            }
 119   2         }
 120   1      SSCON &= ~0x08;                  /* clear flag */
 121   1      }
 122          


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