|
|
unsigned char __flash cMyArray[NUM_OF_EL]; //размещение масссива во flashРаботать с битами портов можно двумя способами:
Вариант первый:
PORTC |= (1<//установить бит
PORTC &= ~(1<//сбросить бит //Этот вариант можно упросить макросами:
#define SETB(node) SETOUT(node)
#define SETBIT(port, pin) PORT##port |= (1<#define CLRB(node) CLROUT(node)
#define CLRBIT(port, pin) PORT##port &= ~(1<//И описать порты как:
#define MY_LED A, 6 //PORTA.6
#define MY_OUT C, 2 //PORTC.2//То в тексте можно уже писать:
SETB(MY_LED); //Устаовить бит MY_LED(PORTA.6) в 1
SETBIT(D, 3); //Установить бит PORTD.3 в 1
CLRB(MY_OUT); //Сбросить бит MY_OUT(PORTC.2) в 0
CLRBIT(B, 7); //Сбросить бит PORTB.7 в 0
Вариант второй:
Если подключен, то можно делать так:
PORTA_Bit5 = 1; //Установить бит в 1
PORTB_Bit0 = 0; //Сбросить бит в 0
PORTC_Bit4 ^= 1; //Инвертировать битC макросами:
#define My_Port PORTD_Bit6My_Port = 1; //Установить бит
//Далее по образцу ;о)Работать с битами переменных можно как с портами в варианте №1. Либо объявив:
union{
unsigned char cMyChar;
struct{
unsigned char bMyBit0 :1,
bMyBit1 :1,
bMyBit2 :1,
bMyBit3 :1,
bMyBit4 :1,
bMyBit5 :1,
bMyBit6 :1,
bMyBit7 :1;
};
};
//Работа будет выглядеть:
cMyChar = 0x5A;
bMyBit4 = 0;
bMyBit2 ^= 1; //И т.д.Либо "более правильно":
union{
unsigned char cByte;
struct{
unsigned char Bit0 :1,
Bit1 :1,
Bit2 :1,
Bit3 :1,
Bit4 :1,
Bit5 :1,
Bit6 :1,
Bit7 :1;
}Bits;
}MyByte;//Тогда работа с ними будет такой:
MyByte.cByte = 0x5A;
MyByte.Bits.Bit4 = 0;
MyByte.Bits.Bit2 ^= 1; //И т.д.Удачи,
ShiphT.
Ответы
E-mail: info@telesys.ru