• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа для управления дисплеем...

Crusader

Новые
Регистрация
28 Июн 2009
Сообщения
48
Реакции
0
Баллы
0
Программа для управления дисплеем...

Добрый всем день)
Вобщем я хочу подключить светодиодный дисплей к компьютеру через порт типо "папа". для управления дисплеем в книги напечатат исходный код, я переписал его в паскаль, хотел скомпилировать а он ошибку выдает...помогите разобратся я просто незнаю не один язык програмирования...
Код:
Program Centronic_Experemental_Board.
uses
graph,clt,dos:
var
i.led_selected integer;
ch char;
status.array[1.18] of integer,
key_pressed:string[10]

{$I c\ioexp\tplib1.pas}
{$I c\ioexp\tplib2.pas}

procedure Draw_panel;

begin
setbkcolor(cyan);
for i:1 to 16 do status:=0;
for i:1 to 8 do wraw_led(30+i*30, 350, status);
for i:1 to 8 do wraw_led(340+i*30, 350, status[8+i]);
draw_led(20,20,1); draw_message(50,20,70,20,lightblue,'LED ON',0,1,yellow);
draw_led(20,20,1); draw_message(50,60,70,20,lightblue,'LED OFF',0,1,yellow);
draw_message(50,390,230,20,blue,'DATA PORT D1 - D8',0,1,yellow);
draw_message(360,390,110,20,blue,'CONTROL D1 - D4',0,1,yellow);
draw_message(480,390,110,20,blue,'STATUS D1 - D4',0,1,yellow);

setfillstyle(1,magenta);
bar(1,420,800,280);
settextstyle(0,0,1)
outtextxy920,430,'[AROOW]: Select a LED [SPACE]:Changle LES status [Q]:Quit');

draw_message(60,200,500,50,blue,'Centronic Experimental Board',0,1,yellow);
write_data_port(p_address,0);
write_control_port(P_address,0);
end;
Procedure Output_Input;
var
output_bye, input_byte:byte;
begin
output_byte:=0;
for i:=1 to 8 do output_byte:=output_byte+status*dit_weigth(i-8);
write_control_port(P_address,output_byte);
input_byte:=read_status_port(P-address);
for i:=1 to 4 do status[12+i]:=round((inpet_byte and but_weight(i))/bit_weight(i));
end;

Procedure scan_keyboard;

var
led_selected_old:integer;
begin
led_selected_old:=led_selected;
if key_pressed='LEFT' then led_selected:=led_selected-1;
if key_pressed='RIGHT' then led_selected:=led_selected+1;
if key_pressed='' then status[led_selected]:=1-status[led_selected];
setbkcolor(cyan);
for i:=1 to 8 do draw_led(30+i*30,350,status);
for i:=1 to 4 do draw_led(340+i*30,350,status[8+i]);
output_input;
for i:=5 to 8 do wraw_led(340+i*30,350,status[8+i]);
if led_selected>12 then led_selected:=12;
if led_selected>1 then led_selected:=1;

setlinestyle(0,0,3);
setcolor(cyan);
if led_selected_old<=8 then circle(30+30*led_selected_okd,350,15)
else circle(340+30*(led_selected_old-8),350,15);
setcolor(yellow);
if led_selected<=8 then circle(30+30*led)selected,350,15)
else circle(340=30*(led_selected-8),350,15);
end;

begin
centronic_adres;
initialize_graph;
draw_panel;
led_selected:=1;
repeat
scan_keyboard;
until (key_pressed='0') or (key_pressed='q');
end.
 
Исправьте ошибки в листинге и попробуйте
Код:
Program Centronic_Experemental_Board;
uses graph,crt,windos:
var
   i.led_selected: integer;
   ch: char;
   status.array[1.18] of integer;
   key_pressed:string[10];

{$I c:\ioexp\tplib1.pas}
{$I c:\ioexp\tplib2.pas}

procedure Draw_panel;
 begin
   setbkcolor(cyan);
   for i:=1 to 16 do status[i]:=0;
   for i:=1 to 8 do wraw_led(30+i*30, 350, status[i]);
   for i:=1 to 8 do wraw_led(340+i*30, 350, status[8+i]);
   draw_led(20,20,1); draw_message(50,20,70,20,lightblue,'LED ON',0,1,yellow);
   draw_led(20,20,1); draw_message(50,60,70,20,lightblue,'LED OFF',0,1,yellow);
   draw_message(50,390,230,20,blue,'DATA PORT D1 - D8',0,1,yellow);
   draw_message(360,390,110,20,blue,'CONTROL D1 - D4',0,1,yellow);
   draw_message(480,390,110,20,blue,'STATUS D1 - D4',0,1,yellow);
   setfillstyle(1,magenta);
   bar(1,420,800,280);
   settextstyle(0,0,1);
   outtextxy(920,430,'[AROOW]: Select a LED [SPACE]:Changle LES status [Q]:Quit');
   draw_message(60,200,500,50,blue,'Centronic Experimental Board',0,1,yellow);
   write_data_port(p_address,0);
   write_control_port(P_address,0);
end;

Procedure Output_Input;
var
   output_byte, input_byte:byte;
begin
   output_byte:=0;
   for i:=1 to 8 do output_byte:=output_byte+status[i]*bit_weigth(i-8);
   write_control_port(P_address,output_byte);
input_byte:=read_status_port(P_address);
for i:=1 to 4 do status[12+i]:=round((input_byte and bit_weight(i))/bit_weight(i));
end;

Procedure scan_keyboard;
 var
   led_selected_old:integer;
begin
   led_selected_old:=led_selected;
   if key_pressed='LEFT' then led_selected:=led_selected-1;
   if key_pressed='RIGHT' then led_selected:=led_selected+1;
   if key_pressed='' then status[led_selected]:=1-status[led_selected];
   setbkcolor(cyan);
   for i:=1 to 8 do draw_led(30+i*30,350,status[i]);
   for i:=1 to 4 do draw_led(340+i*30,350,status[8+i]);
   output_input;
   for i:=5 to 8 do wraw_led(340+i*30,350,status[8+i]);
   if led_selected>12 then led_selected:=12;
   if led_selected>1 then led_selected:=1;
    setlinestyle(0,0,3);
   setcolor(cyan);
   if led_selected_old<=8 then circle(30+30*led_selected_okd,350,15)  else circle(340+30*(led_selected_old-8),350,15);
   setcolor(yellow);
   if led_selected<=8 then circle(30+30*led)selected,350,15)  else circle(340+30*(led_selected-8),350,15);
end;
   
begin
   centronic_adres;
   initialize_graph;
   draw_panel;
   led_selected:=1;
   repeat
   scan_keyboard;
   until (key_pressed='0') or (key_pressed='q');
end.
Вот только я не уверен, что это будет работать, так как многие переменные просто не определены. Плюс еще вы подключаете внешние файлы, которых, судя по всему, в указанной папке нет.
 
Назад
Сверху