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

📄 24c01.c

📁 此程序为2401在51单片机中的应用。方便使用。
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
#define SLAW	 0b10100000
#define SLAR 	 0b10100001
#define SCL_H 	 PORTC|=0B00100000
#define SCL_L 	 PORTC&=0B11011111
#define SDA_H	 PORTC|=0B00010000
#define SDA_L 	 PORTC&=0B11101111
#define START	 DDRC|=0B00110000;SCL_L;SDA_H;SCL_H;delay(1);SDA_L;delay(1);SCL_L
//DDRC 要根据情况决定用位运算还是直接赋值。
#define END		 SCL_L;SDA_L;SCL_H;delay(1);SDA_H;delay(1);SCL_L
 //c4接SDA,c5接SCL
int num[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X27,0X7F,0X6F};
void main()
{
int i=0;

DDRB=0XFF;
DDRC=0XFF;
DDRD=0XFF;

PORTB=num[0];
PORTC=0Xfe;
PORTD=0Xef;
	//for(i=1;i<10;i++){write(i,i);}
	write(0,0);
	for(i=0;i<11;i++){PORTB=read();delay(1000);}
	
}
		
getn(int m,int n,int p)					//取m的第n位输出到第p(0~7)位上
	{
	int x;
	x=m>>n&0x01;
	return (x<<p);
	}
void ser(void)	   		  	 					//应答	   		  	 								 
	 {	   	
		DDRC&=0B11101111;
		SCL_H;
		SCL_L;
		DDRC|=0B00110000;
	}
void write(int adr,int data)			//写数据
	 {
	    int i;
		START;						
		in(SLAW);ser();						
		in(adr);ser();				
		in(data);ser();		
		END;		
	 }
read(void)									//读数据
	{
	  	int i,v=0b11111111;
		START;		
		in(SLAR);ser();
		DDRC&=0B11101111;		
		for(i=0;i<8;i++)
		{
		SCL_H;					
			if((PINC&0B00010000)==0)	
			v^=(0b10000000>>i);//第i位取反
		SCL_L;
		}
		ser();
		END;
		return(v);	
	}
void delay(int t)
	{
 	 int s;
	 for(;t>0;t--)
	 for(s=0;s<100;s++);
	}
void in(int v)							//按字节输入24C01A
	{
	int i;
	for(i=0;i<8;i++)
		{
		SCL_L;
		SDA_L;
		PORTC|=getn(v,7-i,4);
		SCL_H;
		SCL_L;
		SDA_L;
		}	
	}

⌨️ 快捷键说明

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