?? at24c02.~c
字號:
/**********************************************
http://www.sl.com.cn
雙龍電子公司----I2C總線演示程序(ICCAVR)
作者:詹衛前
1、以訪問AT24C02為例
2、SDA :PORTA.0
3、SCL : PORTA.1
**********************************************/
#include <io8515.h>
#include <slavr.h>
/* 七段譯碼字形表 */
#pragma data:code
const unsigned char tabel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
#pragma data:data
/* 顯示緩沖區 */
unsigned char ledbuff[]={0x3f,0x3f,0x3f,0x3f,0x00,0x00};
unsigned char at24_add,at24_data;
/******************************************
端口初始化
*******************************************/
void port_init(void)
{
DDRD=0x3f;
DDRB=0xff;
PORTD=0xff;
PORTB=0xff;
}
/******************************************
六路動態掃描顯示電路
*******************************************/
void display(void)
{
unsigned char i;
i=at24_data%16;
ledbuff[0]=tabel[i];
i=at24_data/16;
ledbuff[1]=tabel[i];
i=at24_add%16;
ledbuff[2]=tabel[i];
i=at24_add/16;
ledbuff[3]=tabel[i];
for (i=0;i<6;i++)
{
PORTB=ledbuff[i];//將顯示緩沖區數據送PORTB口
PORTD=~(1<<i); //開始顯示
delay_1ms(); //每一位顯示保持一定時間
PORTD|=(1<<i); //關閉顯示
}
}
/******************************************
主程序功能:演示了讀寫AT24C02的過程
說明:1、鍵盤上0~F鍵用于輸入地址或數據,
SHIFT鍵用于切換狀態
2、上電復位后,按數字鍵只可以修改地
址,程序自動顯示AT24C02單元內容。
3、按一次SHIFT鍵,最高位LED小數點亮
此時可以修改數字,再按一次SHIFT鍵
程序將修改后的數字寫入AT24C02,然
后回到上電復位后的狀態
*******************************************/
void main(void)
{
unsigned char key1,key2;
unsigned char index,flag;
MCUCR=0;
at24_add=0;
at24_data=0;
index=0;
flag=0;
port_init(); //端口初始化
while(1)
{
key1=scan_key();
if (key1!=0x7f)
{
do
{
key2=scan_key();//檢查按鍵釋放
display();
}
while(key1==key2);
if (key1>=0x80)
{
if (flag!=0x00)//SHIFT鍵切換數據和地址修改
{
Write24c02(&at24_data,at24_add,1);
flag=0x00;
}
else flag=0x80;
ledbuff[5]=0x00^flag;
index=0;
}
else
{
switch (index)
{
case 0:{if (flag==0x00)
{key2=at24_add&0x0f;
at24_add=key2|(key1<<4);
}
else
{key2=at24_data&0x0f;
at24_data=key2|(key1<<4);
}
index=01;
break;
}
case 1:{if (flag==0x00)
{key2=at24_add&0xf0;
at24_add=key2|(key1&0x0f);
}
else
{key2=at24_data&0xf0;
at24_data=key2|(key1&0x0f);
}
index=00;
break;
}
}
}
}
if (flag==0x00)
Read24c02(&at24_data,at24_add,1);
display();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -