謝謝回復!!發那么多問題終于有人回復了,看到的有點晚,希望您有時間看到能夠再次回復。謝謝!
我想用一個單片機向另一個發送一組數據,然后用數碼管顯示出來,
//發射的主函數
void main(void)
{
char i=0;
int x=0,y=0;
unsigned char sta;
delay_ms(1000);
init_io(); //引腳初始化
//delay_ms(1000);
TX_Mode();
while(1)
{
readadc(0,1);
tx_buf[0]=ad1;
tx_buf[1]=ad2;
CE = 0;
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); //將數據送入發射緩沖區
CE = 1;
while(IRQ);
sta=SPI_Read(STATUS);
SPI_RW_Reg(FLUSH_TX, 0xff); //清除發射緩沖區
SPI_RW_Reg(WRITE_REG+STATUS,sta); //清除各種中斷標志
delay_ms(50);
}
}
void readadc(unsigned char add1,add2)
{
ad1=read_adc(add1);
ad1=read_adc(add1);
ad2=read_adc(add2);
ad2=read_adc(add2);
}
/**************/
//接受端
void main(void)
{
uchar sta;
Timer1Init();
Timer0Init();
init_io(); //初始化IO引腳
delay_ms(1000);
RX_Mode(); //配置為接收模式
while(1)
{
sta=SPI_Read(STATUS); //讀取芯片的狀態寄存器
if((sta & 0x40) != 0) //是否發生了接收數據完成的中斷
{ //是的話,將收到的數據存到數組rx_buf里
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);
}
if(rx_buf[4]==0x23&&rx_buf[0]!=35)//判斷收到的數據是不是0x23
{
pwm_chage();
dpy_chage_display(rx_buf[0]/100,rx_buf[0]%100/10,rx_buf[0]%10,PWM/10,PWM%10,rx_buf[1]/100,rx_buf[1]%100/10,rx_buf[1]%10);
}
SPI_RW_Reg(FLUSH_RX,0xff); //清除接收緩沖器
SPI_RW_Reg(WRITE_REG+STATUS,sta);//清除接收中斷標志
delay_ms(2);
}
}
void time0() interrupt 1
{
dpy_display();
}
|