|
Модераторы: PILOT, ManiaK, Mazzi |
|
КоммУнисТ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2016 Репутация: нет Всего: нет |
Как сджелать из скомпилированного НЕХ файла исходник?
|
|||
|
||||
baldman88 |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Исходник на С, если не ошибаюсь, никак. Можно попробовать дизассемблировать при помощи objdump.
|
|||
|
||||
КоммУнисТ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2016 Репутация: нет Всего: нет |
baldman88, с исходником разобрался, можете помочь заменить массивы?
|
|||
|
||||
baldman88 |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Опишите суть проблемы. Кто-то да поможет
|
|||
|
||||
КоммУнисТ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2016 Репутация: нет Всего: нет |
суть проблемы такова - есть исходный код программы для МК, с оригинальными массивами (графикой). эти массивы надо заменить на свои, не меняя функций программы.
|
|||
|
||||
baldman88 |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Если Вам нужно чтобы кто-то все сделал за Вас, то Вы ошиблись разделом. В этом разделе, обычно, люди выкладывают код и описывают суть проблемы. По возможности им помогают. То что написали Вы, на данный момент, выглядит как сферический конь в вакууме.
|
|||
|
||||
КоммУнисТ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.5.2016 Репутация: нет Всего: нет |
baldman88, я уже нашёл человека. вопрос - что за язык программирования?
// Код программы //................................................................................................................. 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=" ";} } } } |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
си
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |