标题: 新鲜出炉_ATmage128内部EEPROE的应用程序 [打印本页]

作者: jinsheng7533967    时间: 2018-12-10 15:48
标题: 新鲜出炉_ATmage128内部EEPROE的应用程序

新鲜出炉! 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

1003 Bytes, 下载次数: 9, 下载积分: 黑币 -5

128_eeprom源代码.zip

1.08 KB, 下载次数: 13, 下载积分: 黑币 -5

128_eeprom仿真文档.zip

29.4 KB, 下载次数: 10, 下载积分: 黑币 -5






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1