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

📄 _rb_r.lst

📁 本程式是使用C++寫單片機的軔體程式, 可以和PC做串列埠COM port通訊, 也結合I2C通訊標準, 將接收的資料燒錄傳輸至硬件IC 24C16
💻 LST
字号:
C51 COMPILER V7.07   _RB_R                                                                 03/18/2005 01:33:13 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE _RB_R
OBJECT MODULE PLACED IN _RB_r.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE _RB_r.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //-----------------------------------------------------------------------------------------
   2          //-----------------------------------------------------------------------------------------
   3          #include <REG51.h>
   4          
   5          const unsigned long XTAL = 11059200;
   6          const unsigned long baudrate = 9600;
   7          
   8          void com_initialize(void);
   9          void DataOut(unsigned char);
  10          unsigned char DataIn(void);
  11          
  12          //-----------------------------------------------------------------------------------------
  13          //-----------------------------------------------------------------------------------------
  14          #include <intrins.h>
  15          
  16          typedef bit Bool;
  17          typedef bit Bit;
  18          typedef unsigned char Byte;
  19          
  20          sbit SCL = P1^0;
  21          sbit SDA = P1^1;
  22          
  23          #define False   (Bool) 0
  24          #define True    (Bool) !False
  25          
  26          void I2cWait(void);
  27          void I2cInit(void);
  28          void I2cStart(void);
  29          void I2cStop(void);
  30          Bool I2cSentByte1(Byte);
  31          void SendAcknowledge(Bool);
  32          
  33          //-----------------------------------------------------------------------------------------
  34          //-----------------------------------------------------------------------------------------
  35          void main(void){
  36   1              unsigned char buff;
  37   1              Bool k;
  38   1              P2 = 0;
  39   1              com_initialize();
  40   1              
  41   1              
  42   1              buff = DataIn();
  43   1              P2 = buff; 
  44   1              DataOut(buff);
  45   1              
  46   1              I2cWait();
  47   1              I2cInit();
  48   1              I2cStart();
  49   1              I2cStop();
  50   1              k = I2cSentByte1(0x10);
  51   1              SendAcknowledge(1);
  52   1      }
  53          //-----------------------------------------------------------------------------------------
  54          //-----------------------------------------------------------------------------------------
  55          void com_initialize(void){
C51 COMPILER V7.07   _RB_R                                                                 03/18/2005 01:33:13 PAGE 2   

  56   1              SCON = 0x52; // choose  mode 1 serial interrupt, and no read state.
  57   1              PCON = 0x00; // power control, PCON.1 is SMOD which is choose baudrate double or not.
  58   1       
  59   1              IE = 0x00; // Set on interrupt.
  60   1              IP = 0x10; // Set on Serial interrupt priority.
  61   1      
  62   1              TMOD = 0x20;// Set Time control in Timer1 work on model 2.
  63   1              TH1 = (unsigned char)(256-(XTAL/((unsigned long)384*baudrate)));
  64   1              TR1 = 1; // Timer1 start.
  65   1      }
  66          void DataOut(unsigned char c){
  67   1              do{
  68   2              }while(!TI);
  69   1              TI = 0;
  70   1              SBUF = c;
  71   1      }
  72          unsigned char DataIn(void){
  73   1              do{
  74   2              }while(!RI);
  75   1              RI=0;
  76   1              return(SBUF);
  77   1      }
  78          //-----------------------------------------------------------------------------------------
  79          //-----------------------------------------------------------------------------------------
  80          void I2cWait(void){
  81   1              _nop_();
  82   1              _nop_();
  83   1      }
  84          void I2cInit(void){
  85   1              SDA = 1;
  86   1              SCL = 1;
  87   1      }
  88          void I2cStart(void){
  89   1              SDA = 1;
  90   1              SCL = 1;
  91   1              I2cWait();
  92   1              SDA = 0;
  93   1              I2cWait();
  94   1              SCL = 0;
  95   1      }
  96          void I2cStop(void){
  97   1              SDA = 0;
  98   1              I2cWait();
  99   1              SCL = 1;
 100   1              I2cWait();
 101   1              SDA = 1;
 102   1      }
 103          Bool I2cSentByte1(Byte bytedata){
 104   1              Byte i;
 105   1              Bool ack;
 106   1              for(i=0;i<8;i++){
 107   2                      if(bytedata & 0x80){
 108   3                              SDA = 1;
 109   3                      }else{
 110   3                              SDA = 0;
 111   3                      }
 112   2                      bytedata <<=1;
 113   2                      I2cWait();
 114   2      
 115   2                      SCL = 1;
 116   2                      I2cWait();
 117   2                      SCL = 0;
C51 COMPILER V7.07   _RB_R                                                                 03/18/2005 01:33:13 PAGE 3   

 118   2                      I2cWait();
 119   2              }
 120   1              SDA = 1;
 121   1              I2cWait();
 122   1              SCL = 0;
 123   1              I2cWait();
 124   1              ack = SDA;
 125   1              SCL = 0;
 126   1              I2cWait();
 127   1              return ack;
 128   1      }
 129          void SendAcknowledge(Bool ack){
 130   1              SDA = ack;
 131   1              SCL = 1;
 132   1              I2cWait();
 133   1              SCL = 0;
 134   1      }
 135          
 136          //-----------------------------------------------------------------------------------------
 137          //-----------------------------------------------------------------------------------------


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    215    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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