Обнаружил, что комманда работы с пином PORTXbits.RXn под XC8 действует на весь порт, а не на отдельный вывод.
Для примера привел код работы с семисегментным индикаторов на 4-е цифры.
#include <xc.h>
#define _XTAL_FREQ 1000000
#pragma config WDT=OFF
#pragma config OSC=XT
#pragma config PWRT=ON
#pragma config BOREN=ON
void main(void)
{
TRISD = 0;
PORTD=0x00; // индикатор подключен к порту D
TRISB = 0;
PORTB = 0xFF; // аноды сигментов к порту B
while(1){
PORTBbits.RB0 = 0; //сбрасывает 1-й вывод в 0
__delay_ms(500);
PORTB = 0xFD; //сбрасывает 2-й вывод в 0
__delay_ms(500);
PORTB = 0xFB; //сбрасывает 3-й вывод в 0
__delay_ms(500);
PORTB = 0xF7;//сбрасывает 4-й вывод в 0
__delay_ms(500);
}
}
Ниже прикрепил работу в PROTEUS
При обращении к выводу 0 через PORTBbits.RB0 = 0 срабатывает весь порт
При обращении к выводу 0 через PORTB = 0xFD срабатывает соответствующий вывод
Не могу понят как работать с отдельным выводом, а не со всем портом?