ассемблера для передачи данных в памяти ПИК

C

ceibawx

Guest
Кто может помочь мне проверить?
Я хранить данные в ПИК, но вывод не является правильным.TransData:
MOVLW 0xBF
MOVWF FSR; в ОЗУ
MOVLW 0x08
MOVWF ChannelCounter; ChannelCounter = 4 * 2

GoOnTransData:
BSF STATUS, 5
MOVF INDF, W
BCF STATUS, 5
MOVWF TXREG; перемещения данных в регистре передачи
BSF STATUS, 5
INCF FSR, 1; INDF адрес числа следующего движется
DECFSZ ChannelCounter, 1; ChannelCounter-1
Гото GoOnTransData; CC! = 0.
Перейти переработки; CC = 0.tx отделка, начало нового RX.

 
Я думаю, ваша проблема в том, что вы перезаписи TXREG.Вам необходимо проверить флаг TXIF чтобы увидеть, когда TXREG пуст муравей затем загрузить новую байта.
Ниже приведены возможные исправления.Я полагаю, настройка UART было сделано правильно, то есть бита TXEN было множество.Это будет набор TXIF.Убедитесь, что вы используете BSF установить TXEN, а не записывать в реестр.Можно добавить, что обучение перед GoOnTransData, если это не было сделано раньше.

Кстати, поскольку Вы используете FSR, Вам не нужно устанавливать и снимать RP0 бит; FSR является возможность доступа к данным в правильное банки 0 и 1 с ПИВТ = 0, независимо от состояния RP0, 1 .

Код:TransData:

MOVLW 0xBF

MOVWF FSR; в ОЗУ

MOVLW 0x08

MOVWF ChannelCounter; ChannelCounter = 4 * 2BSF STATUS, RP0; Банк 1

BSF TXSTA, TXEN; позволить XMIT

BCF STATUS, RP0; Банк снова 0GoOnTransData:

BTFSS PIR1, TXIF; проверить, если мы сможем отправить новый байт

Перейти GoOnTransDataMOVF INDF, W; получить байт

MOVWF TXREG; перемещения данных в регистре передачи

INCF FSR, 1; INDF адрес числа следующего движется

DECFSZ ChannelCounter, 1; ChannelCounter-1

Перейти GoOnTransData; CC! = 0.

Перейти переработки; CC = 0.tx отделка, начало нового RX.
 
Спасибо за Ваш ответ.
Мой вопрос, что же это значит?

когда TXIF = 1, буфер пуст, она будет ---------------------
MOVF INDF, W; получить байт
MOVWF TXREG; перемещения данных в регистре передачи
когда TXIF = 0, буфер заполнен, он будет ------------------------
GoOnTransData:
BTFSS PIR1, TXIF; проверить, если мы сможем отправить новый байт
Перейти GoOnTransData.

Можете ли вы объяснить более подробно о передавать буфер?если он еще полон, мы должны ждать его, пока он пуст?

 
Да, это означает, что буфер передачи пуст, и вы можете писать новые байт к нему.Если вы сделаете это раньше, чем пустым, то ваши записи будут игнорироваться, и вы потеряете символов.

Настройка TXEN установить TXIF, alowing код для запуска первого символа вы посылаете.Затем, вам придется ждать для передачи предыдущего характер полной.Как только вы напишите TXREG, TXIF будет очищена, поэтому, если вы отметите эту разрядные вы не сможете записать новый байт TXREG пока он пуст.

За дополнительной информацией, читать вложения
Извините, но Вы должны Войти для просмотра этой привязанности

 
Спасибо большое.
И я испытал, и ваш код является полезным, и я получил ожидаемые данные.

Вы мощные.
Добрый день.Xing

 

Welcome to EDABoard.com

Sponsor

Back
Top