本帖最后由 libai233 于 2017-4-24 22:22 编辑
用G2553的io口模拟spi读MAX6675的温度值,但是读出来一直是0,不知道是硬件问题还是软件问题,求大神解答..
硬件方面P2.0接DO,P2.1接CLK,P2.2接CS,程序如下:
- uint read_spi(void)//spi读16位
- {
-
- P2DIR &= ~BIT0;
- P2DIR |=BIT1+BIT2;
-
- P2OUT|=BIT2;//拉高片选开始转换
- __delay_cycles (524288);
- P2OUT&=~BIT2;//拉低片选开始读数
- P2OUT|=BIT1;//sck上升沿
- __delay_cycles (524288);
- uchar i;
- uint data=0;
- for(i=0;i<16;i++);
- {P2OUT&=~BIT1;//sck下降沿
- __delay_cycles (524288);
- if(P2IN&BIT0)//判断收到电平
- {data<<=1;
- data=data+BIT0;
- }
- else data<<=1;
- P2OUT|=BIT1;//sck上升沿
- __delay_cycles (524288);
- }
- data<<=1;
- data>>=4;
-
- return data ;
- }
复制代码
一周热门 更多>