在为 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;
}