Offline |
 |
Joined: Thu May 30, 2013 5:56 pm Posts: 31
|
PPro - это минидельфи в RTOS (KOS). Следующим шагом подключим устройство i7017 и построим график (напряжения на [Vin0+ __ Vin0-] его входе). Code: program hello96; uses kolibri; var k:TKolibri; const header:string='HelloWorld test'#0;
procedure zapis_v_port(pdw:dword; b:byte); begin asm mov eax,43 mov bl,b mov ecx,pdw int $40 end; end;
procedure draw_window; begin k.BeginDraw; k.DefineWindow(10,40,350,350,$33FFFFFF,0,integer(@header[1])); k.DefineButton(5,5,65,25,7,7); k.EndDraw; end;
procedure zachvat_portov; begin asm mov eax,46 mov ebx,0 mov ecx,1016 mov edx,1023 int $40 end; end;
procedure otdatj_porti; begin asm mov eax,46 mov ebx,1 mov ecx,1016 mov edx,1023 int $40 end; end;
procedure open_com; begin zapis_v_port(1019,$80); zapis_v_port( 1016,(1 and $FF) ); zapis_v_port( 1017,((1 and $FF00) shr 8) ); zapis_v_port(1019,3); zapis_v_port(1017,0); zapis_v_port(1018,7); zapis_v_port(1018,1); end;
function In1016:byte; var by:byte; begin asm mov dx,1016 in al,dx mov [by],al end; In1016:=by; end;
function In1021:byte; var by:byte; begin asm mov dx,1021 in al,dx mov [by],al end; In1021:=by; end;
procedure sc(s:string); var i,t:dword; begin i:=1; t:=0; if ( (length(s)<1) or (length(s)>30) ) then exit; while (i<>length(s)+1) do begin while (In1021 and $20)=0 do begin {t:=t+1; if (t>200000000) then exit;} end; zapis_v_port(1016,ord(s[i])); i:=i+1; t:=0; end; while (In1021 and $20)=0 do begin {t:=t+1; if (t>200000000) then exit;} end; zapis_v_port(1016,13); end;
procedure rc(var s:string); var c: char; i,t:dword; begin s:=''; i:=1; t:=0; repeat while (In1021 and 1)<>1 do begin {t:=t+1; if (t>200000000) then exit;} end; c:=chr(In1016); if c=chr(13) then break; s[0]:=chr(i); s[i]:=c; i:=i+1; if (i>30) then break; t:=0; until false; end;
var s1,s2:string; key,j:dword; BEGIN draw_window; j:=1; zachvat_portov; open_com; s1:='$02M'; while true do case k.waitforevent of 1:draw_window; 2:k.getkey(key); 3:begin if j=1 then begin j:=2; sc(s1); rc(s2); k.writeText(5,125,0,0,s2); end; end; end; otdatj_porti; END.
При запуске этой программы и нажатии на кнопку в окне должна появиться строка (чуть ниже в окне) - !027017 - а это значит: устройство многоканального АЦП подключено к ПЛ (115200) и имеет адрес 02.
Last edited by VitZ on Mon Aug 26, 2013 8:06 pm, edited 3 times in total.
|
|