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

 
 
> Работа с битами регистров
rekcuf
сообщение Jul 28 2009, 17:43
Сообщение #1


Участник
*

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



Впервые делаю проект на атмеге8, компилятор IAR.

Что надо сделать, чтобы работать с битами похожим образом:

Код
PORTB.PB1 = 1;
PORTB_PB1 = 0;
PC1 = 0;

if(PORTA.PA0)
...

?

Сейчас работает только один способ:
Код
PORTB |= (1 << PB2);

if((PORTB & (1 << PB2)))
...

Но после компиляторов для микрочипа PICC18 и MCC18 такой способ кажется дикостью и жутко неудобен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rekcuf
сообщение Jul 29 2009, 10:16
Сообщение #2


Участник
*

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



otrog, Rst7

Посмотрел заголовочник iom8.h:

Код
#ifdef ENABLE_BIT_DEFINITIONS

/* Bit definitions for use with the IAR Assembler  
   The Register Bit names are represented by their bit number (0-7).
*/

/* General Interrupt Control register */
#define    INT1     7
#define    INT0     6

#define    IVSEL    1
#define    IVCE     0
...

т.е. ENABLE_BIT_DEFINITIONS делает совсем другое.

я так понял, это заголовочник кривой, т.к. в iousb1287.h все нормально прописано:
Код
SFR_B_N(0xF9, OTGTCON, 1, PAGE1, PAGE0, Dummy4, Dummy3, Dummy2, VALUE1, VALUE0)
SFR_B_N(0xF8, UPINT, PINT7, PINT6, PINT5, PINT4, PINT3, PINT2, PINT1, PINT0)
...


а в iom8.h прописаны только голые регистры:

Код
SFR_B(TWBR,   0x00) /* TWI Bit rate Register */
SFR_B(TWSR,   0X01) /* TWI status Register */
SFR_B(TWAR,   0x02) /* TWI Address Register */
...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 16:22
Рейтинг@Mail.ru


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