|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.09.2015, 11:29 | #1 |
Регистрация: 13.05.2015
Сообщений: 8
|
Прерывания в ассемблере
Добрый день. Есть задание: Программа формирования ШИМ сигнала с частотой 1 и 2 кГц, задаваемым по внешнему прерыванию от двух сигналов, и с коэффициентом заполнения 0,5. ШИМ сигнал формируется по прерыванию от таймеров. MK89C51
Переключение будет через порт Р1, то есть если на Р1-(1) то ШИМ 1кГц, если Р1-(0)-2кГц. Вот написал код, по отдельности он работает, но стоит объединить их почему-то при моделировании вместо start1 переходит в start. Причём если после hz1000 написать другой код,(mov R4,#4 наример) то он на него переходит и всё работает как надо, на вход Р1 реагирует, но стоит туда забить второе тело со start1, он как будто считает, что start1 не существует, то есть идёт сразу вниз после "jmp start1" Помогите пожалуйста с jmp разобраться. Код:
Последний раз редактировалось Stilet; 23.09.2015 в 12:25. |
23.09.2015, 12:28 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
23.09.2015, 12:55 | #3 |
Регистрация: 13.05.2015
Сообщений: 8
|
должен идти на метку hz1000:
Код:
Код:
Последний раз редактировалось Stilet; 23.09.2015 в 14:34. |
23.09.2015, 13:01 | #4 |
Регистрация: 21.09.2015
Сообщений: 8
|
смущает такая конструкция:
... jmp next next: reti start: ... Не знаю специфики ARM но не могут эти две метки указывать на одну ячейку памяти? тогда при переходе в start: будет возврат из прерывания. |
23.09.2015, 13:13 | #5 |
Регистрация: 13.05.2015
Сообщений: 8
|
исправил,заменил
jmp next next: reti на reti ничего не поменялось, всё равно перелетает start1 |
23.09.2015, 13:28 | #6 |
Регистрация: 21.09.2015
Сообщений: 8
|
Хм, в P1 точно ноль (не ноль?)?
Могу предложить убрать код генератора, оставить только переходы, и какие ни будь диагностические сообщения после них и посмотреть поведение программы. После меток, идет вызов какой-то функции? "delay1" может она гадит? Еще что смущает - короткий переход "sjmp"; мне запись "sjmp $" не знакома. Последний раз редактировалось Ароха; 23.09.2015 в 13:42. |
23.09.2015, 14:36 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
23.09.2015, 14:51 | #8 | |
Регистрация: 13.05.2015
Сообщений: 8
|
Цитата:
|
|
23.09.2015, 14:55 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Дык JNZ hz1000 то убери...
Ты же на start хочешь сразу прыгать? или сначала на hz1000 а потом на старт? Какова последовательность прыжков должна быть?
I'm learning to live...
|
23.09.2015, 14:59 | #10 | |
Регистрация: 13.05.2015
Сообщений: 8
|
Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Прерывания | kolyan147 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 13.06.2012 23:55 |
Прерывания и ввод-вывод на ассемблере | Give_me_a_chanse | Помощь студентам | 0 | 27.10.2009 16:28 |
прерывания | sergei64_89 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 22.04.2008 13:37 |