MCU の低レベルのコードを書くとき、私はいつもこのジレンマに遭遇するようです。コードをできるだけ再利用可能にするために、ピン定義をどこで宣言すればよいかわかりません。
この場合、8051をMCP4922 12 ビット シリアル DACに接続するドライバを作成しています。DAC のCS (チップ セレクト) とLDAC (データ ラッチ)のピン定義をどこでどのように宣言すればよいかわかりません。現時点では、ドライバーのヘッダー ファイルで宣言されています。
私は最善のアプローチを見つけようとして多くの調査を行いましたが、実際には何も見つかりませんでした.
私は基本的にベストプラクティスを知りたいです...読む価値のある本やオンライン情報、例などがあれば、どんな推奨事項も歓迎します。
ドライバーのほんの一部なので、アイデアが得られます
/**
@brief This function is used to write a 16bit data word to DAC B -12 data bit plus 4 configuration bits
@param dac_data A 12bit word
@param ip_buf_unbuf_select Input Buffered/unbuffered select bit. Buffered = 1; Unbuffered = 0
@param gain_select Output Gain Selection bit. 1 = 1x (VOUT = VREF * D/4096). 0 =2x (VOUT = 2 * VREF * D/4096)
*/
void MCP4922_DAC_B_TX_word(unsigned short int dac_data, bit ip_buf_unbuf_select, bit gain_select)
{
unsigned char low_byte=0, high_byte=0;
CS = 0; /**Select the chip*/
high_byte |= ((0x01 << 7) | (0x01 << 4)); /**Set bit to select DAC A and Set SHDN bit high for DAC A active operation*/
if(ip_buf_unbuf_select) high_byte |= (0x01 << 6);
if(gain_select) high_byte |= (0x01 << 5);
high_byte |= ((dac_data >> 8) & 0x0F);
low_byte |= dac_data;
SPI_master_byte(high_byte);
SPI_master_byte(low_byte);
CS = 1;
LDAC = 0; /**Latch the Data*/
LDAC = 1;
}