#include "MSP430X16X.h" #define uint unsigned int #define uchar unsigned char #define SCLK_UP P5OUT |= BIT3 #define SCLK_DOWN P5OUT &= ~BIT3 #define SYNC_UP P5OUT |= BIT0 #define SYNC_DOWN P5OUT &= ~BIT0 #define SDIN_UP P5OUT |= BIT1 #define SDIN_DOWN P5OUT &= ~BIT1 uchar DA_ON[4]={0,0,0,1}; //uchar DA_OFF[4]={0,0,0,0}; //uchar DA_baochi[4]={0,0,1,1}; //10us¼¶ÑÓʱ×Ó³ÌÐò void Delayus(uint us) { while(us--) { for(uint i=8;i>0;i--) ; } } void InitDAC(void) { P5DIR=BIT0+BIT1+BIT3; SYNC_DOWN; SDIN_UP; SCLK_DOWN; } void DAC_convert(unsigned int da) { uchar i; SYNC_DOWN; SCLK_UP; for(i=0;i<4;i++) { SCLK_UP; if(DA_ON[i]) SDIN_UP; else SDIN_DOWN; SCLK_DOWN; } for (i=0;i<12;i++) { SCLK_UP; if(da&0x800) SDIN_UP; else SDIN_DOWN; SCLK_DOWN; da<<=1; } SDIN_UP; SYNC_UP; SCLK_DOWN; Delayus(10); }