Прерывание на ассемблере - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Прерывание на ассемблере (и скорость выполнения процедуры)
Прерывание на ассемблере
lena_1989 Дата: Ср, 09.01.2013, 09:46  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 3
Репутация: 0   ±
Замечания:   ±
На сайте с 09.01.2013

Статус: Offline

Уважаемые специалисты, я только учусь писать на PBP и мне просто необходима ваша помощь!
Моя программка, написанная для перекодировки символов ASCII не успевает выполнять прерывание
в момент обработки команды SERIN2. Логично предположить, что прерывание в данном случае лучше
написать на ассемблере, но я с ним, к сожалению, совершенно не знакома sad
Пожалуйста, помогите перевести размещенный ниже пример в формат ассемблера!

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
ЯНДЕКС Дата: 09.01.2013
mikhail09p Дата: Ср, 09.01.2013, 12:49  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 495
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Уже писали, что на ПикБейсике прерывания могут работать некорректно. Лучше на Протоне...
А нельзя выключить прерывания во время работы SERIN2 ?
lena_1989 Дата: Ср, 09.01.2013, 19:37  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 3
Репутация: 0   ±
Замечания:   ±
На сайте с 09.01.2013

Статус: Offline

Нет, к сожалению. Событие, описанное в прерывании может происходить в любое время, в том числе и в момент обработки SERIN2

Добавлено (09.01.2013, 19:37)
---------------------------------------------
Мужчины, на этом форуме никто из вас не может десять строчек на ассемблере написать happy ?

shaman Дата: Ср, 09.01.2013, 20:23  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 176
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Добрый вечер,вот самоучитель по АСМ там на 134 странице прерывания.

Добавлено (09.01.2013, 20:23)
---------------------------------------------
Всю книгу не получилось скинуть, или скачайте "Самоучитель по программированию Корабельников Е.А "

Прикрепления: 7650687.odt(20Kb)

Сообщение отредактировал shaman - Ср, 09.01.2013, 20:18
Andriy76 Дата: Ср, 09.01.2013, 21:29  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 239
Репутация: 10   ±
Замечания:   ±
На сайте с 06.04.2010

Статус: Offline

Читал книгу Корабельникова , но честно так ничего не понял cry
Асамблерный листинг получите при компиляции .
Начинал с ПИК симулятор ИДЕ , а позже перешел на Протон . Сильно помогла кника от Терраруса . Хотя там описаны не все команды - но для начала хватит .
shaman Дата: Ср, 09.01.2013, 21:34  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 176
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Я тоже когда то пробывал изучить АСМ ,тоже не получилось ,нашел случайно этот сайт начал изучать PBP, а потом и Proton , чем очень доволен.
ivan_fd Дата: Ср, 09.01.2013, 22:49  |                                                                                                                Сообщение # 7
Группа: Модераторы
Ранг:  Специалист
Сообщений: 881
Репутация: 47   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 233
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Цитата (lena_1989)
Мужчины, на этом форуме никто из вас не может десять строчек на ассемблере написать ?


Можно было бы написать не один десяток строчек на ассемблере, если от Вашего вопроса не тянуло троллингом.
Логично предположить, что если бы Вы разобрались с командой SERIN2, то Вам не пришлось бы звать на помощь мужчин, могущих написать десять строчек на ассемблере.
lena_1989 Дата: Чт, 10.01.2013, 18:24  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Новенький
Сообщений: 3
Репутация: 0   ±
Замечания:   ±
На сайте с 09.01.2013

Статус: Offline

Спасибо, 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
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 233
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Цитата (lena_1989)
Я что-то неправильно понимаю?

А я знаю, что Вы понимаете?
Вообще, причем тут прерывания и ассемблер?

Цитата (lena_1989)
Моя программка, написанная для перекодировки символов ASCII не успевает выполнять прерывание в момент обработки команды SERIN2.

А кто Вашу программку так грубо прерывает?
Форум Picbasic.ru » Программирование МК » PicBasicPro » Прерывание на ассемблере (и скорость выполнения процедуры)
Страница 1 из 11
Поиск: