|
各位大侠,我是一个菜鸟。。现在在学习一块板子,CPU是PIC24FJ128GA310,使用外部AD进行采用,下面是我的编的一段程序,可是采样结果一直不对,同一段程序多次下载运行后会出现不同的结果。。。。弄了半个多月了,实在茫无头绪,数据手册都翻烂了,请求大侠们帮助,谢谢啦。
#include <p24FJ128GA310.h>
#define SCK PORTCbits.RC1
#define SDO PORTCbits.RC3
#define SDI PORTCbits.RC4
#define SCS PORTCbits.RC2
void Spi_write(unsigned char send_data)
{
int i;
SCS=0;
delay();
SCK=1;
delay();
for(i=0;i<8;i++)
{
SCK=0;
delay();
if(send_data&0x80)
SDO=1;
else
SDO=0;
send_data=send_data<<1;
delay();
SCK=1;
delay();
delay();
}
}
unsigned char Spi_read()
{
int i;
unsigned char data=0;
for(i=0;i<8;i++)
{
int n=1;
SCK=1;
delay();
SCK=0;
if(SDI==1)
{
n=n<<(7-i);
data=data+n;
}
delay();
}
return data;
}
void id_read_initial()
{
SCS=0;
delay();
Spi_write(0x08);
Spi_write(0x200a);
Spi_write(0x10);
Spi_write(0x0011);
SDO=1;
delay();
}
void delay()
{
int i;
for(i=0;i<=8;i++)
Nop();
}
void RP_UART()
{
RPINR18bits.U1RXR=8;
RPOR4bits.RP9R=3;
}
void U1TX_INIT()
{
IEC0bits.U1TXIE=0;
IFS0bits.U1TXIF=0;
U1BRG=0x19;
U1MODEbits.PDSEL1=0;
U1MODEbits.PDSEL0=0;
U1MODEbits.STSEL=0;
IEC0bits.U1TXIE=1;
IPC3bits.U1TXIP2=1;
IPC3bits.U1TXIP1=0;
IPC3bits.U1TXIP0=0;
U1STAbits.UTXISEL1=0;
U1STAbits.UTXISEL0=0;
U1MODEbits.UARTEN=1;
U1STAbits.UTXEN=1;
IEC0bits.U1TXIE=1;
}
void main(void)
{
int read_data,i;
ANSCbits.ANSC4=0;
TRISCbits.TRISC1=0;
TRISCbits.TRISC2=0;
TRISCbits.TRISC3=0;
TRISCbits.TRISC4=1;
RP_UART();
U1TX_INIT();
Nop();
Nop();
Nop();
Nop();
Nop();
SCS=0;
for(i=0;i<1000;i++)
{
delay();
}
id_read_initial();
for(i=0;i<1000;i++)
{
delay();
}
while (SDI==1)
{
Nop();
}
Spi_write(0x40);
SDO=1;
read_data=Spi_read();
U1TXREG=read_data;
read_data=Spi_read();
U1TXREG=read_data;
read_data=Spi_read();
U1TXREG=read_data;
delay();
while(1);
}
void _ISR _U1TXInterrupt(void)
{
IFS0bits.U1TXIF=0;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|