АвторСообщение
постоянный участник




Пост N: 50
Зарегистрирован: 10.01.11
Откуда: Казахстан, Актобе
Рейтинг: 0
ссылка на сообщение  Отправлено: 24.02.15 16:49. Заголовок: прерывание от приемника USART


Здрасьте всем!

у меня проблема- если в ПП прерывания от приемника читать данные из ЕЕРRОМ и последовательно отправлять их комп тогда устройство перестает работать вообще, подскажите в чем проблема чего я не догоняю?

    org        0 
goto Start

;=======================================================================================================

org 4 ; Точка входа в прерывание.
movwf pr_w ; Сохранение содержимого
movf Status,W ; регистров W и Status на
movwf pr_stat ; момент ухода в прерывание.

bcf Status,RP0 ; Переход в 0-й банк.
movf RCREG,W ; Копирование байта из регистра данных приемника
movwf DateL4 ; USART (через W) в регистр временного хранения.


call Trans


movf pr_stat,W ; Восстанавление
movwf Status ; содержимого
swapf pr_w,F ; регистров
swapf pr_w,W ; W и Status.
retfie ; Выход из ПП прерывания.

;=======================================================================================================
;*********************************************************************************************
; Группа подпрограмм табличных вычисляемых переходов, определяющих как сами символы, так и
; последовательность их вывода на индикацию.
;=============================================================================================

TEXT_1 addwf PC,F ; Приращение PC на величину содержимого W.
dt "SERIC-1 " ; Запись в W адресного запроса к содержимому
; одной из ячеек знакогенератора.
;********************************************************************************************

TEXT_2 addwf PC,F ; Приращение PC на величину содержимого W.
dt "SERIC-2 " ; Запись в W адресного запроса к содержимому
; одной из ячеек знакогенератора.
;********************************************************************************************

TEXT_3 addwf PC,F ; Приращение PC на величину содержимого W.
dt "SERIC-3 " ; Запись в W адресного запроса к содержимому
; одной из ячеек знакогенератора.
;********************************************************************************************

TEXT_4 addwf PC,F ; Приращение PC на величину содержимого W.
dt "SERIC-4 " ; Запись в W адресного запроса к содержимому
; одной из ячеек знакогенератора.
;********************************************************************************************

TEXT_5 addwf PC,F ; Приращение PC на величину содержимого W.
dt "No Sensor " ; Запись в W адресного запроса к содержимому
; одной из ячеек знакогенератора.
;********************************************************************************************
; "Рабочая" инициализация ЖКИ модуля.
;============================================================================================

LCD_INIT movlw b'00101000' ; Установка: 4-разрядный интерфейс, 2 строки, 5х7 точек.
call ENTER_BF ; "Плавающая" задержка со стробом под команду 00101000.
;----> Возврат по стеку из ПП ENTER_BF.
LCD_INIT_1 movlw b'00101000' ; Установка: 4-разрядный интерфейс, 2 строки, 5х7 точек.
call ENTER_BF ; "Плавающая" задержка со стробом под команду 00101000.
;----> Возврат по стеку из ПП ENTER_BF.

movlw b'00001100' ; Установка: дисплей включен, видимое отображение
; курсора выключено.
call ENTER_BF ; "Плавающая" задержка со стробом под команду 00001100.
;----> Возврат по стеку из ПП ENTER_BF.

movlw b'00000001' ; Установка: очистка дисплея со сбросом данных,
; установка курсора в начало 1-й строки.
call ENTER_BF ; "Плавающая" задержка со стробом под команду 00000001.
;----> Возврат по стеку из ПП ENTER_BF.
clrwdt
return

;=============================================================================================
ENTER_BF bcf IntCon,GIE
movwf date ; Переправка старшего п/байта регистра W на линии
movwf PortD ; RB4...7 (состояния линий RB0...3 не важны).
;------------------------------------------
; Запуск в работу старшего п/байта (строб).
;------------------------------------------
nop ; Задержка в 1 м.ц.
bsf PortE,E ; Установка на линии Е "1".
nop ; Задержка в 1 м.ц.
bcf PortE,E ; Установка на линии Е "0".
;------------------------------------------
swapf date,W ; Смена п/байтов с сохранением результата операции в W.
movwf PortD ; Переправка младшего п/байта регистра W на линии
; RB4...7 (состояния линий RB0...3 не важны).
;------------------------------------------
; Запуск в работу младшего п/байта (строб).
;------------------------------------------
nop ; Задержка в 1 м.ц.
bsf PortE,E ; Установка на линии Е "1".
nop ; Задержка в 1 м.ц.
bcf PortE,E ; Установка на линии Е "0".
;-------------------------------------------------
; Проверка состояния флага занятости BF.
;-------------------------------------------------
; Подготовка к проверке.
;------------------------
bsf Status,RP0 ; Переход в 1-й банк.
movlw b'11110000' ; Запись в W "11110000"
movwf TrisD ; RB4...7 работают на вход, а RB0...3 работают на выход.
bcf Status,RP0 ; Переход в 0-й банк.

bcf PortE,RS ; Установка на линии RS "0" (режим команд).
bsf PortE,RW ; Линия RW в "1" (режим чтения данных).
nop ; Задержка в 1 м.ц.
bsf PortE,E ; Установка на лини Е "1".
POVTOR clrwdt ; Задержка в 1 м.ц.
;-----------------------
; Сама проверка.
;-----------------------
btfsc PortD,BF ; Проверка состояния флага занятости BF.
goto POVTOR ; Если BF=1, то продолжение задержки до тех пор, пока
; BF не установится в "0" (программа исполняется далее).
;-----------------------
; Завершение процедуры.
;-----------------------
clrf PortE ; Сброс в "0" всех защелок порта А (RW=0, RS=0, E=0).
bsf Status,RP0 ; Переход в 1-й банк.
clrf TrisD ; Все выводы порта В работают на выход.
bcf Status,RP0 ; Переход в 0-й банк.
bsf IntCon,GIE
return ; Возврат по стеку.

;*********************************************************************************************
; Вывод результатов измерений и сопровождающей их надписи "СЕРИК-1 " на индикацию.
;*********************************************************************************************
;============================================================================================
; ПП передачи байта данных (USART).
;============================================================================================
RS232 btfss PIR1,TXIF ; Предыдущий байт данных передан или нет?
goto $-1 ; Если еще не передан, то ожидаем
movwf TXREG ; Если передан, то загрузка следующего байта
; данных в буфер передатчика.
return ; Возврат.

;=============================================================================================
; Запись данных в EEPROM
;--------------------------------------------------------------------------------------------
EEPR
bsf Status,RP1
bsf Status,RP0
btfsc EECon1,1
goto $-1
bcf Status,RP0
bcf Status,RP1
movf LED4,W
bsf Status,RP1
movwf EEAdr
bcf Status,RP1
movf DateH3,W
bsf Status,RP1
movwf EEData
bsf Status,RP0
bcf EECon1,7
bsf EECon1,2
bcf IntCon,GIE
movlw 0x55
movwf EECon2
movlw 0xAA
movwf EECon2
bsf EECon1,1
bsf IntCon,GIE
bcf EECon1,2
bcf Status,RP0 ; Переход в нулевой банк.
bcf Status,RP1
incf LED4,f
return


Trans movlw .22
movwf LED4
Transfer clrwdt
movf LED4,0
sublw d'16'
bsf Status,RP1
bcf Status,RP0

movwf EEAdr
bsf Status,RP0
bcf EECon1,7
bsf EECon1,0
bcf Status,RP0
movf EEData,0
bcf Status,RP1



call RS232
DALE
decfsz LED4,f
goto Transfer
return




filaret111 Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]


moderator




Пост N: 278
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 3
ссылка на сообщение  Отправлено: 06.03.15 12:29. Заголовок: Человек, который не ..


Человек, который не в состоянии выразить свою мысль, не имеет её вообще.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 178
Зарегистрирован: 01.03.11
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.03.15 13:48. Заголовок: И не будет работать...


И не будет работать. Слишком у вас всё усечённо получается. Приёмник не отключаете, проверку на переполнение не делаете, контрольной суммы не вычисляете - а может это помеха по проводам гуляет. Много времени находитесь в прерывании. Можно ещё перечислять.

P.S. Посмотрел когда задан вопрос. Думал сегодня. Оказалось 24 февраля.


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия