演示程序SD24- 430 C语言.docVIP

  • 1
  • 0
  • 约5.4千字
  • 约 10页
  • 2017-12-22 发布于河南
  • 举报
演示程序SD24- 430 C语言

演示程序SD24- 430 C语言 #define SET_CLOCK_CLK P2OUT |= BIT4 #define CLR_CLOCK_CLK P2OUT = ~BIT4 #define SET_CLOCK_DAT P2OUT |= BIT3 #define CLR_CLOCK_DAT P2OUT = ~BIT3 #define GET_CLOCK_DAT (P2IN BIT3) #define ENABLE_CLOCK P2REN |= BIT3|BIT4//P3OUT |= BIT7 #define DISABLE_CLOCK P2REN = ~(BIT3|BIT4)//P3OUT = ~BIT7 #define ENABLE_GET_CLOCK_DATA P2DIR = ~BIT3;P2OUT |= BIT3 #define DISABLE_GET_CLOCK_DATA P2DIR |= BIT3 void WriteTimeOn(void); void WriteTimeOff(void); #define FLASH_DELAY for(junk=0; junk10; junk++) void I2CStart(void) { ENABLE_CLOCK; SET_CLOCK_DAT; SET_CLOCK_CLK; FLASH_DELAY; CLR_CLOCK_DAT; FLASH_DELAY; CLR_CLOCK_CLK; FLASH_DELAY; } void I2CStop(void) { CLR_CLOCK_DAT; SET_CLOCK_CLK; FLASH_DELAY; SET_CLOCK_DAT; FLASH_DELAY; CLR_CLOCK_CLK; FLASH_DELAY; DISABLE_CLOCK; } void I2CAck(void) { CLR_CLOCK_DAT; FLASH_DELAY; SET_CLOCK_CLK; FLASH_DELAY; CLR_CLOCK_CLK; FLASH_DELAY; } void I2CNoAck(void) { SET_CLOCK_DAT; FLASH_DELAY; SET_CLOCK_CLK; FLASH_DELAY; CLR_CLOCK_CLK; FLASH_DELAY; } char I2CWaitAck(void) { char ret; ENABLE_GET_CLOCK_DATA; SET_CLOCK_CLK; FLASH_DELAY; FLASH_DELAY; ret = GET_CLOCK_DAT; CLR_CLOCK_CLK; FLASH_DELAY; DISABLE_GET_CLOCK_DATA; if(ret) ret = ret; return ret; } void I2CSendByte(unsigned char data) { int i; CLR_CLOCK_CLK; FLASH_DELAY; for(i=0; i8; i++) { if(data0x80) SET_CLOCK_DAT; else CLR_CLOCK_DAT; SET_CLOCK_CLK; FLASH_DELAY; CLR_CLOCK_CLK; FLASH_DELAY; data = 1; } } void I2CReceiveByte(unsigned char *data) { int i; *data = 0; ENABLE_GET_CLOCK_DATA; FLASH_DELAY; for(i=0; i8; i++) { *data = 1; CLR_CLOCK_CLK; FLASH_DELAY; SET_CLOCK_CLK; FLASH_DELAY; if(GET_CLOCK_DAT) *data |= 1; } CLR_CLOCK_CLK; DISABLE_GET_CLOCK_DATA; } void I2CReadDate(BYTE *date) { BYTE n; I2CStart(); I2CSendByte(0x65); I2CWaitAck(); for(n=0;n7;n++) { I2CReceiveByte(date+n); if (n!=6) //最后一个数据不应答 { I2CAck(); } } I2CNoAc

文档评论(0)

1亿VIP精品文档

相关文档