?? mc430f14_demo_3_iic.c
字號(hào):
//描述:利用微控設(shè)計(jì)網(wǎng)的MC430F14開發(fā)板上的MSP430單片機(jī)與AT24C02進(jìn)行IIC模擬實(shí)驗(yàn)
//MSP430模擬IIC向AT24C02寫入4個(gè)字節(jié)數(shù)據(jù),然后讀出4個(gè)字節(jié).最后做數(shù)據(jù)校驗(yàn).
//如果讀出來(lái)的數(shù)據(jù)與寫入的原數(shù)據(jù)相同,則D2-LED會(huì)亮.否則D2-LED不亮.
//本例程是一條很好的MSP430模擬IIC程序,可以移植到任何其它設(shè)計(jì)中.本人認(rèn)為非常方便
//移植,所以特此寫來(lái)共享給大家使用.如有任何問(wèn)題,歡迎到微控技術(shù)論壇來(lái)討論.
//縮寫:微控設(shè)計(jì)網(wǎng) www.microcontrol.cn DC版主
//調(diào)試目標(biāo)板: 微控MC430F14實(shí)驗(yàn)板
//調(diào)試環(huán)境:IAR WE430 3.4A
#include "msp430x11x1.h"
#include "define.h"
//IIC總線操作成失標(biāo)志
#define error 0x01 //錯(cuò)誤
#define right 0x00 //正確
#define AT24_ADD 0xA0 //24c02芯片地址
#define write 0x00 //寫
#define read 0x01 //讀
#define Quantity 4 //操作數(shù)量
#define incept_add 0x00 //操作內(nèi)部地址首址
//寫入AT24C02數(shù)據(jù)表
unsigned char write_table[4]={'a','b','c','d'};
//讀出AT24C02數(shù)據(jù)緩沖區(qū)
unsigned char read_Buff[4]={'x','x','x','x'};
unsigned char iic_check; //檢查標(biāo)志,可選的.
//******************************************************
//MSP430F14初始化
void init (void)
{
P1DIR |= BIT1; //LED輸出
P1OUT |= BIT1; //關(guān)LED
}
//******************************************************
//軟延時(shí)
void delay(unsigned int n)
{unsigned int k;
for(k=0;k<n;k++);
}
//******************************************************
//檢驗(yàn)兩組數(shù)據(jù)是否正確,如在檢驗(yàn)數(shù)據(jù)中有一組不正確,則退出.
//*Data_REF參考值數(shù)組,*Data_CHK被檢驗(yàn)數(shù)組,n檢驗(yàn)數(shù)量
//并返回一個(gè)成敗標(biāo)志.
unsigned char data_check(unsigned char *Data_REF, unsigned char *Data_CHK,
unsigned char n)
{unsigned char chk ;
while(n)
{
if(Data_REF[n-1]==Data_CHK[n-1]) //進(jìn)行校對(duì)
{ chk = right; //正確
n--; //下一位
}
else
{ chk = error; //校對(duì)有錯(cuò)
continue; //馬上退出
}
}
return chk ; //返回校對(duì)成敗標(biāo)志.
}
//******************************************************
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //停止WDT
init(); //初始化
//向AT24C02芯片寫入4字節(jié)數(shù)據(jù)
iic_check=IIC(write_table,Quantity,incept_add,(AT24_ADD|write));
delay(500); //寫入后,做一個(gè)適當(dāng)?shù)难訒r(shí)
//向AT24C02芯片讀出4字字節(jié)數(shù)據(jù)
iic_check=IIC(read_Buff,Quantity,incept_add,(AT24_ADD|read));
//判別校驗(yàn)是否成功
if(!(data_check(write_table,read_Buff,Quantity)))
P1OUT ^= BIT1; //LED亮則表示IIC總線寫讀操作成
LPM1; //最后進(jìn)入低功耗模式1
}
//微控設(shè)計(jì)網(wǎng)的MC430F14實(shí)驗(yàn)板IIC總線實(shí)驗(yàn)程序結(jié)束,謝謝!
//******************************************************
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -