|
Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!
Здравствуйте, гость ( Вход | Регистрация )
Сейчас обсуждают
 
| |
|
|
микроконтроллеры, всё что связано с микроконтроллерами |
|
|
titr |
25.8.2009, 20:44
|
Любит поговорить
Группа: Sibnet-club
Сообщений: 342
Регистрация: 26.11.2007
Пользователь №: 11 660
Репутация: 1
|
Цитата(jonsony @ 23.8.2009, 23:33) если бы прогнал в эмуляторе пошагово - нашел бы
просто видишь, пауза вызывается как подпрограмма, перед её вызовом прога (точнее камень) сохраняет определённые параметры, и дожидаеться возврата, а ты возврат нарушаеть переходом из подпрограммы в тело проги
Нет, думаю что не нашел бы. Мне не казалось что я неправильно использую подпрограмму. Тем паче, что я все эти процессы понимаю очень и очень поверхностно.
|
|
|
|
ewk |
7.9.2009, 11:44
|
Завтра начнём учиться!
Группа: Sibnet-club
Сообщений: 601
Регистрация: 15.11.2007
Пользователь №: 10 645
Репутация: 66
|
Разработка устройств сопряжения с ПК» Спойлер (нажмите, чтобы прочесть) « Этот сайт посвящен вопросам сопряжения компьютеров с внешними устройствами. На его страницах Вы найдете информацию о том, как можно самостоятельно в домашних условиях изготавливать цифровые устройства, подключать их к различным портам компьютера, управлять ими из собственных программ, принимать и передавать данные.
» Спасибо сказали: «
|
|
|
|
zedimon |
16.10.2009, 21:44
|
Болтун
Группа: Sibnet-club
Сообщений: 624
Регистрация: 2.3.2008
Пользователь №: 23 091
Репутация: 22
|
Цитата(jonsony @ 15.10.2009, 21:06) почитай её назначение
Хороший ответ.
Давайте все таки выясним для чего нужна директива "org": Цитата: Директива org, определяет, с какого именно адреса памяти программ (PC) начать исполнение программы (обычно, org 0 С нулевого адреса PC) и команда перехода на начало исполнения программы (обычно, goto Start). Так как команда goto Start расположена сразу же после директивы org 0 (у команды goto Start нулевой адрес в памяти программ), то с этой команды и начнется исполнение программы. Из этой цитаты по моему ясно для чего нужна директива org. Если не понятно, поясню на пальцах, директива org говорит PIC откуда начать выполнение программы. Так как счетчик PC, при выключении питания, не сбрасывается, то, без этой команды (org 0), при следующем включении питания PIC продолжит выполнения программы с того места где остановился, что нарушает нормальную работу PIC.
|
|
|
|
Ale3000 |
17.10.2009, 21:54
|
Болтун
Группа: Sibnet-club
Сообщений: 889
Регистрация: 15.11.2007
Пользователь №: 10 642
Репутация: 60
|
Цитата(zedimon @ 16.10.2009, 20:44) Цитата: [i]Директива org, определяет, с какого именно адреса памяти программ (PC) начать исполнение программы (обычно, org 0 С нулевого адреса PC) и команда перехода на начало исполнения программы (обычно, goto Start).
Неправда. Директива org сообщает компилятору с какого адреса он будет располагать следующий за директивой org код. Цитата(zedimon @ 16.10.2009, 20:44) Из этой цитаты по моему ясно для чего нужна директива org. Если не понятно, поясню на пальцах, директива org говорит PIC откуда начать выполнение программы.
Нет. PICу, как и любому другому процессору насрать на директиву org. После ресета он будет стартовать всегда по одному и тому же адресу. Для PICов, насколько я помню он нулевой. И в задачу программиста входит расположить именно по этому адресу начало своей программы. Цитата(zedimon @ 16.10.2009, 20:44) Так как счетчик PC, при выключении питания, не сбрасывается, то, без этой команды (org 0), при следующем включении питания PIC продолжит выполнения программы с того места где остановился, что нарушает нормальную работу PIC.
PC сбрасывается при каждом ресете. А ресет случается при каждом включении питания. Сообщение отредактировал Ale3000 - 17.10.2009, 21:56
|
|
|
|
jonsony |
17.10.2009, 22:25
|
я есть я и никто иной
Группа: Пользователи
Сообщений: 13 154
Регистрация: 18.9.2008
Из: Омск
Пользователь №: 50 025
Репутация: 648
|
Цитата(Ale3000 @ 17.10.2009, 20:54) Нет. PICу, как и любому другому процессору насрать на директиву org. После ресета он будет стартовать всегда по одному и тому же адресу. Для PICов, насколько я помню он нулевой. И в задачу программиста входит расположить именно по этому адресу начало своей программы.
мда? а на кой тогда для com прог прописано org 100? берём книжку по пикам, видим там -"org - начальный адрес в памяти программ для последующего кода", ещё возражения? -"Следует только иметь в виду, что при загрузке программы типа .СОМ регистр IP всегда инициализируется числом 100h, поэтому сразу вслед за оператором ORG 100h должна стоять первая выполнимая команда программы. Если данные желательно расположить в начале программы, перед ними следует помес-тить оператор перехода на фактическую точку входа, например jmp entry." Сообщение отредактировал jonsony - 17.10.2009, 22:33
|
|
|
|
Ale3000 |
17.10.2009, 23:20
|
Болтун
Группа: Sibnet-club
Сообщений: 889
Регистрация: 15.11.2007
Пользователь №: 10 642
Репутация: 60
|
Цитата(jonsony @ 17.10.2009, 21:25) мда? а на кой тогда для com прог прописано org 100?
Это ты уже про 8086 процессор говоришь? Цитата(jonsony @ 17.10.2009, 21:25) берём книжку по пикам, видим там -"org - начальный адрес в памяти программ для последующего кода", ещё возражения?
Я тебе так и написал: "Директива org сообщает компилятору с какого адреса он будет располагать следующий за директивой org код." Ты же ранее утверждал, что "директива org говорит PIC откуда начать выполнение программ".
|
|
|
|
jonsony |
17.10.2009, 23:29
|
я есть я и никто иной
Группа: Пользователи
Сообщений: 13 154
Регистрация: 18.9.2008
Из: Омск
Пользователь №: 50 025
Репутация: 648
|
Цитата(Ale3000 @ 17.10.2009, 22:20) Это ты уже про 8086 процессор говоришь?
это я тебе тебя же цитирую из этих слов -"Нет. PICу, как и любому другому процессору насрать на директиву org." Цитата(Ale3000 @ 17.10.2009, 22:20) Я тебе так и написал: "Директива org сообщает компилятору с какого адреса он будет располагать следующий за директивой org код." Ты же ранее утверждал, что "директива org говорит PIC откуда начать выполнение программ".
ты ничего не путаешь? Сообщение отредактировал jonsony - 17.10.2009, 23:30
|
|
|
|
Ale3000 |
17.10.2009, 23:37
|
Болтун
Группа: Sibnet-club
Сообщений: 889
Регистрация: 15.11.2007
Пользователь №: 10 642
Репутация: 60
|
Цитата(jonsony @ 17.10.2009, 22:29) это я тебе тебя же цитирую из этих слов -"Нет. PICу, как и любому другому процессору насрать на директиву org." ты ничего не путаешь?
Когда запускается программа COM, то процессор не ресетуется. Операционная система загружает в память твою COM программу и переходит по адресу 100h. Если в начале COM программы написать ORG 200h. То DOS все равно передаст управление по адресу 100h, только в этом случае там будет мусор лежать. Цитата(jonsony @ 17.10.2009, 22:29) ты ничего не путаешь?
Да, это утверждал zedimon. Извини. Сообщение отредактировал Ale3000 - 17.10.2009, 23:40
|
|
|
|
jonsony |
18.10.2009, 0:31
|
я есть я и никто иной
Группа: Пользователи
Сообщений: 13 154
Регистрация: 18.9.2008
Из: Омск
Пользователь №: 50 025
Репутация: 648
|
Цитата(Ale3000 @ 17.10.2009, 22:37) Когда запускается программа COM, то процессор не ресетуется. Операционная система загружает в память твою COM программу и переходит по адресу 100h. Если в начале COM программы написать ORG 200h. То DOS все равно передаст управление по адресу 100h, только в этом случае там будет мусор лежать.
» Спойлер (нажмите, чтобы прочесть) « ;************************************************************** ; Программа PROG1.asm. С помощью четырех светодиодов RB0...RB3 ; поочередно с некоторой паузой выводятся двоичные числа 0...9. ; Затем программа повторяет цикл с нуля. ; PIC 16C54, f = 2 Мгц. Длительность командного цикла - 2 мкс. ;**************************************************************
; Определение используемых в программе регистров STAT equ 03 PORTB equ 06 ZAEHL1 equ 07 ZAEHL2 equ 08
; Константы ZEHN equ 0A
; Разряды в регистрах carry equ 0 zero equ 02
; Регистр назначения w equ 0 ; Регистр назначения - W f equ 1 ; Регистр назначения - f
;************************************************************** pause movlw 0FF ; Пауза 256х256х6 мкс = 0,393с movwf ZAEHL1 ; + 256х10 мкс = 0,395 с movwf ZAEHL2 wdh decfsz ZAEHL2,f ; Длительность внутреннего цикла goto wdh ; 3 цикла = 6 мкс movlw 0FF ; ZAEHL2 = 0: movwf ZAEHL2 ; новая загрузка decfsz ZAEHL1,f ; 5 циклов = 10 мкс goto wdh retlw 0 ; ZAEHL2 = 0: конец паузы ;************************************************************** init clrf ZAEHL1 movlw 0F0 tris PORTB ; RB0...RB4 - выходы null clrf PORTB ; Порт B = 0, все 4 светодиода вкл. schalt call pause ; Ожидаем incf PORTB,f ; Увеличиваем значение порта B на 1 movf PORTB,w andlw 0F ; Обнуляем старший полубайт xorlw ZEHN ; Порт B = 0Ah? btfss STAT,zero ; Флаг Z установлен? goto schalt ; Если нет, продолжаем дальше goto null ; Если да, начинаем опять с нуля
org 1FF ; Поскольку микроконтроллер с EPROM goto init end
|
|
|
|
Drex |
18.10.2009, 1:27
|
Молчун
Группа: Пользователи
Сообщений: 33
Регистрация: 18.7.2008
Из: Кемерово
Пользователь №: 41 308
Репутация: 1
|
Цитата(zedimon @ 16.10.2009, 20:44) Хороший ответ.
Давайте все таки выясним для чего нужна директива "org":
Цитата: Директива org, определяет, с какого именно адреса памяти программ (PC) начать исполнение программы (обычно, org 0 С нулевого адреса PC) и команда перехода на начало исполнения программы (обычно, goto Start). Так как команда goto Start расположена сразу же после директивы org 0 (у команды goto Start нулевой адрес в памяти программ), то с этой команды и начнется исполнение программы.
Из этой цитаты по моему ясно для чего нужна директива org. Если не понятно, поясню на пальцах, директива org говорит PIC откуда начать выполнение программы. Так как счетчик PC, при выключении питания, не сбрасывается, то, без этой команды (org 0), при следующем включении питания PIC продолжит выполнения программы с того места где остановился, что нарушает нормальную работу PIC.
Серьезное заблуждение. Объясняю подробно. Директива org - это директива КОМПИЛЯТОРА, а не команда ассемблера. Эта директива исплняется именно компилятором во время компиляции программы. ПИК потом об этой директиве никогда ничего не узнает. Нужна эта директива для указания КОМПИЛЯТОРУ с какого места в пямяти программ будет располагаться исполняемый код, описанный сразу после директивы org. Бывает так, что нужно разместить чать программы в определенном месте памяти. Например, какую-то таблицу с данными. Для этого перед описанием таблицы вставляют эту директиву. Тогда, независимо от того, в каком месте была последняя скомпилированная команда, последующая в тексте команда будет размещена по адресу, указанному в org. По тексту программы такую директиву можно использовать более одного раза.
|
|
|
|
zedimon |
13.11.2009, 22:51
|
Болтун
Группа: Sibnet-club
Сообщений: 624
Регистрация: 2.3.2008
Пользователь №: 23 091
Репутация: 22
|
Экономим выводы МК. Динамическая индикация по последовательной шине для PIC. схема подключения.
Disp7seg_09.rar ( 475 байт )
Кол-во скачиваний: 108 демонстрационная прошивка. Частота кварца 8 МГц. Частота развертки 50 Гц. Размер программы 153 байта, с уходом в прерывание от TMR0. Максимально возможная частота развертки 200 Гц. Управление LCD индикатором по последовательной шине для PIC. схема подключения.
i2s_lsd.rar ( 683 байт )
Кол-во скачиваний: 96 демонстрационная прошивка. Частота кварца 10 МГц. Размер программы 238 байт. Сообщение отредактировал zedimon - 5.3.2010, 12:05
|
|
|
|
zedimon |
26.11.2009, 22:18
|
Болтун
Группа: Sibnet-club
Сообщений: 624
Регистрация: 2.3.2008
Пользователь №: 23 091
Репутация: 22
|
Цитата(wws63 @ 26.11.2009, 18:31) Что-то не скачивается демонстрационная прошивка?
Пере залил, хотя файл существовал.
Disp7seg_09.rar ( 475 байт )
Кол-во скачиваний: 112Сообщение отредактировал zedimon - 26.11.2009, 22:19
|
|
|
|
wws63 |
27.11.2009, 22:54
|
Молчун
Группа: Пользователи
Сообщений: 10
Регистрация: 2.9.2009
Пользователь №: 133 930
Репутация: 0
|
Цитата(zedimon @ 26.11.2009, 21:18) Пере залил, хотя файл существовал.
Disp7seg_09.rar ( 475 байт )
Кол-во скачиваний: 112Всё, скачал. Исходник для просмотра не скинете?
|
|
|
|
zedimon |
29.11.2009, 12:31
|
Болтун
Группа: Sibnet-club
Сообщений: 624
Регистрация: 2.3.2008
Пользователь №: 23 091
Репутация: 22
|
Цитата(wws63 @ 27.11.2009, 21:54) Всё, скачал. Исходник для просмотра не скинете?
Исходник для просмотра здесь: http://startcd.narod.ru/hc595/led595.html
|
|
|
|
|
|
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|