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

 
 
> Работа с портами под XC8
Energy_for_life
сообщение Dec 1 2013, 12:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-08-11
Пользователь №: 66 656



Обнаружил, что комманда работы с пином 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 срабатывает соответствующий вывод
Не могу понят как работать с отдельным выводом, а не со всем портом?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
volodya
сообщение Dec 2 2013, 06:24
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344



Битовая операция состоит из чтения PORTx, изменения бита и записи , в данном случае работы с портом, в LATx. Для управления портом PIC18 рекомендуют LATx регистр соответствующего порта. Поскольку операции с регистром PORTx связаны с чтением состояния пинов, которое из-за инерционности , конвейера и т.д. может не успевать адекватно отображаться. Представьте возможное поле для ошибок. Кроме того часто возникают жалобы на PROTEUS.
Рекомендую заменить обращения на LATxbits.LATxy битовые и LATx регистровые.


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post



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

 


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


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