Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 02.06.2019, 21:28  
DmitriyVDN
Гражданин KAZUS.RU
 
Регистрация: 10.06.2010
Сообщений: 590
Сказал спасибо: 222
Сказали Спасибо 232 раз(а) в 152 сообщении(ях)
DmitriyVDN на пути к лучшему
По умолчанию Re: Перевод из asm в С

Сообщение от mike-y-k Посмотреть сообщение
Самым продуктивным будет путь с выделением из кода на asm алгоритма и его реализация на C.
Зачем его выделять? алгоритм полностью описан в апноте AN955
Реклама:
DmitriyVDN вне форума  
Сказали "Спасибо" DmitriyVDN
Dtolok (09.06.2019)
Непрочитано 02.06.2019, 21:42  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Перевод из asm в С

DmitriyVDN, а я написанное не к конкретному куску кода написал. Таки этот подход универсален и не только в данном конкретном случае даст результат. Это даёт нормальное направление мысли при ступоре с разборками на строках голого кода. Тут даже комментирование по описаниям машинных команд и описанию алгоритма очень помогает. Дальше разобранное на C нормально реализуется.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 09.06.2019, 16:01  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию

я со всем согласен - только у меня все таки возникают проблемы с переводом . особенно касаемо табличного чтения )))

Код:
//ISR_PWM
    PIR3bits.PTIF = 0;//BCF	PIR3,PTIF				;CLEAR PWM TIMER INTERUPT FLAG
   if (ACSVM_FLAGS_1.FWD_REV) { // BTFSS	ACSVM_FLAGS_1,FWD_REV
    //BRA	FIND_VECTOR_ANGLE_FOR_REV_DIR
    //MOVFF	PARAMETER_BUFFER+LOC_UPDATE_STEP_LSB,WREG	;INCREMENT VECTOR BY UPDATE STEP SIZE
    VECTOR_ANGLE_LSB = VECTOR_ANGLE_LSB + PARAMETER_BUFFER[LOC_UPDATE_STEP_LSB]; //ADDWF	VECTOR_ANGLE_LSB,F
    //MOVFF	PARAMETER_BUFFER+LOC_UPDATE_STEP_MSB,WREG
    VECTOR_ANGLE_MSB = VECTOR_ANGLE_MSB + PARAMETER_BUFFER[LOC_UPDATE_STEP_MSB];//ADDWFC	VECTOR_ANGLE_MSB,F
    //BNC	READ_TIME_TB_COUNT			;DUE TO VECTOR INCREMENT, FOR CARRY = 0, CALCULATE CORRESPONDING TIME VALUES
    //INCF	SECTOR_NO,F				;DUE TO VECTOR INCREMENT, FOR CARRY = 1, INCREMENT SECTOR NO
    //BRA	CHECK_SECTOR_OF
   }
BNC READ_TIME_TB_COUNT - вот этот кусочек - проверка на перенос - перенос в случае переполнения - значит как вариант вычесть значение PARAMETER_BUFFER[LOC_UPDATE_STEP_MSB] из 65535 и сравнить с VECTOR_ANGLE_MSB?

вот оригинал
Код:
BCF	PIR3,PTIF				;CLEAR PWM TIMER INTERUPT FLAG
    BTFSS	ACSVM_FLAGS_1,FWD_REV
    BRA	FIND_VECTOR_ANGLE_FOR_REV_DIR
    MOVFF	PARAMETER_BUFFER+LOC_UPDATE_STEP_LSB,WREG	;INCREMENT VECTOR BY UPDATE STEP SIZE
    ADDWF	VECTOR_ANGLE_LSB,F
    MOVFF	PARAMETER_BUFFER+LOC_UPDATE_STEP_MSB,WREG
    ADDWFC	VECTOR_ANGLE_MSB,F
    BNC	READ_TIME_TB_COUNT			;DUE TO VECTOR INCREMENT, FOR CARRY = 0, CALCULATE CORRESPONDING TIME VALUES
    INCF	SECTOR_NO,F				;DUE TO VECTOR INCREMENT, FOR CARRY = 1, INCREMENT SECTOR NO
    BRA	CHECK_SECTOR_OF

Последний раз редактировалось mike-y-k; 09.06.2019 в 17:28.
Dtolok вне форума  
Непрочитано 09.06.2019, 17:24  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Перевод из asm в С

Dtolok, таки напишите каждую операцию на asm словами - что происходит.
Потом напишите этот же алгоритм на C. Некоторые конструкции нет смысла воспроизводить на C - они вполне себе являются его свойствами. Например контроль границ массива…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
Dtolok (09.06.2019)
Непрочитано 09.06.2019, 22:24  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Перевод из asm в С

Код:
 //MOVLW	UPPER(TABLE_TB_COUNT_LSB)		;LOAD BASE ADDRESS FOR TB LSB COUNT TABLE TO TABLE POINTER
    //MOVWF	TBLPTRU
    //MOVLW	HIGH(TABLE_TB_COUNT_LSB)
    //MOVWF	TBLPTRH
    //MOVLW	LOW(TABLE_TB_COUNT_LSB)
    //MOVWF	TBLPTRL
    //MOVF	VECTOR_ANGLE_MSB,W			;ADD VECTOR ANGLE TO TABLE POINTER AS OFFESET
    //ADDWF	TBLPTRL,F
    //TBLRD*
    //MOVFF	TABLAT,TB_COUNT_LSB			;READ TB LSB COUNT AND STORE
    //COMF	TBLPTRL,F				;COMPLEMENT TABLE POINTER LSB TO READ TA
    //TBLRD*						;NOTE TB AND TA ARE COMPLEMENT OF EACH OTHER IN THE SAME SCTOR
    //MOVFF	TABLAT,TA_COUNT_LSB			;READ TA LSB COUNT AND STORE
    //MOVLW	UPPER(TABLE_TB_COUNT_MSB)		;LOAD MSB AND USB OF TB MSB COUNT TABLE TO TABLE POINTER
    //MOVWF	TBLPTRU
    //MOVLW	HIGH(TABLE_TB_COUNT_MSB)
    //MOVWF	TBLPTRH
    //TBLRD*
    //MOVFF	TABLAT,TA_COUNT_MSB			;READ TA MSB COUNT AND STORE
    //COMF	TBLPTRL,F				;COMLEMENT TABLE POINTER LSB TO READ TB
    //TBLRD*
    // MOVFF	TABLAT,TB_COUNT_MSB			;READ TB MSB COUNT AND STORE
табличное чтение - так где ж здесь указатель таблицу??!!!TABLE_TB_COUNT_LSB - это начало таблицы???
Код:
TABLE_TB_COUNT_LSB
	GLOBAL	TABLE_TB_COUNT_LSB
	DATA    0X0400
приращение по чтению?
Dtolok вне форума  
Непрочитано 10.06.2019, 03:06  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Перевод из asm в С

Таки напишите нужный Вам алгоритм словами. Потом напишите его на C.
Есть таблица значений известной длины. В процессе она должна быть каким-то образом прочитана и считанные данные должны быть соответствующим образом использованы.
Собственно уже готовый скелет программы:
unsigned char table[размер в байтах];
for (table_index = 0; table_index ‹ размер в байтах; table_index++) {
Операторы обработки для table[table_index]
}
Перевод тут не покомандно делается, а именно алгоритмически.
Рядом с каждой командой напишите для себя выполняемую функцию и используемые операнды, тогда будет сильно понятнее.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
Dtolok (10.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги (не радиотехнической тематики) Mike79 Делимся опытом 4264 16.08.2023 23:52
Linux-ваше мнение Tvenn Делимся опытом 6169 23.08.2015 08:57
Книги (Художественная литература) Mike79 Делимся опытом 40 29.11.2014 13:29
HEX из ASM файла, как? ludovikIV Цифровые сигнальные процессоры 1 31.10.2008 19:27
I2C, WinAVR и at90s2313 Hoksmur Микроконтроллеры, АЦП, память и т.д 22 04.09.2007 01:14


Часовой пояс GMT +4, время: 11:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot