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

📄 main.lst

📁 IIC READ AND WRITE iic器件的读取 连续读取和页读取
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  09/30/2008 16:41:37 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*-------------------------
   2          32(MICKEY) -->S1,S3 -->P0.5
   3          33(KEY++)  -->S2    -->P0.4
   4          18(MICLED) -->D4    -->P2.0
   5          31         -->SDA   -->P0.6
   6          30         -->SCL   -->P0.7
   7          5          -->RXD   -->P3.0
   8          7          -->TXD   -->P3.1
   9          -------------------------*/
  10          
  11          #include        <reg52.h>
  12          #include        "key.h" 
  13          #include        "iic.h"
  14          #include        "delay.h"
  15          #define         ADDR    0x20                    //定义读写地址
  16          
  17          unsigned        char    OPEN[4] ={0X01,0X02,0X03,0XFC}; 
  18          unsigned        char    CLOSE[4]={0X02,0X02,0X03,0XFC}; 
  19          unsigned        char    BLINK[4]={0X03,0X02,0X05,0XFC};
  20          unsigned        char  getflag[4];
  21                  
  22          unsigned        char    writedata[16];
  23          unsigned        char    readdata[16];
  24          
  25          unsigned        char    i=0;
  26          unsigned        char    j=0;
  27          
  28          unsigned        char    k=0;//循环计数变量
  29          
  30          
  31          void    InitBaudRate(void);//初始化波特率38400bps
  32          
  33          bit     CheckFlag(unsigned char *thedata,unsigned char *flag)
  34          {
  35   1              unsigned char i;
  36   1              for(i=0;i<4;i++)
  37   1              {
  38   2                      if(*thedata!=*flag)     return 0;
  39   2                      else {thedata++;flag++;}
  40   2              }
  41   1              return 1;
  42   1      }
  43          
  44          void main()
  45          {
  46   1              MICLED=OFF;                                             //LED默认熄灭
  47   1              InitTimer2();
  48   1              InitBaudRate();
  49   1      
  50   1              while(1)                                                //循环检测按键
  51   1              {
  52   2                      KeyStatus();
  53   2                      KeyDeal();
  54   2              }
  55   1      }
C51 COMPILER V8.08   MAIN                                                                  09/30/2008 16:41:37 PAGE 2   

  56          void    InitBaudRate(void)       //38400bps
  57          {
  58   1              SCON    =0X50;
  59   1              TMOD    =0X20;
  60   1              TH1             =253;
  61   1              TL1             =253;
  62   1              PCON    =0X80;
  63   1              TR1             =1;
  64   1              TI              =0;
  65   1              RI              =0;
  66   1              EA              =1; 
  67   1              ES              =1; 
  68   1      }
  69          
  70          
  71          void  ES_INTERRUPT(void)  interrupt 4
  72          {
  73   1              if(RI==1)
  74   1              {
  75   2                      //关闭中断
  76   2                      EA      =0;
  77   2                //数据暂存
  78   2                      getflag[i++]    =SBUF;
  79   2                      if(i>3||SBUF==0XFC)  i=0;               
  80   2                      writedata[j]=SBUF;
  81   2                      if(j>15)        j=0;
  82   2                      j++;
  83   2                      //判断读写
  84   2                      if(SBUF==0X2A)//读写开始字符*
  85   2                      {
  86   3                              j=0;
  87   3                              i=0;
  88   3                      }
  89   2                      if(SBUF==0X23)//读写结束字符#
  90   2                      {               
  91   3                                      WritePages(ADDR,writedata,j);
  92   3                                      //WriteNByte(ADDR,writedata,j);
  93   3                                      ReadNByte(ADDR,readdata,j);
  94   3                                      for(k=0;k<j;k++)
  95   3                                      {
  96   4                                              SBUF=readdata[k];
  97   4                                              while(!TI);
  98   4                                              TI=0;
  99   4                                      }
 100   3                                      j=0;
 101   3                                      i=0;
 102   3                      }
 103   2                      //判断命令
 104   2                      if(CheckFlag(getflag,OPEN))             Setkeyvalue(2);
 105   2                      else if(CheckFlag(getflag,CLOSE))               Setkeyvalue(3);
 106   2                      else if(CheckFlag(getflag,BLINK))               Setkeyvalue(1);
 107   2      
 108   2                      //开启中断
 109   2                      RI      =0;
 110   2                      EA      =1;     
 111   2              }  
 112   1              
 113   1      }
 114          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.08   MAIN                                                                  09/30/2008 16:41:37 PAGE 3   

   CODE SIZE        =    352    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     51       6
   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 + -