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

传真(Fax)编程

开发平台:

C/C++

  1.         NAME FaxRxBufRawdata2pc
  2.         RTMODEL "__double_size", "32"
  3.         RTMODEL "__pic", "no"
  4.         RTMODEL "__reg_r4", "free"
  5.         RTMODEL "__reg_r5", "free"
  6.         RTMODEL "__rt_version", "1"
  7.         RSEG CSTACK:DATA:SORT:NOROOT(1)
  8.         EXTERN ZERO_ADDRESS
  9.         FUNCTION ZERO_ADDRESS,0202H
  10.         EXTERN gwPageAddress
  11.         EXTERN ROW_ADDRESS_LOW
  12.         EXTERN ROW_ADDRESS_HIGH
  13.         EXTERN COLUMN_ADDRESS_HIGH
  14.         EXTERN READ_256_BYTE
  15.         FUNCTION READ_256_BYTE,0202H
  16.         EXTERN aucUartRxBuf
  17.         EXTERN SoftUartTxOneFrame
  18.         FUNCTION SoftUartTxOneFrame,0202H
  19.         EXTERN ATcmdDelay
  20.         FUNCTION ATcmdDelay,0202H
  21.         EXTERN ?longjmp_r4
  22.         EXTERN ?longjmp_r5
  23.         EXTERN ?setjmp_r4
  24.         EXTERN ?setjmp_r5
  25.         PUBWEAK ?setjmp_save_r4
  26.         PUBWEAK ?setjmp_save_r5
  27.         PUBLIC FaxRxBufRawdata2PCFromSoftUart
  28.         FUNCTION FaxRxBufRawdata2PCFromSoftUart,021203H
  29.         LOCFRAME CSTACK, 8, STACK
  30.         PUBWEAK P6DIR
  31.         
  32.         CFI Names cfiNames0
  33.         CFI StackFrame CFA SP DATA
  34.         CFI Resource PC:16, SP:16, SR:16, R4:16, R5:16, R6:16, R7:16, R8:16
  35.         CFI Resource R9:16, R10:16, R11:16, R12:16, R13:16, R14:16, R15:16
  36.         CFI EndNames cfiNames0
  37.         
  38.         CFI Common cfiCommon0 Using cfiNames0
  39.         CFI CodeAlign 2
  40.         CFI DataAlign 2
  41.         CFI ReturnAddress PC CODE
  42.         CFI CFA SP+2
  43.         CFI PC Frame(CFA, -2)
  44.         CFI SR Undefined
  45.         CFI R4 SameValue
  46.         CFI R5 SameValue
  47.         CFI R6 SameValue
  48.         CFI R7 SameValue
  49.         CFI R8 SameValue
  50.         CFI R9 SameValue
  51.         CFI R10 SameValue
  52.         CFI R11 SameValue
  53.         CFI R12 Undefined
  54.         CFI R13 Undefined
  55.         CFI R14 Undefined
  56.         CFI R15 Undefined
  57.         CFI EndCommon cfiCommon0
  58.         
  59. // E:projectFaxProgramVson_Bryan_Fax_Conexant_070423filesFaxRxBufRawdata2pc.c
  60. //    1 /************************************************
  61. //    2 Description: 
  62. //    3       Send the received fax raw data to PC via MAX232
  63. //    4       3G 1-dimensional Data Format Recommendation T.4
  64. //    5 Input:
  65. //    6       none
  66. //    7 Output:
  67. //    8       none
  68. //    9 Update:
  69. //   10       2006.11.02  Bryan      function header     create
  70. //   11 ************************************************/
  71. //   12 
  72. //   13 #include "includeH.h"
  73.         ASEGN DATA16_AN:DATA:NOROOT,036H
  74. // unsigned char volatile __data P6DIR
  75. P6DIR:
  76.         DS8 1
  77. //   14 
  78.         RSEG CODE:CODE:NOROOT(1)
  79. //   15 void  FaxRxBufRawdata2PCFromSoftUart(void) // send the received fax data to PC via MAX232
  80. FaxRxBufRawdata2PCFromSoftUart:
  81.         CFI Block cfiBlock0 Using cfiCommon0
  82.         CFI Function FaxRxBufRawdata2PCFromSoftUart
  83. //   16 {     
  84.         FUNCALL FaxRxBufRawdata2PCFromSoftUart, ZERO_ADDRESS
  85.         LOCFRAME CSTACK, 8, STACK
  86.         FUNCALL FaxRxBufRawdata2PCFromSoftUart, READ_256_BYTE
  87.         LOCFRAME CSTACK, 8, STACK
  88.         FUNCALL FaxRxBufRawdata2PCFromSoftUart, SoftUartTxOneFrame
  89.         LOCFRAME CSTACK, 8, STACK
  90.         FUNCALL FaxRxBufRawdata2PCFromSoftUart, ATcmdDelay
  91.         LOCFRAME CSTACK, 8, STACK
  92. PUSH.W R10
  93.         CFI R10 Frame(CFA, -4)
  94.         CFI CFA SP+4
  95. PUSH.W R11
  96.         CFI R11 Frame(CFA, -6)
  97.         CFI CFA SP+6
  98. PUSH.W R8
  99.         CFI R8 Frame(CFA, -8)
  100.         CFI CFA SP+8
  101. //   17       unsigned char ucFlashColumnAddCnt=0;
  102. MOV.B #0x0, R8
  103. //   18       unsigned int wGeneralCnt=0,wPageAddress=0;
  104. MOV.W #0x0, R10
  105. MOV.W #0x0, R11
  106. //   19       //ucGeneralCnt=2;
  107. //   20       SOFTUART_PORT_DIRECTION |= bitSOFTUARTTX;
  108. BIS.B #0x1, &0x36
  109. //   21       //wPageAddress=gwPageAddress;
  110. //   22       ZERO_ADDRESS();
  111. CALL #ZERO_ADDRESS
  112. //   23       //for (gwPageAddress=1216;gwPageAddress<2559;gwPageAddress++) //Mar.2, 2007
  113. //   24       for (wPageAddress=cstFaxRxBufStartPage;wPageAddress<=gwPageAddress;wPageAddress++)
  114. MOV.W #0x4c0, R11
  115. ??FaxRxBufRawdata2PCFromSoftUart_2:
  116. CMP.W R11, &gwPageAddress
  117. JNC ??FaxRxBufRawdata2PCFromSoftUart_3
  118. //   25       {
  119. //   26         
  120. //   27         ROW_ADDRESS_LOW = wPageAddress & 0xff;
  121. MOV.B R11, &ROW_ADDRESS_LOW
  122. //   28         ROW_ADDRESS_HIGH = (wPageAddress>>8) & 0xff;
  123. MOV.W R11, R14
  124. SWPB R14
  125. AND.W #0xff, R14
  126. MOV.B R14, &ROW_ADDRESS_HIGH
  127. //   29         for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)
  128. MOV.B #0x0, R8
  129. ??FaxRxBufRawdata2PCFromSoftUart_1:
  130. CMP.B #0x8, R8
  131. JC ??FaxRxBufRawdata2PCFromSoftUart_4
  132. //   30         {
  133. //   31             //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
  134. //   32             //total 8*256B+64B=2K+64B
  135. //   33      COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
  136. MOV.B R8, &COLUMN_ADDRESS_HIGH
  137. //   34      READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
  138. CALL #READ_256_BYTE
  139. //   35      for (wGeneralCnt=0;wGeneralCnt<256;wGeneralCnt++)//
  140. MOV.W #0x0, R10
  141. ??FaxRxBufRawdata2PCFromSoftUart_0:
  142. CMP.W #0x100, R10
  143. JC ??FaxRxBufRawdata2PCFromSoftUart_5
  144. //   36                                                            //modify Dec.28,2006 4*64Bytes one time
  145. //   37      {
  146. //   38  SoftUartTxOneFrame(aucUartRxBuf[wGeneralCnt]);
  147. MOV.B aucUartRxBuf(R10), R12
  148. CALL #SoftUartTxOneFrame
  149. //   39  if (aucUartRxBuf[wGeneralCnt] == 0xfb && aucUartRxBuf[wGeneralCnt-1] == 0x13 && aucUartRxBuf[wGeneralCnt-2] == 0xff)
  150. CMP.B #0xfb, aucUartRxBuf(R10)
  151. JNE ??FaxRxBufRawdata2PCFromSoftUart_6
  152. MOV.W #aucUartRxBuf, R14
  153. ADD.W R10, R14
  154. CMP.B #0x13, 0xffff(R14)
  155. JNE ??FaxRxBufRawdata2PCFromSoftUart_6
  156. MOV.W #aucUartRxBuf, R14
  157. ADD.W R10, R14
  158. CMP.B #0xff, 0xfffe(R14)
  159. JNE ??FaxRxBufRawdata2PCFromSoftUart_6
  160. //   40    {_NOP();break;}             
  161. NOP
  162. JMP ??FaxRxBufRawdata2PCFromSoftUart_5
  163. //   41      }//third for
  164. ??FaxRxBufRawdata2PCFromSoftUart_6:
  165. ADD.W #0x1, R10
  166. JMP ??FaxRxBufRawdata2PCFromSoftUart_0
  167. //   42      if (aucUartRxBuf[wGeneralCnt] == 0xfb && aucUartRxBuf[wGeneralCnt-1] == 0x13 && aucUartRxBuf[wGeneralCnt-2] == 0xff)
  168. ??FaxRxBufRawdata2PCFromSoftUart_5:
  169. CMP.B #0xfb, aucUartRxBuf(R10)
  170. JNE ??FaxRxBufRawdata2PCFromSoftUart_7
  171. MOV.W #aucUartRxBuf, R14
  172. ADD.W R10, R14
  173. CMP.B #0x13, 0xffff(R14)
  174. JNE ??FaxRxBufRawdata2PCFromSoftUart_7
  175. MOV.W #aucUartRxBuf, R14
  176. ADD.W R10, R14
  177. CMP.B #0xff, 0xfffe(R14)
  178. JEQ ??FaxRxBufRawdata2PCFromSoftUart_4
  179. //   43    break;        
  180. //   44         }//second for  next 256Byte
  181. ??FaxRxBufRawdata2PCFromSoftUart_7:
  182. ADD.B #0x1, R8
  183. JMP ??FaxRxBufRawdata2PCFromSoftUart_1
  184. //   45        if (aucUartRxBuf[wGeneralCnt] == 0xfb && aucUartRxBuf[wGeneralCnt-1] == 0x13 && aucUartRxBuf[wGeneralCnt-2] == 0xff)
  185. ??FaxRxBufRawdata2PCFromSoftUart_4:
  186. CMP.B #0xfb, aucUartRxBuf(R10)
  187. JNE ??FaxRxBufRawdata2PCFromSoftUart_8
  188. MOV.W #aucUartRxBuf, R14
  189. ADD.W R10, R14
  190. CMP.B #0x13, 0xffff(R14)
  191. JNE ??FaxRxBufRawdata2PCFromSoftUart_8
  192. MOV.W #aucUartRxBuf, R14
  193. ADD.W R10, R14
  194. CMP.B #0xff, 0xfffe(R14)
  195. JEQ ??FaxRxBufRawdata2PCFromSoftUart_3
  196. //   46    break; 
  197. //   47        }//first for next page
  198. ??FaxRxBufRawdata2PCFromSoftUart_8:
  199. ADD.W #0x1, R11
  200. JMP ??FaxRxBufRawdata2PCFromSoftUart_2
  201. //   48        
  202. //   49        ATcmdDelay();     // receive data delay(if not, can't receive 0x10 0x03)
  203. ??FaxRxBufRawdata2PCFromSoftUart_3:
  204. CALL #ATcmdDelay
  205. //   50 
  206. //   51        SOFTUART_PORT_DIRECTION &= ~bitSOFTUARTTX;
  207. BIC.B #0x1, &0x36
  208. //   52 }   
  209. POP.W R8
  210.         CFI R8 SameValue
  211.         CFI CFA SP+6
  212. POP.W R11
  213.         CFI R11 SameValue
  214.         CFI CFA SP+4
  215. POP.W R10
  216.         CFI R10 SameValue
  217.         CFI CFA SP+2
  218. RET
  219.         CFI EndBlock cfiBlock0
  220.         RSEG CODE:CODE:NOROOT(1)
  221. ?setjmp_save_r4:
  222. REQUIRE ?setjmp_r4
  223. REQUIRE ?longjmp_r4
  224.         RSEG CODE:CODE:NOROOT(1)
  225. ?setjmp_save_r5:
  226. REQUIRE ?setjmp_r5
  227. REQUIRE ?longjmp_r5
  228.         END
  229. //   53 /*
  230. //   54 void  FaxRxBufRawdata2PCFromUart(void) // send the received fax data to PC via MAX232
  231. //   55 {     
  232. //   56       unsigned char ucFlashColumnAddCnt=0,ucGeneralCnt=0;
  233. //   57       //ucGeneralCnt=2;
  234. //   58       ZERO_ADDRESS();
  235. //   59       for (gwPageAddress=cstFaxRxBufStartPage;gwPageAddress<2559;gwPageAddress++)
  236. //   60       {
  237. //   61         
  238. //   62         ROW_ADDRESS_LOW = gwPageAddress & 0xff;
  239. //   63         ROW_ADDRESS_HIGH = (gwPageAddress>>8) & 0xff;
  240. //   64         for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)
  241. //   65         {
  242. //   66          //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
  243. //   67             //total 8*256B+64B=2K+64B
  244. //   68          COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
  245. //   69          READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
  246. //   70          for (ucGeneralCnt=0;ucGeneralCnt<4;ucGeneralCnt++)//16*16Bytes send 16Bytes one time
  247. //   71          {
  248. //   72              Send64BytePageImageData(64,ucGeneralCnt);
  249. //   73              while(gucTxBufCnt!=0)//send over, ucTxBufCnt == 0
  250. //   74              { 
  251. //   75                ;
  252. //   76              }
  253. //   77              //delay10ms();
  254. //   78              if (gwTxNum != 64 && TXBUF0==0xfb)
  255. //   79                  break;
  256. //   80          }//third for
  257. //   81          if (gwTxNum != 64)
  258. //   82              break;
  259. //   83         }//second for
  260. //   84         
  261. //   85         if (gwTxNum != 64)
  262. //   86         break;      
  263. //   87        }//first for next page
  264. //   88        
  265. //   89        ATcmdDelay();     // receive data delay(if not, can't receive 0x10 0x03)
  266. //   90 }   
  267. //   91 */ 
  268. // 
  269. // 210 bytes in segment CODE
  270. //   1 byte  in segment DATA16_AN
  271. // 
  272. // 210 bytes of CODE memory
  273. //   0 bytes of DATA memory (+ 1 byte shared)
  274. //
  275. //Errors: none
  276. //Warnings: none