FlashMemoryAreaRW.lst
上传用户:xhjmsc
上传日期:2019-09-13
资源大小:389k
文件大小:28k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. ##############################################################################
  2. #                                                                            #
  3. # IAR MSP430 C/EC++ Compiler V2.10A/W32                23/Apr/2007  18:04:09 #
  4. # Copyright 1996-2003 IAR Systems. All rights reserved.                      #
  5. #                                                                            #
  6. #    __rt_version  =  1                                                      #
  7. #    __double_size =  32                                                     #
  8. #    __reg_r4      =  free                                                   #
  9. #    __reg_r5      =  free                                                   #
  10. #    __pic         =  no                                                     #
  11. #    Source file   =  E:projectFaxProgramVson_Bryan_Fax_Conexant_070423 #
  12. #                     filesFlashMemoryAreaRW.c                              #
  13. #    Command line  =  -I "C:Program FilesIAR SystemsEmbedded Workbench    #
  14. #                     3.2430INC" -I "C:Program FilesIAR                 #
  15. #                     SystemsEmbedded Workbench 3.2430INCCLIB" -lCN     #
  16. #                     E:projectFaxProgramVson_Bryan_Fax_Conexant_070423 #
  17. #                     DebugList -lA E:projectFaxProgramVson_Bryan_Fax_ #
  18. #                     Conexant_070423DebugList -o                         #
  19. #                     E:projectFaxProgramVson_Bryan_Fax_Conexant_070423 #
  20. #                     DebugObj -z2 --no_cse --no_unroll --no_inline        #
  21. #                     --no_code_motion --debug -e                            #
  22. #                     E:projectFaxProgramVson_Bryan_Fax_Conexant_070423 #
  23. #                     filesFlashMemoryAreaRW.c                              #
  24. #    List file     =  E:projectFaxProgramVson_Bryan_Fax_Conexant_070423 #
  25. #                     DebugListFlashMemoryAreaRW.lst                       #
  26. #    Object file   =  E:projectFaxProgramVson_Bryan_Fax_Conexant_070423 #
  27. #                     DebugObjFlashMemoryAreaRW.r43                        #
  28. #                                                                            #
  29. #                                                                            #
  30. ##############################################################################
  31. E:projectFaxProgramVson_Bryan_Fax_Conexant_070423filesFlashMemoryAreaRW.c
  32.       1          /***************************************
  33.       2          Program:     FlashManage
  34.       3          Author:      Bryan Cai
  35.       4          Date:        2006.12.07
  36.       5          ***************************************/
  37.       6          
  38.       7          #include "includeH.h"
  39.                                     In segment DATA16_AN, at 0x28
  40.       unsigned char const volatile __data P2IN
  41.                         P2IN:
  42.       000000                        DS8 1
  43.                                     In segment DATA16_AN, at 0x29
  44.       unsigned char volatile __data P2OUT
  45.                         P2OUT:
  46.       000000                        DS8 1
  47.                                     In segment DATA16_AN, at 0x30
  48.       unsigned char const volatile __data P5IN
  49.                         P5IN:
  50.       000000                        DS8 1
  51.                                     In segment DATA16_AN, at 0x31
  52.       unsigned char volatile __data P5OUT
  53.                         P5OUT:
  54.       000000                        DS8 1
  55.                                     In segment DATA16_AN, at 0x32
  56.       unsigned char volatile __data P5DIR
  57.                         P5DIR:
  58.       000000                        DS8 1
  59.       8          
  60.       9          //unsigned int  gwGeneralPageAddress=0;//=960;
  61.      10          
  62.                                     In segment CODE, align 2, keep-with-next
  63.      11          void Write16Bytes2FlashMemoryArea(void)
  64.                         Write16Bytes2FlashMemoryArea:
  65.      12          {
  66.       000000   0A12                 PUSH.W  R10
  67.       000002   0B12                 PUSH.W  R11
  68.       000004   0812                 PUSH.W  R8
  69.      13          
  70.      14           unsigned char ucFlashSttsOverflowCnt=0,ucFaxGeneralLenCnt=0,
  71.       000006   4843                 MOV.B   #0x0, R8
  72.       000008   4A43                 MOV.B   #0x0, R10
  73.      15                         ucRxIndex=0;
  74.       00000A   4B43                 MOV.B   #0x0, R11
  75.      16                         
  76.      17          
  77.      18             COMMAND_VAL=cFlashWriteCmd;
  78.       00000C   F2408000....         MOV.B   #0x80, &COMMAND_VAL
  79.      19             COMMAND_LATCH_INTO();
  80.       000012   B012....             CALL    #COMMAND_LATCH_INTO
  81.      20          //ADDRESS
  82.      21             
  83.      22             ADDRESS_VALUE=gwColumnAddress & 0xff;//COLUMN_ADDRESS_LOW;
  84.       000016   D242........         MOV.B   &gwColumnAddress, &ADDRESS_VALUE
  85.      23             ADDRESS_LATCH_INTO();
  86.       00001C   B012....             CALL    #ADDRESS_LATCH_INTO
  87.      24          
  88.      25             ADDRESS_VALUE=(gwColumnAddress>>8) & 0XFF;//COLUMN_ADDRESS_HIGH;
  89.       000020   1E42....             MOV.W   &gwColumnAddress, R14
  90.       000024   8E10                 SWPB    R14
  91.       000026   3EF0FF00             AND.W   #0xff, R14
  92.       00002A   C24E....             MOV.B   R14, &ADDRESS_VALUE
  93.      26             ADDRESS_LATCH_INTO();
  94.       00002E   B012....             CALL    #ADDRESS_LATCH_INTO
  95.      27          
  96.      28             ADDRESS_VALUE=gwGeneralPageAddress & 0xff;
  97.       000032   D242........         MOV.B   &gwGeneralPageAddress, &ADDRESS_VALUE
  98.      29             ADDRESS_LATCH_INTO();
  99.       000038   B012....             CALL    #ADDRESS_LATCH_INTO
  100.      30          
  101.      31             ADDRESS_VALUE=(gwGeneralPageAddress>>8) & 0XFF;
  102.       00003C   1E42....             MOV.W   &gwGeneralPageAddress, R14
  103.       000040   8E10                 SWPB    R14
  104.       000042   3EF0FF00             AND.W   #0xff, R14
  105.       000046   C24E....             MOV.B   R14, &ADDRESS_VALUE
  106.      32             ADDRESS_LATCH_INTO();
  107.       00004A   B012....             CALL    #ADDRESS_LATCH_INTO
  108.      33             FLASH_CON_PORT_OUT &=~ ALE;
  109.       00004E   E2C32900             BIC.B   #0x2, &0x29
  110.      34          
  111.      35             DATA_PORT_OUT_INITIAL;
  112.       000052   F2433200             MOV.B   #0xff, &0x32
  113.      36             for (ucFaxGeneralLenCnt=0;ucFaxGeneralLenCnt<16;ucFaxGeneralLenCnt++)
  114.       000056   4A43                 MOV.B   #0x0, R10
  115.                         ??Write16Bytes2FlashMemoryArea_0:
  116.       000058   7A901000             CMP.B   #0x10, R10
  117.       00005C   0D2C                 JC      ??Write16Bytes2FlashMemoryArea_1
  118.      37             {
  119.      38             FLASH_CON_PORT_OUT&=~WE;
  120.       00005E   D2C32900             BIC.B   #0x1, &0x29
  121.      39               DATA_PORT_OUT=aucUartRxBuf[ucRxIndex++];
  122.       000062   4E4B                 MOV.B   R11, R14
  123.       000064   3EF0FF00             AND.W   #0xff, R14
  124.       000068   D24E....3100         MOV.B   aucUartRxBuf(R14), &0x31
  125.       00006E   5B53                 ADD.B   #0x1, R11
  126.      40               FLASH_CON_PORT_OUT |= WE;
  127.       000070   D2D32900             BIS.B   #0x1, &0x29
  128.      41             }
  129.       000074   5A53                 ADD.B   #0x1, R10
  130.       000076   F03F                 JMP     ??Write16Bytes2FlashMemoryArea_0
  131.      42          
  132.      43             COMMAND_VAL=cFlashWriteInitiateCmd; //10H INITIATES PROGRAM
  133.                         ??Write16Bytes2FlashMemoryArea_1:
  134.       000078   F2401000....         MOV.B   #0x10, &COMMAND_VAL
  135.      44             COMMAND_LATCH_INTO();
  136.       00007E   B012....             CALL    #COMMAND_LATCH_INTO
  137.      45          
  138.      46             READ_STATUS();
  139.       000082   B012....             CALL    #READ_STATUS
  140.      47             ucFlashSttsOverflowCnt=0;
  141.       000086   4843                 MOV.B   #0x0, R8
  142.      48             if(FLASH_STATUS==1&&(ucFlashSttsOverflowCnt++)<2)
  143.       000088   D293....             CMP.B   #0x1, &FLASH_STATUS
  144.       00008C   0120                 JNE     ??Write16Bytes2FlashMemoryArea_2
  145.       00008E   5853                 ADD.B   #0x1, R8
  146.      49             {;}
  147.      50          }
  148.                         ??Write16Bytes2FlashMemoryArea_2:
  149.       000090   3841                 POP.W   R8
  150.       000092   3B41                 POP.W   R11
  151.       000094   3A41                 POP.W   R10
  152.       000096   3041                 RET
  153.                                     In segment CODE, align 2, keep-with-next
  154.      51          void ReadLast16BytesFromFlashMemoryArea(unsigned char ucAreaStartBlockAddress, unsigned char ucAreaOverBlockAddress)//read last fax General pointer
  155.                         ReadLast16BytesFromFlashMemoryArea:
  156.      52          {
  157.       000000   0A12                 PUSH.W  R10
  158.       000002   0B12                 PUSH.W  R11
  159.       000004   0812                 PUSH.W  R8
  160.       000006   0912                 PUSH.W  R9
  161.       000008   0612                 PUSH.W  R6
  162.       00000A   0712                 PUSH.W  R7
  163.       00000C   0412                 PUSH.W  R4
  164.       00000E   0512                 PUSH.W  R5
  165.       000010   3182                 SUB.W   #0x8, SP
  166.       000012   C14C0300             MOV.B   R12, 0x3(SP)
  167.       000016   C14E0200             MOV.B   R14, 0x2(SP)
  168.      53           unsigned int wPageAddress=0, wBlockAddress=0,
  169.       00001A   0443                 MOV.W   #0x0, R4
  170.       00001C   0543                 MOV.W   #0x0, R5
  171.      54                        wColumnAddress=0,wNextPageAddress=0,
  172.       00001E   0A43                 MOV.W   #0x0, R10
  173.       000020   81430400             MOV.W   #0x0, 0x4(SP)
  174.      55                        wGeneralPntCnt=0;
  175.       000024   81430600             MOV.W   #0x0, 0x6(SP)
  176.      56           unsigned char ucRxIndex=0,
  177.       000028   4B43                 MOV.B   #0x0, R11
  178.      57                         ucRxIndex3=0,ucRxIndex2=0,
  179.       00002A   4743                 MOV.B   #0x0, R7
  180.       00002C   4843                 MOV.B   #0x0, R8
  181.      58                         ucRxIndex0=0,ucRxIndex1=0,
  182.       00002E   4943                 MOV.B   #0x0, R9
  183.       000030   4643                 MOV.B   #0x0, R6
  184.      59                         ucGeneralCnt=0,ucFaxGeneralLenCnt;
  185.       000032   C1430000             MOV.B   #0x0, 0x0(SP)
  186.      60          
  187.      61          
  188.      62            //for (wBlockAddress=cFaxRearPointerTableStartBlockNum;
  189.      63                //wBlockAddress<=cFaxRearPointerTableOverBlockNum;wBlockAddress++)
  190.      64           for (wBlockAddress=ucAreaStartBlockAddress;
  191.       000036   5E410300             MOV.B   0x3(SP), R14
  192.       00003A   3EF0FF00             AND.W   #0xff, R14
  193.       00003E   054E                 MOV.W   R14, R5
  194.      65                wBlockAddress<=ucAreaOverBlockAddress;wBlockAddress++)
  195.                         ??ReadLast16BytesFromFlashMemoryArea_5:
  196.       000040   5E410200             MOV.B   0x2(SP), R14
  197.       000044   3EF0FF00             AND.W   #0xff, R14
  198.       000048   0E95                 CMP.W   R5, R14
  199.       00004A   D028                 JNC     ??ReadLast16BytesFromFlashMemoryArea_6
  200.      66           {
  201.      67          
  202.      68           for (wPageAddress=(wBlockAddress<<6);wPageAddress<((wBlockAddress<<6)+64);wPageAddress++)//one block
  203.       00004C   0C45                 MOV.W   R5, R12
  204.       00004E   B012....             CALL    #?ShiftLeft16_6
  205.       000052   044C                 MOV.W   R12, R4
  206.                         ??ReadLast16BytesFromFlashMemoryArea_4:
  207.       000054   0C45                 MOV.W   R5, R12
  208.       000056   B012....             CALL    #?ShiftLeft16_6
  209.       00005A   3C504000             ADD.W   #0x40, R12
  210.       00005E   049C                 CMP.W   R12, R4
  211.       000060   AB2C                 JC      ??ReadLast16BytesFromFlashMemoryArea_7
  212.      69           {
  213.      70                do{
  214.      71               wNextPageAddress=wPageAddress+64;
  215.                         ??ReadLast16BytesFromFlashMemoryArea_0:
  216.       000062   3E404000             MOV.W   #0x40, R14
  217.       000066   0E54                 ADD.W   R4, R14
  218.       000068   814E0400             MOV.W   R14, 0x4(SP)
  219.      72               wPageAddress=CalNextPageAddress(wPageAddress);
  220.       00006C   0C44                 MOV.W   R4, R12
  221.       00006E   B012....             CALL    #CalNextPageAddress
  222.       000072   044C                 MOV.W   R12, R4
  223.      73                }while(wNextPageAddress==wPageAddress);
  224.       000074   81940400             CMP.W   R4, 0x4(SP)
  225.       000078   F427                 JEQ     ??ReadLast16BytesFromFlashMemoryArea_0
  226.      74                
  227.      75                wColumnAddress=0;
  228.       00007A   0A43                 MOV.W   #0x0, R10
  229.      76                ROW_ADDRESS_LOW=wPageAddress & 0XFF;
  230.       00007C   C244....             MOV.B   R4, &ROW_ADDRESS_LOW
  231.      77                ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF;
  232.       000080   0E44                 MOV.W   R4, R14
  233.       000082   8E10                 SWPB    R14
  234.       000084   3EF0FF00             AND.W   #0xff, R14
  235.       000088   C24E....             MOV.B   R14, &ROW_ADDRESS_HIGH
  236.      78                
  237.      79                for (ucGeneralCnt=0;ucGeneralCnt<8;ucGeneralCnt++)
  238.       00008C   C1430000             MOV.B   #0x0, 0x0(SP)
  239.                         ??ReadLast16BytesFromFlashMemoryArea_3:
  240.       000090   F1920000             CMP.B   #0x8, 0x0(SP)
  241.       000094   772C                 JC      ??ReadLast16BytesFromFlashMemoryArea_8
  242.      80                {
  243.      81          //COMMAND
  244.      82             COMMAND_VAL=0x00; //#0X00 //00H READ1 0-2111BYTE
  245.       000096   C243....             MOV.B   #0x0, &COMMAND_VAL
  246.      83             COMMAND_LATCH_INTO();
  247.       00009A   B012....             CALL    #COMMAND_LATCH_INTO
  248.      84          //ADDRESS
  249.      85          
  250.      86             ADDRESS_VALUE=wColumnAddress & 0xff;//COLUMN_ADDRESS_LOW;
  251.       00009E   C24A....             MOV.B   R10, &ADDRESS_VALUE
  252.      87             ADDRESS_LATCH_INTO();
  253.       0000A2   B012....             CALL    #ADDRESS_LATCH_INTO
  254.      88          
  255.      89             ADDRESS_VALUE=(wColumnAddress>>8) & 0XFF;//COLUMN_ADDRESS_HIGH;
  256.       0000A6   0E4A                 MOV.W   R10, R14
  257.       0000A8   8E10                 SWPB    R14
  258.       0000AA   3EF0FF00             AND.W   #0xff, R14
  259.       0000AE   C24E....             MOV.B   R14, &ADDRESS_VALUE
  260.      90             ADDRESS_LATCH_INTO();
  261.       0000B2   B012....             CALL    #ADDRESS_LATCH_INTO
  262.      91          
  263.      92             ADDRESS_VALUE=ROW_ADDRESS_LOW;
  264.       0000B6   D242........         MOV.B   &ROW_ADDRESS_LOW, &ADDRESS_VALUE
  265.      93             ADDRESS_LATCH_INTO();
  266.       0000BC   B012....             CALL    #ADDRESS_LATCH_INTO
  267.      94          
  268.      95             ADDRESS_VALUE=ROW_ADDRESS_HIGH;
  269.       0000C0   D242........         MOV.B   &ROW_ADDRESS_HIGH, &ADDRESS_VALUE
  270.      96             ADDRESS_LATCH_INTO();
  271.       0000C6   B012....             CALL    #ADDRESS_LATCH_INTO
  272.      97             FLASH_CON_PORT_OUT &=~ ALE;
  273.       0000CA   E2C32900             BIC.B   #0x2, &0x29
  274.      98          
  275.      99             COMMAND_VAL=0X30;
  276.       0000CE   F2403000....         MOV.B   #0x30, &COMMAND_VAL
  277.     100             COMMAND_LATCH_INTO();
  278.       0000D4   B012....             CALL    #COMMAND_LATCH_INTO
  279.     101             //ATcmdDelay();
  280.     102             while((FLASH_CON_PORT_IN & RB)==0);
  281.                         ??ReadLast16BytesFromFlashMemoryArea_1:
  282.       0000D8   F2B020002800         BIT.B   #0x20, &0x28
  283.       0000DE   FC2B                 JNC     ??ReadLast16BytesFromFlashMemoryArea_1
  284.     103             DATA_PORT_IN_INITIAL;
  285.       0000E0   C2433200             MOV.B   #0x0, &0x32
  286.     104             for (ucFaxGeneralLenCnt=0;ucFaxGeneralLenCnt<16;ucFaxGeneralLenCnt++)
  287.       0000E4   C1430100             MOV.B   #0x0, 0x1(SP)
  288.                         ??ReadLast16BytesFromFlashMemoryArea_2:
  289.       0000E8   F19010000100         CMP.B   #0x10, 0x1(SP)
  290.       0000EE   102C                 JC      ??ReadLast16BytesFromFlashMemoryArea_9
  291.     105             {
  292.     106               FLASH_CON_PORT_OUT &=~ RE; //RE IS LOW,ENABLE READ DATA
  293.       0000F0   F2C010002900         BIC.B   #0x10, &0x29
  294.     107               aucUartRxBuf[ucRxIndex++]=DATA_PORT_IN;
  295.       0000F6   4E4B                 MOV.B   R11, R14
  296.       0000F8   3EF0FF00             AND.W   #0xff, R14
  297.       0000FC   DE423000....         MOV.B   &0x30, aucUartRxBuf(R14)
  298.       000102   5B53                 ADD.B   #0x1, R11
  299.     108               FLASH_CON_PORT_OUT |= RE;
  300.       000104   F2D010002900         BIS.B   #0x10, &0x29
  301.     109             }
  302.       00010A   D1530100             ADD.B   #0x1, 0x1(SP)
  303.       00010E   EC3F                 JMP     ??ReadLast16BytesFromFlashMemoryArea_2
  304.     110             wGeneralPntCnt++;
  305.                         ??ReadLast16BytesFromFlashMemoryArea_9:
  306.       000110   91530600             ADD.W   #0x1, 0x6(SP)
  307.     111             
  308.     112             ucRxIndex3=ucRxIndex-4;
  309.       000114   7E40FC00             MOV.B   #0xfc, R14
  310.       000118   4E5B                 ADD.B   R11, R14
  311.       00011A   474E                 MOV.B   R14, R7
  312.     113                    ucRxIndex2=ucRxIndex-3;
  313.       00011C   7E40FD00             MOV.B   #0xfd, R14
  314.       000120   4E5B                 ADD.B   R11, R14
  315.       000122   484E                 MOV.B   R14, R8
  316.     114                    ucRxIndex1=ucRxIndex-2;
  317.       000124   7E40FE00             MOV.B   #0xfe, R14
  318.       000128   4E5B                 ADD.B   R11, R14
  319.       00012A   464E                 MOV.B   R14, R6
  320.     115                    ucRxIndex0=ucRxIndex-1;
  321.       00012C   7E43                 MOV.B   #0xff, R14
  322.       00012E   4E5B                 ADD.B   R11, R14
  323.       000130   494E                 MOV.B   R14, R9
  324.     116             if (0xff == aucUartRxBuf[ucRxIndex0] && 0xff == aucUartRxBuf[ucRxIndex1] &&
  325.     117                  0xff == aucUartRxBuf[ucRxIndex2] && 0xff == aucUartRxBuf[ucRxIndex3])
  326.       000132   4E49                 MOV.B   R9, R14
  327.       000134   3EF0FF00             AND.W   #0xff, R14
  328.       000138   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  329.       00013C   1820                 JNE     ??ReadLast16BytesFromFlashMemoryArea_10
  330.       00013E   4E46                 MOV.B   R6, R14
  331.       000140   3EF0FF00             AND.W   #0xff, R14
  332.       000144   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  333.       000148   1220                 JNE     ??ReadLast16BytesFromFlashMemoryArea_10
  334.       00014A   4E48                 MOV.B   R8, R14
  335.       00014C   3EF0FF00             AND.W   #0xff, R14
  336.       000150   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  337.       000154   0C20                 JNE     ??ReadLast16BytesFromFlashMemoryArea_10
  338.       000156   4E47                 MOV.B   R7, R14
  339.       000158   3EF0FF00             AND.W   #0xff, R14
  340.       00015C   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  341.       000160   0620                 JNE     ??ReadLast16BytesFromFlashMemoryArea_10
  342.     118                {
  343.     119                gucUartRxCnt = ucRxIndex-32;
  344.       000162   7E40E000             MOV.B   #0xe0, R14
  345.       000166   4E5B                 ADD.B   R11, R14
  346.       000168   C24E....             MOV.B   R14, &gucUartRxCnt
  347.     120                break;  //next General   
  348.       00016C   0B3C                 JMP     ??ReadLast16BytesFromFlashMemoryArea_8
  349.     121                }//if
  350.     122             if (ucGeneralCnt<4)
  351.                         ??ReadLast16BytesFromFlashMemoryArea_10:
  352.       00016E   E1920000             CMP.B   #0x4, 0x0(SP)
  353.       000172   032C                 JC      ??ReadLast16BytesFromFlashMemoryArea_11
  354.     123            wColumnAddress+=512;
  355.       000174   3A500002             ADD.W   #0x200, R10
  356.       000178   023C                 JMP     ??ReadLast16BytesFromFlashMemoryArea_12
  357.     124                    else
  358.     125            wColumnAddress+=16;
  359.                         ??ReadLast16BytesFromFlashMemoryArea_11:
  360.       00017A   3A501000             ADD.W   #0x10, R10
  361.     126             }//for read next General pointer
  362.                         ??ReadLast16BytesFromFlashMemoryArea_12:
  363.       00017E   D1530000             ADD.B   #0x1, 0x0(SP)
  364.       000182   863F                 JMP     ??ReadLast16BytesFromFlashMemoryArea_3
  365.     127             
  366.     128             
  367.     129             if (0xff == aucUartRxBuf[ucRxIndex0] && 0xff == aucUartRxBuf[ucRxIndex1] &&
  368.     130                  0xff == aucUartRxBuf[ucRxIndex2] && 0xff == aucUartRxBuf[ucRxIndex3])
  369.                         ??ReadLast16BytesFromFlashMemoryArea_8:
  370.       000184   4E49                 MOV.B   R9, R14
  371.       000186   3EF0FF00             AND.W   #0xff, R14
  372.       00018A   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  373.       00018E   1220                 JNE     ??ReadLast16BytesFromFlashMemoryArea_13
  374.       000190   4E46                 MOV.B   R6, R14
  375.       000192   3EF0FF00             AND.W   #0xff, R14
  376.       000196   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  377.       00019A   0C20                 JNE     ??ReadLast16BytesFromFlashMemoryArea_13
  378.       00019C   4E48                 MOV.B   R8, R14
  379.       00019E   3EF0FF00             AND.W   #0xff, R14
  380.       0001A2   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  381.       0001A6   0620                 JNE     ??ReadLast16BytesFromFlashMemoryArea_13
  382.       0001A8   4E47                 MOV.B   R7, R14
  383.       0001AA   3EF0FF00             AND.W   #0xff, R14
  384.       0001AE   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  385.       0001B2   0224                 JEQ     ??ReadLast16BytesFromFlashMemoryArea_7
  386.     131                {break;}
  387.     132             }//for next page
  388.                         ??ReadLast16BytesFromFlashMemoryArea_13:
  389.       0001B4   1453                 ADD.W   #0x1, R4
  390.       0001B6   4E3F                 JMP     ??ReadLast16BytesFromFlashMemoryArea_4
  391.     133             
  392.     134             
  393.     135             if (0xff == aucUartRxBuf[ucRxIndex0] && 0xff == aucUartRxBuf[ucRxIndex1] &&
  394.     136                  0xff == aucUartRxBuf[ucRxIndex2] && 0xff == aucUartRxBuf[ucRxIndex3])
  395.                         ??ReadLast16BytesFromFlashMemoryArea_7:
  396.       0001B8   4E49                 MOV.B   R9, R14
  397.       0001BA   3EF0FF00             AND.W   #0xff, R14
  398.       0001BE   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  399.       0001C2   1220                 JNE     ??ReadLast16BytesFromFlashMemoryArea_14
  400.       0001C4   4E46                 MOV.B   R6, R14
  401.       0001C6   3EF0FF00             AND.W   #0xff, R14
  402.       0001CA   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  403.       0001CE   0C20                 JNE     ??ReadLast16BytesFromFlashMemoryArea_14
  404.       0001D0   4E48                 MOV.B   R8, R14
  405.       0001D2   3EF0FF00             AND.W   #0xff, R14
  406.       0001D6   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  407.       0001DA   0620                 JNE     ??ReadLast16BytesFromFlashMemoryArea_14
  408.       0001DC   4E47                 MOV.B   R7, R14
  409.       0001DE   3EF0FF00             AND.W   #0xff, R14
  410.       0001E2   FE93....             CMP.B   #0xff, aucUartRxBuf(R14)
  411.       0001E6   0224                 JEQ     ??ReadLast16BytesFromFlashMemoryArea_6
  412.     137                {break;}
  413.     138           }//for next block
  414.                         ??ReadLast16BytesFromFlashMemoryArea_14:
  415.       0001E8   1553                 ADD.W   #0x1, R5
  416.       0001EA   2A3F                 JMP     ??ReadLast16BytesFromFlashMemoryArea_5
  417.     139           gwGeneralPageAddress=wPageAddress; //for write Fax General pointer
  418.                         ??ReadLast16BytesFromFlashMemoryArea_6:
  419.       0001EC   8244....             MOV.W   R4, &gwGeneralPageAddress
  420.     140            gwColumnAddress=wColumnAddress; //for find blank page
  421.       0001F0   824A....             MOV.W   R10, &gwColumnAddress
  422.     141            if (ucAreaOverBlockAddress>10)
  423.       0001F4   F1900B000200         CMP.B   #0xb, 0x2(SP)
  424.       0001FA   2B28                 JNC     ??ReadLast16BytesFromFlashMemoryArea_15
  425.     142            {
  426.     143            if (wGeneralPntCnt>1)
  427.       0001FC   A1930600             CMP.W   #0x2, 0x6(SP)
  428.       000200   2228                 JNC     ??ReadLast16BytesFromFlashMemoryArea_16
  429.     144            {
  430.     145              ucRxIndex1=ucRxIndex-32;
  431.       000202   7E40E000             MOV.B   #0xe0, R14
  432.       000206   4E5B                 ADD.B   R11, R14
  433.       000208   464E                 MOV.B   R14, R6
  434.     146              ucRxIndex0=ucRxIndex-31;
  435.       00020A   7E40E100             MOV.B   #0xe1, R14
  436.       00020E   4E5B                 ADD.B   R11, R14
  437.       000210   494E                 MOV.B   R14, R9
  438.     147              wPageAddress=aucUartRxBuf[ucRxIndex0];
  439.       000212   4E49                 MOV.B   R9, R14
  440.       000214   3EF0FF00             AND.W   #0xff, R14
  441.       000218   5E4E....             MOV.B   aucUartRxBuf(R14), R14
  442.       00021C   3EF0FF00             AND.W   #0xff, R14
  443.       000220   044E                 MOV.W   R14, R4
  444.     148              gwPageAddress=(wPageAddress<<8) | aucUartRxBuf[ucRxIndex1];
  445.       000222   0F44                 MOV.W   R4, R15
  446.       000224   3FF0FF00             AND.W   #0xff, R15
  447.       000228   8F10                 SWPB    R15
  448.       00022A   4E46                 MOV.B   R6, R14
  449.       00022C   3EF0FF00             AND.W   #0xff, R14
  450.       000230   5E4E....             MOV.B   aucUartRxBuf(R14), R14
  451.       000234   3EF0FF00             AND.W   #0xff, R14
  452.       000238   0FDE                 BIS.W   R14, R15
  453.       00023A   824F....             MOV.W   R15, &gwPageAddress
  454.     149              gucGeneralStatus |= bitReadFlashMemoryOK; 
  455.       00023E   F2D02000....         BIS.B   #0x20, &gucGeneralStatus
  456.       000244   063C                 JMP     ??ReadLast16BytesFromFlashMemoryArea_15
  457.     150            }
  458.     151            else
  459.     152              {
  460.     153               gwPageAddress=cstFaxContentStartPage-1;//2559;//1279;//write the data start address
  461.                         ??ReadLast16BytesFromFlashMemoryArea_16:
  462.       000246   B240FF13....         MOV.W   #0x13ff, &gwPageAddress
  463.     154               gucGeneralStatus &= ~bitReadFlashMemoryOK;
  464.       00024C   F2C02000....         BIC.B   #0x20, &gucGeneralStatus
  465.     155              }
  466.     156            }
  467.     157          }
  468.                         ??ReadLast16BytesFromFlashMemoryArea_15:
  469.       000252   3152                 ADD.W   #0x8, SP
  470.       000254   3040....             BR      #?Epilogue8
  471.    Maximum stack usage in bytes:
  472.      Function                       CSTACK
  473.      --------                       ------
  474.      ReadLast16BytesFromFlashMemoryArea
  475.                                        26
  476.        -> CalNextPageAddress           26
  477.        -> COMMAND_LATCH_INTO           26
  478.        -> ADDRESS_LATCH_INTO           26
  479.        -> ADDRESS_LATCH_INTO           26
  480.        -> ADDRESS_LATCH_INTO           26
  481.        -> ADDRESS_LATCH_INTO           26
  482.        -> COMMAND_LATCH_INTO           26
  483.      Write16Bytes2FlashMemoryArea       8
  484.        -> COMMAND_LATCH_INTO            8
  485.        -> ADDRESS_LATCH_INTO            8
  486.        -> ADDRESS_LATCH_INTO            8
  487.        -> ADDRESS_LATCH_INTO            8
  488.        -> ADDRESS_LATCH_INTO            8
  489.        -> COMMAND_LATCH_INTO            8
  490.        -> READ_STATUS                   8
  491.    Segment part sizes:
  492.      Function/Label                 Bytes
  493.      --------------                 -----
  494.      P2IN                              1
  495.      P2OUT                             1
  496.      P5IN                              1
  497.      P5OUT                             1
  498.      P5DIR                             1
  499.      Write16Bytes2FlashMemoryArea    152
  500.      ReadLast16BytesFromFlashMemoryArea
  501.                                      600
  502.  
  503.  752 bytes in segment CODE
  504.    5 bytes in segment DATA16_AN
  505.  
  506.  752 bytes of CODE memory
  507.    0 bytes of DATA memory (+ 5 bytes shared)
  508. Errors: none
  509. Warnings: none