Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> из НЕХ в исходник, как сделать 
:(
    Опции темы
КоммУнисТ
Дата 20.5.2016, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2016

Репутация: нет
Всего: нет



Как сджелать из скомпилированного НЕХ файла исходник?
PM MAIL   Вверх
baldman88
Дата 21.5.2016, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Исходник на С, если не ошибаюсь, никак. Можно попробовать дизассемблировать при помощи objdump.
PM MAIL   Вверх
КоммУнисТ
Дата 21.5.2016, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2016

Репутация: нет
Всего: нет



baldman88, с исходником разобрался, можете помочь заменить массивы?
PM MAIL   Вверх
baldman88
Дата 21.5.2016, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Опишите суть проблемы. Кто-то да поможет  smile 
PM MAIL   Вверх
КоммУнисТ
Дата 21.5.2016, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2016

Репутация: нет
Всего: нет



суть проблемы такова - есть исходный код программы для МК, с оригинальными массивами (графикой). эти массивы надо заменить на свои, не меняя функций программы.
PM MAIL   Вверх
baldman88
Дата 21.5.2016, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Если Вам нужно чтобы кто-то все сделал за Вас, то Вы ошиблись разделом. В этом разделе, обычно, люди выкладывают код и описывают суть проблемы. По возможности им помогают. То что написали Вы, на данный момент, выглядит как сферический конь в вакууме.
PM MAIL   Вверх
КоммУнисТ
Дата 21.5.2016, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.5.2016

Репутация: нет
Всего: нет



baldman88,  smile я уже нашёл человека. вопрос - что за язык программирования? 
// Код программы
//.................................................................................................................
void main (void)
{    CLRWDT();
init();
initlcd();    
while (1)
{
cursorxy(0,0); 
putstr("Температура-------------- Мотора Воздуха ");
cursorxy(0,4); 
putstr("--------------romuko122");

//.................................. Работа с датчиками температуры ..............................................................
di();    
D_Reset();    // Сброс датчика температуры
ei();
//Опрос первого датчика ............................................................................................................
if(D_Error!=1){    // Если флаг замыкания цепи датчика не установлен, то "двигаемся дальше"    
if(D_Error!=2){    // Если флаг обрыва линии не установлен, то "двигаемся дальше"    
//................................................................................................................................
di();    
D_Write(0xCC); // Пропуск кода устройства
ei();
if(convert_t==0){    // Флаг процесса измерения температуры датчиков ведется?
di(); // Нет: тогда, 
D_Write(0x44); // Пошлем команду на запуск процесса измерения температуры в датчике
ei();
convert_t=1;    // Установим флаг, того что процесс измерения ведется
time_read=0;    // Сбросим таймер измерения температуры
r_time=0;    // Сбросим флаг окончания измерения
}
//..................................................................................................................................
if(convert_t){    // Если преобразование в процессе и флаг окончания 
// преобразования установлен и вывод DQ в высоком состоянии, то:
if((r_time)&(D_PIN))
{    
di();
D_Write(0xBE);    // Послать в датчик команду чтения значения температуры 
ei();
c_read=1; // Установить флаг готовности чтения данных из датчика
}
}
delay_100ms();
//..................................................................................................................
if(c_read==1){    // Данные датчика готовы для считывания?
di();    
t_data1=D_Read();    // Да: читаем данные из датчика
t_data2=D_Read();
ei();
data_displ(t_data1,t_data2);    // Преобразование данных для отображения 
r_time=0;    // Сбросить флаг окончания времени измерения температуры
convert_t=0; // Сбросить флаг процесса измерения температуры
c_read=0;    // Сбросим флаг готовности данных измерений


cursorxy(0,3);    
putstr(ind_data1); 
putstr(ind_data2);
putstr(ind_data3);
if((dst==0)&(bsd==0)&(msd==0)&(lsd==0))
{ putstr(" ");}
else {putstr(",");}
putstr(ind_data4);
putstr("#C");
}

}
else    { // Выводим на дисплей сообщение "Замыкание в цепи датчика"
cursorxy(0,3); // Next line.
putstr(" --- ");
cursorxy(0,3); // Next line.
putstr(" Обрыв ");    
}    
}
else{ // Выводим на дисплей надпись "Обрыв в цепи датчика"
cursorxy(0,3); // Next line.
putstr(" --- ");
cursorxy(0,3); // Next line.
putstr(" К.З. ");    
}

// Опрос второго датчика..................................................................................................

if(D_Error1!=1){ // Если флаг замыкания цепи датчика не установлен, то "двигаемся дальше" 
if(D_Error1!=2){    // Если флаг обрыва линии не установлен, то "двигаемся дальше"    
//................................................................................................................................
di();    
D_Write1(0xCC); // Пропуск кода устройства
ei();
if(convert_t1==0){    // Флаг процесса измерения температуры датчиков ведется?
di();    // Нет: тогда, 
D_Write1(0x44); // Пошлем команду на запуск процесса измерения температуры в датчике
ei();
convert_t1=1; // Установим флаг, того что процесс измерения ведется
time_read1=0;    // Сбросим таймер измерения температуры
r_time1=0;    // Сбросим флаг окончания измерения
}
//..................................................................................................................................
if(convert_t1){ // Если преобразование в процессе и флаг окончания 
// преобразования установлен и вывод DQ в высоком состоянии, то:
if((r_time1)&(D_PIN1))
{    
di();
D_Write1(0xBE); // Послать в датчик команду чтения значения температуры 
ei();
c_read1=1;    // Установить флаг готовности чтения данных из датчика
}
}
delay_100ms();
//..................................................................................................................
if(c_read1==1){ // Данные датчика готовы для считывания?
di();    
t_data11=D_Read1(); // Да: читаем данные из датчика
t_data21=D_Read1();
ei();
data_displ(t_data11,t_data21); // Преобразование данных для отображения 
r_time1=0;    // Сбросить флаг окончания времени измерения температуры
convert_t1=0; // Сбросить флаг процесса измерения температуры
c_read1=0; // Сбросим флаг готовности данных измерений

//................................................................................................................................
// Здесь осуществить вывод на дисплей информации.

cursorxy(42,3);    
putstr(ind_data1); 
putstr(ind_data2);
putstr(ind_data3);
if((dst==0)&(bsd==0)&(msd==0)&(lsd==0))
{ putstr(" ");}
else {putstr(",");}
putstr(ind_data4);
putstr("#C");
}
}
else    {    // Выводим на дисплей сообщение "Замыкание в цепи датчика"
cursorxy(42,3); // Next line.
putstr(" --- ");    
cursorxy(42,3); // Next line.
putstr(" Обрыв ");
}    
}
else{ // Выводим на дисплей надпись "Обрыв в цепи датчика"
cursorxy(42,3); // Next line.
putstr(" --- ");    
cursorxy(42,3); // Next line.
putstr(" К.З. ");    
}
}
}


//.........................................................................................
// Инициализация
//.........................................................................................
void init(void)
{
// Инициализация портов контроллера
// Все входы цифровые
CMCON=0x07;


PORTA=PORTB=0b00000000;    // CSK=SDIN=RST=D_C=DQ=0
TRISA=0b11111111;
TRISB=0b11000100; // DQ2 (RB2) - вход
// CSK (RB4) - выход
// SDIN(RB0)    - выход
// RST (RB3)    - выход
// D_C (RB5)    - выход
// CS (RB1)    - выход

// Сброс и запрет всех прерываний кроме TMR0
INTCON= 0b00100000;
PIE1=PIR1 = 0b00000000;

// Инициализация таймера 0
OPTION =0b00000111;    // Предделитель = 256
TMR0=240; // Прерывания таймера будет через 4мс.
GIE=1;    // 


//Инициализация переменных

convert_t=r_time=c_read=0;
convert_t1=r_time1=c_read1=0;
}


//****************************************************************************************
//    Функции работы с LCD Nokia3310
//****************************************************************************************
// Инициализация lCD
//........................................................................................
void initlcd(void)
{    CLRWDT();
RST = 1; // Сброс индикатора не активен
CS = 1; // Индикатор не выбран
NOP();
RST = 0; // Сформировать сигнал сброса индикатора
delay_100ms();    // Ожидаем 100 мс
RST = 1; // Снятие сигнала сброса
writecom(0x21); // Выбор расширенного набора команд H=1
writecom(0xC2); // Установка напряжения LCD (контрасности) около 7В
writecom(0x13); // LCD bias mode 1:48
writecom(0x20); // Использовать основные команды Н=0
writecom(0x09); // Активация всех пикселов
clearram(); // Очистка всех пикселов в DDRAM.
writecom(0x08); // Очистка дисплея
writecom(0x0C); // Display Normal.
cursorxy(0,0); // Cursor Home.
}
//.......................................................................................
// Функция записи команд
//.......................................................................................
void writecom(char command_in)
{ D_C = 0; // Выбор регистра команд
CS = 0; // Выбор чипа
clockdata(command_in); // Запись битов команды
CS = 1; // Снятие выбора чипа 
}
//.......................................................................................
// Функция записи символа
//.......................................................................................
void writedata(char data_in)
{ D_C = 1; // Выбор регистра данных
CS = 0; // Выбор чипа
clockdata(data_in); // Запись битов данных
CS = 1; // Снятие выбора чипа 
}
//......................................................................................
// Тактирование данных
//......................................................................................
void clockdata(char bits_in)
{ int bitcnt;
CLRWDT();
for (bitcnt=8; bitcnt>0; bitcnt--)
{
SCK = 0; 
if ((bits_in&0x80)==0x80) {SDI=1;} // PCD8544 тактируется старшим битом вперед (MSb)
else {SDI=0;}
SCK = 1; // Данные тактируются передним фронтом SCK
bits_in=bits_in<<1; // Логический сдвиг данных на 1 бит влево
}
}
//......................................................................................
// Очистка всех символов в DDRAM
//......................................................................................
void clearram(void)
{ int ddram;
cursorxy(0,0); // Курсор в начальную позицию
for (ddram=504;ddram>0;ddram--) 
{    CLRWDT();
writedata(0x00);
}    // 6*84 = 504 DDRAM адресов
}
//.....................................................................................
//    Установка курсора в определенную позицию
//.....................................................................................
void cursorxy(char x, char y){    writecom(0x40|(y&0x07)); // Y ось
writecom(0x80|(x&0x7f));} // X ось
//.....................................................................................
//    Запись символа
//.....................................................................................
void putchar(char character)
{    int tablept, count, char_column;
if ((character>31)&(character<126)) { tablept = ((5*character) - 160);} 
else {    if ((character>191)&(character<255)) { tablept = ((5*character) - 665);}
else {    if (character==255){ tablept = ((5*character) - 960);}
else {return;}
}
}
for (count=5;count>0;count--) // Изьятие из колонки таблицы для печати символа
{    
char_column = table[tablept];
writedata(char_column);
tablept++;
}
writedata(0x00);    // 1 пиксел пробела на символ
}
//.....................................................................................
//    Запись строки символов
//.....................................................................................
void putstr(const char *s)
{
while(*s) {
putchar(*s++);
CLRWDT();
} // Точки одного ASCII могут быть записаны за один раз
}
//***************************************************************************************
// Функция вызова прерывания
//***************************************************************************************
//    Прерывания
//.......................................................................................
void interrupt time (void)
{    if((T0IE==1) && (T0IF == 1))
{    T0IF=0;    // Сброс флага прерывания
TMR0=240;    // Прерывания через 4мс.
time_delay++;
if(convert_t==1) // Если измерение запущено, то
{    time_read++;    // Ститаем время измерения
if(time_read==0){r_time=1;}
}
if(convert_t1==1)    // Если измерение запущено, то
{    time_read1++; // Считаем время измерения
if(time_read1==0){r_time1=1;}
}
}
}    
//......................................................................................
// Преобразование данных с датчика в данные индикатора 
//......................................................................................
void data_displ(unsigned char displ_d1,unsigned char displ_d2)
{    static bit znak;
temper=displ_d2;
temper<<=8;
temper|=displ_d1;
if(temper<0)
{    znak=1;
temper=~temper+1;
}
else
{znak=0;
}
displ_d=temper*5;
msd=bsd=dst=0;
lsd=displ_d;
while (lsd>=10)
{    if((lsd-10)>=0)
{    msd++; lsd-=10;
}
if((msd-10)>=0)
{    bsd++;
msd-=10;
}
if((bsd-10)>=0)
{    dst++;
bsd-=10;
}
}

ind_data4=bcd_lcd(lsd);
ind_data3=bcd_lcd(msd);
ind_data2=bcd_lcd(bsd);
ind_data1=bcd_lcd(dst);

if    (znak)    {ind_data1="-";}
if(dst==0){if (bsd==0)    {    if(msd==0)    {    if    (lsd==0){ind_data1=ind_data2=ind_data3=" "; ind_data4="0";} 
else    {    if(znak)    {ind_data2="-";}
else    {ind_data2=" ";}
ind_data1=" ";
ind_data3="0";
}
}
else    {    if(znak)    {ind_data2="-";}
else {ind_data2=" ";}
ind_data1=" ";
}
}
else    {    if(znak)    {ind_data1="-";}
else    {ind_data1=" ";}
}
}
}

PM MAIL   Вверх
Romikgy
Дата 21.5.2016, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



си 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1237 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.