home *** CD-ROM | disk | FTP | other *** search
- {*********************************************************
- File : DEMO1.PAS
- Vers. : 1.0
- Last Edit : 16.11.88
- Autor : G. Born
- Files : ---
- Progr. Spr.: Turbo Pascal 4.0 / 5.0
- Betr. Sys. : DOS 2.1 - 3.3
- Funktion: Das Programm dient zur Demonstration der CRC -
- Berechnung per Software. Die zu übertragenden
- Zeichen stehen als Bytes im Feld buff[]. Aus
- diesen Zeichen wird dann die CRC16 - Summe über
- die Pascal Procedur CRC nach dem Polynomdivisions-
- verfahren berechnet.
- **********************************************************}
-
- TYPE Buffer = Array [1 .. 255] OF Byte;
-
- VAR crc_res : Word; { CRC Register }
- buff : Buffer; { Datenpuffer }
-
- {************* Hilfroutinen **************}
-
- {$I CRC.PAS} { CRC Berechnungsroutine in Pascal }
-
- procedure Write_hex (value, len : integer);
- {
- Ausgabe eines Wertes als Zahl auf dem Bildschirm.
- Durch Len wird festgelegt, ob ein Byte (Len = 1)
- oder Wort (Len = 2) ausgegeben werden soll.
- }
- const Hexzif : array [0..15] of char = '0123456789ABCDEF';
- Byte_len = 1;
- Word_len = 2;
-
- TYPE zahl = 1..2;
- VAR temp : integer;
- carry : zahl;
- i : zahl;
- begin
- if len = Word_len then
- begin
- temp := swap (value) and $0FF; { high byte holen }
- write (Hexzif[temp div 16]:1,Hexzif[temp mod 16]:1);
- end;
- temp := value and $0FF; { low byte holen }
- write (Hexzif[temp div 16]:1,Hexzif[temp mod 16]:1);
- end; { Write_hex }
-
-
- {****** Hauptprogramm mit Testrumpf *******}
-
- begin
-
- crc_res := 0; { clear CRC - Register }
- buff[1] := $55; { Testcode setzen }
- buff[2] := $88;
- buff[3] := $CC;
-
- writeln ('CRC - Demo Programm 1 (c) Born G.');
- writeln;
-
- writeln ('CRC - Berechnung über Polynomdivision');
- writeln;
-
- CRC (crc_res, buff, 3); { Aufruf CRC Routine 1 }
-
- write ('Die CRC - Summe ist : ');
- write_hex (crc_res,2); { Hexzahl ausgeben }
- writeln;
- writeln;
-
- end. { Ende }
-