|
5555555555555.jpg (206.62 KB, 下載次數: 53)
下載附件
2018-12-10 15:41 上傳
新鮮出爐! ATmage128的EEPROE實戰!
按按鍵進行調節模式,相對應LED有不同的反應,關機后保存數據
#include<iom128v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
uint bai, shi, ge;
uchar temp ;
uchar smg[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xff};
uchar tttt(uchar t)
{
t=0x03;
}
uchar ledsmg(uchar kl);
void delay(uchar n)
{
uint i=0,j=0;
for (i=0;i<n;i++)
for (j=0;j<20;j++);
}
void PO_init(void)
{
DDRA=0XFF; //LED IO口設為輸出
PORTA=0X00;
DDRB |=0xff; //PB4設為輸出
PORTB|=0xff; //關閉PB4外接的LED
DDRC=0XFF; //數碼管段選設為輸出
PORTC=0X00;
DDRF |=0X03; //LED及數碼管鎖存IO口設為輸出
PORTF|=0X0E;
PORTF&=0xF7; //鎖存數據關閉數碼管
DDRD=0;//全部設為輸入
PORTD=0xff;//全部上拉
PIND=0xff;//設初始值
}
void display(void )
{
PORTC =smg[bai];
P5_1;
P5_0;
delay(3);
PORTC =smg[shi];
P6_1;
P6_0;
delay(3);
PORTC =smg[ge];
P7_1;
P7_0;
delay(3);
}
void data_do(uchar temp_d)
{
uint shit;
bai = temp_d/100; //分出百,十,和個位
shit= temp_d%100;
shi = shit/10;
ge = shit%10;
}
void E_write(uint E_add, uchar E_data)//寫字節數據
{
while(EECR & (1<<EEWE));
EEARH = 0;
EEARL = E_add;
EEDR = E_data;
EECR |= (1<<2);
EECR |= (1<<1);
SREG |= (1<<7);
}
uchar E_read(uint E_add) //讀字節數據
{
while(EECR & (1<<EEWE));
EEARH = 0;
EEARL = E_add;
EECR |= (1<<EERE);
return EEDR;
}
void key(void)
{
if(PIND == 0xfe) //按鍵--加鍵
{
delay(3);
if(PIND == 0xfe)
{
while(PIND == 0xfe);
temp++;
if(temp>=6)temp=0;
}
}
}
void main()
{
PO_init();
temp=E_read(5); //讀出記錄
E_write(5,temp); //寫入記錄
while (1)
{
key()
.................................................
代碼只貼一部份,附件中有全部
|
-
-
128_eeprom_hxk文件.zip
2018-12-10 15:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1003 Bytes, 下載次數: 9, 下載積分: 黑幣 -5
-
-
128_eeprom源代碼.zip
2018-12-10 15:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.08 KB, 下載次數: 13, 下載積分: 黑幣 -5
-
-
128_eeprom仿真文檔.zip
2018-12-10 15:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
29.4 KB, 下載次數: 10, 下載積分: 黑幣 -5
評分
-
查看全部評分
|