-
11.10.2003, 22:02 #1ИгорьХГость
кто знает ASSM на PICи?
Всем привет!!!
Очень нуждаюсь в помощи в освоении PICов-некоторые фрагменты
программ "зависают",хотя всё вроде бы должно работать.
(Пользуюсь Mpasm и pix113b).Ранее всё было в ладу с 580ВМ80,Z80.
Заранее благодарен тому,кто проконсультирует меня по PICам
(PIC16F84)!
73!!! Игорь г.Ульяновск
mailto:rw4lci@mail.uln.ru
-
11.10.2003, 23:16 #2Alex007Гость
Чтобы ничего не зависало, полезно пользоваться прогой MPLAB, она свободно лежит на microchip.ru или microchip.com и накопить хотя бы небольшой опыт. Практически любую программу можно вначале симулировать в MPLAB, не тратя нервы, время и PICи.
А вопрос о "зависании" надо решать на конкретном куске кода, а не общими фразами.
Если что не получается- вывешивайте сюда, сообща разберёмся, но, повторюсь основываясь на личный опыт, большинстно ошибок (зависания, как вы выразились) связаны с невнимательностью разработчика, отсюда вывод:
постарайтесь набросать на бумаге для себя алгоритм работы программы, затем так же на бумаге пометьте основные её модули, иногда бывает полезно написать какой-то кусок кода сначала на бумаге, а уже потом перенести его на комп (лично мне так бывает проще)...
В интернете очень много ресурсов по PIC-ам, введеите в поисковик google.com PIC или PIC16F84 и вы получите массу инфо, из которой как из кубиков можно выкладывать свои программы...
Удачи!!!
-
12.10.2003, 01:36 #3ИгорьХГость
Alex007
Alex007
Вот один из фрагментов:
movlw 0FFh
movwf TEMP1
K4
decfsz TEMP1,f
goto K4
.......................
Такой-же фрагмент есть в прг.
из сайта ,который работает,а у меня в моей прг.-нет!!!
(я уже набрал много таких программ)
Было бы очень хорошо,если я смог связаться
с Вами по ел.почте.Я бы выслал всю прогу,а Вы
мне указали бы на ошибки!
А Mplab у меня есть,но не умею пользоваться
(с английским туговато)
-
12.10.2003, 11:09 #4
- Регистрация
- 28.07.2003
- Адрес
- город
- Сообщений
- 28
- Поблагодарили
- 0
- Поблагодарил
- 0
Руководство пользователя MPLAB на русском языке выложено на сайте www.microchip.ru в разделе "документация".
73! Luis.
-
12.10.2003, 11:41 #5ИгорьХГость
Luis,спасибо,пойду,поищу.
-
12.10.2003, 13:07 #6
- Регистрация
- 04.08.2003
- Адрес
- Ростов-н/Д
- Сообщений
- 83
- Поблагодарили
- 0
- Поблагодарил
- 0
А прерывания обрабатываете?
В свое время нашел такой косяк (или просто свойство ПИК).
При входе в процедуру обработки прерываний сохранял отдельно регистры W и STATUS, а при выходе восстанавливал. Выяснилось, что после восстановления W модифицировался флаг Zero... Обойти это можно примерно так:
Код:int_0000: ;точка входа процедуры обработки прерываний movwf int_w_save ; сохраняем W movf STATUS,W movwf int_st_save; сохраняем STATUS ; ; что-то там свое делаем ; int_end: movf int_st_save,w movwf status btfss Zero goto _int_end1 movf int_w_save,w ; после этой команды Zero может поменяться bsf Zero goto _int_end2 _int_end1: movf int_w_save,w ; после этой команды Zero может поменяться bcf Zero _int_end2: retfie ; возврат из прерывания
-
12.10.2003, 19:36 #7Alex007Гость
Не нужно ничего обходить, всё дело в командах movwf, movf- они изменяют флаг Z, в то же время команда swapf такого свойства не имеет, именно поэтому её и нужно использовать для сохранения ( и извлечения) содержимого регистров w и status. Посмотрите фирменные примеры (в MPLAB-е есть).
Игорь, пишите на buevsky@mail.ru - разберёмся.Последний раз редактировалось Alex007; 12.10.2003 в 19:39.
-
12.10.2003, 20:59 #8ИгорьХГость
Дело в том,ято прога-то простая и прерываниям
стоит запрет (простая мигалка),и как только начинается
п/п задержки: movlw .200
movwf TEMP1
M2
decfsz TEMP1,f
goto M2
...............
на этом месте "зависает",меняю этот фрагмент на управление
кнопкой-всё работает.Может я не учитываю какие-то нюансы PICа???
CONFIG 0x3FF1
Этот фрагмент в прг "цифр.шкала" работает!!!
Разбираюсь с Mplab-ом,не знаю что получится.
Жду новых подсказок и спасибо всем!
-
12.10.2003, 21:54 #9
- Регистрация
- 07.06.2002
- Адрес
- Каунас
- Возраст
- 74
- Сообщений
- 1,616
- Поблагодарили
- 184
- Поблагодарил
- 166
А по каким признакам Вы определяете, что зависает именно на этом месте ?
Может быть просто забыли запретить WatchDog, и программа попадая в цикл задержки перезапускается ?
-
13.10.2003, 14:27 #10ИгорьХГость
WatchDog запрещен (CONFIG 0x3FF1)!
Ребята!!!
Прошу прощения,я нашел (кажется) ошибку,
всё заработало!
Всем огромное спасибо!
Alex007, я смогу обратиться в следующий раз
к Вам запомощью по почте?
P.S. Начинающим нужно проверять свою прогу
не 10 раз (как я) ,а 20-30 раз и всё будет
(наверное) в порядке!!!
Ещё раз всем спасибо!
-
13.10.2003, 22:03 #11
- Регистрация
- 04.08.2003
- Адрес
- Ростов-н/Д
- Сообщений
- 83
- Поблагодарили
- 0
- Поблагодарил
- 0
команда swapf такого свойства не имеет, именно поэтому её и нужно использовать для сохранения ( и извлечения) содержимого регистров w и status
Буду знать, спасибо!
|
Социальные закладки