Свежие обсуждения
Микроконтроллеры

PIC16F84A. Не включить на выход RB4

Всем зрасте
Подскажите пожалуйста! Имеется PIC16F84A. Не включить на выход RB4.
На всех выходах светодиодики. Программа прост их включает. Выход не паленый, 500 ом стоят, светодиод нормальный. Все светятся кроме того что на RB4.
Что делаю не так?

;*******************************************************************************
; PIC16F84A Кварц 4 мГц.
;===============================================================================
LIST p=16F84A ; Установка типа микроконтроллера.
__CONFIG 03FF1H ; Бит защиты выключен, WDT выключен,
; стандартный XT - генератор.
;===============================================================================
; Определение положения регистров специального назначения.
;===============================================================================
Status equ 03h ; выбор банка/Z/DC/C.
TrisA equ 05h ; выбор направления работы выводов порта A.
PortA equ 05h ; управление защелками порта A.
TrisB equ 06h ; выбор направления работы выводов порта В.
PortB equ 06h ; управление защелками порта В.

;===============================================================================================
; Определение места размещения результатов операций.
;===============================================================================================
F equ 1 ; Результат направить в регистр.
W equ 0 ; Результат направить в аккумулятор.
;===============================================================================================
;===============================================================================================

org 0 ; Начать выполнение программы с адреса 0 PC.
goto Start ; Переход в ПП Start.

;*******************************************************************************
; Текст рабочей части программы.
;*******************************************************************************
; Установка направления работы RB0 - на выход, RA0 - вход
;-------------------------------------------------------------------------------
Start bsf Status,5 ; Перейти в банк 1 (уст. в 1 5-й бит регистра Status).
movlw .0 ; Записать константу 0 в аккумулятор (W).
movwf TrisB ; Скопировать 0 из W в регистр TrisB.

movlw .0 ; Записать константу 0 в аккумулятор (W).
movwf TrisA ; Скопировать 0 из W в регистр TrisA.
bcf Status,5 ; Перейти в банк A (уст. в 1 5-й бит регистра Status).

movlw .255
Again movwf PortA ;
movwf PortB ; записать байт

goto Again ; Переход на новый полный цикл программы.
;*******************************************************************************
end ; Директива конца программы (всегда
; последняя снизу).

 

Может RA4?
Светодиоды подключены между выходом и общим проводом, а выход RA4 с открытым коллектором (стоком). Надо светодиоды включить между выходом и +питания, тогда проблемы не будет.

 

Да, все верно При записи 0 в бит этой ноги на ней появляется не +, а -. Т.е. мало того что нога минусовая, она еще и инверсная по сигналу. Спасибо!

 

mrengineer:
она еще и инверсная по сигналу
Никакая она не инверсная, а - самая обычная, просто имеет на выходе "открытый сток". Т.е., записали 0 - подключилась она к общему проводу ("земле"), записали 1 - разомкнулась вообще (грубо говоря, "висит в воздухе"). Это всё, естественно про RA4.

 

mrengineer: Рекомендую глянуть "даташит" на МК на стр. №15(англ. верс.), есть схема порта RA4, никаой там инверсии нет.

 

Ну да, в этом инверсность и есть. Другие -то ноги замкнуть - 1, разомкнуть - 0!

 

А не надо подходить с позиции замкнуть/разомкнуть, это же не реле. Лучше рассматривать как высокий уровень на выходе (1) или низкий (0). Тогда путаницы меньше будет. Если светодиоды подключены между +питания и выходом, то включаться они будут при низком уровне на выходе.