0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
1

Перевести с С++ на Паскаль

24.11.2014, 04:22. Показов 3025. Ответов 33
Метки нет (Все метки)

Вот это перевести в Паскаль.
Язык С++ только начинаю изучать и перевести самостоятельно не могу.
По этому прошу помощи в переводе данного кода в язык Паскаля.
Буду весьма благодарен за перевод.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "ADuC812.h"
#include "max.h"
#include "KB.h"
#include "i2c.h"
#include "lcd.h"
#include "rtc.h"
void Buzz(void)
{
unsigned char i;
unsigned short dur;
 
    for(dur = 0; dur < 500; dur++)
    {
        WriteMax(ENA,0x24);
        for(i=0; i < 2; i++)continue;
        WriteMax(ENA,0x20);
        for(i=0; i < 2; i++)continue;
    }
}
extern int sprintf  (char *, const char *, ...);
extern int    abs  (int   val);
 
int T,VL,DV,kol,Tmin,Tmax;
TIME Opros,iztemp;
TIME vrem;
char outstr[16];
unsigned int ch;
int i;
unsigned char diap;
void FROM_TM0(void) interrupt 1
{
  TH0=0xDC;
  TL0=0x31; 
  kol++;
  if (kol==100)
  {
  kol=0;
  TR0=0;
  GetTime(&vrem);
  sprintf (outstr,"%d:%d:%d ", (int)vrem.hour, (int)vrem.min, (int)vrem.sec);
  LCD_GotoXY(0,0);
  LCD_Type(&outstr);
    if (((vrem.min*60+vrem.sec)-(Opros.min*60+Opros.sec))==10)
   {
    LCD_GotoXY(0,1);
    sprintf (outstr,"Temp %d Vlag %d", (int)T, (int)VL);
    LCD_Type(&outstr);
    Opros=vrem;
 
    ch=0;
    if ((VL<=47)||(VL>=52)) {ch=ch | 1;}
  if ((T<=Tmin)||(T>=Tmax)) {ch= ch | 2;}
    if (T<=20) {Buzz();}
    if (DV==1) {Buzz(); DV=0;}
    WriteMax(SV,ch);
   }  
  if ((vrem.min-iztemp.min)==diap)
   { 
    iztemp=vrem;
    if (diap==1) {diap=2;Tmin=36;Tmax=40;T=38;}
     else {diap=1;T=28; Tmin=26; Tmax=30;}
   }  
 
  TR0=1;
  }
}
void SetVector(unsigned char xdata *Address, void *Vector)
{
 unsigned short xdata *TmpVector;
*Address = 0x02;
TmpVector = (unsigned short xdata *) (Address+1);
*TmpVector = (unsigned short) Vector;
}
 
void main(void)
{
 
unsigned char s;
T=38;
Tmin=36;
Tmax=40;
diap=2;
VL=50;
DV=0;
s=0;
kol=0;
InitLCD();
SetVector(0x200B,(void *) FROM_TM0); 
TMOD=1;
ET0=1;
EA=1;
TH0=0xDC;
TL0=0x31; 
GetTime(&Opros);
iztemp=Opros;
TR0=1;
 while (1)
 {
  while (ScanKBOnce(&s)==0) {}
  if (s=='1') {T-=5;}
  if (s=='2') {T+=5;}
  if (s=='4') {VL-=5;}
  if (s=='5') {VL+=5;}
  if (s=='0') {DV=1;} 
  for (i=0;i<20000;i++)
   {Delay();}
 }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2014, 04:22
Ответы с готовыми решениями:

Перевести код из паскаль АБС в фри паскаль
Необходимо перевести этот код из паскаля АБЦ в фрипаскаль Спасибо! program test; const n=20;...

Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет
program derevo; uses crt, graph; function cx(length, angle:real):integer; begin ...

Перевести с паскаль на С++
uses crt; var m,k, a, b, c, d,v: integer; n,p,z, i,q: real; s:string; function...

Перевести с с++ на паскаль
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; static...

33
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.11.2014, 04:53 2
Теги Билл расставит?
0
119 / 141 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
24.11.2014, 05:07 3
Тут конвертер
http://c2pas.sourceforge.net/
http://www.softpedia.com/get/P... rter.shtml
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 07:27  [ТС] 4
Что? Чего? Ты о чем?

Добавлено через 4 минуты
По первой ссылке нету что скачать и ничего не понятно.
На второй конвертер битый или не совместим с моей ОС.
По этому если у тебя есть возможность воспользоваться данным конвертером то прошу тебя перевести мне данный код и скинуть в личном сообщении, за что я буду весьма тебе благодарен.
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.11.2014, 07:27 5
Тебе предложили компилятор с c++ на паскаль.
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 07:36  [ТС] 6
Не получается.
Либо я кривой, либо компилятор.
Вот что пишет.

Перевести с С++ на Паскаль


А со второй ссылки вообще не открывается, при запуске ошибка, возможно из-за ОС.
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.11.2014, 07:57 7
Что конкретно пишет?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
6722 / 3936 / 2655
Регистрация: 22.11.2013
Сообщений: 11,305
Записей в блоге: 1
24.11.2014, 09:52 8
Roman_Kasta,
придется огорчить -- тут приведен лишь небольшой кусочек программы, если перевести только его -- не откомпилируется и не заработает. Отсутствующие части смотрите в файлах ADuC812.h, max.h, KB.h, i2c.h, lcd.h, rtc.h, а также в файлах с реализацией объявленного, как правило *.c*. Не исключено, что исходников реализации нет, а вместо них предоставлена откомпилированная библиотека.

Да и сам код наводит на мысль, что используется среда, заточённая под какой-то контроллер.

Так что проще вам почитать про C (а в примере именно C, а не C++), язык достаточно простой.
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.11.2014, 11:05 9
Цитата Сообщение от Roman_Kasta Посмотреть сообщение
при запуске ошибка, возможно из-за ОС.
Что так и пишет: "При запуске ошиька, возможно из-за ОС."? Не верю.

Добавлено через 59 секунд
Цитата Сообщение от Roman_Kasta Посмотреть сообщение
Либо я кривой, либо компилятор.
Вот что пишет.
Перевести с С++ на Паскаль
И что здесь не так?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
6722 / 3936 / 2655
Регистрация: 22.11.2013
Сообщений: 11,305
Записей в блоге: 1
24.11.2014, 12:03 10
Если для общего понимания, что происходит, то с некоторыми упрощениями примерно так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
procedure Buzz;
var
  i: Byte;
  dur: Integer;
begin
  for dur:=0 to 500-1 do begin
    WriteMax(ENA,$24);
    for i:=0 to 1 do ;
    WriteMax(ENA,$20);
    for i:=0 to 1 do ;
  end;
end;
 
var
  T,VL,DV,kol,Tmin,Tmax: Integer;
  Opros, iztemp, vrem: TIME;
  outstr: array [0..15] of Char;
  ch: Word;
  i: Integer;
  diap: Byte;
 
procedure FROM_TM0; interrupt;
begin
  TH0:=$DC;
  TL0:=$31; 
  Inc(kol);
  if kol=100 then begin
    kol:=0;
    TR0:=0;
    GetTime(vrem);
    {sprintf (outstr,"%d:%d:%d ", (int)vrem.hour, (int)vrem.min, (int)vrem.sec);}
    with vrem do outstr:=IntToStr(hour)+':'+IntToStr(min)+':'+IntToStr(sec); {!!}
    LCD_GotoXY(0,0);
    LCD_Type(outstr);
    if ((vrem.min*60+vrem.sec)-(Opros.min*60+Opros.sec))=10 then begin
      LCD_GotoXY(0,1);
      {sprintf (outstr,"Temp %d Vlag %d", (int)T, (int)VL);}
      outstr:='Temp '+IntToStr(T)+' Vlag '+IntToStr(VL); {!!}
      LCD_Type(outstr);
      Opros:=vrem;
      ch:=0;
      if (VL<=47) or (VL>=52) then ch:=ch or 1;
      if (T<=Tmin) or (T>=Tmax) then ch:=ch or 2;
      if T<=20 then Buzz;
      if DV=1 then begin
        Buzz; DV:=0;
      end;
      WriteMax(SV,ch);
    end;  
    if vrem.min-iztemp.min=diap then begin
      iztemp:=vrem;
      if diap=1 then begin
        diap:=2; Tmin:=36; Tmax:=40; T:=38; 
      end else begin
        diap:=1; T:=28; Tmin:=26; Tmax:=30;
      end;
    end;
    TR0:=1;
  end;
end;
 
type
  PWord = ^Word;
  IntProc = procedure;
 
procedure SetVector(Address: PWord; Vector: IntProc);
var TmpVector: PWord;
begin
  Address^:=$02;
  TmpVector:=PWord(PChar(Address)+SizeOf(Address^));
  TmpVector^:=Word(Vector);
end;
 
var
  s: Char;
begin 
  T:=38;
  Tmin:=36;
  Tmax:=40;
  diap:=2;
  VL:=50;
  DV:=0;
  s:=#0;
  kol:=0;
  InitLCD;
  SetVector($200B,FROM_TM0);
  TMOD:=1;
  ET0:=1;
  EA:=1;
  TH0:=$DC;
  TL0:=$31; 
  GetTime(Opros);
  iztemp:=Opros;
  TR0:=1;
  repeat
    while ScanKBOnce(s)=0 do ;
    if s='1' then Dec(T,5);
    if s='2' then Inc(T,5);
    if s='4' then Dec(VL,5);
    if s='5' then Inc(VL,5);
    if s='0' then DV:=1; 
    for i:=1 to 20000 do Delay;
  until False;
end.
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 15:34  [ТС] 11
Да, именно, эта программа предназначена для управления микроклиматом в икубаторе, а именно микроконтроллер ADuC812BS.
Процессор ADuC812 является клоном Intel 8051 со встроенными периферийными устройствами.

То есть данный код не правильный? И перевести его на язык Паскаля не возможно?

Добавлено через 19 минут
bormant, а можно ли перевести на Асемблер?
0
119 / 141 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
24.11.2014, 15:37 12
Цитата Сообщение от Roman_Kasta Посмотреть сообщение
То есть данный код не правильный? И перевести его на язык Паскаля не возможно?
А зачем на паскаль переводить, я не видел пока среды которая бы компилировала паскаль для микроконтроллеров
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.11.2014, 15:39 13
Цитата Сообщение от Roman_Kasta Посмотреть сообщение
bormant, а можно ли перевести на Асемблер?
А что по-вашему такого волшебного на асме?
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 15:43  [ТС] 14
Уже понял. Нужно перевести на Assembler. Поможешь?

Добавлено через 1 минуту
taras atavin, не могу найти компилятор что бы перевести.
А Assembler нужен для работы на МК.
По этому если есть источник где скачать компилятор то прошу ссылку.
0
119 / 141 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
24.11.2014, 15:45 15
Цитата Сообщение от Roman_Kasta Посмотреть сообщение
Уже понял. Нужно перевести на Assembler. Поможешь?
Это еще сложнее, но ассемблерный код генерит среда которая компилирует код на С
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 15:46  [ТС] 16
demmax2004, так это вообще реально? Как мне это сделать? Компилятором никак?
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
24.11.2014, 15:51 17
Цитата Сообщение от Roman_Kasta Посмотреть сообщение
taras atavin, не могу найти компилятор что бы перевести.
А Assembler нужен для работы на МК.
По этому если есть источник где скачать компилятор то прошу ссылку.
Что такого волшебного в асме?
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 15:55  [ТС] 18
taras atavin, Не знаю я. Можно компилятор?
0
119 / 141 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
24.11.2014, 15:57 19
Почему бы не изучить Си ??? Раз это необходимо ???
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 15
24.11.2014, 16:00  [ТС] 20
demmax2004, времени нету. Уходим от ответа. Поможешь, нет?
Если бы я сам мог это сделать, я бы не обращался сюда.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2014, 16:00
Помогаю со студенческими работами здесь

Перевести С++ в Паскаль
Здравствуйте, помогите перевести на язык Паскаля функцию #include &lt;iostream&gt; #include &lt;math.h&gt;...

Перевести на Паскаль
#include &lt;iostream&gt; using namespace std; int main(){ int a={0}, i, b, j, n, t; ...

Перевести с Паскаль на с++

Перевести с Паскаль на С++
uses crt; var s:string; i:integer; a: set of char; begin clrscr; a:=; writeln('vvedite...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru