MPLAB zdrojového kódu pomůže!

C

Cleong

Guest
Níže jsou uvedeny kód Hammingova kódu v MPLAB
Může mi někdo vysvětlit, že krátce mi, co znamená kód
(V theorythically dovedu pochopit, jak to funguje, ale když se ve zdrojovém kódu pak i zcela rozostření ..)

Hammingova kódu generátor
;
; Protože naše komunikace je jedním ze způsobů, budeme používat vpřed korekce chyb
; Odhalit jeden bit chyby.Za tímto účelem, přidáme kód bitů na naše
, Deseti bit výsledky celkem 14 bitů.Tyto kousky kódu budou bit
, Pozice 13, 12, 11 a 10.
, Zákoník bit P1 bude v pozici D13 a bude exkluzivní OR:
, P1 = D9 D8 D6 D5 D3 D1
, Zákoník bit P2 bude v pozici D12 a bude exkluzivní OR:
, P2 = D9 D7 D6 D4 D3 D0
, Zákoník bit P4 bude v pozici D11 a bude exkluzivní OR:
, P4 = D8 D7 D6 D2 D1 D0
, Zákoník bit P8 bude v pozici D10 a bude exkluzivní OR:
; P8 = D5 D4 D3 D2 D1 D0
, Data se balí: P1 P2 P8 D9 P4 D8 D7 D6 D5 D4 D3 D2 D1 D0
;************************************************* ***********************
(Vysílač část)
HammCode
clrf HCREG; Vypočítejte první kód bit
MOVLW 0x20; P1 = D9 D8 D6 D5 D3 D1
btfsc ACCH, 1
incf HCREG, f
btfsc ACCH, 0
incf HCREG, f
btfsc ACCL, 6
incf HCREG, f
btfsc ACCL, 5
incf HCREG, f
btfsc ACCL, 3
incf HCREG, f
btfsc ACCL, 1
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
iorwf ACCH, f, nastavit kód P1 na 1
clrf HCREG; Spočítejte druhý kód bit
MOVLW 0x10; P2 = D9 D7 D6 D4 D3 D0
btfsc ACCH, 1
incf HCREG, f
btfsc ACCL, 7
incf HCREG, f
btfsc ACCL, 6
incf HCREG, f
btfsc ACCL, 4
incf HCREG, f
btfsc ACCL, 3
incf HCREG, f
btfsc ACCL, 0
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
iorwf ACCH, f, nastavit kód P2 na 1
clrf HCREG; Spočítejte třetího kodexu bit
MOVLW 0x08; P4 = D8 D7 D6 D2 D1 D0
btfsc ACCH, 0
incf HCREG, f
btfsc ACCL, 7
incf HCREG, f
btfsc ACCL, 6
incf HCREG, f
btfsc ACCL, 2
incf HCREG, f
btfsc ACCL, 1
incf HCREG, f
btfsc ACCL, 0
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
iorwf ACCH, f, nastavit kód P4 na 1
clrf HCREG; Spočítejte čtvrtým kodexem bit
MOVLW 0x04; P8 = D5 D4 D3 D2 D1 D0
btfsc ACCL, 5
incf HCREG, f
btfsc ACCL, 4
incf HCREG, f
btfsc ACCL, 3
incf HCREG, f
btfsc ACCL, 2
incf HCREG, f
btfsc ACCL, 1
incf HCREG, f
btfsc ACCL, 0
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
iorwf ACCH, f, nastavit kód P8 na 1
návrat

(RECEIVER část)
hamm_decode
clrf HCVECT; jasné vektor registrovat
clrf HCREG; Vypočítejte první kód bit
, P1 = D9 D8 D6 D5 D3 D1 P1
btfsc BUFF_HIGH, 5
incf HCREG, f
btfsc BUFF_HIGH, 1
incf HCREG, f
btfsc BUFF_HIGH, 0
incf HCREG, f
btfsc BUFF_LOW, 6
incf HCREG, f
btfsc BUFF_LOW, 5
incf HCREG, f
btfsc BUFF_LOW, 3
incf HCREG, f
btfsc BUFF_LOW, 1
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
BSF HCVECT, 0; nastavit vektor bit 0 až 1
clrf HCREG; Spočítejte druhý kód bit
, P2 = D9 D7 D6 D4 D3 D0 P2
btfsc BUFF_HIGH, 4
incf HCREG, f
btfsc BUFF_HIGH, 1
incf HCREG, f
btfsc BUFF_LOW, 7
incf HCREG, f
btfsc BUFF_LOW, 6
incf HCREG, f
btfsc BUFF_LOW, 4
incf HCREG, f
btfsc BUFF_LOW, 3
incf HCREG, f
btfsc BUFF_LOW, 0
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
BSF HCVECT, 1; nastavit vektor bit 1 až 1
clrf HCREG; Spočítejte třetího kodexu bit
, P4 = D8 D7 D6 D2 D1 D0 P4
btfsc BUFF_HIGH, 3
incf HCREG, f
btfsc BUFF_HIGH, 0
incf HCREG, f
btfsc BUFF_LOW, 7
incf HCREG, f
btfsc BUFF_LOW, 6
incf HCREG, f
btfsc BUFF_LOW, 2
incf HCREG, f
btfsc BUFF_LOW, 1
incf HCREG, f
btfsc BUFF_LOW, 0
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
BSF HCVECT, 2, nastavit vektor bit 2 na 1
clrf HCREG; Spočítejte čtvrtým kodexem bit
; P8 = D5 D4 D3 D2 D1 D0 P8
btfsc BUFF_HIGH, 2
incf HCREG, f
btfsc BUFF_LOW, 5
incf HCREG, f
btfsc BUFF_LOW, 4
incf HCREG, f
btfsc BUFF_LOW, 3
incf HCREG, f
btfsc BUFF_LOW, 2
incf HCREG, f
btfsc BUFF_LOW, 1
incf HCREG, f
btfsc BUFF_LOW, 0
incf HCREG, f
SRR HCREG, f
btfsc STATUS, C, pokud souhrn výsledků v lichém počtu
BSF HCVECT, 3; nastavit vektor bit 3 k 1
movf HCVECT, f; test vektor
btfsc STATUS, Z;-li nula, pak žádná chyba - jinak, flip bit
návrat
movf HCVECT, w, dostanete Hammingova vektor
volání hcode_shuffle; přemapovat kód
MOVWF HCVECT
clrf MASKH; inicializovat maska registrů
clrf MASKL;
BSF STATUS, C

 
Vzhledem k tomu, kód je bez komentáře, takže je těžké, který vám pomůže.

Máte-li její schéma, post, takže to pomůže číst kód.

nguyennam

 

Welcome to EDABoard.com

Sponsor

Back
Top