#include
0x92,0x82,0xf8,0x80,0x90,0xff};
i2cini();
TempData[0] = led_discode[i];
while(1)
display(0,1);
TWBR=0x20;
TWCR=0x04;
unsigned char i;
Start();//I2C启动
Wait();
if(TestAck()!=START) return 1;//ACK
Write8Bit(wr_device_add);//写I2C从器件地址和写方式
Wait();
if(TestAck()!=MT_SLA_ACK) return 1;//ACK
Write8Bit(RomAddress);//写24C02的ROM地址
Wait();
if(TestAck()!=MT_DATA_ACK) return 1;//ACK
Write8Bit(Wdata);//写数据到24C02的ROM
Wait();
if(TestAck()!=MT_DATA_ACK) return 1;//ACK
Stop();//I2C停止
for(i=0;i<250;i++);
return 0;
{
unsigned char temp;
Start();//I2C启动
Wait();
if (TestAck()!=START) return 1;//ACK
Write8Bit(wr_device_add);//写I2C从器件地址和写方式
Wait();
if (TestAck()!=MT_SLA_ACK) return 1;//ACK //
//
Write8Bit(RomAddress);//写24C02的ROM地址
Wait();
if (TestAck()!=MT_DATA_ACK) return 1; //?
//data1=TestAck();
Start();//I2C重新启动
Wait();
if (TestAck()!=RE_START) return 1;
Write8Bit(rd_device_add);//写I2C从器件地址和读方式
Wait();
if(TestAck()!=MR_SLA_ACK) return 1;//ACK
Twi();//启动主I2C读方式
Wait();
if(TestAck()!=MR_DATA_NOACK) return 1;//ACK
temp=TWDR;//读取I2C接收数据
Stop();//I2C停止
return temp;
}
unsigned int i=0;
for (i=0;i
asm("nop");
unsigned int i=0,j=0;
for (i=0;i
for (j=0;j<1140;j++);
uint i,j;
for( i=0;i
for(j=0;j<1141;j++);
unsigned char i;
PORTA=WeiMa[i+FirstBit];
PORTC=TempData[i];
关键字:AVR128 24C02 复位次数
引用地址:AVR128的程序——24C02记录复位次数
#include
#define uchar unsigned char
#define uint unsigned int
#define rd_device_add 0xA1
#define wr_device_add 0xA0
#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<
#define Stop() (TWCR=(1<
#define Wait() {while(!(TWCR&(1<
#define TestAck() (TWSR&0xf8)
#define SetAck() (TWCR|=(1<
#define SetNoAck() (TWCR&=~(1<
#define Twi() (TWCR=(1<
#define Write8Bit(x) {TWDR=(x);TWCR=(1<
void Delayms(uint MS);
void display(uchar FirstBit,uchar Num);
void i2cini(void) ;
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);
unsigned char i2c_Write(unsigned char Wdata,unsigned char RomAddress) ;
unsigned char i2c_Read(unsigned char RomAddress) ;
uchar TempData[8];
uchar WeiMa[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar led_discode[11]={0xc0,0xf9,0xa4,0xb0,0x99,
void main(void)
{
uchar i;
DDRA=0XFF;
PORTA=0XFF;
DDRC=0XFF;
PORTC=0XFF;
DDRF|=0X0E;
PORTF|=0X0E;
PORTF&=0xF7;
DDRB |=0X10;
PORTB|=0X10;
i=i2c_Read(0x03);
i++;
i=i;
i2c_Write(i,0x03);
{
}
}
void i2cini(void)
{
TWSR=0;
}
unsigned char i2c_Write(unsigned char Wdata,unsigned char RomAddress)
{
}
unsigned char i2c_Read(unsigned char RomAddress)
void delay_nus(unsigned int n) //N us延时函数
{
}
void delay_nms(unsigned int n) //N ms延时函数
{
}
void Delayms(uint MS)
{
}
void display(uchar FirstBit,uchar Num)
{
for(i=0;i
{
PORTC=led_discode[10];
Delayms(5);
}
}
上一篇:AVR128的程序——12864液晶与ds1302与ds18b20的综合运用
下一篇:AVR128的程序——1602液晶显示
推荐阅读最新更新时间:2024-03-16 14:46
51单片机系列——I2C通信方式——24C02(E2PROM)的应用
仿真电路如下: 代码如下: i2c.h #ifndef _I2C_H //写头文件的固定格式 #define _I2C_H //写头文件的固定格式 #include reg52.h sbit SCL=P1^2; //E2PROM24C02的引脚定义 sbit SDA=P1^3; //E2PROM24C02的引脚定义 sbit WP=P1^4; //读写保护 unsigned char I2CSendByte(unsigned char dat); unsigned char I2CReadByte(); void I2CStop(); void I2CStart(); void At24c02Write
[单片机]
向24C02中写入当前的时间
/* //1、向24C02中写入当前的时间,下次开机就会从 上次断电时的时间开始计时 //2、重点掌握IIC总线几个常用信号的写法; // */ #include reg51.h #define uint unsigned int #define uchar unsigned char sbit sda=P1^0; sbit scl=P1^1; uchar num1,num1,flag1,flag2,sec; void delay(); void delayms(uint z); void start(); void stop(); void sck(); void writebyte(uchar date); ucha
[单片机]
STM32编程之软件模拟IIC对24C02存储器读写操作
1、主程序 #include stm32f10x_conf.h #include led.h #include key.h #include usart.h #include lcd.h #include 24cxx.h #include myiic.h #include delay.h u8 tabel = write data is:0 1 2 3 4 5 6 7 8 9 ; /* 程序功能:STM32实现24C02读写操作 当按下KEY1时,向24C02写入数组中的数据; 当按下KEY2时,从24C02中读出数据到数组。 用LCD液晶显示操作过程; 用串口显示写入和读
[单片机]
PIC单片机-普通IO口模拟I2C总线对24C02进行读写操作
使用PIC单片机的普通IO口模拟I2C总线,对24C02进行读写操作。其中,总线定义为: #define IIC_SCLK RC3 //24C02时钟线 #define IIC_SDAT RC4 //24C02数据线 将跳线帽P11短接至24C02方向,将跳线帽P6段接至IIC方向。 I2C 总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器,数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,主器件和从器件都可以作为发送器或接收器。 I2C 总线协议定义如下: 1、只有在总线空闲时才允许启动数据传送 2、在数据传送过程中当时钟线为高电平时数据线必
[单片机]
51单片机24c02的使用
#include reg52.h #include intrins.h #define AddWr 0xae //Write Address #define AddRd 0xaf //Read Address //全局变量 sbit Sda=P1^2; //定义总线连接端口 sbit Scl=P1^1; sbit WP=P1^0;//No connect here void mDelay(unsigned char j)//A normal delay { unsigned int i; for(;j 0;j--) { for(i=0;i 125;i++) {;} } } //启动 IIC总线 void
[单片机]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月14日历史上的今天
厂商技术中心
随便看看