ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
477402 Топик полностью
Vladimir Ljaschko (30.12.2013 16:10, просмотров: 387) ответил fk0 на Да, трэш угар и содомия. Иногда абстракции через край, поэтому я имею такое мнение, что иногда и не грех в исходники прямо вписать чуть ли не адрес регистра, ну и уж номер бита так точно. Только чем поможет собственно битовое поле? Формально
ни фига, не согласен. Использую X-макросы для абстракций работы с портами и в общем то доволен. Но все покрыть действительно сложно.  // name port bit OUTPUT ( PulseWdt , P1 , 0x01u ) OUTPUT ( Backlight , P1 , 0x02u ) OUTPUT ( EmptyError , P1 , 0x04u ) INPUT ( EmptyErrorIn , P1 , 0x04u ) OUTPUT ( IrdaTx , P1 , 0x08u ) INPUT ( KeyStIn , ~P1 , 0x10u ) INPUT ( KeyDnIn , ~P1 , 0x20u ) INPUT ( KeyFnIn , ~P1 , 0x40u ) INPUT ( KeyUpIn , ~P1 , 0x80u ) INPUT ( KbdIn , ~P1 , 0xf0u ) INPUT ( FnFreeIn , P1 , 0x40u ) // port direction start value selection PORT ( P1 , mPulseWdt | mBacklight | mEmptyError | mIrdaTx , 0 , mIrdaTx ) PORT ( P2 , mScl|mOtherError|mP2_3|mPumpB|mP2_5|mPumpA , 0 , 0 ) PORT ( P3 , mP3_0|mP3_1|mIrdaSc|mP3_3|mTxD0|mTxD1 , mTxD0|mTxD1 , mTxD0|mRxD0|mTxD1|mRxD1 ) PORT ( P4 , mValve|mAc|mAc2|mSound| mP46|mErrorLed , 0 , mAc |mAc2 ) PORT ( P5 , 0xff , 0 , 0 ) PORT ( P6 , 0 , 0 , mA0Adc|mInputAdc|mCanAdc|mFlowAdc|mOutputAdc|mLeakageAdc|mPowerAdc|mTemperatureAdc ) //PORT ( P1 , mPulseWdt | mBacklight | mEmptyError | mIrdaTx , 0 , mIrdaTx ) //PORT ( P2 , mScl | mOtherError | mCloseCC | mPumpB | mCloseWC | mPumpA , 0 , 0 ) //PORT ( P3 , mCloseUp | mIrdaSc | mTxD0 | mTxD1 , mTxD0 | mTxD1 , mTxD0 | mRxD0In | mTxD1 | mRxD1In ) //PORT ( P4 , mCloseDn | mValve | mAc | mSound | mChemLed | mWaterLed , 0 , mAc ) //PORT ( P5 , 0xff , 0 , 0 ) //PORT ( P6 , 0 , 0 , mOutputAdc|mInputAdc|mCanAdc|mFlowAdc|mLeakageAdc|mPowerAdc ) FUNCTION ( IrdaTxFunction , P1SEL, mIrdaTx ) FUNCTION ( IrdaRxInterrupt , P2IE, mIrdaRxIn ) FUNCTION ( ValvePWM , P4SEL, mValve ) FUNCTION ( SdaLow , P2DIR, mSda ) FUNCTION ( SclLow , P2DIR, mScl )