コピーしても文字化けしないように、 コメントを英語にしたプログラムです。
void DACwrite(unsigned char d) { /* Set internal reference voltage */ CS_DAC(1); CK(1); /* Initial state */ CS_DAC(0); DACwrite_byte(0xd0); DACwrite_byte(0x02); CS_DAC(1); /* Generate a voltage corresponding to parameter "d" */ CS_DAC(0); DACwrite_byte(0xc0 | (d >> 4)); DACwrite_byte(d << 4); CS_DAC(1); }
/* CK(d): Set SCLK for D/A, A/D as d (d=0 or 1) */ void CK(char d) {if (d == 1) IOE |= 0x01; else IOE &= ~0x01;} /* CS_DAC(d): Set /CS for D/A as d (d=0 or 1) */ void CS_DAC(char d){if (d == 1) IOE |= 0x04; else IOE &= ~0x04;} /* DO_DAC(d): Set DIN for D/A as d (d=0 or 1) */ void DO_DAC(char d){if (d == 1) IOE |= 0x08; else IOE &= ~0x08;}
ここで新規に追加する関数2個。
/* CS_ADC(d): Set /CS for A/D as d (d=0 or 1) */ void CS_ADC(char d){if (d == 1) IOE |= 0x02; else IOE &= ~0x02;} /* DI_ADC(): Read DATAOUT from A/D */ char DI_ADC(){if ((IOE & 0x10) == 0) return(0); else return(1);}
D/Aと共通の関数3個。
/* CK(d): Set SCLK for D/A, A/D as d (d=0 or 1) */ void CK(char d) {if (d == 1) IOE |= 0x01; else IOE &= ~0x01;} /* CS_DAC(d): Set /CS for D/A as d (d=0 or 1) */ void CS_DAC(char d){if (d == 1) IOE |= 0x04; else IOE &= ~0x04;} /* DO_DAC(d): Set DIN for D/A as d (d=0 or 1) */ void DO_DAC(char d){if (d == 1) IOE |= 0x08; else IOE &= ~0x08;}