<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AVR單片機IIC實(shí)驗

AVR單片機IIC實(shí)驗

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò ) 收藏


//芯片ATMEGA16 晶振8mhz

#include
#include
#define uchar unsigned char
#define uint unsigned int
//-----------------------------
uchar str1[]={"IIC TEST"};
//---------------------------
void delay(uint k) //延時(shí)函數
{
uint i,j;
for(i=0;i
for(j=0;j<1140;j++);
}

#include "1602.h" //1602庫函數
//-------按鍵輸入點(diǎn)設置-------
#define s1 (PIND&0x10) //變量值增加鍵
#define s2 (PIND&0x20) //變量值減少鍵
#define s3 (PIND&0x40) //存儲鍵
#define s4 (PIND&0x80) //讀取鍵
//-------------------
#define TWINT 7 //中斷標志
#define TWEN 2 //中斷時(shí)能
#define TWSTA 5 //啟動(dòng)狀態(tài)位
#define TWSTO 4 //停止狀態(tài)位
//-----TWI狀態(tài)定義,MT主方式傳送,MR主方式接受
#define START 0x08 //啟動(dòng)
#define RE_START 0x10 // 重新啟動(dòng)
#define MT_SLA_ACK 0x18 //主機應答
#define MT_SLA_NOACK 0x20 //主機非應答
#define MT_DATA_ACK 0x28 //主機數據傳送后應答
#define MT_DATA_NOACK 0x30 //主機數據傳送后非應答
#define MR_SLA_ACK 0x40 //從機應答
#define MR_SLA_NOACK 0x48 //從機非應答
#define MR_DATA_ACK 0x50 //從機數據應答
#define MR_DATA_NOACK 0x58 //從機數據非應答
//-------------------------
#define start() (TWCR=(1<
#define stop() (TWCR=(1<
#define wait() {while(!(TWCR&(1<
#define testack() (TWSR&0xf8) //TWI狀態(tài)檢測,屏蔽預分頻位
#define setack() (TWCR|(1<
#define setnoack() (TWCR&=~(1<
#define twi() (TWCR=(1<
#define writebit(x) {TWDR=(x);TWCR=(1<
//------I/0口設置------------
void portinit()
{
PORTA=0xff;
DDRA=0xff;
PORTB=0xff;
DDRB=0xff;
PORTC=0xff;
DDRC=0xff;
PORTD=0xff;
DDRD=0x00;
}
//-----------讀數據函數----------
uchar iicread(uchar address)
{
uchar temp;
start();
wait();
if(testack()!=START) return 0;
writebit(0xa0);
wait();
if(testack()!=MT_SLA_ACK) return 0;
writebit(address);
wait();
if(testack()!=MT_DATA_ACK) return 0;
start();
wait();
if(testack()!=RE_START) return 0;
writebit(0xa1);
wait();
if(testack()!=MR_SLA_ACK) return 0;
twi();
wait();
if(testack()!=MR_DATA_NOACK) return 0;
temp=TWDR;
stop();
return temp;
}
//---------------寫(xiě)數據函數----------------
uchar iicwrite(uchar address,uchar data)
{
start();
wait();
if(testack()!=START) return 1;
writebit(0xa0);
wait();
if(testack()!=MT_SLA_ACK) return 1;
writebit(address);
wait();
if(testack()!=MT_DATA_ACK) return 1;
writebit(data);
wait();
if(testack()!=MT_DATA_ACK) return 1;
stop();
delay(10);
return 0;
}

void main()
{
uchar val=0; //數據值變量
portinit();
delay(200);
init();
delay(200);
display(2,0,str1);
delay(200);
while(1)
{
displayz(5,1,val/10+0x30);
displayz(6,1,val%10+0x30);
delay(10);
if(s1==0) //值增加鍵
{
delay(100); //軟件延時(shí)100ms防止按鍵抖動(dòng)
if(s1==0)
{
val++;
if(val>30)val=0;
}
}
if(s2==0) //值減少鍵
{
delay(100);
if(s2==0)
{
val--;
if(val<1)val=40;
}
}
if(s3==0) //值存儲鍵
{
delay(100);
if(s3==0)
{
iicwrite(70,val);
}
}
if(s4==0) //值讀取鍵
{
delay(100);
if(s4==0)
{
val=iicread(70);
}
}
}
}

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: AVR單片機IIC實(shí)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>