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

📄 93c66.lst

📁 93C46/66的读写程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 186   2                      op_data=op_data<<1;
 187   2                      }
 188   1      }
 189          /***********************************************************************/
 190          /*名称: EWEN_93c66() */
 191          /*说明: 93c66 的编程启动.操作码(100 11XXXXXXX) */
 192          /***********************************************************************/
 193          void EWEN_93c66()
 194          {
 195   1              START_93c66();
 196   1              SEND_DATA_93c66(0X0013,0X05); /*送入3 位操作码+11*/
 197   1              SEND_DATA_93c66(0X0000,Addr_bit-2); /*送入9 位地址*/
 198   1              END_93c66();
 199   1      }
 200          /***********************************************************************/
 201          /*名称: EWDS_93c66() */
 202          /*说明: 93c66 的编程关闭.操作码(100 00XXXXXXX) */
 203          /**********************************************************************/
 204          void EWDS_93c66()
 205          {
 206   1              START_93c66();
 207   1              SEND_DATA_93c66(0X0004,0X03);
 208   1              SEND_DATA_93c66(0X0000,Addr_bit);
 209   1              END_93c66();
 210   1      }
 211          /***********************************************************************/ /*名称:READ() */
 212          /*说明:93c66 的字读取程序 */
 213          /*输入:要读取的字节地址(9 位) */
 214          /*输出:读取的字数值 */
 215          /**********************************************************************/
 216          unsigned char READ(unsigned int address)
 217          {
 218   1              unsigned char temp1;
 219   1              unsigned char temp2;
 220   1              START_93c66();
 221   1              SEND_DATA_93c66(0X0006,0X03);
 222   1              SEND_DATA_93c66(address,Addr_bit);
 223   1              temp2=0; /*存放返回数据的缓冲先清零*/
 224   1              for(temp1=0;temp1<8;temp1++) /*循环读出8 个数据*/
 225   1                      {
 226   2                      temp2=temp2<<1;
 227   2                      SK_93c66=1;SK_93c66=0;
 228   2                              if(DO_93c66==1)
 229   2                                      {temp2=temp2|0X01;}
 230   2                      }
 231   1                      END_93c66();
 232   1      
 233   1                      return temp2;
 234   1      }
 235          /**********************************************************************/
 236          /*名称:WRITE() */
 237          /*说明:93c66 的字写入程序 */
 238          /*输入: address 要写入的字节地址(9 位) */
 239          /* op_data 要写入的数据(8 位) */
C51 COMPILER V7.09   93C66                                                                 10/31/2005 17:27:24 PAGE 5   

 240          /*输出: 读取的字数值 */
 241          /**********************************************************************/
 242          unsigned char WRITE(unsigned int address,unsigned int op_data)
 243          {
 244   1              unsigned char temp1;
 245   1              unsigned int temp2;
 246   1              EWEN_93c66();
 247   1              START_93c66();
 248   1              SEND_DATA_93c66(0X0005,0X03);
 249   1              SEND_DATA_93c66(address,Addr_bit);
 250   1              SEND_DATA_93c66(op_data,0X08);
 251   1              CS_93c66=0;
 252   1              CS_93c66=1;
 253   1              temp1=1;
 254   1              temp2=50000; /*设置一个最大延时等待数值.注意在不同的晶振下延时是不同的*/
 255   1              while(!DO_93c66)
 256   1                      {
 257   2                      temp2=temp2-1;
 258   2                      if(temp2==0)
 259   2                              {
 260   3                              temp1=0;//temp1=0则写入失败
 261   3                              CD_3=0;
 262   3                              P0=0X08;
 263   3                              delay1(60000);
 264   3                              P0=0;
 265   3                              CD_3=1;
 266   3                              //break; /*最大等待延时后说明擦除失败*/
 267   3                              }
 268   2                      }
 269   1              END_93c66();
 270   1              EWDS_93c66();
 271   1      
 272   1              return temp1;
 273   1      }
 274          /***********************************************************************/
 275          /*名称:ERASE() */
 276          /*说明:93c66 的字擦除程序 */
 277          /*输入: address 要擦除的字地址(9 位) */
 278          /**********************************************************************/
 279          /*
 280          unsigned char ERASE(unsigned char address)
 281          {data unsigned char temp1;
 282          data unsigned int temp2;
 283          EWEN_93c66();
 284          START_93c66();
 285          SEND_DATA_93c66(0X07,0X03);
 286          SEND_DATA_93c66(address,0X06);
 287          CS_93c66=0;
 288          CS_93c66=1;
 289          temp1=1;
 290          temp2=50000;
 291          while(!DO_93c66)
 292          {temp2=temp2-1;
 293          if(temp2==0)
 294          {temp1=0;
 295          break;
 296          }
 297          }
 298          END_93c66();
 299          EWDS_93c66(); //返回表示擦除状态的特征
 300          return temp1;
 301          }
C51 COMPILER V7.09   93C66                                                                 10/31/2005 17:27:24 PAGE 6   

 302          */
 303          
 304          
 305          /**********************************************************************/
 306          /*名称:ERAL() */
 307          /*说明:93c66 的全部擦除程序 */
 308          /**********************************************************************/
 309          /*
 310          unsigned char ERAL()
 311          {data unsigned char temp1;
 312          data unsigned int temp2;
 313          EWEN_93c66();
 314          START_93c66();
 315          SEND_DATA_93c66(0X04,0X03);
 316          SEND_DATA_93c66(0X20,0X06);
 317          CS_93c66=0;
 318          CS_93c66=1;
 319          temp1=1;
 320          temp2=50000;
 321          while(!DO_93c66)
 322          {temp2=temp2-1;
 323          if(temp2==0)
 324          {temp1=0;
 325          break;
 326          }
 327          }
 328          END_93c66();
 329          EWDS_93c66(); //返回表示擦除状态的特征
 330          return temp1;
 331          }
 332          */
 333          
 334          
 335          /***********************************************************************/
 336          /*名称:WRAL() */
 337          /*说明:93c66 的写全部程序 */
 338          /*输入: op_data 要写入的数据(16 位) */
 339          /*输出: 读取的字数值 */
 340          /***********************************************************************/
 341          /*
 342          unsigned char WRAL(unsigned int op_data)
 343          {data unsigned char temp1;
 344          data unsigned int temp2;
 345          EWEN_93c66();
 346          START_93c66();
 347          SEND_DATA_93c66(0X04,0X03);
 348          SEND_DATA_93c66(0X10,0X06);
 349          SEND_DATA_93c66(op_data,0X10);
 350          CS_93c66=0;
 351          CS_93c66=1;
 352          temp1=1;
 353          temp2=50000; //设置一个最大延时等待数值.注意在不同的晶振下延时是不同的
 354          while(!DO_93c66)
 355          {temp2=temp2-1;
 356          if(temp2==0)
 357          {temp1=0;
 358          break;
 359          }
 360          }
 361          END_93c66();
 362          EWDS_93c66();
 363          return op_data;
C51 COMPILER V7.09   93C66                                                                 10/31/2005 17:27:24 PAGE 7   

 364          }
 365          
 366          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    300    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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