|
这个程序是按照刘海成老师《AVR单片机原理及测控工程应用》写的,
用AVR Studio 4.14,嵌入WinAVR-20071221,进行编译的
错误指向26行(有三角标记的一行)
#include <avr/io.h>
#include <util/delay.h>
#define START 0x08
#define RE_START 0x10
#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<<TWINT|(1<<TWSTA)|(1<<TWEN))
#define Stop() (TWCR=(1<<TWINT|(1<<TWSTO)|(1<<TWEN))
#define Wait() {while(!(TWCR&(1<<TWINT)));}
#define TestAck() (TWSR&0xf8)
#define SetAck() (TWCR|=(1<<TWEA))
#define SetNoAck() (TWCR&=~(1<<TWEA))
#define Twi() (TWCR=(1<<TWINT)|(1<<TWEN))
#define Write8Bit(x) {(TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}
//--------------------------------------------------
unsigned char i2c_Write(unsigned char Address,unsigned char Wdata)
▲ { Start();
Wait();
Write8Bit(0xa0);
Wait();
Write8Bit(Address);
Wait();
Write8Bit(Wdata);
Wait();
Stop();
_delay_ms(10);
return 0;
}
//--------------------------------
unsigned char i2c_Read(unsigned char Address)
{
unsigned char temp;
Start();
Wait();
Write8Bit(0xa0);
Wait();
if (TestAck()!=MT_SLA_ACK) return 0;
Write8Bit(Address);
Wait();
if (TestAck()!=MT_DATA_ACK) return 0;
Start();
Wait();
if (TestAck()!=RE_START) return 0;
Write8Bit(0xa1);
Wait();
if (TestAck()!=MR_SLA_ACK) return 0;
Twi();
Wait();
if (TestAck()!=MR_DATA_NOACK) return 0;
temp = TWDR;
Stop();
return temp;
}
//*-----------------------------------------
void main(void)
{ unsigned char dt,i,j;
i=1;
j=2;
while (i<=10)
{i2c_Write(unsigned char i,unsigned char j);
i=i++;
j=j*2;
}
dt=i2c_Read(unsigned char 5);
}
Build started 8.7.2008 at 09:48:45
avr-gcc.exe -I"H:\AVRdpj\TWI\..\..\WinAVR-20071221\avr\include" -mmcu=atmega16 -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c
../main.c: In function 'i2c_Write':
../main.c:26: error: expected ')' before ';' token
../main.c:76: error: expected declaration or statement at end of input
../main.c:76: warning: no return statement in function returning non-void
make: *** [main.o] Error 1
Build failed with 2 errors and 1 warnings... |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|