Прерывание на ассемблере
|
|
lena_1989 |
Дата: Ср, 09.01.2013, 09:46 | Сообщение # 1 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Уважаемые специалисты, я только учусь писать на PBP и мне просто необходима ваша помощь! Моя программка, написанная для перекодировки символов ASCII не успевает выполнять прерывание в момент обработки команды SERIN2. Логично предположить, что прерывание в данном случае лучше написать на ассемблере, но я с ним, к сожалению, совершенно не знакома Пожалуйста, помогите перевести размещенный ниже пример в формат ассемблера!
DISABLE get_info: if enter_m = 0 then enter_s = 1 endif if enter_m = 1 then count = count + 1 menu_s = 1 endif
if count > 3 then count = 0 endif intcon.1 = 0
RESUME ENABLE
|
|
|
|
mikhail09p |
Дата: Ср, 09.01.2013, 12:49 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Уже писали, что на ПикБейсике прерывания могут работать некорректно. Лучше на Протоне... А нельзя выключить прерывания во время работы SERIN2 ?
|
|
|
|
lena_1989 |
Дата: Ср, 09.01.2013, 19:37 | Сообщение # 3 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Нет, к сожалению. Событие, описанное в прерывании может происходить в любое время, в том числе и в момент обработки SERIN2 Добавлено (09.01.2013, 19:37) --------------------------------------------- Мужчины, на этом форуме никто из вас не может десять строчек на ассемблере написать ?
|
|
|
|
shaman |
Дата: Ср, 09.01.2013, 20:23 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Добрый вечер,вот самоучитель по АСМ там на 134 странице прерывания. Добавлено (09.01.2013, 20:23) --------------------------------------------- Всю книгу не получилось скинуть, или скачайте "Самоучитель по программированию Корабельников Е.А "
Сообщение отредактировал
shaman - Ср, 09.01.2013, 20:18
|
|
|
|
Andriy76 |
Дата: Ср, 09.01.2013, 21:29 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
231
Замечания:
±
На сайте с 06.04.2010
Статус:
Offline
|
Читал книгу Корабельникова , но честно так ничего не понял Асамблерный листинг получите при компиляции . Начинал с ПИК симулятор ИДЕ , а позже перешел на Протон . Сильно помогла кника от Терраруса . Хотя там описаны не все команды - но для начала хватит .
|
|
|
|
shaman |
Дата: Ср, 09.01.2013, 21:34 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Я тоже когда то пробывал изучить АСМ ,тоже не получилось ,нашел случайно этот сайт начал изучать PBP, а потом и Proton , чем очень доволен.
|
|
|
|
ivan_fd |
Дата: Ср, 09.01.2013, 22:49 | Сообщение # 7 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Цитата (lena_1989) Мужчины, на этом форуме никто из вас не может десять строчек на ассемблере написать ?
А Вы сами не хотите попробовать????
Приблизительно так.
Код wsave var byte $20 system ssave var byte bank0 system psave var byte bank0 system
define INTHAND MYINT '************************************************** asm MYINT ; Сохранение на контекста movwf wsave swapf STATUS,W clrf STATUS movwf ssave movf PCLATH,W movwf psave ; Ваш код movf _enter_m,F btfss STATUS,2 goto lbl1 movlw 1 movwf _enter_s lbl1 movlw 1 subwf _enter_m,W btfss STATUS,2 goto lbl2 incf _coubt,F movlw 1 movwf _menu_s lbl2 movlw 4 subwf _count,W btfss STATUS,0 goto lbl3 movlw 0 movwf _count lbl3 BCF intcon,1
; Востановление на контекста movf psave,W movwf PCLATH swapf ssave,W movwf STATUS swapf wsave,F swapf wsave,W retfie endasm
|
|
|
|
holyuser |
Дата: Чт, 10.01.2013, 13:14 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Цитата (lena_1989) Мужчины, на этом форуме никто из вас не может десять строчек на ассемблере написать ?
Можно было бы написать не один десяток строчек на ассемблере, если от Вашего вопроса не тянуло троллингом. Логично предположить, что если бы Вы разобрались с командой SERIN2, то Вам не пришлось бы звать на помощь мужчин, могущих написать десять строчек на ассемблере.
|
|
|
|
lena_1989 |
Дата: Чт, 10.01.2013, 18:24 | Сообщение # 9 |
Группа:
Удаленные
Ранг:
Сообщений:
Статус:
|
Спасибо, ivan_fd! holyuser, "If the statement is a PAUSE or SERIN, it could be quite a while before the interrupt is acknowledged. The program must be designed with this latency in mind. If it is unacceptable and the interrupts must be handled more quickly, an assembly language interrupt routine must be used." Я что-то неправильно понимаю?
|
|
|
|
holyuser |
Дата: Чт, 10.01.2013, 19:39 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Цитата (lena_1989) Я что-то неправильно понимаю? А я знаю, что Вы понимаете? Вообще, причем тут прерывания и ассемблер?
Цитата (lena_1989) Моя программка, написанная для перекодировки символов ASCII не успевает выполнять прерывание в момент обработки команды SERIN2. А кто Вашу программку так грубо прерывает?
|
|
|
|