⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1208.c

📁 ISL1208实时钟的源代码
💻 C
字号:
//#include <at89x52.h>
//#include <at89x55.h>
#include <reg54.h>	 	   
#include <absacc.h>
#include <math.h>
#include <intrins.h>


#define DataPort P0                // 数据端口
#define nops()  {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
bit ack2;
sbit scl2   = 0x90; 
sbit sda2   = 0x91;
void start_i2c2(void);
void stop_i2c2(void);
void ack_i2c2(bit a);
void writebyte2(unsigned char c);
unsigned char readbyte2(void);
bit mwritenbyte2(unsigned char suba,unsigned char number,unsigned char base[]);
bit mreadnbyte2(unsigned char suba,unsigned char number,unsigned char base[]);


void start_i2c2(void)  
          {  
              sda2=1;			  nops();
              scl2=1;              nops(); 
              sda2=0;              nops(); 
              scl2=0;              nops(); 
          }  
void stop_i2c2(void)  
          {  
              sda2=0;  			  nops();
              scl2=1;              nops(); 
              sda2=1;              nops(); 
           
          }
  
void writebyte2(unsigned char c)
{
unsigned char bitcnt;
for(bitcnt=0;bitcnt<8;bitcnt++)
{scl2=0;
if(c&0x80)sda2=1;else sda2=0;
nops();
scl2=1;
nops();
scl2=0;
c=c<<1;
}
nops();
sda2=1;
scl2=0;nops();
scl2=1;nops();
ack2=sda2;
scl2=0;nops();
}

unsigned char readbyte2(void)
{
unsigned char retc,bitcnt;
retc=0;
sda2=1;
for(bitcnt=0;bitcnt<8;bitcnt++)
{scl2=0;
nops();
scl2=1;
nops();
retc=retc<<1;
if(sda2)retc++;
nops();
}
scl2=0;
nops();
return(retc);
}

void ack_i2c2(bit a)
{
scl2=0;
nops();
sda2=a;
nops();
scl2=1;
nops();
scl2=0;
nops();
}


bit mwritenbyte2(unsigned char suba,unsigned char number,unsigned char base[])
{
unsigned char i;
start_i2c2();
//writebyte(0xa0);if(ack2)return(0);
writebyte2(0xde);if(ack2)return(0);
writebyte2(suba);if(ack2)return(0);
for(i=0;i<number;i++){writebyte2(base[i]);if(ack2)return(0);}
stop_i2c2();return(1);
}

bit mreadnbyte2(unsigned char suba,unsigned char number,unsigned char base[])
{

unsigned char i,*s;
s=base;
start_i2c2();
//writebyte(0xa0);if(ack2)return(0);
writebyte2(0xde);if(ack2)return(0);
writebyte2(suba);if(ack2)return(0);
start_i2c2();
writebyte2(0xdf);if(ack2)return(0);
for(i=0;i<number-1;i++){*s=readbyte2();ack_i2c2(0);s++;}
*s=readbyte2();ack_i2c2(1);
stop_i2c2();return(1);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -