FaxRxBufRawdata2pc.s43
上传用户:xhjmsc
上传日期:2019-09-13
资源大小:389k
文件大小:10k
- NAME FaxRxBufRawdata2pc
- RTMODEL "__double_size", "32"
- RTMODEL "__pic", "no"
- RTMODEL "__reg_r4", "free"
- RTMODEL "__reg_r5", "free"
- RTMODEL "__rt_version", "1"
- RSEG CSTACK:DATA:SORT:NOROOT(1)
- EXTERN ZERO_ADDRESS
- FUNCTION ZERO_ADDRESS,0202H
- EXTERN gwPageAddress
- EXTERN ROW_ADDRESS_LOW
- EXTERN ROW_ADDRESS_HIGH
- EXTERN COLUMN_ADDRESS_HIGH
- EXTERN READ_256_BYTE
- FUNCTION READ_256_BYTE,0202H
- EXTERN aucUartRxBuf
- EXTERN SoftUartTxOneFrame
- FUNCTION SoftUartTxOneFrame,0202H
- EXTERN ATcmdDelay
- FUNCTION ATcmdDelay,0202H
- EXTERN ?longjmp_r4
- EXTERN ?longjmp_r5
- EXTERN ?setjmp_r4
- EXTERN ?setjmp_r5
- PUBWEAK ?setjmp_save_r4
- PUBWEAK ?setjmp_save_r5
- PUBLIC FaxRxBufRawdata2PCFromSoftUart
- FUNCTION FaxRxBufRawdata2PCFromSoftUart,021203H
- LOCFRAME CSTACK, 8, STACK
- PUBWEAK P6DIR
-
- CFI Names cfiNames0
- CFI StackFrame CFA SP DATA
- CFI Resource PC:16, SP:16, SR:16, R4:16, R5:16, R6:16, R7:16, R8:16
- CFI Resource R9:16, R10:16, R11:16, R12:16, R13:16, R14:16, R15:16
- CFI EndNames cfiNames0
-
- CFI Common cfiCommon0 Using cfiNames0
- CFI CodeAlign 2
- CFI DataAlign 2
- CFI ReturnAddress PC CODE
- CFI CFA SP+2
- CFI PC Frame(CFA, -2)
- CFI SR Undefined
- CFI R4 SameValue
- CFI R5 SameValue
- CFI R6 SameValue
- CFI R7 SameValue
- CFI R8 SameValue
- CFI R9 SameValue
- CFI R10 SameValue
- CFI R11 SameValue
- CFI R12 Undefined
- CFI R13 Undefined
- CFI R14 Undefined
- CFI R15 Undefined
- CFI EndCommon cfiCommon0
-
- // E:projectFaxProgramVson_Bryan_Fax_Conexant_070423filesFaxRxBufRawdata2pc.c
- // 1 /************************************************
- // 2 Description:
- // 3 Send the received fax raw data to PC via MAX232
- // 4 3G 1-dimensional Data Format Recommendation T.4
- // 5 Input:
- // 6 none
- // 7 Output:
- // 8 none
- // 9 Update:
- // 10 2006.11.02 Bryan function header create
- // 11 ************************************************/
- // 12
- // 13 #include "includeH.h"
- ASEGN DATA16_AN:DATA:NOROOT,036H
- // unsigned char volatile __data P6DIR
- P6DIR:
- DS8 1
- // 14
- RSEG CODE:CODE:NOROOT(1)
- // 15 void FaxRxBufRawdata2PCFromSoftUart(void) // send the received fax data to PC via MAX232
- FaxRxBufRawdata2PCFromSoftUart:
- CFI Block cfiBlock0 Using cfiCommon0
- CFI Function FaxRxBufRawdata2PCFromSoftUart
- // 16 {
- FUNCALL FaxRxBufRawdata2PCFromSoftUart, ZERO_ADDRESS
- LOCFRAME CSTACK, 8, STACK
- FUNCALL FaxRxBufRawdata2PCFromSoftUart, READ_256_BYTE
- LOCFRAME CSTACK, 8, STACK
- FUNCALL FaxRxBufRawdata2PCFromSoftUart, SoftUartTxOneFrame
- LOCFRAME CSTACK, 8, STACK
- FUNCALL FaxRxBufRawdata2PCFromSoftUart, ATcmdDelay
- LOCFRAME CSTACK, 8, STACK
- PUSH.W R10
- CFI R10 Frame(CFA, -4)
- CFI CFA SP+4
- PUSH.W R11
- CFI R11 Frame(CFA, -6)
- CFI CFA SP+6
- PUSH.W R8
- CFI R8 Frame(CFA, -8)
- CFI CFA SP+8
- // 17 unsigned char ucFlashColumnAddCnt=0;
- MOV.B #0x0, R8
- // 18 unsigned int wGeneralCnt=0,wPageAddress=0;
- MOV.W #0x0, R10
- MOV.W #0x0, R11
- // 19 //ucGeneralCnt=2;
- // 20 SOFTUART_PORT_DIRECTION |= bitSOFTUARTTX;
- BIS.B #0x1, &0x36
- // 21 //wPageAddress=gwPageAddress;
- // 22 ZERO_ADDRESS();
- CALL #ZERO_ADDRESS
- // 23 //for (gwPageAddress=1216;gwPageAddress<2559;gwPageAddress++) //Mar.2, 2007
- // 24 for (wPageAddress=cstFaxRxBufStartPage;wPageAddress<=gwPageAddress;wPageAddress++)
- MOV.W #0x4c0, R11
- ??FaxRxBufRawdata2PCFromSoftUart_2:
- CMP.W R11, &gwPageAddress
- JNC ??FaxRxBufRawdata2PCFromSoftUart_3
- // 25 {
- // 26
- // 27 ROW_ADDRESS_LOW = wPageAddress & 0xff;
- MOV.B R11, &ROW_ADDRESS_LOW
- // 28 ROW_ADDRESS_HIGH = (wPageAddress>>8) & 0xff;
- MOV.W R11, R14
- SWPB R14
- AND.W #0xff, R14
- MOV.B R14, &ROW_ADDRESS_HIGH
- // 29 for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)
- MOV.B #0x0, R8
- ??FaxRxBufRawdata2PCFromSoftUart_1:
- CMP.B #0x8, R8
- JC ??FaxRxBufRawdata2PCFromSoftUart_4
- // 30 {
- // 31 //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
- // 32 //total 8*256B+64B=2K+64B
- // 33 COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
- MOV.B R8, &COLUMN_ADDRESS_HIGH
- // 34 READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
- CALL #READ_256_BYTE
- // 35 for (wGeneralCnt=0;wGeneralCnt<256;wGeneralCnt++)//
- MOV.W #0x0, R10
- ??FaxRxBufRawdata2PCFromSoftUart_0:
- CMP.W #0x100, R10
- JC ??FaxRxBufRawdata2PCFromSoftUart_5
- // 36 //modify Dec.28,2006 4*64Bytes one time
- // 37 {
- // 38 SoftUartTxOneFrame(aucUartRxBuf[wGeneralCnt]);
- MOV.B aucUartRxBuf(R10), R12
- CALL #SoftUartTxOneFrame
- // 39 if (aucUartRxBuf[wGeneralCnt] == 0xfb && aucUartRxBuf[wGeneralCnt-1] == 0x13 && aucUartRxBuf[wGeneralCnt-2] == 0xff)
- CMP.B #0xfb, aucUartRxBuf(R10)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_6
- MOV.W #aucUartRxBuf, R14
- ADD.W R10, R14
- CMP.B #0x13, 0xffff(R14)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_6
- MOV.W #aucUartRxBuf, R14
- ADD.W R10, R14
- CMP.B #0xff, 0xfffe(R14)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_6
- // 40 {_NOP();break;}
- NOP
- JMP ??FaxRxBufRawdata2PCFromSoftUart_5
- // 41 }//third for
- ??FaxRxBufRawdata2PCFromSoftUart_6:
- ADD.W #0x1, R10
- JMP ??FaxRxBufRawdata2PCFromSoftUart_0
- // 42 if (aucUartRxBuf[wGeneralCnt] == 0xfb && aucUartRxBuf[wGeneralCnt-1] == 0x13 && aucUartRxBuf[wGeneralCnt-2] == 0xff)
- ??FaxRxBufRawdata2PCFromSoftUart_5:
- CMP.B #0xfb, aucUartRxBuf(R10)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_7
- MOV.W #aucUartRxBuf, R14
- ADD.W R10, R14
- CMP.B #0x13, 0xffff(R14)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_7
- MOV.W #aucUartRxBuf, R14
- ADD.W R10, R14
- CMP.B #0xff, 0xfffe(R14)
- JEQ ??FaxRxBufRawdata2PCFromSoftUart_4
- // 43 break;
- // 44 }//second for next 256Byte
- ??FaxRxBufRawdata2PCFromSoftUart_7:
- ADD.B #0x1, R8
- JMP ??FaxRxBufRawdata2PCFromSoftUart_1
- // 45 if (aucUartRxBuf[wGeneralCnt] == 0xfb && aucUartRxBuf[wGeneralCnt-1] == 0x13 && aucUartRxBuf[wGeneralCnt-2] == 0xff)
- ??FaxRxBufRawdata2PCFromSoftUart_4:
- CMP.B #0xfb, aucUartRxBuf(R10)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_8
- MOV.W #aucUartRxBuf, R14
- ADD.W R10, R14
- CMP.B #0x13, 0xffff(R14)
- JNE ??FaxRxBufRawdata2PCFromSoftUart_8
- MOV.W #aucUartRxBuf, R14
- ADD.W R10, R14
- CMP.B #0xff, 0xfffe(R14)
- JEQ ??FaxRxBufRawdata2PCFromSoftUart_3
- // 46 break;
- // 47 }//first for next page
- ??FaxRxBufRawdata2PCFromSoftUart_8:
- ADD.W #0x1, R11
- JMP ??FaxRxBufRawdata2PCFromSoftUart_2
- // 48
- // 49 ATcmdDelay(); // receive data delay(if not, can't receive 0x10 0x03)
- ??FaxRxBufRawdata2PCFromSoftUart_3:
- CALL #ATcmdDelay
- // 50
- // 51 SOFTUART_PORT_DIRECTION &= ~bitSOFTUARTTX;
- BIC.B #0x1, &0x36
- // 52 }
- POP.W R8
- CFI R8 SameValue
- CFI CFA SP+6
- POP.W R11
- CFI R11 SameValue
- CFI CFA SP+4
- POP.W R10
- CFI R10 SameValue
- CFI CFA SP+2
- RET
- CFI EndBlock cfiBlock0
- RSEG CODE:CODE:NOROOT(1)
- ?setjmp_save_r4:
- REQUIRE ?setjmp_r4
- REQUIRE ?longjmp_r4
- RSEG CODE:CODE:NOROOT(1)
- ?setjmp_save_r5:
- REQUIRE ?setjmp_r5
- REQUIRE ?longjmp_r5
- END
- // 53 /*
- // 54 void FaxRxBufRawdata2PCFromUart(void) // send the received fax data to PC via MAX232
- // 55 {
- // 56 unsigned char ucFlashColumnAddCnt=0,ucGeneralCnt=0;
- // 57 //ucGeneralCnt=2;
- // 58 ZERO_ADDRESS();
- // 59 for (gwPageAddress=cstFaxRxBufStartPage;gwPageAddress<2559;gwPageAddress++)
- // 60 {
- // 61
- // 62 ROW_ADDRESS_LOW = gwPageAddress & 0xff;
- // 63 ROW_ADDRESS_HIGH = (gwPageAddress>>8) & 0xff;
- // 64 for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)
- // 65 {
- // 66 //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
- // 67 //total 8*256B+64B=2K+64B
- // 68 COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
- // 69 READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
- // 70 for (ucGeneralCnt=0;ucGeneralCnt<4;ucGeneralCnt++)//16*16Bytes send 16Bytes one time
- // 71 {
- // 72 Send64BytePageImageData(64,ucGeneralCnt);
- // 73 while(gucTxBufCnt!=0)//send over, ucTxBufCnt == 0
- // 74 {
- // 75 ;
- // 76 }
- // 77 //delay10ms();
- // 78 if (gwTxNum != 64 && TXBUF0==0xfb)
- // 79 break;
- // 80 }//third for
- // 81 if (gwTxNum != 64)
- // 82 break;
- // 83 }//second for
- // 84
- // 85 if (gwTxNum != 64)
- // 86 break;
- // 87 }//first for next page
- // 88
- // 89 ATcmdDelay(); // receive data delay(if not, can't receive 0x10 0x03)
- // 90 }
- // 91 */
- //
- // 210 bytes in segment CODE
- // 1 byte in segment DATA16_AN
- //
- // 210 bytes of CODE memory
- // 0 bytes of DATA memory (+ 1 byte shared)
- //
- //Errors: none
- //Warnings: none