#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 />} |
|