📄 atmega8.c
字号:
/*===================================
AtMega8.c
===================================*/
#include "G40A8.h"
/*===================================
===================================*/
void DelayMs(unsigned int x) //at 4.000MHz
{
unsigned int j;
while(x--)
{
for(j=560;j;j--);
WDR();
}
}
/*=============================
=============================*/
void UartTxdStr(unsigned char const *p)
{
while(*p!='\0')
{
UartTxd(*p++);
}
}
/*=======================
I2C driver
=======================*/
#define SDA_0() DDR |= SDA
#define SDA_1() DDR &=~SDA
#define SCL_0() DDR |= SCL
#define SCL_1() DDR &=~SCL
#define GetSDA() (PIN&SDA)
#define GetSCL() (PIN&SCL)
#define iic_off() {SDA_1();SCL_1();}
#define iic_on() PORT&=~(SDA|SCL)
#define iic_delay(x) {unsigned char j;for(j=x;j;j--);}
#define IICDT 5 //延时
/*================
================*/
unsigned char iic_start(void)
{
iic_on();
SDA_1();SDA_1();
SCL_1();SCL_1();
if(GetSDA()==0 || GetSCL()==0)
{
SCL_0();
iic_delay(IICDT);
SCL_1();
iic_delay(IICDT);
return 0;
}
else
{
SDA_0();
iic_delay(IICDT);
return 1;
}
}
/*================
================*/
void iic_stop(void)
{
SDA_0();
iic_delay(IICDT);
SCL_1();
iic_delay(IICDT);
SDA_1();
}
/*================
================*/
void iic_ack(void)
{
SDA_0();
iic_delay(IICDT);
SCL_1();
iic_delay(IICDT<<1);
SCL_0();
iic_delay(IICDT);
SDA_1();
}
/*================
================*/
unsigned char iic_send(unsigned char x)
{
unsigned char i;
SCL_0();
iic_delay(IICDT);
for(i=0;i<8;i++)
{
if( x & 0x80 )
SDA_1();
else
SDA_0();
x=x<<1;
iic_delay(IICDT);
SCL_1();
iic_delay(IICDT<<1);
SCL_0();
iic_delay(IICDT);
}
SDA_1();
iic_delay(IICDT);
SCL_1();
i=0;
while(GetSDA()!=0)
{
i++;
if(i>(IICDT<<1))
return 0;
}
SCL_0();
iic_delay(IICDT);
return 1;
}
//**************接收一个字节********
unsigned char iic_receive(void)
{
unsigned char i,data=0;
SDA_1();
for(i=0;i<8;i++)
{
data<<=1;
iic_delay(IICDT);
SCL_1();
iic_delay(IICDT);
if(GetSDA())
data++;
iic_delay(IICDT);
SCL_0();
iic_delay(IICDT);
}
return data;
}
/*===================================
END
===================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -