Subversion Repositories pentevo

Rev

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

  1. ;
  2. ;--------------------------------------
  3. ;деление целочисл. без знака  32 бит на 16 бит
  4. ;in:    ZX - делимое
  5. ;       W  - делитель
  6. ;out:   ZX - результат
  7. ;       TEMPDATA - остаток
  8. ;chng:  COUNT
  9. DIV3216U:
  10.         LDI     COUNT,33
  11.         CLR     DATA
  12.         SUB     TEMP,TEMP
  13. D3216U_1:
  14.         ROL     XL
  15.         ROL     XH
  16.         ROL     ZL
  17.         ROL     ZH
  18.         DEC     COUNT
  19.         BREQ    D3216U_3
  20.         ROL     DATA
  21.         ROL     TEMP
  22.         SUB     DATA,WL
  23.         SBC     TEMP,WH
  24.         BRCC    D3216U_2
  25.         ADD     DATA,WL
  26.         ADC     TEMP,WH
  27.         CLC
  28.         RJMP    D3216U_1
  29. D3216U_2:
  30.         SEC
  31.         RJMP    D3216U_1
  32. D3216U_3:
  33.         RET
  34. ;
  35. ;--------------------------------------
  36. ;out:   DATA == п.случайное число
  37. RANDOM: PUSHW
  38.         PUSH    TEMP
  39.         LDS     WL,RND+2
  40.         LDS     WH,RND+3
  41.         STS     RND+3,WL
  42.         ROL     WL
  43.         ROL     WH
  44.         MOV     DATA,WH
  45.         ROL     WL
  46.         ROL     WH
  47.         ROL     WL
  48.         ROL     WH
  49.         ROL     WL
  50.         ROL     WH
  51.         EOR     DATA,WH
  52.         LDS     WL,RND+1
  53.         STS     RND+2,WL
  54.         LDS     WL,RND+0
  55.         STS     RND+1,WL
  56.         STS     RND+0,DATA
  57.         POP     TEMP
  58.         POPW
  59.         RET
  60. ;
  61. ;--------------------------------------
  62. ;
  63. CLRPINS:LDIZ    $0020
  64. CLRPIN1:ST      Z+,NULL
  65.         CPI     ZL,$3C
  66.         BRNE    CLRPIN1
  67.         LDI     ZL,$61
  68. CLRPIN2:ST      Z+,NULL
  69.         CPI     ZL,$66
  70.         BRNE    CLRPIN2
  71.         RET
  72. ;
  73. ;--------------------------------------
  74. ;in:    W == address
  75. ;out:   DATA == data
  76. EEPROM_READ:
  77.         SBIC    EECR,EEWE
  78.         RJMP    EEPROM_READ
  79.         OUT     EEARH,WH
  80.         OUT     EEARL,WL
  81.         SBI     EECR,EERE
  82.         IN      DATA,EEDR
  83.         RET
  84. ;
  85. ;--------------------------------------
  86. ;in:    W == address
  87. ;       DATA == data
  88. EEPROM_WRITE:
  89.         MOV     TEMP,DATA
  90.         RCALL   EEPROM_READ
  91.         CP      TEMP,DATA
  92.         BREQ    WREE9
  93.         OUT     EEARH,WH
  94.         OUT     EEARL,WL
  95.         OUT     EEDR,TEMP
  96.         SBI     EECR,EEMWE
  97.         SBI     EECR,EEWE
  98. WREE9:  RET
  99. ;
  100. ;--------------------------------------
  101. ;
  102. CRC32_INIT:
  103.         STD     Y+0,FF
  104.         STD     Y+1,FF
  105.         STD     Y+2,FF
  106.         STD     Y+3,FF
  107.         RET
  108. ;
  109. CRC32_UPDATE:
  110.         PUSHZ
  111.         LDD     TEMP,Y+0
  112.         EOR     DATA,TEMP
  113.         CLR     TEMP
  114.         LSL     DATA
  115.         ROL     TEMP
  116.         LSL     DATA
  117.         ROL     TEMP
  118.         LDIZ    TAB32*2 ;в младших 64K
  119.         ADD     ZL,DATA
  120.         ADC     ZH,TEMP
  121.         LPM     DATA,Z+
  122.         LDD     TEMP,Y+1
  123.         EOR     DATA,TEMP
  124.         STD     Y+0,DATA
  125.         LPM     DATA,Z+
  126.         LDD     TEMP,Y+2
  127.         EOR     DATA,TEMP
  128.         STD     Y+1,DATA
  129.         LPM     DATA,Z+
  130.         LDD     TEMP,Y+3
  131.         EOR     DATA,TEMP
  132.         STD     Y+2,DATA
  133.         LPM     DATA,Z
  134.         STD     Y+3,DATA
  135.         POPZ
  136.         RET
  137. ;
  138. RAM_CRC32:
  139.         RCALL   CRC32_INIT
  140.         RCALL   RAM_CRC32_UPDATE
  141. ;
  142. CRC32_RELEASE:
  143.         LDD     R0,Y+0
  144.         COM     R0
  145.         STD     Y+0,R0
  146.         LDD     R1,Y+1
  147.         COM     R1
  148.         STD     Y+1,R1
  149.         LDD     R2,Y+2
  150.         COM     R2
  151.         STD     Y+2,R2
  152.         LDD     R3,Y+3
  153.         COM     R3
  154.         STD     Y+3,R3
  155.         RET
  156. ;
  157. RAM_CRC32_UPDATE:
  158.         LD      DATA,Z+
  159.         RCALL   CRC32_UPDATE
  160.         SBIW    XL,1
  161.         BRNE    RAM_CRC32_UPDATE
  162.         RET
  163. ;
  164. TAB32:  .DW     $0000,$0000,$3096,$7707,$612C,$EE0E,$51BA,$9909
  165.         .DW     $C419,$076D,$F48F,$706A,$A535,$E963,$95A3,$9E64
  166.         .DW     $8832,$0EDB,$B8A4,$79DC,$E91E,$E0D5,$D988,$97D2
  167.         .DW     $4C2B,$09B6,$7CBD,$7EB1,$2D07,$E7B8,$1D91,$90BF
  168.         .DW     $1064,$1DB7,$20F2,$6AB0,$7148,$F3B9,$41DE,$84BE
  169.         .DW     $D47D,$1ADA,$E4EB,$6DDD,$B551,$F4D4,$85C7,$83D3
  170.         .DW     $9856,$136C,$A8C0,$646B,$F97A,$FD62,$C9EC,$8A65
  171.         .DW     $5C4F,$1401,$6CD9,$6306,$3D63,$FA0F,$0DF5,$8D08
  172.         .DW     $20C8,$3B6E,$105E,$4C69,$41E4,$D560,$7172,$A267
  173.         .DW     $E4D1,$3C03,$D447,$4B04,$85FD,$D20D,$B56B,$A50A
  174.         .DW     $A8FA,$35B5,$986C,$42B2,$C9D6,$DBBB,$F940,$ACBC
  175.         .DW     $6CE3,$32D8,$5C75,$45DF,$0DCF,$DCD6,$3D59,$ABD1
  176.         .DW     $30AC,$26D9,$003A,$51DE,$5180,$C8D7,$6116,$BFD0
  177.         .DW     $F4B5,$21B4,$C423,$56B3,$9599,$CFBA,$A50F,$B8BD
  178.         .DW     $B89E,$2802,$8808,$5F05,$D9B2,$C60C,$E924,$B10B
  179.         .DW     $7C87,$2F6F,$4C11,$5868,$1DAB,$C161,$2D3D,$B666
  180.         .DW     $4190,$76DC,$7106,$01DB,$20BC,$98D2,$102A,$EFD5
  181.         .DW     $8589,$71B1,$B51F,$06B6,$E4A5,$9FBF,$D433,$E8B8
  182.         .DW     $C9A2,$7807,$F934,$0F00,$A88E,$9609,$9818,$E10E
  183.         .DW     $0DBB,$7F6A,$3D2D,$086D,$6C97,$9164,$5C01,$E663
  184.         .DW     $51F4,$6B6B,$6162,$1C6C,$30D8,$8565,$004E,$F262
  185.         .DW     $95ED,$6C06,$A57B,$1B01,$F4C1,$8208,$C457,$F50F
  186.         .DW     $D9C6,$65B0,$E950,$12B7,$B8EA,$8BBE,$887C,$FCB9
  187.         .DW     $1DDF,$62DD,$2D49,$15DA,$7CF3,$8CD3,$4C65,$FBD4
  188.         .DW     $6158,$4DB2,$51CE,$3AB5,$0074,$A3BC,$30E2,$D4BB
  189.         .DW     $A541,$4ADF,$95D7,$3DD8,$C46D,$A4D1,$F4FB,$D3D6
  190.         .DW     $E96A,$4369,$D9FC,$346E,$8846,$AD67,$B8D0,$DA60
  191.         .DW     $2D73,$4404,$1DE5,$3303,$4C5F,$AA0A,$7CC9,$DD0D
  192.         .DW     $713C,$5005,$41AA,$2702,$1010,$BE0B,$2086,$C90C
  193.         .DW     $B525,$5768,$85B3,$206F,$D409,$B966,$E49F,$CE61
  194.         .DW     $F90E,$5EDE,$C998,$29D9,$9822,$B0D0,$A8B4,$C7D7
  195.         .DW     $3D17,$59B3,$0D81,$2EB4,$5C3B,$B7BD,$6CAD,$C0BA
  196.         .DW     $8320,$EDB8,$B3B6,$9ABF,$E20C,$03B6,$D29A,$74B1
  197.         .DW     $4739,$EAD5,$77AF,$9DD2,$2615,$04DB,$1683,$73DC
  198.         .DW     $0B12,$E363,$3B84,$9464,$6A3E,$0D6D,$5AA8,$7A6A
  199.         .DW     $CF0B,$E40E,$FF9D,$9309,$AE27,$0A00,$9EB1,$7D07
  200.         .DW     $9344,$F00F,$A3D2,$8708,$F268,$1E01,$C2FE,$6906
  201.         .DW     $575D,$F762,$67CB,$8065,$3671,$196C,$06E7,$6E6B
  202.         .DW     $1B76,$FED4,$2BE0,$89D3,$7A5A,$10DA,$4ACC,$67DD
  203.         .DW     $DF6F,$F9B9,$EFF9,$8EBE,$BE43,$17B7,$8ED5,$60B0
  204.         .DW     $A3E8,$D6D6,$937E,$A1D1,$C2C4,$38D8,$F252,$4FDF
  205.         .DW     $67F1,$D1BB,$5767,$A6BC,$06DD,$3FB5,$364B,$48B2
  206.         .DW     $2BDA,$D80D,$1B4C,$AF0A,$4AF6,$3603,$7A60,$4104
  207.         .DW     $EFC3,$DF60,$DF55,$A867,$8EEF,$316E,$BE79,$4669
  208.         .DW     $B38C,$CB61,$831A,$BC66,$D2A0,$256F,$E236,$5268
  209.         .DW     $7795,$CC0C,$4703,$BB0B,$16B9,$2202,$262F,$5505
  210.         .DW     $3BBE,$C5BA,$0B28,$B2BD,$5A92,$2BB4,$6A04,$5CB3
  211.         .DW     $FFA7,$C2D7,$CF31,$B5D0,$9E8B,$2CD9,$AE1D,$5BDE
  212.         .DW     $C2B0,$9B64,$F226,$EC63,$A39C,$756A,$930A,$026D
  213.         .DW     $06A9,$9C09,$363F,$EB0E,$6785,$7207,$5713,$0500
  214.         .DW     $4A82,$95BF,$7A14,$E2B8,$2BAE,$7BB1,$1B38,$0CB6
  215.         .DW     $8E9B,$92D2,$BE0D,$E5D5,$EFB7,$7CDC,$DF21,$0BDB
  216.         .DW     $D2D4,$86D3,$E242,$F1D4,$B3F8,$68DD,$836E,$1FDA
  217.         .DW     $16CD,$81BE,$265B,$F6B9,$77E1,$6FB0,$4777,$18B7
  218.         .DW     $5AE6,$8808,$6A70,$FF0F,$3BCA,$6606,$0B5C,$1101
  219.         .DW     $9EFF,$8F65,$AE69,$F862,$FFD3,$616B,$CF45,$166C
  220.         .DW     $E278,$A00A,$D2EE,$D70D,$8354,$4E04,$B3C2,$3903
  221.         .DW     $2661,$A767,$16F7,$D060,$474D,$4969,$77DB,$3E6E
  222.         .DW     $6A4A,$AED1,$5ADC,$D9D6,$0B66,$40DF,$3BF0,$37D8
  223.         .DW     $AE53,$A9BC,$9EC5,$DEBB,$CF7F,$47B2,$FFE9,$30B5
  224.         .DW     $F21C,$BDBD,$C28A,$CABA,$9330,$53B3,$A3A6,$24B4
  225.         .DW     $3605,$BAD0,$0693,$CDD7,$5729,$54DE,$67BF,$23D9
  226.         .DW     $7A2E,$B366,$4AB8,$C461,$1B02,$5D68,$2B94,$2A6F
  227.         .DW     $BE37,$B40B,$8EA1,$C30C,$DF1B,$5A05,$EF8D,$2D02
  228. ;
  229. ;--------------------------------------
  230. ;
  231.