单片机: EEPROM和串口通信

 名称:IIC协议 EEPROM24c02 通过串口通信存数读取数据

 内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一个数据,然后在内存中改变这些数据, 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。

电脑通过串口发送一个十六进制的数据到单片机,存储进24c02,要求断电重启后在数码管上显示上一次发送的数据。

(本例是1us机器周期,即晶振频率要小于12MHZ)

#include <reg52.h>          //头文件的包含
#include <intrins.h>

#define  _Nop()  _nop_()        //定义空指令
#define DataPort P0
sbit WEI=P2^7;
sbit DUAN=P2^6;
// 常,变量定义区
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
		                  	         0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00};// 显示段码值0~F,-,全空
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码

unsigned char TempData[8];
                                              
sbit SDA=P2^1;            //模拟I2C数据传送位
sbit SCL=P2^0;            //模拟I2C时钟控制位

                          
bit ack;	              //应答标志位
   
unsigned char res;
void DelayUs2x(unsigned char t);//函数声明 
void DelayMs(unsigned char t);

void Delay(unsigned int t)
{
	while(t--);	
}

void InitUART(void)
{
	SCON=0x50;
	TMOD|=0x20;
	TH1=0xFD;
	TR1=1;
	EA=1;
}

void DelayUs2x(unsigned char t)
{   
 while(--t);
}

void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
	 DelayUs2x(245);
 }
}


void Display(unsigned char FirstBit,unsigned char Num)
{
	unsigned char i;
	for(i=0;i<Num;i++)
	{ 
	   	DataPort=0;   //清空数据,防止有交替重影
      	DUAN=1;     //段锁存
      	DUAN=0;

       	DataPort=dofly_WeiMa[i+Firs
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值