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

📄 6_4_3.c

📁 51事例原代码 事例多多 应该对初学者很有用
💻 C
字号:
//模拟三线制Microwire串行总线的操作源程序:

#include < reg51.h >
#define uchar unsigned char
#define HIGH 1 						/* 定义高电平*/
#define LOW 0						/* 定义低电平*/
#define READ_D 0x0C 				/* 读指令*/
#define WRITE_D 0x0A 				/* 写指令*/
#define REASE_D 0x0E 				/* 擦除指令*/
#define EN_D 0x09 					/* 擦/ 写允许指令*/
#define EN_RD 0x80

sbit CS = 0x92; 					/* CS 为P1.2 */
sbit SK = 0x93;						/* SK 为P1.3 */
sbit DI = 0x94; 					/* DI 为P1.4 */
sbit DO = 0x95; 					/* DO 为P1.5 */

/* * * * 延时函数* * * */
void delay (uchar n)
{
	uchar  i;
	for (i = 0;i > n;i + + )
	;
}

/* * * * 时钟函数* * * */
void i_clock (void) 
{
	SK = LOW;
	delay(1) ;
	SK = HIGH;
	delay(1);
}

/* * * * 输入函数* * * */
/* 输入1 个字节的数据到AT93C66 中*/
void send (uchar i_data)
{
	uchar i;
	for (i = 0;i < 8;i + + ) 
		{
		DI = (bit) ( i_data&0x80);
		i_data <<= 1;
		i_clock();
		}
}

/* * * * 接收函数* * * */
/* 从AT93C66 接收1 个字节的数据*/
uchar recept (void)
{
	uchar i_data = 0;
	uchar j;
	i_clock();
	for (j = 0;j < 8;j + + )
 		{
		i_data * = 2;
		if (DO) i_data + +;
		i_clock();
		delay(2);
		}
	return(i_data);
}

/* * * * 读操作* * * */
/* 发送读指令和地址, 从AT93C66 指定的地址中取出数据*/
uchar  read (uchar address)
{
	uchar data_r;
	CS = 1;
	send (READ_D); 				/* 送读指令*/
	send (address); 			/* 送地址*/
	data_r = recept(); 			/* 接受数据*/
	CS = 0;
	return (data_r);
}

/* * * * 擦写允许操作* * * */
void enable (void) 
{
	CS = 1;
	send (EN_D);
	send (EN_RD);
	CS = 0;
}

/* * * * 擦除操作* * * */
/* 擦除AT93C66 中指定地址中的数据*/
void erase (uchar address) 
{
	DO = 1;
	CS = 1;
	send ( ERASE_D); 			/* 送擦除指令*/
	end (address);
	CS = 0;
	delay(4);
	CS = 1;
	while (!DO);				 /* 等待擦除完毕*/
	CS = 0;
}

/* * * * 写操作* * * */
/* 将1 个数据写入AT93C66 指定的地址中*/
void write  (uchar data_2 ,uchar address) 
{
	enable ();					/* 擦写允许*/
	erase (address);			/* 擦除数据*/
	CS = 1;
	send (WRITE_D);				/* 送写指令*/
	send (address);
	send (data_2); 				/* 送数据*/
	CS = 0;
	delay(4);
	CS = 1;
	delay(4);
	while (!DO);				 /* 等待写完*/
	CS = 0;
}

⌨️ 快捷键说明

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