Subversion Repositories pentevo

Rev

Rev 291 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. ;
  2. ;--------------------------------------
  3. ;in;    TEMP - n
  4. SD_RD_DUMMY:
  5.         SER     DATA
  6.         RCALL   SD_EXCHANGE
  7.         DEC     TEMP
  8.         BRNE    SD_RD_DUMMY
  9.         RET
  10. ;
  11. ;--------------------------------------
  12. ;in:    DATA
  13. SD_WR_CMD:
  14.         PUSH    DATA
  15.         LDI     TEMP,2
  16.         RCALL   SD_RD_DUMMY
  17.         POP     DATA
  18.         RCALL   SD_EXCHANGE
  19.         CLR     DATA
  20.         RCALL   SD_EXCHANGE
  21. SD_WR_CMX4:
  22.         CLR     DATA
  23.         RCALL   SD_EXCHANGE
  24.         CLR     DATA
  25.         RCALL   SD_EXCHANGE
  26.         CLR     DATA
  27.         RCALL   SD_EXCHANGE
  28.         SER     DATA
  29.         RCALL   SD_EXCHANGE
  30.         RJMP    SD_WAIT_NOTFF
  31. ;
  32. ;--------------------------------------
  33. ;in:    Z
  34. SD_WR_PGM_6:
  35.         LDI     TEMP,2
  36.         RCALL   SD_RD_DUMMY
  37.         LDI     TEMP,6
  38. SD_WR_PGX:
  39. SDWRP61:LPM     DATA,Z+
  40.         RCALL   SD_EXCHANGE
  41.         DEC     TEMP
  42.         BRNE    SDWRP61
  43. ; - - - - - - - - - - - - - - - - - - -
  44. ;out:   DATA
  45. SD_WAIT_NOTFF:
  46.         LDI     TEMP,255
  47. SDWNFF2:SER     DATA
  48.         RCALL   SD_EXCHANGE
  49.         CPI     DATA,$FF
  50.         BRNE    SDWNFF1
  51.         DEC     TEMP
  52.         BRNE    SDWNFF2
  53. SDWNFF1:RET
  54. ;
  55. ;--------------------------------------
  56. ;in:    Z - куда
  57. ;       X,W - №сектора
  58. ;out:   sreg.Z - SET==error
  59. SD_READ_SECTOR:
  60.         LDS     DATA,SD_CARDTYPE
  61.         SBRC    DATA,2
  62.         RJMP    SDRDSE1
  63.         LSL     WL
  64.         ROL     WH
  65.         ROL     XL
  66.         MOV     XH,XL
  67.         MOV     XL,WH
  68.         MOV     WH,WL
  69.         CLR     WL
  70. SDRDSE1:
  71.         SER     DATA
  72.         RCALL   SD_EXCHANGE
  73.         LDI     DATA,$40|17 ;CMD17 (read_single_block)
  74.         RCALL   SD_EXCHANGE
  75.         MOV     DATA,XH
  76.         RCALL   SD_EXCHANGE
  77.         MOV     DATA,XL
  78.         RCALL   SD_EXCHANGE
  79.         MOV     DATA,WH
  80.         RCALL   SD_EXCHANGE
  81.         MOV     DATA,WL
  82.         RCALL   SD_EXCHANGE
  83.         SER     DATA
  84.         RCALL   SD_EXCHANGE
  85.  
  86.         SER     WL
  87. SDRDSE2:RCALL   SD_WAIT_NOTFF
  88.         DEC     WL
  89.         BREQ    SDRDSE8
  90.         CPI     DATA,$FE
  91.         BRNE    SDRDSE2
  92.  
  93.         PUSH    FLAGS1
  94.         SBRS    FLAGS1,3
  95.         RJMP    SDRDSE5
  96.         CBR     FLAGS1,0B00001101
  97.         SBR     FLAGS1,0B00000010
  98.         PUSHZ
  99.         LDIZ    MSG_TSD_SKIP*2
  100.         CALL    PRINTSTRZ
  101.         POPZ
  102. SDRDSE5:LDIW    512
  103. SDRDSE3:RCALL   SD_RECEIVE
  104.         ST      Z+,DATA
  105.         SBIW    WL,1
  106.         BRNE    SDRDSE3
  107.         POP     FLAGS1
  108.  
  109.         LDI     TEMP,2+1
  110.         RCALL   SD_RD_DUMMY
  111.         CLZ
  112.         RET
  113. ;ошибка при чтении сектора
  114. SDRDSE8:RET
  115. ;
  116. ;--------------------------------------
  117. ;out:   DATA
  118. SD_RECEIVE:
  119.         SER     DATA
  120. ; - - - - - - - - - - - - - - - - - - -
  121. ;in:    DATA
  122. ;out:   DATA
  123. SD_EXCHANGE:
  124.         SBRS    FLAGS1,3
  125.         RJMP    FPGA_SAME_REG
  126. ;То же, что и FPGA_SAME_REG, но с логом в RS-232
  127. ;in:    DATA == данные
  128. ;out:   DATA == данные
  129.         PUSH    FLAGS1
  130.         CBR     FLAGS1,0B00000101
  131.         SBR     FLAGS1,0B00000010
  132.         PUSHZ
  133.         PUSH    DATA
  134.         LDIZ    MSG_TSD_OUT*2
  135.         RCALL   PRINTSTRZ
  136.         POP     DATA
  137.         PUSH    DATA
  138.         RCALL   HEXBYTE
  139.         POP     DATA
  140.         SPICS_CLR
  141.         OUT     SPDR,DATA
  142. ;ожидание окончания обмена с FPGA по SPI
  143. ;и чтение пришедших данных
  144. ;out:   DATA == данные
  145. SD_RDY_RD:
  146. ;        SBIC    SPSR,WCOL
  147. ;        JMP     CHAOS00
  148.         SBIS    SPSR,SPIF
  149.         RJMP    SD_RDY_RD
  150.         IN      DATA,SPDR
  151.         SPICS_SET
  152.         PUSH    DATA
  153.         LDIZ    MSG_TSD_IN*2
  154.         RCALL   PRINTSTRZ
  155.         POP     DATA
  156.         PUSH    DATA
  157.         RCALL   HEXBYTE
  158.         POP     DATA
  159.         POPZ
  160.         POP     FLAGS1
  161.         RET
  162. ;
  163. ;--------------------------------------
  164. ;
  165.