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