當前位置:編程學習大全網 - 源碼下載 - MSP430或者51系列單片機有I2C接口嗎?

MSP430或者51系列單片機有I2C接口嗎?

Msp430的15,16系列和2系列都有I2c接口程序源代碼。如果ti網站上有直接下載的,每壹個都可以有對應的代碼庫。

貼壹個2274的i2c代碼,希望對妳有用。

包括“msp430x22x4.h”

unsigned int RxByteCtr

無符號int RxWord

無效總管(無效)

{

wdt CTL = wdt pw+WDTHOLD;//阻止WDT

p 1 dir | = 0x 01;// P1.0輸出

P3SEL | = 0x06//將I2C引腳分配給USCI_B0

UCB 0 CTL 1 | = UCS wrst;//啟用軟件復位

UCB 0 CTL 0 = UC MST+UC mode _ 3+UC sync;// I2C主機,同步模式

UCB 0 CTL 1 = UCS sel _ 2+UCS wrst;//使用SMCLK,保持軟件復位

UCB 0 br 0 = 12;//fSCL = sm clk/12 = ~ 100 khz

UCB 0 br 1 = 0;

UCB0I2CSA = 0x4e//設置從機地址

UCB 0 CTL 1 & amp;= ~ UCSWRST//清除軟件復位,恢復運行

IE2 | = UCB0RXIE//使能RX中斷

TACTL = TASSEL _ 2+MC _ 2;// SMCLK,contmode

while (1)

{

rx bytectr = 2;//加載RX字節計數器

UCB 0 CTL 1 | = uct xstt;// I2C開始條件

_ _ bis _ SR _ register(CPU off+GIE);//進入LPM0,使能中斷

//保持在LPM0中,直到所有數據

//被接收

if(rx word & lt;0x 1d 00)//& gt;28C?

p 1輸出和輸出。= ~ 0x 01;//否,P1.0 = 0

其他

p 1 out | = 0x 01;//是的,P1.0 = 1

_ _ disable _ interrupt();

tacctl 0 | = CCIE;// TACCR0中斷使能

_ _ bis _ SR _ register(CPU off+GIE);//進入LPM0,使能中斷

//保持在LPM0中,直到TACCR0

//中斷發生

TACCTL0 & amp= ~ CCIE;// TACCR0中斷禁用

}

}

#pragma vector = TIMERA0_VECTOR

_ _中斷void TA0_ISR(void)

{

_ _ BIC _ SR _ register _ on _ exit(CPU off);//退出LPM0

}

USCIAB0TX _ ISR的結構可以用來接收任何

// 2+字節數,方法是用字節數預加載RxByteCtr。

#pragma vector = USCIAB0TX_VECTOR

_ _中斷void USCIAB0TX_ISR(void)

{

rx bytectr-;//遞減RX字節計數器

if (RxByteCtr)

{

rx word =(unsigned int)UC B0 rx buf & lt;& lt8;//獲取接收到的字節

if (RxByteCtr == 1) //只剩壹個字節?

UCB 0 CTL 1 | = uct xstp;//生成I2C停止條件

}

其他

{

rx word | = UCB 0 rx buf;//獲取最終接收到的字節,

//組合MSB和LSB

_ _ BIC _ SR _ register _ on _ exit(CPU off);//退出LPM0

}

}

  • 上一篇:在TC2下怎麽使用socket網絡通信技術
  • 下一篇:相親軟件源代碼價格
  • copyright 2024編程學習大全網