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