void Start_I2c() {
SDA=1; _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); _Nop(); SDA=0; _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; _Nop(); _Nop();
} //结束总线
void Stop_I2c() {
SDA=0; _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; _Nop(); _Nop(); _Nop(); _Nop(); }
void SendByte(uchar c) {
unsigned char Bit; for(Bit=0;Bit<8;Bit++) { if((c< //发送字节函数 //要传送的数据长度为8位 //判断发送位 SDA=1; else SDA=0; _Nop(); SCL=1; //置时钟线为高 ,通知被控器开始接收数据位 _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; } _Nop(); _Nop(); SDA=1; _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA==1) back=0; else back=1; SCL=0; _Nop(); _Nop(); } bit WriteDAC(uchar dat, uchar num) { unsigned char i; Start_I2c(); SendByte(AddW); if(back==0) return(0); SendByte(0x40); if(back==0) return(0); for(i=0;i return(0); } Stop_I2c(); } void keys() { if(key1==0) { delay1(10); if(key1==0) { num++; while(!key1); wave++; if(wave==4) { wave=1; num=1; } P1=table[num]; } } } void keys1() { if(key2==0) { delay1(10); if(key2==0) { while(!key2); f++; if(f>500) f=500; } } if(key3==0) { delay1(10); if(key3==0) { while(!key3); if(f>1) f--; } } if(key4==0) { delay1(10); if(key4==0) { while(!key4); A1++; if(A1>15) A1=15; } } if(key5==0) { delay1(10); if(key5==0) { while(!key5); if(A1>1) A1--; } } } void keys2() { if(key2==0) { delay1(10); if(key2==0) { while(!key2); f++; if(f>100) f=100; } } if(key3==0) { delay1(10); if(key3==0)