因为PIC24F是16位单片机,除了必要的一些寄存器设置、管脚定义、延时等需要更改,还应该改些什么呢?
例如一个SPI的读程序,以下是51单片机写的:
unsigned long SPI_Read(unsigned char address)
{
char i;
unsigned long temp_data;
temp_data = 0;
SPI_CLK = 0; //CLK初始状态是0
Delay(50); //Delay(200); h1101 yangbiao
Delay(50);
SPI_CS = 1;
Delay(50);
SPI_CS = 0;
Delay(50);
SPI_CLK = 1; //启动数据传输
Delay(50);
SPI_DIN = 0; //0表示主机向从机读数据
Delay(50);
SPI_CLK = 0; //从机需要在下降沿取数据
Delay(50);
for(i=6; i>=0; i--)
{
SPI_CLK = 1; //启动数据传输
SPI_DIN = (address & (0x01<<i))>>i; //address 地址从0x00到0x7F
Delay(50);
SPI_CLK = 0; //从机需要在下降沿取数据
Delay(50);
}
//从机接收到命令后,开始送出数据,上升沿送数据
//SPI_DIN = 0;
SPI_DIN = 1;
Delay(50);
SPI_CLK = 1;
Delay(50);
SPI_CLK = 0;
temp_data = temp_data | SPI_DOUT;
Delay(50);
for(i=0; i<23; i++)
{
SPI_CLK = 1;
Delay(50);
SPI_CLK = 0;
temp_data = (temp_data<<1) | SPI_DOUT;
Delay(50);
}
SPI_CS = 1;
return temp_data;
}
地址读取的地方怎么改呢?谢谢! |