赞
踩
EEPROM:(Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。
Attiny 13A 也有一个64bytes 的EEPROM,我们可以利用记录上一次程序运行的结果,达到某些设计目的。比如用开关管理手电筒电源,同时完成模式切换等。
本次记录我学习EEPROM的读写过程,也希望能给大家带来帮助。
利用EEPROM记录上次程序运行的结果,实现用电源开关控制不同脚输出的目的。即开关开合,Attiny 13A能在不管脚0、1、2 中进行输出切换。
电路接线如图
//目标:用开关 改变输出脚 PB0、PB1、PB2顺序切换 //版本:V1.0 时间 2021.2.7// //调EEPROM 库 #include <EEPROM.h> // 变量声明 unsigned char EP; // 初始化 void setup() { //引脚初始化 pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(2, OUTPUT); //Read first EEPROM cell.(读第一个EEPROM内容) EP = EEPROM[ 0 ]; // 读出EEPROM后,对EEPROM第一个单元进行改写,用于下一次断合记录。 if(EP == 0x00){ EEPROM[ 0 ] = 0x01; } else { if(EP == 0x01){ EEPROM[ 0 ] = 0x02; } else { EEPROM[ 0 ] = 0x00; } } } //主程序 void loop() { // put your main code here, to run repeatedly: if (EP == 0x00){ digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(0, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } if (EP == 0x01){ digitalWrite(1, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(1, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } if (EP == 0x02){ digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(2, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } }
这里偷懒不写闪光函数了,不影响学习结果 。
另,Arduino EEPROM的指令集见:https://www.arduino.cc/en/reference/EEPROM
经测试,运行结果可用。
Attiny13A 烧录参见 。https://blog.csdn.net/sadanubis2008/article/details/105984422
其中,Attiny13A 接线方式与与ATTINY85一样。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。