| 
#include"pic.h"<br />#include"pic16f7x.h"<br /><br />#define CS RC2<br />/***<br />   PIC16F74    AT93C46<br />      RC4--------DO<br />      RC5--------DI<br />      RC2--------CS<br />      RC3--------SK<br />      GND--------GND,ORG<br />      VDD--------VCC<br />***/<br /><br />void MCU_init()<br />   {<br />     PORTC=0X2C;<br />     TRISC=0XD0;<br />     PORTD=0X00;<br />     TRISD=0X00;<br />     PORTE=0X00;<br />     TRISE=0X00;<br />     OPTION=0X42;//4MHZ OSC 8分频<br />     TMR0=131;   //1ms定时<br />     SSPSTAT=0;<br />     SSPCON=0X31;<br />   }<br />//93c46读写程序,使用SPI<br />void Delay(void)<br />{<br />     asm("nop");<br />     asm("nop");<br />}<br /><br />unsigned char OutPut(unsigned char SendData)<br />{<br />     unsigned char temp;<br />     SSPBUF=SendData;<br />     //asm("nop");<br />     //asm("nop");<br />     while(STAT_BF==0)<br />     {<br />         asm("clrwdt");<br />     }<br />     temp=SSPBUF;<br />     return(temp);<br />}<br /><br />void Ewen(void)<br />{<br />     unsigned char temp;<br />     CS=1;<br />     Delay();<br />     temp=0X09;<br />     OutPut(temp);<br />     temp=EWEN;   //0x80;<br />     OutPut(temp);<br />     Delay();<br />     CS=0;<br />}<br />void Ewds(void)<br />{<br />     unsigned char temp;<br />     CS=1;<br />     Delay();<br />     temp=0x02;<br />     OutPut(temp);<br />     temp=0x00;<br />     OutPut(temp);<br />     Delay();<br />     CS=0;<br /><br />}<br /><br />void WriteByte(unsigned char WData,unsigned char Adress)<br />{<br />      unsigned char wtemp;<br />      Ewen();<br />      CS=1;<br />      Delay();<br />      wtemp=0x02;<br />      OutPut(wtemp);<br />      wtemp=Adress|0x80;<br />      OutPut(wtemp);<br />      OutPut(WData);<br />      CS=0;<br />      Delay();<br />      CS=1;<br />      while(!DI);<br />      CS=0;      <br />}<br /><br />unsigned char  ReadByte(unsigned char Adress)<br />{<br />unsigned char wrtemp,rtemp;<br />CKP=1;<br />CS=1;<br />Delay();<br />wrtemp=0x03;<br />OutPut(wrtemp);<br />wrtemp=Adress&0x7f;<br />OutPut(wrtemp);<br />// asm()"nop";<br />CKP=0;<br />asm("nop");<br />rtemp=OutPut(wrtemp);<br />Delay();<br />CS=0;<br />CKP=1;<br />return(rtemp);<br />}<br />/*void WriteBytes(unsigned char *WriteData,unsigned char Number,unsigned char Adress){<br />  unsigned char temp;<br />  Ewen();<br />  while(Number!=0){<br />   temp=*WriteData;<br />         WriteByte(temp,Adress);<br />         asm("nop");<br />         asm("nop");<br />         CS=1;<br />         asm("nop");<br />         asm("nop");<br />         while(DI==0){<br />              asm("clrwdt");<br />         }<br />         Delay();<br />         CS=0;<br />         WriteData++;<br />         Adress++;<br />         Number--;<br />  }<br />}*/<br /><br />void ReadBytes(unsigned char *ReadData,unsigned char Number,unsigned char Adress)<br />{<br />//unsigned char temp;<br />while(Number!=0)<br />{<br />asm("clrwdt");<br />*ReadData=ReadByte(Adress);<br />ReadData++;<br />Adress++;<br />Number--;<br />}<br />}<br /><br />void main(void)<br />{<br /> MCU_init();<br /> WriteByte(100,1);<br /> temp=0;<br /> temp=ReadByte(1);<br /> 读出来的是0XFF??<br /> while(1);<br />} |   
     
  
 |