帮忙看一下代码

2019-03-24 15:42发布

//                   /|  /|//               MSP430F261x/241x 10k  10k     //                   master                    |           |     //             ----------------- --------     |           |        ---------------------//           -|XIN  P3.1/UCB0SDA|<-|-------- -->   |SDA                   |//            |                                 |    |                   |                          |//           -|XOUT                       |    |                   |    BH1750fvi     |//            |     P3.2/UCB0SCL   |<----------->     | SCL                  |//            |                                  |                       |  ------------------  |//
上面是传感器与单片机的连接方式,只画了串行时钟与数据引脚,下面是用TI官网例程改的。最后出的数据不正确,就算不接传感器也有数据,而且总是8080.哪位大侠帮我看一下,不胜感激。


#include "msp430x26x.h"
//传感器的操作命令#define POWER  0X01         //SHANG DIAN #define RESET    0X07         //CHONG ZHI #define CHMODE  0X10        //连续H分辨率 
unsigned char RXData;

void main(void){  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT    P3SEL |= 0x06;                            // Assign I2C pins to USCI_B0  UCB0CTL1 |= UCSWRST;                      // Enable SW reset  UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;     // I2C Master, synchronous mode  UCB0CTL1 = UCSSEL_2 + UCSWRST;            // Use SMCLK, keep SW reset  UCB0BR0 = 12;                             // fSCL = SMCLK/12 = ~100kHz  UCB0BR1 = 0;  UCB0I2CSA = 0x5c;                         // Slave Address is 05ch  UCB0TXBUF=POWER;  UCB0RXBUFCHMODE;  UCB0CTL1 &= ~UCSWRST;                     // Clear SW reset, resume operation  IE2 |= UCB0RXIE;                          // Enable RX interrupt  RXCompare = 0x0;                            // Used to check incoming data
  while (1)  {    while (UCB0CTL1 & UCTXSTP);             // Ensure stop condition got sent    UCB0CTL1 |= UCTXSTT;                    // I2C start condition    while (UCB0CTL1 & UCTXSTT);             // Start condition sent?    UCB0CTL1 |= UCTXSTP;                    // I2C stop condition    __bis_SR_register(CPUOFF + GIE);        // Enter LPM0 w/ interrupts                              }}
// USCI_B0 Data ISR#pragma vector = USCIAB0TX_VECTOR__interrupt void USCIAB0TX_ISR(void){  RXData = UCB0RXBUF;                       // Get RX data  __bic_SR_register_on_exit(CPUOFF);        // Exit LPM0}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
wstt
1楼-- · 2019-03-24 18:34
UCB0RXBUFCHMODE;这句怎么回事,粘掉了?
yddinxidian
2楼-- · 2019-03-24 23:32
< :TI_MSP430_内容页_SA7 --> 少了一个“=”,版主帮我看看这个 程序对吗
yddinxidian
3楼-- · 2019-03-25 03:35
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章