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

📄 interru.lst

📁 好东西与大家分享……关于单片机驱动微型打印机和液晶屏的程序!!已经测试过!绝对没有问题
💻 LST
字号:
C51 COMPILER V7.50   INTERRU                                                               12/03/2005 12:09:17 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE INTERRU
OBJECT MODULE PLACED IN INTERRU.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE INTERRU.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <head.h> // SFR declarations
   2          /*
   3          void Timer2_ISR (void) interrupt 5
   4          {
   5               TF2    = 0;
   6          }
   7          */
   8          void SMBUS_ISR (void) interrupt 7
   9          {
  10   1              switch (SMB0STA) // Status code for the SMBus 
  11   1              {
  12   2              // 起始条件已发出,典型操作:
  13   2                      // 将从地址+R/W装入到SMB0DAT,STA=0                                    
  14   2                      case SMB_START://0x08
  15   2                              if(StartReadflag)
  16   2                              {
  17   3                                      SMB0DAT = 0xa3;                 // read
  18   3                              }
  19   2                              else    SMB0DAT = 0xa2;         // write
  20   2                              STA = 0;                        // Manually clear STA bit
  21   2                              SI = 0;                         // Clear interrupt flag
  22   2                              break;
  23   2                      // 重复起始条件已发出,典型操作:
  24   2                      // 将从地址+R/W装入到SMB0DAT,STA=0
  25   2              case SMB_RP_START://0x10
  26   2                      if(StartReadflag)
  27   2                              {       SMB0DAT = 0xa3;  }
  28   2                              else    SMB0DAT = 0xa2;         // write
  29   2                              STA = 0;                        // Manually clear START bit.
  30   2                              SI = 0;
  31   2                              break;
  32   2                      // 从地址+W 已发出,收到ACK,典型操作:
  33   2                      // 将要发送的数据装入SMB0DAT
  34   2              case SMB_MTADDACK://0x18
  35   2                              if(RWflag == I2CREAD)
  36   2                              {       SMB0DAT = 0x00; }                       // 从地址0x00开始读
  37   2                              if(RWflag == I2CWRITE)
  38   2                              {       PcfPoint =0;SMB0DAT = 0x00;}// 从地址0x00开始写
  39   2                              SI = 0;                         // Clear interrupt flag
  40   2                      break;
  41   2              // 从地址+W 已发出,收到NACK,典型操作:
  42   2                      // 确认查询重试,置位STO+STA
  43   2              case SMB_MTADDNACK://0x20
  44   2                              STO = 1;
  45   2                              //      delay(2000);
  46   2                              STA = 1;
  47   2                              SI = 0;                         // Clear interrupt flag
  48   2                              break;
  49   2                      // 数据字节已发出,收到ACK,典型操作:将下一字节装入到
  50   2                      // SMB0DAT,或置位STO,或置位STA,以发送重复起始条件
  51   2              case SMB_MTDBACK://0x28
  52   2                              if(RWflag == I2CREAD)
  53   2                              {
  54   3                                      STO = 1;
  55   3                                      delay(100);
C51 COMPILER V7.50   INTERRU                                                               12/03/2005 12:09:17 PAGE 2   

  56   3                                      STA = 1;
  57   3                                      PcfPoint = 0;
  58   3                                      StartReadflag = 1;
  59   3                              }
  60   2                              else if(PcfPoint == 0x10)
  61   2                              { 
  62   3                                      RWflag = I2CREAD; // read
  63   3                                      STO = 1;
  64   3                                      delay(100);
  65   3                                      STA = 1;
  66   3                                      PcfPoint = 0;
  67   3                              }
  68   2                              else
  69   2                              {
  70   3                                      SMB0DAT = Pcf8563.Time[PcfPoint++];
  71   3                              }
  72   2                              SI = 0;
  73   2                              break;
  74   2                      // 数据字节已发出,收到NACK,典型操作:重试传输或置位STO
  75   2                      case SMB_MTDBNACK://0x30
  76   2                              STO = 1;
  77   2                              delay(100);
  78   2                              STA = 1;
  79   2                              SI = 0;                          // Clear interrupt flag
  80   2                              break;
  81   2                      // 竞争失败,典型操作:保存当前数据
  82   2                      case SMB_MTARBLOST://0x38
  83   2                      SI = 0;                          // Clear interrupt flag
  84   2                      break;
  85   2                      // 从地址+R已发出,收到ACK,典型操作:如果只接收一个字节,
  86   2                      // 清AA位(收到字节后发送NACK),等待接收数据
  87   2                      case SMB_MRADDACK://0x40
  88   2                      PcfPoint = 0x00;                     // NACK sent during acknowledge cycle.
  89   2                      SI = 0;
  90   2                      break;
  91   2                      // 从地址+R已发出,收到NACK,典型操作:确认查询重试,
  92   2                      // 置位STO+STA
  93   2              case SMB_MRADDNACK://0x48
  94   2                      STO = 1;
  95   2                      //      delay(2000);
  96   2                              STA = 1;
  97   2                              SI = 0;
  98   2                              break;
  99   2                      // 数据字节已收到,ACK已发出,典型操作:读SMB0DAT,
 100   2                      // 等待下一字节,若下一字节是最后字节,清楚AA
 101   2              case SMB_MRDBACK://0x50
 102   2                              Pcf8563.Time[PcfPoint++] = SMB0DAT;
 103   2                              if(PcfPoint == 0x0f)
 104   2                              { AA = 0;PcfPoint = 0;StartReadflag = 0;}
 105   2                      SI = 0;
 106   2                      break;
 107   2                      // 数据字节已收到,NACK已发出,典型操作:置位STO
 108   2                      case SMB_MRDBNACK://0x58
 109   2                              STO = 1;
 110   2                              Pcf8563.Time[0x0f] = SMB0DAT;
 111   2                              Readoverflag = 1;                                       // 已经读完
 112   2                              AA = 1;                          // Set AA for next transfer
 113   2                              SI = 0;
 114   2                      break;
 115   2                      default:
 116   2                              SI = 0;
 117   2                              break;
C51 COMPILER V7.50   INTERRU                                                               12/03/2005 12:09:17 PAGE 3   

 118   2              }
 119   1      }


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