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

传真(Fax)编程

开发平台:

C/C++

  1. /***************************************
  2. Program:     Fax Property Table Manage
  3. Author:      Bryan Cai
  4. Date:        2006.12.13
  5. ***************************************/
  6. #include "includeH.h"
  7. unsigned int  gwFaxPropertyAddress=64;
  8. void WriteFaxPropertyTable(void)
  9. {
  10. unsigned char ucFlashSttsOverflowCnt=0,ucFaxPropertyLenCnt=0,
  11.               ucRxIndex=0;
  12.   COMMAND_VAL=cFlashWriteCmd;
  13.   COMMAND_LATCH_INTO();
  14. //ADDRESS
  15.   
  16.   ADDRESS_VALUE=gwColumnAddress & 0xff;//COLUMN_ADDRESS_LOW;
  17.   ADDRESS_LATCH_INTO();
  18.   ADDRESS_VALUE=(gwColumnAddress>>8) & 0XFF;//COLUMN_ADDRESS_HIGH;
  19.   ADDRESS_LATCH_INTO();
  20.   ADDRESS_VALUE=gwFaxPropertyAddress & 0xff;
  21.   ADDRESS_LATCH_INTO();
  22.   ADDRESS_VALUE=(gwFaxPropertyAddress>>8) & 0XFF;
  23.   ADDRESS_LATCH_INTO();
  24.   FLASH_CON_PORT_OUT &=~ ALE;
  25.   DATA_PORT_OUT_INITIAL;
  26.   for (ucFaxPropertyLenCnt=0;ucFaxPropertyLenCnt<16;ucFaxPropertyLenCnt++)
  27.   {
  28.   FLASH_CON_PORT_OUT&=~WE;
  29.     DATA_PORT_OUT=aucUartRxBuf[ucRxIndex++];
  30.     FLASH_CON_PORT_OUT |= WE;
  31.   }
  32.   COMMAND_VAL=cFlashWriteInitiateCmd; //10H INITIATES PROGRAM
  33.   COMMAND_LATCH_INTO();
  34.   READ_STATUS();
  35.   ucFlashSttsOverflowCnt=0;
  36.   if(FLASH_STATUS==1&&(ucFlashSttsOverflowCnt++)<2)
  37.   {;}
  38. }
  39. void ReadLastFaxProperty(void)//find last fax property recorder
  40. {
  41. unsigned int wPageAddress=0, wBlockAddress=0,
  42.              wColumnAddress=0,wNextPageAddress=0,
  43.              wRearPntCnt=0;
  44. unsigned char ucRxIndex=0,
  45.               ucGeneralCnt=0,ucFaxPropertyLenCnt,
  46.               ucRxIndex3=0,ucRxIndex2=0,
  47.               ucRxIndex0=0,ucRxIndex1=0;
  48.   for (wBlockAddress=cFaxPropertyTableStartBlockNum;
  49.      wBlockAddress<=cFaxPropertyTableOverBlockNum;wBlockAddress++)
  50. {
  51. for (wPageAddress=(wBlockAddress<<6);wPageAddress<((wBlockAddress<<6)+64);wPageAddress++)
  52. {
  53.       do{
  54.     wNextPageAddress=wPageAddress+64;
  55.     wPageAddress=CalNextPageAddress(wPageAddress);
  56.       }while(wNextPageAddress==wPageAddress);
  57.       
  58.       wColumnAddress=0;
  59.       ROW_ADDRESS_LOW=wPageAddress & 0XFF;
  60.       ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF;
  61.       
  62.       for (ucGeneralCnt=0;ucGeneralCnt<8;ucGeneralCnt++)
  63.       {
  64. //COMMAND
  65.   COMMAND_VAL=0x00; //#0X00 //00H READ1 0-2111BYTE
  66.   COMMAND_LATCH_INTO();
  67. //ADDRESS
  68.   ADDRESS_VALUE=wColumnAddress & 0xff;//COLUMN_ADDRESS_LOW;
  69.   ADDRESS_LATCH_INTO();
  70.   ADDRESS_VALUE=(wColumnAddress>>8) & 0XFF;//COLUMN_ADDRESS_HIGH;
  71.   ADDRESS_LATCH_INTO();
  72.   ADDRESS_VALUE=ROW_ADDRESS_LOW;
  73.   ADDRESS_LATCH_INTO();
  74.   ADDRESS_VALUE=ROW_ADDRESS_HIGH;
  75.   ADDRESS_LATCH_INTO();
  76.   FLASH_CON_PORT_OUT &=~ ALE;
  77.   COMMAND_VAL=0X30;
  78.   COMMAND_LATCH_INTO();
  79.   //ATcmdDelay();
  80.   while((FLASH_CON_PORT_IN & RB)==0);
  81.   DATA_PORT_IN_INITIAL;
  82.   for (ucFaxPropertyLenCnt=0;ucFaxPropertyLenCnt<16;ucFaxPropertyLenCnt++)
  83.   {
  84.     FLASH_CON_PORT_OUT &=~ RE; //RE IS LOW,ENABLE READ DATA
  85.     aucUartRxBuf[ucRxIndex++]=DATA_PORT_IN;
  86.     FLASH_CON_PORT_OUT |= RE;
  87.   }
  88.   wRearPntCnt++;
  89.   ucRxIndex3=ucRxIndex-4;
  90.       ucRxIndex2=ucRxIndex-3;
  91.       ucRxIndex1=ucRxIndex-2;
  92.       ucRxIndex0=ucRxIndex-1;
  93.     if (0xff == aucUartRxBuf[ucRxIndex0] && 0xff == aucUartRxBuf[ucRxIndex1] &&
  94.        0xff == aucUartRxBuf[ucRxIndex2] && 0xff == aucUartRxBuf[ucRxIndex3])
  95.      {
  96.      break;  //next rear   
  97.      }//if
  98.   if (ucGeneralCnt<4)
  99.  wColumnAddress+=512;
  100.           else
  101.  wColumnAddress+=16;
  102.   }//for read next rear pointer
  103.   
  104.   //ucRxIndex3=gucUartRxCnt-4;
  105.     //ucRxIndex2=gucUartRxCnt-3;
  106.     //ucRxIndex1=gucUartRxCnt-2;
  107.     //ucRxIndex0=gucUartRxCnt-1;
  108.   if (0xff == aucUartRxBuf[ucRxIndex0] && 0xff == aucUartRxBuf[ucRxIndex1] &&
  109.      0xff == aucUartRxBuf[ucRxIndex2] && 0xff == aucUartRxBuf[ucRxIndex3])
  110.     {break;}
  111.   }//for next page
  112.   //ucRxIndex3=gucUartRxCnt-4;
  113.     //ucRxIndex2=gucUartRxCnt-3;
  114.     //ucRxIndex1=gucUartRxCnt-2;
  115.     //ucRxIndex0=gucUartRxCnt-1;
  116.   if (0xff == aucUartRxBuf[ucRxIndex0] && 0xff == aucUartRxBuf[ucRxIndex1] &&
  117.      0xff == aucUartRxBuf[ucRxIndex2] && 0xff == aucUartRxBuf[ucRxIndex3])
  118.     {break;}
  119. }//for next block
  120. gwFaxPropertyAddress=wPageAddress; //for write Fax property record
  121.   gwColumnAddress=wColumnAddress; //
  122. }