Avatar billede nasty18 Nybegynder
06. maj 2003 - 21:13 Der er 3 kommentarer og
1 løsning

Pascal kode

Hey derude...jeg er i øjeblikket i gang med et projekt i skolen noget elektrinisk, i denne forbindelse har jeg et afsender program som giver med elektroniske del noget at arbejde med. Men eftersom jeg ikke selv programmere men bare låner koden og ikke helt forstår den så ville jeg lige se om der var nogen som kunne skrive kommentar til hvad de forskellige dele af koden gør. Hvis muligt også lige fortælle lidt om NS-diagram, måske lavet et eksempel med koden...

Hvad jeg ved om koden er at den generere et tal til 8 forskellige ID'er som hver tilhøre en kanal hvorefter denne laver det hele om til 2-3 byte og sender det gennem seriel porten...

Håber nogen kan hjælpe....på forhånd tak
Avatar billede nasty18 Nybegynder
06. maj 2003 - 21:21 #1
dohhhh fik i koden med =)
Avatar billede nasty18 Nybegynder
06. maj 2003 - 21:22 #2
uses crt, com1drva;

var
  ch : char;
  gemt : array[0..7] of integer;
  n : Byte;

Procedure send(ID:Byte; vaerdi:integer);
var
  tal, temp, n : Byte;
begin
  tal := (ID AND 7) shl 4;
  tal := tal OR 128;
  for n := 1 to 3 do begin
    temp := (vaerdi shr 8) AND 15;
    tal := temp or tal;
    writech(chr(tal));
    tal := 0;
    vaerdi := vaerdi shl 4;
  end;
end;
begin
clrscr;
for n := 0 to 7 do gemt[n] := 2048;
randomize;
writeln('Random testprogram til simulering af vejrstation......nix pille');
writeln;
  repeat
    for n := 0 to 7 do begin
      gemt[n] := gemt[n] + random(6) - 2;
      if gemt[n] < 0 then gemt[n] := 2048;
      if gemt[n] > 4095 then gemt[n] := 2048;
      send(n, gemt[n]);
      write(n:3, gemt[n]:5);
    end;
    writeln;
    delay(5000);
  until keypressed;
end.
Avatar billede jespernaur Nybegynder
07. maj 2003 - 21:54 #3
OK, dette her er en øvelse i bitmanipulation.

Der er proceduren 'send'. Den bliver kaldt med parametrene ID (en 8-bit byte) og vaerdi (en mindst 16-bit integer). Den vil afsende 3 8-bit-bytes ved hjælp af operationen 'writech', jeg må antage at 'writech' sender disse data ud af seriel-porten.

Herunder angiver jeg for hver af de 3 bytes hvor hver eneste bit kommer fra. Notationen 'vaerdi.bit5' betyder 'bit5 fra vaerdi' hvor bittene nummereres med bit0 = mindst betydende bit.

Byte 1: 1|ID.bit2|ID.bit1|ID.bit0|vaerdi.bit11|vaerdi.bit10|vaerdi.bit9|vaerdi.bit8
Byte 2: 0|0|0|0|vaerdi.bit7|vaerdi.bit6|vaerdi.bit5|vaerdi.bit4
Byte 3: 0|0|0|0|vaerdi.bit3|vaerdi.bit2|vaerdi.bit1|vaerdi.bit0

I hovedprogrammet arbejdes med 8 parallelle ID'er, fra 0 til 7. Der startes med værdien 2048 for dem allesammen. For hver af de 8 ID'er adderes et tilfældigt tal, hvis resultatet blev negativt eller større end 4095 sættes værdien til 2048. Herefter kaldes 'send' med den aktuelle ID og værdi. Alt dette gentages sandsynligvis hvert 5'te sekund (delay(5000) venter nok 5 sekunder), indtil der trykkes en tilfældig tast på tastaturet (repeat ... until keypressed).
Avatar billede nasty18 Nybegynder
07. maj 2003 - 22:01 #4
Tusind tak for hjælpen.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester