b64dea22174046f04d5aace71e8918ff3ae53c09.svn-base 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. C51 COMPILER V9.53.0.0 FLASH 09/30/2018 11:45:28 PAGE 1
  2. C51 COMPILER V9.53.0.0, COMPILATION OF MODULE FLASH
  3. OBJECT MODULE PLACED IN .\Output\Flash.obj
  4. COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\..\Code\User\Driver\Flash.c LARGE OPTIMIZE(0,SPEED) BROWSE INCDIR(../
  5. -../Code/Include;../../Code/User;../../Code/User/Common;../../Code/User/Driver) DEFINE(FOSC_160000=1) DEBUG OBJECTEXTEND
  6. -PRINT(.\Output\LST\Flash.lst) TABS(2) OBJECT(.\Output\Flash.obj)
  7. line level source
  8. 1
  9. 2 #include "Flash.h"
  10. 3
  11. 4 volatile unsigned char xdata page_buffer[128];
  12. 5
  13. 6
  14. 7 UINT8 Read_APROM_BYTE ( UINT16 code *u16_addr )
  15. 8 {
  16. 9 1 UINT8 rdata;
  17. 10 1 rdata = *u16_addr >> 8;
  18. 11 1 return rdata;
  19. 12 1 }
  20. 13 /*********************************************************************************************************
  21. -********
  22. 14 write_DATAFLASH_BYTE :
  23. 15 user can copy all this subroutine into project, then call this function in main.
  24. 16 **********************************************************************************************************
  25. -********/
  26. 17 void Write_DATAFLASH_BYTE ( unsigned int u16EPAddr, unsigned char u8EPData )
  27. 18 {
  28. 19 1 unsigned char looptmp = 0;
  29. 20 1 unsigned int u16_addrl_r;
  30. 21 1 unsigned int RAMtmp;
  31. 22 1
  32. 23 1 //Check page start address
  33. 24 1 u16_addrl_r = ( u16EPAddr / 128 ) * 128;
  34. 25 1
  35. 26 1 //Save APROM data to XRAM0
  36. 27 1 for ( looptmp = 0; looptmp < 0x80; looptmp++ )
  37. 28 1 {
  38. 29 2 RAMtmp = Read_APROM_BYTE ( ( unsigned int code * ) ( u16_addrl_r + looptmp ) );
  39. 30 2 page_buffer[looptmp] = RAMtmp;
  40. 31 2 }
  41. 32 1
  42. 33 1 // Modify customer data in XRAM
  43. 34 1 page_buffer[u16EPAddr & 0x7f] = u8EPData;
  44. 35 1
  45. 36 1 //Erase APROM DATAFLASH page
  46. 37 1 IAPAL = u16_addrl_r & 0xff;
  47. 38 1 IAPAH = ( u16_addrl_r >> 8 ) & 0xff;
  48. 39 1 IAPFD = 0xFF;
  49. 40 1 set_IAPEN;
  50. 41 1 set_APUEN;
  51. 42 1 IAPCN = 0x22;
  52. 43 1 set_IAPGO;
  53. 44 1
  54. 45 1 //Save changed RAM data to APROM DATAFLASH
  55. 46 1 set_IAPEN;
  56. 47 1 set_APUEN;
  57. 48 1 IAPCN = 0x21;
  58. 49 1
  59. 50 1 for ( looptmp = 0; looptmp < 0x80; looptmp++ )
  60. 51 1 {
  61. C51 COMPILER V9.53.0.0 FLASH 09/30/2018 11:45:28 PAGE 2
  62. 52 2 IAPAL = ( u16_addrl_r & 0xff ) + looptmp;
  63. 53 2 IAPAH = ( u16_addrl_r >> 8 ) & 0xff;
  64. 54 2 IAPFD = page_buffer[looptmp];
  65. 55 2 set_IAPGO;
  66. 56 2 }
  67. 57 1
  68. 58 1 clr_APUEN;
  69. 59 1 clr_IAPEN;
  70. 60 1 }
  71. 61
  72. MODULE INFORMATION: STATIC OVERLAYABLE
  73. CODE SIZE = 581 ----
  74. CONSTANT SIZE = ---- ----
  75. XDATA SIZE = 139 ----
  76. PDATA SIZE = ---- ----
  77. DATA SIZE = ---- ----
  78. IDATA SIZE = ---- ----
  79. BIT SIZE = ---- ----
  80. END OF MODULE INFORMATION.
  81. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)