#include <C8051F020.h>
#define WRITE 0x00 // WRITE direction bit
#define READ 0x01 // READ direction bit
#define EE_ADDR 0xA0 // Device address for slave target
#define SMB_BUS_ERROR 0x00 // (all modes) BUS ERROR
#define SMB_START 0x08 // 起始条件发送
#define SMB_RP_START 0x10 // 重复起始条件已发出
#define SMB_MTADDACK 0x18 // 从地址+W已发出 ACK应答
#define SMB_MTADDNACK 0x20 // 从地址+W已发出 NACK应答
#define SMB_MTDBACK 0x28 // (数据字节已发出ACK应答
#define SMB_MTDBNACK 0x30 // (数据字节已发出NACK应答
#define SMB_MTARBLOST 0x38 // 竞争失败
#define SMB_MRADDACK 0x40 // 从地址+R已发出 ACK应答
#define SMB_MRADDNACK 0x48 // 从地址+R已发出 NACK应答
#define SMB_MRDBACK 0x50 // 数据字节已收到ACK应答
#define SMB_MRDBNACK 0x58 // 数据字节已收到NACK应答
int x,i;
char COMMAND;
char WORD;
unsigned char HIGH_ADD;
bit SM_BUSY;
sbit SDA = P0^6;
sbit SCL = P0^7;
sbit LED = P2^4;
sbit P25=P2^5;//LCD-RS
sbit P26=P2^6;//LCD-RW
sbit P27=P2^7;//LCD-E
void SYSCLK_Init (void);
void LCD_Init(void);
void send_com(unsigned char com);
void send_dat(unsigned char adr,unsigned char dat);
void Port_Init(void);
void SMBus_Init(void);
void SMBus_ISR(void);
void SM_Send(char ship_select, unsigned int byte_address,char out_byte);
char SM_Receive(char ship_select, unsigned int byte_address);
void main (void)
{
unsigned char check;
WDTCN = 0xde;
WDTCN = 0xad;
SYSCLK_Init (); // 系统时钟初始化
Port_Init ();
LCD_Init(); // Initialize Crossbar and GPIO
SMBus_Init (); // Configure and enable SMBus
EIE1 |= 0x02; // Enable the SMBus interrupt
EA = 1; // Global interrupt enable
SM_BUSY=0;
SM_Send(EE_ADDR ,0x0000,0x53);
check = SM_Receive(EE_ADDR,0x0000);
send_dat(0x81,0x4f);
//if(SM_BUSY==1)
//LED=1;
while(1);
}
void SYSCLK_Init(void)