导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→//x25045
sbit CS=P1^0;       

* 25262: 有用过X24045的么?用C怎么编程呢?

   guest 
guest发表的帖子 

 
//x25045
sbit CS=P1^0;        //
sbit SO=P1^1;        //
sbit SI=P1^2;        //
sbit SCK=P1^3;       //

void OutByte(unsigned char x){
     unsigned char i;
     ACC=x;
     for(i=0;i  <8;i++){SCK=0;ACC  <  <=1;SI=CY;SCK=1;}
     }
unsigned char InputByte(){
     unsigned char i;
     for(i=0;i  <8;i++){SCK=1;SCK=0;_nop_();ACC  <  <=1;CY=SO;ACC_0=CY;}
     return(ACC);
     }
void SetWatchDog(){
     SCK=0;CS=0;
     OutByte(0x01);    //select status register  
     OutByte(0x10);    //set watch dog 600ms,No block protect 
     CS=1;
     } 
void WriteDataToE2prom(unsigned char address,unsigned char x){
     unsigned char i;
     Reset_WatchDog();
     SCK=0;CS=0;OutByte(0x06);CS=1;  //select write status register,enable write data to the chip 
     SCK=0;CS=0;OutByte(0x02);    //write instruction
     OutByte(address);   //send start address of the data want to write to chip
     OutByte(x);     //data
     SCK=0;CS=1;     //clock
     for(i=0;i  <0x99;i++){SCK=0;CS=0;OutByte(0x05);ACC=InputByte();
          if(!ACC_0){i=0x98;} //wait for chip write data finish
                        }       
     } //after write data to chip must run'SCk=0;CS=1;' 
void ReadDataFromE2prom(unsigned char address,unsigned char x){//x must less than 9
     unsigned char i;
     Reset_WatchDog();
     SCK=0;CS=0;OutByte(0x03); //enable read data from chip
     OutByte(address);      //start address
     for(i=0;i  <x;i++){X25045Temp_Buff[i]=InputByte();}
     SCK=0;CS=1;
     } 
                          
void Store_Data_25045(){
     unsigned char i;
     Reset_WatchDog();
     for(i=0;i  <4;i++){WriteDataToE2prom(i+0x10,LampvalueBuff[i]);}
     SCK=0;CS=1;
     }     //store data 
void Read_Data_25045(){
     unsigned char i;
     Reset_WatchDog();
     ReadDataFromE2prom(0x10,0x04);
     for(i=0;i  <4;i++){LampvalueBuff[i]=X25045Temp_Buff[i];}
     }
void Store_LED_Status(){
     Reset_WatchDog();
     WriteDataToE2prom(0x14,LampvalueBuff[S_TH]);
     WriteDataToE2prom(0x15,LampvalueBuff[S_TL]);
     SCK=0;CS=1;
     }
void Read_LED_Status(){
     Reset_WatchDog();
     SCK=0;CS=0;OutByte(0x03); //enable read data from chip
     OutByte(0x14);      //start address
     LampvalueBuff[S_TH]=InputByte();
     LampvalueBuff[S_TL]=InputByte();
     SCK=0;CS=1;
     }
void Store_Password(){
     Reset_WatchDog();
     WriteDataToE2prom(0x80,0x59);
     WriteDataToE2prom(0x81,0x44);
     }
void Read_Password(){
     Reset_WatchDog();
     SCK=0;CS=0;OutByte(0x03); //enable read data from chip
     OutByte(0x80);      //start address
     PasswordTH=InputByte();
     PasswordTL=InputByte();
     SCK=0;CS=1;
     }

发表时间:2003年4月15日15:09:15

  
回复该帖

本主题共有 6 帖,分页:>>>>>该主题的所有内容[6]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  25264.[详细]您好想没看清楚哦,人家问的是24045,IIC总线的.
摘要:......(无内容)
- [荒原野草][1930次] 2003年4月15日

  25267.[详细]呵呵!错了!
摘要:呵呵! 错了! ......(14字)
- [guest][1376次] 2003年4月15日

  25269.[详细]有资料的话应该很好写!
摘要:有资料的话应该很好写!......(21字)
- [guest][1557次] 2003年4月15日

[上一篇帖子]:谢谢老古,请问一下有没有78E58中文的资料谢谢老古,请问一下有没有78E58中文的资料
[下一篇帖子]:请教关于uc/os-II移植的问题:各位大侠,我从网上下了个UC/OS-II在89c52上移植的源程