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

📄 df.lst

📁 这是atmel公司的89C51SND1C的mp3源程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 218   2          if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 219   2            DF_CS2 = 0;
 220   2          else
 221   2            DF_CS3 = 0;
 222   2        }
 223   1        Spi_write_data(DF_RD_MAIN);               /* send read main command */
 224   1        Spi_ack_write();
 225   1        Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
 226   1        Spi_ack_write();
 227   1        Spi_write_data(((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] & DF
             -_PAGE_MASK));
 228   1        Spi_ack_write();
 229   1        Spi_write_data(((Byte*)&gl_ptr_mem)[3]);
 230   1        Spi_ack_write();
 231   1        Spi_write_data(0xFF);                     /* 4 dummy writes for reading delay */
 232   1        Spi_ack_write();
 233   1        Spi_write_data(0xFF);
 234   1        Spi_ack_write();
 235   1        Spi_write_data(0xFF);
 236   1        Spi_ack_write();
 237   1        Spi_write_data(0xFF);
 238   1        Spi_ack_write();
 239   1      
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 5   

 240   1        return OK;
 241   1      }
 242          
 243          
 244          /*F**************************************************************************
 245          * NAME: df_read_close
 246          *----------------------------------------------------------------------------
 247          * PARAMS:
 248          *
 249          * return:
 250          *----------------------------------------------------------------------------
 251          * PURPOSE: 
 252          *   Memory read close: release DF memory
 253          *----------------------------------------------------------------------------
 254          * EXAMPLE:
 255          *----------------------------------------------------------------------------
 256          * NOTE:
 257          *----------------------------------------------------------------------------
 258          * REQUIREMENTS:
 259          *****************************************************************************/
 260          void df_read_close (void)
 261          {
 262   1        DF_CS |= DF_DESEL_ALL;                    /* deselect memory */
 263   1      }
 264          
 265          
 266          /*F**************************************************************************
 267          * NAME: df_read_byte
 268          *----------------------------------------------------------------------------
 269          * PARAMS:
 270          *
 271          * return:
 272          *   Data read from memory
 273          *----------------------------------------------------------------------------
 274          * PURPOSE: 
 275          *   Memory byte read function
 276          *----------------------------------------------------------------------------
 277          * EXAMPLE:
 278          *----------------------------------------------------------------------------
 279          * NOTE:
 280          *   There are no end of page check with this function
 281          *----------------------------------------------------------------------------
 282          * REQUIREMENTS:
 283          *****************************************************************************/
 284          Byte df_read_byte (void)
 285          {
 286   1        /* check if end of page */
 287   1        if ((((Byte*)&gl_ptr_mem)[3] == 0x00) && ((((Byte*)&gl_ptr_mem)[2] & DF_PAGE_MASK) == 0x00))
 288   1        {
 289   2          DF_CS |= DF_DESEL_ALL;                  /* deselect all memories */
 290   2      
 291   2          /* select right memory */
 292   2          if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
 293   2          {
 294   3            if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 295   3              DF_CS0 = 0;
 296   3            else
 297   3              DF_CS1 = 0;
 298   3          }
 299   2          else
 300   2          {
 301   3            if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 6   

 302   3              DF_CS2 = 0;
 303   3            else
 304   3              DF_CS3 = 0;
 305   3          }
 306   2          /* select new page */
 307   2          Spi_write_data(DF_RD_MAIN);             /* read main */
 308   2          Spi_ack_write();
 309   2          Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
 310   2          Spi_ack_write();
 311   2          Spi_write_data((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1);
 312   2          Spi_ack_write();
 313   2          Spi_write_data(0x00);                   /* address 00 of the page */
 314   2          Spi_ack_write();
 315   2          Spi_write_data(0xFF);                   /* 4 dummy writes for reading delay */
 316   2          Spi_ack_write();
 317   2          Spi_write_data(0xFF);
 318   2          Spi_ack_write();
 319   2          Spi_write_data(0xFF);
 320   2          Spi_ack_write();
 321   2          Spi_write_data(0xFF);
 322   2          Spi_ack_write();
 323   2          Spi_ack_write();                        /* clear SPI flag */
 324   2        }
 325   1        gl_ptr_mem++;
 326   1        Spi_write_data(0xFF);                     /* dummy write to read data */
 327   1        Spi_ack_read();
 328   1        return Spi_read_data();                   /* read current data */
 329   1      }
 330          
 331          
 332          /*F**************************************************************************
 333          * NAME: df_read_sector
 334          *----------------------------------------------------------------------------
 335          * PARAMS:
 336          *   global: gl_ptr_mem
 337          *
 338          * return:
 339          *   OK read done
 340          *----------------------------------------------------------------------------
 341          * PURPOSE: 
 342          *   This function is an optimized function that writes 512 bytes from
 343          *   DataFlash memory to USB controller 
 344          *----------------------------------------------------------------------------
 345          * EXAMPLE:
 346          *----------------------------------------------------------------------------
 347          * NOTE:
 348          *   - First call must be preceded by a call to df_read_open function
 349          *   - As 512 is always a sub-multiple of page size, there is no need to check
 350          *     page end for each bytes
 351          *   - Interrupts are disabled during transfer to avoid timer interrupt
 352          *----------------------------------------------------------------------------
 353          * REQUIREMENTS:
 354          *****************************************************************************/
 355          bit df_read_sector (void)
 356          {
 357   1      Byte i;
 358   1      
 359   1        /* check if end of page */
 360   1        if ((((Byte*)&gl_ptr_mem)[3] == 0x00) && ((((Byte*)&gl_ptr_mem)[2] & DF_PAGE_MASK) == 0x00))
 361   1        {
 362   2          DF_CS |= DF_DESEL_ALL;                  /* deselect all memories */
 363   2      
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 7   

 364   2          /* select right memory */
 365   2          if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEH] & DF_MEM_MASKH) == 0)
 366   2          {
 367   3            if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 368   3              DF_CS0 = 0;
 369   3            else
 370   3              DF_CS1 = 0;
 371   3          }
 372   2          else
 373   2          {
 374   3            if ((((Byte*)&gl_ptr_mem)[DF_MEM_BYTEL] & DF_MEM_MASKL) == 0)
 375   3              DF_CS2 = 0;
 376   3            else
 377   3              DF_CS3 = 0;
 378   3          }
 379   2          /* select new page */
 380   2          Spi_write_data(DF_RD_MAIN);             /* read main */
 381   2          Spi_ack_write();
 382   2          Spi_write_data((((Byte*)&gl_ptr_mem)[1] << DF_SHFT_B1) | (((Byte*)&gl_ptr_mem)[2] >> DF_SHFT_B2));
 383   2          Spi_ack_write();
 384   2          Spi_write_data((((Byte*)&gl_ptr_mem)[2] & ~DF_PAGE_MASK) << DF_SHFT_B1);
 385   2          Spi_ack_write();
 386   2          Spi_write_data(0x00);                   /* address 00 of the page */
 387   2          Spi_ack_write();
 388   2          Spi_write_data(0xFF);                   /* 4 dummy writes for reading delay */
 389   2          Spi_ack_write();
 390   2          Spi_write_data(0xFF);
 391   2          Spi_ack_write();
 392   2          Spi_write_data(0xFF);
 393   2          Spi_ack_write();
 394   2          Spi_write_data(0xFF);
 395   2          Spi_ack_write();
 396   2          Spi_ack_write();                        /* clear SPI flag */
 397   2        }
 398   1        for (i = 8; i != 0; i--)                  /* read 8x64b = 512b */
 399   1        {
 400   2          Disable_interrupt();                    /* global disable */
 401   2          Spi_write_data(0xFF); Spi_ack_read();
 402   2           /* read 1st data  while receiving the 2nd DO NOT MODIFY */
 403   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 404   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 405   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 406   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 407   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 408   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 409   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 410   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 411   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 412   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 413   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 414   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 415   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 416   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 417   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 418   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 419   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 420   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 421   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 422   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 423   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 424   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 425   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
C51 COMPILER V6.20c  DF                                                                    07/10/2002 15:17:44 PAGE 8   

 426   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 427   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 428   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 429   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 430   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 431   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 432   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 433   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 434   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 435   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 436   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 437   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 438   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 439   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 440   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());
 441   2          Spi_write_dummy(); ACC = SPSTA; Usb_write_byte(Spi_read_data());

⌨️ 快捷键说明

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