CRC25 - kuidas ?
#25
(05-02-2015, 02:32 PM)madis Kirjutas: Lõppsõnaks ütleks:

main(a,b)char**b;{int c=1,d=c,e=a-d;for(;e;e--)_(e)<_( c)?c=e:_(e)>_(d)?d=e:7;
while(++e<a)printf("\xe2\x96%c",129+(**b=8*(_(e)-_( c))/(_(d)-_( c))));}


HELL YEAH !

Maybe...
Ma sain vahepeal asmi rutiini tööle. Tänud ideede eest !

Kood:
;===============================================================================
; CRC 1 baidi arvutamise algo
;#define X25_INIT_CRC 0xffff
;        tmp=data  ^ (*crcAccum &0xff);
;        tmp^= (tmp<<4);
;         tmp &= (0x00ff);
;        *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
;          result=  (*crcAccum);      
; näidis testjada:
; http://www.privatprojekte.de/multicopter/telemetriedecoder.html
;FE  09  4E  01  01  00  00  00  00  00  02  03  51  04  03  1C  7F + 32
; ülalolev testjada laadida aadressile 0x20 ja edaspidi
; 0xFE jätta välja
; CRC=0x7F1C
; enne viimast tehet lasta CRC-st läbi bait 0x32 (magic byte ehk seed)
; funkab küll !!!
#define crcH TBLPTRHt
#define crcL TBLPTRLt
#define tmpH tempor0_h
#define tmpL tempor0_l
#define tmpHa t1_count
#define tmpLa t2_count

test:            movlw    0xFF        ; crc_init(&crcTmp)
                movwf    TBLPTRLt
                movwf    TBLPTRHt
                clrf    tmpH
                clrf    tmpL
                movlw    .15
                movwf    t_count
                LFSR    .0,0x20
tst1:            movf    POSTINC0,W        ; loe databait puhvrist -> W
                xorwf    crcL,W             ; databait XOR CRC LOW -> tmp=data  ^ (*crcAccum &0xff);
                movwf    tmpL
                movff    tmpH,tmpHa        ; säilita algne tmp
                movff    tmpL,tmpLa

                bcf        CARRY            ; (tmp<<4)
                rlcf    tmpL,F
                rlcf    tmpH,F
                bcf        CARRY
                rlcf    tmpL,F
                rlcf    tmpH,F
                bcf        CARRY
                rlcf    tmpL,F
                rlcf    tmpH,F
                bcf        CARRY
                rlcf    tmpL,F
                rlcf    tmpH,F
                movf    tmpHa,W            ; XOR
                xorwf    tmpH,F
                movf    tmpLa,W            
                xorwf    tmpL,F
                clrf    tmpH            ; tmp &= (0x00ff)

;        *crcAccum = (*crcAccum>>8) ^ (tmp<<8) ^ (tmp <<3) ^ (tmp>>4);
                movff    tmpH,tmpHa        ; tee tmp-st koopia
                movff    tmpL,tmpLa
                bcf        CARRY            ; crcAccum>>8
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F
                bcf        CARRY
                rrcf    crcH,F
                rrcf    crcL,F            

                bcf        CARRY            ; tmp= (tmp<<8)
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F

                movf    tmpHa,W            ; XOR
                xorwf    crcH
                movf    tmpLa,W        
                xorwf    crcL

                movff    tmpH,tmpHa        ; loe algne tmp
                movff    tmpL,tmpLa
                bcf        CARRY            ; tmp= (tmp<<3)
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F
                bcf        CARRY
                rlcf    tmpLa,F
                rlcf    tmpHa,F

                movf    tmpHa,W            ; XOR
                xorwf    crcH
                movf    tmpLa,W        
                xorwf    crcL

                movff    tmpH,tmpHa        ; loe algne tmp
                movff    tmpL,tmpLa
                bcf        CARRY            ; tmp= (tmp>>4)
                rrcf    tmpHa,F
                rrcf    tmpLa,F
                bcf        CARRY        
                rrcf    tmpHa,F
                rrcf    tmpLa,F
                bcf        CARRY        
                rrcf    tmpHa,F
                rrcf    tmpLa,F
                bcf        CARRY        
                rrcf    tmpHa,F
                rrcf    tmpLa,F

                movf    tmpHa,W            ; XOR
                xorwf    crcH
                movf    tmpLa,W        
                xorwf    crcL

                decfsz    t_count
                goto    tst1            ; loop until "iso siiperi"
                return
Vasta


Sõnumeid selles teemas
CRC25 - kuidas ? - Autor: felch - 26-01-2015, 10:52 PM
RE: CRC25 - kuidas ? - Autor: A.R. - 27-01-2015, 10:54 AM
RE: CRC25 - kuidas ? - Autor: felch - 27-01-2015, 05:04 PM
RE: CRC25 - kuidas ? - Autor: A.R. - 27-01-2015, 06:47 PM
RE: CRC25 - kuidas ? - Autor: A.R. - 28-01-2015, 05:09 PM
RE: CRC25 - kuidas ? - Autor: felch - 28-01-2015, 08:51 PM
RE: CRC25 - kuidas ? - Autor: felch - 28-01-2015, 11:09 PM
RE: CRC25 - kuidas ? - Autor: A.R. - 29-01-2015, 08:03 AM
RE: CRC25 - kuidas ? - Autor: felch - 29-01-2015, 08:42 AM
RE: CRC25 - kuidas ? - Autor: A.R. - 29-01-2015, 09:49 AM
RE: CRC25 - kuidas ? - Autor: felch - 29-01-2015, 11:38 AM
RE: CRC25 - kuidas ? - Autor: A.R. - 29-01-2015, 11:57 AM
RE: CRC25 - kuidas ? - Autor: A.R. - 29-01-2015, 07:00 PM
RE: CRC25 - kuidas ? - Autor: felch - 30-01-2015, 09:40 PM
RE: CRC25 - kuidas ? - Autor: madis - 30-01-2015, 11:46 PM
RE: CRC25 - kuidas ? - Autor: admin - 04-02-2015, 02:48 PM
RE: CRC25 - kuidas ? - Autor: A.R. - 04-02-2015, 05:28 PM
RE: CRC25 - kuidas ? - Autor: admin - 04-02-2015, 06:50 PM
RE: CRC25 - kuidas ? - Autor: A.R. - 04-02-2015, 08:50 PM
RE: CRC25 - kuidas ? - Autor: admin - 04-02-2015, 09:08 PM
RE: CRC25 - kuidas ? - Autor: felch - 04-02-2015, 11:36 PM
RE: CRC25 - kuidas ? - Autor: madis - 05-02-2015, 12:56 AM
RE: CRC25 - kuidas ? - Autor: A.R. - 05-02-2015, 08:35 AM
RE: CRC25 - kuidas ? - Autor: madis - 05-02-2015, 02:32 PM
RE: CRC25 - kuidas ? - Autor: felch - 05-02-2015, 05:17 PM

Alamfoorumi hüpe:


Kasutaja, kes vaatavad seda teemat: 3 külali(st)ne