22.08.2022, 16:39
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,169
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Alpout, а Ваш целевой МК случайно не поддерживает обмен с портом словами? Это сразу решит вопрос с побайтным обменом, останется лишь понять правильность последовательности байт (Big/Little endian)
индюк, про asm {} уже было
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
22.08.2022, 16:53
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,660
Сказал спасибо: 185
Сказали Спасибо 3,183 раз(а) в 2,063 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Сообщение от mike-y-k
|
индюк, про asm {} уже было
|
memset в асме?
не, не знал..........
__________________
кагмаподэ магмаподэ
|
|
|
|
22.08.2022, 17:53
|
|
Прописка
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Я хотел не через порт передать, а сохранять в собственном eeprom числа integer и float. То есть включается прибор(с МК), проводятся какие то операции, потом измененные числа хранятся в EEPROM. Я думал через указатель делать, в программировании не профи, составляю на ходу изучая документации, книжки...Микроконтроллер выбрал PIC16F887.
|
|
|
|
22.08.2022, 18:43
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,169
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Alpout, тогда все данные для EEPROM вынесите в структуру и гоняйте ее содержимое целиком, заодно таки прочитайте про систему команд процессора и организацию работы с внутренней памятью, чтобы понимать как оно происходит на физическом уровне…
Это сильно поможет в программировании…
Ну и про возможности оператора asm прочитайте уже для C в MPLAB - так можно спокойно вставлять цепочки машинных команд. Средства языка бывает делают это не самым оптимальным образом…
В среде можно всегда указать вывод листинга ассемблера и по нему понимать превращение строк кода на C в исполняемые команды…
Иногда помогает найти ошибки в своем понимании происходящего в программе, особенно в начале пути…
PS На тему сохранения в EEPROM - почитайте про ресурс в циклах записи для конкретного процессора и определите частоту Ваших операций записи туда…
Бывают ситуации преждевременной смерти этой памяти от излишнего упорства в записи туда каждого чиха…
Для таких ситуаций предпочтительнее внешний модуль - заменить сильно проще, да и со скоростью и ресурсом получше (например FRAM)…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 22.08.2022 в 18:48.
|
|
|
|
22.08.2022, 19:31
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,660
Сказал спасибо: 185
Сказали Спасибо 3,183 раз(а) в 2,063 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Сообщение от mike-y-k
|
В среде можно всегда указать вывод листинга ассемблера и по нему понимать превращение строк кода на C в исполняемые команды…
Иногда помогает найти ошибки в своем понимании происходящего в программе, особенно в начале пути…
|
это вы уже какуюто фантастику описываете - такое умели в 90х годах но не щас))) щас этим людям уже лет по 65-75 и они не пишут не читают.......))))
__________________
кагмаподэ магмаподэ
|
|
|
|
22.08.2022, 19:58
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,169
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
индюк, ну таки я сам как-то из них, помню еще методы набора и исправления программ по кодам в листинге…
Всем советую, некоторые воспринимают и потом говорят спасибо…
С таким подходом и новая система команд, и сам процессор уже не кажутся сильно сложными в освоении, да и документация переваривается сильно быстрее и полнее…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
22.08.2022, 21:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.12.2007
Сообщений: 1,198
Сказал спасибо: 70
Сказали Спасибо 80 раз(а) в 69 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Сообщение от Alpout
|
Я хотел не через порт передать, а сохранять в собственном eeprom числа integer и float. То есть включается прибор(с МК), проводятся какие то операции, потом измененные числа хранятся в EEPROM. Я думал через указатель делать, в программировании не профи, составляю на ходу изучая документации, книжки...Микроконтроллер выбрал PIC16F887.
|
Используйте союз UNION это просто и наглядно.
|
|
|
Сказали "Спасибо" vavan1983
|
|
|
23.08.2022, 08:00
|
|
Прописка
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Хорошо, понял, спасибо за помощь! В си перешел с ассемблера, понимаю как работает. Микроконтроллеры программирую раз в год, забывается все.
|
|
|
|
23.08.2022, 10:50
|
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 598
Сказал спасибо: 222
Сказали Спасибо 234 раз(а) в 154 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Сообщение от Alpout
|
Я хотел не через порт передать, а сохранять в собственном eeprom числа integer и float. То есть включается прибор(с МК), проводятся какие то операции, потом измененные числа хранятся в EEPROM. Я думал через указатель делать, в программировании не профи, составляю на ходу изучая документации, книжки...Микроконтроллер выбрал PIC16F887.
|
что мешает в начале кода определить переменные в EEPROM
Код:
|
__eeprom int Limit_On = 0x1234; //
__eeprom int Limit_Off = 0x5678; //
__eeprom int Limit_Complete =0x0090;
__eeprom float Limit = 10000.0; |
|
|
|
|
23.08.2022, 12:13
|
|
Прописка
Регистрация: 30.08.2010
Сообщений: 143
Сказал спасибо: 253
Сказали Спасибо 35 раз(а) в 28 сообщении(ях)
|
Re: MPLAB 8. Работа с указателями.
Сообщение от Alpout
|
Добрый день!
Код:
|
temp = 0x4025;
u=*p;
*p++;
v=*p; |
|
А разве в Сях указатель через разыменование инкрементируется???
Если не ошибаюсь этот код должен инкрементировать младший char в переменной temp, итого:
Код:
|
u=0х25
v=0х26
temp = 0x4026 |
Ну а если ошибаюсь(т.е. инкрементирует, но результат игнорирует), то:
Код:
|
u=0х25
v=0х25
temp = 0x4025 |
Был не прав: инкремент главнее разыменования(что кстати видно по отладке), тогда кроме странного инкремента претензий к коду больше не имею.
А что происходит в отладке по шагам по асмовому коду?
Последний раз редактировалось pt200; 23.08.2022 в 12:27.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:30.
|
|