AVR Eeprom的c语言编程

发布者:czm721002最新更新时间:2016-08-06 来源: eefocus关键字:AVR  Eeprom  c语言编程 手机看文章 扫描二维码
随时随地手机看文章
//***************FileName:Capature.C***************//

//***************ICCAVR 编译*****************//

#include                  
#define uchar unsigned char
#define uint unsigned int

//数码管字型表,对应0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F//
uchar Table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar Read_Data[4];            //定义读出数据

void DelayMs(uint i)           //Ms级延时,参数i为延时时间
{uint j;
for(;i!=0;i--)
{for(j=8000;j!=0;j--) {;}}
}

void Display(uchar *p)         //动态显示函数,参数p为待显示的数组名
{uchar i,sel=0x01;           
for(i=0;i<4;i++)
{PORTA=sel;                  //选通最右边的数码管
   PORTC=0xff-Table[p[i]];     //送字型码
   DelayMs(1);                 //显示延时    
   sel=sel<<1;                 //移位以显示前一位
}
}

void Init_IO(void)             //初始化I/O口
{DDRA=0xff;                    //设置A口为推挽1输出
PORTA=0xff;
DDRC=0xff;                    //设置C口为推挽1输出             
PORTC=0xff;
}

void Write_EEPROM(uchar Data,uint Address)
{if(EECR&0x20) DelayMs(4);
EEARH=Address>>8;
EEARL=Address&0x00ff;
EEDR=Data;
EECR=EECR|0x04;
EECR=EECR|0x02;
DelayMs(4);
}

uchar Read_EEPROM(uint Address)
{uchar i;
if(EECR&0x01) DelayMs(4);
EEARH=Address>>8;
EEARL=Address&0x00ff;
EECR=EECR|0x01;
DelayMs(5);
i=EEDR;
return(i);
}

void main(void)
{uchar i;
Init_IO();                    //初始化I/O口
PORTA=0xff;                   //点亮以测试所有的数码管
PORTC=0x00;   
DelayMs(300);                 //延时
PORTC=0xff;                   //熄灭所有的数码管
for(i=0;i<4;i++)
    Write_EEPROM(4*i,i);
for(i=0;i<4;i++)
    Read_Data[i]=Read_EEPROM(i);
while(1)
Display(Read_Data);
}

关键字:AVR  Eeprom  c语言编程 引用地址:AVR Eeprom的c语言编程

上一篇:AVR Int0中断的c语言编程
下一篇:AVR AD转换的C语言编程

推荐阅读最新更新时间:2024-03-16 15:04

AVR单片机模拟实现USB通信
简介:AVR单片机模拟实现USB通信,即AVRUSB技术,本文主要介绍了AVRUSB技术的基本原理、特点、应用,同时还详细的介绍了AVRUSB系统的单片机程序开发和计算机软件开发的方法。 AVR单片机模拟实现USB通信,即AVRUSB技术,本文主要介绍了AVRUSB技术的基本原理、特点、应用,同时还详细的介绍了AVRUSB系统的单片机程序开发和计算机软件开发的方法。 1简介 1.1AVRUSB是什么 AVRUSB技术是利用高性能的8位RISC架构的AVR单片机,使用单片机的IO口来模拟USB的通信端口,由软件来实现USB通信协议,将普通的AVR单片机模拟成一个USB低速设备,从而实现AVR单片机与计算机之间的通信和
[单片机]
<font color='red'>AVR</font>单片机模拟实现USB通信
SHT11温湿度传感器AVR单片机程序
#include shtxx.h void shtxx_init(void) { shtxx_temp = shtxx_humi = 0; SHTXX_ SCK _LOW(); SHTXX_DAT_1(); shtxx_reconnect(); } void shtxx_reconnect(void) { SHTXX_DAT_1(); SHTXX_SCK_LOW(); for(uint8 i=0; i 9; i++) { SHTXX_SCK_HIGH(); SHTXX_SCK_LOW(); } SHTXX_START(); } uint8 shtxx_ SOF trst(voi
[单片机]
51单片机入门经验分享5-STC15W1K16PWM内部EEPROM的使用
在实际开发中,经常会遇到某些需要断电需要再次上电记忆的场合,这就需要掉电存储芯片了,最常用的EEPROM芯片就是AT24C02了,几乎成了每一块开发板的标配,但是有些时候,在一些低成本的场合,需要用类EEPROM或者flash来模拟EEPROM进行存储,AT24C02是可以进行字节擦写的,STC内部的EEPROM是不可以字节擦写的,他是按照512byte一个扇区来组织的,如下图所示,我们开发板选择的这块芯片分为了22个扇区。如果你要擦除数据,那么必须要一次性的擦除512字节才可以,这么难用,难用总比没有强吧,在好多产品上,我都见到过,好多掉电了上电依然保持的参数,有没有外置EEPROM芯片,只能用内部的或者来模拟了,我们来写一个程
[单片机]
51单片机入门经验分享5-STC15W1K16PWM内部<font color='red'>EEPROM</font>的使用
KS0108 128X64 LCD C语言AVR程序
KS0108 128X64 LCD C语言AVR程序 /* LCD引脚定义 1---GND 2---V CC 3---VLCD 4---D/I 5---R/W 6---E 7到14 D0-D7 15--CS1 16--CS2 17--RESET 18--VEE 19--SW 20--NC */ #include iom16v.h #include macros.h unsigned char CurOffset,CurRow,CurPage,CurCol; /* 常量定义 */ #define LCD_STATUS_BUSY 0x80 #define START_LINE0 0xc0 #define DISPLA
[单片机]
建立一个属于自己的AVR的RTOS(第一篇:函数的运行)
简介:第一篇:函数的运行 在一般的单片机系统中,是以前后台的方式(大循环+中断)来处理数据和作出反应的。 例子如下: makefile的设定:运行WinAvr中的Mfile,设定如下 MCUType:mega8 Optimizationlevel:s Debugformat:AVR-COFF C/C++sourcefile:选译要编译的C文件 #include avr/io.h voidfun1(void) { unsignedchari=0; while(1) { PORTB=i++; PORTC=0x01 (i%8); } } intmain(void) {
[单片机]
AVR 单片机实现直流电机PWM 的速度调整
1  综 述 直流电动机转速的控制方法可分为2 类,即励磁控制法与电枢电压控制法。励磁控制,控制磁通,其控制功率虽然小,但低速时受到磁饱和的限制,高速时受到换向火花和换向器结构强度的限制;而且由于励磁线圈电感较大,动态响应较差。所以常用的控制方法是改变电端电压调速的电枢电压控制法。 设直流电源电压为Ud ,将电枢串联一个电阻R ,接到电源Ud ,则电枢两端的电压Ua 为Ua = Ud - IaR 显然,调节电阻R 即可改变端电压,达到调速目的。但这种传统的调压调速方法,其效率低。因此,随着电力电子技术的进步,发展了许多新的电枢电压控制方法。其中, PWM(脉宽调制) 是常用的一种调速方法。其基本原理如下图所示,设加在电机电枢
[单片机]
<font color='red'>AVR</font> 单片机实现直流电机PWM 的速度调整
ATtiny13 时钟源
ATtiny13芯片有如下几种通过Flash熔丝位进行选择的时钟源。时钟输入到AVR时钟发生器,再分配到相应的模块。 不同的时钟选项将在后续部分进行介绍。当 CPU 自掉电模式或省电模式唤醒之后,被选 择的时钟源用来为启动过程定时,保证振荡器在开始执行指令之前进入稳定状态。当CPU 从复位开始工作时,还有额外的延迟时间以保证在 MCU 开始正常工作之前电源达到稳定 电平。这个启动时间的定时由看门狗振荡器完成。看门狗溢出时间所对应的 WDT 振荡器 周期数列于 Table 3。 缺省时钟源 器件出厂时 CKSEL = “10”, SUT = “10”,且 CKDIV8 编程。这个缺省设置的时钟源是 9.6MHz 的内部 RC
[单片机]
ATtiny13 时钟源
基于AVR和CPLD的高速数据采集系统
输入系统的信息大多数是模拟量,为使计算机能够处理这些模拟量,必须经由数据采集系统将模拟量转化为数字量。CPLD是在PAL、GAL等 逻辑器件 的基础上发展起来的,CPLD的规模比较大,适合于时序、组合等 逻辑电路 的应用场合,它的高集成度能力大大缩小 电路板 的尺寸,降低了系统的成本,而且能够提高系统的性能和可靠性。 对于一个成型的探测系统而言,通常都是有采集储存部分的,无论是电信号、光信号、声音信号、磁信号等在被 探测器 接收到后大部分都需要转化为数字信号传给 处理器 才能完成分析、判断的过程。对于需要高速采集并存储的系统,常常需要购买昂贵的高速 采集卡 等设备,在基于CPLD、AVR等控制高速ADC、储存等技术的基础上,本
[嵌入式]
基于<font color='red'>AVR</font>和CPLD的高速数据采集系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved