ATmega8的eeprom读写操作,实测没问题
单片机源程序如下:
//ICC-AVR application builder
// Target : M8
// Crystal: 8.0000Mhz
#include #include #include <74164.h> #include unsigned char display[4]; // 显示缓冲区 unsigned char dis; // 当前显示 unsigned char s,m; // 时间 //TIMER0 initialisation - prescale:256 // WGM: Normal // desired value: 5mSec // actual value: 4.992mSec (0.2%) void timer0_init(void) { TCCR0 = 0x00; //stop TCNT0 = 0x64; //set count TCCR0 = 0x04; //start timer } #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) { TCNT0 = 0x64; //reload counter value // display switch(dis){ // 显示 case 0: write164(display[dis] | 0x70); break; case 1: write164(display[dis] | 0xB0); break; case 2: write164(display[dis] | 0xD0); break; case 3: write164(display[dis] | 0xE0); break; } if(++dis > 3) dis = 0; //end display } //TIMER1 initialisation - prescale:1024 // WGM: 0) Normal, TOP=0xFFFF // desired value: 1Hz // actual value: 1.000Hz (0.0%) void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0xE1; //setup TCNT1L = 0x7C; OCR1AH = 0x1E; OCR1AL = 0x84; OCR1BH = 0x1E; OCR1BL = 0x84; ICR1H = 0x1E; ICR1L = 0x84; TCCR1A = 0x00; TCCR1B = 0x05; //start Timer } #pragma interrupt_handler timer1_ovf_isr:9 void timer1_ovf_isr(void) { //TIMER1 has overflowed TCNT1H = 0xE1; //reload counter high value TCNT1L = 0x7C; //reload counter low value if(++s == 60){ s = 0; if(++m == 60) m = 0; } EEPROMwrite(1,s); // 保存时间 EEPROMwrite(2,m); display[0] = s % 10; // 刷新显示缓冲 display[1] = s / 10; display[2] = m % 10; display[3] = m / 10; } //call this routine to initialise all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts DDRB = 0x01; // 初始化操作74LS164的管脚 DDRD = 0xC0; // 初始化操作74LS164的管脚 timer0_init(); timer1_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x05; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialised } // void main(void) { init_devices(); s = EEPROMread(1); // 读取时间 m = EEPROMread(2); display[0] = s % 10; // 刷新显示缓冲 display[1] = s / 10; display[2] = m % 10; display[3] = m / 10; while(1); }
上一篇:atmega128 AD 转换
下一篇:BASCOM-AVR版调光演示程序
推荐阅读
史海拾趣
ETAL公司成立于XXXX年,由一群富有远见和热情的电子工程师创立。他们看到了电子技术在全球范围内的广泛应用和巨大潜力,决定投身于这一行业。起初,ETAL主要专注于电子元器件的研发和生产,通过不断的技术创新和产品优化,逐渐在市场上树立了良好的口碑。
在快速发展的同时,ERGOBAHCO公司始终不忘履行社会责任和推动可持续发展。公司积极参与社会公益事业,捐款捐物支持贫困地区的教育、医疗等事业。同时,ERGOBAHCO公司还注重环保和节能减排工作,通过引进先进的环保技术和设备,实现了生产过程的绿色化、低碳化。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。
随着市场竞争的加剧和消费者需求的不断变化,DIOO公司意识到品牌重塑和多元化发展的重要性。在近几年中,DIOO公司加强了品牌宣传和推广力度,通过推出新的品牌形象和广告活动,提高了品牌知名度和美誉度。同时,DIOO公司还积极拓展产品线,推出了包括智能家居、智能穿戴设备、游戏硬件等在内的多元化产品系列,进一步满足了消费者的多样化需求。
在发展过程中,贝尔金也通过收购其他公司来增强自身实力。例如,2013年贝尔金正式完成对Linksys的收购,这一举措进一步丰富了其产品线,并加强了在网络设备领域的竞争力。此外,贝尔金还通过不断整合内部资源,优化生产流程,提高产品质量和效率。
随着公司规模的扩大和技术的不断积累,AVAGO公司开始寻求多元化的发展道路。除了继续深耕半导体领域外,公司还积极拓展其他相关领域,如传感器、无线通信等。同时,公司还与其他行业的领军企业建立了紧密的战略合作关系,共同推动技术创新和市场拓展。
请假大家2个关于充电器的问题: 一:不知道为什么我用的充电器总是烧前级220V近来的电阻; 二:就是我给锂电池充电,2节理电池串联8.4V,请问我若是想在充电器与电池之间加上一个保护二极管,请问充电器的电压要多大?(因为我测试发现二极管的压降 ...… 查看全部问答∨ |
|
我有一台GPS机器,Win CE4.2系统, 主芯片是: Centralty AT280B-BCZ的, 但由于系统加了密,密码输入后记错了,再怎么也解不开,请教专家,如何破解?谢谢!… 查看全部问答∨ |
|
iap是在应用编程,也就是说里面有了用户程序,这样要编程的时候就要跳到另一段代码去实现,stm32给的例子是把用户区flash分成2块来实现的。 但是其中给isp用的系统区还是存在的,既然isp的程序代码还在,那干脆就跳到系统区去实现得了。刚刚 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- ST有奖直播 | 75V降压控制器和隔离降压方案
- Littelfuse【智能家居的电路保护方案】在线研讨会 11月22日10点 强势登场!预报名、参与研讨会赢好礼!
- 看MPS干货视频,票选最痛EMI问题!
- 是德科技电子书,下载有礼进行时!
- 先到先得双重有礼 成为体验FLUKE新品的先锋者
- Arrow&allegro有奖直播:下一代磁感应解决方案:XtremeSense™ TMR 技术如何促进高效应用
- 【电源技术需求调查,为2024年蓄力!】活动开始啦~
- 有奖直播:赋能移动电源,贝能推出1800W全数字双向电源方案
- 试用Vishay新型“IHLP磁芯损耗计算器”,抢楼赢好礼
- Nexperia 模拟和逻辑芯片 更低的电压、更出色的性能 答题赢好礼!