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

📄 main.lst

📁 中颖单片机SH88F516例程
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  08/17/2009 10:13:40 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          说明;SPI使用EEPROM存储芯片93C56A,256X8bit=2K的存储空间.在使用SPI通讯时通常使用端口进行仿真,为了符合
   3          使用需要,本程序同样使用了端口进行仿真,当然也可以直接使用88F516自带的SPI总线进行通讯.
   4          串口1用于观测93C56A的读写数据正确与否?写入成功接收到数据R,写入失败接收到数据E,读取成功接收到数据r,
   5          读取失败接收到数据e.
   6          要求:打开拨码开关J6的5,6,7,8,打开拨码开关J4
   7          *************************************************************************************************/
   8          
   9          #include <sh88f516.h>
  10          #include <INTRINS.H>    //for use 51 instruction
  11          
  12          sbit cs_93=P1^4;
  13          sbit di_93=P1^5;
  14          sbit do_93=P1^6;
  15          sbit sk_93=P1^7;
  16          
  17          void UART1SendChar(unsigned char value)
  18          {
  19   1              IEN1 &= 0xFB;               //ES1=0;            
  20   1              SBUF1=value;                        //写SBUF1,激活发送
  21   1              while(TI1==0);                          //等待转换结束
  22   1              TI1=0;                                          //清除发送标志位
  23   1              IEN1 = 0x04;                //ES1=1;            
  24   1      }
  25          
  26          
  27          /*-----------------------------------------------------
  28          SPI93cXX系列函数调用
  29          void high56(void)--------发送1
  30          void low56(void) --------发送0
  31          void wd56(unsigned char dd)     --------写8位数据,输入参数address or data
  32          unsigned char rd56(void) --------读8位数据,返回值data
  33          -----------------------------------------------------*/
  34          void high56(void)
  35          { 
  36   1              di_93=1; 
  37   1              sk_93=1; _nop_(); 
  38   1              sk_93=0; _nop_();
  39   1      }
  40          void low56(void)
  41          { 
  42   1              di_93=0; 
  43   1              sk_93=1;_nop_();
  44   1              sk_93=0;_nop_();
  45   1      }
  46          void wd56(unsigned char dd)
  47          { 
  48   1              unsigned char i; 
  49   1              for (i=0;i<8;i++) 
  50   1              { 
  51   2                      if (dd>=0x80) high56(); 
  52   2                      else low56(); 
  53   2                      dd=dd<<1; 
  54   2              }
  55   1      }
C51 COMPILER V8.08   MAIN                                                                  08/17/2009 10:13:40 PAGE 2   

  56          unsigned char rd56(void)
  57          { 
  58   1              unsigned char i,dd=0; 
  59   1              do_93=1; 
  60   1              for (i=0;i<8;i++) 
  61   1              { 
  62   2                      dd<<=1; 
  63   2                      sk_93=1;_nop_();
  64   2                      sk_93=0;_nop_(); 
  65   2                      if (do_93) dd|=1; 
  66   2              } 
  67   1              return(dd);
  68   1      }
  69          
  70          /*-----------------------------------------------------
  71          SPI93c56系列函数调用
  72          void ewen56(void)-----------写使能
  73          unsigned char read93c56_word(unsigned char address) ------------SPI读函数,输入参数为address,返回dat
  74          bit write93c56_word(unsigned char address,unsigned char dat)----SPI写函数,输入参数为address,dat,写入成功返
             -回0,失败返回1
  75          -----------------------------------------------------*/ 
  76          void ewen56(void)
  77          { 
  78   1              _nop_();
  79   1              cs_93=1;
  80   1              high56();
  81   1              low56();
  82   1              low56();
  83   1              //low56();
  84   1              high56();//add
  85   1              wd56(0xc0);
  86   1              //wd56(0x00);
  87   1              cs_93=0;
  88   1      }
  89          
  90          unsigned char read93c56_word(unsigned char address) 
  91          {
  92   1              unsigned char dat;
  93   1              cs_93=sk_93=0;
  94   1              cs_93=1;
  95   1      
  96   1              high56();                       //1 --start
  97   1              high56();                       //1     
  98   1              low56();                        //0     --10 read
  99   1              low56();                        //X     --A8,
 100   1              wd56(address);          //A7--A0 
 101   1              dat=rd56();                     //data
 102   1      
 103   1              cs_93=0;
 104   1              return(dat);
 105   1      }
 106          
 107          bit write93c56_word(unsigned char address,unsigned char dat)
 108          {
 109   1              unsigned char e;
 110   1              unsigned char temp=address;
 111   1              e=0; 
 112   1              while (e<3) 
 113   1              {
 114   2                      cs_93=sk_93=0;
 115   2                      cs_93=1;
 116   2                      ewen56();
C51 COMPILER V8.08   MAIN                                                                  08/17/2009 10:13:40 PAGE 3   

 117   2                      _nop_();
 118   2                      cs_93=1;
 119   2                      _nop_();
 120   2      
 121   2                      high56();                 //1 --start
 122   2                      low56();                  //0   
 123   2                      high56();                 //1   --01 write
 124   2                      low56();                  //X   --A8,
 125   2                      wd56(address);    //A7--A0 
 126   2                      wd56(dat);                //data
 127   2      
 128   2                      cs_93=0;
 129   2                      _nop_();
 130   2                      cs_93=1;
 131   2      
 132   2                      do_93=1;
 133   2                      while (1) 
 134   2                      {
 135   3                              if (do_93==1) break;
 136   3                      }
 137   2                      cs_93=0;
 138   2                      if (read93c56_word(temp)==dat) 
 139   2                      {
 140   3                              return(0);
 141   3                      }
 142   2                      e++;
 143   2              }
 144   1              return(1);
 145   1      }
 146          
 147          
 148          
 149          main()
 150          {
 151   1          unsigned char i;
 152   1      
 153   1              CLKCON = 0x60;             //f=osc/12
 154   1      
 155   1              SCON1 = 0x50;              //工作方式选择,此处为工作方式1
 156   1              SBRT1 = 0xFF;              //波特率设置.工作在方式1时,BAUDRATE=(1/16)*Fsys/(32768-SBRT[1:0])   Fsys=16M
 157   1              SBRT0 = 0xF7;              //Fsys=16M/12
 158   1      
 159   1              IEN1 = 0x04;                    
 160   1              EA = 1;  
 161   1      
 162   1              for(i=0;i<200;i++)
 163   1              {
 164   2                      if(write93c56_word(i,i)==0)
 165   2                              UART1SendChar('R');
 166   2                      else
 167   2                              UART1SendChar('E');
 168   2              }
 169   1                                              
 170   1          while(1) 
 171   1              {
 172   2      
 173   2                      for(i=0;i<200;i++)
 174   2                      {
 175   3                              if(read93c56_word(i)==i)
 176   3                                      UART1SendChar('r');
 177   3                              else
 178   3                                      UART1SendChar('e');
C51 COMPILER V8.08   MAIN                                                                  08/17/2009 10:13:40 PAGE 4   

 179   3                      }
 180   2              }
 181   1      
 182   1      }
 183          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    267    ----
   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 + -