单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 181|回复: 0
打印 上一主题 下一主题
收起左侧

新鲜出炉_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, 下载次数: 1, 下载积分: 黑币 -5

128_eeprom源代码.zip

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

128_eeprom仿真文档.zip

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机.

Powered by 单片机教程网

快速回复 返回顶部 返回列表