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

📄 eeprom.c

📁 在IAR的MSP430开发系统中直接使用
💻 C
字号:
#include "msp430x14x.h"
#include "in430.h"
#include "sysdefine.h"

extern unsigned char flashvari_system[23];

extern void sys_timing(unsigned long delay_time);


void X24c64_Init(void)
{
     P3DIR |= SDATA_2464;
     P2OUT |= CLOCK_2464;
     P3OUT |= SDATA_2464;
     P2OUT &=~WPROT_2464;
}

void Start(void)
{
     P3DIR |= SDATA_2464;
     P3OUT |= SDATA_2464;
     P2OUT |= CLOCK_2464;     
     P3OUT &=~SDATA_2464;
     P2OUT &=~CLOCK_2464;
}

void Stop(void)
{
     P3DIR |= SDATA_2464;
     P3OUT &=~SDATA_2464;
     P2OUT |= CLOCK_2464;     
     P3OUT |= SDATA_2464;
}
 
void Writex(unsigned char write_data)
{
     unsigned char write_i,temp_data;
     P3DIR |= SDATA_2464;    
     for(write_i=0;write_i<8;write_i++)
          {
               temp_data=write_data;
               if(temp_data=(temp_data & 0x80) == 0x80)
                    {
                         P2OUT &=~CLOCK_2464;    
                         P3OUT |= SDATA_2464;
                         P2OUT |= CLOCK_2464;
                    }
               else
                    {
                         P2OUT &=~CLOCK_2464;
                         P3OUT &=~SDATA_2464;
                         P2OUT |= CLOCK_2464;
                    }
               sys_timing(40);
               write_data=write_data<<1;
          }    
     P2OUT &=~CLOCK_2464;
     P3OUT |= SDATA_2464;
}

unsigned char readx(void)
{
     unsigned char i6,j6,k6=0;
     P3DIR &=~SDATA_2464;
     for(i6=0;i6<8;i6++)
          {
               P2OUT |= CLOCK_2464;
               if((P3IN & SDATA_2464) == SDATA_2464)
                    {
                         j6=1;
                    }
               else 
                    {
                         j6=0;
                    }
               k6=(k6<<1) | j6;
               P2OUT &=~CLOCK_2464;
               sys_timing(16);
          }
     P2OUT |= CLOCK_2464;
     return(k6);
}

void Clock(void)
{
     unsigned char i7=0;
     P3DIR &=~SDATA_2464;
     P2OUT |= CLOCK_2464;
     while (((P3IN & SDATA_2464 ) == SDATA_2464) && (i7 < 255))
          {
               i7++;
          }
     P2OUT &=~CLOCK_2464;
}

unsigned char X24c64_Read(unsigned int address)
{
     unsigned char read_number;
     unsigned char temp2,temp3;
     unsigned int temp1;	
     temp1=address;
     temp3=(address >> 8) & 0xff;
     temp2=temp1&0xff;	
     X24c64_Init();
     Start();
     Writex(0xa0);
     Clock();
     Writex(temp3);
     Clock();    
     Writex(temp2);
     Clock();
     Start();
     Writex(0xa1);
     Clock();
     read_number=readx();
     Stop();
     sys_timing(80);
     return(read_number);
}

void X24c64_Write(unsigned int address, unsigned char write_number)
{
     X24c64_Init();  
     Start(); 
     Writex(0xa0);
     Clock(); 
     Writex(address/256);
     Clock(); 
     Writex(address%256);
     Clock();
     Writex(write_number);
     Clock(); 
     Stop();
     sys_timing(1200);
}

void reb_system(void)
{
     unsigned char i8;
     for(i8=0;i8<23;i8++)
          {
               X24c64_Write(SYSDA_EPROM+i8,flashvari_system[i8]);
          }
}

⌨️ 快捷键说明

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