Отговори на тема  [ 21 мнения ]  Отиди на страница Предишна  1, 2
Проблеми със състоянието на PORTD при PIC16F874A 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пон Яну 16, 2006 5:20 pm
Мнения: 122
Местоположение: гр. Горна Оряховица
Мнение 
Момчета,ползвах други начин за промяна състоянието на битовете на порта и всичко се оправи.Явно това е наистина проблем на тъпите инструкции за работа с отделен бит от порта.Истината се оказа друга.Трябва да се ползват други инструкции с логическо умножение,а С-то ги генерира когато се напише така. PORTD&=(1<<2);,а не така
PORTD.F2=1; или PORTD&=~(1<<2); а не PORTD.F2=0;Благодаря ви за мненията,които доста ми помогнаха да се справя с проблема.


Пет Юни 02, 2006 8:29 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
Аз не ти разбрах това изречение

"Трябва да се ползват други инструкции с логическо умножение,а С-то ги генерира когато се напише така. PORTD&=(1<<2);,а не така PORTD.F2=1; или PORTD&=~(1<<2); а не PORTD.F2=0;"

Последно по кой метод указваш състоянието на крак от PORTD ?

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Пет Юни 02, 2006 12:57 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пон Яну 16, 2006 5:20 pm
Мнения: 122
Местоположение: гр. Горна Оряховица
Мнение 
Искам да кажа ,че правилното е да се пише така PORTD&=~(1<<2); Защото порта ще се умножи с 1111 1011 и бит 2 ще стане 0, вместо да напиша PORTD.F2=0;,което ще генерира
bcf PORTD,2.


Пет Юни 02, 2006 3:12 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
А защо не направо
#define bcf_portd.2 PORTD&=0x11111011
#define bsf_portd.2 PORTD|=0x00000100

За чий ти е това превъртане и тази инверсия?;) Не че не става и така, ама не е много пригледно. То не знам в миктоС дефине-то как е, той "малко" странен един такъв :)


Пет Юни 02, 2006 3:57 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пон Яну 16, 2006 5:20 pm
Мнения: 122
Местоположение: гр. Горна Оряховица
Мнение 
Съгласен съм с идеята,но точно това му е кофтито ,на това Mikro C ,че не може да се правят такива работи.Аз даже им писах за това и то 2 пъти,но те се правят на ударени.(Исках да дефинирам бит от порт да се казва някак си с име ,но не иска да го възприема)Това define e много ограничено и не може да се сравнява със същото на други С компилатори.Единственото, харесвам е, че има доста библиотеки .


Пет Юни 02, 2006 6:32 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Окт 08, 2005 7:10 pm
Мнения: 19
Местоположение: Стара Загора (София)
Мнение 
Цитат:
When enabling peripheral functions, care should be
taken in defining TRIS bits for each PORTD pin. Some
peripherals override the TRIS bit to make a pin an output,
while other peripherals override the TRIS bit to
make a pin an input. Since the TRIS bit override is in
effect while the peripheral is enabled, read-modifywrite
instructions (BSF, BCF, XORWF) with TRISD as
destination, should be avoided.
The user should refer
to the corresponding peripheral section for the correct
TRIS bit settings.


Ето какво пише в datasheet-a.


Съб Юни 10, 2006 6:02 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 21 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни