Перейти к содержанию
    

Микроконтроллер 1886ВЕ4У (аналог PIC17C756)

Здравствуйте!

 

Уважаемые коллеги, стоит задача по реализации USART на микроконтроллере 1886ВЕ4У (PIC17C756). Приобрели у Миландр программатор, отладочную плату с микросхемой 5559ИН4У (аналог МАХ232) и кварцевый генератор 48МГц, написали код (среда IDE for 1886) :

 

Include 1886VE4.INC

;********* Переменные ************************************

CBLOCK 0x20 ;Начальный адрес блока констант

Rbyte ;Принятый байт

ENDC ;

;******** Константы ***************************************

 

Baudrate equ 4Dh ; скорость 9600

;---------------------------------------------------------

BSR1 equ 00Fh ; Регистр выбора банка

PORTA equ 112h ; Порт А

PORTD equ 114h ; Порт D

 

;-------Регистры передатчика и приемника----------------------

TXREG1 equ 516h ; буфер передатчика

RCREG1 equ 514h ; буфер приемника

PIR1 equ 214h ; регистр флагов передатчика

PIE1 equ 215h ; регистр разрешения/запрета прерываний передатчика (1-й банк)

TXSTA1 equ 515h ; конфигурация передатчика (1-й банк)

RCSTA1 equ 513h ; конфигурация приемника

SPBRG1 equ 517h ; настройка скорости

;********************************************************

 

BSR1 EQU 01FH ;

PCLATH1 EQU 020H ;

ALUSTA1 EQU 021H ;

WREG1 EQU 022H ;

 

WORK0 EQU 030H ; рабочий регистр 0

WORK1 EQU 031H ; рабочий регистр 1

WORK2 EQU 032H ; рабочий регистр 2

WORK3 EQU 033H ; рабочий регистр 3

 

 

org 0000H

 

Start BSF GLINTD ; (CPUSTA,GLINTD) запрет всех прерываний

CLRF BSR1,F ; установка SFR и GPR Bank 0

 

 

;******** Настройка портов ******************************************************************************

 

Start MOVLB 01h ; выбор Банк1

CLRF PORTA ; инициализация порта А

 

 

;******** Настройка приемо-передатчика ******************************************************************

 

MOVLB 05h ; выбор Банк1

MOVLW Baudrate ; загрузить устанавливаемую скорость в аккумулятор

MOVWF SPBRG1 ; установить скорость

MOVLW 20h ; 00100000 8-разрядные данные, включить передачу,

MOVWF TXSTA1 ; высокоскоростной асинхронный режим

 

 

MOVLB 02H ; переход в банк2

 

BCF PIE1, 1 ; запрещены прерывания от TXIE=0

BCF PIE1, 0 ; запрещены прерывания от RСIE=0

 

MOVLB 05H ; переход в банк5

 

MOVLW 80h ; 10000000 8-разрядные данные, выключить прием,

MOVWF RCSTA1 ; включить модуль USART

 

;---------- Прием -------------------------

BSF RCSTA1,4 ; непрерывный прием разрешен

Prog BTFSS PIR1,1 ; если 1-й бит регистра PIR1 = 1, то в буфер пришли данные, пропускаем следующую команду

GOTO Prog

 

MOVLW RCREG10 ; читаем буфер приемника в аккумулятор

MOVWF Rbyte ; помещаем это значение в принятый байт

BCF RCSTA1,4 ; выключаем приемник

INCF Rbyte,1 ; прибавляем к принятому байту 1

 

peredacha BTFSS TXSTA1,1 ; если 1-й бит регистра TXSTA = 1, то передача завершена (TSR пуст)

GOTO peredacha

BSF RCSTA1,4 ; включаем приемник

GOTO Prog

 

BTFSS TXSTA1,1 ; если 1-й бит регистра TXSTA1=1,завершена

 

 

 

 

end

 

 

Программируется нормально, но USART не работает. Проблема в коде (проверили).

Может, кто-нибудь сталкивался с нечто подобным.

Любое предложение будет ценным, так как опыта большого нет.

Пожалуйста, не спрашивайте про тех.поддержку и форум Миландр...........

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...