蓝桥杯单片机学习过程记录(十)EEPROM读写

蓝桥杯单片机学习过程记录(十)EEPROM读写

基础内容学了这些,明天开始做真题试试看。

#include<STC15F2K60S2.H>
#include<intrins.H>
sbit SCL=P2^0;
sbit SDA=P2^1;
unsigned char eep;
void delayms(int ms);
void display_12(yi,er);
void display_34(san,si);
void display_56(wu,liu);
void display_78(qi,ba);
void Delay6us();
void allinit();
unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
unsigned char yi,er,san,si,wu,liu,qi,ba;
void eep_stop();
void eep_start();
void eep_wait();
void eep_send(unsigned char dat);
unsigned char eep_rect();
unsigned char eep_read(unsigned char address);
void eep_write(unsigned char address,unsigned char dat);
void main(void){
 allinit();
 yi=10;er=10;san=10;si=10;wu=10;liu=10;qi=10;ba=10;
 eep=eep_read(0x00);
 delayms(2);
 eep_write(0x00,eep+1);delayms(2);
 yi=eep/100;
 er=eep%100/10;
 san=eep%10;
 while(1){
  display_12(yi,er);
  display_34(san,si);
  display_56(wu,liu);
  display_78(qi,ba);
 }
}
//eep¶Æô¶¯
void eep_start(){
 SDA=1;SCL=1;Delay6us();
 SDA=0;Delay6us();
 SCL=0;
}
//eepֹͣ
void eep_stop(){
 SDA=0;SCL=1;Delay6us();
 SDA=1;
}
//eep·¢ËÍ
void eep_send(unsigned char dat){
 unsigned char i;
 for(i=0;i<8;i++){
  if(dat&0x80)SDA=1;
  else 
   SDA=0;
  Delay6us();
  SCL=1;
  dat<<=1;
  Delay6us();
  SCL=0;
 }
}
//eepµÈ´ý
void eep_wait(){
 SDA=1;
 Delay6us();
 SCL=1;
 Delay6us();
 if(SDA){
  SCL=0;
  eep_stop();
 }
 else
  SCL=0;
}
//eep½ÓÊÕ
unsigned char eep_rect(){
 unsigned char i;
 unsigned char dat;
 for(i=0;i<8;i++){
  SCL=1;
  Delay6us();
  dat<<=1;
  if(SDA){
   dat|=0x01;
  }
  SCL=0;Delay6us();
 }
 return dat;
}
//eep¶Á
unsigned char eep_read(unsigned char address){
 unsigned char temp;
 eep_start();
 eep_send(0xa0);
 eep_wait();
 eep_send(address);
 eep_wait();
 eep_stop();
 eep_start();
 eep_send(0xa1);
 eep_wait();
 temp=eep_rect();
 eep_stop();
 return temp;
}
//eepд
void eep_write(unsigned char address,unsigned char dat){
 eep_start();
 eep_send(0xa0);
 eep_wait();
 eep_send(address);
 eep_wait();
 eep_send(dat);
 eep_wait();
 eep_stop();
}
void Delay6us()  //@11.0592MHz
{
 unsigned char i;
 i = 14;
 while (--i);
}
void allinit(){
 P2=0XA0;P0=0X00;
 P2=0XC0;P0=0XFF;P2=0XE0;P0=0XFF;
 P2=0X80;P0=0XFF;
}
void delayms(int ms){
 int q,w;
 for(q=0;q<ms;q++)
  for(w=0;w<845;w++);
}
void display_12(yi,er){
 P2=0XC0;P0=0X01;P2=0XE0;P0=seg[yi];
 delayms(1);
 P2=0XC0;P0=0X02;P2=0XE0;P0=seg[er];
 delayms(1); 
}
void display_34(san,si){
 P2=0XC0;P0=0X04;P2=0XE0;P0=seg[san];
 delayms(1);
 P2=0XC0;P0=0X08;P2=0XE0;P0=seg[si];
 delayms(1);  
}
void display_56(wu,liu){
 P2=0XC0;P0=0X10;P2=0XE0;P0=seg[wu];
 delayms(1);
 P2=0XC0;P0=0X20;P2=0XE0;P0=seg[liu];
 delayms(1); 
}
void display_78(qi,ba){
 P2=0XC0;P0=0X40;P2=0XE0;P0=seg[qi];
 delayms(1);
 P2=0XC0;P0=0X80;P2=0XE0;P0=seg[ba];
 delayms(1); 
}
发布了27 篇原创文章 · 获赞 17 · 访问量 4148

猜你喜欢

转载自blog.csdn.net/weixin_44747240/article/details/104300771
今日推荐