реклама на сайте
подробности

 
 
> PIC16F690 и UART
Grigorij
сообщение Mar 25 2008, 12:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038



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

Возникла следующая проблема. При передачи данных по UART на выходе TX (PORTB.7) наблюдаю все время высокий уровень вне зависимости от передаваемых данных. Уже второй день не удается понять причину такого поведения МК.

Проверка схемы результатов не дала. Замыканий обнаружено не было. Выход UART идет только на внешний разъем. Дело скорее всего в программе.

Вот часть кода, которая отвечает за UART:
Код
;Focs = 4 МГц
#define br_1200    D'207'
#define br_2400    D'103'
#define br_9600    D'25'
#define br_10417    D'23'
#define br_19200    D'12'

;настройка UART
INIT_UART MACRO _br

    BANKSEL    PIE1
    BCF    PIE1,TXIE    ;запрет прерывания от передатчика
                            
    BANKSEL    SPBRGH    ;установка скорости обмена согласно _br
    MOVLW    HIGH(_br)    ; --//--
    MOVWF    SPBRGH    ; --//--

    BANKSEL SPBRG    ; --//--
    MOVLW    LOW(_br)    ; --//--
    MOVWF    SPBRG    ; --//--
    
    BANKSEL    BAUDCTL
    CLRF    BAUDCTL

    BANKSEL    TXSTA
    CLRF    TXSTA;очистка регистра управления и статуса передатчика
    MOVLW    0x04;асинхронный режим, 8 бит, высокоскоростной режим

    BANKSEL    RCSTA
    CLRF    RCSTA    ;очистка регистра управления и статуса приемника
    BSF    RCSTA,SPEN;разрешение работы последовательного порта        
ENDM

;отправка байта по UART
SEND_BYTE MACRO val

    BANKSEL    TXREG
    MOVLW    val    ;помещение данных в WREG
    MOVFW    TXREG    ;помещение данных в буфер передатчика
    
    BANKSEL    TXSTA
    BSF    TXSTA,TXEN;включение передатчика

    BANKSEL    TXSTA
    BTFSS    TXSTA,TRMT;проверка бита TRMT
    GOTO    $-1    ;ожидание установки TRMT в 1
    
    BANKSEL    TXSTA
    BCF    TXSTA,TXEN;выключение передатчика
    
ENDM

;настройка портов ввода/вывода
INIT_PORT

;все выходы используются как цифровые
    BANKSEL    ANSEL
    CLRF    ANSEL
    CLRF    ANSELH
    
;настройка Port B
;RB5 (In)      - RxD (конфигурируется автоматически)
;RB7 (Out)      - TxD (конфигурируется автоматически)
    BANKSEL    PORTB
    CLRF    PORTB
    BANKSEL    TRISB
    MOVLW    0x70
    MOVWF    TRISB
    
RETURN

;настройка периферии микроконтроллера
INIT

;запрет всех прерываний
    BANKSEL    INTCON
    CLRF    INTCON

;настройка генератора (внешний кварц на 4 МГц)
    BANKSEL    OSCCON
    MOVLW    0x08
    MOVWF    OSCCON

;настройка периферии
    CALL     INIT_PORT
    INIT_UART     br_2400
    
RETURN

;основная программа
MAIN:
    
    CALL    INIT

    MAIN_CYCLE:    
        SEND_BYTE    0xAA
    GOTO MAIN_CYCLE
    
END


Заранее спасибо за любую помощь.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016